Loading... # RDMA 技术分析 # 一、概述 ## 1. 什么是 RDMA RDMA(Remote Direct Memory Access,远程直接内存访问)是一种为了解决网络传输中服务器端数据处理延迟而产生的技术。 ## 2. 核心特性 ### A. 传统 TCP/IP 传输 数据经过网络堆栈,再经过网卡发送,接收端接收后,按照序列号组装数据。 ### B. DMA 传输 可以直接在设备和内存之间传输数据,不需要经过网络堆栈。 ### C. RDMA 传输 可以实现跨节点的 DMA 数据传输。 ## 3. 技术对比 | 特性 | TCP | DMA | RDMA | |------|-----|-----|------| | CPU 占用 | 较高(通常 10-40% 以上) | 较低(<10%,依赖于实现) | 极低(通常在 1% 以下) | | 延迟 | 10-100 微秒 | 数微秒(内存传输) | 亚微秒到单微秒级 | | 带宽效率 | 1-10 Gbps(视网络条件而定) | 最高可达 100 Gbps(与总线速率相关) | 100-400 Gbps(依赖于 RDMA 网卡型号,如 RoCE、InfiniBand) | | 适用场景 | 通用网络传输 | 本地内存或设备间数据传输 | 高性能网络传输 | | 硬件要求 | 无 | 需要 DMA 控制器 | 需要 RDMA 网卡(如 InfiniBand 或 RoCE) | # 二、RDMA 通信过程 ## 1. 基本概念 RDMA 使用队列的机制进行数据通信,其基本通信单位是 QP(Queue Pairs,队列对)。一个 QP 由一个 SQ(Send Queue,发送队列)和一个 RQ(Receive Queue,接收队列)构成。 ## 2. 通信流程 ```mermaid graph LR A[HOST] -->|提交 WR| B[工作队列 WQ] B -->|消费 WQE| C[RDMA 硬件] C -->|产生 CQE| D[完成队列 CQ] D -->|消费 WC| A ```  ## 3. 详细步骤 - HOST 提交工作请求 WR(Work Request,工作请求),将 WR 放到工作队列 WQ(Work Queue,工作队列) - RDMA 硬件消费 WQE 中的 WR,进行数据传输 - RDMA 硬件消费完成后,产生 CQE(Completion Queue Entry,完成队列条目),将 CQE 放入 CQ(Completion Queue,完成队列)队列中,等待 HOST 消费 - HOST 从 CQ 中消费 WC(Work Completion,工作完成) # 三、RDMA 技术实现 ## 1. InfiniBand ### A. 背景 由 InfiniBand Trade Association(IBTA)在 1999 年提出,旨在为高性能计算(HPC)和大规模数据中心提供高带宽、低延迟的连接,主要由英特尔、NVIDIA、Mellanox(现为英伟达子公司)、IBM 等推动,广泛应用于超级计算机和企业级存储解决方案。 ### B. 应用现状 InfiniBand 已成为数据中心和 HPC 的标准之一,支持多种协议(如 RDMA 和 NVMe over Fabrics),并逐渐向 AI 和机器学习领域扩展。 ### C. 技术特性 - 高带宽:可达 400Gbps - 低延迟:微秒级 - 支持大规模扩展 - 具备先进的流量管理和质量服务(QoS)特性 ## 2. iWARP ### A. 背景 由 IETF 的 RDMA Working Group 在 2000 年提出,旨在通过现有的 TCP/IP 网络实现 RDMA,主要由英特尔、Cisco、Broadcom 等公司推动,尤其在云计算和虚拟化环境中应用广泛。 ### B. 应用现状 iWARP 在企业网络中得到一定应用,尤其是在传统以太网架构下的 RDMA 需求,逐渐被市场认可,但竞争力相对较弱。 ### C. 技术特性 - 兼容性强:可在现有以太网基础设施上运行 - 支持 TCP/IP 协议,降低了 RDMA 的部署门槛 - 适用于中小型数据中心 ## 3. RoCE (RDMA over Converged Ethernet) ### A. 背景 由 IBM 和其他公司在 2008 年提出,旨在将 RDMA 整合到以太网环境中,通过 DCB 技术实现高效的数据传输,主要由 Mellanox(现为英伟达)、Cisco、Intel 等公司推动,逐渐在数据中心和云计算环境中普及。 ### B. 协议版本 - RoCE v1:以太网链路层协议 - RoCEv2:构筑于 UDP/IPv4 或 UDP/IPv6 协议之上,能组建更大的网络 ### C. 技术特性 相较于 InfiniBand,RoCE 的优势在于可以在现有以太网基础设施上运行,能够降低部分的硬件成本,但也很难达到 InfiniBand 成本的 50% 以下。 # 四、Ascend 下的 RDMA ## 1. 硬件架构 Atlas 800 的 RDMA 依赖于 RoCE 网卡。一个 Board 上四个 SF216D-H 网卡,每个 SF216D-H 有两个 200GE 网卡。每个网卡连接一张 NPU 卡,用于组网。 华为 Altas 800 集群组网时,通过一个外部交换机将各个 NPU 卡连接起来,组成一个参数面的网络。由于每个交换机的网卡是有限的,如果需要更大的网络就需要借助 Spine-Leaf 网络拓扑。 ## 2. 常用配置命令 ### A. 设置 IP 地址和掩码 ```bash hccn_tool -i 0 -ip -s address 10.52.11.2 netmask 255.255.255.0 ``` 参数说明: - -i:指定卡的编号 ### B. 设置 RoCE 网卡默认网关 ```bash hccn_tool -i 0 -gateway -s gateway 10.52.11.1 ``` ### C. 设置网络检测对象 ```bash hccn_tool -i 0 -netdetect -s address 10.52.11.1 ``` 这个 IP 主要用来设置检测网络状态,一般设置为网段内的网关地址。 ### D. 使能 TLS ```bash for i in {0..7}; do hccn_tool -i $i -tls -s enable 0; done ``` ## 3. 常用检测命令 ### A. 查看组网 IP ```bash cat /etc/hccn.conf ``` 或者 ```bash for i in {0..7}; do hccn_tool -i $i -ip -g; done ``` ### B. 检查单节点内网卡 IP 的连通性 ```bash for i in {0..7};do hccn_tool -i $i -net_health -g;done ``` ### C. 查看通信端口连接状态 ```bash for i in {0..7};do hccn_tool -i ${i} -link -g;done ``` ### D. 卡健康状态 ```bash for i in {0..7};do npu-smi info -t health -i $i -c 0;done ``` ### E. ECC ```bash for i in {0..7};do npu-smi info -t ecc -i $i;done ``` ### F. PCI ```bash lspci |grep d80 ``` ## 4. 常用组网命令 ### A. 查看光模块状态 ```bash for i in {0..7};do hccn_tool -i ${i} -optical -g;done ``` ### B. 查询 TLS 状态 ```bash for i in {0..7}; do hccn_tool -i $i -tls -g; done |grep switch ``` ### C. 测试连通性 ```bash export ADDRESS=10.52.41.10 for i in {0..7}; do hccn_tool -i $i -ping -g address ${ADDRESS} ; done ``` ### D. 两节点全连接测试 获取对端 IP: ```bash echo "ADDRESSES=$(grep -oP '^address_\d+=\K[\d.]+' /etc/hccn.conf | paste -sd,)" ``` 获取 ADDRESSES 变量设置在另外一台主机后执行: ```bash IFS=',' read -ra ADDR_ARRAY <<< "$ADDRESSES" for addr in "${ADDR_ARRAY[@]}"; do echo "testing ${addr}" for i in {0..7}; do hccn_tool -i $i -ping -g address ${addr} ; done done ``` ## 5. 测试跨机带宽 ### A. 获取接收端卡的 IP ```bash hccn_tool -i 0 -ip -g # 输出示例:ipaddr:10.52.11.3 netmask:255.255.255.0 ``` ### B. 接收端执行 ```bash hccn_tool -i 0 -roce_test reset hccn_tool -i 0 -roce_test ib_send_bw -s 4096000 -n 1000 -tcp ``` ### C. 发送端执行 ```bash hccn_tool -i 0 -roce_test reset hccn_tool -i 0 -roce_test ib_send_bw -s 4096000 -n 1000 address 10.52.41.20 -tcp ``` # 五、参考资料 *** ## 参考资料 1. [RDMA 技术 - 陈少文的网站](https://www.chenshaowen.com/blog/rdma-technique.html) 2. [CANN商用版 8.0.RC3 集合通信用户指南](https://www.chenshaowen.com/static/file/cann-8.0-rc3-userguide.pdf) 最后修改:2026 年 01 月 18 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏