tcp拥塞控制有三个问题:
1、如何控制发送速率?
Sender限制发送速率,LastByteSend - LastByteAck<=Congwin(拥塞窗口)
rate≈Congwin/RTT (byte/sec)
Congwin
1、动态调整发送速率
2、反应所感知到的网络拥塞
2、如何感知网络拥塞
Timeout和收到3个重复的ACK
3、如何调整发送速率
1|加性增-乘性减:AMID
2|慢启动:SS
加性增-乘性减:AMID
原理:逐渐增加发送发送速率,谨慎探测可用带宽,知道发生Loss
方法:AMID
Additive Increase :每个RTT将Congwin增大一个MSS——拥塞避免
Multiplicative Decrease:发生loss后Congwin减少为一半;
TCP慢启动:SS
TCP连接刚建立是,可用带宽远远大于初始速率,希望快速增长。
原理:当连接开始时,指数性增长;当Congwin达到Threshold时,线性增长。
Threshold值的设置:当Loss事件发生时,Threshold值为当前Congwin的1/2。

Loss事件的发生
1、3个重复Ack:Congwin切到一半,然后线性增长;
2、Timeout:Congwin设为1个MSS,然后指数增长,达到Threshold时线性增长;
原因:发生Timeout是,网络拥堵比收到3个重复ACK严重。
网友评论