Shai Malin and Aurelien Aptel build up on the work presented At netdev conf 0x15[1] to define the concept of ULP (upper layer protocol) DDP (direct data placement). The idea is to provide request-response ULP protocols, such as NVMe-TCP, the ability to place response data directly in pre-registered buffers according to protocol header tags.
For NVMe-TCP, on the receive side two things happen: 1) The NIC places data directly onto the user space provided buffers totally eliminating data copy between kernel TCP socket layer and user space. 2) The NIC computes and validates CRCs - a compute intensive operation further saving host compute resources.
On the transmit path the CRC calculation is offloaded.
All this is done with very minimal changes to the core kernel TCP!
In this talk, Shai and Aurelien will present the NVMeTCP DDP and CRC (data digest) offload design and the associated driver-HW interaction that makes it work. They will present the performance benefit of the offload in a variety of comparisons and under different conditions. They will also cover the challenges we had and how they were able to resolve them.
[1]https://netdevconf.info/0x15/session.html?Autonomous-NVMe-TCP-offload
cheers, jamal
PS: Yes, early bird registration, which is ReelCheep, is still open. Visit https://netdevconf.info/0x16/registration.html