本文概览
摘要版
什么是无损(lossless)网络
是RDMA的基础。核心:零丢包、低时延、高吞吐(低延迟和高吞吐之间有些冲突)。有的工业用网络也有零丢包的特点,但不适用于海量算力/数据要求。在技术层面,特指没有因拥塞而丢包的情况的网络。比如5000个交换机同时给一个交换机发数据,不会丢包。
InfiniBand 和 RoCE 的关联和区别
时下比较常用的网络方案是 InfiniBand (下简称IB)方案和 RoCEv2 方案。这两个是并列的。
IB 使用了私有的协议栈、专用硬件,逐跳的严格流控机制,很容易的实现了二层 无损网络,这使得IB的第四层设计可以非常简单高效。但是一个专有的产品,技术较为封闭,成本高。
RoCE全称为 RDMA over Converged Ethernet,是能在 Ethernet 上进行 RDMA 的集群网络通信协议。而原本的以太网没有 IB 那样的无损技术。所以在此讨论 RoCE 更多的是研究无损网络,即,怎么把现在大规模的 Ethernet 改造成无损网络。
RoCE 和 IB 在上层(即对接 RDMA 的 API 部分)方面是一模一样的,只是在下面的内存地址稍有不同。
发明这个东西的全部目的就是想让 RDMA 运行在一个类似 IB 的网络上,为此做了很多努力。结果是性能稍差,而价格实在美丽(无需在数据中心部署 Ethernet 和 IB 两套网络),可以使用普通的以太网交换机,但是需要支持RoCE的网卡。
RDMA & RoCE 概念
RDMA 是 IB 协议的一部分。 它在 IB 中的位置类似 TCP/IP 在传统网络协议栈的位置。
Mellanox 提供的产品就是将 RDMA 协议栈offload到硬件之中,降低了 CPU 占用率。
TCP/IP socket 的发送接收过程是我们耳熟能详的。而RDMA通过设计了WR,WE,WEQ,SQ,RQ等基本元素,辅以能支持从不连续物理内存中读取数据的网卡,实现了zero-copy与内核旁路。
RDMA Verbs API
- RDMA send/recv
- RDMA write/read
- client 怎么知道 server 的内存信息?——同步
- 操作完成后还需一次同步
- 这个同步需要应用程序来处理
RoCE 的起源:超算应用IB很多,性能也好。但现有数据中心部署的还是 Ethernet 。那么把 RDMA 部署到 Ethernet 上,就是 RoCE 了。—— Ethernet 的基础设施+ RDMA 的能力
两代 RoCE 的报文格式
- RoCE v1
- 协议层:基于以太网链路层(L2),使用以太类型(EtherType)0x8915 标识,直接封装InfiniBand传输层报文。
- 报文结构:以太网帧头 + InfiniBand网络层(Global Routing Header, GRH) + 数据负载。无IP头部,仅支持二层网络通信,无法跨子网路由。
- 适用场景:同一广播域内的低延迟通信
- RoCE v2
- 协议层:基于UDP/IP协议栈(L3/L4),使用UDP目的端口4791,支持IPv4/IPv6。
- 报文结构:以太网帧头 + IP头部(IPv4/IPv6) + UDP头部 + InfiniBand基本传输头(BTH) + 数据负载。通过IP路由能力实现跨子网通信。
- 关键改进:
- 可路由性:支持三层网络,扩展了应用范围(如数据中心跨机架通信)
- QoS支持:利用IP头的DSCP字段进行流量优先级标记,结合ECN(显式拥塞通知)实现拥塞控制。
- 可以使用普通的以太网交换机,但是需要支持RoCE的网卡。
RoCEv2物理网络设施
- RoCE 网卡、RoCE 交换机、连接件(传统以太网的光纤和光模块都可以用)、RoCEv2流控机制
流控/拥塞控制机制
(流控和拥塞控制在用词上有些区别:流控是端口间,拥塞是全局。)
下一个重要的问题是怎么让现有 Ethernet 提供无损网络的服务。因为如果底层不是无损网络,RDMA没有意义。
- ECN(Explicit Congestion Notification)显式拥塞通知
- 学过《计算机网络》的都知道,这是 IP 协议中古老的东西:
- 一旦某个交换机觉得自己快要拥塞时,就把接下来经它手的数据包的某个bit打上ECN标记。但仍旧正常传送,不产生丢弃。等到收方收到了数据包,再回发给发方时,这时发方真正得知路径上有拥塞情况,需要减慢发送速度。
- PFC(Priority-based Flow Control)
- 在没有DCQCN时,使用的就是PFC
- 通过让直接上游暂停发送数据 来避免交换机buffer溢出
- 直接告诉上游(交换机 或 网卡)端口,立即暂停发送任何数据!非常的粗暴。
- PFC是交换机端口级别的,不区分具体的流(flow,即连接),一旦暂停就会暂停端口上所有的连接。这种粒度显然太粗了,会导致拥塞扩散,进而导显著的致性能下降。虽然PFC可以区分交换机队列(交换机的每个端口有8个队列),但也于事无补,因为不可能给每个链接都是用一个单独的队列。
显然需要一个flow级别的拥塞控制算法。
- DCQCN 算法(数据中心量化拥塞通知)—— 是 ECN 和 PFC 的组合
- 这是一个为RoCE v2量身打造、可以推动RDMA应用于数据中心的算法
- 有效的打造无损网络
- 足够简单能实现在网卡上(而非OS)
- 端到端的拥塞控制算法(回忆什么是点到点)
- 论文pdf(2015)
- 这是一个为RoCE v2量身打造、可以推动RDMA应用于数据中心的算法
- DCQCN中有三个角色,分别是:
- RP(reaction point): 即发送方网卡
- CP(congestion point): 即交换机
- NP(notification point): 即接收方网卡
- 后两个的行为与之前ECN描述的差不多。重头戏在RP身上:分为降速过程,升速过程,更新alpha三个部分。
阅读更多
推荐视频(b站,从易到难):
BV1q7411A77W
给宝宝看的,一句话总结:RoCE就是将RDMA的特点用于以太网。
BV1WokRYrEZw
短,说了RDMA、IB、RoCE的关系:RDMA是抽象的技术,要想落地,得靠软硬件实现,软件就是RDMA verbs(一种替代tcp/ip的协议规范),在硬件部分,就出现了两种协议,分别是IB和RoCE。
BV18Y4y1z72L
圆桌会,更偏向对于RoCE行业难点、未来趋势的个人理解
BV1GPaseFEwD
英伟达网络技术公开课,技术多点
推荐文章:
RDMA拥塞控制经典论文DCQCN – 知乎