skip to main content
10.1145/3281411.3281443acmconferencesArticle/Chapter ViewAbstractPublication PagesconextConference Proceedingsconference-collections
research-article
Open Access
Artifacts Evaluated & Reusable

The eXpress data path: fast programmable packet processing in the operating system kernel

Published:04 December 2018Publication History

ABSTRACT

Programmable packet processing is increasingly implemented using kernel bypass techniques, where a userspace application takes complete control of the networking hardware to avoid expensive context switches between kernel and userspace. However, as the operating system is bypassed, so are its application isolation and security mechanisms; and well-tested configuration, deployment and management tools cease to function.

To overcome this limitation, we present the design of a novel approach to programmable packet processing, called the eXpress Data Path (XDP). In XDP, the operating system kernel itself provides a safe execution environment for custom packet processing applications, executed in device driver context. XDP is part of the mainline Linux kernel and provides a fully integrated solution working in concert with the kernel's networking stack. Applications are written in higher level languages such as C and compiled into custom byte code which the kernel statically analyses for safety, and translates into native instructions.

We show that XDP achieves single-core packet processing performance as high as 24 million packets per second, and illustrate the flexibility of the programming model through three example use cases: layer-3 routing, inline DDoS protection and layer-4 load balancing.

Skip Supplemental Material Section

Supplemental Material

p54-hoiland-jorgensen.mp4

mp4

270.8 MB

References

  1. David Ahern. 2018. XDP forwarding example. https://elixir.bootlin.com/linux/v4.18-rc1/source/samples/bpf/xdp_fwd_kern.cGoogle ScholarGoogle Scholar
  2. Cilium Authors. 2018. BPF and XDP Reference Guide. https://cilium.readthedocs.io/en/latest/bpf/Google ScholarGoogle Scholar
  3. Cilium Authors. 2018. Cilium software. https://github.com/cilium/ciliumGoogle ScholarGoogle Scholar
  4. Suricata authors. 2018. Suricata - eBPF and XDP. https://suricata.readthedocs.io/en/latest/capture-hardware/ebpf-xdp.htmlGoogle ScholarGoogle Scholar
  5. Adam Belay, George Prekas, Ana Klimovic, Samuel Grossman, Christos Kozyrakis, and Edouard Bugnion. 2014. IX: A protected dataplane operating system for high throughput and low latency. In Proceedings of the 11th USENIX Symposium on Operating System Design and Implementation (OSDI '14). USENIX. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Gilberto Bertin. 2017. XDP in practice: integrating XDP in our DDoS mitigation pipeline. In NetDev 2.1 - The Technical Conference on Linux Networking.Google ScholarGoogle Scholar
  7. Pat Bosshart, Dan Daly, Glen Gibb, Martin Izzard, Nick McKeown, Jennifer Rexford, Cole Schlesinger, Dan Talayco, Amin Vahdat, George Varghese, et al. 2014. P4: Programming protocol-independent packet processors. ACM SIGCOMM Computer Communication Review 44, 3 (2014). Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. bpftool authors. 2018. bpftool manual. https://elixir.bootlin.com/linux/v4.18-rc1/source/tools/bpf/bpftool/Documentation/bpftool.rstGoogle ScholarGoogle Scholar
  9. Cisco. 2018. TRex Traffic Generator. https://trex-tgn.cisco.com/Google ScholarGoogle Scholar
  10. CZ.nic. 2018. BIRD Internet Routing Daemon. https://bird.network.cz/Google ScholarGoogle Scholar
  11. Luca Deri. 2009. Modern packet capture and analysis: Multi-core, multi-gigabit, and beyond. In the 11th IFIP/IEEE International Symposium on Integrated Network Management (IM).Google ScholarGoogle Scholar
  12. Mihai Dobrescu, Norbert Egi, Katerina Argyraki, Byung-Gon Chun, Kevin Fall, Gianluca Iannaccone, Allan Knies, Maziar Manesh, and Sylvia Ratnasamy. 2009. RouteBricks: exploiting parallelism to scale software routers. In Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Linux documentation authors. 2018. Linux Tracing Technologies. https://www.kernel.org/doc/html/latest/trace/index.htmlGoogle ScholarGoogle Scholar
  14. Paul Emmerich, Sebastian Gallenmüller, Daniel Raumer, Florian Wohlfart, and Georg Carle. 2015. Moongen: A scriptable high-speed packet generator. In Proceedings of the 2015 Internet Measurement Conference. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Facebook. 2018. Katran source code repository. https://github.com/facebookincubator/katranGoogle ScholarGoogle Scholar
  16. Linux Foundation. 2018. Data Plane Development Kit. https://www.dpdk.org/Google ScholarGoogle Scholar
  17. The Linux Foundation. 2018. FRRouting. https://frrouting.org/Google ScholarGoogle Scholar
  18. Sebastian Gallenmüller, Paul Emmerich, Florian Wohlfart, Daniel Raumer, and Georg Carle. 2015. Comparison of Frameworks for High-Performance Packet IO. In Proceedings of the Eleventh ACM/IEEE Symposium on Architectures for Networking and Communications Systems (ANCS '15). IEEE Computer Society, 29--38. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Sangjin Han, Keon Jang, KyoungSoo Park, and Sue Moon. 2010. PacketShader: a GPU-accelerated software router. In ACM SIGCOMM Computer Communication Review, Vol. 40. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Sangjin Han, Scott Marshall, Byung-Gon Chun, and Sylvia Ratnasamy. 2012. MegaPipe: A New Programming Interface for Scalable Network I/O. In Proceedings of the 8th USENIX Symposium on Operating Systems Design and Implementation (OSDI '12). Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Tom Herbert. 2016. Initial thoughts on TXDP. https://www.spinics.net/lists/netdev/msg407537.htmlGoogle ScholarGoogle Scholar
  22. Toke Høiland-Jørgensen, Jesper Dangaard Brouer, Daniel Borkmann, John Fastabend, Tom Herbert, David Ahern, and David Miller. 2018. XDP-paper online appendix. https://github.com/tohojo/xdp-paperGoogle ScholarGoogle Scholar
  23. Toke Høiland-Jørgensen, Per Hurtig, and Anna Brunstrom. 2015. The Good, the Bad and the WiFi: Modern AQMs in a residential setting. Computer Networks 89 (Oct. 2015). Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Solarflare Communications Inc. 2018. OpenOnload. https://www.openonload.org/Google ScholarGoogle Scholar
  25. EunYoung Jeong, Shinae Woo, Muhammad Asim Jamshed, Haewon Jeong, Sunghwan Ihm, Dongsu Han, and KyoungSoo Park. 2014. mTCP: a Highly Scalable User-level TCP Stack for Multicore Systems.. In Proceedings of the 11th USENIX Symposium on Networked Systems Design and Implementation (NSDI '14), Vol. 14. 489--502. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Rick Jones. 2018. Netperf. Open source benchmarking software. http://www.netperf.org/Google ScholarGoogle Scholar
  27. Jakub Kicinski and Nic Viljoen. 2016. eBPF/XDP hardware offload to SmartNICs. In NetDev 1.2 - The Technical Conference on Linux Networking.Google ScholarGoogle Scholar
  28. Davide Kirchner, Raihana Ferdous, Renato Lo Cigno, Leonardo Maccari, Massimo Gallo, Diego Perino, and Lorenzo Saino. 2016. Augustus: a CCN router for programmable networks. In Proceedings of the 3rd ACM Conference on Information-Centric Networking. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Chris Lattner and Vikram Adve. 2004. LLVM: A compilation framework for lifelong program analysis & transformation. In Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization. IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. libbpf authors. 2018. libbpf source code. https://elixir.bootlin.com/linux/v4.18-rc1/source/tools/lib/bpfGoogle ScholarGoogle Scholar
  31. Leonardo Linguaglossa, Dario Rossi, Salvatore Pontarelli, Dave Barach, Damjan Marjon, and Pierre Pfister. 2017. High-speed software data plane via vectorized packet processing. Technical Report. Telecom ParisTech.Google ScholarGoogle Scholar
  32. John W Lockwood, Nick McKeown, Greg Watson, Glen Gibb, Paul Hartke, Jad Naous, Ramanan Raghuraman, and Jianying Luo. 2007. NetFPGA-an open platform for gigabit-rate network switching and routing. In IEEE International Conference on Microelectronic Systems Education. IEEE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Rodrigo B Mansilha, Lorenzo Saino, Marinho P Barcellos, Massimo Gallo, Emilio Leonardi, Diego Perino, and Dario Rossi. 2015. Hierarchical content stores in high-speed ICN routers: Emulation and prototype implementation. In Proceedings of the 2nd ACM Conference on Information-Centric Networking. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Tudor Marian, Ki Suh Lee, and Hakim Weatherspoon. 2012. NetSlices: scalable multi-core packet processing in user-space. In Proceedings of the eighth ACM/IEEE symposium on Architectures for networking and communications systems. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Ilias Marinos, Robert NM Watson, and Mark Handley. 2014. Network stack specialization for performance. In ACM SIGCOMM Computer Communication Review, Vol. 44. ACM, 175--186. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Joao Martins, Mohamed Ahmed, Costin Raiciu, Vladimir Olteanu, Michio Honda, Roberto Bifulco, and Felipe Huici. 2014. ClickOS and the art of network function virtualization. In Proceedings of the 11th USENIX Conference on Networked Systems Design and Implementation. USENIX Association. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Steven McCanne and Van Jacobson. 1993. The BSD Packet Filter: A New Architecture for User-level Packet Capture. In USENIX winter, Vol. 93. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Sebastiano Miano, Matteo Bertrone, Fulvio Risso, Massimo Tumolo, and Mauricio Vásquez Bernal. 2018. Creating Complex Network Service with eBPF: Experience and Lessons Learned. In IEEE International Conference on High Performance Switching and Routing.Google ScholarGoogle ScholarCross RefCross Ref
  39. David S. Miller. 2017. Generic XDP. https://git.kernel.org/torvalds/c/b5cdae3291f7Google ScholarGoogle Scholar
  40. Robert Morris, Eddie Kohler, John Jannotti, and M Frans Kaashoek. 1999. The Click modular router. ACM SIGOPS Operating Systems Review 33, 5 (1999). Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Juniper Networks. 2018. Juniper Contrail Virtual Router. https://github.com/Juniper/contrail-vrouterGoogle ScholarGoogle Scholar
  42. perf authors. 2018. perf: Linux profiling with performance counters. https://perf.wiki.kernel.org/index.php/Main_PageGoogle ScholarGoogle Scholar
  43. Simon Peter, Jialin Li, Irene Zhang, Dan RK Ports, Doug Woos, Arvind Krishnamurthy, Thomas Anderson, and Timothy Roscoe. 2016. Arrakis: The operating system is the control plane. ACM Transactions on Computer Systems (TOCS) 33, 4 (2016). Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Ben Pfaff, Justin Pettit, Teemu Koponen, Ethan J Jackson, Andy Zhou, Jarno Rajahalme, Jesse Gross, Alex Wang, Joe Stringer, Pravin Shelar, et al. 2015. The Design and Implementation of Open vSwitch. In Proceedings of the 12th USENIX Symposium on Networked Systems Design and Implementation (NSDI '15). Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Ntop project. 2018. PF_RING ZC (Zero Copy). https://www.ntop.org/products/packet-capture/pf_ring/pf_ring-zc-zero-copy/Google ScholarGoogle Scholar
  46. Luigi Rizzo. 2012. Netmap: a novel framework for fast packet I/O. In 21st USENIX Security Symposium (USENIX Security 12).Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Luigi Rizzo and Giuseppe Lettieri. 2012. Vale, a switched ethernet for virtual machines. In Proceedings of the 8th international conference on Emerging networking experiments and technologies. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Pedro M Santiago del Rio, Dario Rossi, Francesco Gringoli, Lorenzo Nava, Luca Salgarelli, and Javier Aracil. 2012. Wire-speed statistical classification of network traffic on commodity hardware. In Proceedings of the 2012 Internet Measurement Conference. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. William Tu. 2018. {ovs-dev} AF_XDPsupport for OVS. https://mail.openvswitch.org/pipermail/ovs-dev/2018-August/351295.htmlGoogle ScholarGoogle Scholar
  50. IO Visor. 2018. BCC BPF Compiler Collection. https://www.iovisor.org/technology/bccGoogle ScholarGoogle Scholar
  51. VMWare. 2018. p4c-xdp. https://github.com/vmware/p4c-xdpGoogle ScholarGoogle Scholar
  52. Kenichi Yasukata, Michio Honda, Douglas Santry, and Lars Eggert. 2016. StackMap: Low-Latency Networking with the OS Stack and Dedicated NICs. In 2016 USENIX Annual Technical Conference (USENIX ATC 16). USENIX Association, 43--56. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Qi Zhang. 2018. {dpdk-dev} PMD driver for AF_XDP. http://mails.dpdk.org/archives/dev/2018-February/091502.htmlGoogle ScholarGoogle Scholar

Index Terms

  1. The eXpress data path: fast programmable packet processing in the operating system kernel

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in
        • Published in

          cover image ACM Conferences
          CoNEXT '18: Proceedings of the 14th International Conference on emerging Networking EXperiments and Technologies
          December 2018
          408 pages
          ISBN:9781450360807
          DOI:10.1145/3281411

          Copyright © 2018 Owner/Author

          This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs International 4.0 License.

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 4 December 2018

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article

          Acceptance Rates

          Overall Acceptance Rate198of789submissions,25%

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader