NVME OF TCP与NVME OF RDMA区别?

一个走 通用网络栈(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 = 用复杂网络换极致性能