服务访问质量(QoS)——流量整形与拥塞管理

news2024/11/26 18:22:05

  • 作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 

  •  座右铭:低头赶路,敬事如仪

  • 个人主页:网络豆的主页​​​​​​

目录

 前言

一.流量整形和监管配置

1.流量整形配置两种方式

①流量整形的命令:

2.承诺访问速率配置

​​​①承诺访问速率命令

CAR与GTS的另一种配置(了解)

二.拥塞管理

1.拥塞管理技术

①加权公平队列(WFQ)

​② 基于类的加权公平队列(CBWFQ)

​2. CBWFQ的配置

三.拥塞避免

1.尾丢弃

2.加权随机预检测(WRED)

3.拥塞避免配置

WRED配置

在CBWFQ中配置WRED命令如下

底部投票


 前言

本章将会继续讲解QoS服务访问质量中的流量整形与拥塞管理,可以在看之前回顾一下服务访问质量(QoS)——QoS技术概述与配置

一.流量整形和监管配置

为了避免网络拥塞的出现,可以对流量进行控制,通过采用一定策略控制流量的大小,以减少网络拥塞的出现,主要的流量管理技术是整形和监管。

1.流量整形配置两种方式

一种是基本的流量整形配置,另外一种是基于访问控制列表(ACL)的流量整形配置。

流量整形 (GTS) 将超出去的部分 放到最后慢慢传


①流量整形的命令:

基本的配置

   route(config-if)#traffic-shape rate  CIR  Bc  Be
  traffic-shape  流量整形命令关键字
     rate   速率
     CIR    承诺平均速率
     Bc  突发量      Be 额外突发量


基于ACL的流量整形配置

 trafficce-shape group 100  1000000  1000000  1000000
   100 表示  acl 列表编号
      1000000   表示 平均速率 单位为字节  换算工程 兆  为 1M


2.承诺访问速率配置

与流量整形相同,承诺访问速率也有两种配置方式,一种是基本的承诺访问速率配置,另一种
是扩展的承诺访问速率配置,

 


 

​​​①承诺访问速率命令

基本承诺访问速率

Router(config-if)# rate-limit {input|output} {CIR} {burst-normal} {burst-max} conform-action {action} exceed-action {action}

例子

Router(config-if)#rate-limit input 8000000 2000 4000 conform-action transmit exceed-action drop

Router(config-if)#rate-limit input 8000000 2000 4000 conform-action set-prec-transmit 5 exceed-action set-prec-transmit 0

扩展的承诺访问速率

首先配置ACL,定义需要整形的流量

Router(config-if)# rate-limit {input|output} [access-group access-group] {CIR} {burst-normal} {burst-max} conform-action {action} exceed-action {action}

查看CAR配置信息

Router#show interface [ interface-type interface-number ]     rate-limit

简单讲解

  router(config-if)#rate-limit {input|output} CIR Be Bc
                   conform-action  transmit  exceed-action drop
  conform-action   正常流量
    transmit  转发
    exceed-action   超出去的额外流量
    drop  丢弃


CAR与GTS的另一种配置(了解)

定义匹配策略

Router(config)#class-map [ match-all | match-any ]  {        class-map-name}
Router(config-cmap)#match access-group {access-group}
Router(config-cmap)#match protocol {protocol}

定义流量控制策略

Router(config)#policy-map {policy-map-name}
Router(config-pmap)#class {class-map-name}

使用set命令标记流量的优先级

Router(config-pmap-c)#set ip dscp {dscp}
Router(config-pmap-c)#set ip precedence {precedence}

配置CAR

Router(config-pmap-c)# police { CIR } [ burst-normal ] [    burst-max] conform-action {action} exceed-action {action} violate-action {action}

配置GTS

Router(config-pmap-c)#shape average {CIR [Bc [Be]]}

配置缓冲区上限,配置如下

Router(config-pmap-c)#shape max-buffers {buffer-limit}

默认为1000

在接口上应用策略

Router(config-if)#service-policy { input | output } { policy-map-name}

GTS只能应用在output方向

查看策略配置

Router#show policy-map [policy-map-name]

查看端口policy map信息

Router#show policy-map interface [ interface-type      interface-number]


二.拥塞管理

虽然使用GTS和CAR技术可以控制带宽,但是这样也无法避免网络发生拥塞,如果设备没有足够的缓存区域来保存到达的数据,就会导致部分数据丢失,造成超时重传,最终导致恶性循环,那
么发生网络拥塞时,如何决定资源的使用,带宽的分配、报文的转发顺序呢?这时就需要使用拥塞
管理技术


1.拥塞管理技术

拥塞管理一般采用队列调度技术,通过队列调度技术的算法使得不同的数据流拥有不同的优先级和带宽信息等,从而确定不同数据流被转发的顺序和带宽,拥塞管理技术主要包括以下五种技术。

  1. 先进先出队列(FIFO)
  2. 优先级队列(PQ)
  3. 定制队列(CQ)
  4. 加权公平队列(WFQ)
  5. 基于类的加权公平队列(CBWFQ)

①加权公平队列(WFQ)

WFQ根据数据流的源P地址、目的P地址,协议,端口号,IP优先级等信息将不同的流分配到不同的队列(流分类是路由器自动完成的,无须进行配置),WFO尽量将不的流量分入不同的队列,以从整体上均衡各个流的时延,在出队的时候,WFQ按照流的优先级来分配出口的带宽,优先级越小得到的带宽越小,优先级越大得到的带宽越大,每个流所占用的带宽比例为(自身流优先级加1)/(所有流优先级分别加1的和)

 


② 基于类的加权公平队列(CBWFQ)

CBWFO扩展了WFQ的功能,CBWFO可以根据数据的优先级。源P地址和目的P地址,协议等进行分类,并让不同的报文进入不同的队列。

 

2. CBWFQ的配置

定义匹配策略

与GTS、CAR的第二种配置相同

配置CBWFQ策略

保证最小带宽

Router(config-pmap-c)#bandwidth { bandwidth-kbps | percent percentage }

配置队列中数据包的个数

Router(config-pmap-c)#queue-limit { packets }

配置默认类

Router(config-pmap)#class class-default

在端口实施策略

Router(config-if)#service-policy { input | output } { policy-map-name }

查看policy map配置信息

Router#show policy-map [ policy-map-name ]

查看接口的policy map信息

Router#show policy-map interface [ interface-type      interface-number ]


三.拥塞避免

虽然拥塞管理可以通过队列技术保证关键业务的带宽,但是过度的网络拥塞对于网络的危害是
很大的,那么如何有效地避免拥塞呢?避免拥塞就要主动丢弃部分报文,以减缓网络的拥塞程度。


1.尾丢弃

尾丢弃是传统的丢包策略,即当队列达到最大长度后,将所有后续来到的报文全部丢弃的策略。
使用这种策略能同时丢弃多个TCP报文,从而使得多个TCP连接进入拥塞避免的状态而调整流量。
但这将导致网络中的流量忽大忽小,极不稳定。
在CBWFQ中配置尾丢弃的命令是qpeue-lirit,通过此命令来限制队列的长度。


2.加权随机预检测(WRED)

为了避免出现尾丢弃的现象,随机预检测(FED)为每个队列设定两个值,分别为低阀值和高阈
值,并采用如下算法。

  1. 小于低阈值时,不进行报文丢弃。
  2. 大于高阈值时,完全丢弃报文。
  3. 在低调值和高阔值之间时,WRED开始进行随机丢弃报文,队列越长,丢弃的概率越高。


WRED的原理和RED相同,只是在随机丢弃报文时。加入了报文优先级来区分丢弃策略,通过
RED避免了多个TCP连接同时进入拥塞避免状态的情况,只是让个别TCP连接进入拥塞避免状态。
WRED的配置可以直接配置在接口上,也可以通过policy-map配置。


3.拥塞避免配置

WRED配置

基于DSCP的配置

Router(config-if)#random-detect dscp-based
Router(config-if)#random-detect dscp  dscp   {min max } [mark]


基于IP优先级的配置

Router(config-if)#random-detect
Router(config-if)#random-detect precedence  precedence {min max } [mark]


在CBWFQ中配置WRED命令如下

Router(config-pmap-c)#random-detect
Router(config-pmap-c)#random-detect  precedence  precedence {min max } [mark]

查看WRED信息

Router#show queueing random-detect

查看端口队列信息

Router#show queue [ interface-type interface-number ]


创作不易,求关注,点赞,收藏,谢谢~ 

底部投票

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零开始上手 MQTT over QUIC:快速体验下一代物联网标准协议

前言 QUIC(RFC9000) 是下一代互联网协议 HTTP/3 的底层传输协议,与 TCP/TLS 协议相比,它在减少连接开销与消息延迟的同时,为现代移动互联网提供了有效灵活的传输层。 EMQX 5.0 是首个将 QUIC 引入 MQTT 的开创性产品。在长期的客户服务和技…

eunomia-bpf项目重磅开源!eBPF 轻量级开发框架来了

近日,在 2022 云栖大会龙蜥峰会 eBPF & Linux 稳定性专场上,来自 eBPF 技术探索 SIG Maintainer 、浙江大学的郑昱笙分享了《eunomia-bpf:eBPF 轻量级开发框架》技术演讲,以下为本次演讲内容: 大家好!…

【新知实验室-TRTC开发】实时音视频之web端云监工系统(Vue3+Element plus+TS+Pinia)

在线上线下一体化、虚拟现实加速融合的趋势下,音视频已经演进成一种基本能力,深刻变革了社会的交互方式。未来,音视频作为全真互联时代的重要基石,将持续推动互联网和实体产业的数字化创新与升级。 今天我们将体验腾讯的实时音视…

vue3 antd table表格的增删改查(一)input输入框根据关键字搜索【后台管理系统纯前端filter过滤】

input输入框——关键字模糊搜索引言铺垫场景复现解决方案筛选的实现重置筛选信息优化处理(监听的实现)功能实现可能要用到的知识:vue3数据变化侦测&&信息筛选过滤.filter() .map() .forEach(). find()🔥vue3【watch检测/监…

[附源码]Python计算机毕业设计Django4S店汽车售后服务管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

【服务器数据恢复】IBM服务器RAID控制器出错的数据恢复案例

服务器数据恢复环境: 北京某公司IBM X系列某型号服务器; 服务器上共8块硬盘组建raid5磁盘阵列; 服务器上部署有oracle数据库。 服务器故障&分析: 服务器在运行过程中,raid5磁盘阵列中有2块硬盘报警,服务…

CRM(Mapper层)详细代码

Mapper详细代码: DicValueMapper: package com.bjpowernode.crm.settings.mapper;import com.bjpowernode.crm.settings.domain.DicValue;import java.util.List;public interface DicValueMapper {/*** This method was generated by MyBatis Generato…

制作覆盖手绘图的导游地图,非常简单,你也可以

目录 1 前言 2 手绘地图的准备 3 下载软件 4 切图软件基本设置 5 配准设置 6 从平台取得上传切片所需要的3个参数 7 程序切片 8 增加位置点 1 前言 上一篇介绍了制作“简版导游地图”的步骤,真的是特别简单,如果提前准备好了文字材料&#xff0c…

PHP转Go,框架选什么?

文章目录内功心法PHP转Go,优选哪个框架?为什么?为什么不火?GoFrame特点优势:劣势:框架选型谁适合用GoFrame谁不适合用GoFrameGoFrame框架设计思想开发流程从0到1核心步骤总结视频一起学习这是一期会引起广泛…

即时通讯赛道开打信创牌,WorkPlus为何独树一帜?

近期,信创火了。 随着近期国家相关政策文件的推出,未来三年,党政信创、行业信创以及央国企信创的建设,将迎来全面加速。业内人士认为:“大信创”时代或已来临! 信创是什么? 信创,…

加载用户数据至用户维度表

目录 1.创建转换 2.配置表输入 3.配置表输入2 4.创建新转换 5.配置映射输入规范 6.配置数据库查询 7.配置数据库查询2 8.配置数据库查询3 9.配置过滤记录 10配置JavaScript代码 11.配置字段选择 12.配置映射输出规范 13.配置映射(子转换) 1…

JS进阶第一篇:手写call apply bind

文章目录手写call apply bind深入理解 call 方法手写call手写apply手写bind手写call apply bind 深入理解 call 方法 call 理解了,apply和bind就都迎刃而解了,他们都是大同小异。在此对call和apply不做过多的定义性解释,先来看下调用了call…

opencv阈值图像Threshold方法

图像阈值 固定阈值,自适应阈值,Otsu 二值化等 全局阈值和局部阈值 一、图像二值化 定义:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。 灰度值0&…

热门Java开发工具IDEA入门指南——导出项目到Eclipse

IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能是非常强大的。 上文…

打工人,这里有一份述职技巧,请查收

大家好,马上到年底了,有多少小伙伴正在期待着述职邮件,毕竟收到述职邮件,也就意味着有机会升职加薪。有没有跟糖糖一样,没收到邮件的? 工作要善于总结,也要善于表达,如何在限时内将…

跨平台应用开发进阶(四十)自定义插件及引用

文章目录一、前言二、插件制作三、离线插件集成应用示例四、拓展阅读一、前言 正如将可复用功能封装为自定义组件以供他人使用一样,在uni-app开发框架中提供了另一种形式的自定义插件,并可将该插件提交至uni-app插件市场。 二、插件制作 制作插件前&a…

前端 单元测试介绍 - 以及在项目中使用 (史上最全)

前言 我们前端开发过程中,编写测试代码,有以下这些好处: 更快的发现bug,让绝大多数bug在开发阶段发现解决,提高产品质量 比起写注释,单元测试可能是更好的选择,通过运行测试代码,观…

ARM 异常处理方式简单介绍

一、什么是异常 正常工作之外的流程都叫异常; 也就是说,除了用户模式和系统模式外,其他情况都是异常,见下图: 异常会打断正在执行的工作,并且一般我们希望异常处理完成后继续回来执行原来的工作&#xff…

3-azido-1-Propanamine,88192-19-2,3-叠氮基丙胺 性质特点有哪些?

●中文名:3-叠氮基丙胺,3-叠氮基-丙胺 ●英文名:3-azido-1-Propanamine ●外观以及性质: 西安凯新生物科技有限公司供应的:​3-azido-1-Propanamine为淡黄色或无色油状,含有叠氮基团,叠氮基可以…

Node.js 入门教程 23 使用 npm 的语义版本控制 24 卸载 npm 软件包 25 npm 全局或本地的软件包

Node.js 入门教程 Node.js官方入门教程 Node.js中文网 本文仅用于学习记录,不存在任何商业用途,如侵删 文章目录Node.js 入门教程23 使用 npm 的语义版本控制24 卸载 npm 软件包25 npm 全局或本地的软件包23 使用 npm 的语义版本控制 如果 Node.js 软件…