This repository contains the =.tex= source code, datasets and experimental notes for the paper "The eXpress Data Path: Fast Programmable Packet Processing in the Operating System Kernel" which was presented at ACM CoNEXT 2018 on December 5th, 2018.
The PDF version of the paper is also included in [[file:xdp-the-express-data-path.pdf][xdp-the-express-data-path.pdf]].
** Source code The XDP system is part of the upstream Linux kernel. The specific version we've used in our tests is available in Jesper's git repository on git.kernel.org, in the xdp_paper01 branch:
https://git.kernel.org/pub/scm/linux/kernel/git/hawk/net-next-xdp.git/log/?h=xdp_paper01
The specific commit we have been using is [[https://git.kernel.org/pub/scm/linux/kernel/git/hawk/net-next-xdp.git/commit/?h=xdp_paper01&id=e641995a1e18f12fa3ffa4aac405dd8e9135e0e9][e641995a1e18f12fa3ffa4aac405dd8e9135e0e9]].
** Slides The paper was presented at CoNEXT '18 on December 5th, 2018. The source for the presentation slides are included in [[file:xdp-presentation.org][xdp-presentation.org]], and can be exported using the org-reveal plugin for Emacs org-mode. A compiled version of the slides is in [[file:xdp-presentation.pdf][xdp-presenation.pdf]].
** Experimental setup
The notes from our experiments are included in a series of .org files in the [[file:benchmarks/][benchmarks/]] directory. These files contain setup instructions for both XDP and DPDK. Some familiarity with Linux is probably an advantage for someone who wants to replicate the experiments; but if any information is missing from the notes, we consider that a bug. Please open an issue in the github repository for any such problems.
** Hardware As our main test machine, we use a workstation equipped with an Intel Xeon E5-1650 v4 6-core CPU running at 3.60GHz. The machine has four 8GB RAM modules, allowing the use of all four memory channels. The test machine is equipped with two Mellanox ConnectX-5 Ex VPI dual-port 100Gbps NICs. We use the same NICs to drive the test load, but from different machines; see the experimental notes for details.
** License
All source code is released under the GNU GPL v2. All text and figures are released under a Creative Commons CC-BY-SA license.