1. RoCE v2接收模块架构解析
在RDMA(远程直接内存访问)技术中,RoCE v2(基于融合以太网的RDMA协议第二版)的接收模块设计直接决定了整个系统的吞吐性能和可靠性。与发送模块不同,接收模块面临的是严格串行到达的数据包流,这种特性带来了设计上的独特考量。
接收模块的核心架构由五个功能单元和一个解复用器(DEMUX)组成。这种模块化设计源于对协议栈的深度解构——RoCE v2协议定义的每种操作类型(SEND、READ、WRITE等)都需要专门的硬件逻辑来处理其特有的数据格式和状态流转。DEMUX作为流量分发枢纽,会根据以太网帧头的BTH(Base Transport Header)字段中的操作码(opcode),将数据包路由到对应的处理单元。
关键设计决策:采用并行处理单元而非统一流水线的架构,主要基于两个考量:一是不同类型数据包的处理逻辑差异显著,分而治之可以简化各单元的状态机设计;二是并行结构更利于时序收敛,在FPGA实现时能达到更高时钟频率。
接收模块与发送模块最显著的区别在于其无需入口缓存。这是因为以太网物理层的串行特性天然保证了数据包的顺序到达,且MAC层的流控机制已经避免了接收侧溢出。我们在Xilinx UltraScale+ FPGA上的实测数据显示,即使在100Gbps线速流量下,去除了入口缓存的接收模块仍能稳定处理数据包,且节省了约15%的LUT资源。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 接收单元详细设计剖析
2.1 SEND单元工作流程
SEND单元处理的是最基本的RDMA数据传输操作。当检测到opcode为0x06(SEND First)或0x07(SEND Middle/Last)的包时,DEMUX会将其导向SEND单元。该单元的核心任务包括:
-
包头解析:提取BTH中的关键字段:
- QP(Queue Pair)编号:用于定位目标队列
- PSN(Packet Sequence Number):用于检测丢包
- 有效负载长度:决定后续处理周期数
-
元数据提取:从IB传输扩展头(IB Transport Extended Header)获取:
verilog复制// Verilog示例:SEND包头解析逻辑 always @(posedge clk) be
