传输层(3).

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
因此,每一个 TCP 连接需要有以下两个状态变量:
– 接收端窗口 rwnd (receiver window) 又称为通知窗口 (advertised window)。这是接收端根据其目前的接收缓存 大小所许诺的最新的窗口值,是来自接收端的流量控制。 接收端将此窗口值放在 TCP 报文的首部中的窗口字段, 传送给发送端。 – 拥塞窗口 cwnd (congestion window)。是发送端根据自己 估计的网络拥塞程度而设置的窗口值,是来自发送端的 流量控制。
M3
M4
ACK3
M5
ACK3 M6 ACK3 M3
快恢复算法
(1) 当发送端收到连续三个重复的 ACK 时,就重新设置慢开 始门限 ssthresh。
(2) 与慢开始不同之处是拥塞窗口 cwnd 不是设置为 1,而是 设置为 ssthresh + 3 MSS。 (3) 若收到的重复的 ACK 为 n 个(n > 3),则将 cwnd 设置 为 ssthresh + n MSS。
为了在传输层进行拥塞控制,1999年公布的互联网 建议标准[RFC 2581]定义了四种算法,即慢开始 (slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)和快恢复 (fast recovery)。
7/38
TCP拥塞控制两个状态量
进入拥塞避免 ssthresh = 16
传输次数 0 2
慢开始
4
6
8
10
12 14 16
慢开始
18 20 22
拥塞避免
拥塞避免
发送端的发送窗口不能超过拥塞窗口 cwnd 和接收端窗口 rwnd 中的最小值。我们假定接收端窗口足够大,因此现在 发送窗口的数值等于拥塞窗口的数值。
慢开始和拥塞避免算法的实现举例
8/38
发送窗口的上限值
发送端的发送窗口的上限值应当取为接收端窗口 rwnd 和拥塞窗口 cwnd 这两个变量中较小的一个, 即应按以下公式确定: 发送窗口的上限值 Min [rwnd, cwnd] (7-1)
当 rwnd < cwnd 时,是接收端的接收能力限制发送 窗口的最大值。 当 cwnd < rwnd 时,则是网络的拥塞限制发送窗口 的最大值。
随着目前互联网的发展,上网的用户和应用的数量 也随之增长,这样,如果不采取某种措施来协调资 源的使用,那么拥塞的发生就是必然的。
5/38
拥塞控制算法
一般来说,拥塞控制算法包括拥塞避免和拥塞控制。
– 拥塞避免是一种预防机制,也就是说避免网络进入拥塞 状态,尽量使得网络保持在高吞吐量和低延迟的情况下。
0
进入拥塞避免
当 TCP 连接进行初始化时,将拥塞窗口置为 1。图中的窗 口单位不使用字节而使用报文段。 慢开始门限的初始值设置为 16 个报文段,即 ssthresh = 16。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
线性规律增长 24 20 16 12 8 4 0 发生超时 进入拥塞避免 更新后的 ssthresh = 12 指数规律增长
进入拥塞避免
指数规律增长
传输次数
当拥塞窗口 cwnd 增长到慢开始门限值 ssthresh 时(即当 cwnd = 16 时),就改为执行拥塞避免算法,拥塞窗口按线 性规律增长。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd 线性规律增长 24 20 16 12 8 4 进入拥塞避免 ssthresh = 16 进入拥塞避免 发生超时
传输次数
发送端每收到一个对新报文段的确认 ACK,就把发送端的 拥塞窗口加 1,因此拥塞窗口 cwnd 随着传输次数按指数规 律增长。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd 线性规律增长 发生超时
24 20
16 12 8 4 0 0 2 慢开始 4 6 8 10 12 14 16 慢开始 18 20 22 拥塞避免 拥塞避免 进入拥塞避免 ssthresh = 16 更新后的 ssthresh = 12
4/38
流量控制和拥塞控制比较
流控主要是考虑接收端,不要发送过快,超过对方 的接收能力,而拥塞控制则是要考虑到整个网络环 境,使其负载不能超过网络的最大承受能力。 显然拥塞发生的原因是因为“需求”大于了“供 给”,网络中的有限资源被多用户共享使用,网络 本身无法根据资源的利用情况来限制某些用户。
9/38
慢开始算法的原理
在主机刚刚开始发送报文段时可先将拥塞窗口 cwnd 设置为一个最大报文段 MSS 的数值。
在每收到一个对新的报文段的确认后,将拥塞窗口 增加至多一个 MSS 的数值。 用这样的方法逐步增大发送端的拥塞窗口 cwnd, 可以使分组注入到网络的速率更加合理。
10/38
当网络中存在过多的报文时,网络的性能就会相应 下降,这种现象就被成为拥塞 。
发送端的主机在确定发送报文段的速率时,既要根 据接收端的接收能力,又要从全局考虑不要使网络 发生拥塞。 拥塞控制的思想就是网络中的节点采取一定的措施 来保证尽量使得网络的负载保持在Knee位置,需 要避免拥塞的发生或者对拥塞的发生作出反应,使 其能够再次恢复到Knee位置,从而保持网络的整 体性能最大化。
拥塞窗口 cwnd 线性规律增长 24 20 16 12 8 4 进入拥塞避免 ssthresh = 16 进入拥塞避免 发生超时
更新后的 ssthresh = 12
指数规律增长 传输次数 0 2 4 6 8 10 12 14 16 18 20 22
0 慢开始 拥塞避免 慢开始 拥塞避免
在执行慢开始算法时,拥塞窗口 cwnd 的初始值为 1,发送 第一个报文段 M0。
进入拥塞避免
ssthresh = 16
传输次数 慢开始 拥塞避免 慢开始 拥塞避免
更新后的 ssthresh 值变为 12(即发送窗口数值 24 的一半), 拥塞窗口再重新设置为 1,并执行慢开始算法。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd
线性规律增长 24 20 16 12 8 4 0 发生超时 进入拥塞避免 更新后的 ssthresh = 12 指数规律增长
传输次数
发送端收到 ACK1 (确认 M0,期望收到 M1)后,将 cwnd 从 1 增大到 2,于是发送端可以接着发送 M1 和 M2 两个报文段。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd 线性规律增长 24 20 16 12 8 4 发生超时 进入拥塞避免 更新后的 ssthresh = 12 指数规律增长
– 对应的拥塞控制就是恢复机制,它使得网络一旦发生拥 塞,需要从拥塞状态中恢复出来,重新进入高吞吐量和 低延迟的状态。
6/38
拥塞控制算法——cont.
拥塞避免是一种“预防”措施,维持网络的高吞吐 量、低延迟状态,避免进入拥塞;拥塞控制是一种 “恢复”措施,使网络从拥塞中恢复过来,进入正 常的运行状态。
25/38
往返时延的方差很大
由于 TCP 的下层是一个互连网环境,IP 数据报所 选择的路由变化很大。因而传输层的往返时延的方 差也很大。
往返时延的 概率分布
数据链路层
传输层
时间 T1
26/38
T2
T3
往返时延的自适应算法
记录每一个报文段发出的时间,以及收到相应的确认报文 段的时间。这两个时间之差就是报文段的往返时延。
更新后的 ssthresh = 12
指数规律增长 传输次数 0 2 4 6 8 10 12 14 16 18 20 22
0 慢开始 拥塞避免 慢开始 拥塞避免
假定拥塞窗口的数值增长到 24 时,网络出现超时(表明网 络拥塞了)。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd 线性规律增长 24 20ቤተ መጻሕፍቲ ባይዱ16 12 8 4 0 0 2 4 6 8 10 12 14 16 18 20 22 发生超时 进入拥塞避免 更新后的 ssthresh = 12 指数规律增长
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd 线性规律增长 发生超时
24 20
16 12 8 4 0 0 2 慢开始 4 6 8 10 12 14 16 慢开始 18 20 22 拥塞避免 拥塞避免 进入拥塞避免 ssthresh = 16 更新后的 ssthresh = 12
进入拥塞避免
指数规律增长
将各个报文段的往返时延样本加权平均,就得出报文段的 平均往返时延 RTT。 每测量到一个新的往返时延样本,就按下式重新计算一次 平均往返时延 RTT:
不难看出,快重传并非取消重传计时器,而是在某 些情况下可更早地重传丢失的报文段。
22/38
快重传举例
主机 A M1, M2 ACK2, ACK3 主机 B A 发送 M1 和 M2
B 确认 M1 和 M2 丢失! A 发送 M3 但丢失了
A 发送 M4 B 只能再次确认 M2(因为 M3 没有收到) A 发送 M5 B 发送第二个重复确认 ACK3 A 发送 M6 B 发送第三个重复确认 ACK3 A 收到了三个重复的确认 ACK3,就立即重传 M3,而不必等待超时重传。
(4) 若发送窗口值还容许发送报文段,就按拥塞避免算法继续 发送报文段。
(5) 若收到了确认新的报文段的 ACK,就将 cwnd 缩小到 ssthresh。
24/38
TCP 的重传机制
重传机制是 TCP 中最重要和最复杂的问题之一。
TCP 每发送一个报文段,就对这个报文段设置一 次计时器。只要计时器设置的重传时间到但还没有 收到确认,就要重传这一报文段。
进入拥塞避免
ssthresh = 16
0
0 2 4 6 8 10 12 14 16 18 20 22
传输次数 慢开始 拥塞避免 慢开始 拥塞避免
接收端发回 ACK2 和 ACK3。发送端每收到一个对新报文 段的确认 ACK,就把发送端的拥塞窗口加 1。现在发送端 的 cwnd 从 2 增大到 4,并可发送 M4 ~ M6共 4个报文段。
– 乘法减小“是指不论在慢开始阶段还是拥塞避免阶段, 只要出现一次超时(即出现一次网络拥塞),就把慢开 始门限值 ssthresh 设置为当前的拥塞窗口值乘以 0.5。 – 当网络频繁出现拥塞时,ssthresh 值就下降得很快,以大 大减少注入到网络中的分组数。
加法增大(additive increase)
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd 线性规律增长 24 进入拥塞避免 ssthresh = 16 更新后的 ssthresh = 12 指数规律增长 传输次数 0 2 慢开始 4 6 8 10 12 14 16 慢开始 18 20 22 拥塞避免 拥塞避免 发生超时
20 16 12 8 4
– “加法增大”是指执行拥塞避免算法后,当收到对所有 报文段的确认就将拥塞窗口 cwnd增加一个 MSS 大小, 使拥塞窗口缓慢增大,以防止网络过早出现拥塞。
21/38
快重传和快恢复
快重传算法规定,发送端只要连续收到三个重复的 ACK 即可断定有分组丢失了,就应立即重传丢失 的报文段而不必继续等待为该报文段设置的重传计 时器的超时。
慢开始和拥塞避免算法的实现举例
拥塞窗口 cwnd 线性规律增长 发生超时
24 20
16 12 8 4 0 0 2 慢开始 4 6 8 10 12 14 16 慢开始 18 20 22 拥塞避免 拥塞避免 进入拥塞避免 ssthresh = 16 更新后的 ssthresh = 12
进入拥塞避免
指数规律增长
进入拥塞避免 ssthresh = 16
传输次数 0 2
慢开始
4
6
8
10
12 14 16
慢开始
18 20 22
拥塞避免
拥塞避免
当 cwnd = 12 时改为执行拥塞避免算法,拥塞窗口按按线 性规律增长,每经过一个往返时延就增加一个 MSS 的大小。
两个原则
乘法减小(multiplicative decrease)
第 21讲 传输层(3)
1/38
知识回顾
TCP首部
– 结构 – 各字段的含义
TCP如何实现可靠传输 TCP三次握手建立连接
TCP连接的拆除
TCP的流量控制
2/38
本讲内容
TCP 拥塞控制
TCP 重传机制
采用随机早期丢弃 RED 进行拥塞控制
3/38
TCP拥塞控制思想
相关文档
最新文档