QoS(服务质量)用于为不同的流量提供不同的优先级,以控制延迟和抖动,并降低丢包率。当网络过载或拥塞时,QoS可以确保关键业务流量的正常传输,QoS(服务质量)不是一个技术,是多个技术的组合。
(资料图片)
QoS是用于控制网络中的带宽,延迟,抖动和数据包丢失的技术的组合。所有QoS机制均设计为影响至少一个或所有上述功能。
影响网络质量的四个主要因素包括:
带宽:网络最熟悉的因素是带宽,它是网络链路上可用容量的度量,即链路的宽度。通常以每秒位数(bps)为单位。
延迟:也称为延迟,延迟处理的是数据包从发送方到接收方所花费的时间。当然,延迟越大,网络“似乎”就越慢。延迟通常以毫秒(ms)为单位。
抖动:这是数据包之间延迟变化的一种度量。例如,如果一个数据包从A点到达B点需要30ms(即延迟),而另一个数据包从同一点A到达B点则需要40ms,则抖动为10ms(即40ms – 30ms)。
丢包:当数据包通过网络“飞行”时,其中一些可能会丢失,即无法到达目的地。
Classification and marking mechanisms 分类和标记机制
Policing and shaping mechanisms 监管和整形机制
Congestion management mechanism 拥塞管理机制
Congestion avoidance mechanism 拥塞避免机制
从入口接口进入系统后,对数据包进行分类和标记。在此过程中,监管机制将丢弃某些数据包。然后,将根据其标记再次对数据包进行分类。拥塞管理和拥塞避免机制为不同类型的数据包赋予不同的优先级,以便在网络拥塞的情况下,具有较高优先级的数据包可以更早地通过网关。最后,系统将从出口接口发送经过QoS机制处理过的数据包。
拥塞管理
• First-In-First-Out (FIFO)
• Priority Queuing (PQ)
• Custom Queuing (CQ)
• Weighted Fair Queuing (WFQ)
• Class-Based Weighted Fair Queuing (CBWFQ)
• Low-Latency Queuing (LLQ)
1、FlFO(先进现出队列)
先进先出队列(First In First Out Queuing,简称FIFO)不对报文进行分类,当报文进入接口的速度大于接口能发送的速度时,FIFO按报文到达接口的先后顺序让报文进入队列,同时,FIFO在队列的出口让报文按进队的顺序出队,先进的报文将先出队,后进的报文将后出队。
2、PQ (优先队列)----低优先级可能会“饿死”
PQ使用了4个子队列,优先级分别是high,medium,normal,low。PQ会先服务高优先级的子队列,若高优先级子队列里没有数据后,再服务中等优先级子队列,依次类推。
如果PQ正在服务中等优先级子队列,但是高优先级里又来了数据包,则PQ会中断中等优先级子队列的服务,转而服务高优先级子队列。每一个子队列都有一个最大队列深度(queue-size),如果达到了最大队列深度,则进行尾丢弃。
3、CQ(用户自定义队列)---不同优先级获得不同的带宽---避免低优先级“饿死”
CQ最多可包含16个组(即group-number的取值范围为1~16),在每个组中指明了什么样的数据包进入什么样的队列、各队列的长度和每次轮询各队列所能连续发送的字节数等信息。CQ对报文进行分类,将所有报文分成最多至17类,分别属于CQ的17个队列中的一个,然后,按报文的类别将报文进入相应的队列。
CQ的17个队列中,0号队列是PQ队列,路由器总是先把0号队列中的报文发送完,然后才处理1到16队列中的报文,所以0号队列一般作为系统队列把实时性要求高的交互式协议报文放到0号队列。1到16号队列可以按用户的定义分配它们能占用接口带宽的比例,在报文出队的时候,CQ按定义的带宽比例分别从1到16号队列中取一定量的报文在接口上发送出去。其中,按带宽比例分别发送的实现过程是这样的,16个普通队列采用轮询的方式进行调度,当调度到某一个队列时,从这个队列取出一定字节数的报文发送,用户通过指定这个字节数,就可以控制不同队列之间的带宽分配比例。
4、WFQ(加权公平队列)---相比于CQ不用手工分类
WFQ是一个复杂的排队过程,可以保证相同优先级业务间公平,不同优先级业务间加权。队列的数目可预先配置,范围是(16-4096)。
WFQ,在保证公平(带宽、延迟)的基础上体现权值,权值大小依赖于JP报文头中携带的IP优先级(Precedence)。WFQ对报文按流进行分类(相同源IP地址,目的IP地址,源端口号,日的端口号,协议号,Precedence的报文属于同一个流),每一个流被分配到一个队列,该过程称为散列。WFQ入队过程采用HASH算法来自动完成,尽量将不同的流分入不同的队列。在出队的时候,WFQ按流的优先级(precedence)来分配每个流应占有出口的带宽。优先级的数值越小,所得的带宽越少。优先级的数值越大,所得的带宽越多。这样就保证了相同优先级业务之间的公平,体现了不同优先级业务之间的权值。
5、CBWFQ(基于类的加权公平队列)
CBWFQ通常使用ACL定义数据流类别,并将注入宽带和队列限制等参数应用于这些类别。CBWFQ是网络中的一个队列配置方案,其允许通信基于标准分类,例如访问控制列表,输入界面名,协议和服务质量(QoS)标志。CBWFQ扩展了加权公平队列WFQ功能的标准来提供自定义通信类型支持。
6、LLQ(低延迟队列)
LLQ为基于类别的加权公平排队(CBWFQ)提供绝对优先排队功能,减少了语音会话的抖动。LLQ相当于CBWFQ加上一个严格优先级队列,该队列优先级高于其他所有队列,非常适合时延敏感性应用。LLQ的严格优先级队列是一个有最小保证带宽的优先级队列,出现拥塞时,该队列的数据量不能超过所允许的带宽,否则会被丢弃。
LLQ具有CBWFQ的所有优点,包括自定义流量类别,为每种类别的流量提供带宽保证,并且可以在所有类别的队列上应用WRED。(严格优先级队列除外)
对于LLQ和CBWFQ来说,任何没有被显示分类的流量都被认为class-default流量,可以将class-default流量类别队列由FIFO改为WFQ,需要时也可以用WRED。
LLQ最大优势是可以为时延和抖动敏感型应用的流量提供一个或多个有带宽保证的严格优先级队列,LLQ并不局限于特定平台或传输介质。