DCQCN学习

news/2024/5/19 22:29:16/

主要思想

发送端的拥塞控制主要有两种形式,一种是基于发送窗口的,另一种是基于rate的

DCQCN是一种基于rate的CC,并主要由ECN机制实现

初始设置sending rate为max line rate

接下来CC主要分为三个部分

CP(Congestion Point) 交换机

出端口当前queue length超过阈值K,则给packet打上ECN标记

NP(Notification Point) 接收端

对于每一个flow设置一个计时器,如果当前flow收到ECN标记且前 N μ s N \mu s Nμs内都未收到ECN,则返回一个CNP报文给发送端,且重置计时器

RP(Reaction Point) 发送端

收到CNP报文则执行以下操作:
R T = R C , R C = R C ( 1 − α / 2 ) , α = ( 1 − g ) α + g , R_T=R_C, \newline R_C=R_C(1-\alpha/2), \newline \alpha=(1-g)\alpha+g, RT=RC,RC=RC(1α/2),α=(1g)α+g,
其中, R T R_T RT为旧的sending rate, R C R_C RC为现在的sending rate, α \alpha α为拥塞程度, g g g为设定的更新常数

此外,RP处也设有一个定时器,如果发现连续 K K K时间内均未收到CNP报文,则
α = ( 1 − g ) α , \alpha=(1-g)\alpha, α=(1g)α,
DCQCN没有使用Slow Start算法恢复sending rate,它同QCN类似,定义了两个计数器, T T T B C BC BC,每经过 T T T单位时间,计数器 T = T + 1 T=T+1 T=T+1,每转发 B B B字节,计数器 B C = B C + 1 BC=BC+1 BC=BC+1

M a x ( T , B C ) < 5 Max(T,BC)<5 Max(T,BC)<5时,启用Fast Recovery,每经过一个周期:
R C = ( R T + R C ) / 2 , R_C=(R_T+R_C)/2, RC=(RT+RC)/2,
否则当 M i n ( T , B C ) ≤ 5 Min(T,BC)\le5 Min(T,BC)5时,启用Additive Increase,每经过一个周期:
R T = R T + R A I , R C = ( R T + R C ) / 2 , R_T=R_T+R_{AI}, \newline R_C=(R_T+R_C)/2, RT=RT+RAI,RC=(RT+RC)/2,
这里的 R A I R_{AI} RAI是一个常数

否则,启用Hyper Increase,每经过一个周期:
R T = R T + R H I ⋅ ( m i n ( T , B C ) − 4 ) , R C = ( R T + R C ) / 2 , R_T=R_T+R_{HI}\cdot (min(T,BC)-4), \newline R_C=(R_T+R_C)/2, RT=RT+RHI(min(T,BC)4),RC=(RT+RC)/2,
Additive Increase,这里的 R H I R_{HI} RHI也是一个常数

Buffer设置

对于buffer的设置应遵循两个原则:

1.PFC触发不能过早,保证ECN在其之前触发即可

2.PFC触发不能过晚,要保证网络无丢包

t f l i g h t t_{flight} tflight表示启用PFC后到PFC完全作用后这一段时间内进入buffer的数据量

t P F C t_{PFC} tPFC表示触发PFC的队列长度阈值,假设交换机有 n n n个出端口, B B B为总buffer大小, s s s为已占用buffer大小,则有:
t P F C ≤ ( B − 8 n t f l i g h t − s ) / 8 n , t_{PFC}\le (B-8nt_{flight}-s)/8n, tPFC(B8ntflights)/8n
但实际情境下当Buffer仍有较多空余,随着出端口不断转发,我们不需要过早地触发PFC,所以:
t P F C ≤ β ( B − 8 n t f l i g h t − s ) / 8 , t_{PFC}\le \beta(B-8nt_{flight}-s)/8, tPFCβ(B8ntflights)/8,
t E C N t_{ECN} tECN表示触发ECN的队列长度阈值,显然 s ≤ n t E C N s\le nt_{ECN} sntECN

又由于PFC要在ECN之后触发,所以:
t P F C ≥ n t E C N , t_{PFC}\ge nt_{ECN}, tPFCntECN,
最终可以得到:
t E C N < β ( B − 8 n t f l i g h t ) / ( 8 n ( β + 1 ) ) t_{ECN}<\beta(B-8nt_{flight})/(8n(\beta+1)) tECN<β(B8ntflight)/(8n(β+1))

一些特点

CNP generation

一段时间内只会发送一个CNP,并且与RTT无关,所以对反向链路拥塞不敏感

Rate based congestion control

基于rate的CC比基于窗口的CC更加细粒度且更容易实现

The need for PFC

由于一开始以满速率发送,所以不使用PFC仍会造成大量丢包,故DCQCN须与PFC搭配使用


http://www.ppmy.cn/news/47733.html

相关文章

MySQL数据库系统学习(从入门到精通)

MySQL数据库系统学习 一&#xff0c;了解数据库 1.什么是数据库 英文单词DataBase&#xff0c;简称DB。按照一定格式存储数据的一些文件的组合。 顾名思义&#xff1a;存储数据的仓库&#xff0c;实际上就是一堆文件。这些文件中存储了具有特定格式的数据。 2.什么是SQL S…

转义字符(\)对JavaScript中JSON.parse的影响概述

转义字符(\)对JavaScript中JSON.parse的影响 按照ECMA262第五版中的解释&#xff0c;JSON是一个提供了stringify和parse方法的内置对象&#xff0c;前者用于将js对象转化为符合json标准的字符串&#xff0c;后者将符合json标准的字符串转化为js对象。json标准参考<a href&q…

Java中的序列化与反序列化(一)

1、概述 大家好&#xff0c;我是欧阳方超。今天来看一下Java序列化与反序列化的问题。 2、序列化与反序列化 2.1、序列化与反序列化的概念 在Java中&#xff0c;序列化是将对象转换为可存储或传输的格式&#xff08;一般为字节流&#xff09;的过程&#xff0c;序列化后的字…

为什么网络安全缺口很大,招聘却很少?

2020年我国网络空间安全人才数量缺口超过了140万&#xff0c;就业人数却只有10多万&#xff0c;缺口高达了93%。这里就有人会问了&#xff1a; 1、网络安全行业为什么这么缺人&#xff1f; 2、明明人才那么稀缺&#xff0c;为什么招聘时招安全的人员却没有那么多呢&#xff1…

TensorFlow 2 和 Keras 高级深度学习:6~10

原文&#xff1a;Advanced Deep Learning with TensorFlow 2 and Keras 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#x…

C# Lambda表达式

目录 Lambda表达式的语法如下&#xff1a; Lambda表达式的内联特性 Lambda表达式常用的方法 C# Lambda表达式简介 Lambda表达式是C#语言中一种函数式编程的特性&#xff0c;它的主要作用是简化代码和提高代码的可读性。在使用Lambda表达式时&#xff0c;可以通过其内联特性…

【C++STL精讲】stack与queue的基本使用及模拟实现

文章目录 &#x1f490;专栏导读&#x1f490;文章导读&#x1f337;stack是什么&#xff1f;&#x1f337;stack的基本使用&#x1f337;stack的模拟实现&#x1f337;queue是什么&#xff1f;&#x1f337;queue的基本使用&#x1f337;queue的模拟实现 &#x1f490;专栏导读…

SpringBoot起步依赖和自动配置

文章目录 1、起步依赖2、自动配置 1、起步依赖 概念 起步依赖本质上是一个Maven项目对象模型&#xff08;Project Object Model&#xff0c;POM&#xff09;&#xff0c;定义了对其他库的传递依赖&#xff0c;这些东西加在一起支持某一功能。 简单的说&#xff0c;起步依赖就…

iptables表、链、规则

netfilter/iptables&#xff08;也就是常说的iptables&#xff09;组成Linux平台下的包过滤防火墙&#xff0c;具有完成封包过滤、封包重定向和网络地址转换&#xff08;NAT&#xff09;等功能。 netfilter是Linux 核心中一个通用架构&#xff0c;它提供了一系列的"表&quo…

手敲Mybatis(九)-结果集处理器

1.前言-背景介绍 上节我们处理了参数处理器&#xff0c;本节我们处理结果集处理器&#xff0c;之前我们写了一个DefaultResultSetHandler&#xff0c;我们把返回结果获取对象&#xff0c;填充值什么的写到了一起&#xff0c;流程没有进行解耦&#xff0c;并且只接收了Object的…

信息系统项目管理师-项目范围管理

1.过程 1.1 规划范围管理 为了记录如何定义、确认和控制项目范围及产品范围&#xff0c;而创建范围管理计划的过程。 1.2 收集需求 为实现目标而确定、记录并管理项目干系人的需要和需求的过程。 1.3 定义范围 制定项目和产品详细描述的过程。 1.4 创建WBS&#xff08;工作分解…

数据库备份shell脚本

文章目录 数据库备份shell脚本变量定义FTP 变量定义函数定义主逻辑 数据库备份shell脚本 # var bak_cmd"--userbakup --password123456 --socket/tmp/mysql.sock --no-timestamp" full_dir"/db/full_date %F" incr_dir"/db/incr_date %F" info&…

Kotlin 1.6.0 的新特性

1、稳定版对于枚举、密封类与布尔值主语穷尽 when 语句 一个详尽的when语句包含了所有主题可能的类型或值的分支&#xff0c;或者对于一些类型包含一个else分支。它覆盖了所有可能的情况&#xff0c;使代码更加安全。 即将禁止非详尽的when语句&#xff0c;以使行为与when表达…

多模态之论文笔记ViLT

文章目录 ViLT: Vision-and-Language Transformer Without Convolution or Region Supervision一. 简介1.1 摘要1.2 文本编码器&#xff0c;图像编码器&#xff0c;特征交互复杂度分析1.2 特征交互方式分析1.3 图像特征提取分析 二. 方法 Vision-and-Language Transformer2.1.方…

Docker Desktop使用PostgreSql配合PGAdmin的使用

在看此教程之前&#xff0c;请先下载安装Docker Desktop 安装成功可以查看版本 然后拉取postgresql的镜像&#xff1a;docker pull postgres:14.2 版本可以网上找一个版本&#xff0c;我的不是最新的 发现会报一个问题 no matching manifest for windows/amd64 10.0.19045 i…

R语言贝叶斯方法在生态环境领域中的应用

贝叶斯统计已经被广泛应用到物理学、生态学、心理学、计算机、哲学等各个学术领域&#xff0c;其火爆程度已经跨越了学术圈&#xff0c;如促使其自成统计江湖一派的贝叶斯定理在热播美剧《The Big Bang Theory》中都要秀一把。贝叶斯统计学即贝叶斯学派是一门基本思想与传统基于…

加载美女图片之OpenCV 图像读取与显示

&#x1f4d6;作者介绍&#xff1a;22级树莓人&#xff08;计算机专业&#xff09;&#xff0c;热爱编程&#xff1c;目前在c&#xff0b;&#xff0b;和openCv阶段>——目标Windows&#xff0c;MySQL&#xff0c;Qt&#xff0c;数据结构与算法&#xff0c;openCv&#xff0…

C# 多线程编程的基础知识和常用的线程同步方式

多线程编程是现代软件开发中非常重要的一个方向&#xff0c;C# 作为一门现代化的编程语言&#xff0c;提供了丰富的多线程编程支持。下面我们来介绍一下 C# 多线程编程的基础知识和常用的线程同步方式。 基础知识 在 C# 中&#xff0c;可以使用 Thread 类来创建和管理线程。T…

怎么把avi文件转换成mp4视频格式,4个高能方法

怎么把avi文件转换成mp4视频格式&#xff1f; 当您下载到avi格式的视频文件时&#xff0c;您可能会选择将其转换为MP4格式的文件。 avi是一种由微软开发的多媒体容器格式&#xff0c;尽管现在已经被认为是老旧的技术&#xff0c;但由于其简单易懂的开发API和Windows的通用性&am…

TensorFlow 强化学习:6~10

原文&#xff1a;Reinforcement Learning With TensorFlow 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【ApacheCN 深度学习 译文集】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 不要担心自己的形象&#xff0c;只关心如…