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队列,会尾部丢弃。

版权声明:本文为tmjblog原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/tmjblog/p/12650624.html