华为HCIE课堂笔记第十六章 Qos基本原理

第十六章 Qos基本原理

16.1 Qos背景

Qos:在带宽有限的情况下,为不同的业务需求,提供不同的网络的服务质量。

影响Qos的不同的因素:

  1. 带宽,链路在单位时间可以传输数据的bit数量,单位bps
    1. 一般上传下载速度为带宽/8,即100M带宽显示速度理论值12.5MB/s
  2. 延迟:报文从一端发出,从另一端接受到经过的时间
    1. 处理时间:设备对报文查表等处理的时间
    2. 队列时延:报文在出口队列中等待发送的时间
    3. 串行化时延:报文形成bit流,从接口发出时,第一个bit到最后bit发完总共需要的时间。
    4. 传输时延:报文在介质上传输的时间。
  3. 丢包率:数据包转发过程中出现丢弃的概率
  4. 抖动:网络传输数据包,接收端接收报文存在顺序不一致的情况,变化较大,则认为抖动比较明显。
  5. 可用性:网络是否可用。

16.2 Qos技术

16.2.1 服务模型

  1. 尽力而为模型:数据转发过程中没有服务质量相关的部署,所有的报文按照先后顺序进行转发,不提供质量保障。
  2. 综合服务模型:
    1. 应用转发数据包的之前需要申请带宽预留,申请的带宽预留除自己可用,其他应用不能使用
    2. 部署非常复杂
  3. 区分服务模型:Qos,通过对报文进行分类,对每一类的报文进行标记,根据标记实现对不同类的报文提供不同的服务质量,时延,丢包率,优先转发。
    1. DS边缘节点:区分服务域边缘节点,区分服务域有一系列Qos设备组成
    2. 实现方式:
      1. DS边缘设备的入接口进行流量分类,给不同类的流量打上不同的标记。
      2. DS节点的入接口信任该标记类型,后续DS域中按照该标记为流量提供服务质量。

16.2.2 Qos的常用技术

  1. 限速技术
  2. 拥塞管理技术
  3. 拥塞避免技术

16.3 流量分类

16.3.1 简单流分类

  1. 概念:

外部优先级:指报文携带的优先级值

内部优先级:报文在设备内的服务等级

  1. 两个优先级,可以通过修改映射表进行调整,不同的外部优先级报文,可以指定进入设备后的内部优先级
  2. 接口队列:传统Qos接口存在8个队列,内部优先级与队列编号一一映射,内部优先级7的报文对应队列7号,不可以修改改映射关系。
  1. 外部优先级:报文中携带的标记
    1. VLAN 字段中的PRI:取值范围是0-7,名字802.1p
    2. MPLS 头部中的EXP:取值范围是0-7
    3. IP头部中的Tos字段(8bit):两种不互斥的
      1. 标记方式1:IP-P,占用3bit,表示范围0-7,高3bit位
      2. 标记方式2:DSCP值,占用6bit,表示范围0-63,高6bit位
  1. DSCP值标记:数字和名字表示方式
    1. 定义了4个PHB(每一跳动作):CS(类选择器),EF(快速转发),AF(确保转发),BE(尽力而为)
    2. AF11、AF12、AF13、AF21到AF43,AF对应的DSCP值的映射关系是AFXY值=DSCP值8x+2y
    3. CSx值=DSCP值(8x)
  2. 总结:简单流分类是按照报文已有的标记对报文进行Qos处理

16.3.2 复杂流分类

在DS边缘设备的入方向上,通过数据报文的五元组,采用MQC模块配置,实现对报文的重标记,或者其他的Qos处理。后续DS域中的节点可以根据重标记后的报文标记值进行简单流分类。

为什么没有EXP-DSCP

16.4 拥塞管理

拥塞管理:网络发生拥塞的时候,对流进行管理和控制,采用队列技术。

16.4.1 队列技术

  1. 队列技术:通过一定的调度算法,从队列中提取数据报文给出接口进行转发
    1. Qos Q-profile 传统的Qos工具,对应的下行出口存在8个队列(0-7号队列)
    2. CBQ队列,华为设备支持的自行开发的队列,4个队列(AF、EF/LLQ、BE)
  2. 队列调度算法:
    1. FIFO:先进先出算法,在队列内,收到的报文,按照谁先到,谁先出的原则,发送
    2. SP:严格优先级算法,在队列间进行报文调度的时候,按照队列的优先级严格调度。如:7,6,5三个队列采用SP算法,则优先调度优先级最高的7号队列,7号队列发送完毕在调度6队列,6号发送完毕调度5号队列,如果5号队列正在调度,7号队列有报文进入,则重新调度7号队列。时时刻刻调度最高优先级的队列。
      1. 缺点:低优先级队列可能出现"饿死"现象,不能得到及时调度。
    3. WFQ:加权公平队列,在队列间的报文调度的时候,按照队列配置的加权值,进行报文调度,权值越大,队列调度的机会越大(占用的带宽就越大)。
      1. 缺点:低延时的报文不能保证低延迟(绝对优先级的报文得立即调度)
    4. 调度算法组合:SP+WFQ,6,7号队列是SP算法,0-5号是WFQ算法
      1. 此时6,7号队列拥有绝对优先级的调度机会,6,7号队列中不存在报文的时候,才会按照WFQ算法调度剩余的0-5号队列。
        1. SP算法的队列中经常给到占用带宽不大(绝对优先级,会抢占其他队列带宽),要求延时小(立即调度,减少时延)的业务使用。
        2. WFQ算法的队列用途:保证业务带宽,给到业务带宽比较大的业务使用。
  3. 调度方式:传统Qos接口的软件队列0-8队列,可以加入到以下三种队列(组)中,进行Qos的报文调度。
    1. PQ队列(组),采用的SP调度算法,PQ队列中可以存在多个软件队列,按照严格优先级进行调度。
    2. WFQ队列(组),采用WRR、WDRR、WFQ算法(都是存在加权值,按照加权值分配带宽),WFQ队列中可以存在多个软件队列,多个软件对垒按照WFQ算法进行调度。
    3. LPQ队列(组),采用SP调度算法,LPQ队列也可以存在多个软件队列,按照SP算法,调度组内不同队列中的报文。
    4. PQ和LPQ都是采用SP算法,不同点是LPQ拥塞时不能抢占带宽。
    5. PQ、WFQ、LPQ队列(组)之间的调度算法采用SP算法:先调度PQ队列,再调度WFQ队列、最后调度LPQ
      1. PQ多用于将语音等低延迟,低带宽的流量加入到该队列(组)中
      2. WFQ多使用与需要带宽保障,确保转发的的业务报文加入到该队列(组)中
      3. LPQ队列用于BE的流量加入,当PQ和WFQ带宽分配存在空闲带宽,则交给LPQ调度BE的流量。

16.4.2 拥塞管理配置

  1. 基于队列技术的拥塞管理(传统的Qos)
    1. DS边缘设备配置复杂流分类对流量进行分类并重标记
    2. DS设备根据DSCP进行Qos部署(简单流分类)
      1. 入接口需要配置信任DSCP值,对应的DSCP值的报文才会进入到对应LP的队列中。
      2. 如果需要调整报文进入到对应的队列,则需要调整DSCP值与本地优先级的映射关系。
    3. DS设备上配置Qos-Queue-profile工具,将对应的队列加入到PQ、WFQ、LPQ中,WFQ队列需要配置权重值分摊带宽,在出接口上调用该工具。实现报文的差分服务
  2. 基于MQC的拥塞管理
    1. 队列:
      1. EF/LLQ队列:适用于语音等低延迟低带宽要求的流分类。LLQ比EF具有跟小的带宽,当链路拥塞的时候,EF可以抢占空闲带宽。该队列优先级最高,需要配置最大的指定带宽。类似传统Qos 的PQ队列
      2. AF队列:适用于大带宽保证转发的业务。AF队列中可以包含多个类,每个类中可以配置指定的最小带宽,保证业务转发的带宽。
      3. BE队列:不满足所有其他的分类的流量归于该默认类,可以将默认类设置为AF队列,也可以将默认的BE队列。BE队列采用WFQ调度算法。
    2. 配置:
      1. 流分类对报文进行分类,流行为指定分类后的报文的队列,流策略绑定流分类和流行为
      2. 参考命令:带宽设置有两种,绝对值和空闲带宽百分比

traffic behavior OA

queue llq bandwidth 30 //在流行为视图下,配置与该行为绑定的流量分类加入到LLQ队列(EF),设置最大带宽30kbit/s

traffic behavior FTP

queue af bandwidth pct 10 //在流行为视图下,配置与该行为绑定的流量分类加入到AF队列中,设置最小带宽保障业务带宽需求。

traffic policy Qos

classifier default-class behavior def //在流策略的视图下,设置默认的分类(系统原有匹配所有缺省类)与行为绑定(类名字def是用户自定义,且设置队列为WFQ(BE队列))

16.5 拥塞避免

16.5.1 拥塞产生的原因:

  1. 带宽不匹配,发送报文方的带宽,链路的带宽减小,导致出接口无法及时发送高速接受到的报文。
  2. 接口带宽已知,但是流量都汇聚到一个接口发出(内网出口),收到的报文的数量所需带宽要大于出接口的带宽,

16.5.2 拥塞产生后的影响

  1. 丢弃策略:
    1. 尾丢弃:如果没有配置早期随机检测,则当网络出现拥塞,队列缓存已满,则接收的报文将在进入队列前全部丢弃。
      1. TCP全局同步:当拥塞发生,TCP所有的连接,将同时降低滑动窗口字段的值,控制TCP的传输速度,网络不在拥塞,TCP连接进入慢启动过程,逐步提高TCP连接的报文传输速度,循环往复。该过程中,会造成TCP的所有连接传输报文的速度同步升高,同步降低,造成链路资源浪费。
      2. TCP连接"饿死"现象:拥塞发生TCP降低连接的速度,此时UDP报文没有传输速度控制机制,UDP则利用TCP让出来带宽,再次造成网络拥塞,TCP会再一次降低连接速度,UDP再次占用,循环往复,造成TCP连接"饿死"现象。
      3. 无差别丢弃:超出队列缓存的报文进行无差别丢弃,不区分报文的优先级。
    2. RED:当网络趋向于拥塞的时候,可以使用RED(早期随机检测)提前丢弃报文,延缓网络出现拥塞
      1. 队列长度到达低门限的时候,开始随机丢弃报文,到达高门限,则执行尾丢弃,从而延缓了TCP的全局同步(随机丢弃的报文中,属于不同的TCP连接,TCP连接的速度不会同时到达最大)
    3. WRED:根据报文的优先级,在拥塞发生之前,提前对报文进行有差别的丢弃。
      1. 按照报文优先级或者队列优先级,分别设置低门限,高门限,某队列长度到达低门限,则开始丢弃。高优先级报文(队列)低门限设置的更高,使得高优先级报文晚于低优先级报文丢弃的时间。避免TCP同步
  2. 拥塞避免配置方式:两种
    1. 基于Qos丢弃模版配置
      1. 参考命令见PPT
    2. 基于MQC配置
      1. 参考命令见PPT

16.6 限速

16.6.1 令牌桶技术

  1. 单桶单速双色标记法:C桶(单桶)
    1. 概念:
      1. CIR:承诺信息速率,向令牌桶中按照该速率放置令牌,单位Kbps
      2. CBS:报文的突发尺寸,允许报文的转发时的突发长度尺寸,表示令牌桶的尺寸,令牌桶中初始的令牌数量为该CBS值,即桶的容量。
    2. 工作机制:
      1. Tc值:表示令牌桶中现有的令牌数量,初始情况(没有发送报文之前)Tc值=CBS(桶内令牌是满的)
      2. B值:代表要转发的报文的长度尺寸
      3. 工作机制:
        1. 按照CIR匀速的速度持续向令牌桶中放置令牌,桶中令牌数量超出CBS,则溢出(Tc值不能大于CBS)。
        2. 要转发报文之前查看报文的长度B,判断B是否小于Tc值
          1. 如果B<Tc值,则将报文标记为绿色转发,且Tc值(桶内剩余的令牌数)减少B
          2. 如果B>Tc值,则报文标记为红色,丢弃,不转发。桶内的令牌不减少。
  2. 双桶单速三色标记法:
    1. 两个桶:C桶、E桶
    2. 三种颜色标记报文:绿黄红
    3. 概念:CBS和EBS关注的时数据流的大小
      1. CBS:与单桶单速相同,C桶的容量(令牌最大数量)承诺突发尺寸。单位Byte
      2. EBS:E桶的容量(令牌最大数量),峰值突发尺寸,单位Byte
      3. CIR:承诺信息速率,关注的流量发送的承诺速率。单位Kbps
    4. 工作机制
      1. Tc=C桶中现有的令牌数量,初始情况,Tc=CBS
      2. Te=E桶中的现有令牌数量,初始情况,Te=EBS
      3. 工作机制:
        1. 以CIR的速率持续向C桶中投放令牌,当C桶的令牌数量达到CBS,溢出,溢出令牌放入到E桶中,当E桶的令牌数量溢出,则丢弃。
        2. 收到报文,查看报文的大小,值为B:比较B与桶内令牌数量:
          1. 如果B<Tc,则将报文标记为绿色,并发送,C桶剩余容量Tc减少B
          2. 如果B>Tc,(C桶中剩余令牌不够),此时比较B与Te大小(查看E桶中是否有足够令牌):
            1. 如果B<Te,则报文标记为黄色,默认发送,并将E桶中令牌数Te减少B
            2. 如果B>Te,则报文标记为红色,丢弃报文,E桶中令牌数量Te不减少。
  3. 双桶双速三色标记法
    1. 双桶:P桶、C桶
    2. 双速:PIR、CIR
    3. 颜色:绿黄红
    4. 概念:
      1. PBS:峰值突发尺寸,P桶的容量 单位Byte
      2. CBS:承诺突发尺寸,C桶的容量
      3. PIR:峰值突发速率 单位Kbps
      4. CIR:承诺信息速率 CIR<PIR
    5. 工作机制
      1. Tp=P桶中的剩余的令牌数量,初始Tp=PBS
      2. Tc=C同种剩余的令牌数量,初始Tc=CBS,CBS<PBS
      3. 工作机制:
        1. 放置令牌:以PIR的速率向P桶中持续放置令牌,超出PBS令牌会溢出;以CIR的速率向C桶中持续放置令牌,超出CBS令牌会溢出。
        2. 收到报文后,检查流量报文的大小,值为B,首先比较B与P桶的剩余令牌数Tp
          1. 如果B>Tp,报文标记为红色,Tp值不减少
          2. 如果B<Tp,继续比较B与Tc的值大小:
            1. B>Tc,则报文被标记为黄色,Tp减少B
            2. B<Tc,则报文标记为绿色,Tp和Tc都减少B
  4. 三种方式的区别
    1. 单桶单速双色标记法:不关注突发速率,仅关注突发流量尺寸 C桶
    2. 双桶单速三色标记法:关注峰值突发尺寸,不关注突发速率 C桶 E桶
    3. 双桶双色三色标记法:即关注报文的突发峰值尺寸,也关注突发的峰值速率。 P桶 C桶

16.6.2 流量监管

使用令牌桶技术实现,在设备的入口和出口方向实现限速,超出速率部分的报文直接丢弃。削峰不填谷

两种实现方式:

  1. 基于接口进行限速
    1. 参考命令:Qos car cir xxx //可以使用所有的令牌桶技术
  2. 基于MQC对流分类进行限速
    1. 参考命令:
      1. Traffic behavior A
      2. Car cir xxxx //流行为视图下设置对绑定流分类中的数据流进行限速,可以使用所有令牌桶技术

16.6.3 流量整形

使用令牌桶技术和缓存技术,在设备的出方向实现限速,超出速率部分的报文先缓存,等待流量下降后从缓存中提取并转发。削峰填谷。

三种实现方式:只能使用单桶单速技术。

  1. 基于接口配置:对接口内出方向上所有通过的流量生效,不区分优先级
  2. 基于队列配置:对单个队列中的流量生效,区分优先级的。

基于MQC配置方式:正对流量的流分类生效,在流行为中配置。

相关推荐
努力变厉害的小超超24 分钟前
ArkTS中的组件基础、状态管理、样式处理、class语法以及界面渲染
笔记·鸿蒙
sanzk30 分钟前
华为鸿蒙应用开发
华为·harmonyos
Lary_Rock1 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
热爱跑步的恒川2 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面3 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
一坨阿亮5 小时前
Linux 使用中的问题
linux·运维
aloha_7895 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
音徽编程5 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust
dsywws6 小时前
Linux学习笔记之vim入门
linux·笔记·学习
ClkLog-开源埋点用户分析6 小时前
ClkLog企业版(CDP)预售开启,更有鸿蒙SDK前来助力
华为·开源·开源软件·harmonyos