土法炼钢兴趣小组的算法知识备份

【网络工程】RDMA 与 CXL:两条不同的绕开 CPU 路线

文章导航

分类入口
network
标签入口
#rdma#infiniband#rocev2#iwarp#cxl#cxl-mem#cxl-cache#fabric#datacenter#memory-pool

目录

在数据中心场景里,“绕开主机 CPU 做数据搬运”这件事被反复重新发明。RDMA 走的是网络方向:让远端节点的 DMA 引擎直接读写本机内存。CXL 走的是总线方向:让 PCIe 物理层之上承载缓存一致的内存语义,把”内存”从主板边界扩展到整个机架。两者经常被拿来对比,但工程上其实定位完全不同——RDMA 是远端访问协议,CXL 是本地一致性域的扩展

本文不试图说”未来属于哪个”,而是把两者的语义、物理层、一致性模型、失效模式与工程边界放到同一张表里对比,让读者下次在选型会议上能说清楚”这件事 RDMA 能做但 CXL 不能”或者反过来。

参考规范:IBTA InfiniBand Architecture Specification Vol. 1 Release 1.7(2024)、IETF iWARP 相关 RFC(RFC 5040 / 5041 / 5044)、CXL Consortium Compute Express Link Specification Revision 3.1(2023-11)。

一、先看图

flowchart TB
    subgraph H1["Host A"]
        CPU1[CPU + Cache]
        MEM1[本地 DRAM]
        NIC1[RNIC / HCA]
        CPU1 --- MEM1
        CPU1 -.PCIe.- NIC1
    end
    subgraph H2["Host B"]
        CPU2[CPU + Cache]
        MEM2[本地 DRAM]
        NIC2[RNIC / HCA]
        CPU2 --- MEM2
        CPU2 -.PCIe.- NIC2
    end
    NIC1 ==RDMA: IB / RoCEv2 / iWARP==> NIC2
    NIC2 ==RDMA==> NIC1

    subgraph RACK["Rack-level CXL fabric"]
        H3[Host C<br/>CXL Root]
        CXLSW[CXL Switch<br/>CXL 2.0+]
        MEMPOOL[CXL Memory Device<br/>Type 3]
        ACC[CXL Accelerator<br/>Type 2]
        H3 ==CXL.io / .cache / .mem==> CXLSW
        CXLSW ==CXL.mem==> MEMPOOL
        CXLSW ==CXL.cache + .mem==> ACC
    end

    classDef host fill:#388bfd22,stroke:#388bfd,color:#adbac7;
    classDef link fill:#f0883e22,stroke:#f0883e,color:#adbac7;
    classDef pool fill:#3fb95022,stroke:#3fb950,color:#adbac7;
    class CPU1,MEM1,NIC1,CPU2,MEM2,NIC2,H3 host
    class CXLSW link
    class MEMPOOL,ACC pool

两个子图刻意分开画:

二、RDMA:远端 DMA 的三种物理体系

2.1 三种线缆,一套 verbs

RDMA 不是”一种网络”,它是”一种语义”:单边读 / 写 / 原子操作,远端 CPU 不感知。这套语义有三种主流物理 / 链路层承载:

体系 链路 / 物理层 拥塞控制 部署形态
InfiniBand IB 链路层,credit-based flow control 链路层就保证无丢包 HPC / AI 训练,专网
RoCEv2 Ethernet + UDP/IP DCQCN / PFC + ECN 数据中心通用以太,与 TCP 共网
iWARP TCP/IP TCP 自身的拥塞控制 跨公网或 TCP 强 SLA 的环境

verbs API(ibv_post_sendibv_poll_cq)在三者之上是统一的;用户态库 libibverbs + librdmacm 是 Linux 上的标准入口。

2.2 语义层:单边、双边、原子

RDMA 操作分三类:

在分布式 KV、远端 page-cache、参数服务器、HPC 集合通信里,单边操作 + 注册内存(MR)+ 完成队列(CQ)这三件套是 RDMA 拉开和 TCP 性能差距的真正原因,而不仅仅是”内核旁路”。

2.3 必须正视的工程代价

RDMA 在生产里有几个回避不掉的麻烦:

  1. 内存必须注册(pin):在 verbs 体系下,参与 RDMA 的内存要先注册成 MR(Memory Region),RNIC 才能拿到 r/lkey 和物理地址。注册和注销路径都不便宜;ODP(On-Demand Paging)能缓解但有自己代价。
  2. RoCEv2 对网络要求苛刻:传统部署需要 PFC(IEEE 802.1Qbb)+ ECN,避免丢包;PFC 配错会出 head-of-line 阻塞和 deadlock。近年 Microsoft 的 DCQCN 和 Google Falcon、AWS SRD 等都在尝试摆脱 lossless 假设。
  3. 失效模式陌生:QP(Queue Pair)一旦进入 error state,要走 modify_qp 重新拉起;丢一个 ACK 比 TCP 难调试。
  4. 多租户与安全:MR 暴露的是物理地址映射 + key,跨租户复用必须依赖 SR-IOV、PD(Protection Domain)、NVMe over Fabrics 这类隔离机制。

简言之,RDMA 是专为”两端都受控、网络可被精细配置”的环境设计的;离开这个环境,TCP / QUIC 的容错性反而更划算。

三、CXL:在 PCIe 物理层之上把内存重新定义

3.1 三个子协议各干什么

CXL 跑在 PCIe 5.0 / 6.0 / 7.0 的物理层之上,但协议栈是自己的:

按用法 CXL 把设备分三类:

类型 协议 典型设备
Type 1 .io + .cache 带本地缓存的加速器(如 NIC offload)
Type 2 .io + .cache + .mem GPU / 加速器,本地内存对主机可见,又能缓存主机内存
Type 3 .io + .mem 内存扩展卡 / 内存池设备

Type 3 是 CXL 落地最快的方向,因为它给出了一条”用 PCIe 槽插更多 DRAM”的工程路径,而且不再受单服务器主板内存通道数限制。

3.2 CXL 1.x → 2.0 → 3.x 的演进重点

关键拐点是 3.0:在此之前 CXL.mem 即使在 2.0 池化里也是”分时独占”,3.0 才提供严格意义上的多主机一致性共享,并且把 fabric 扩展到机架级。

3.3 把”内存”拆成多种 HDM

CXL 引入了 Host-managed Device Memory(HDM)概念,把设备内存接入系统物理地址空间,并区分 coherence 行为:

工程上理解 HDM 的三种形态,比理解”CXL 1.1 / 2.0 / 3.0”更重要:它决定了你能不能在设备侧 cache、能不能多 host 一致访问、需要什么样的 fabric。

3.4 物理与可达性约束

CXL 不是”机房级”协议,它的几个边界要写清楚:

  1. 延迟范围:CXL.mem 的目标是把跨设备 load/store 延迟控制在 百 ns 级(机架内,经过 1–2 跳 switch)。这是它能称为”内存语义”的前提;越往远走、跳数越多,延迟越接近网络层级。
  2. 跳数与拓扑:CXL 3.x 支持多层 switching 与 Port-Based Routing,但仍是 fabric,不是任意拓扑;fabric manager 的存在意味着 control plane 与 data plane 是分开的。
  3. 不是替代以太网:跨机架、跨数据中心、跨可用区,CXL 不解决。

四、并排对比:RDMA 与 CXL 的真正分野

下面这张表是本文的核心结论:

维度 RDMA(IB / RoCEv2 / iWARP) CXL(1.1 / 2.0 / 3.x)
主语义 远端 DMA:单边 / 双边 / 原子 内存语义:load / store / 缓存一致
一致性域 两端各自独立,没有跨节点缓存一致 在 fabric 范围内可构造一致性域(HDM-D / HDM-DB)
物理 / 链路 InfiniBand、Ethernet、TCP/IP PCIe 5.0 / 6.0 / 7.0 物理层
典型距离 机房内 / 数据中心内 节点内 / 机架内
典型延迟量级 µs 级 百 ns 级
失效模式 QP error / 链路丢包 / PFC 死锁 一致性回收失败 / fabric path 失效 / Pin 故障
控制面 SM(IB)/ 路由协议 / 自管 Fabric Manager + UEFI / BIOS 协同枚举
多租户隔离 PD / MR keys / SR-IOV IDE 加密 + LD(Logical Device)+ FM 策略
软件抽象 verbs / libibverbs / librdmacm OS 把 HDM 挂成 NUMA node,应用通过 mmap / numactl 访问
失败兜底 退到 TCP / 内核 socket 退到本地 DDR / 容量降级
不擅长 共享一段内存让多个 host 同时读写 跨机架 / 广域的远端访问

一句话:RDMA 让远端访问像本地 DMA;CXL 让远端内存像本地内存。

这两件事不是同一件事——前者是”协议加速”,后者是”地址空间扩展 + 一致性扩展”。

五、它们之间真的有竞争吗?

只有一类场景两者会被同时考虑:机架级共享内存 / 内存池

更常见的现实是两者互补

对 AI / HPC 训练栈尤其如此:HBM 与 DDR 之间的容量缺口由 CXL 解决,集群梯度同步 / All-Reduce 继续靠 InfiniBand / RoCE。

六、选型判断的几个常见误区

6.1 “RoCEv2 就是普通以太网”

不对。生产 RoCEv2 仍然需要把 PFC + ECN 调对、和上层 DCQCN / 类似算法配合;网络团队要为 RDMA 流量预留单独的 traffic class,做好 BUM(Broadcast/Unknown/Multicast)和 lossless 隔离。AWS SRD、Google Falcon 等新一代协议正在挑战”必须 lossless”这个前提,但要看具体云厂商支持情况。

6.2 “CXL 出来 RDMA 就过时了”

不会。CXL 是节点内 / 机架内的协议,它不解决跨机架、跨 AZ、跨数据中心的访问问题。这些场景仍然是以太网 + RDMA 或 TCP / QUIC 的地盘。

6.3 “CXL.mem 接上就能多 host 共享”

只在 CXL 3.0 HDM-DB + 支持多 host coherent sharing 的设备上成立。CXL 2.0 的”池化”是分时独占;以为 2.0 设备插上就能跨 host 共享是常见误解。

6.4 “RDMA 程序写起来很简单”

verbs 上手很反直觉。MR 注册、QP 状态机、CQ 轮询、ack timeout、re-arm、connection manager(RDMA-CM)……任何一个不对就是 silent failure。生产建议是基于 UCX、NVIDIA Collective Communications Library(NCCL)、libfabric 等更高层封装,而不是直接写 verbs。

七、什么时候不应该用 RDMA / CXL

八、小结


延伸阅读

参考资料

规范

论文 / 工业报告

工具与软件栈


上一篇网络技术展望:SmartNIC、CXL 与内核旁路的未来 返回网络工程索引

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2025-08-08 · network

【网络工程】网络技术展望:SmartNIC、CXL 与内核旁路的未来

网络工程正处于一个技术变革的交汇点——SmartNIC/DPU 将网络处理从主机 CPU 卸载到专用硬件,CXL 打破了服务器内存的物理边界,io_uring 正在重塑内核态网络 I/O,而 Kernel Bypass 技术在追求极致性能的同时也在寻找与内核生态的平衡。本文系统分析这些趋势的技术本质、工程影响和演进方向。

2025-07-30 · network

【网络工程】内核网络参数调优:sysctl 全景与实战

Linux 内核网络参数是系统网络性能的基础旋钮。本文从 /proc/sys/net/ 出发讲收发缓冲区自动调优、TCP backlog、conntrack、SYN flood 防护、TIME_WAIT 管理,并系统化展开多队列网卡 RSS、软件分发 RPS / RFS / XPS 的取舍与调优方法。

2026-04-22 · network

网络工程索引

汇总本站网络工程系列文章,覆盖分层模型、以太网、IP、TCP、DNS、TLS、HTTP/2/3、CDN、BGP 与故障诊断。

2025-08-04 · network

【网络工程】QUIC 生态与工程部署:从实验到生产

QUIC 已经不是实验性协议——HTTP/3 标准化后,CDN、浏览器和主流服务端框架都在推进 QUIC 支持。本文从工程视角对比主流 QUIC 库的成熟度和性能特征,讲解 CDN/负载均衡器的 QUIC 适配方案、从 TCP 迁移到 QUIC 的渐进路径、QUIC 调试工具链,以及生产环境的部署陷阱和性能调优实践。


By .