ABSTRACT
Hypervisors use software switches to steer packets to and from virtual machines (VMs). These switches frequently need upgrading and customization—to support new protocol headers or encapsulations for tunneling and overlays, to improve measurement and debugging features, and even to add middlebox-like functions. Software switches are typically based on a large body of code, including kernel code, and changing the switch is a formidable undertaking requiring domain mastery of network protocol design and developing, testing, and maintaining a large, complex codebase. Changing how a software switch forwards packets should not require intimate knowledge of its implementation. Instead, it should be possible to specify how packets are processed and forwarded in a high-level domain-specific language (DSL) such as P4, and compiled to run on a software switch. We present PISCES, a software switch derived from Open vSwitch (OVS), a hard-wired hypervisor switch, whose behavior is customized using P4. PISCES is not hard-wired to specific protocols; this independence makes it easy to add new features. We also show how the compiler can analyze the high-level specification to optimize forwarding performance. Our evaluation shows that PISCES performs comparably to OVS and that PISCES programs are about 40 times shorter than equivalent changes to OVS source code.
- 1.P4 program for OVS, June 2015. https://github.com/blp/ovs-reviews/blob/p4-workshop/tests/ovs.p4.Google Scholar
- 2.P4-vSwitch. https://github.com/P4-vSwitch, 2016.Google Scholar
- 3.A. V. Aho, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley Longman Publishing Co., Inc., 1986. Google ScholarDigital Library
- 4.M. Alizadeh, T. Edsall, S. Dharmapurikar, R. Vaidyanathan, K. Chu, A. Fingerhut, V. T. Lam, F. Matus, R. Pan, N. Yadav, and G. Varghese. CONGA: Distributed Congestion-aware Load Balancing for Datacenters. In ACM SIGCOMM, pages 503–514, 2014. Google ScholarDigital Library
- 5.D. G. Andersen, H. Balakrishnan, N. Feamster, T. Koponen, D. Moon, and S. Shenker. Accountable Internet Protocol (AIP). In ACM SIGCOMM, pages 339–350, 2008. Google ScholarDigital Library
- 6.M. B. Anwer, M. Motiwala, M. b. Tariq, and N. Feamster. SwitchBlade: A Platform for Rapid Deployment of Network Protocols on Programmable Hardware. In ACM SIGCOMM, pages 183–194, 2010. Google ScholarDigital Library
- 7.G. Back. DataScript: A Specification and Scripting Language for Binary Data. In ACM SIGPLAN/SIGSOFT, pages 66–77. Springer-Verlag, 2002. Google ScholarDigital Library
- 8.W. Bai, L. Chen, K. Chen, D. Han, C. Tian, and H. Wang. Information-agnostic Flow Scheduling for Commodity Data Centers. In 12th USENIX Conference on Networked Systems Design and Implementation (NSDI), pages 455–468, 2015. Google ScholarDigital Library
- 9.A. Bianco, R. Birke, L. Giraudo, and M. Palacin. OpenFlow Switching: Data Plane Performance. In IEEE International Conference on Communications (ICC), pages 1–5, 2010.Google Scholar
- 10.P. Bosshart, D. Daly, G. Gibb, M. Izzard, N. McKeown, J. Rexford, C. Schlesinger, D. Talayco, A. Vahdat, G. Varghese, and D. Walker. P4: Programming Protocol-independent Packet Processors. ACM SIGCOMM Computer Communication Review (CCR), 44(3):87–95, July 2014. Google ScholarDigital Library
- 11.P. Bosshart, G. Gibb, H.-S. Kim, G. Varghese, N. McKeown, M. Izzard, F. Mujica, and M. Horowitz. Forwarding Metamorphosis: Fast Programmable Match-action Processing in Hardware for SDN. In ACM SIGCOMM, pages 99–110, 2013. Google ScholarDigital Library
- 12.G. Brebner. Programmable Hardware for Software Defined Networks. In IEEE European Conference on Optical Communication (ECOC), pages 1–3, 2015.Google Scholar
- 13.D. Coleman, D. Ash, B. Lowther, and P. Oman. Using Metrics to Evaluate Software System Maintainability. IEEE Computer, 27(8):44–49, 1994. Google ScholarDigital Library
- 14.J. Corbet. BPF: The Universal In-kernel Virtual Machine. Linux Weekly News, Eklektix Inc, 2014.Google Scholar
- 15.J. Corbet. Extending BPF. Linux Weekly News, Eklektix Inc, 2014.Google Scholar
- 16.B. Davie and J. Gross. A Stateless Transport Tunneling Protocol for Network Virtualization (STT). Internet-Draft draft-davie-stt-08, Internet Engineering Task Force, Apr. 2016. Work in Progress.Google Scholar
- 17.M. Dillon and T. Winters. Network Functions Virtualization in Home Networks. Technical report, Open Networking Foundation, 2015. https://www.opennetworking.org/images/stories/downloads/sdn-resources/IEEE-papers/network-func-virt-in-home-networks.pdf.Google Scholar
- 18.M. Dobrescu, N. Egi, K. Argyraki, B.-G. Chun, K. Fall, G. Iannaccone, A. Knies, M. Manesh, and S. Ratnasamy. RouteBricks: Exploiting Parallelism to Scale Software Routers. In ACM SIGOPS 22nd Symposium on Operating Systems Principles (SOSP), pages 15–28, 2009. Google ScholarDigital Library
- 19.N. Dukkipati, G. Gibb, N. McKeown, and J. Zhu. Building a RCP (Rate Control Protocol) Test Network. In 15th IEEE Symposium on High-Performance Interconnects (HOTI), pages 91–98, 2007. Google ScholarDigital Library
- 20.P. Emmerich, S. Gallenmüller, D. Raumer, F. Wohlfart, and G. Carle. MoonGen: A Scriptable High-Speed Packet Generator. In ACM Internet Measurement Conference (IMC), pages 275–287, 2015. Google ScholarDigital Library
- 21.P. Emmerich, D. Raumer, F. Wohlfart, and G. Carle. Performance Characteristics of Virtual Switching. In IEEE International Conference on Cloud Networking (CloudNet), pages 120–125, 2014.Google Scholar
- 22.D. Farinacci, S. P. Hanks, D. Meyer, and P. S. Traina. Generic Routing Encapsulation (GRE). RFC 2784, Mar. 2000. Google ScholarDigital Library
- 23.K. Fisher and R. Gruber. PADS: A Domain-specific Language for Processing Ad Hoc Data. In ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), pages 295–304, 2005. Google ScholarDigital Library
- 24.N. Foster, R. Harrison, M. J. Freedman, C. Monsanto, J. Rexford, A. Story, and D. Walker. Frenetic: A Network Programming Language. In 16th ACM SIGPLAN International Conference on Functional Programming (ICFP), pages 279–291, 2011. Google ScholarDigital Library
- 25.T. M. Gil and M. Poletto. MULTOPS: A Data-structure for Bandwidth Attack Detection. In 10th Conference on USENIX Security Symposium, 2001. Google ScholarDigital Library
- 26.A. Greenberg, J. R. Hamilton, N. Jain, S. Kandula, C. Kim, P. Lahiri, D. A. Maltz, P. Patel, and S. Sengupta. VL2: A Scalable and Flexible Data Center Network. In ACM SIGCOMM, pages 51–62, 2009. Google ScholarDigital Library
- 27.J. Gross. Tunnel: Add support for matching on OAM packets. Git commit 94872594b79d in ovs-github, May 2014.Google Scholar
- 28.J. Gross. Tunneling: Allow matching and setting tunnel `OAM' flag. Git commit b666962be3b2 in ovs-github, July 2015.Google Scholar
- 29.J. Gross and I. Ganga. Geneve: Generic Network Virtualization Encapsulation. Internet-Draft draft-ietf-nvo3-geneve-01, Internet Engineering Task Force, Jan. 2016. Work in Progress.Google Scholar
- 30.S. Han, K. Jang, A. Panda, S. Palkar, D. Han, and S. Ratnasamy. SoftNIC: A Software NIC to Augment Hardware. Technical Report UCB/EECS-2015-155, EECS Department, University of California, Berkeley, May 2015.Google Scholar
- 31.S. Han, K. Jang, K. Park, and S. Moon. PacketShader: A GPU-accelerated Software Router. In ACM SIGCOMM, pages 195–206, 2010. Google ScholarDigital Library
- 32.N. Heirbaut and T. Van Der Storm. Two implementation techniques for domain specific languages compared: OMeta/JS vs. JavaScript. Master's thesis, Universiteit van Amsterdam, 2009.Google Scholar
- 33.D. Hiebert. Ctags User Commands Version 5.8-1. Exuberant Ctags.Google Scholar
- 34.Intel. DPDK: Data Plane Development Kit. http://dpdk.org, 2013.Google Scholar
- 35.Intel. DPDK: Data Plane Development Kit - Programmer's Guide, 2013. http://dpdk.org/doc/guides/prog_guide/index.html.Google Scholar
- 36.L. Jose, L. Yan, G. Varghese, and N. McKeown. Compiling Packet Programs to Reconfigurable Switches. In 12th USENIX Symposium on Networked Systems Design and Implementation (NSDI), pages 103–115, 2015. Google ScholarDigital Library
- 37.S. H. Kan. Metrics and Models in Software Quality Engineering. Addison-Wesley Longman Publishing Co., Inc., 2nd edition, 2002. Google ScholarDigital Library
- 38.C. Kaner et al. Software engineering metrics: What do they measure and how do we know? In IEEE METRICS. Citeseer, 2004.Google Scholar
- 39.D. Katabi, M. Handley, and C. Rohrs. Congestion Control for High Bandwidth-delay Product Networks. In ACM SIGCOMM, pages 89–102, 2002. Google ScholarDigital Library
- 40.N. Katta, M. Hira, C. Kim, A. Sivaraman, and J. Rexford. HULA: Scalable Load Balancing Using Programmable Data Planes. In 2nd ACM SIGCOMM Symposium on Software Defined Networking Research (SOSR), 2016. Google ScholarDigital Library
- 41.C. Kim. Programming the Network Dataplane in P4, 2016. http://netseminar.stanford.edu/03_31_16.html.Google Scholar
- 42.C. Kim, P. Bhide, E. Doe, H. Holbrook, A. Ghanwani, D. Daly, M. Hira, and B. Davie. In-band Network Telemetry (INT), 2016. http://p4.org/wp-content/uploads/fixed/INT/INT-current-spec.pdf.Google Scholar
- 43.C. Kim, A. Sivaraman, N. Katta, A. Bas, A. Dixit, and L. J. Wobker. In-band Network Telemetry via Programmable Dataplanes. In ACM SIGCOMM, 2015. Demo Session.Google Scholar
- 44.E. Kohler, R. Morris, B. Chen, J. Jannotti, and M. F. Kaashoek. The Click Modular Router. ACM Transaction on Computer Systems (TOCS), 18(3):263–297, Aug. 2000. Google ScholarDigital Library
- 45.C. Lameter. NUMA (Non-Uniform Memory Access): An Overview. ACM Queue, 11(7):40, 2013. Google ScholarDigital Library
- 46.Linux Kernel Archives. http://kernel.org, 1997.Google Scholar
- 47.M. Mahalingam, T. Sridhar, M. Bursell, L. Kreeger, C. Wright, K. Duda, P. Agarwal, and D. Dutt. Virtual eXtensible Local Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks. RFC 7348, Oct. 2015.Google Scholar
- 48.P. J. McCann and S. Chandra. Packet Types: Abstract Specification of Network Protocol Messages. In ACM SIGCOMM, pages 321–333, 2000. Google ScholarDigital Library
- 49.S. McCanne and V. Jacobson. The BSD Packet Filter: A New Architecture for User-level Packet Capture. In USENIX, pages 2–2, 1993. Google ScholarDigital Library
- 50.N. McKeown, T. Anderson, H. Balakrishnan, G. Parulkar, L. Peterson, J. Rexford, S. Shenker, and J. Turner. OpenFlow: Enabling Innovation in Campus Networks. ACM SIGCOMM Computer Communication Review (CCR), 38(2):69–74, Mar. 2008. Google ScholarDigital Library
- 51.Network Working Group. RFC 1624: Computation of the Internet Checksum via Incremental Update, May 1994.Google Scholar
- 52.P. Oman and J. Hagemeister. Metrics for assessing a software system's maintainability. In Conference on Software Maintenance, pages 337–344, 1992.Google ScholarCross Ref
- 53.Open vSwitch. https://github.com/openvswitch/ovs, October 2015.Google Scholar
- 54.R. Pagh and F. F. Rodler. Cuckoo hashing. Elsevier Journal of Algorithms, 51(2):122–144, 2004. Google ScholarDigital Library
- 55.I. Pepelnjak. Packet Forwarding in Amazon VPC, December 2013. http://blog.ipspace.net/2013/12/packet-forwarding-in-amazon-vpc.html.Google Scholar
- 56.B. Pfaff. P4 Parsing in Open vSwitch, June 2015. P4 Workshop, http://p4workshop2015.sched.org/event/3ZQF.Google Scholar
- 57.B. Pfaff, J. Pettit, T. Koponen, E. J. Jackson, A. Zhou, J. Rajahalme, J. Gross, A. Wang, J. Stringer, P. Shelar, K. Amidon, and M. Casado. The Design and Implementation of Open vSwitch. In 12th USENIX Conference on Networked Systems Design and Implementation (NSDI), pages 117–130, 2015. Google ScholarDigital Library
- 58.S. Previdi et al. SPRING Problem Statement and Requirements. IETF, June 2015. https://datatracker.ietf.org/doc/draft-ietf-spring-problem-statement.Google Scholar
- 59.Proxmox Virtual Environment. https://www.proxmox.com/en/proxmox-ve.Google Scholar
- 60.P. Quinn and U. Elzur. Network Service Header. Internet-Draft draft-ietf-sfc-nsh-04, Internet Engineering Task Force, Mar. 2016. Work in Progress.Google Scholar
- 61.J. Rajahalme. TCP flags matching support. Git commit dc235f7fbcff in ovs-github, October 2013.Google Scholar
- 62.J. Reich, C. Monsanto, N. Foster, J. Rexford, and D. Walker. Modular SDN Programming with Pyretic. USENIX ;login:, 38(5):128–134, 2013.Google Scholar
- 63.T. Rinta-Aho, M. Karlstedt, and M. P. Desai. The Click2NetFPGA Toolchain. In USENIX Annual Technical Conference (ATC), pages 7–7, 2012. Google ScholarDigital Library
- 64.L. Rizzo. Netmap: A Novel Framework for Fast Packet I/O. In USENIX Annual Technical Conference (ATC), pages 101–112, June 2012. Google ScholarDigital Library
- 65.M. Shahbaz and N. Feamster. The Case for an Intermediate Representation for Programmable Data Planes. In 1st ACM SIGCOMM Symposium on Software Defined Networking Research (SOSR), pages 31–36, 2015. Google ScholarDigital Library
- 66.N. Shelly, E. J. Jackson, T. Koponen, N. McKeown, and J. Rajahalme. Flow Caching for High Entropy Packet Fields. In 34th ACM SIGCOMM Workshop on Hot Topics in Software Defined Networking (HotSDN), pages 151–156, 2014. Google ScholarDigital Library
- 67.M. Smith and L. Kreeger. VXLAN Group Policy Option. Internet-Draft draft-smith-vxlan-group-policy-02, Internet Engineering Task Force, Apr. 2016. Work in Progress.Google Scholar
- 68.H. Song. Protocol-oblivious Forwarding: Unleash the Power of SDN Through a Future-proof Forwarding Plane. In 2nd ACM SIGCOMM Workshop on Hot Topics in Software Defined Networking (HotSDN), pages 127–132, 2013. Google ScholarDigital Library
- 69.V. Srinivasan, S. Suri, and G. Varghese. Packet Classification Using Tuple Space Search. In ACM SIGCOMM, pages 135–146, 1999. Google ScholarDigital Library
- 70.J. Stringer. datapath: Allow matching on conntrack label. Git commit 038e34abaa31 in ovs-github, December 2012.Google Scholar
- 71.J. Stringer. Add connection tracking label support. Git commit 9daf23484fb1 in ovs-github, October 2013.Google Scholar
- 72.M. Varvello, R. Laufer, F. Zhang, and T. Lakshman. Multi-Layer Packet Classification with Graphics Processing Units. In 10th ACM International on Conference on Emerging Networking Experiments and Technologies (CoNEXT), pages 109–120, 2014. Google ScholarDigital Library
- 73.Y.-S. Wang and P. Garg. NVGRE: Network Virtualization Using Generic Routing Encapsulation. RFC 7637, Oct. 2015.Google Scholar
- 74.D. Zhou, B. Fan, H. Lim, M. Kaminsky, and D. G. Andersen. Scalable, High Performance Ethernet Forwarding with CuckooSwitch. In 9th ACM Conference on Emerging Networking Experiments and Technologies (CoNEXT), pages 97–108, 2013. Google ScholarDigital Library
- PISCES: A Programmable, Protocol-Independent Software Switch
Recommendations
PVPP: A Programmable Vector Packet Processor
SOSR '17: Proceedings of the Symposium on SDN ResearchRecent work on simplifying data plane programming focuses on providing simple, high-level domain-specific languages (DSLs). These languages hide the complex and intricate details of the underlying switching substrate. Programmers write their data-plane ...
Towards a more programmable and performance-optimized Virtual Switch: Introducing P4 programmability within OVS
ANCS '21: Proceedings of the Symposium on Architectures for Networking and Communications SystemsAdvent of network function virtualization and multiple virtual machines hosting multiple applications fueled the need for a programmable software switch that coordinates network traffic across them. Open Virtual Switch (OVS) is a software component that ...
Characterizing the Performance of Concurrent Virtualized Network Functions with OVS-DPDK, FD.IO VPP and SR-IOV
ICPE '18: Proceedings of the 2018 ACM/SPEC International Conference on Performance EngineeringThe virtualization of network functions is promising significant cost reductions for network operators. Running multiple network functions on a standard x86 server instead of dedicated appliances can increase the utilization of the underlying hardware,...
Comments