3.7TCP拥塞控制原理
3.7.1拥塞控制原理
拥塞:非正式定义"套多数据需要网络传输,超过网络的处理能力"
拥塞的表现:
- 分组丢失(路由器缓冲区溢出)
- 分组经历比较长的延迟(在路由器的队列中排队)
拥塞控制的方法
-
端到端拥塞控制
没有来自网络的显示反馈
端系统根据延迟和丢失事件判断是否发生拥塞
TCP采用的方法
-
网络复制的拥塞控制
路由器提供给端系统以反馈信息
显示提供发送端可以采用的速率
案例学习:ATM ABR 拥塞控制
- ABR:available bit rate
- 弹性服务
- 如果发送方路径轻载发送方使用可用带宽
- 如果发送方路径拥塞发送方限制发送速度为一个最小保障速率
RM(资源管理)信元
-
有发送端发送,在数据信元中间隔插入
-
RM信元中的比特被交换机设置(网络复制)
NI bit:no increase in rate(轻微拥塞)发送速率不要在增加了
CI bit :congestion indication 拥塞指示
-
发送端发送的RM信元被接收端返回,接收端不做任何处理
-
在RM信元中的两个字节ER(explicit rate)字段
拥塞的交换机可能会降低信元中的ER值
发送端的发送速率因此是最低可支持速率
-
数据信元中的EFCI bit 被拥塞的交换机置位1
如果在管理信元RM之前的数据信元EFCI被置位1,接收端在返回的RM信元中设置CI bit
3.7.2TCP拥塞控制机制:端到端的拥塞控制机制
如何检测拥塞
-
某个段超时了拥塞
超时时间到.某个段的确认没有来
原因1:网络拥塞(某个路由器队列满了,被丢弃)概率大
原因2:出错被丢弃(各级错误,没有通过校验)概率小
-
有关某个段的3次重复ACK轻微拥塞
段的第一个ACK正常,确认绿段,期待粉色段
段的第二个重复ACK,一位着粉段的后一个段收到了蓝段乱序到达
段的低2,3,4个重复ACK意味着粉段后面的第2,3,4,个段收到了后面的段乱序到达,同时粉段丢失的概率较大
网络这时还能进行一定传输,拥塞情况较第一种好
如何控制发送端发送速率
-
维持一个拥塞窗口的值 CongWin
-
发送端限制已发送但是为确认的数据量上限从而粗略的控制发送方向网络中输入的额速率
-
CongWin是动态的,是感知到网络拥塞程度的函数
超时或者3个重复的ACK,CongWin减小
- 超时时,CongWin变为1MSS,进入SS阶段然后再倍增到CongWin/2(每个RTT),从而进入CA阶段
- 3个重复ACK;CongWin变为CongWin/2,进入CA阶段
否则(正常收到ACK,没有发生以上错误)CongWin增大
- SS阶段加倍增加(每个RTT)
- CA阶段线性增加(每个RTT )
拥塞控制策略
-
慢启动
连接刚建立CongWin=1MSS,只要不超时或者收到3个重复ACK,每经过一个RTT,CongWin加倍
-
AIMD线性增,乘性减
乘性减:超时事件发生后,CongWin降为1,将CongWin/2设为阈值,进入慢启动阶段(倍增到阈值)
线性增:当CongWin>阈值时,每经过一个RTT,CongWin加1个MSS
-
超时事件后的保守策略
补充:TCP的公平性
k个TCP会话同时分享一个链路带宽为R的瓶颈,每一个会话的有效的带宽为R/k