网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

路由器中的被动队列管理

更新时间:2026年03月27日   作者:spoto   标签(Tag):

拥塞现象发生在数据包的到达速率大于数据包的转发速度时。路由器具有输入端口和输出端口,因此,拥塞可能发生在任何端口上,具体取决于交换结构的传输速度。

输入端口的拥塞情况

假设该路由器有 N 个输入端口和 N 个输出端口。 如果交换 fabrics 的速度小于数据包到达输入端口速度的五次方,那么就会发生拥塞现象。 假设在某一单位时间内,有1个数据包被发送到每个输入端口。 在一个单位时间内,有N个数据包到达输入端口。 切换网络的速度远远低于每单位时间能够处理的N个数据包的数量,因此,这些到达输入端口的数据包将无法被转发到输出端口。 也就是说,交换结构会处理N/2个数据包,而剩下的N/2个数据包则被排队在输入端口中。 如果这些数据包持续不断地到达输入端口,那么很快,输入端口的缓冲区就会充满,从而导致拥塞状态的出现。此时,数据包就会被丢弃。

输入端口的拥塞情况

输出端口的拥塞情况

假设,切换 fabrics 的速度为单位时间内可以处理 N 个数据包。 在最糟糕的情况下,有 N 个数据包同时到达输入端口。此时,交换结构会处理这些数据包,并在每单位时间内将所有这些数据包转发到输出端口。 因此,输入端口处不会出现拥堵的情况。 需要注意的是,每个输入端口并不是直接连接到某个输出端口的。 如果有多条数据包都指向同一个输出端口,那么该输出端口就会出现拥塞现象。 假设所有N个数据包都 destinatd到输出端口1。那么,在某一单位时间内,输出端口会传输1个数据包,而剩下的n-1个数据包则会被放入缓冲区中。 再次,会有 n 个数据包被发送到同一个输出端口-1。此时,系统会再次将 n-1 个数据包放入队列中,然后只传输 1 个数据包。 很快,缓冲区就会充满,此时就会出现数据包丢失的情况。这就是输出端口处的拥塞状态。

输出端口的拥塞情况

队列管理算法

队列管理也被称为队列纪律管理。它可以分为两种类型。

  1. 被动队列管理(例如,FIFO)
  2. 主动队列管理技术(例如,随机早期检测)

被动队列管理算法属于反应性算法,也就是说,它们是在队列已满之后才开始工作的。这类算法的实施相对简单。而主动队列管理算法则属于预防性算法,它们是在队列未满之前就开始工作的。这类算法的实施难度较大,但一旦部署成功,就能提供良好的队列控制效果。

被动队列管理

丢弃尾部数据

它会将数据包从队列的“尾部”移除。当队列已满且仍有数据包不断到达时,这些新到达的数据包就会被丢弃,因为队列中已经没有空间可以容纳它们了。由于数据包是从队列的尾部被移除的,因此这种机制被称为“Drop Tail”。它的运作方式类似于一个简单的FIFO队列:先到达的数据包会被放入队列中,而后来到达的数据包则会被丢弃。

尾随/跟踪

2. DropHead

它会从队列的“头部”开始移除数据包。当队列已满,但仍有数据包不断到达时,它就会继续从队列的头部移除数据包,从而为新到达的数据包腾出空间。这其实也是一种处理方式而已。前倾式设计。DropHead能够确保公平性。像比特流这样的长时传输方式会占用大部分带宽,而其他应用程序的运行速度也会因此变慢。那些需要长时间传输的数据包会继续不断填充缓冲区,而短时的数据传输则会被DropTail丢弃。不过,DropHead会通过丢弃那些长时传输的数据包来为短时数据传输腾出空间,从而确保短时数据传输也能得到公平的对待。

落头式

3. 随机掉落

顾名思义,它从队列中的随机位置开始发送数据包。 生成一个随机数,然后丢弃该索引所对应的数据包。 这样,每个数据包都有机会留在队列中。 问题:使用“随机掉落”方式的优点是什么?如果我们从头部开始掉落数据包,那么就会影响到那些持续流动的数据流。 如果我们从尾部丢弃这些数据包,那么就会影响到那些需要实时处理的数据流。 因此,为了公平对待这两种类型的流量,我们会随机选择一个数据包并将其丢弃。 让命运来决定,究竟哪一份数据包会被丢弃,而哪条数据流会受到影响。

随机掉落物

PQM算法的局限性

PQM存在许多局限性。它无法有效控制拥塞情况。此外,它还无法处理数据包丢失的问题。当情况变得严重时,它才会开始发挥作用。由于它的作用是主动的,因此也带来了一些缺点。下面列出了三个主要的缺点。

全球同步

假设有多个 TCP流在不同的时间开始传输数据,具体来说,这些时间的点分别是:0秒、5秒和15秒。 所有这些流程都始于一个缓慢的启动算法,以便处理可能出现的拥塞情况。 所有TCP连接的拥塞窗口大小都会因“慢启动”机制而增大。 DropTail会导致所有流中的许多数据包同时被丢弃。 DropTail对所有流量都一视同仁,不会给予任何流量特殊的待遇。 当DropTail处理完每个流的数据包后,TCP流也会同时减少其拥塞窗口。此时,所有流的数据都被同步处理了,这是第一次实现所有流的同步。 随后,所有TCP流同时增加其拥塞窗口大小(即,它们同步地调整了自己的拥塞窗口)。 当所有流同时将其传输速率降低一半时,它们并没有充分利用带宽资源。因此,这种情况属于带宽的未充分利用。 同样地,当所有流的cwnd都增加时,就会出现过度利用的情况。 经常出现链接被“过度使用”或“未充分利用”的情况。 这会导致抖动(即延迟的变化)。

2. 锁定/禁止操作

DropTail允许某些流量占据队列中的空间。这些流量通常属于持续性流量,也就是所谓的“大流量”。而短时间的流量则因为被持续性流量大量占用而无法在队列中获得足够的空间。因此,那些短时间的流量的数据包就会被丢弃。这种现象被称为“DropTail现象”。“锁住”需要注意的是,DropHead虽然可以解决这个问题,但并不能完全解决所有问题。DropHead会将数据包从队列的头部开始发送出去,同时只允许一个短周期的数据流进入队列。不过,DropHead所占用的空间其实非常少,远远小于队列的总容量。不过,大部分的空间仍然被那些长周期的数据流所占用。由于短周期的数据流在队列中无法获得足够的空间,它们的数据包就会不断被丢弃,这就被称为“锁定现象”。

3. 缓冲延迟/缓冲效应

内存的价格已经大幅下降。这个问题在以前也存在过,但由于内存的容量和价格的原因,这个问题并没有变得严重。在2005年时,最大RAM容量为256MB,而如今则至少为8GB。因此,缓冲能力得到了提升。不过,过度的缓冲会导致“排队延迟”问题严重化。有报道称,有时排队延迟甚至会达到如此程度,以至于TCP的RTO时间也会失效!对于需要实时处理的应用程序来说,缓冲问题带来的影响最为严重。

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料