QoS技术原理

news2025/3/11 0:32:41

QoS技术的产生

        随着网络的不断发展,网络规模及流量类型的不断增加,使得互联网流量激增,产生网络拥塞,增加转发时延,严重时还会产生丢包,导致业务质量下降甚至不可用。所以,要在IP网络上开展这些实时性业务,就必须解决网络拥塞问题,而解决网络拥塞的最直接的办法就是增加网络带宽,但从网络的建设成本考虑,这是不现实的。

传统端到端网络通信存在的问题、传统网络缺点:

先到先达,优先转发(会导致网络拥塞)


需要衡量的质量要求

       1)带宽

              最大带宽BWmax等于传输路径上的最小带宽 (木桶效应)

对于视频流量敏感,提升最小带宽值带来正收益

       2)时延

              端到端网络时延等于路径上所有时延之和

                     传输时延

                     处理时延

                     队列时延

                     串行化时延(从第一个bit到最后一个bit中间所使用的时间)

语音、视频流量敏感

语音流量对带宽不是很敏感,降低时延获得正收益

       3)抖动

              由于每个报文端到端时延不相等造成的

降低抖动获得正收益

       4)丢包率

              丢包可能在传输过程中的每一个环节发生

对于TCP流量很敏感,降低丢包率获得正收益

在带宽一定的情况下如何提升服务质量?

       1)尽力而行服务模型(能传多少传多少,传不了就丢)

              增大网络带宽

              升级网络设备

       2)综合服务模型 (相当于公交车道)

              优点:可以为某些特定业务提供带宽、延迟保证

              缺点:实现较复杂,无流量发送时仍然独占带宽,使用率低,所有设备必须运行RSVP协议

       3)区分服务模型(使用最多)

              1、在网络入口对报文进行分类,完成对报文的标记 (流量分类标记)

为什么要报文标记?

       端到端进行QoS部署时,就需要每台设备都对报文进行分类,这样就会导致耗费大量地设备处理资源,为此提出了对报文进行标记的方法,这样下游设备只需要对标记进行识别即可提供差分服务。

       收到标记,将其映射成本地对其定义的服务等级值(映射为自己本地可以使用)

      根据不同的服务等级值进入相应的缓存队列,根据队列间的调度机制,实现不同的转发服务(发送拥塞进行拥塞管理—队列技术)

             


    

报文分类与标记

       1、简单流分类

              VLAN中802.1Q字域(PRI)

                     802.1P最多区分8类数据(0~7) ,802.1p占3bit

              MPSL中Label字域(EXP)

                     MPLS EXP最多区分8类数据(0~7), exp占3bit

              IP包头中的ToS字域(IPP/DSCP)

                     IP-Precedence字段最多区分8类数据(0~7),占一个字节大小,IP-Precedence占3bit

                     由于IP-p优先级8类不够使用,所以扩充了3bit称为DSCP(差分服务代码点)-->成为DS-field字段,占6bit大小,可区分64类(0~63)

IP头部经历过两次修改,最早的RFC791中,IP字段名称为TOS(type of service 服务类型)。

将三个字段作为IP优先级。随着IP网络的发展,IP优先级字段最多能将报文分为8类。2^3=8(0-7)

在新RFC2474中,将后三个字段加入作为DS,将IP优先级改名为DSCP,共有2^6=64个分类。(0-63)

       2、复杂流分类(MQC)

              配置流分类、流行为、流策略

1)流分类(traffic classifier)

                     将流量筛选出进行分类

                            and表示流分类中各规则之间关系为“逻辑与”,必须都匹配

                            or表示流分类各规则之间是“逻辑或”,匹配一个或全部

缺省情况下,流分类中各规则之间的关系为“逻辑或”

 2)流行为(traffic behavior)

                     MQC流行为动作有:

                            报文过滤

                            重标记优先级

                            重定向

                            流量监管

                            流量统计

                     配置eg:

                            traffic behavior huawei

                            remark dscp ef

   3)流策略(traffic policy)

将流分类与流行为关联应用

配置eg:

traffic policy huawei

                     classifier huawei behavior huawei

DSCP/查分服务代码点分类:

数字形式:DSCP取值范围为0~63;

关键字表达方式:用关键字标识的DSCP值。

                  1)CS

                            分类选择/类选择码

                                   CS6、CS7默认用于协议报文,拥有最高优先级(转发等级最高)

整个CS都是用来兼容IP优先级的,IP优先级只有3个bit 所以每个CS后3bit都为0。

所有的CS都是映射的0-7。

                     2)EF

                            加速转发行为(常用于语音流量报文,DSCP号为46)

                                   发包速率大于收包速率

                     3)AF

                            确保转发行为

                                   未超出带宽值,确保数据转发

                                   超出带宽值进行缓存,有空闲再发

AF4用于承载语音信令流量

AF3用于承载直播流量

AF2用来承载VOD/视频点播流量

AF1用来承载普通上网流量

AFij:丢弃优先级  j越大越优先丢弃

                                  

所有AF流量最后一位bit都为0

第4 5位bit为丢弃优先级

一共为6bit 例如计算AF42:

42计算 第一位1234 第二位123

也就是第一位0100为4 第二位0010为2

因为最后一位为0 所以最后为100100-->36

                     4)BE

                            尽力而为转发行为

                            默认方式 default(一般将不太重要的报文设置为BE,DSCP号为0)

                                         

DSCP/ IP-Precedence/ 802.1p/ EXP值表

                             

                             


拥塞管理与拥塞避免

拥塞管理与拥塞避免配置前提:

       先有报文分类,根据报文分类和标记的队列类型进行QoS优化配置

什么时候会产生拥塞?

       当多条带宽汇总到一条带宽上时,就会产生拥塞

拥塞管理的核心是什么?拥塞避免技术的前提是什么?

       核心是队列,队列的核心是调度队列调度算法

       当网络中间歇性的出现拥塞,且关键报文要求被更优先地转发时,此时就需要进行拥塞管理。

       拥塞避免技术前提是队列满了,后续发往该队列的关键报文都被全部丢弃,此时需要拥塞避免

拥塞管理方法:

通过LP本地优先级映射到队列中

 使用算法进行调度

常见队列算法

需要注意的是:缓存也成为硬件队列,硬件队列满了才会进行队列算法,否则不会拥塞。

队列算法只能称为软件队列,都是在进入缓存之前进行调度。

 1.FIFO(先进先出):默认队列算法

先进先出,无紧急次紧急非紧急之分

2.PQ(优先级队列):分四种优先级报文

                            1、高优先级队列

                            2、中优先级队列

                            3、一般优先级队列

                            4、低优先级队列

特点:将紧急流量优先放到高优先队列,次紧急、低紧急放入中低队列,紧急流量转发完毕再转发中低流量

优点:保证了紧急报文转发,区分流量

缺点:低优先级队列饿死现象(如果高优先级队列一直有,低优先级无法转发)

3.WRR(权重轮询队列)

优点:解决了PQ饿死现象

缺点:基于报文个数调度,容易造成包长尺寸不同的报文出现不平等调度,低时延业务得不到及时调度

 4.WFQ(加权公平队列):按照流特征进行分类(五元组),hash算法自动分配队列

优点:按照权重分配带宽,自动分类,配置简单

缺点:低延时业务仍得不到及时调度;无法实现用户自定义分类规则

5.PQ+WFQ:优先级队列+加权公平队列

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

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

6.CBQ(类加权公平队列):对WFQ的扩展

1、基于分类队列,将高优先级放入EF中、低中流量放到AF、BE中

优点:提供了自定义类的支持;可谓不同的业务定义不同的调度策略

缺点:由于涉及到复杂流分类,会消耗系统资源

2、分为三个队列:EF AF BE [还有LLQ(低延迟)队列,排在第一位,专为语音流量定制]

BE队列使用接口剩余带宽和WFQ调度方式进行发送。

处理简单且快速,但是无法为紧急报文提供优先转发服务

      


拥塞避免

       某一队列已经被装满时,后续向该队列发送的报文全部丢弃,直至拥塞解除这种处理方式称为尾丢弃(Tail Drop)

为什么要拥塞避免?

1、因为会导致TCP全局同步问题

怎么产生的TCP全局同步?为什么会有TCP全局同步?

        当大量TCP报文丢弃后会进行重连接,会造成TCP慢启动(滑动窗口大小的值从初始值慢慢增加),TCP确认包由于拥塞被丢掉,故发送方未收到TCP确认,则认为网络发生了拥塞,于是同时将TCP Window Size减小,则整体流量同时减小。流量减小拥塞消除。当流量越来越大时,队列满了进行尾丢弃,又会进行重连接,周而复始。

2、会导致TCP饿死现象

                            TCP报文将进行尾丢弃时Window Size减小,TCP流量整体减小,而UDP流量并不会减少,反而可能会占满整个队列,造成TCP饿死现象。

3、会导致无差别丢弃

                            尾丢弃很可能导致大量非关键数据被转发,而大量关键数据被丢弃。

解决尾丢弃办法1:

              RED(早期随机检测)

在队列未装满时先随机丢弃一部分报文。

通过预先降低一部分TCP连接的传输速率来尽可能延缓TCP全局同步的到来。

解决尾丢弃办法2:

              WRED(加权早期随机检测)

通过设置报文的丢包的高门限、低门限及丢包率。

报文到达低门限时,开始丢包,

到达高门限时丢弃所有的报文,随着门限的增高,丢包率不断增加,最高丢包率不超过设置的最大丢包率。

到达高门限,报文全部丢弃。

弥补了尾丢弃的三个缺点,且大大提高了链路带宽利用率。


流量监管与流量整形

流量监管与流量整形属于流量动作,对流量规格监督来限制流量及资源使用

1)流量监管:对于超出的流量直接丢弃(只能在入方向做)

       优点:可以对不同类别的报文分别进行限速

       缺点:当链路空闲时,造成带宽浪费;丢弃的流量可能要进行重传

典型的流量监管技术

CAR(约定访问速率)

超出限定速率可能会被丢弃或者降低优先级转发

当对丢包率非常敏感的时候,不可使用流量监管,因为可能会丢弃

2)流量整形:对于超出的流量先缓存到队列中,等待空闲带宽时,将数据再进行传输(只能在出方向做)

       优点:可实现对不同报文分别进行限速,缓冲机制可减少带宽浪费,减少流量重传

       缺点:可能会增加延迟

      

典型流量整形技术

1)GTS

2)LR(接口限速)

      

超出限定速率的数据报文会放入缓存,链路空闲再发送(也会存在队列)

对延迟比较敏感的流量不可使用流量整形。

判断是否限速的工具:令牌桶

为什么要有令牌桶?

要实现流量的控制,必须有一种机制可以对通过设备的流量进行度量。令牌桶是目前最常采用的一种流量测量方法,用来评估流量速率是否超过了规定值。

实现原理是什么?

每单位时间(可以设置秒)内将数据报文放入令牌桶

为什么要有两个桶?

单桶最大的问题是无法允许流量的突发(超过额定速率会丢还是存)

1、单桶单速率流量监管

                     实现原理:每单位时间(可以设置秒)内将数据报文放入令牌桶,若超过CIR,可能会丢也可能会存入缓存,却决于配置的流量监管还是流量整形技术。

2、双桶单速率流量监管

CBS:C桶的大小    EBS:E桶的大小

E桶里存放的速率都是上一秒C桶剩余的速率,每过一秒E桶都会清空

当EBS≠0时,称为单速双桶。当EBS=0,E桶的令牌数始终为0,相当于只使用了一个令牌桶——C桶,这种情况也称为单速单桶。单速单桶中,报文只标记为绿、红两色。

如上图使用双桶单速令牌桶,速率令牌转发过程:

配置每秒放入10M速率

第一秒C桶放入10M速率,假设有3M流量经过,10M-3M=7M,剩余7M放入E桶中做缓存。

第二秒C桶再次放入10M速率,此时所有速率为10M+7M=17M。假设有4M流量经过,10M-4M=6M,在这里E桶的速率会清空并放入刚得到C桶的6M。

第三秒C桶再次放入10M速率,此时所有速率为10M+6M=16M,假设此时有12M流量经过,直接调用C桶E桶中所有速率,16M-12M=4M,此时E桶会清空并放入C桶的速率0M。

第四秒C桶再放入10M速率令牌,此时所有速率为10M,E桶为0M,假设此时有13M流量经过,直接调用C桶所有速率令牌,剩余3M根据流量监管或流量整形进行丢弃或者缓存。

如果在C桶中就超出了CIR,具体丢还是缓存在于配置了流量监管还是流量整形

缺点是不能持续突发,只能断续突发

单速率令牌桶名词:

                            CIR(Committed Information Rate):承诺信息速率

                            CBS(Committed Burst Size):承诺突发尺寸

                            EBS(Extended burst size):超额突发尺寸

流量评估规则:

如果C桶能满足超出CIR标志(未超过C桶)为绿色

如果超过C桶没超过E桶CIR标志为黄色

如果C桶+E桶不能满足超出CIR标志(C桶E桶都超出)为红色

默认情况下,greenyellow进行转发,red报文丢弃

3、双桶双速率流量监管(使用最多)

CBS:C桶的大小    PBS:P桶的大小

可以实现基于报文速率的突发

与双桶单速不同的是,将双桶单速的E桶换成了P桶,跟C桶一样按照单位时间向令牌桶内放入速率令牌。C桶的约定信息速率为CIR,P桶为PIR。

C桶与E桶可以叠加使用,C桶与P桶不会叠加使用。

 如上图使用双桶双速令牌桶,速率令牌转发过程:

配置C桶每秒防入10M,P桶每秒放入20M

第一秒C桶放入10M,P桶放入20M,假设有3M流量经过,C桶P桶都可满足,10-3=7M,20-3=17M。携带绿色标记出。

第二秒C桶依旧放入10M,P桶放入20M,叠加上限为10M、20M不会超过上限。此时假设有15M流量经过,C桶无法满足会转交给P桶,20M-15M=5M。携带黄色标记出

第二秒C桶依旧放入10M,P桶放入20M,叠加上限为10M、20M不会超过上限。假设有21M流量经过,C桶无法满足,转交给P桶也无法满足,流量会携带红色标记出。

双速率令牌桶名词:

                            CIR(Committed Information Rate):承诺信息速率

                            CBS(Committed Burst Size):承诺突发尺寸

                            PIR(Peak Information Rate):表示峰值信息速率

                            PBS(Peak Burst Size):表示峰值突发尺寸

流量评估规则:

                     如果C桶能满足(不超过C桶 P桶)超出CIR标志为绿色

                     如果超过C桶没超过P桶CIR标志为黄色

                     如果C桶+E桶不能满足超出CIR标志为红色

默认情况下,greenyellow进行转发,red报文丢弃

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

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

相关文章

Abaqus 2022最新版下载软件安装包 永久安装包详细安装流程

Abaqus 2022是一套功能强大的工程模拟的有限元软件,其解决问题的范围从相对简单的线性分析到许多复杂的非线性问题。Abaqus包括一个丰富的、可模拟任意几何形状的单元库。并拥有各种类型的材料模型库,可以模拟典型工程材料的性能,其中包括金属…

浏览器网络之TCP与UDP

文章目录 网络模型TCP协议建立连接——三次握手断开连接——四次挥手为什么要三次握手与四次挥手 不常使用的协议——UDPTCP与UDP的区别UDP的使用场景 总结 网络模型 在理解TCP与UDP 之前,首先需要对网络结构有一些基本的认识,在互联网发展的初期&#…

【golang学习笔记】——(二)配置golang vscode开发环境

本次学习采用vscode进行开发,vscode有比较成熟的插件,使用起来比较方便。 一、插件下载 搜索“Go”,第一个插件即为go的开发插件,进行安装即可。 二、go辅助插件下载 使用快捷键:CtrlShiftP 输入Go:Install/Update T…

SpringCloud之组件Hystrix简介

服务雪崩介绍 服务提供者不可用导致服务调用者也跟着不可用,以此类推引起整个链路中的所有微服务都不可用, 服务提供者A因为某种原因出现故障,那么服务调用者服务B依赖于服务A的请求便无法成功调用其提供的接口,假以时日依赖于服务…

电子表格软件能解决什么问题?

在当下的时代,全球经济非常活跃,对于企业来说,经营的成果需要“用数字说话”——以数字来反映经营管理的的状况,这些都离不开报表,可以说报表的需求是无处不在的。 在企业所有的科技类项目中报表是最基本的功能。作为…

第二章:uniapp整合axios之真机测试两问题

第二章:uniapp整合axios之真机测试两问题 上一章节,笔者编写了uniapp整合axios并实现前后端跨域请求的方案,完成了这些基本配置后,在浏览器端的测试基本是可以完成了,但是当笔者将程序运行到手机时,却出现…

4个 Python 库来美化你的 Matplotlib 图表

Matplotlib是一个被广泛使用的Python数据可视化库,相信很多人都使用过。 但是有时候总会觉得,Matplotlib做出来的图表不是很好看、不美观。 今天我就给大家分享四个美化Matplotlib图表的Python库,它们可以轻松让你的Matplotlib图表变得好看…

fastjson 反序列化之mysql JDBC 利用

前言: 在打春秋云境Exchange 靶场时,入口点是华夏ERP 2.3版本系统,存在fastjson 反序列化漏洞,在尝试常见的fastjson利用链反弹shell都没有反应,最终使用mysql JDBC利用链反弹shell成功。在此记录一下。 复现本地靶场…

QT安装mysql驱动和使用ODBC连接mysql

文章目录 QT安装mysql驱动和使用ODBC连接mysql使用驱动连接mysql编译mysql驱动连接mysql 使用ODBC连接mysql QT安装mysql驱动和使用ODBC连接mysql 上一篇博文中提到了mysql的使用,但是很多人在使用新版Qt连接mysql的时候出现连接不上或者是没有mysql驱动的问题&…

不懂就问,Milvus 新上线的资源组功能到底怎么样?

在近期更新的 Milvus 2.x 版本中,我们上线了在社区中呼声一直很高的【资源组功能】。有了这个功能,用户再也不需要“为每个 collection 部署一套 Milvus 服务”的方案,轻松实现对 Query Node 资源进行分组管理,达到物理资源隔离的…

【C++】STL中的容器适配器 stack queue 和 priority_queue 的模拟实现

STL中的容器适配器 一、容器适配器1、什么是容器适配器2、STL标准库中的容器适配器 二、stack的模拟实现1、stack的简单介绍2、栈的模拟实现 三、queue的模拟实现1、queue的简单介绍2、queue的模拟实现 四、priority_queue的模拟实现1、priority_queue的简单介绍2、priority_qu…

家用洗地机哪款好用?好用的洗地机分享

要说现在家居清洁用什么单品更省心,洗地机必须要算一项。虽然这在国际上也不是什么新鲜的概念了,但是在国内兴起也只是这几年的事,关于家用洗地机什么牌子最好之类的问题也是很多人都比较关心的问题。我个人也是不喜欢做家务的,家…

Anaconda及其他说明及安装

来自神秘人的投稿! 以下内容来源于官方视频说明:Anaconda Distribution versus Miniconda和其他整理与添加。 一、基础信息了解 1. 什么是Anaconda Anaconda Distribution:形象的比喻——一台笔记本电脑,一切都组装好了&#x…

利用用户生成内容来促进您的 WooCommerce 商店的销售

用户生成内容 (UGC) 是由对品牌或其产品和服务进行评论或评论的消费者创建的内容。它可以包括评论、照片、博客文章、推文或任何类型的社交媒体内容。 UGC 可以应品牌要求制作,也可以由产品用户独立制作。当用户生成的内容是独立制作的时候——比如一个新布加迪手…

UG NX二次开发(C#)-建模-移除特征参数

文章目录 1、前言2、在UG NX中的操作3、 利用UFun函数实现1、前言 UG NX建模方式是采用特征建模的,创建一个对象都是一个特征,这在历史记录中可以查看特征的建模历史、特征的参数已经特征之间的关联关系。有时为了设计的需要,需要去除特征之间的关联关系,那么就要移除特征…

【硬件外设使用】——ADC

【硬件外设使用】——ADC ADC基本概念ADC使用方法pyb.adcmachine.adc ADC可用的传感器 ADC基本概念 ADC是模拟数字转换器(Analog-to-Digital Converter)的缩写,它是一种将模拟信号转换成数字信号的电子元件。 ADC广泛用于测量和监测领域&…

sggJava基础第四天

1 分支结构 分支结构 根据条件,选择性地执行某段代码。 有if…else和switch-case两种分支语句。 概述 顺序结构的程序虽然能解决计算、输出等问题 但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构 if…else形式 单分支结构 代码实现 …

leetcode160. 相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&…

把脉分布式事务的模型、协议和方案

在当前的技术发展阶段,不同的业务场景对一致性、可靠性、易用性、性能等要求不同,应用架构可以根据实际场景的需求,灵活选择合适的分布式事务解决方案。行业中把分布式事务解决方案分为刚性事务方案和柔性事务方案这两大类。 就刚性事务这个…

leetcode328. 奇偶链表

给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。 第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。 请注意,偶数组和奇数组内部的相…