IXDP - A libxdp wrapper API for zero-copy high speed packet processing applications

 

DRAFT SITE

 

IXDP - A libxdp wrapper API for zero-copy high speed packet processing applications

January 5, 2025

Motivation #

AF_XDP #

AF_XDP is a raw socket optimized for high performance packet processing and allows zero-copy between kernel and applications. As the socket can be used for both receiving and transmitting, it supports high performance network applications purely in user space.

IXDP #

IXDPSetup() #

IXDPStart() #

IXDPCallback() #

Example: Bridging between two Interfaces #

The following IXDPCallback() implements bridging between interface 0 and interface 1:

1
2
3
4
5
6
7
8
int IXDPCallback(uint8_t* address, uint32_t* length_ptr, int interface) {
  if(interface == 0)
    return(1);
  else if(interface == 1)
    return(0);
  else
    return(-1);
}

The packets are thus forwarded unchanged as they are received from one interface to the other.