Open Vswitch
Open vSwitch Ben Pfaff VMware What is Open vSwitch? Semi-official description: Open vSwitch is a production quality, multilayer virtual switch licensed under the open source Apache 2.0 license. It is designed to enable massive network automation through programmatic extension, while still supporting standard management interfaces and protocols (e.g. NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag). The exciting parts: ● Write a program to control your network. ● Fast! (and getting faster) ● Portable (with new ports coming) Where is Open vSwitch Used? ● Broad support: – Linux, FreeBSD, NetBSD, Windows, ESX – KVM, Xen, Docker, VirtualBox, Hyper-V, … – mininet, OpenStack, CloudStack, OpenNebula, … ● Widely used: – Most popular OpenStack networking backend – Default network stack in XenServer – 2,180 hits in Google Scholar – Thousands of subscribers to OVS mailing lists ● Hundreds of contributors (Incomplete) List of Contributors Programming Model OpenFlow controller Ingress Flow Table Flow Table … Flow Table Egress Port 0 1 N Port(s) Flow Tables IF a AND b AND ... THEN <actions1> ELSE IF c AND d AND … THEN <actions2> ELSE … Conditions Actions Packet header matches Output to port Metadata matches: Modify packet header or metadata ingress port Add/remove VLAN, MPLS, etc. queuing information Go to or recurse into flow table tunnel information Push/pop stack Bitwise matches Modify flow table Range matches* “Drop” Set membership matches** ... ... priority=55, in_port=1,tcp,tcp_src=80, actions=output:2 Programming Model Properties ● Somewhat good match for hardware ASICs ● Natural for network admins, unnatural for programmers ● Turing complete (with OVS extensions) ● Easy to implement, hard to optimize – (Wasn't obvious it needed optimization.) ● Embarrassingly parallel* OVS Programming Example ● Notes and test cases in source tree ● The curse of “normal”.
[Show full text]