一、拥塞原因与代价
1、场景一
:
(1)模拟场景:两个发送端、两个接收端;一个路由器,具备无限大缓冲区;输出链路为R;没有重传。
(2)拥塞原因1:当每个连接的最大吞吐量为R/2(吞吐量=数据量/单位时间,即每个数据耗费的带宽)。单个分组大
(3)拥塞原因2:进入的速率接近链路路由带宽时,延迟增大。数量多
2、场景2
:
(1)模拟场景:一个路由器,有限的缓冲
(2)拥塞原因:分组在路由器滞留,发送方超时定时器触发,重传,造成死锁。(本身就滞留,发送方还一直发送,拥塞路上不会头)
应用层的输入=应用层的输出
传输层的输入和重传>=传输层的输出(原始的数据+重传的数据导致越来越拥堵)
(3)代价:分组重复,分组可能会丢失,由于缓冲区满而丢失
a.为达到一个有效的输出,网络可能需要做更多的工作(重传)
b.没有必要的重传,链路中包括了多个分组的拷贝,降低了“goodput”
3、场景3
:
(1)模拟场景:四个发送端,多重路径,超时/重传
当路由器拥塞时,路由器缓冲区有一个位置后,红色每次都会把位置占了,而这个时候蓝色的吞吐就无限接近0了,而且这个蓝色每次都会传输分组,但是因为竞争不过其他,都会被丢弃掉
二、拥塞控制
1、ATM ABR拥塞控制(由网络告诉发送方)
(1)弹性服务:如果发送端路径“轻载”,发送方使用可用带宽
(2)如果发送方的路径拥塞,发送方限制其发送的速度到最小保障的速率上
问题
:如何限制?
答案
:RM(资源管理)信元:由发送端发送,在数据元中间隔插入,RM信元中的比特被交换机设置(“网络辅助”)
a.NI bit
(轻微速率)速率不要增加了
b.CI bit
(拥塞指示),速率需要下降
c.ER
:表明可以提供多大带宽
发送方发送的RM信元被接收端返回,接收端不做任何改变
2、TCP拥塞:端到端的拥塞控制机制
问题
:如何检测拥塞?
答案
:(1)某个段传输超时了(丢失事件),超时了的原因:a.网络拥塞(某个个路由器缓冲区没空间了,被丢失了),概率大;b.出错了被丢失了(各级错误,没有通过校验,被丢弃)概率小。
(2)有关某个段的三次重复ACK:轻微拥塞
问题
:如何控制发送窗口的速率?
(1)维持一个拥塞窗口的值:CongWin,CongWin是动态的,是感知到的网络拥塞程度的函数。ConWin/RTT得到在对方未确认的情况下,向网络当中注入字节的数量。
a.当超时
时,CongWin降为1MSS,然后在每一次RTT都倍增增长(慢启动阶段),添加到一定值,进入CA阶段(避免拥塞阶段),再每次添加1个MSS。
b.收到三个ACK
时,ConWin降为原来的1/2,进入CA阶段。
3、TCP拥塞控制和流量控制的联合合作
(1)联合控制的方法:拥塞控制决定了拥塞控制的因素,发送方一次可以在未确认的情况下向网络发送多少字节的数量,接收窗口空闲的尺寸大小告诉发送方,从而从拥塞控制和流量控制的最小值可以得知向网络发送多少字节
SentWin = min(ConWin,RecvWin)
4、总结
(1)当拥塞窗口(Conwin)小于警戒值(Threshold)的时候,发送端处于慢启动阶段,这个时候在每一个RTT中,ConWin是加倍增长的,也就是在每收到一个ACK,ConWin增1,也就是这个时候发送的MSS是加倍增长
(2)当拥塞窗口(ConWin)大于警戒值(Threshold)的时候,发送端处于避免拥塞阶段,这个时候窗口线性增长,每次增加1,也就是发送的MSS增加1
(3)不管前面(1)(2)怎么怎么增加,也有可能会出现收到三个冗余ACK与超时情况。当收到三个重复的ACK时,Threshold设置为ConWin/2,ConWin=Threshold+3,也就是将警戒值设置为拥塞窗口的一半,而拥塞窗口则照常+3(收到三个ACK),且这个时候会进入CA阶段;当收到超时时,警戒值设置为拥塞窗口的一半,拥塞窗口重新设置为1MSS,进入SS阶段
3、平均吞吐量
慢启动是指数性增加,非常快,时间忽略不计,拥塞窗口在w~w/2之间,平均拥塞窗口等于(w+w/2)/2,所以吞吐量=(w+w/2)/2RRT = 3/4*w/RTT
4、公平性
(1)大致上个公平,若一个路由器上连接着两个主机,他们达到一定的数值就会造成拥塞,然后拥塞窗口/2,然后再次线性的增长(慢启动忽略不计),所以起初主机占的带宽大,拥塞窗口大的,减得也就越多,再经过几次后,两个主机的拥塞窗口值就处于一个相等的值。
(2)大致公平是指他们的RTT相等,若一个RTT中,一个主机传输了两个MSS,也就没有公平了