当前位置:文档之家› 第5章运输层的拥塞控制

第5章运输层的拥塞控制

拥塞窗口 cwnd
线性规律增长
24 20 16 12 8 4 0 0 2 慢开始 4 6 8 10 进入拥塞避免 ssthresh = 16
发生超ห้องสมุดไป่ตู้ 进入拥塞避免 更新后的 ssthresh = 12
指数规律增长 传输次数 12 14 16 慢开始 18 20 22 拥塞避免 拥塞避免
当 cwnd = 12 时改为执行拥塞避免算法,拥塞窗口 按按线性规律增长,每经过一个往返时延就增加一 个 MSS 的大小。
发生超时 进入拥塞避免 更新后的 ssthresh = 12
指数规律增长 传输次数 12 14 16 慢开始 18 20 22 拥塞避免 拥塞避免
在执行慢开始算法时,拥塞窗口 cwnd 的初始值为 1, 发送第一个报文段 M0。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
线性规律增长
24 20 16 12 8 4 0 0 2 慢开始 4 6 8 10 进入拥塞避免 ssthresh = 16
注意
在采用快恢复算法时,慢开始算法只是 在TCP连接建立时和网络出现超时时 才使用。见P212图5-27所示。 请做P222第5-39题
课件制作人:谢希仁
书后作业
P220 5-13 5-21(1) 5-23 5-28 5-38 5-39 5-41 5-46
课件制作人:谢希仁
课件制作人:谢希仁
慢开始算法的原理

由小到大逐渐增大发送窗口,也就是逐渐增大拥塞 窗口; 在主机刚刚开始发送报文段时可先将拥塞窗口 cwnd 设置为一个最大报文段 MSS 的数值;


在每收到一个对新的报文段的确认后,将拥塞窗口 增加至多一个 MSS 的数值;
每经过一个传输轮次,拥塞窗口 cwnd 就加倍;
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
线性规律增长
24 20 16 12 8 4 0 0 2 慢开始 4 6 8 10 进入拥塞避免 ssthresh = 16
发生超时 进入拥塞避免 更新后的 ssthresh = 12
指数规律增长 传输次数 12 14 16 慢开始 18 20 22 拥塞避免 拥塞避免
课件制作人:谢希仁
要点
无论在慢开始阶段还是拥塞避免阶段,只要发送方 判断网络出现拥塞(其依据就是没有按时收到确 认): 要将慢开始门限ssthresh设置为出现拥塞时的发 送窗口值的一半(但不能小于2) 拥塞窗口cwnd重新设置为1,执行慢开始算法; 目的:迅速减少主机发送到网络中的分组数,使 得发生拥塞的路由器有足够时间把队列中积压的 分组处理完毕。 课件制作人:谢希仁


不难看出,快重传并非取消重传计时器,而是在某些情况下可 更早地重传丢失的报文段。
课件制作人:谢希仁
快重传举例
主机 A
M1, M2 ACK2, ACK3 M3 M4 ACK3 M5 ACK3 M6 ACK3 M3
主机 B A 发送 M1 和 M2 B 确认 M1 和 M2
丢失! A 发送 M3 但丢失了 A 发送 M4
拥塞窗口 cwnd
线性规律增长
24 20 16 12 8 4 0 0 2 慢开始 4 6 8 10 进入拥塞避免 ssthresh = 16
发生超时 进入拥塞避免 更新后的 ssthresh = 12
指数规律增长 传输次数 12 14 16 慢开始 18 20 22 拥塞避免 拥塞避免
接收端发回 ACK2 和 ACK3。发送端每收到一个对新报 文段的确认 ACK,就把发送端的拥塞窗口加 1。现在 发送端的 cwnd 从 2 增大到 4,并可发送 M4 ~ M6共 4 个报文段。
B 只能再次确认 M2(因为 M3 没有收到)
A 发送 M5 B 发送第二个重复确认 ACK3 A 发送 M6 B 发送第三个重复确认 ACK3 A 收到了三个重复的确认 ACK3,就立即重传 M3,而不必等待超时重传。
快恢复算法

与快重传配合使用 过程:
(1)发送方连续收到三个重复确认时,就执行 “乘法减小”算法,把慢开始门限ssthresh减半, 这是为了预防网络发生拥塞,请注意:接下去不 执行慢开始算法(即拥塞窗口cwnd不设置为1); (2)而是把拥塞窗口cwnd设置为慢开始门限 ssrhresh减半后的数值,然后开始执行拥塞避免 算法(“加法增大”),使拥塞窗口缓慢地线性 增大。 课件制作人:谢希仁
发生超时 进入拥塞避免 更新后的 ssthresh = 12
指数规律增长 传输次数 12 14 16 慢开始 18 20 22 拥塞避免 拥塞避免
更新后的 ssthresh 值变为 12(即发送窗口数值 24 的 一半),拥塞窗口再重新设置为 1,并执行慢开始算 法。
慢开始和拥塞避免算法的实现举例
当 TCP 连接进行初始化时,将拥塞窗口=1。图中的窗 口单位不使用字节而使用报文段。 慢开始门限的初始值设置为 16 个报文段, 即 ssthresh = 16。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
线性规律增长
24 20 16 12 8 4 0 0 2 慢开始 4 6 8 10 进入拥塞避免 ssthresh = 16
发送端每收到一个对新报文段的确认 ACK,就把发送 端的拥塞窗口加 1,因此拥塞窗口 cwnd 随着传输次数 按指数规律增长。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
线性规律增长
24 20 16 12 8 4 0 0 2 慢开始 4 6 8 10 进入拥塞避免 ssthresh = 16
发生超时 进入拥塞避免 更新后的 ssthresh = 12
计算机网络
第 7 章 运输层的拥塞控制
课件制作人:谢希仁
四种拥塞控制的方法



慢开始 拥塞避免 快重传 快恢复
课件制作人:谢希仁
两个参数


拥塞窗口cwnd:发送方维持的一个状态变量,拥塞 窗口的大小取决于网络的拥塞程度,并且动态地在 变化。发送方让自己的发送窗口等于拥塞窗口。 慢开始门限ssthresh:其用法如下 当cwnd < ssthresh时,使用慢开始算法; 当cwnd > ssthresh时,停止使用慢开始算法而 改用拥塞避免算法 当cwnd = ssthresh时,既可使用慢开始算法, 也可使用拥塞避免算法。
发生超时 进入拥塞避免 更新后的 ssthresh = 12
指数规律增长 传输次数 12 14 16 慢开始 18 20 22 拥塞避免 拥塞避免
假定拥塞窗口的数值增长到 24 时,网络出现超时(表 明网络拥塞了)。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
线性规律增长
24 20 16 12 8 4 0 0 2 慢开始 4 6 8 10 进入拥塞避免 ssthresh = 16
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
线性规律增长
24 20 16 12 8 4 0 0 2 慢开始 4 6 8 10 进入拥塞避免 ssthresh = 16
发生超时 进入拥塞避免 更新后的 ssthresh = 12
指数规律增长 传输次数 12 14 16 慢开始 18 20 22 拥塞避免 拥塞避免


用这样的方法逐步增大发送端的拥塞窗口 cwnd,可 以使分组注入到网络的速率更加合理。
课件制作人:谢希仁
拥塞避免算法



条件:拥塞窗口cwnd >慢开始门限 ssthresh 时,停止使用慢开始算法而改用拥塞避免算 法; 原理:没经过一个往返时间RRT(即传输轮 次),就把拥塞窗口cwnd 加1,而不是加倍; 拥塞窗口cwnd按线性规律缓慢增长,比慢开 始算法的拥塞窗口增长速率缓慢得多。
发生超时 进入拥塞避免 更新后的 ssthresh = 12
指数规律增长 传输次数 12 14 16 慢开始 18 20 22 拥塞避免 拥塞避免
发送端收到 ACK1 (确认 M0,期望收到 M1)后,将 cwnd 从 1 增大到 2,于是发送端可以接着发送 M1 和 M2 两个报文段。
慢开始和拥塞避免算法的实现举例
指数规律增长 传输次数 12 14 16 慢开始 18 20 22 拥塞避免 拥塞避免
当拥塞窗口 cwnd 增长到慢开始门限值 ssthresh 时 (即当 cwnd = 16 时),就改为执行拥塞避免算法, 拥塞窗口按线性规律增长。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
线性规律增长
24 20 16 12 8 4 0 0 2 慢开始 4 6 8 10 进入拥塞避免 ssthresh = 16
课件制作人:谢希仁
加法增大
(additive increase)

“加法增大”是指执行拥塞避免算法后,当 收到对所有报文段的确认就将拥塞窗口 cwnd增加一个 MSS 大小,使拥塞窗口缓 慢增大,以防止网络过早出现拥塞。
课件制作人:谢希仁
必须强调指出


“ 拥塞避免”并非指完全能够避免了 拥塞。利用以上的措施要完全避免 网络拥塞还是不可能的。 “拥塞避免”是说在拥塞避免阶段 把拥塞窗口控制为按线性规律增长, 使网络比较不容易出现拥塞。
AIMI算法


Additive Increase 加法增大 Multiplicative Decrease 乘法减小
课件制作人:谢希仁
乘法减小
(multiplicative decrease)


“乘法减小“是指不论在慢开始阶段还是拥 塞避免阶段,只要出现一次超时(即出现 一次网络拥塞),就把慢开始门限值 ssthresh 设 置 为 当 前 的 拥 塞窗 口 值乘 以 0.5。 当网络频繁出现拥塞时,ssthresh 值就下 降得很快,以大大减少注入到网络中的分 组数。
相关主题