DCQCN ( Data Center Quantized Congestion Notification),数据中心量化拥塞通知。它是一种专门为数据中心网络设计的端到端拥塞控制协议。其核心目的是在使用RDMA(RoCEv2) 的网络中,高效地管理网络拥塞,从而保证高吞吐、低延迟和零丢包(或极低丢包)。
简单来说,DCQCN就是RDMA在以太网(RoCE)环境中的“交通警察”,它确保高速数据流不会造成网络堵塞。
本文参阅文献:Congestion Control for Large-Scale RDMA Deployments.pdf
现代数据中心应用需要高吞吐量和超低延迟网络,具有低 CPU 开销。标准 TCP/IP 堆栈不能满足这些要求,但RDMA可以。在 IP 路由的数据中心网络上,RDMA 使用 RoCEv2 协议部署,该协议依赖于基于优先级的流量控制 (PFC) 可实现无中断网络。
但是,由于队头阻塞和带宽分配不均等问题,PFC 会导致应用程序性能不佳。为了缓解这些问题,DCQCN诞生了。
DCQCN 是一种基于速率的拥塞控制协议,它模仿了著名的QCN(Quantized Congestion Notification),但做了适应数据中心的修改,更适合RDMA的高性能、低开销特性。
整个过程可以分为以下四个步骤:
交换机持续监控其出口端口的队列深度。当某个端口的队列长度超过一个预设的阈值(Kmin)时,交换机判断该端口发生了拥塞。对于经过该拥塞端口的数据包,交换机会以一定概率将其IP头中的ECN(显式拥塞通知) 字段标记为“拥塞遭遇”(CE)。这个概率随着队列变长而增加。
被标记了ECN的数据包会继续被发送到接收方服务器。接收方的网卡识别到这个ECN标记后,不会像传统TCP一样等待ACK包,而是立即生成并发送一个名为“CNP”(Congestion Notification Packet)的特殊控制包 directly返回给发送方。
CNP包非常小(约64字节),拥有最高优先级,以确保它能最快速度地返回给发送方,几乎无延迟地报告拥塞。
发送方收到CNP包后,就知道其发出的数据流在某处造成了网络拥塞。发送方会根据内置的算法立即降低其数据发送速率(Rate)。这个降速过程是多级的:
这个“降-增”的循环过程使得DCQCN能够动态、平滑地适应网络状态,既不会过于激进导致带宽浪费,也不会过于保守导致延迟升高。
DCQCN由Mellanox(现NVIDIA的一部分)在其网卡中实现,并广泛应用于微软等大型数据中心,以支持其云存储、分布式缓存等需要高吞吐量和低延迟的服务。由于其重要性和影响力,DCQCN在2025年获得了SIGCOMM“经典之作奖”。
要想实现DCQCN,你的数据中心网络需要满足一些特定条件,并理解其三个核心组件(对应下图)的职责:
组件 | 角色与职责 | 硬件要求 |
---|---|---|
交换机 (CP) | 监控出口队列长度,超过阈值时根据RED算法对数据包进行ECN标记。 | 支持ECN和RED功能的标准数据中心交换机。 |
接收端网卡 (NP) | 检测带有ECN标记的数据包,生成CNP拥塞通知包并返回给发送端。 | 支持RoCEv2的智能网卡 |
发送端网卡 (RP) | 根据收到的CNP包降低发送速率;在未收到CNP时逐步提升速率。 | 支持RoCEv2的智能网卡 |
参考文献
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。