Skip to content

Subsystem: RDMA header processing

Alex Forencich edited this page Jul 28, 2021 · 2 revisions

In the Corundum datapath, RoCEv2 packet headers will be processed separately from the payload data. The packet formats are detailed in Chapter 9 and Annex A17 of Volume 1 of the Infiniband specification (https://cw.infinibandta.org/document/dl/8567)

Incoming packets will have the headers duplicated, with the entire packet written into scratchpad RAM and a copy of the headers handed off to the RoCEv2 header parser. The DMA engine can then read the entire packet or only the packet payload as necessary. The RoCEv2 header parser must extract the relevant fields from all packet headers, including Ethernet, IP, UDP, BTH, all extension headers required by the opcode, and any immediate data. The header parser must be able to handle IPv4, IPv6, and at least one VLAN tag.

For outgoing packets, the RoCEv2 header will be generated by the RoCEv2 header deparser, and this will be combined with the payload data from scratchpad RAM. No barrel-shifting of the payload will take place during assembly, only byte masking, as the DMA engine will be used to write the payload data into the scratchpad RAM at the appropriate offset, the generated header will replace padding bytes read out by the streaming DMA engine. The RoCEv2 header deparser must generate all packet headers, including Ethernet, IP, UDP, BTH, all extension headers required by the selected opcode, and any immediate data. The header deparser must be able to handle IPv4, IPv6, and at least one VLAN tag.

The RDMA header processing components must be parametrized for operation at 64, 128, 256, and 512 bits.