1. RoCE v2协议栈核心架构解析
RoCE v2(RDMA over Converged Ethernet version 2)作为当前数据中心网络的主流协议,其设计精髓在于将传统RDMA的高性能特性通过以太网承载。与v1版本相比,v2最大的突破是支持IP路由能力,这使得RoCE流量可以跨越三层网络传输。协议栈自上而下可分为四个层次:
- 应用层:直接面向用户提供verbs接口
- 传输层:实现可靠的端到端数据传输(RC/UC/UD模式)
- 网络层:基于UDP/IP的封包解包
- 链路层:以太网帧处理
在硬件实现层面,RoCE v2模块通常采用AXI-Stream总线进行数据流动,这种流式接口特别适合高吞吐场景。典型的FPGA设计中,发送和接收模块会共享DMA引擎,但采用独立的控制状态机。
2. 发送模块深度设计
2.1 发送流水线架构
现代RoCE v2发送模块普遍采用三级流水线设计:
-
协议封装层:将RDMA操作转换为RoCE协议数据单元
- 根据QP(Queue Pair)状态生成BTH(Base Transport Header)
- 计算Invariant/ Variant CRC字段
- 示例:对于Send操作,需要填充Payload长度字段
-
调度仲裁层:
verilog复制// 典型调度算法实现片段 always_comb begin casex({qp_prio, qp_age}) 2'b1x: next_qp = high_prio_qp; 2'b01: next_qp = oldest_qp; default: next_qp = rr_qp; endcase end -
链路输出层:
- 插入以太网前导码(7x 0x55 + 1x 0xD5)
- 添加VLAN标签(可选)
- 计算FCS帧校验序列
2.2 关键状态机设计
发送模块的核心是传输状态机(TSM),其典型状态包括:
- IDLE:等待SQ(Send Queue)有新的WQE
- READ_PAYLOAD:通过DMA读取内存数据
- GEN_HEADER:生成
