QOS服务质量
QOS是一套用于缓解流量拥塞的解决方案,但对于网络拥塞最直接最有效的方案是拓展带宽,本文主要讲解差分服务类型的QOS,想了解其他类型请移步其他文章
QOS服务模型
QOS服务模型分为三类,分别是Best-Effort Service尽力而为网络,Intergrated Service综合服务型网络,以及Differented Service区分服务型网络
这三大类中Best-Effort Service尽力而为网络即传统的网络,任何时候都不额外处理多余流量,直接丢弃超出带宽的流量
而Intergrated Service综合服务型网络是在发送报时需要向网络申请特定的服务,经过网络批准后才能发包,涉及到的协议有RSVP,但由于其实现方式太过复杂,应用范围不是很广
Differented Service区分服务型网络,此类型是本文的重点,其将流量先标记为不同的类型通过对不同类型进行服务等级映射,最后经过队列调度实现流量优化服务
QOS流程
其流程大致如下图
流量分类与标记
实现差分服务的第一步将流量进行分类与标记,只有给流量打上标记进行分类才能更好的实现流量优化,便于之后实现区分服务,流分类可根据不同报文的特性实现方式不同的流分类处理,比如Vlan报文可以基于802.1p区分流量,MPLS报文可基于MPLS EXP字段,IP报文可基于DSCP字段实现
简单流分类
Vlan
802.1p即vlan标签内的PRI字段,改字段取值范围0-7,通常用不同数值标识视频语音文本等不同流量

MPLS
MPLS报文内的EXP字段

IP
IP报文中的ToS字段拆分为IP-Precedence,改作用类似802.1p,用于区分标识流量是语音流量或者视频等流量,其共计8种流量类型
优先级6和7一般保留给网络控制数据使用,比如路由
优先级5推荐给语音数据使用
优先级4由视频会议和视频流使用
优先级3给语音控制数据使用
优先级1和2给数据业务使用
优先级0为缺省标记值
DSCP实际使用尾数6bit,取值0-63,用于标识流量优先级具体看下表
CSxy=x*8+2*y

服务等级
以上提到的三种标记叫做外部优先级,这三种外部优先级的关系如下

当报文进入设备内部,其外部优先级会被映射为内部优先级,其优先级由高到低依次为CS7,CS6,EF,AF4,AF3,AF2,AF1,BE,但是最终操作取决于调度方式,并不代表优先级低转发就一定滞后,除此之外设备内还有Color用于引导改报文是否丢弃,在DiffServ中,可能会出现红黄绿三种颜色,红色默认丢弃,绿色默认放行,黄色视情况而定,当然最终实现效果看调度措施


报文入设备将外部优先级映射为内部优先级,即进入设备的相关队列,在根据内部调度策略进行处理
报文出设备将内部优先级映射回外部优先级,转交给其他设备,默认情况下其他设备是不信任外部来的优先级,如果没有开启端口信任,改报文是不会进入相关队列的
复杂流分类
简单流分类仅仅能区分流量大类对于业务较多且类型重叠的流量而言,简单流分类无法很好缓解流量拥塞问题,于是可以根据五元组对相关流量进行匹配和优化管理,一般是在DS边界使用,通过MQC给对应流量打上优先级再将优先级传递给其他DS节点进行简单流分类
MQC
QOS的模块化配置,本文以华为为例
MQC组件分为Classifier,Behavior,Traffic Policy
Classifier流分类,匹配流量工具,可匹配ACL,IP prefix-list,DSCP优先级,协议号,端口号等
Behavior流行为,可修改流量相关操作,实现流量限速,修改DSCP优先级等操作
Traffic Policy流策略,将流分类与流行为进行绑定实现相关效果

流量限速
令牌桶
单速单桶
CIR承诺信息速率,单位kbps,定义向令牌桶注入令牌的速度
CBS承诺突发尺寸,单位byte,定义流量最大突发流量
初始情况下,Tc(桶的当前信令容量)=CBS,并且以CIR的速率向桶内灌输信令,当桶满时,信令将溢出丢弃不会超出CBS,在单速单桶中,令牌仅仅回出先两种颜色,其分别为红色和绿色,缺省情况下,流量大小大于等于Tc(桶的当前信令容量)会标记为绿色,并从桶内取走对应大小的信令,如果大于则会将流量标记为红色,Tc容量不变

单速双桶
EBS,峰值突发尺寸,单位byte,用于定义最大突发流量大小
新增E桶,E桶容量大于C桶,即EBS>CBS
初始情况下Tc=CBS,Te=EBS,信令会以CIR的速率灌入C桶,当C桶信令灌满时,信令溢出到E桶,当流量大小<=Tc时,流量标记为绿色,并在C桶取出对应大小的信令,当流量大小>Tc但<=Te时,流量将被染上黄色,并从E桶拿出对应大小的信令,当流量大小>Te时,流量被染为红色,桶容量不变

双速双桶
PIR,峰值信息速率,单位kbps,定义向令牌桶注入令牌的速度
PBS,峰值突发尺寸,单位byte,用于定义最大突发流量大小
初始情况下,Tp=PBS,Tc=CBS,每个桶之间没有信令交流,桶满则丢弃多余信令,通常情况下PBS>CBS,PIR>CIR,当流量大小小于Tc时,标记为绿色,并从两个桶中取走对应大小的信令,当流量大小大于Tc但小于等于Tp时,标记为黄色,从P桶取走对应大小的信令,如果流量大小大于Tp标记红色,不拿取两个桶的任何信令

流量监管Traffic Policing

将流量的最大值固定,当流量超限时,根据配置选择丢弃其他流量或者降低优先级转发
该功能通过CAR(Committed Access Rate(承诺访问速率))机制实现,CAR依靠令牌桶算法

该配置可以通过MQC用或者直接通过基于接口的流量监管实现,一般在接口入方向进行调用,高速进入低速,丢弃超限流量或者降低优先级,不需要额外内存缓存资源,不会带来抖动延迟,丢包可能触发重传,可触发重标记
流量整形Traffic Shaping
、
基于队列
通过令牌桶算法和缓冲区实现,其令牌桶仅仅采用单速单桶,绿色发送,红色将报文加入相关队列,并改队列设置为不可调度,等待信令填充或满足条件后才能再次调度,如果队列被占满,则丢弃相关报文

基于接口
相较于队列不区分优先级,各个队列共享缓存空间,超限时暂停调度,等待实际成熟再次调度

会缓存超出策略的协定的流量,因此需要占用一定的内存,可能导致一定的延迟与抖动,丢少量报导致重传,不能重标记
拥塞避免
Tail Drop尾丢弃
即传统型网络的作法,当队列长度到达最大值,后来的流量将被丢弃
缺陷
TCP全局同步
发生拥塞时,TCP的慢启动机制导致TCP流量集体下降,又在一定时间内回升,之后又因检测到拥塞集体下降,进而导致带宽利用率下降

无差别丢弃
没有办法区分流量重要性,当拥塞出现时没有办法实现部分流量优先
RED早期随机检测
随机丢弃,设置低门限和高门限,当队列长度小于低门限不会丢弃报文,当高于低门限而低于高门限时,丢弃概率开始上升,并随着队列变成而概率上升,当到达最大丢弃概率,即大于等于高门限时,采用尾丢弃

改进于不足
可缓解TCP全局同步问题,通过随机丢弃将TCP出现拥塞的时间变长,但无法对流量进行区分

WRED早期加权随机检测
通过对不同优先级的数据包或者队列进行对应设置实现区分丢弃,即共用高门限,但设置多个低门限,该技术能打乱TCP滑动窗口调整时间,解决了TCP全局同步问题,且拥有权重,实现区分流量

一般在接口出方向进行拥塞避免操作,目的依旧是高速网络进入低速网络而进行的适配
拥塞管理
拥塞管理的核心就是队列技术,通过对队列的配置实现流量差分服务
调度算法
FIFO
先进先出,能快速处理数据包,但无法区分于差别对待优先级不同的服务
SP
Strict Priority,严格按照优先级高低调度,高优先级发完再进行低优先级的转发,但容易出现低优先级饿死现象
WFQ
Weighted Fair Queuing,按照权重划分占用出口带宽,带宽分配更加公平,但依旧无法保障低延时流量能及时调度,其bit by bit实现较难
8端口队列3组
每个端口分为8个队列,即BE、AF1、AF2、AF3、AF4、EF、CS6和CS7,一般匹配优先级然后加入对应队列,当然也可通过配置修改对应关系
PQ
采用SP调度算法,当从队列调度报文时,先从高优先级的队列调度报文
WFQ
采用WFQ调度算法,是按权重进行调度的,调度算法可以是WFQ调度算法,按权重进行剩余带宽的分配
LQP
采用SP调度算法,仅在高速链路(以太网)接口上实现的队列调度机制,其发生拥塞避免时,不能抢占WFQ的带宽,在PQ和WFQ队列调度结束后,如果还有剩余带宽则分配给LPQ
调度顺序
PQ>WFQ>LPQ,优先保障PQ队列的带宽,再把剩余流量交个各WFQ队列划分,最后还有剩余带宽分配给LPQ

HQOS
解决多租户问题实现,HQoS基于队列实现层次化调度,支持三级队列:Level3流队列(Flow Queue)、Level2用户队列(Subscriber Queue)、Level1接口队列(Port Queue)
流队列
每个用户的同类业务可以被认为是一个业务流,HQoS能够针对每个用户的不同业务流进行队列调度,流队列一般与业务类型相对应,包括EF、AF、BE等,用户可以配置流队列的调度方式
用户队列
来自同一用户的所有业务可以被认为是一个用户队列,HQoS可以使该用户队列下的所有业务共享一个用户队列的带宽
接口队列
每个接口(子接口,Tunnel口等)一个队列,接口队列之间进行轮询调度(RR),用户仅可以配置基于接口的流量整形,且其调度方式不可配置

有点类似路由子接口
用父策略匹配用户,子策略匹配流量,然后父策略应用于接口,配置使用MQC配置实现嵌套分级控制

总结
QoS(服务质量)是网络差异化保障机制,核心解决带宽、时延、抖动、丢包问题。通过流量分类、标记、队列调度、速率控制(如 CAR),优先保障语音、视频等关键业务,合理分配资源,适配多业务混合传输场景
