HPCC:高精度拥塞控制

HPCC:高精度拥塞控制

文章目录

    • HPCC:高精度拥塞控制
      • 摘要
      • 1 引言
        • 1.1 背景
        • 1.2 现有CC的局限性
        • 1.3 HPCC的提出
      • 2 研究动机
        • 2.1 大型RDMA部署
        • 2.2 RDMA目标
        • 2.3 当前RDMA CC中的权衡
          • DCQCN
          • TIMELY
        • 2.4 下一代高速CC
      • 3 技术方案
        • 3.1 INT
        • 3.2 HPCC设计
        • 3.3 HPPC的参数
      • 4 仿真结果
      • 5 结论

摘要

TCP是最基础的网络传输层通信协议,其拥塞控制算法是为Internet这种相对低速、高延迟的网络环境设计的。在新一代的高速云网络中,TCP的拥塞控制算法无法充分发挥底层网络能力,而现有高速网络拥塞控制算法(如:RDMA协议中的拥塞控制算法DCQCN、TIMELY)都存在有一定的局限性。HPCC(高精度拥塞控制)是一种新的高速CC机制,它利用网络遥测(INT)获得精确的链路负载信息并精确控制流量。通过解决诸如在拥塞期间延迟INT信息和对INT信息的过度反应等难题,HPCC可以快速收敛以利用空闲带宽,同时避免拥塞,并且可以在网络队列中保持接近零的数据堆积以实现超低的延迟,HPCC也更加公平且易于在硬件中部署。

1 引言

1.1 背景

在过去的十年中,数据中心网络的链路速度从1Gbps增长到100Gbps,而且这种增长还在继续。超低延迟和高带宽是当今和未来高速网络的两个关键要求,越来越多的应用要求超低延迟和高带宽。近年来,数据中心部署了大规模网络,通过聚合以太网版本2(RoCEv2,Converged Ethernet Version 2)实现RDMA(远程直接内存访问)作为当前的硬件卸载解决方案。但是,在运行大规模RoCEv2网络多年后,我们发现RDMA网络在协调低延迟、高带宽利用率和高稳定性方面面临着根本性的挑战。这是因为高速意味着流量以线路速率开始,并积极攫取可用网络容量,这很容易在大规模网络中造成严重拥塞。此外,高吞吐量通常会导致深度数据包排队,这会破坏延迟敏感流的性能以及网络处理意外拥塞的能力。

1.2 现有CC的局限性

为了解决协调延迟、带宽/利用率和稳定性的困难,良好的CC设计是关键。这是因为CC是在高流量负载下避免数据包缓冲或丢失的主要机制。如果CC频繁失败,像PFC或数据包重传这样的备份方法要么会带来稳定性问题,要么会遭受巨大的性能损失。现有的CC如DCQCN和TIMELY,有一些基本的局限性:

收敛慢。对于粗粒度反馈信号,如ECN或RTT,当前的CC方案不知道增加或减少多少发送速率,需要使用启发式来猜测速率更新,并尝试迭代收敛到稳定的速率分布。这种迭代方法处理大规模拥塞事件的速度很慢。

不可避免的数据包排队。DCQCN发送方利用一位ECN标记来判断拥塞风险,TIMELY发送方使用RTT的增加来检测拥塞,发送方只有在队列建立后才开始降低流量,这些构建的队列会显著增加网络延迟。

复杂的参数调整。当前CC算法用于调整发送速率的启发式算法有许多参数需要针对特定网络环境进行调整。例如,DCQCN需要设置15个参数。

1.3 HPCC的提出

前面三个限制的根本原因是传统网络中缺少细粒度的网络负载信息。ECN是终端主机可以从交换机获得的唯一反馈,RTT是一种纯端到端的测量,没有交换机的参与。然而,随着新的交换ASIC中提供的网络遥测(INT,In-network telemetry)功能,在生产网络中获得细粒度网络负载信息并使用它改进CC已成为可能。

HPCC(高精度拥塞控制)是一种新的CC机制,用于大规模高速网络。HPCC背后的关键思想是利用来自INT的精确链路负载信息来计算准确的流量更新。与通常需要大量迭代才能找到合适流速的现有方法不同,HPCC在大多数情况下只需要一个流速更新步骤。使用INT提供的精确信息使HPCC能够解决当前CC方案中的三个限制。

2 研究动机

2.1 大型RDMA部署

数据中心中采用RDMA,以满足分布式存储、数据库和深度学习训练框架等多个关键应用程序的超低延迟和大带宽需求。一般而言,数据中心网络是一个Clos拓扑结构,有三层:ToR、Agg和核心交换机。PoD(交付点,point-of-delivery)是一个基本部署单元,由数十个ToR交换机组成,这些交换机由多个Agg交换机互连。不同的PoD通过核心交换机互连。每台服务器都有两条上行链路,与两个ToR交换机相连,以根据客户的要求实现服务器的高可用性。在当前的RDMA部署中,每个PoD都是一个独立的RDMA域,这意味着只有同一PoD中的服务器才能使用RDMA通信。

大规模RDMA部署可能涉及成千上万的节点,每个节点都在进行高速、低延迟的通信。在这种环境下,拥塞控制的研究需要考虑如何适应大规模并行通信,确保网络稳定性和性能。而现有的CC算法都有一定的局限性,因此需要设计出更高效、更高精度的CC算法。

2.2 RDMA目标

除了超低延迟和高带宽之外,网络稳定性和操作复杂性在RDMA网络中也至关重要,因为RDMA网络比TCP/IP网络面临更多的风险和更严格的性能要求。

RDMA网络有四个基本目标:(1)延迟应尽可能低;(2)带宽利用率应尽可能高;(3)拥堵和PFC暂停应尽可能少;(4)操作复杂性应尽可能低。实现这四个目标将为我们的客户和我们自己提供巨大的价值,我们相信实现这四个目标的关键是一个适当的CC机制。

2.3 当前RDMA CC中的权衡
DCQCN

对于DCQCN,权衡方面:

1、分布式控制:DCQCN引入了分布式控制的思想,允许数据中心网络中的交换机独立地进行拥塞检测和控制。这种分布式方法可以更好地适应大规模网络的动态性和异构性。

2、基于标记的拥塞信号:DCQCN使用基于标记的拥塞信号(PFC标记)来传达网络拥塞状态,这使得交换机能够更精确地指导终端节点的传输速率。

3、快速收敛:DCQCN致力于实现快速的拥塞状态收敛,以减小对网络性能的影响。

局限性:

1、PF开销:基于标记的拥塞信号需要使用PFC(Priority Flow Control)来暂停交换机上的输出队列。PFC的开销可能导致网络的低效利用,尤其在面对短流时。

2、对带宽敏感:DCQCN对带宽非常敏感,可能导致在某些情况下过度保护,并在网络中形成不均衡的流量分布。

TIMELY

对于TIMELY,权衡方面:

1、时延感知:TIMELY引入了对网络时延的感知,以便更精确地调整拥塞控制策略。通过考虑时延,TIMELY可以更好地适应不同的网络环境和负载。

2、弹性多资源:TIMELY考虑了多个资源的弹性调整,包括带宽和排队时延。这种综合考虑可以使算法更全面地适应不同的网络条件。

3、抗噪声能力:TIMELY设计了一种抗噪声的拥塞信号采样方法,有助于更准确地捕捉网络拥塞状态。

局限性:

1、复杂性:TIMELY的设计相对较为复杂,需要综合考虑多个资源的调整,这可能使得实现和管理相对繁琐。

2、对时钟同步的依赖:TIMELY对时钟同步要求较高,需要确保网络中的时钟同步性能良好,否则可能影响算法的准确性。

2.4 下一代高速CC

下一代应用于RDMA的CC或其他类型的高速网络应同时具备以下特性,以显著提高应用性能和网络稳定性:

(1)快速收敛。网络可以快速收敛到高利用率或避免拥塞。流量调整的时间应该适合特定的网络环境,而不是手动配置。

(2)接近空队列。网络内缓冲区的队列大小保持稳定的低,接近于零。

(3)参数很少。新的CC不应该依赖于需要操作员调整的大量参数。相反,它应该适应环境和流量模式本身,以便降低操作复杂性。

(4)公平。新的CC确保了流之间的公平性。

(5)易于在硬件上部署。新的CC算法非常简单,可以在商品NIC硬件和商品交换机硬件上实现。

目前有两个关键趋势,它们有可能实现满足上述所有要求的CC。第一个趋势是交换机在数据平面上更加开放和灵活;特别是网络遥测技术(INT)正在迅速普及。使用INT,发送方可以从ACK数据包准确地知道流路径上的链路负载,这有助于发送方进行准确的流量调整。第二个趋势是NIC硬件的功能和可编程性越来越强,它们有更快的速度和更多的资源来公开数据包级别的事件和处理。利用这些新的硬件特性,设计并实现了HPCC,同时实现了所需的CC特性。

3 技术方案

设计HPCC有两个主要挑战。首先,链路拥塞会延迟数据包上承载的INT信息,从而延迟流量降低以解决拥塞。HPCC旨在限制和控制繁忙链路的传输中总字节数(total inflight bytes),防止发送方发送额外流量,及时反馈延迟。第二,尽管所有ACK数据包中都包含INT信息,但如果发送方盲目地对所有信息做出快速反应,则可能会出现破坏性的过度反应。因此,CC算法需要通过结合每次确认和每次RTT反应,选择性地使用INT信息,实现快速反应而无过度反应。

3.1 INT

In-band Network Telemetry(INT)是一种利用数据转发平面来收集、携带、整理和上报网络状态信息的技术。它不需要使用单独的控制面管理流量来进行上述信息收集,而是通过在数据流中嵌入INT指令,让中间转发设备收集并上报所需的数据。

INT技术利用了数据平面和转发设备的处理能力,通过在数据流中嵌入INT指令,让转发设备在处理数据流的同时收集网络状态信息。这些信息可以包括网络延迟、带宽利用率、丢包率等,以便于网络管理员及时了解网络状况并进行相应的优化调整。
INT技术还具有以下优点:

减少控制平面负载:INT技术不需要使用单独的控制面管理流量进行信息收集,从而减少了控制平面的负载,提高了网络的性能和稳定性。

实时性:INT技术可以实时收集网络状态信息,并快速上报给网络管理员,以便于及时发现和解决问题。

灵活性:INT技术可以根据不同的需求和场景,灵活地嵌入不同的INT指令,以满足不同的网络监控和管理需求。

3.2 HPCC设计

HPCC是一个发送方驱动的CC框架。 如图3所示,采用逐包确认,即sender发送的每个数据包都会得到receiver的确认。 数据包从sender传播到receiver的过程中,路径上的每个交换机都会利用其交换 ASIC 的 INT 功能插入一些元数据,报告数据包出端口的当前负载,包括时间戳(ts)、队列长度(qLen)、传输字节(txBytes)和链路带宽容量(B)。当receiver收到数据包时,会将交换机记录的所有元数据通过ACK发送给sender。然后sender根据带有网络负载信息的 ACK 决定如何调整其流量。

在这里插入图片描述

HPCC是一种基于窗口的CC方案,使用窗口控制infligh字节数。inflight字节数表示已发送但尚未确认的数据量。这里需要解释下,为啥采用控制inflight字节数,而不是控制发送速率。在没有拥塞的情况下,inflight字节数和速率的关系等价于等式inflight=速率×T,其中T是base RTT。与纯粹基于速率的CC方案(在反馈到来之前不断发送数据包)相比,对inflight字节数的控制可以确保inflight字节数在限制范围内,使得sender在达到限制时立即停止发送,无论反馈(ack)延迟了多长时间。 这样一来,整个网络就大大稳定了。

在这里插入图片描述

3.3 HPPC的参数

HPCC具有三个易于设置的参数:η、maxStage和。η控制带宽利用率和队列长度之间的简单权衡(由于数据包随机到达造成的临时冲突。),因此默认将其设置为95%,仅损失5%的带宽,但实现了几乎零排队。maxStage控制状态稳定性和回收可用带宽的速度之间的简单权衡。控制链路上可维持buffer接近零排队的最大并发流数与公平收敛速度之间的权衡,通常设置一个非常小的 来支持链路上的大量并发流。

4 仿真结果

1、使用ns3仿真,下图是HPCC、DCQCN的队列长度的CDF曲线,从图中可以看出HPCC的队列长度维持在比较低的水平。

在这里插入图片描述

2、下图是FCT延迟和流的大小对应的图像关系,从图中可以看出,HPCC的FCT延迟相对于其他现有的算法而言,在绝大多数的流的大小对应的情况之下都要低,只有在流的大小非常大的时候才会比其他算法差一些。

在这里插入图片描述

5 结论

在本文中,我们介绍了一种新型的高精度拥塞控制机制,即HPCC(High Precision Congestion Control),它旨在解决现有高速网络中TCP拥塞控制算法的局限性。在新一代高速云网络中,传统的TCP拥塞控制算法无法充分发挥底层网络能力,而现有的高速网络拥塞控制算法也存在一定的局限性。

HPCC利用网络遥测(INT)技术获取精确的链路负载信息,并通过解决在拥塞期间延迟INT信息和对INT信息的过度反应等难题,实现了快速的拥塞状态收敛,充分利用空闲带宽,同时避免拥塞的发生。与现有的拥塞控制算法相比,HPCC在网络队列中保持接近零的数据堆积,从而实现了超低的延迟,同时更加公平且易于在硬件中部署。
研究动机主要源于大规模RDMA部署和对RDMA网络的目标,包括超低延迟、高带宽、网络稳定性和操作复杂性。分析了现有拥塞控制算法(如DCQCN和TIMELY)的局限性,提出了HPCC的设计思想,通过利用INT信息和设计新的控制机制,实现了快速收敛、接近空队列、参数很少、公平、易于在硬件上部署等特性。

在仿真结果中,HPCC在各项性能指标上展现出明显的优势,特别是在大规模RDMA部署中,其快速收敛和低延迟的特性使其成为下一代高速网络拥塞控制的有力候选。因此,HPCC为满足未来高速网络的需求提供了一种创新的解决方案。

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

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

相关文章

【力扣题解】P404-左叶子之和-Java题解

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P404-左叶子之和-Java题解🌏题目描述💡题解🌏总结…

计算机毕业设计-----ssm流浪猫狗救助管理系统

项目介绍 流浪猫狗救助管理系统。该项目分为前后台; 前台主要功能包括:会员的注册登陆,流浪猫狗知识,领养中心,团队活动,流浪宠物详情,申请领养等; 后台主要功能包括:管理员的用户…

IP多播多播多播

一、简述 1、IP地址 ABCDE类地址 类别网络号第一字节固定值范围A1字节0xxx0~127B2字节10xx128~191C3字节110x192~223D4字节1110224~239E1111 计算机网络——组播地址(多播地址、D类地址)详解 二、多播 1、参数设置 -----IP_ADD_MEMBERSHIP加入多播…

MySQL 核心模块揭秘 |《发刊词》

1. 为什么要写专栏? 我还在做业务系统研发的时候,有一段时间,系统不稳定,慢 SQL 很多。我们团队花了很长时间持续优化 SQL。 我们有一个表格,从慢查询日志里整理出了很多慢 SQL。其中一些 SQL,按照我们的…

React面试题

1. 什么是 React? React 是一个用于构建用户界面的 JavaScript 库。它由 Facebook 开发并开源,广泛应用于现代 Web 应用程序的开发中。 2. React 中的组件是什么? 组件是 React 中构建用户界面的基本单位。它们是可重用且自包含的代码块&a…

详细讲解Java使用EasyExcel函数来操作Excel表(附实战)

目录 前言1. EasyExcel类2. 原理分析3. demo4. 实战 前言 前阵时间好奇下载Excel,特意学习实战了该功能:详细讲解Java使用HSSFWorkbook函数导出Excel表(附实战) 现在发觉还有个EasyExcel也可专门用来读写Excel表 1. EasyExcel类…

flutter 使用高德地图

网址 引入高德地图组件 #地图插件amap_flutter_map: ^3.0.0# 定位插件amap_flutter_location: ^3.0.0 并执行命令 flutter pub get由于高德地图Flutter插件内不包含基础SDK包,所以需要单独引入地图基础SDK,在android文件加下的build.gradle文件中添加…

Spring Boot整合RocketMQ

pom.xml导入RocketMQ依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.2</version> </dependency>application.yml中添加配置 rocketmq:name-ser…

MySQL8 一键部署

#!/bin/bash ### 定义变量 mysql_download_urlhttps://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz mysql_package_namemysql-8.0.33-linux-glibc2.12-x86_64.tar.xz mysql_dec_namemysql-8.0.33-linux-glibc2.12-x86_64 mysql_download_…

uni-app uni.scss内置全局样式变量

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

python3 函数

Python 定义函数使用 def 关键字&#xff0c;一般格式如下&#xff1a; def 函数名&#xff08;参数列表&#xff09;&#xff1a;函数体 让我们使用函数来输出"Hello World&#xff01;"&#xff1a; >>> def hello() :print("Hello World!") &…

深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第三节 栈与堆,值类型与引用类型

深入浅出图解C#堆与栈 C# Heaping VS Stacking 第三节 栈与堆&#xff0c;值类型与引用类型 [深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第一节 理解堆与栈](https://mp.csdn.net/mdeditor/101021023)[深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第二节 栈基本工…

EasyExcel 通过模板 导入、导出、下载模板

EasyExcel 通过模板 导入、导出、下载模板 import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;import javax.validation.constraints.NotBlank; import javax.validation.constraints.Pattern; import java.io.…

Linux 系统管理和监控命令---- auditctl 命令

auditctl 是 Linux 审计系统&#xff08;audit system&#xff09;的一部分&#xff0c;它允许管理员配置审计规则&#xff0c;以跟踪和记录系统活动。这些规则可以帮助你监控对特定文件的访问、追踪特定用户的活动或记录系统调用。以下是 auditctl 的一些常用用法及其示例&…

django调用矩阵分解推荐算法模型做推荐系统

在Django中调用推荐算法模型来构建推荐系统&#xff0c;通常需要几个步骤&#xff1a;训练模型、保存模型、在Django中加载模型以及使用模型进行推荐。以下是这个过程的一个简化示例&#xff1a; 步骤 1: 训练推荐算法模型 首先&#xff0c;你需要使用Python的机器学习库&…

【项目】玩具租赁博客测试报告

目录 一、项目背景 二、项目功能 三、功能测试 一、项目背景 玩具租赁系统采用前后端分离的方法来实现&#xff0c;同时使用了数据库来存储相关的数据&#xff0c;同时将其部署到云服务器上。前端主要有十五个页面构成&#xff1a;用户注册、管理员注册、登录页、用户和管理…

Qt 中使用 MySQL 数据库保姆级教程(下)

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 上篇中我们安装好了 MySQL 数据库和 Navicat 软件&#xff0c;下面在 Qt 中尝试使用数据库 1. 在 Qt 中连接 MySQL 数据库&#…

NAS上使用Docker搭建Wiki.js构建云知识库

文章目录 NAS上使用Docker搭建Wiki.js、PostgreSQL和Nginx云知识库前置条件步骤1&#xff1a;获取wikijs的镜像步骤2&#xff1a;配置容器参数2.1 端口设置2.2 挂载设置2.3 环境变量设置&#xff08;配置数据库&#xff09; 步骤3. 启动界面3.1 切换语言3.2 GIT 配置3.3 用户和…

【K8S 二进制部署】部署Kurbernetes的网络组件、高可用集群、相关工具

目录 一、K8S的网络类型&#xff1a; 1、K8S中的通信模式&#xff1a; 1.1、、pod内部之间容器与容器之间的通信 1.2、同一个node节点之内&#xff0c;不同pod之间的通信方式&#xff1a; 1.3、不同node节点上的pod之间是如何通信的呢&#xff1f; 2、网络插件一&#xff…

jQuery: 整理5---删除元素和遍历元素

1. 删除元素 span{color: white;padding: 8px;margin: 5px;float: left;}.green {background-color: green;}.blue {background-color: blue;}<span class"green">green</span><span class"blue">blue</span><span class"…