Skip to content

Subsystem: Ingress and egress pipelines

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

RDMA support in Corundum requires several capabilities in the ingress and egress pipelines:

  • IP/UDP/TCP checksum computation (self-contained)
  • IP/UDP/TCP checksum verification (self-contained)
  • RDMA ICRC computation
  • RDMA ICRC verification
  • RSS flow hashing
  • Flow steering (required for AF_XDP)

The ingress and egress pipeline components must be parametrized for operation at 64, 128, 256, and 512 bits.

The current checksum offload support is dependent on the network stack for a portion of the work (on TX, to compute the pseudoheader checksum and offset; on RX, to remove the header fields from the full payload checksum). For packets segmented or generated in hardware (either from the RDMA stack or from application logic), a more self-contained solution is required that can compute and insert the appropriate checksum automatically. The checksum logic must compute header checksums for IPv4 and IPv6 and full checksums (pseudoheader + payload) for TCP and UDP. It must also support IP and TCP options as well as at least one VLAN tag. Ideally, this will be completed as a part of phase 1 so the descriptor format can be updated appropriately.

Similar to checksums, the RDMA ICRC must also be handled in the datapath. The ICRC computation module will also be responsible for appropriately zero-padding the payload data to proper DWORD alignment. Similar to the checksum computation module, the ICRC computation modules must support IPv4, IPv6, and at least one VLAN tag. See 7.8.1 of Volume 1 of the Infiniband specification (https://cw.infinibandta.org/document/dl/8567)

For supporting AF_XDP (among other things), some form of flow steering is required on the receive path to select the target queue in addition to RSS flow hashing. Ideally, this will be completed as a part of phase 1.