首页 百科知识 拥塞控制机制

拥塞控制机制

时间:2022-10-01 百科知识 版权反馈
【摘要】:网络的吞吐量与通信子网负荷有着密切的关系。当拥塞比较严重时,通信子网中相当多的传输能力和节点缓冲器都用于这种无谓的重传,从而使通信子网的有效吞吐量下降。由此引起恶性循环,使得通信子网的局部甚至全部处于死锁状态,最终导致网络有效吞吐量接近零。此时,设定“拥塞窗口”大小为“阈值”。每次成功的传输之后,“拥塞窗口”大小均将按指数级增大,直到发生超时或者“拥塞窗口”大小达到“阈值”。

网络的吞吐量与通信子网负荷(即通信子网中正在传输的分组数)有着密切的关系。当通信子网负荷比较小时,网络的吞吐量(分组数/s)随网络负荷(每个节点中分组的平均数)的增加而线性增加。当网络负荷增加到某一值后,若网络吞吐量反而下降,则表征网络中出现了拥塞现象。在一个出现拥塞现象的网络中,到达某个节点的分组将会遇到无缓冲区可用的情况,从而使这些分组不得不由前一节点重传,或者需要由源节点或源端系统重传。当拥塞比较严重时,通信子网中相当多的传输能力和节点缓冲器都用于这种无谓的重传,从而使通信子网的有效吞吐量下降。由此引起恶性循环,使得通信子网的局部甚至全部处于死锁状态,最终导致网络有效吞吐量接近零。

针对网络拥塞的现象与问题,网络层提供了多种拥塞控制策略(如:开环策略和闭环策略等)与流量控制策略(如:漏桶策略和令牌桶策略等),为了进一步有效减少网络拥塞现象的发生,传输侧也提供了一系列的拥塞控制策略,其中最具代表性的为V. Jacobson在1988年提出的“慢启动(Slow Start)”算法,其具体实现步骤主要如下:

步骤1:当一个TCP连接建立起来的时候,发送方将“拥塞窗口”大小设置为该连接上当前使用的最大TPDU的长度。然后,发送一个TPDU。

步骤2:若该TPDU在定时器超时之前被确认,则将“拥塞窗口”大小按照指数级增大。

步骤3:每次成功的传输之后,“拥塞窗口”大小均将按照指数级增大,直到发生超时或者“拥塞窗口”达到“接收方窗口”的大小。此时,设定“拥塞窗口”大小为“阈值”。

步骤4:当“拥塞窗口”达到“接收方窗口”的大小之后,“拥塞窗口”不再增大。

步骤5:当发生超时,将“阈值”减半,而“拥塞窗口”大小重新置为该连接上当前使用的最大TPDU的长度。

步骤6:若该TPDU在定时器超时之前被确认,则将“拥塞窗口”大小按照指数级增大。每次成功的传输之后,“拥塞窗口”大小均将按指数级增大,直到发生超时或者“拥塞窗口”大小达到“阈值”。

步骤6.1:若发生超时,此时,设定“拥塞窗口”大小为“阈值”,转步骤5。

步骤6.2:当“拥塞窗口”大小达到“阈值”后,每次成功的传输将使得“拥塞窗口”大小按照线性增大,直到发生超时或者“拥塞窗口”达到“接收窗口”的大小。

(1)若发生超时,此时,设定“拥塞窗口”大小为“阈值”,转步骤5。

(2)若“拥塞窗口”达到“接收窗口”的大小,此时,设定“拥塞窗口”大小为“阈值”,转步骤4。

图5.16给出了一个慢启动算法的示例,其中,假设初始“拥塞窗口”与“阈值”大小为32,第一次超时后,“阈值”将变为16(SST1=16)。依据步骤6可知,“拥塞窗口”将从1按指数级增长到16,然后“拥塞窗口”将开始按照线性进行增长,直到(当“拥塞窗口”线性增大到24时)发生超时。依据步骤6.1可知,“阈值”将变为12(SST2=12,即24的一半),同时,“拥塞窗口”将再次从1开始按指数级增长到12,“拥塞窗口”将开始按照线性再继续增长。

图5.16 慢启动算法的示例

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈