BSD socket APIs are entrenched into the networking world and have a universal usability appeal due to their simplicity. Unfortunately, if you care about high end performance then, the current BSD socket APIs for sending and receiving data have too much many hazards that hamper performance. These hazards range (to name the most common) from construct such as system calls, memcpy, page reference counting, etc. The impact of these "included" costs severely limit the data rate. Bad enough that modern applications for high performance networking have universally turned towards RDMA and infiniband after declaring TCP/IP as too slow and inefficient!
In the pursuit for performance happyness, David Ahern and Shrijeet Mukherjee have explored a few options out there for Linux. They have looked at io_uring, AF_XDP sockets, and RDMA/Infiniband verbs.
In this talk they discuss a proposal to merge some concepts of RDMA with traditional TCP/IP networking. Specifically, the ability to create and manage memory regions between processes and hardware along with userspace access to hardware queues and software queues to a kernel driver for submitting work and getting completions.
cheers, jamal