TCP拥塞控制算法比较

TCP拥塞控制算法比较

2010-10-26. Category & Tags:

(翻译成简体版:http://translate.google.com/translate?u=http://sunnybingome.wordpress.com/2010/10/26/tcp%25E6%258B%25A5%25E5%25A1%259E%25E6%258E%25A7%25E5%2588%25B6%25E7%25AE%2597%25E6%25B3%2595%25E6%25AF%2594%25E8%25BE%2583/&sl=zh-CN&tl=zh-CN&hl=&ie=UTF-8

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.