一个字母改变了系统边界
RDMA 的 R 代表 Remote。它通常在本地仍使用网卡 DMA 引擎,但额外加入网络传输、内存注册、队列和远端保护语义;因此不能把任意 PCIe DMA 设备称为 RDMA。
01
DMA 是本机 I/O 的基础机制
存储控制器、网卡和图形设备都可以通过 DMA 与本机内存交换数据。操作系统驱动负责准备缓冲区、建立设备映射、提交描述符并回收资源。
IOMMU 与 DMA Remapping 可以把设备限制在获准的地址范围。这里不需要另一台计算机,也不定义网络上的远端访问协议。
02
RDMA 在网络两端增加了什么
RDMA 面向高吞吐、低延迟和低 CPU 占用的跨主机通信。RDMA-capable NIC 向软件栈提供 RDMA 接口;数据可直接放入已经注册的应用缓冲区,减少中间复制。
常见承载包括 iWARP、InfiniBand 和 RoCE。它们的网络与部署要求不同,但都需要明确的连接、队列、内存注册和保护状态。
03
两条数据路径如何比较
普通网卡 DMA 的典型路径是本机内存、PCIe 网卡和网络帧;远端主机的网络栈再处理收到的数据。RDMA 则让 RDMA 适配器依据协议和已授权状态,把数据直接放置到远端已注册区域。
RDMA 设备内部仍可能依靠 DMA 引擎访问本机内存,所以二者有关联但不是同义词:DMA 是底层数据搬运能力,RDMA 是建立在网络和内存保护语义之上的通信模型。
04
RDMA 仍然需要内存保护
“Direct”不代表无权限检查。应用需要注册可用于 RDMA 的内存,适配器与软件维护访问键、队列和连接状态,使操作限制在获准区域。
网络访问控制、身份与加密需求也不会因零复制而消失。Microsoft 的 SMB Direct 在受支持系统中可结合 SMB 加密,说明性能路径与数据保护需要共同设计。
05
如何判断应该使用哪个术语
如果问题是本机 PCIe 设备如何访问主机缓冲区,应讨论 DMA、DMA 地址、描述符和 IOMMU。如果问题是服务器之间如何低延迟传输到注册内存,应讨论 RDMA、RNIC、队列和网络承载。
仅有 10GbE、光纤或两台电脑不能证明 RDMA 已启用;需要硬件能力、驱动、操作系统接口和端到端配置共同支持。
FAQ
常见问题
01RDMA 是否完全不使用 CPU?
不是。它显著减少数据复制和协议处理中的 CPU 工作,但连接管理、提交工作、完成处理和应用逻辑仍需要 CPU。
02所有高速以太网卡都支持 RDMA 吗?
不支持。链路速率不能证明 RDMA capability,必须核对适配器、驱动和操作系统公开能力。
03RDMA 会绕过 IOMMU 吗?
不应这样理解。RNIC 对本机内存的设备访问仍属于平台 DMA 安全模型,并需要正确映射和权限控制。
04SMB Direct 与普通 SMB 有什么关系?
SMB Direct 让 SMB 在可用时利用 RDMA 的低延迟、低 CPU 和高吞吐;常规协议协商和故障转移仍由 Windows 网络栈管理。
SOURCES
