Site icon Open Knowledge

DPDK Introduction – Data Plane Development Kit

Recently I got the opportunity to work on Intel’s DPDK platform. I have collated my understanding of the subject here, and will try to address what it is.

There is plenty of material already on the internet, which explains about DPDK. The best documentation I recommend is directly from the DPDK site DPDK documentation.

The documentation path to follow, should be:

DPDK basically enables you to receive Ethernet packets at very high rates 10Gbps/40Gbps. The DPDK platform uses a number of techniques to achieve this feast, some of them being:

The picture above shows the components of Linux stack that implement the functionality of HTTP stack.

As the ‘packets’ arrive at the NIC (hardware layer), they are pulled by the Ethernet driver (link layer) and passed onto subsequent upper layers for further processing. Other than the ‘application layer’, all other layers run in the kernel mode.

The above figure shows the DPDK stack. Notably, the NIC that is bound to the DPDK is not visible in the Linux environment; the NIC traffic totally bypasses the Linux stack. Instead a ‘Poll mode driver’ (PMD) that runs in user space is responsible for pulling the packets from the NIC. All the rest of the handling (application or protocol specific) has to happen in your user space ‘Application’. DPDK provides some helper libraries such as IP reassembly library (to re-assemble IP fragments), but does not provide any support for the whole TCP/IP stack. As such , your ‘Application’ is solely responsible for all the functionality beyond the ‘link layer’.

There are implementations of the TCP/IP stack over DPDK, such as mTCP, F-Stack etc. which can be used to aid your development. DPDK is fast gaining place in NFV, routing devices etc.   Read more at dpdk.org.

Exit mobile version