Qos
Quality of Service,在带宽有限的情况下应用一个”有保证”的策略对流量进行管理,并实现不同的流量获得不同的优先服务。
基本职能:
- 分类和标识
- 拥塞管理
- 限速(监管、整形)
- 链路效率
22.1 基本概念
基本参数:
-
带宽(bandwidth)
木桶理论:最大带宽等于数据传输路径上的最小带宽。
-
时延(delay)
端到端传输所用的时间,等于所有传输时延、处理时延、串行化时延与队列时延之和。
队列时延指驻留在出方向队列的时间。
队列又分为软件队列和硬件队列(FIFO,先进先出)
-
抖动(jitter)
时延不平稳,不平均
-
丢包(drop)
任何情况下都有可能丢包
Qos的解决方案:
-
如何增加可用带宽和降低时延
- 优先传输重要的报文
- 压缩帧
- 压缩报头
- 队列
-
如何防止丢包
- 对丢包敏感的数据流提供足够的带宽(例如语音流量),采取队列机制
- 在拥塞发生之前提前丢弃一些不重要的数据包
22.2 服务模型
-
尽力而为模型
默认的,没有Qos保证
-
综合/集成服务模型
在发送报文之前需要向网络申请特定的服务,和RSVP(资源预留协议)联用。
很强,但实现复杂,应用率不高,且基于软件,本身没有Qos保证
-
区别/差分服务模型
通过报头的Qos信息将网络中的流量分成多个类,然后为每个类定义相应的行为。
目前应用最广的模型。
22.3 区别/差分服务模型
-
DS节点:实现DS功能的节点,只需根据DSCP进行转发。
DSCP:DiffServ Code Point,区分服务代码点。
3层IPv4头部有个Tos,其中前3位的IP优先级位,最高优先级是7,
前6位称为DSCP:
D位表示延迟(0代表正常延迟,1表示低延迟)
T位表示吞吐量(0表示正常吞吐量,1表示高吞吐量)
R位表示可靠性(0代表正常可靠性,1代表高可靠性)
C表示传输开销(0表示正常开销,1表示低开销)
一般C和最后一位一般不使用保留给网络控制信息
-
DS边界节点:对业务流进行分类和标记的路由器,与没有DS功能的域直接相连
-
DS域:由采用相同策略和PHB的相同节点组成
PHB(每一条行为),目前定义了4种分类:
Default PHB:默认行为,DSCP为000000
Class-Selector PHB:CS类选择行为,兼容IP优先级,DSCP的后三位为000
Expedited Forwarding PHB:EF快速转发,DSCP为101110 ,优先转发,超出管制流量的则丢弃
Assured Forwarding PHB:AF保证转发,DSCP格式为aaadd0,DD越大,丢弃的可能性越高
这只是分类,设备具体如何处理,要看后续的策略
22.4 流量监管
流量监管就是对流量进行控制。要实现流量的控制,就要有一种机制可以对设备的流量进行度量
22.4.1 令牌桶技术
系统按照设定好的速度向桶中放置令牌,令牌满了则溢出,不再增加。桶中令牌的数量作为转发报文的依据。
现在有两种常用标记算法:
- 单速率三色标记(单速双桶算法)算法,主要关注报文尺寸的突发。
- 双速率三色标记(双速双桶算法)算法,主要关注报文速率的突发。
两种算法都是为报文打上红、黄、绿三种颜色的标记,Qos根据颜色进行处理。
分为两种模式,色盲模式和色敏模式,接下来以色盲模式为例。
单速双筒
- CIR:承诺信息速率,表示向C桶中投放令牌的速率,即C桶允许传输或转发报文的平均速率
- CBS:承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量
- EBS:超额突发尺寸,表示E桶的容量,即E桶瞬间能够通过的超出突发流量,
用B表示到达报文的大小:
- 若B≤Tc,报文被标记为绿色,且Tc减少B;
- 若Tc<B≤Te,报文被标记为黄色,且Te减少B;
- 若Tc<B并且Te<B,报文被标记为红色,且Tc和Te都不减少。
双速双桶
- PIR:峰值信息速率,表示向P桶中投放令牌的速率,即P桶允许传输或转发报文的峰值速率,PIR大于CIR;
- CIR:承诺信息速率,表示向C桶中投放令牌的速率,即C桶允许传输或转发报文的平均速率;
- PBS(Peak Burst Size):峰值突发尺寸,表示P桶的容量,即P桶瞬间能够通过的峰值突发流量;
- CBS:承诺突发尺寸,表示C桶的容量,即C桶瞬间能够通过的承诺突发流量。
用B表示到达报文的大小:
- 若B>Tp,报文被标记为红色;
- 若Tc<B≤Tp,报文被标记为黄色,且Tp减少B;
- 若B≤Tp并且B≤Tc,报文被标记为绿色,且Tp和Tc都减少B。
色敏模式
色敏模式下,如果到达报文已被标记颜色,则遵循以下原则:
- 被标记为绿色,与色盲模式一致。
- 已被标记为黄色,则令牌桶根据报文长度和令牌数的大小,为符合流量规定的报文标记为黄色,为不符合的报文标记为红色。
- 被标记为红色,则令牌桶直接将到达报文标记为红色。
22.4.2 流量监管原理
-
Meter:通过令牌桶机制对网络流量进行度量,向Marker输出度量结果。
-
Marker:根据Meter的度量结果对报文进行染色,将报文染成green、yellow、red三种颜色。
-
Action:根据染色结果对报文进行动作,动作包括:
- pass:对测量结果为“符合”的报文继续转发。
- remark + pass:修改报文内部优先级后再转发。
- discard:对测量结果为“不符合”的报文进行丢弃。
默认情况下,green报文、yellow报文进行转发,red报文丢弃。
22.5 流量整形
流量整形是一种主动调整流量输出速率来限制流量与突发的措施,使报文以均匀的速率发送。
通常使用缓冲区和令牌桶来完成,当报文的发送速度过快时,首先在缓冲区进行缓存,在令牌桶的控制下,再均匀地发送被缓冲的报文。
当下游接口速率不确定时,上游设备无法确定整形参数,这时可以开启NQA检测,进行自适应流量整形。
22.6 拥塞避免
通过监视网络资源的使用情况,在发生拥塞或有产生趋势时主动丢弃报文。
根据情况可分为
-
尾部丢弃:队列满了则丢弃
-
WRED(加权随机先期检测):基于参数进行丢弃,可以为不同业务的报文指定不同的丢弃策略
WRED会为每个队列的长度设置阈值范围,
-
队列长度小于阈值下限时不丢弃报文,
-
上下限之间会为每个报文赋予一个随机数,并将此数与当前队列的丢弃概率比较,如果大于则丢弃。队列越长,报文被丢弃的概率越高。
-
队列长度大于阈值上限时丢弃所有新到的报文
-
22.7 拥塞管理
拥塞管理一般会采用队列技术,使用不同的调度算法。
设备上每个接口出方向都有4或8个队列,根据优先级和队列间的映射关系自动将分类后的报文流送各队列。
常见调度算法:
-
PQ
针对于关键业务类型应用设计,维护一个优先级递减的队列,只有高优先级的队列为空时才服务低优先级队列,可以使低延时业务及时调度。
缺点:使低优先级队列中的报文得不到调度机会
-
WRR
加权循环调度算法,在队列之间进行轮流调度,根据每个队列的权重来调度各队列中的报文流。
设备根据每个队列的权值进行轮循调度。调度一轮权值减一,权值减到零的队列不参加调度,当所有队列的权限减到0时,开始下一轮的调度。
缺点:只关心报文,同等调度机会下大报文获得的实际带宽要大于小报文获得的带宽,低延时需求业务得不到及时调度。
LAN口默认使用WRR。
-
DRR
在调度过程中考虑包长的因素以达到调度的速率公平性。
缺点:解决了WRR的报文问题,但低延时需求业务依然得不到及时调度。
-
WFQ
公平队列调度算法,尽量公平地分享网络资源,使所有流地延迟和抖动达到最优。
在报文入列之前对流量进行分类,有两种分类方式:
- 按报头中地信息分类:优先级越高,所得带宽越多
- 按优先级分类:通过优先级映射把流量标记为本地优先级,每个本地优先级对应一个队列号。每个接口预分配4或8个队列,报文根据队列号进入队列。默认情况,队列的WFQ权重相同,流量平均分配接口带宽。用户可配置权重。
缺点:低延时需求业务得不到优先调度。
WAN口默认使用WFQ。
-
PQ+WRR
-
PQ+DRR
-
PQ+WFQ
-
CBQ算法
基于类的加权公共队列,是对WFQ的扩展。
根据IP优先级或DSCP优先级、入接口、IP报文的五元组等规则来对报文进行分类,让不同类别的报文进入不同的队列。对于不匹配任何类别的报文,送入缺省类。
- EF:高优先级队列,优先调用,可以对应多类报文,不同类别的报文可设定占用不同的带宽,满足低时延需求。其中还有一种时延更低的队列-LLQ队列。
- AF:每个队列对应一类报文,用户可设置每类报文占用的带宽,满足需要关键数据业务。
- BE:一般是系统缺省类配置成BE队列,会尾部丢弃。