2019-06-13

TCP拥塞控制的基本原理:
发送方限制发送速率:
lastByteSent-lastByteAcked<=CongWin(拥塞窗口)
通过动态设置拥塞窗口来调整速率的大小

CongWin:
动态调整以改变发送速率
反应锁感知到的网络拥塞

如何感知?:
Loss事件=timeout或者受到3个重复的ACK
发生loss事件之后,发送方降低速率

如何合理第调整发送速率?
加性增-乘性减:AIMD(add increase mul des)
慢启动:SS

AIDM:
原理:逐渐增加发送速率,谨慎探测可用带宽,知道发生loss
方法:
1.Additive increase:每个RTT将CongWin增大一个MSS(最大段的长度)---拥塞避免
2.Multiplicative Decrease:发生loss后将CongWin减半

SS:
TCP建立连接时,CongWin设置为1
原理:当连接开始时,指数型增长,每个RTT将CongWin翻倍,
初始速率很慢,但是快速攀升

如图:

通过AIDM和SS的动态切换,来进行拥塞控制

如何进行切换?当CongWin达到loss时间前值的1/2时

实现方法:
设置变量Threshold
当loss事件发生时,threshold被设置为loss时间前CongWin值的1/2

对loss事件的处理
3个重复的ack:
CongWin切到一半,然后线性增长
Timeout事件:
CongWin直接设置为1个MSS
然后指数增长
达到Threshold后,再线性增长

原理:3个重复的ACKs表示网络还能传输一些segments
timeout事件表明拥塞更为严重

TCP拥塞控制算法:

你可能感兴趣的:(2019-06-13)