TCP拥塞控制
基本原理
发送方限制发送速率
Congwin:动态调整以改变发送速率(拥塞窗口)
反映所感知到的网络拥塞
感知网络拥塞
Loss时间=timeout或3个重复ACK
发送loss时间后,发送方降低速率
调整发送速率
加性增——乘性减:AIMD
慢启动:SS
AIMD
原理:逐渐增加发送速率,谨慎探测可用带宽,直到发生loss
方法:Additive Increase(AI):每个RTT将CongWin增大一个MSS(最大段长)——拥塞避免
Multiplicative Decrease(MD):发生loss后将CongWin减半
SS
TCP建立时,CongWin=1
可用带宽可能远远高于初始速率:希望快速增长
原理:当连接开始时,指数性增长
线性增长:
指数性增长:每个RTT将CongWin翻倍,收到每个ACK进行操作
初始速率慢,但是快速攀升
Threshold变量
用于决定指数性增长何时切换为线性增长
当CongWin达到Loss事件前值的1/2时
实现方法:
Loss事件发生时,Threshold被设为Loss事件前CongWin值的1/2
Loss事件的处理
3个重复ACKs(此时还能传送一些segment):
Congwin减半
然后线性增长
Timeout事件(严重堵塞):
Congwin直接设为1个MSS
然后指数增长,达到threshold时线性增长
TCP性能分析
TCP的吞吐率
忽略慢启动
设CongWin的大小为W
吞吐率为W/RTT
超时后,CongWin=W/2,吞吐率时W/2RTT
平均吞吐率:0.75W/RTT