什么是QoS
QoS(Quality of Service,服务质量),QoS有三种模型:尽力而为服务模型是网络的默认形态,严格意义上说并非QoS;综合服务模型,典型的是资源预留协议,通常用于给语音视频预留资源,需要协商,增加延迟,用的不多;区分服务模型,主要是标记和队列,标记就是为了做数据区分。
实现
CoS
二层的CoS,存在于帧里面。分为八个级别,级别的名字只是参考,级别的高低与否完全是自定义的,但是最好遵循0最低7最高的原则。
TOS
三层的ToS,存在于包中,分为两个标准,IP优先级和DSCP,其中IP优先级也是八个级别,和CoS一一对应,DSCP则是一种颗粒度更高的标记方式,一共64个级别。 标记的目的是为了分类,分类的目的是为了做队列,队列的方式有很多种。
先进先出队列
首先是先进先出队列,这是接口默认的工作状态,顾名思义,先进先出绝对公平,缺点是不能让领导先走,有没有特权都一样。WFQ加权公平队列,接口速率小于等于2M时候使用的默认队列,基本上现在不单独使用了,默认通过八个优先级来分配带宽,即把带宽分为36份,根据优先级按比例分配,优先级越高分配到的带宽越多,缺点是谁也别想吃满带宽。
PQ优先级队列
PQ优先级队列,我们使用最多的队列方式,通过high、medium、normal、low四个队列以保证高优先级队列的优先传输,优点就是绝对保证高优先级队列优先传输,保证高优先级队列不丢包,缺点就是高优先级队列数据传不完,低优先级队列也别想传数据。自定义队列,结合PQ和WFQ的特点,队列0为PQ的工作模式,绝对优先传输,其他16个队列根据带宽分配比例,以轮循的方式进行数据传输,优点是保证了关键业务获得优先传输,也避免了非关键业务饿死。
实时传输协议队列
实时传输协议队列,既基于RTP协议,用于解决对延时和丢包敏感的数据流,既然是RTP协议,就有端口号的限制,低延时队列类似于RTP,区别是LLQ并不受端口号的限制。
CBWFQ基于类的加强公平队列
CBWFQ基于类的加强公平队列,有RTP的情况下优先RTP传输,没有RTP的情况下LLQ优先传输,在有RTP的情况下是不能保证LLQ不丢包的,LLQ之下是64个BWQ和CQ工作方式类似,基于带宽分配轮循发送数据,没有标记的数据则进入默认的先进先出队列,优点是颗粒度精细,适合复杂环境,缺点就是配置复杂。
一个完整的QoS模型,数据进入设备以后,根据原地址,目的地址,原端口号,目的端口号,以及CoS、ToS标记来区分数据,数据进入流量整形,CAR是通过令牌筒工作来进行整形的,流量整形会进行丢包处理以避免拥塞,经过流量整形以后,进入WRED,再次进行流量整形,进行必要的丢包处理以避免拥塞,流量整形完毕,进入队列,根据队列的情况进行调度,调度过程中,会根据情况进行丢包,最终转发数据。队列的方式并不唯一,是可以互相嵌套使用的。