Flor: An Open High Performance RDMA Framework Over Heterogeneous RNICs
原文链接:osdi23-flor
背景
- 不同厂商、甚至同一厂商的不同代的 RDMA 网卡 (RNIC) 之间没有统一的控制平面接口
- 这些网卡部署在同一集群中时,并不能很好地配合,互相通信时性能存在损失且不均衡
设计
Flor 采用数据平面与控制平面分离的思路,从异构的RNIC中抽象出一组通用的控制功能,构造出通用的高性能RDMA框架,优化了异构RNIC的互操作性,且能够适应轻度有损耗的数据中心网络。
Flor 主要由五个模块构成:连接管理,分块、拥塞控制、可靠性、RTT测量。数据平面采用RDMA WRITE和SEND操作,控制平面则上移到软件处理。
- 连接管理模块:负责建立和释放连接,并管理备份QP,当主QP断链时切换到备份QP,以实现快速恢复;此外在使用软件可靠性模块时还有ACK QP。
- 分块模组:将大的消息分解成小的RDMA请求,而选择性重传和拥塞控制算法以块为基本单元,而非网络包。
- RTT测量模块:负责收集网卡的硬件时间戳并与软件同步,更新RTT;在Flor中RTT是网络拥塞、重传和链路故障检测的信号。
- 可靠性模组:负责存储传输层信息并维护丢包检测和RTT计算的状态,实现基于软件的选择性重传。
- 拥塞控制模块:根据拥塞信息和丢包事件,通过拥塞控制算法计算出拥塞窗口和发送速率;Flor默认的拥塞控制算法是基于RTT的。
评估
主要与 XRDMA 对比。
- 将控制策略上移到软件带来的额外 CPU 开销并不显著,同时可以获得与XRDMA相近的吞吐量。
- 在从1/16384到1/256的不同的高低丢包率场景下,Flor的吞吐量均超过了Mellanox CX-5有损/无损配置+XRDMA的组合。
- 基于软件的拥塞控制能够更好适应有损网络,摆脱了对PFC的依赖,也能够大幅消减异构RNIC之间的性能差异,在跨Pod通信和异构部署的场景下能够获得稳定且均衡的性能表现。
评价
RNIC 层面的“软件定义网络”,将控制和数据平面分开,控制平面交给软件。风格和 Achelous 有类似之处,主要面向大规模部署下暴露出的问题,针对性解决。