TCP拥塞控制算法比较
TCP擁塞控制基本方法:
藉由ACK,timeout retransmit提供可靠性(reliability)服務
使用slow-start, congestion avoidance調整傳送的速度.
Tahoe
加入fast retransmit, 收到n個duplicate ACK (通常是3個),便將duplicate ACK後的封包視為遺失,直接重送,加快重送的速度.
Reno
目前最廣為使用的TCP版本.加入fast recovry機制.允許傳送端可以在等待重送封包的ACK回來期間仍可以繼續送出新的packet,藉以提為link的utilization.
New-Reno
修改Reno的fast recovry機制以解決Reno在收到partial ACK時提早結束fast recovery而導致timeout的問題.每個RTT時間內可重送一個遺失的封包.
SACK
修改TCP的傳送端與接收端,在TCP header加入SACK選項.允許接收在收到out-of-order packet時,回傳目前已經連續收到的區段.傳送端可藉由這些資訊得知那些packet是沒被收到的並直接重送
Vegas
修改TCP的傳送端.利用RTT針測由傳送端到接收端之間queue的長度並藉此調整congestion window的值.主要修改的部份有三點:
1. slow start: 大約2個RTT時間,cwnd才會增加一倍
2. Congestion avoidance: Vegas藉由比較預期的速率與實際傳送的速率算出Diff的值,並限制Diff的值必須介於alpha與beta之間.若Diff beta, 則減少傳送的速率
3. timeout retransmit: 藉由觀察RTT的值比判斷是否已經有packet timeout.