Congestion Control for Large-Scale RDMA Deployments

文章目录

  • Introduction
  • DCQCN
  • Buffer Setting

Introduction

PFC是粗粒度的流量控制机制,在端口层面发挥作用,不区别不同的流。这会导致很多弊端,比如不公平,受害流等。

解决PFC限制的解决方法是flow-level的拥塞控制,DCQCN就是一种RoCEv2上的end-to-end的拥塞控制协议。

DCQCN

DCQCN包括sender(reaction point, RP),switch(congestion point, CP),receiver(notification point,NP)。

CP算法:在switch上,使用以下的概率函数对数据包进行ECN标记。
在这里插入图片描述

NP算法:ECN标记的包到达NP(receiver),表示网络中出现了拥塞。NP发送CNP(Congestion Notification Packets)包,将这个信息传达给sender。对于一个流,如果一个标记的包到达,并且在之前的N微秒内没有CNP被发送,CNP就立即被发送。也就是说,对于每个流, 每N微秒最多发送1个CNP包。作者将N设置为 50 μ s 50\mu s 50μs

RP算法:当一个RP(sender)收到一个CNP时,它减少它的当前发送速率( R C R_C RC)并且更新速率降低因子( α \alpha α),最后记录当前的速率为之后恢复过程的目标速率( R T R_T RT)。
在这里插入图片描述

当RP每K个时间单元没收到反馈时,它就更新 α \alpha α。注意K必须比CNP产生间隔要大。作者将K设置为 55 μ s 55\mu s 55μs
α = ( 1 − g ) α \alpha = (1-g)\alpha α=(1g)α

而且,RP使用计时器和字节计数器增加发送速率。字节计数器每B字节增加一次速率,计时器每T个时间单元增加一次速率。计时器确保流能够快速恢复,即使在它的速率降到一个很低的值时。速率恢复包括两个主要的阶段,第一个阶段是fast recovery,执行如下的F=5轮迭代,以快速接近目标速率 R T R_T RT
R C = ( R T + R C ) / 2 R_C = (R_T + R_C) / 2 RC=(RT+RC)/2

fast recovery后面跟着additive increase,目标速率每次增加 R A I R_{AI} RAI,当前速率缓慢地靠近目标速率:
在这里插入图片描述

状态机如下:
在这里插入图片描述

Buffer Setting

DCQCN需要平衡两个冲突的请求:

  1. PFC不能触发得太早(不能在ECN发送拥塞反馈之前触发)
  2. PFC不能触发得太晚(导致buffer overflow,造成包丢失)

Headroom buffer t f l i g h t t_{flight} tflight:发送到上游设备的PAUSE消息需要一段时间来到达和发挥作用。为了避免包丢失,PAUSE发送者需要保留足够的buffer空间,以处理这段时间内接收的包。这包括PAUSE被发送时in flight的包,以及上游设备处理PAUSE时发送的包。作者将每个端口,每个优先级的 t f l i g h t t_{flight} tflight设为22.4KB。

PFC Threshold t P F C t_{PFC} tPFC:这是一个进入队列在PAUSE发送到上游设备之前,能够增长到的最大大小。在每个进入端口,每个PFC优先级都有它自己的队列。因此,如果switch buffer的总大小为B,有n个端口,需要遵守 t P F C ≤ ( B − 8 n t f l i g h t ) / ( 8 n ) t_{PFC} \leq (B - 8nt_{flight})/(8n) tPFC(B8ntflight)/(8n)。当队列降低到 t P F C t_{PFC} tPFC以下两个MTU时,交换机发送RESUME消息。

ECN Threshold t E C N t_{ECN} tECN:一旦外出队列超过这个阈值,交换机开始标记数据包(即上图中 K m i n K_{min} Kmin)。为了使DCQCN有效,此阈值必须足够低,以使PFC阈值在交换机有机会用ECN标记数据包之前不会被触及。 t E C N t_{ECN} tECN是外出队列阈值, t P F C t_{PFC} tPFC是进入队列阈值。

在此基础想法上,作者设置了阈值的大小。

除此之外,作者在各种参数上进行了测试,从而选出最佳的参数大小。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

目标识别项目实战:基于Yolov7-LPRNet的动态车牌目标识别算法模型(三)

前言 目标识别如今以及迭代了这么多年,普遍受大家认可和欢迎的目标识别框架就是YOLO了。按照官方描述,YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性…

Android开发-Android项目Jenkins自动化打包流程搭建与配置

Android 项目 Jenkins 自动化打包流程搭建与配置 1. 前言2. Jenkins 下载3. 配置电脑的 JDK 环境4. Jenkins 安装和设置5. Jenkins 设置 Android 项目自动打包流程 1. 前言 由于之前公司的 Android 项目需要 APK 自动打包的功能,所以需要搭建 Jenkins 自动化打包的…

【云计算网络安全】僵尸网络详解:工作原理、控制和保护方法

文章目录 一、什么是僵尸网络?二、僵尸网络因为什么原因而诞生?三、僵尸网络主要用途四、僵尸网络如何工作?五、如何控制僵尸网络?5.1 客户端/服务器僵尸网络模型5.1.1 星形网络拓扑5.1.2 多服务器网络拓扑5.1.3 分层网络拓扑 5.2…

3D开发工具HOOPS助力Eleven Dynamics加速开发QA自动化平台

Nexos平台提供强大的可视化功能,并将整体测量时间减少80%。 2021年10月19日,俄勒冈州本德市(Newswire.com)——工程软件开发工具包的领先供应商Tech Soft 3D今天宣布,Eleven Dynamics是一家位于瑞士的初创公司&#x…

知识增强语言模型提示 零样本知识图谱问答10.8

知识增强语言模型提示 零样本知识图谱问答 摘要介绍相关工作方法零样本QA的LM提示知识增强的LM提示与知识问题相关的知识检索 摘要 大型语言模型(LLM)能够执行 零样本closed-book问答任务 ,依靠其在预训练期间存储在参数中的内部知识。然而&…

在SOLIDWORKS搭建一个简易的履带式机器人

文章目录 前言一、构建模型基本单元二、搭建车体模块三.插入轮子4.构建履带 前言 趁着十一假期,在solidworks中搭建了一个履带式机器人小车,计划将其应用在gazebo中完成多机器人编队的仿真。 一、构建模型基本单元 构建底板(a面&#xff09…

Spring5应用之事务处理

作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者! 个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏:Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言事务…

arcgis添加天地图山东wtms服务

arcgis添加天地图wtms服务 首先打开天地图山东网站,进入首页![天地图山东首页](https://img-blog.csdnimg.cn/89df69e1c3d645b4a9e9652a08580342.png)然后点击开发资源进入开发页面点击成为开发者,进入申请秘钥页面,申请秘钥;![在…

Spring5应用之整合MyBatis

作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者! 个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏:Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言为什…

Python图形界面框架PyQt5使用详解

概要 使用Python开发图形界面的软件其实并不多,相对于GUI界面,可能Web方式的应用更受人欢迎。但对于像我一样对其他编程语言比如C#或WPF并不熟悉的人来说,未必不是一个好的工具。 常见GUI框架 PyQt5:Qt是一个跨平台的 C图形用户界…

sanic框架解决多进程共享缓存问题

最近在用sanic框架做项目,今天需要处理多进程共享缓存问题,在网上搜索了很多,知道使用multiprocessing模块,但是导入后,直接使用会报错,然后看官网解决问题。 直接看官方文档点我哦 大致意思如下&#xf…

02 认识Verilog HDL

02 认识Verilog HDL ‍ 对于Verilog的语言的学习,我认为没必要一开始就从头到尾认真的学习这个语言,把这个语言所有细节都搞清楚也不现实,我们能够看懂当前FPGA的代码的程度就可以了,随着学习FPGA深度的增加,再不断的…