https://www.bilibili.com/video/BV1Up411Z7hC?p=4&spm_id_from=pageDriver
如有错误之处请指出,谢谢!
目录
p53-p57
拥塞控制
拥塞(Congestion)
非正式定义:
太多发送主机发送了太多数据或者发送速度太快,以至于网络无法处理
表现:
分组丢失(路由器缓存溢出)
分组延迟过大(在路由器缓存中排队)
拥塞控制VS流量控制
可靠数据传输根据端到端符合个体利益,拥塞控制像是一个社会问题
流量控制是不要让接收方溢出,而拥塞控制是不要让网络溢出
A top-10 problem
用色的成因和代价
场景1:分组时延太大
路由器向C、D主机总带宽未C
由于路由器有无限的缓存,不存在丢包,所以没有重传机制
左边的图表示吞吐率
因为共享带宽,输出最大带宽为C/2
右边的图表示时延
输入接近C/2时时延接近无限
因为一直在排队,形成排队的速度大于处理的速度,越后面的分组等的时间越久
场景2:吞吐率降低
一个路由器有有限的buffer
Sender重传分组
因为重传造成了资源的浪费
定时器与丢失叠加造成了更多的重传
场景3
多跳产生了多个主机传输间的竞争
Q为什么拥塞控制在传输层做
A应该是单个应用不知道其他应用是否也在发数据,所以就不能控制自己的发送速率。而多个应用的数据是汇总到传输层,所以传输层才知道数据是否太多
拥塞控制的方法
端到端拥塞控制
网络层不需要显式地提供支持
端系统通过观察loss,delay等网络行为判断是否发生拥塞
TCP采取这种方法
网络辅助的拥塞控制
路由器向发送方显式地反馈网络拥塞信息(端系统利用信息来调节)
简单的拥塞指示(1bit):SNA,DECbit,TCP/IP ECN,ATM
指示发送方应该采取何种速率
ATM ABR拥塞控制
ABR:available bit rate
弹性服务
如果发送方路径“underloaded”负载低:使用可用带宽
如果发送方路径拥塞:将发送方速率降到最低保障速率
RM(resource management )cells
穿插在data cells中间
发送方发送
交换机设置RM cell位(网络辅助)
NI bit:rate不许增长
CI bit:拥塞指示
RM cell由接收方返回给发送方(得到了路径上所有的交换机RM cell,并返回给发送方)
在RM cell中有显式地速率(ER)字段:两个字节
拥塞的交换机可以将ER置为更低的值
发送方获知路径所能支持的最小速率
数据cell中的EFCI位:拥塞的交换机将其设为1
如果RMcell前面的data cell的EFCI位被设为1,那么发送方在返回RM cell中置CI位
TCP拥塞控制
TCP拥塞控制的基本原理
Sender限制发送速率
设置一个变量叫拥塞窗口CongWin
CongWin:
动态调整以改变发送速率
反应所感知到的网络拥塞
Q如何感知网络拥塞?
A
Loss事件=timeout或3个重复的ACK
发生loss事件后,发送方降低速率
Q如何合理的调整发送速率
A
加性增-乘性减:AIMD 拥塞避免机制
慢启动:SS
加性增-乘性减:AIMD
原理:逐渐增加发送速率,谨慎探测可用带宽,知道发生loss
方法:AIMD
Additive Increase:每个RTT将CongWin增大一个MSS-----拥塞避免
Multiplicative Decrease:发生loss后将CongWin减半
慢启动:SS
TCP建立时,CongWin=1
eg:MSS=500 byte,RTT=200ms
初始速率=20kbps
可用带宽可能远远高于初始速率
希望快速增长
原理:
当连接开始时,指数型增长
每个RTT将CongWin翻倍
收到每个ACK进行操作
初始速率很慢,但是快速攀升
Q何时应该指数性增长切换线性增长(拥塞避免)?
当CongWin达到Loss事件前值的1/2时
实现方法:
变量Threshold
Loss事件发生时,Threshold被设为Loss事件前CongWin值的1/2
蓝色为TCP早期版本:重新进入慢启动
黑色为后来版本:慢启动后,执行加性增-乘性减
Loss事件的处理
3个重复的ACKs:
CongWin切到一半
然后线性增长
Timeout事件:
CongWin直接设为1个MSS
然后指数增长
到达threshold后,再线性增长
Q为什么两个处理不同
3个重复ACKs表示网络还能够传输一些segments
timeout事件表明拥塞更为严重
总结
当CongWin低于Threshold,发送方处于慢启动阶段,CongWin指数增长
当CongWin大于Threshold,发送方处于拥塞避免阶段,CongWin线性增长
当收到3个重复ACKs时,Threshold减为原来CongWin的一半,CongWin=Threshold
当timeout时,Threshold减为原来CongWin的一半,CongWin=1
TCP拥塞控制算法
rate≈CongWin/RTT,流水线机制一个RTT可能收到多个ACK,对于每个ACKCongWin+1,速率就成倍增长了
例题
TCP性能分析
TCP吞吐率
例子
Q:TCP在未来是否还适用
TCP连接丢包率极低,对链路的设计要求极高
TCP的设计有些参数不满足当今某些硬件需求了
高速网络下需要设计新的TCP
TCP的公平性
TCP是公平的
细线:最终TCP吞吐率相等
粗线:限制了整个带宽的瓶颈带宽R
公平性与UDP(TCP吃亏)
多媒体应用通常不使用TCP,以免被拥塞控制机制限制速率
使用UDP:以恒定速率发送,能够容忍丢失
产生了不公平
研究:对TCP有好的UDP
公平性与并发性TCP连接
某些应用会打开多个并发连接
Web浏览器
产生公平性问题
例子:链路速率为R,已有9个连接
新来的应用请求1个TCP,获得R/10的速率
新来的应用请求11个TCP,获得R/2的速率