I am using RoCEv2 to connect an FPGA to an Ubuntu PC. I have the Ethernet/IP/UDP header set so that it recognizes the packet as RoCEv2. Now I need to figure out the structure of the BTH in the payload. Does anyone have suggestions for tracking down this header for an unreliable datagram?
The BTH (Base Transport Header) structure for RoCEv2 is defined in the InfiniBand Architecture Specification Volume 1, available from the IBTA website (https://www.infinibandta.org/ibta-specifications-download). Specifically, refer to Annex A17 for RoCEv2.
For Unreliable Datagram (UD), the packet structure after the UDP header is:
OpCode: 0x64 (UD Send Only) or 0x65 (UD Send Only with Immediate)
UDP destination port: 4791
The IBTA specification provides detailed bit-level layouts for all header fields. This is the authoritative source for implementing RoCEv2 on your FPGA.
I have since found that you need to pay for access to the specifications. The link you provided won’t work without that access.
Thank you for the additional information on the elements of the headers. It sounds like the older specification which is available on-line is still effectively correct.