一个走 通用网络栈(TCP/IP) ,一个走 硬件旁路(RDMA)。
一、核心对比版
| 项目 | NVMe over TCP | NVMe over RDMA |
|---|---|---|
| 传输层 | TCP/IP | RDMA(RoCE / iWARP) |
| CPU参与 | 高 | 极低 |
| 拷贝次数 | 多 | 接近0 |
| 延迟 | 中等(30--80μs) | 极低(5--20μs) |
| 网络要求 | 普通以太网 | RDMA网络 |
| 部署难度 | 简单 | 复杂 |
| 性能上限 | 高但受CPU限制 | 更高且更稳定 |
二、协议结构差异(关键)
1)NVMe over TCP
Application
↓
NVMe Driver
↓
NVMe-oF
↓
TCP/IP Stack
↓
NIC
↓
Network
特点:
- 走 Linux kernel TCP stack
- 有 socket buffer
- 有上下文切换
- 有 checksum / congestion control
👉 本质:"软件定义传输"
2)NVMe over RDMA
Application
↓
NVMe Driver
↓
NVMe-oF
↓
RDMA verbs
↓
RNIC(网卡直接DMA)
↓
Memory
特点:
- bypass kernel TCP stack
- zero-copy
- DMA直通内存
- 无socket
👉 本质:"硬件直连内存"
三、性能差异的根本原因
1)CPU路径差异
TCP路径:
NIC → Kernel → Socket → Copy → App
涉及:
- interrupt
- context switch
- memory copy(多次)
RDMA路径:
NIC → DMA → Memory
👉 CPU几乎不参与
四、延迟对比(真实工程范围)
在 25/100Gb 网络:
| 场景 | 延迟 |
|---|---|
| NVMe/TCP | 30--80 μs |
| NVMe/RDMA | 5--20 μs |
👉 RDMA优势主要在:
- tail latency(尾延迟)
- jitter(抖动)
五、吞吐与CPU占用
NVMe/TCP
- CPU是瓶颈
- 每Gbps需要较多core
- 高IOPS时CPU飙升
NVMe/RDMA
- NIC是主瓶颈
- CPU占用极低
- scaling能力更强
六、网络要求差异(非常关键)
NVMe/TCP
只需要:
- 标准 Ethernet
- 25G / 100G 都可以
- 不需要特殊配置
👉 优点:
- 简单
- 可云化
- 可跨DC
NVMe/RDMA
需要:
RoCE v2:
PFC (Priority Flow Control)
ECN
DCB
lossless Ethernet
或:
iWARP:
TCP offload RDMA
(无需PFC)
👉 缺点:
- 网络设计复杂
- 运维门槛高
七、稳定性与运维现实
NVMe/TCP(更"云原生")
优点:
- 容易排障(tcpdump)
- 和Kubernetes兼容好
- 防火墙友好
- 跨云可用
NVMe/RDMA(更"数据中心级")
优点:
- 性能极致
- 延迟稳定
- CPU效率高
缺点:
- 故障分析复杂
- 依赖交换机配置
- 对网络工程要求高
八、生态趋势(2026现实)
NVMe over TCP:
👉 正在成为"默认标准"
原因:
- 云厂商推动
- Kubernetes CSI标准支持
- 运维简单
NVMe over RDMA:
👉 高端数据中心标配
常见于:
- HPC
- AI训练集群
- 超高性能存储
例如:
- Microsoft Azure HPC / Storage RDMA
- NVIDIA AI storage fabric
- Dell Technologies PowerScale / PowerMax RDMA方案
九、一个非常重要的误区
很多人认为:
RDMA = 一定比 TCP 快很多
实际上在 NVMe 场景:
👉 差距主要来自 CPU,而不是纯网络带宽
如果:
- CPU充足
- IO不是极限负载
那么:
NVMe/TCP 已经"够快"
十、怎么选(工程决策)
✔ 选 NVMe over TCP,如果:
- 通用企业存储
- Kubernetes / 云原生
- 多租户环境
- 不想改网络
👉 推荐默认方案
✔ 选 NVMe over RDMA,如果:
- AI训练 / HPC
- 极低延迟数据库
- 高IOPS集中负载
- 已有 RoCE/iWARP 网络
👉 性能优先
十一、最终一句话总结
NVMe over TCP = 用CPU换简单性
NVMe over RDMA = 用复杂网络换极致性能