3. 存储与网络融合的协议栈
当本地 NVMe SSD 的队列深度和 IOPS 已经远超传统 SCSI/SAS 通道时,瓶颈就从盘本身转移到了“盘与主机之间怎么连”。NVMe over Fabrics(简称 NVMe-oF)解决的正是这个问题:它把 NVMe 的命令队列模型从 PCIe 总线延伸到网络上,让远端存储看起来仍像一块本地 NVMe 设备。理解这一章的关键,是把“上层 NVMe-oF 语义”和“下层承载网络”分开看——前者定义命令与队列如何跨网络传输,后者决定这些报文在以太网上如何被高效、无损地送达。
一、NVMe-oF 的三种承载方式
NVMe-oF 本身只规定命令、响应、数据如何封装,并不限定物理网络。目前主流承载有三类:
- NVMe over RDMA:包括 RoCEv2(基于融合以太网)和 iWARP(基于 TCP/IP)。它把 NVMe 的 SQE/CQE 队列直接映射到 RDMA 的发送/接收队列上,主机通过 RDMA verbs 直接读写远端内存,绕过对端 CPU 拷贝,延迟最低,是当前数据中心最主流的方案。
- NVMe over TCP:把 NVMe 命令封装进 TCP 流,无需无损以太网和 DCB 配置,兼容性好、部署简单,但协议栈处理开销高于 RDMA,适合中低性能或跨广域场景。
- NVMe over FC:沿用光纤通道,稳定成熟,但需要独立 FC 网络,扩展性和成本不如以太网方案。
三者的核心差异在于“谁来保证可靠传输”:RDMA 依赖网卡硬件与无损网络,TCP 依赖内核协议栈,FC 依赖专用交换网络。选择哪一种,本质是在延迟、部署复杂度、兼容性之间做权衡。
二、RoCEv2 与 iWARP 的对比
RoCEv2 把 RDMA 报文封装在 UDP/IP 之上(目的端口 4791),因此可以走标准 IP 路由,支持三层组网。它的前提是无损以太网:必须启用 PFC(优先级流控)和 ECN(显式拥塞通知),否则一旦丢包,RDMA 的重传代价极高,性能会断崖式下降。RoCEv2 的部署难点不在协议本身,而在于整网 QoS、PFC 死锁防范和 DCB 配置的一致性。
iWARP 则把 RDMA 直接实现在 TCP 之上,依靠 TCP 自身的可靠传输和拥塞控制,不需要 PFC/ECN,可以跨普通 IP 网络部署。代价是 TCP 处理开销和每连接状态更多,延迟通常略高于 RoCEv2,扩展性也受限于 TCP 连接数。简单说:RoCEv2 追求极致低延迟但要求网络精细调优;iWARP 追求部署简单和广域兼容。
三、TCP/IP 卸载与融合以太网
无论走哪条路径,主机 CPU 都不应被网络协议处理拖垮。TCP/IP 卸载技术把校验和计算、分段、重组、甚至整个 TCP 状态机下沉到网卡:
- Checksum Offload:网卡计算并校验 IP/TCP/UDP 校验和。
- TSO/LRO:大包分段与接收端合并,减少 CPU 中断和协议栈遍历次数。
- RSS:多队列哈希,把不同流分散到多个 CPU 核。
- TOE / Full Offload:整块 TCP 连接由网卡处理,主机只处理应用数据。
而“融合以太网”指的是用同一张以太网同时承载存储、计算和业务流量,核心支撑技术是 DCB:PFC 提供链路级无损,ETS 做带宽分配,DCBX 自动协商参数。这样存储流量(如 RoCEv2)和普通业务流量可以共存,而不必为存储单独建一张网。
四、实际部署中的关键判断
假设一个典型场景:两台服务器通过 100GbE 交换机连接,主机侧使用支持 RoCEv2 的网卡,目标侧是 NVMe SSD 阵列。要让 NVMe-oF 跑起来,需要依次确认几件事:
- 网卡与交换机是否支持 RoCEv2:查看网卡型号和固件,确认支持 RoCEv2 和 PFC/ECN。交换机需支持 DCB 和 ECN 标记。
- 是否启用无损队列:为存储流量分配独立优先级(如 Priority 3),在该优先级上启用 PFC,并配置 ECN 阈值。若 PFC 未启用,RoCEv2 在拥塞时会丢包,性能急剧下降。
- MTU 是否一致:RoCEv2 通常建议启用 9000 字节巨帧,减少报文数量和处理开销。两端及交换机端口 MTU 必须一致,否则大包被分片,延迟上升。
- NVMe-oF 连接建立:在主机侧使用
nvme connect命令连接目标,指定 transport=rdma、traddr、trsvcid 等参数。连接成功后,nvme list应能看到远端命名空间。
一个可参考的连接命令示例如下:
nvme connect -t rdma -a 192.168.10.20 -s 4420 -n nqn.2024-01.com.example:nvme.target1
连接后可通过 nvme list-subsys 查看子系统状态,确认路径为 rdma 且状态为 live。若状态异常,优先检查网络连通性、PFC 计数器和 ECN 标记统计。
五、选型建议
如果追求最低延迟和最高吞吐,且有能力对网络做精细调优,RoCEv2 是首选;如果希望快速部署、跨普通 IP 网络、不想维护无损以太网,iWARP 或 NVMe over TCP 更合适;如果已有 FC 基础设施且对稳定性要求极高,NVMe over FC 仍是可靠选择。无论选哪种,TCP/IP 卸载和融合以太网技术都是提升整体效率的公共基础——它们决定了主机 CPU 能否从网络协议处理中解放出来,把算力留给真正的存储业务。
ethtool -S 查看网卡的 PFC 和 ECN 统计,确认无损队列没有持续丢包;再用 perf 或 fio 做端到端压测,对比启用卸载前后的 CPU 占用率,判断卸载是否真正生效。