skip to main content
research-article

Building an Extensible Open vSwitch Datapath

Published: 11 September 2017 Publication History

Abstract

The virtual switch is the cornerstone of the today's virtualized data center. As all traffic to and from virtual machines or containers must pass through a vSwitch, it is the ideal location for network configuration and policy enforcement.
The bulk of Open vSwitch functionality is platform-agnostic and portable. However the datapath, which touches every packet, is unique to each supported platform. Maintaining each datapath requires duplicated effort and the result has been inconsistent support of features across platforms. Even on a single platform, the features supported by a particular kernel version can vary. Further, datapath functionality must be broadly useful which prevents having application-specific features in the fast path.
eBPF, extended Berkeley Packet Filter, enables userspace applications to customize and extend the Linux kernel's functionality. It provides flexible platform abstractions for network functions, and is being ported to a variety of platforms. This paper describes the design, implementation, and evaluation of an eBPF-based extensible OVS datapath. The eBPF OVS datapath delivers the equivalent functionality of the existing OVS kernel datapath, while significantly reducing development pain points around maintainability and extensibility. We demonstrate that these benefits don't necessarily have a trade off in regards to performance, with the eBPFbased datapath showing negligible overhead compared to the existing kernel datapath.

References

[1]
IO Visor Project. https://www.iovisor.org/, 2016.
[2]
Zaafar Ahmed, Muhammad Hamad Alizai, and Affan A Syed. Inkev: In-kernel distributed network virtualization for dcn. ACM SIGCOMM CCR, 2016.
[3]
BCC Authors. BCC - tools for bpf-based linux io analysis, networking, monitoring, and more. https://github.com/iovisor/bcc, 2016.
[4]
Cilium Authors. BPF and XDP for containers. https://github.com/cilium/cilium, 2016.
[5]
Andrew Begel, Steven McCanne, and Susan L Graham. Bpf+: Exploiting global data-flow optimization in a generalized packet filter architecture. In ACM SIGCOMM Computer Communication Review, volume 29, pages 123--134. ACM, 1999.
[6]
A.; Borkmann, D.; Starovoitov and H. F. Sowa. bpf: add support for persistent maps/progs. In Linux kernel, commit b2197755b263., 2015.
[7]
D. Borkmann. bpf: avoid stack copy and use skb ctx for event output. In Linux kernel, commit 555c8a8623a3., 2016.
[8]
D. Borkmann. bpf: direct packet write and access for helpers for clsact progs. In Linux kernel, commit 36bbef52c7eb., 2016.
[9]
D. Borkmann and A. Starovoitov. bpf: add event output helper for notifications/ sampling/logging. In Linux kernel, commit bd570ff970a5., 2016.
[10]
Daniel Borkmann. Advanced programmability and recent updates with tc's cls bpf. NetDev 1.2, 2016.
[11]
Daniel Borkmann. On getting tc classifier fully programmable with cls bpf. NetDev 1.1, 2016.
[12]
Pat Bosshart, Dan Daly, Glen Gibb, Martin Izzard, Nick McKeown, Jennifer Rexford, Cole Schlesinger, Dan Talayco, Amin Vahdat, George Varghese, et al. P4: Programming protocol-independent packet processors. ACM SIGCOMM Computer Communication Review, 44(3):87--95, 2014.
[13]
Jonathan Corbet. Extending extended bpf. https://lwn.net/Articles/603983/, 2014.
[14]
Changhoon Kim, Anirudh Sivaraman, Naga Katta, Antonin Bas, Advait Dixit, and Lawrence J Wobker. In-band network telemetry via programmable dataplanes. In ACM SIGCOMM, 2015.
[15]
Steven McCanne and Van Jacobson. The bsd packet filter: A new architecture for user-level packet capture. In USENIX winter, volume 46, 1993.
[16]
Paul E. McKenney, Jonathan Appavoo, Andi Kleen, Orran Krieger, Rusty Russell, Dipankar Sarma, and Maneesh Soni. Read-copy update. In Ottawa Linux Symposium Conference Proceedings, page 175. Ottawa Linux Symposium, 2001.
[17]
Justin Pettit, Ben Pfaff, Joe Stringer, Cheng-Chun Tu, Brenden Blanco, and Alex Tessmer. Bringing platform harmony to VMware NSX. In ACM SIGOPS Operating Systems Review, 2017.
[18]
Jiří Pírko and Red Hat. Implementing open vswitch datapath using tc. Proceedings of Netdev 0.1, 2015.
[19]
Fulvio Risso and Politecnico di Torino Matteo Bertrone. Coupling the flexibility of ovn with the efficiency of iovisor: Architecture and demo. OVS Fall Conference, 2016.
[20]
Jamal Hadi Salim. Linux traffic control classifier-action subsystem architecture.
[21]
Muhammad Shahbaz, Sean Choi, Ben Pfaff, Changhoon Kim, Nick Feamster, Nick McKeown, and Jennifer Rexford. Pisces: A programmable, protocol-independent software switch. In Proceedings of the 2016 conference on ACM SIGCOMM 2016 Conference, pages 525--538. ACM, 2016.
[22]
A. Starovoitov. net: filter: x86: internal bpf jit. In Linux kernel, commit 622582786c9e., 2014d.
[23]
A. Starovoitov. bpf: allow bpf programs to tail-call other bpf programs. In Linux kernel, commit 04fd61ab36ec., 2015a.
[24]
A. Starovoitov. bpf: direct packet access. In Linux kernel, commit 969bf05eb3ce., 2016.
[25]
Xi Wang, David Lazar, Nickolai Zeldovich, Adam Chlipala, and Zachary Tatlock. Jitk: A trustworthy in-kernel interpreter infrastructure. In 11th USENIX Symposium on Operating Systems Design and Implementation (OSDI 14), pages 33--47, 2014.

Cited By

View all
  • (2024)Rethinking Cloud Network Stacks with Switch Bypass2024 IEEE 25th International Conference on High Performance Switching and Routing (HPSR)10.1109/HPSR62440.2024.10635954(55-60)Online publication date: 22-Jul-2024
  • (2024)Application Layer Cyber Deception Without Developer Interaction2024 IEEE European Symposium on Security and Privacy Workshops (EuroS&PW)10.1109/EuroSPW61312.2024.00053(416-429)Online publication date: 8-Jul-2024
  • (2024)eBPF: Pioneering Kernel Programmability and System Observability - Past, Present, and Future Insights2024 3rd International Conference on Artificial Intelligence and Computer Information Technology (AICIT)10.1109/AICIT62434.2024.10730620(1-10)Online publication date: 20-Sep-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGOPS Operating Systems Review
ACM SIGOPS Operating Systems Review  Volume 51, Issue 1
Special Topics
August 2017
123 pages
ISSN:0163-5980
DOI:10.1145/3139645
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 11 September 2017
Published in SIGOPS Volume 51, Issue 1

Check for updates

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)39
  • Downloads (Last 6 weeks)4
Reflects downloads up to 07 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Rethinking Cloud Network Stacks with Switch Bypass2024 IEEE 25th International Conference on High Performance Switching and Routing (HPSR)10.1109/HPSR62440.2024.10635954(55-60)Online publication date: 22-Jul-2024
  • (2024)Application Layer Cyber Deception Without Developer Interaction2024 IEEE European Symposium on Security and Privacy Workshops (EuroS&PW)10.1109/EuroSPW61312.2024.00053(416-429)Online publication date: 8-Jul-2024
  • (2024)eBPF: Pioneering Kernel Programmability and System Observability - Past, Present, and Future Insights2024 3rd International Conference on Artificial Intelligence and Computer Information Technology (AICIT)10.1109/AICIT62434.2024.10730620(1-10)Online publication date: 20-Sep-2024
  • (2023)Composing eBPF Programs Made Easy With HIKe and eCLATIEEE Transactions on Network and Service Management10.1109/TNSM.2023.332562421:2(1359-1371)Online publication date: 18-Oct-2023
  • (2022)eBPF Programming Made Easy with eCLATProceedings of the 18th International Conference on Network and Service Management10.5555/3581644.3581674(1-9)Online publication date: 31-Oct-2022
  • (2022)eBPF Programming Made Easy with eCLAT2022 18th International Conference on Network and Service Management (CNSM)10.23919/CNSM55787.2022.9964569(28-36)Online publication date: 31-Oct-2022
  • (2022)A novel programmable software datapath for software-defined networkingProceedings of the 18th International Conference on emerging Networking EXperiments and Technologies10.1145/3555050.3569117(245-260)Online publication date: 30-Nov-2022
  • (2022)Improving Open Virtual Switch Performance Through Tuple Merge Relaxation in Software Defined NetworksIEEE Transactions on Network and Service Management10.1109/TNSM.2022.315559219:3(2078-2091)Online publication date: Sep-2022
  • (2021)A Runtime-Enabled P4 Extension to the Open vSwitch Packet Processing PipelineIEEE Transactions on Network and Service Management10.1109/TNSM.2021.305590018:3(2832-2845)Online publication date: Sep-2021
  • (2020)Fast Packet Processing with eBPF and XDPACM Computing Surveys10.1145/337103853:1(1-36)Online publication date: 6-Feb-2020
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media