PromleeBlog
网站地图
关于博客
菜单
loading..🐩🐩🐩🐩
学习
Network
Transport Layer
拥塞控制的基本原则
拥塞控制的基本原则
📅
拥塞控制原则(Principles of Congestion Control)
拥塞原因与代价:场景1(Causes and Costs of Congestion: Scenario 1)
拥塞原因与代价:场景2(Causes and Costs of Congestion: Scenario 2)
场景2-1(Scenario 2-1)
场景2-2(Scenario 2-2)
场景2-3(Scenario 2-3)
场景3(Scenario 3)
拥塞控制原则(Principles of Congestion Control)
🔗
过多发送方以过快速度发送数据,超过网络能够处理的能力。
这与
流量控制
不同。
表现
丢包
:大量分组同时进入网络时,路由器缓冲区可能溢出,部分分组丢失,降低传输可靠性与通信效率。
长延迟
:流量超过路由器处理能力时,分组必须在队列中等待,造成传输延迟。
问题:如何检测拥塞?
问题:发现拥塞之后,应当如何响应?
拥塞原因与代价:场景1(Causes and Costs of Congestion: Scenario 1)
🔗
条件
两个发送方、两个接收方。
一个路由器,缓冲区无限,因此不丢包。
输出链路容量为R。
没有重传。
共享输出链路缓冲区无限。
结果
在输入到达率与输出吞吐量关系图中,输出率在
R
/
2
R/2
R
/2
达到最大,之后进入饱和并保持不变。
在输入与延迟的关系图中,输入接近
R
/
2
R/2
R
/2
时,延迟急剧增加。
拥塞原因与代价:场景2(Causes and Costs of Congestion: Scenario 2)
🔗
一个路由器,缓冲区
有限
。
发送方重传超时分组。
应用层输入等于应用层输出:
λ
i
n
=
λ
o
u
t
\lambda_{in} = \lambda_{out}
λ
in
=
λ
o
u
t
。
传输层输入包含重传:
λ
i
n
′
≥
λ
i
n
\lambda'_{in} \geq \lambda_{in}
λ
in
′
≥
λ
in
。
场景2-1(Scenario 2-1)
🔗
理想情况:发送方完全了解路由器缓冲区状态。
只有缓冲区空间足够时,发送方才发送数据。
场景2-2(Scenario 2-2)
🔗
理想情况:路由器会通知丢包。
收到丢包通知后,发送方重传对应分组。
以R/2的速率发送时,部分分组虽然是重传分组,但有效吞吐量仍然为R/2。
这是网络在拥塞情况下仍能保持一定有效吞吐量的机制所致。
场景2-3(Scenario 2-3)
🔗
现实情况:可能出现重复分组。
分组可能因路由器缓冲区已满而丢失,因此需要超时机制。
发送方过早超时,发送了两个副本,而两个副本都成功到达。
以R/2的速率发送时,部分分组属于重传,其中还包括已经成功交付的重复分组。
拥塞代价(Costs of Congestion)
🔗
更多工作
:拥塞造成丢包后,发送方必须重传,网络需要处理额外工作,意味着资源利用效率下降。
不必要的重传
:过早超时会让相同分组被多次发送,链路还要处理这些重复分组,浪费带宽。
有效吞吐量下降
:重复分组增加,实际有效传输速率,也就是goodput,会降低,进而影响整体网络性能。
场景3(Scenario 3)
🔗
条件
四个发送方,多跳路径。
存在超时与重传。
λ
i
n
\lambda_{in}
λ
in
表示原始数据,
λ
i
n
′
\lambda'_{in}
λ
in
′
表示重传数据。
问题:随着
λ
i
n
\lambda_{in}
λ
in
和
λ
i
n
′
\lambda'_{in}
λ
in
′
增加,会发生什么?
回答:
λ
i
n
′
\lambda'_{in}
λ
in
′
增加时,到达上方队列的新增分组全部被丢弃,其吞吐量接近0。
另一种拥塞代价(Another Cost of Congestion)
🔗
丢包
:网络拥塞使路由器缓冲区饱和时,部分分组被丢弃,降低数据传输可靠性,也明显降低通信效率。
拥塞控制的基本原则 | PromleeBlog