第十六章 Qos基本原理
16.1 Qos背景
Qos:在带宽有限的情况下,为不同的业务需求,提供不同的网络的服务质量。
影响Qos的不同的因素:
- 带宽,链路在单位时间可以传输数据的bit数量,单位bps
- 一般上传下载速度为带宽/8,即100M带宽显示速度理论值12.5MB/s
- 延迟:报文从一端发出,从另一端接受到经过的时间
- 处理时间:设备对报文查表等处理的时间
- 队列时延:报文在出口队列中等待发送的时间
- 串行化时延:报文形成bit流,从接口发出时,第一个bit到最后bit发完总共需要的时间。
- 传输时延:报文在介质上传输的时间。
- 丢包率:数据包转发过程中出现丢弃的概率
- 抖动:网络传输数据包,接收端接收报文存在顺序不一致的情况,变化较大,则认为抖动比较明显。
- 可用性:网络是否可用。
16.2 Qos技术
16.2.1 服务模型
- 尽力而为模型:数据转发过程中没有服务质量相关的部署,所有的报文按照先后顺序进行转发,不提供质量保障。
- 综合服务模型:
- 应用转发数据包的之前需要申请带宽预留,申请的带宽预留除自己可用,其他应用不能使用
- 部署非常复杂
- 区分服务模型:Qos,通过对报文进行分类,对每一类的报文进行标记,根据标记实现对不同类的报文提供不同的服务质量,时延,丢包率,优先转发。
- DS边缘节点:区分服务域边缘节点,区分服务域有一系列Qos设备组成
- 实现方式:
- DS边缘设备的入接口进行流量分类,给不同类的流量打上不同的标记。
- DS节点的入接口信任该标记类型,后续DS域中按照该标记为流量提供服务质量。
16.2.2 Qos的常用技术
- 限速技术
- 拥塞管理技术
- 拥塞避免技术
16.3 流量分类
16.3.1 简单流分类
- 概念:
外部优先级:指报文携带的优先级值
内部优先级:报文在设备内的服务等级
- 两个优先级,可以通过修改映射表进行调整,不同的外部优先级报文,可以指定进入设备后的内部优先级
- 接口队列:传统Qos接口存在8个队列,内部优先级与队列编号一一映射,内部优先级7的报文对应队列7号,不可以修改改映射关系。
- 外部优先级:报文中携带的标记
- VLAN 字段中的PRI:取值范围是0-7,名字802.1p
- MPLS 头部中的EXP:取值范围是0-7
- IP头部中的Tos字段(8bit):两种不互斥的
- 标记方式1:IP-P,占用3bit,表示范围0-7,高3bit位
- 标记方式2:DSCP值,占用6bit,表示范围0-63,高6bit位
- DSCP值标记:数字和名字表示方式
- 定义了4个PHB(每一跳动作):CS(类选择器),EF(快速转发),AF(确保转发),BE(尽力而为)
- AF11、AF12、AF13、AF21到AF43,AF对应的DSCP值的映射关系是AFXY值=DSCP值8x+2y
- CSx值=DSCP值(8x)
- 总结:简单流分类是按照报文已有的标记对报文进行Qos处理
16.3.2 复杂流分类
在DS边缘设备的入方向上,通过数据报文的五元组,采用MQC模块配置,实现对报文的重标记,或者其他的Qos处理。后续DS域中的节点可以根据重标记后的报文标记值进行简单流分类。
为什么没有EXP-DSCP
16.4 拥塞管理
拥塞管理:网络发生拥塞的时候,对流进行管理和控制,采用队列技术。
16.4.1 队列技术
- 队列技术:通过一定的调度算法,从队列中提取数据报文给出接口进行转发
- Qos Q-profile 传统的Qos工具,对应的下行出口存在8个队列(0-7号队列)
- CBQ队列,华为设备支持的自行开发的队列,4个队列(AF、EF/LLQ、BE)
- 队列调度算法:
- FIFO:先进先出算法,在队列内,收到的报文,按照谁先到,谁先出的原则,发送
- SP:严格优先级算法,在队列间进行报文调度的时候,按照队列的优先级严格调度。如:7,6,5三个队列采用SP算法,则优先调度优先级最高的7号队列,7号队列发送完毕在调度6队列,6号发送完毕调度5号队列,如果5号队列正在调度,7号队列有报文进入,则重新调度7号队列。时时刻刻调度最高优先级的队列。
- 缺点:低优先级队列可能出现“饿死”现象,不能得到及时调度。
- WFQ:加权公平队列,在队列间的报文调度的时候,按照队列配置的加权值,进行报文调度,权值越大,队列调度的机会越大(占用的带宽就越大)。
- 缺点:低延时的报文不能保证低延迟(绝对优先级的报文得立即调度)
- 调度算法组合:SP+WFQ,6,7号队列是SP算法,0-5号是WFQ算法
- 此时6,7号队列拥有绝对优先级的调度机会,6,7号队列中不存在报文的时候,才会按照WFQ算法调度剩余的0-5号队列。
- SP算法的队列中经常给到占用带宽不大(绝对优先级,会抢占其他队列带宽),要求延时小(立即调度,减少时延)的业务使用。
- WFQ算法的队列用途:保证业务带宽,给到业务带宽比较大的业务使用。
- 此时6,7号队列拥有绝对优先级的调度机会,6,7号队列中不存在报文的时候,才会按照WFQ算法调度剩余的0-5号队列。
- 调度方式:传统Qos接口的软件队列0-8队列,可以加入到以下三种队列(组)中,进行Qos的报文调度。
- PQ队列(组),采用的SP调度算法,PQ队列中可以存在多个软件队列,按照严格优先级进行调度。
- WFQ队列(组),采用WRR、WDRR、WFQ算法(都是存在加权值,按照加权值分配带宽),WFQ队列中可以存在多个软件队列,多个软件对垒按照WFQ算法进行调度。
- LPQ队列(组),采用SP调度算法,LPQ队列也可以存在多个软件队列,按照SP算法,调度组内不同队列中的报文。
- PQ和LPQ都是采用SP算法,不同点是LPQ拥塞时不能抢占带宽。
- PQ、WFQ、LPQ队列(组)之间的调度算法采用SP算法:先调度PQ队列,再调度WFQ队列、最后调度LPQ
- PQ多用于将语音等低延迟,低带宽的流量加入到该队列(组)中
- WFQ多使用与需要带宽保障,确保转发的的业务报文加入到该队列(组)中
- LPQ队列用于BE的流量加入,当PQ和WFQ带宽分配存在空闲带宽,则交给LPQ调度BE的流量。
16.4.2 拥塞管理配置
- 基于队列技术的拥塞管理(传统的Qos)
- DS边缘设备配置复杂流分类对流量进行分类并重标记
- DS设备根据DSCP进行Qos部署(简单流分类)
- 入接口需要配置信任DSCP值,对应的DSCP值的报文才会进入到对应LP的队列中。
- 如果需要调整报文进入到对应的队列,则需要调整DSCP值与本地优先级的映射关系。
- DS设备上配置Qos-Queue-profile工具,将对应的队列加入到PQ、WFQ、LPQ中,WFQ队列需要配置权重值分摊带宽,在出接口上调用该工具。实现报文的差分服务
- 基于MQC的拥塞管理
- 队列:
- EF/LLQ队列:适用于语音等低延迟低带宽要求的流分类。LLQ比EF具有跟小的带宽,当链路拥塞的时候,EF可以抢占空闲带宽。该队列优先级最高,需要配置最大的指定带宽。类似传统Qos 的PQ队列
- AF队列:适用于大带宽保证转发的业务。AF队列中可以包含多个类,每个类中可以配置指定的最小带宽,保证业务转发的带宽。
- BE队列:不满足所有其他的分类的流量归于该默认类,可以将默认类设置为AF队列,也可以将默认的BE队列。BE队列采用WFQ调度算法。
- 配置:
- 流分类对报文进行分类,流行为指定分类后的报文的队列,流策略绑定流分类和流行为
- 参考命令:带宽设置有两种,绝对值和空闲带宽百分比
- 队列:
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 拥塞产生的原因:
- 带宽不匹配,发送报文方的带宽,链路的带宽减小,导致出接口无法及时发送高速接受到的报文。
- 接口带宽已知,但是流量都汇聚到一个接口发出(内网出口),收到的报文的数量所需带宽要大于出接口的带宽,
16.5.2 拥塞产生后的影响
- 丢弃策略:
- 尾丢弃:如果没有配置早期随机检测,则当网络出现拥塞,队列缓存已满,则接收的报文将在进入队列前全部丢弃。
- TCP全局同步:当拥塞发生,TCP所有的连接,将同时降低滑动窗口字段的值,控制TCP的传输速度,网络不在拥塞,TCP连接进入慢启动过程,逐步提高TCP连接的报文传输速度,循环往复。该过程中,会造成TCP的所有连接传输报文的速度同步升高,同步降低,造成链路资源浪费。
- TCP连接“饿死”现象:拥塞发生TCP降低连接的速度,此时UDP报文没有传输速度控制机制,UDP则利用TCP让出来带宽,再次造成网络拥塞,TCP会再一次降低连接速度,UDP再次占用,循环往复,造成TCP连接“饿死”现象。
- 无差别丢弃:超出队列缓存的报文进行无差别丢弃,不区分报文的优先级。
- RED:当网络趋向于拥塞的时候,可以使用RED(早期随机检测)提前丢弃报文,延缓网络出现拥塞
- 队列长度到达低门限的时候,开始随机丢弃报文,到达高门限,则执行尾丢弃,从而延缓了TCP的全局同步(随机丢弃的报文中,属于不同的TCP连接,TCP连接的速度不会同时到达最大)
- WRED:根据报文的优先级,在拥塞发生之前,提前对报文进行有差别的丢弃。
- 按照报文优先级或者队列优先级,分别设置低门限,高门限,某队列长度到达低门限,则开始丢弃。高优先级报文(队列)低门限设置的更高,使得高优先级报文晚于低优先级报文丢弃的时间。避免TCP同步
- 尾丢弃:如果没有配置早期随机检测,则当网络出现拥塞,队列缓存已满,则接收的报文将在进入队列前全部丢弃。
- 拥塞避免配置方式:两种
- 基于Qos丢弃模版配置
- 参考命令见PPT
- 基于MQC配置
- 参考命令见PPT
- 基于Qos丢弃模版配置
16.6 限速
16.6.1 令牌桶技术
- 单桶单速双色标记法:C桶(单桶)
- 概念:
- CIR:承诺信息速率,向令牌桶中按照该速率放置令牌,单位Kbps
- CBS:报文的突发尺寸,允许报文的转发时的突发长度尺寸,表示令牌桶的尺寸,令牌桶中初始的令牌数量为该CBS值,即桶的容量。
- 工作机制:
- Tc值:表示令牌桶中现有的令牌数量,初始情况(没有发送报文之前)Tc值=CBS(桶内令牌是满的)
- B值:代表要转发的报文的长度尺寸
- 工作机制:
- 按照CIR匀速的速度持续向令牌桶中放置令牌,桶中令牌数量超出CBS,则溢出(Tc值不能大于CBS)。
- 要转发报文之前查看报文的长度B,判断B是否小于Tc值
- 如果B<Tc值,则将报文标记为绿色转发,且Tc值(桶内剩余的令牌数)减少B
- 如果B>Tc值,则报文标记为红色,丢弃,不转发。桶内的令牌不减少。
- 概念:
- 双桶单速三色标记法:
- 两个桶:C桶、E桶
- 三种颜色标记报文:绿黄红
- 概念:CBS和EBS关注的时数据流的大小
- CBS:与单桶单速相同,C桶的容量(令牌最大数量)承诺突发尺寸。单位Byte
- EBS:E桶的容量(令牌最大数量),峰值突发尺寸,单位Byte
- CIR:承诺信息速率,关注的流量发送的承诺速率。单位Kbps
- 工作机制
- Tc=C桶中现有的令牌数量,初始情况,Tc=CBS
- Te=E桶中的现有令牌数量,初始情况,Te=EBS
- 工作机制:
- 以CIR的速率持续向C桶中投放令牌,当C桶的令牌数量达到CBS,溢出,溢出令牌放入到E桶中,当E桶的令牌数量溢出,则丢弃。
- 收到报文,查看报文的大小,值为B:比较B与桶内令牌数量:
- 如果B<Tc,则将报文标记为绿色,并发送,C桶剩余容量Tc减少B
- 如果B>Tc,(C桶中剩余令牌不够),此时比较B与Te大小(查看E桶中是否有足够令牌):
- 如果B<Te,则报文标记为黄色,默认发送,并将E桶中令牌数Te减少B
- 如果B>Te,则报文标记为红色,丢弃报文,E桶中令牌数量Te不减少。
- 双桶双速三色标记法
- 双桶:P桶、C桶
- 双速:PIR、CIR
- 颜色:绿黄红
- 概念:
- PBS:峰值突发尺寸,P桶的容量 单位Byte
- CBS:承诺突发尺寸,C桶的容量
- PIR:峰值突发速率 单位Kbps
- CIR:承诺信息速率 CIR<PIR
- 工作机制
- Tp=P桶中的剩余的令牌数量,初始Tp=PBS
- Tc=C同种剩余的令牌数量,初始Tc=CBS,CBS<PBS
- 工作机制:
- 放置令牌:以PIR的速率向P桶中持续放置令牌,超出PBS令牌会溢出;以CIR的速率向C桶中持续放置令牌,超出CBS令牌会溢出。
- 收到报文后,检查流量报文的大小,值为B,首先比较B与P桶的剩余令牌数Tp
- 如果B>Tp,报文标记为红色,Tp值不减少
- 如果B<Tp,继续比较B与Tc的值大小:
- B>Tc,则报文被标记为黄色,Tp减少B
- B<Tc,则报文标记为绿色,Tp和Tc都减少B
- 三种方式的区别
- 单桶单速双色标记法:不关注突发速率,仅关注突发流量尺寸 C桶
- 双桶单速三色标记法:关注峰值突发尺寸,不关注突发速率 C桶 E桶
- 双桶双色三色标记法:即关注报文的突发峰值尺寸,也关注突发的峰值速率。 P桶 C桶
16.6.2 流量监管
使用令牌桶技术实现,在设备的入口和出口方向实现限速,超出速率部分的报文直接丢弃。削峰不填谷
两种实现方式:
- 基于接口进行限速
- 参考命令:Qos car cir xxx //可以使用所有的令牌桶技术
- 基于MQC对流分类进行限速
- 参考命令:
- Traffic behavior A
- Car cir xxxx //流行为视图下设置对绑定流分类中的数据流进行限速,可以使用所有令牌桶技术
- 参考命令:
16.6.3 流量整形
使用令牌桶技术和缓存技术,在设备的出方向实现限速,超出速率部分的报文先缓存,等待流量下降后从缓存中提取并转发。削峰填谷。
三种实现方式:只能使用单桶单速技术。
- 基于接口配置:对接口内出方向上所有通过的流量生效,不区分优先级
- 基于队列配置:对单个队列中的流量生效,区分优先级的。
基于MQC配置方式:正对流量的流分类生效,在流行为中配置。
原文地址:https://blog.csdn.net/m0_60875392/article/details/135655775
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_60612.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!