拥塞管理与拥塞避免

news2025/7/19 6:22:13

拥塞管理与拥塞避免

    • 背景来源
    • 产生情景
    • 队列技术
    • FIFO:First In First Out
    • RR:Round Robin
    • WRR:Weight Round Robin
    • PQ(Priority Queuing)
    • CQ(Custom Queuing)
    • WFQ(Weight Fair Queuing)
    • 各种队列调度技术的对比
    • 队列技术产品的使用
    • 拥塞避免机制
    • 尾丢弃
    • RED(Random Early Detection)
    • WRED(Weight Random Early Detection)

背景来源

当网络中间歇性的出现拥塞,时延敏感业务要求得到比非时延敏感业务更高质量的QoS服务时,需要进行拥塞管理。拥塞避免是指通过监视网络资源(如队列或内存缓冲区)的使用情况,在拥塞发生或有加剧的趋势时主动丢弃报文,通过调整网络的流量来解除网络过载的一种流量控制机制。

产生情景

流量从高速端口流向低速端口会在低速端口上产生拥塞,如图A;流量从多个端口流向同一个端口会在汇聚端口上产生拥塞,如图B拥塞管理是指网络在发生拥塞时,如何进行管理和控制。处理的方法是使用队列调度技术。将所有要从一个接口发出的报文进入多个队列,按照各个队列的优先级进行处理。通过适当的队列调度机制,可以优先保证某种类型的报文的QoS参数,例如带宽、时延、抖动等。
在这里插入图片描述

队列技术

当拥塞发生时,多个报文会同时竞争使用资源,导致得不到资源的某些业务报文被丢弃,尤其不能保证关键业务的带宽、时延、抖动等QoS参数。此时如何制定一个资源的调度策略决定报文转发的处理次序,就是拥塞管理的中心内容。对于拥塞管理,一般采用队列调度技术,常见的队列调度技术有以下几种:

  • FIFO: First ln First Out,先进先出队列
  • RR: Round Robin,轮询队列
  • WRR: Weight Round Robin,按权重轮询队列.PQ: Priority Queuing,优先级队列
  • CQ: custom Queuing,自定义队列
  • WFQ: weighted Fair Queuing,加权公平队列

FIFO:First In First Out

在这里插入图片描述
从接口输出的报文,按照到达的先后顺序进入接口的FIFO队列,调度器按照先进先出的原则,从队首开始,以此发送报文。所有的报文在发送的过程中,没有任何区别,也不对报文传送的质量提供任何保证。

RR:Round Robin

在这里插入图片描述
RR是Round Robin的缩写,是一种简单的调度方式,采用轮询的方式,对多个队列进行调度RR以环形的方式轮询多个队列。如果轮询的队列不为空,那么就从该队列去走一个报文;如果该队列为空,那就直接跳过该队列,调度器并不等待。

WRR:Weight Round Robin

在这里插入图片描述
WRR(Weight Round Robin)主要是针对RR不能设置权重的不足,在轮询的时候,每个队列享受的机会和该队列的权重成比例。WRR最初是针对固定包长的(ATM)设计的调度算法。WRR对于空队列直接跳过,调度一周结束的时间变短,因此当某个队列的流量小的时候,剩余带宽能够被其它队列按照比例占用。(在ATM中,每个数据包的长度都是固定的,因此权重对于ATM来说很好用,但是在以太网中,每个包的长度是不固定的,现在假设队列a的权重虽然是3,但是包的长度很短,反而权重为1的队列有一个很大的包,就会阻塞掉整个队列)

PQ(Priority Queuing)

在这里插入图片描述
PQ(Priority Queuing)是一种按照严格优先级(SP,Strict Priority)进行的调度队列。PQ对队列划分等级,只有搞的优先级队列排空的时候,才会从低一级的队列调度报文,这样重要的业务比其他业务提前获得服务。

CQ(Custom Queuing)

在这里插入图片描述
CQ(Custom Queuing)可以支持17个队列,队列0用于系统队列,队列0和其他队列之间是SP关系,只有队列0排空之后,才能为其他队列进行服务,队列0一般用于协议报文。队列1-16没有优先级关系,采用轮询的方式,每次调度的时候从队列中调度固定的字节数,在轮询下一个队列之前,将数据包发出去,当某个队列已经调度了规定的字节数,或者是队列为空,则轮询下一个队列。

WFQ(Weight Fair Queuing)

在这里插入图片描述
报文到达接口之后,首先对报文进行分类,不同的流分入不同的队列。在出队的时候,WFQ按照流的权重分配每个流应占的带宽。权重数值越小,所得的带宽就越少,权重数值越大,所得到的带宽就越大。这样保证了相同优先级业务之间的公平,体现了不同优先级业务之间的权重。

各种队列调度技术的对比

在这里插入图片描述

队列技术产品的使用

目前产品中,主要使用FIFO、WFQ、PQ三种队列技术来实现拥塞管理。对于队列配置,用户无须关心采用什么抽象的调度算法,只需关心队列所承载业务的外在流量参数特征,比如保证多少兆的带宽、峰值最多多少兆的带宽、要占剩余带宽的比例权重等。根据配置的流量参数选用不同的调度算法来严格保证用户的配置。
端口队列调度采用PQ+WFQ调度算法,采用这种调度优势在于,既能使时延敏感的实时业务得到保证,也使优先业务的报文的带宽占用可以绝对优先,又可以为不同优先级的流根据配置的权重分配不同的带宽。

拥塞避免机制

拥塞避免是一种流控机制,它可以通过监视网络资源(如队列或内存缓冲区)的使用情况,在拥塞有加剧的趋势时,主动丢弃报文,通过调整网络的流量来解除网络过载。
传统的丢包策略采用**尾部丢弃(Tail-Drop)**的方法。当队列的长度达到某一最大值后,所有新到来的报文都将被丢弃。这种丢弃策略会引发TCP全局同步现象。为避免TCP全局同步现象,可使用RED或WRED。

  • RED: Random Early Detection,随机早期检测
  • WRED: Weighted Random Early Detection,加权随机早期检测

尾丢弃

在这里插入图片描述
从图中可以看到,当三条线都到达了饱和带宽的时候,会使用尾丢弃,可以发现到达顶峰之后,三条线都会同时降低到某一个值,这个时候,中间就会出现空白,也就是说这一部分的带宽是没有利用到的。这就是TCP全局同步所带来的后果。那怎么进行避免这种结果呢?

RED(Random Early Detection)

在这里插入图片描述
随机早期丢弃,当队列长度大于20小于40的时候进行随机丢弃,如果平均队列长度大于40,那就采取尾丢弃策略。这种方式虽然可以在一定程度之上避免TCP全局同步,但是随即丢弃的话还是有可能将重要的包丢掉,说白了就是无法有选择性的丢弃。

WRED(Weight Random Early Detection)

在这里插入图片描述
我们可以发现,随着平均队列长度的增加,包也会由选择醒的增加,三条线都是AF2,但是后面加了的数字代表丢弃的优先级,数值越大,就越先丢弃。AF23中最后的数字3是三者里面最大的,所以就会优先丢弃AF23,最终也就实现了有选择性进行丢弃。

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

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

相关文章

入托不焦虑 | 如何帮宝宝更好地融入托班?

上托班是教育重要的一环,是宝宝开始适应集体过程的起点,宝爸宝妈也是忧喜交加:高兴的是宝宝慢慢长大开始上学了;忧虑的是从没有离开家的宝宝会不会适应托班生活呢? 今天我们就来分享一下如何引导宝宝更快地适应园区生…

【Unity】程序集Assembly模块化开发

笔者按:使用Unity版本为2021.3LTS,与其他版本或有异同。请仅做参考 一、简述。 本文是笔者在学习使用Unity引擎的过程中,产学研的一个笔记。由笔者根据官方文档Unity User Manual 2021.3 (LTS)/脚本/Unity 架构/脚本编译/程序集定义相关部分结…

【Spring6】IoC容器之基于注解管理Bean

3.3、基于注解管理Bean(☆) 从 Java 5 开始,Java 增加了对注解(Annotation)的支持,它是代码中的一种特殊标记,可以在编译、类加载和运行时被读取,执行相应的处理。开发人员可以通过…

Java基本数据类型变量自动提升、强制类型转换、String基本类型使用

文章目录基本数据类型变量自动提升特殊情况强制类型转换String基本类型使用基本数据类型变量自动提升 规则: 将取值范围小(或容量小)的类型自动提升为取值范围大(或容量大)的类型 。 byte、short、char-->int-->…

HCIP---回顾HCIA

HCIA回顾: 抽象语言---编码 编码---二进制 二进制---电信号 处理电信号 OSI参考模型----OSI/RM (Open System Interconnect-----开放式系统互连) 应用层:为终端用户提供网络服务接口 表示层:提供数据格式转换服务 会话层&#xff1a…

基于深度学习的鸟类检测识别系统(含UI界面,Python代码)

摘要:鸟类识别是深度学习和机器视觉领域的一个热门应用,本文详细介绍基于YOLOv5的鸟类检测识别系统,在介绍算法原理的同时,给出Python的实现代码以及PyQt的UI界面。在界面中可以选择各种鸟类图片、视频以及开启摄像头进行检测识别…

基于同步整流技术的Buck开关电源设计方法

基于同步整流技术的Buck开关电源设计方法 典型的Buck电路 同步整流的Buck电路 摘要 B u c k 变换器作为一种基本的开关电源变换器,在电力变换场合具有广泛的应用。 为解决 B u c k 变换器工作在电感电流连续状态下,续流二极管关断时存在较大的反向电流…

重资产模式和物流网络将推动京东第四季度利润率增长

来源:猛兽财经 作者:猛兽财经 强劲的2022年第三季度财务业绩 2022年11月18日,京东(JD)公布了2022年第三季度财务业绩,净收入为2435亿元人民币,增长了11.4%。净服务收入为465亿元人民币&#xf…

【C++知识点】异常处理

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📚专栏地址:C/C知识点 📣专栏定位:整理一下 C 相关的知识点,供大家学习参考~ ❤️如果有收获的话,欢迎点赞👍…

深度学习知识点全面总结_深度学习总结

深度学习知识点全面总结_深度学习总结 神经网络与深度学习结构(图片选自《神经网络与深度学习》一邱锡鹏) 目录 常见的分类算法 一、深度学习概念 1.深度学习定义 2.深度学习应用 3.深度学习主要术语 二、神经网络基础 1. 神经网络组成 感知机 多层感知机 3.前向传播…

【JS代码优化二】ES6 数组和对象篇

Vue3 Vite VueRouter Pinia Axios Element Plus 项目实战(持续更新中…) 序:如何让代码看起来更优雅?代码是由文字堆叠起来的可以被机器执行的程序。它记载着相关信息(状态)、表达相关的情绪&#xf…

vue中引入路径用法及说明

引入路径的用法及说明Vue文件中引用路径的介绍1、路径 ././当前文件同级目录2、路径 …/…/当前文件上一级目录3、符号 的作用是在你引入模块时,可以使用 代替 /src 目录,避免易错的相对路径。Vue中使用1. vue.config.js配置文件中使用chainWebpack(con…

Go语言学习的第三天--上部分(基础用法)

前两天经过不断度娘,与对up主的跟踪学习了解了go的历史,今天开始了go的基础!!本章主要是go 的注释、变量及常量的梳理一、注释不管什么语言都有自己的注释,go也不例外 !!单行注释 // 多行注释 …

22- Pytorch实现天气分类 (Pytorch系列) (项目二十二)

项目要点 4种天气数据的分类: cloudy, rain, shine, sunrise.all_img_path glob.glob(rG:\01-project\08-深度学习\day 56 迁移学习\dataset/*.jpg) # 指定文件夹 # import glob获取随机数列: index np.random.permutation(len(all_img_path))建立数组和索引的关…

Java操作数据库基本原理

- 四年前存稿 Java操作数据库基本原理概述 全称Java Database Connectivity,Java的数据库连接,使用Java语言操作数据库,定义了操作所有关系型数据库规则(接口) 使用步骤 我的mysql是8版本的,使用jar包时必须使用8版本的&#x…

6年Android开发最终被优,事后加入车载开发,开启新起点~

如今传统Android 开发行业的岗位越发紧张了,经过去年一些互联网大厂的部门人员优化、开源截流等操作,加快了内卷的速度,原本坐山观虎斗我,没想到也被卷入其中。 1. Android 开发6年,无情中招 就去年年底,…

RZ/G2UL核心板-40℃低温启动测试

1. 测试对象HD-G2UL-EVM基于HD-G2UL-CORE工业级核心板设计,一路千兆网口、一路CAN-bus、 3路TTL UART、LCD、WiFi、CSI 摄像头接口等,接口丰富,适用于工业现场应用需求,亦方便用户评估核心板及CPU的性能。HD-G2UL-CORE系列工业级核…

铁路与公路

蓝桥杯集训每日一题acwing4074 某国家有 n 个城市(编号 1∼n)和 m 条双向铁路。 每条铁路连接两个不同的城市,没有两条铁路连接同一对城市。 除了铁路以外,该国家还有公路。 对于每对不同的城市 x,y,当且仅当它们之…

Mars3D美丽乡村系统发布

近日,我们基于Mars3D平台做了一个Mars3D美丽乡村应用系统,于2023年3月7日正式发布上线!该系统提供一个PC浏览器端的“样板房”项目模版,包含常用的地图基础功能,可基于该平台开发新项目,更换数据即可快速形…

C++继承派生以及虚基类的内存分布

C中类有3种权限&#xff1a;public、protected、private。&#xff08;本文为《直击招聘》的笔记总结&#xff09;。如果没有指明默认为private&#xff0c;定义class A如下class A {int x; public:void displaya() {cout << "A::x:" << &x <<…