1、产生背景:
随着网络的不断发展,网络规模及流量类型的不断增加,使得互联网流量激增,产生网络拥塞,增加转发时延,严重时还会产生丢包,导致业务质量下降甚至不可用。所以,要在IP网络上开展这些实时与非实时业务,就必须解决网络拥塞问题,而解决网络拥塞的最直接的办法就是增加网络带宽,但从网络的建设成本考虑,这是不现实的。
QoS(Quality of Service)技术就是在这种背景下发展起来的。在带宽有限的情况下,该技术应用一个“有保证”的策略对网络流量进行管理,并实现不同的流量可以获得不同的优先服务。
2、服务模型:
①尽量而为:默认模型,使用先进先出的方式转发流量
②综合服务:资源预留,资源空闲时其他业务流量也不能使用(rsvp)
③区分服务:常用的qos模型,使用方式 标记---分类---差分服务。
3、QOS的流量分类
简单流分类:根据报文头部中的优先级字段,把外部优先级映射成内部优先级。
简单流分类是指采用简单的规则,如只根据IP报文的IP优先级或DSCP值、IPv6报文的TC值、MPLS报文的EXP域值、VLAN报文的802.1p值,对报文进行粗略的分类,以识别出具有不同优先级或服务等级特征的流量,实现外部优先级和内部优先级之间的映射。
Vlan报文的优先级字段:
MPLS报文的优先级字段:
IP报文的优先级字段:
ipp使用tos的前3bit ,取值范围为(0-8)
dscp使用tos的前6bit。取值范文为(0-64),前3bit代表优先级,后3bit代表延时、丢包、可靠性,越小越好。
CS6和CS7默认用于协议报文,而且是大多数厂商设备的硬件队列里最高优先级的报文,因为如果这些报文无法接收的话会引起协议中断。
EF常用于承载语音的流量,因为语音要求低延迟,低抖动,低丢包率,是仅次于协议报文的最重要的报文。
简单流分类在qos的映射表中进行配置:
System-view
qos map-table [ dot1p-dot1p | dot1p-dscp | dot1p-lp | dscp-dot1p | dscp-dscp | dscp-lp ] //进入优先级映射表视图
input [input-value1] output [output-value] //配置优先级映射表中的映射关系
display qos map-table [ dot1p-dot1p | dot1p-dscp | dot1p-lp | dscp-dot1p | dscp-dscp | dscp-lp ] //查看当前的各优先级间的映射关系。
使用简单流分类,设备会根据报文中的优先级字段以及映射的映射关系,将外部优先级映射到内部优先级,并且放入到相应的队列。
例如:流量外部优先级为DSCP 值为AF12 ,对应内部优先级应该为1 ,则进入 队列1 。
复杂流分类:根据报文中的优先级字段或者五元组信息,对流量进行分类,然后标记上对应的优先级。(使用MQC实现)
4、流量限速技术
① 流量监管
通过监控进入网络的某一流量的规格,限制它在一个允许的范围之内,若某个连接的报文流量过大,就丢弃报文,或重新设置该报文的优先级,以保护网络资源不受损害。流量监管可配置在设备的接口进出方向。
② 流量整形
是一种主动调整流量输出速率的措施。
通过在上游设备的接口出方向配置流量整形,将上游不规整的流量进行削峰填谷,输出一条比较平整的流量,从而解决下游设备的瞬时拥塞问题
流量监管和流量整形有什么区别?
使用流量监管当数据超过最大速率的时候对报文进行丢弃。使用流量整形当数据超过最大速率的时候,先对报文进行缓存,等到带宽足够的时候,通过相应的队列技术进行调度并且转发。
5、拥塞避免
当某一队列已经被装满时,传统的处理方法会将后续向该队列发送的报文全部丢弃,直至拥塞解除,这种处理方式称为尾丢弃(Tail Drop)。
尾丢弃导致问题:
(1)tcp全局同步:(不能充分利用全局带宽)
(2)TCP饿死现象(UDP没有和TCP一样的滑动窗口导致)
(3)无差别的丢弃
解决方法:
WRED :red是无差别服务的。wred技术可以通过对不同优先级数据包或队列设置相应的丢弃策略,以实现对不同流量进行区分丢弃。
6、拥塞管理
常见的拥塞管理:
① FIFO (先进先出)默认类型
② PQ (优先级队列):对高优先级报文进行优先转发,高优先级转发完后再转发低优先级报文,可能出现饿死现象。(紧急业务流量)
③ WRR(权重轮巡):避免了PQ调度的“饿死”现象。但是基于报文个数来调度,容易出现包长尺寸不同的报文出现不平等调度;低时延业务得不到及时调度。(简单的逐包数据)
④ DRR :
调度同样也是RR的扩展,相对于WRR来言,解决了WRR只关心报文,同等调度机会下大尺寸报文获得的实际带宽要大于小尺寸报文获得的带宽的问题,在调度过程中考虑包长的因素以达到调度的速率公平性。
⑤ WFQ(权重公平队列):
WFQ按流的优先级(precedence)来分配每个流应占有带宽。优先级的数值越小,所得的带宽越少。优先级的数值越大,所得的带宽越多。这种方式只有CBQ的default-class支持。(逐流的数据,报文类别较多)
⑥ CBQ :基于类的加权公平队列是对WFQ功能的扩展,为用户提供了自定义类的支持。CBQ首先根据IP优先级或者DSCP优先级、入接口、IP报文的五元组等规则来对报文进行分类,然后让不同类别的报文进入不同的队列。对于不匹配任何类别的报文,会送入系统定义的缺省类。
CBQ 提供三类队列:
EF 队列(Expedited Forwarding):满足低时延业务。
EF 队列拥有绝对优先级,采用 PQ 调度机制,仅当 EF 队列中的报文调度完毕后,才会
调度其他队列中 的报文。所以配置其带宽为最大带宽。
还有一个特殊的 EF 队列 LLQ 队列(Low delay queue)、AF 队列(Assured
Forwarding):满足需要带宽保证的关键数据业务。使用 WRR 的调度机制,每个 AF 队
列分别对应一类报文,用户可以设定每类报文占用的带宽。当系统调度报文出队的时候,会按用户为各类报文设定的带宽将报文进行出队发送, 可实现各个类的队列的公平
调度。配置其带宽为最小带宽。
BE 队列(Best-Effort):满足不需要严格 QoS 保证的尽力发送业务。当报文不匹配用
户设定的所有类别时,报文会被送入系统定义的缺省 BE(Best Effort, 尽力传送)
类。BE 队列使用接口剩余带宽和 WFQ 调度方式进行发送。配置方法:使用 MQC 来配置
QOS的数据处理流程