QoS---拥塞管理、拥塞避免_qos流队列模板-程序员宅基地

技术标签: 网络  qos  路由器  计算机网络  交换机  

实现拥塞管理使用队列调度技术
实现拥塞避免使用尾丢弃

一、拥塞管理

拥塞产生的场景:
1、从高速率链路迁到低速率链路
2、流量汇聚,从一个不满足现有带宽需求的接口转发出去

通过分类和标记,将不同业务的流量报文划分在不同队列中。不同队列的报文如何从接口发出、先后顺序如何。如果出现大量的业务流量需要从同一个接口发出,如何保证高优先级的流量显出,又如何保证低优先级的流量可以顺利发出。这里就涉及到队列调度技术

队列调度技术:在设备的出方向实现,利用设备的缓存形成软件队列(只在出方向存在缓存,入方向是没有缓存技术)

使用何种队列调度技术需要结合实际的网络环境来选择,可以针对

常见队列调度技术

1.FIFO

First In First Out

  • 采用尽力而为服务模型

  • 单队列技术,默认的队列技术

  • 好处:实现机制比较简单,尽最大可能转发,速度快
    缺点:无法对业务流量进行差分服务

FIFO.png

2.PQ
  • Priority Queuing

  • 优先级队列技术

  • 先转发优先级最高的队列所有报文,再转发下一个等级的队列的报文。

  • 好处:业务流量进行差分服务,保障关键业务转发
    缺点:可能会造成低优先级队列的饿死现象。

PQ.png

PQ队列主要应用在高优先级队列中,针对时延比较敏感的流量

案例配置

qos queue-profile huawei ###队列模板
schedule pq 5 to 7  ###---5到7队列为PQ队列
interface GigabitEthernet0/0/1
qos queue-profile huawei  ##出接口调用
3.RR
  • Round Robin

  • 轮询队列技术

  • 在调度时,会轮流问询每个队列,每个队列再一次调度中存在一次机会,当所有队列轮询完毕,该次调度完成

  • 是一种公平队列(无法区别对待高优先级与低优先级的报文

4.WRR
  • Weighted Round Robin

  • 加权轮询队列技术

实现方式:

  • 根据不同等级的队列分配权重值,优先级越高权重值越高,每次调度权重值-1.直到所有队列的权重值为0,一轮调度技术结束,重新开始轮询。
    • 当所有的队列,权重值为0时,该次调度结束,恢复所配置的权重值。进行下一轮调度

好处:解决PQ的低优先级饿死现象
缺点:只能解决调度个数,由于是基于报文个数调度,当数据包尺寸大小不一致,会出现不平等调度(低优先级队列发送的数据包比高优先级队列的数据包大)

WRR.png

案例配置

qos queue-profile huawei1
queue 2 weight 20    ##根据不同队列设置权重值,默认为10,配置范围1-100
queue 3 weight 30
queue 4 weight 40
schedule wrr 0 to 4
interface g0/0/2
qos queue-profile huawei1  ##出接口调用
5.WFQ
  • Weighted Fair Queuing

  • 加权公平队列技术

与WRR的区别在于实现了小包优先转发

实现方式:

  • 根据不同等级的队列分配权重值,优先级越高权重值越高,根据权重值分配带宽,重值越高分配带宽也越高,小包优先。
    • 采用轮询机制实现,小包优先级调度
    • 当所有队列的调度值小于或者等于0时,该次调度结束
    • 第二次调度,所有队列恢复原有权重值,但上一次调度结束后,权重值小于0的,需要补回该权重值

WFQ.png

案例配置

qos queue-profile huawei2
queue 2 weight 20    ##根据不同队列设置权重值,默认为10,配置范围1-100
queue 3 weight 30
queue 4 weight 40 
schedule wfq 0 to 4 pq 5 to 7		##指定队列技术
interface g0/0/0
qos queue-profile huawei2		##出接口调用
6.CBQ

通过复杂流分类形成流队列,根据调度技术转发流量

  • 基于类的队列技术

  • 用户根据复杂流分类,直接放入对应的队列

    • 可以存在多个EF,AF等队列

CBQ首先根据IP优先级或者DSCP优先级、入接口、IP报文的五元组等规则来对报文进行分类,然后让不同类别的报文进入不同的队列

三种队列、一种特殊队列
  • EF队列
    • 具有绝对优先转发的队列
    • 配置时指定该队列的最大带宽
  • LLQ队列
    • 特殊的EF队列
    • 时延最低
    • 最优先转发,不能抢占闲时带宽
  • AF队列
    • 配置时指定该队列的最小(保证)带宽,如果接口存在剩余带宽,可以分享带宽(给EF)
  • BF队列
    • 默认队列
    • 没有被匹配的队列默认进入该队列,按照接口剩余带宽还有WFQ队列技术转发

CBQ.png
优点:支持自定义类,可为不同的业务定义不同的调度策略。使用灵活

缺点:数据报文每次进入设备,都要进行ACL匹配。消耗设备性能

案例配置

##创建匹配规则
acl number 2000  
rule 5 permit source 192.168.1.0 0.0.0.255 
##创建流分类
traffic classifier CBQ 
if-match acl 2000
##创建流行为
traffic behavior CBQ
queue ef bandwidth 10
##创建流策略
traffic policy CBQ
classifier CBQ behavior CBQ
##对应接口上调用流策略
interface g0/0/0
traffic-policy 1 outbound
总览
类型 优点 缺点
FIFO 实现简单,处理速度快 不能有差别地对待优先级不同的报文
PQ 低延迟业务能得到保障 低优先级队列可能出现“饿死”现象
WRR 避免了低优先级队列的“饿死”现象 不平等调度;低时延业务得不到保障
WFQ 按权重实现公平调度;自动分类,配置简单 低时延业务得不到保障;无法支持自定义类
PQ+WFQ 低时延业务能得到保障;按权重实现公平调度等 无法支持自定义类
CBQ 支持自定义类 耗费较多的系统资源

PQ+其他队列调度技术

PQ+WFQ.png

  • 优点:可保证低时延业务得到及时调度;实现按权重分配带宽等。

  • 缺点:无法实现根据用户自定义灵活分类报文的需求。

用户可以借助“PQ+WRR/PQ+DRR/PQ+WFQ调度”调度方式,将高优先级队列使用PQ,剩余队列使用轮询队列,一个队列模板不能同时存在多种轮询队列;PQ队列必须高于轮询队列

 qos queue-profile huawei2
 schedule wrr 3 to 4 pq 5 to 7

二、拥塞避免

每个队列都是有长度限制,如果队列已满,后进来报文就会被执行尾丢弃

尾丢弃缺点
  • 无法对报文进行差分丢弃
    • 无差别丢弃.png
  • 引发TCP全局同步
    • TCP刚开始进行慢启动状态,但TCP报文超过接口带宽,造成网络拥塞,由于TCP滑动窗口减半机制,造成TCP整体流量同时下降,等到网络不拥塞,TCP又尝试慢启动状态,可能又会触发TCP滑动窗口减半机制,周而复始
    • 造成接口带宽利用率不高
    • TCP全局同步1.png
      TCP全局同步2.png]
  • 造成TCP饿死现象
    • TCP有滑动窗口减半机制,UDP无滑动窗口减半机制,UDP流量会不断抢占TCP带宽
      -TCP饿死.png]
解决方法
1.RED

随机丢弃(早期使用)

为避免TCP全局同步,可在队列未装满时先随机丢弃一部分报文。通过预先降低一部分TCP连接的传输速率来尽可能延缓TCP全局同步的到来

队列还没满开始丢弃,丢弃模板(下限值,上限值,最大丢弃概率),如果报文不超过队列长度下限值不丢弃,如果报文在下限值和上限值之间,按照丢弃概率去丢弃报文,如果超出上限值,丢弃所有报文。

  • 当队列的长度小于低门限时,不丢弃报文。
  • 当队列的长度大于高门限时,丢弃所有收到的报文。
  • 当队列的长度在低门限和高门限之间时,开始随机丢弃到来的报文。方法是为每个到来的报文赋予一个随机数,并用该随机数与当前队列的丢弃概率比较,如果大于丢弃概率则报文被丢弃。队列越长,报文被丢弃的概率越高

RED.png
RED无法解决会丢弃重要流量TCP饿死现象

2.WRED

加权早期随机丢弃

针对不同业务类型设置不同丢弃模板(比如针对重要数据丢弃概率降低)

  • 基于权重的早期随机检测
  • 根据不同优先级(针对三层流量IPP、DSCP)制定不同的丢弃策略
    • 低门限(队列到达该长度时开始丢弃)
    • 高门限(队列到达该长度时完全丢弃)
    • 丢弃概率(门限之间的丢弃概率)

WRED.png

案例配置

WRED配置.png

##创建三个丢弃模板,voice不需要
drop-profile manager 	
wred dscp
dscp 8 low-limit 50 high-limit 70 discard-percentage 10		

drop-profile ftp
wred dscp
dscp 16 low-limit 70 high-limit 90 discard-percentage 10

drop-profile video
wred dscp
dscp 24 low-limit 60 high-limit 80 discard-percentage 20
##创建队列模板
qos queue-profile qos-Huawei
queue 1 drop-profile manager		##在队列模板中针对不同队列使用不同模板
queue 2 drop-profile ftp
queue 3 drop-profile video
interface E1
qos queue-profile qos-Huawei	##接口调用队列模板

问题

1.拥塞管理机制的实现过程分为哪两步?

  • 答:第一步:将准备从一个接口发出的所有报文放入不同的队列中;第二步:根据各队列间的调度机制实现不同报文的差分转发

2.常用的队列技术有哪些?

  • 答:FIFO、PQ、WFQ、PQ+WFQ、CBQ等
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Dragon11123123/article/details/114860085

智能推荐

计量经济学第六版伍德里奇计算机答案,求伍德里奇计量经济学答案第六版-程序员宅基地

文章浏览阅读1.9k次。英文版答案:3.15 (i) The degrees of freedom of the first regression is n – k – 1 = 353 – 1 – 1 = 351.The degrees of freedom of the second regression is n – k – 1 = 353 – 2 – 1 = 350. The standard error is s..._伍德里奇计量经济学第六版答案

redis一条set命令的执行过程_redis 对一个命令的处理流程是怎么样的?比如一个set命令-程序员宅基地

文章浏览阅读390次。set命令,在我们看来很简单,set zhangsan lisi,redis给我们返回一个 ok,就完事了。那redis的服务端是怎么处理这条简单的命令的?是不是像我们看起来的这么简单。今天这篇文章就来聊聊这个问题。在上一篇文章中,我们聊了redis IO多路复用的事件驱动框架。我们大致了解了redis是如何接收连接,如何将客户端的连接行为封装成事件并结合IO多路复用实现了对客户端连接的监听这一篇,我们聊聊当内核监听到客户端连接事件后,具体是如何处理连接事件的,我们用set命令来举例子。_redis 对一个命令的处理流程是怎么样的?比如一个set命令

maven配置本地仓库、maven配置阿里中央仓库_maven配置本地仓库路径-程序员宅基地

文章浏览阅读2.1k次。找到并修改< localRepository>,最初是注释掉的,取消注释就可以 < localRepository>你想存放的本地仓库路径< /localRepository>我这里用的阿里的中央仓库,也可以用网易的,或者Apache的(用国内的会更快一点)(不修改默认${user.home}/.m2/repository这个路径)至此,远程仓库已经配置完成。添加进去之后保存退出。_maven配置本地仓库路径

2023基于微信小程序的房屋租赁管理系统(SSM+mysql)-JAVA.VUE毕业设计(论文+开题报告+运行)_微信小程序-房屋管理系统-程序员宅基地

文章浏览阅读982次。本系统后台采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。图4-1系统工作原理图。_微信小程序-房屋管理系统

Java串口通讯基础概念-程序员宅基地

文章浏览阅读83次。串行通讯协议有很多种,像RS232,RS485,RS422,甚至现今流行的USB等都是串行通讯协议。而串行通讯技术的应用无处不在。可能大家见的最多就是电脑的串口与Modem的通讯。记得在PC机刚开始在中国流行起来时(大约是在90年代前五年),那时甚至有人用一条串行线进行两台电脑之间的数据共享。除了这些,手机,PDA,USB鼠标、键盘等等都是以串行通讯的方式与电脑连接。而笔者工作性质的关系,..._peak 串口

MySql索引失效及解决方案_mysql or索引失效如何解决-程序员宅基地

文章浏览阅读1.2k次。MySql索引失效及解决方案_mysql or索引失效如何解决

随便推点

使用n切换node版本_n 使用更高版本的node-程序员宅基地

文章浏览阅读6.5k次。今天在运行项目的时候遇到一个问题:./src/global.scssError: Missing binding /Users/youchenma/Documents/alibaba/business/node_modules/[email protected]@node-sass/vendor/darwin-x64-83/binding.nodeNode Sass could not find a binding for your current environment: OS X 64..._n 使用更高版本的node

php按钮跳转不同页面跳转,PHP页面跳转的几种实现方法-程序员宅基地

文章浏览阅读1.3k次。页面跳转可能是由于用户单击链接、按钮等触发的,也可能是系统自动产生的。页面自动跳转在WEB开发中经常用到,而且根据需求可以采用不同的跳转方式,比如提示操作信息后延时跳转等,慢生活的小编总结了PHP开发中常见的几种页面跳转方法。一、PHP header()函数跳转PHP的header()函数非常强大,其中在页面url跳转方面也调用简单,使用header()直接跳转到指定url页面,这时页面跳转是30..._php跳转按键

html中的分离式布局,DIV+CSS技术在网页布局中的应用-程序员宅基地

文章浏览阅读814次。摘 要 信息科学技术的进步使得互联网技术行业快速发展起来。其中网页设计作为互联网技术行业中重要的一部分,应用先进技术提高其工作效率与工作质量具有重要意义。DIV+CSS技术在网页布局中的优势作用使得其在网页设计与开发中应用越来越广泛。基于此,本文首先对DIV+CSS技术进行概述,并对其在网页布局中的优势与应用原理进行分析,最后举出网页设计的实例对该项技术的具体应用进行分布阐述。【关键词】DIV C..._布局与样式分离

Spring源码分析——Bean的加载_在spring中bean的创建过程-程序员宅基地

文章浏览阅读240次。Spring版本:5.1.14.RELEASEBean实例创建过程如下图,Bean的创建过程大部分是在docreateBean()里面完成的。_在spring中bean的创建过程

RTT Studio和Cubemx联合开发_rtt cube-程序员宅基地

文章浏览阅读892次。1. RTT studio创建工程创建工程## 创建完成以后的目录结构2. 配置CubuMx双击cubumx的图标打开CubeMx配置时钟生成代码构建后的代码结构编译代码满屏错误:不要慌3. 新增脚本新建scons脚本文件 SConscript脚本内容如下import osfrom building import *cwd = GetCurrentDir()src = Glob('*.c')# add cubemx driverssrc = Split('''_rtt cube

java string 去掉某个字符_JAVA String 如何去掉指定字符-程序员宅基地

文章浏览阅读3.2w次,点赞4次,收藏10次。展开全部i、replace方法该方法的作用是替换字符串中所有指定的字e69da5e6ba9062616964757a686964616f31333337616637符,然后生成一个新的字符串。经过该方法调用以后,原来的字符串不发生改变。例如:Strings=“abcat”;Strings1=s.replace(‘a’,‘1’);该代码的作用是将字符串s中所有的字符a替换成字符1,生成的..._string去掉指定字符

推荐文章

热门文章

相关标签