今天给大家讲解QoS中队列机制,本文主要讲解路由器内部的转发设计和队列的基本概念,主要面向0基础读者,力图使用最简单形象的语言描述QoS中队列的概念以及为什么要引入队列。本文可以看做是QoS的基础课程。
一、什么是网络拥塞
在计算机网络设备中,当数据包的流量超出端口的最大带宽后,会发生网络拥塞,常见的网络拥塞场景如下图所示:
在上图中,红色表示数据包流量,在图一中,R1和R2的数据流量都发往R3,并且假设所有的数据都要从R3的G0/0/2口发送出去,此时两个接口的收到的流量综合超过了R3的G0/0/2口的带宽,因此会发生拥塞。而在图二中,与R1与R2相连的接口是G0/0/1,R1与R3相连的接口是E0/0/1,此时若数据流量为R2——R1——R3,则因为R1与R3相连接口带宽较小,因此在该接口上也会发生拥塞。
二、什么是队列
QoS的本质就是在接口上对不同的流量提供不同的调度,而调度的对象就是队列。简单来看,当网络发生拥塞时,网络设备中的数据包一时无法全部转发完毕,此时有一部分来不及转发的数据包就会存储在网络设备的内存中,而为了使得网络设备能够合理的管控这些数据包,因此引入了队列的数据结构。
一般而言,队列即一系列的指针。队列中存放的就是数据包在网络设备内存中存放的位置,因此队列中的数据包大小本身不会影响队列的长度,也不会影响队列中可以排入的数据包数量。每个队列可以排列10个1500字节的数据包,就像排列10个64自己的数据包一样。也因此队列的单位通常是报文个数而不是报文字节数。
三、网络设备中的硬件队列和软件队列
在网络设备的出接口处,一般由一个最基本的队列,该队列以FIFO(First IN First Out)的方式调度,我们把该队列放入硬件队列。在硬件队列之前,为了实现QoS,实现对网络流量的管理以及对网络流量带宽、延时、抖动和丢包的参数的控制,网络设备在硬件队列前面还有一个软件队列。网络设备在处理数据包时,将数据包存储在内存中,当网络设备计算出该数据包的转发接口后,如果发现接口繁忙,就会把该数据包存放在内存中,同时等待接口的状态变为可用。
为了管理这些被保留在内存中的等待发送的数据包,网络设备才有了队列机制,仅负责管理等待发送的数据。网络设备中的硬件队列和软件队列如下图所示:
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200/article/details/118737621