什么是拥塞控制算法?


当网络中存在过多数据包时,会导致数据包延迟和数据包丢失,从而降低系统性能。这种情况称为拥塞。

网络层和传输层共同负责处理拥塞。控制拥塞最有效的方法之一是尝试减少传输层对网络的负载。为维护这一点,网络层和传输层必须协同工作。

流量过大时,性能会急剧下降。

拥塞控制算法类型

下面解释了两种拥塞控制算法:

漏桶算法

它主要控制发送到网络的流量的总量和速率。

步骤 1 − 让我们想象一个底部有一个小孔的桶,向桶中倒水的速度并不恒定,可能会变化,但它以恒定的速度从桶中漏出。

步骤 2 − 因此(只要桶中有水),水的泄漏速度不取决于向桶中输入水的速度。

步骤 3 − 如果桶满了,额外进入桶中的水会溢出并丢失。

步骤 4 − 因此,同样的概念也适用于网络中的数据包。假设数据以可变速度从源发出。假设一个源以 10 Mbps 的速度发送数据 4 秒。然后 3 秒内没有数据。该源再次以 8 Mbps 的速度传输数据 2 秒。因此,在 8 秒的时间内,已传输 68 Mb 数据。

这就是为什么使用漏桶算法。数据流将是 8 Mbps 持续 9 秒。因此,保持恒定的流量。

令牌桶算法

令牌桶算法用于克服使用漏桶算法时遇到的问题。漏桶算法的主要问题是它无法控制突发数据,因为它只允许平均速率,即恒定的数据流速率,并且它也没有考虑主机的空闲时间。

步骤 1 − 例如,如果主机空闲了 12 秒,现在它愿意以非常高的速度发送数据另外 12 秒,则总数据传输将被分成 24 秒,并将保持平均数据速率。

步骤 2 − 主机无法利用空闲 12 秒的优势。因此,我们采用了令牌桶算法。

步骤 3 − 因此,令牌桶算法是对漏桶算法的修改,其中漏桶包含令牌。

步骤 4 − 在此,每当时钟滴答时都会生成一个或多个令牌。对于要传输的每个数据包,系统必须从桶中移除一个或多个令牌。因此,令牌桶算法允许空闲主机以令牌的形式为将来积累信用。

例如,如果系统在一个时钟滴答中生成 10 个令牌,而主机空闲了 10 个滴答。桶将包含 100 个令牌。现在,假设主机想要发送突发数据,它会一次性消耗所有 100 个令牌来发送 100 个单元或字节。因此,只要桶不为空,主机就能发送突发数据。

更新于:2021年9月11日

2K+ 浏览量

开启您的职业生涯

完成课程获得认证

开始学习
广告