Introduction
Open vSwitch Overview
Open vSwitch (OVS) is a multi-layer software switch licensed under the open-source Apache 2.0 license. The goal is to implement a production quality switch platform that supports standard management interfaces and opens the forwarding functions to programmatic extension and control. This document uses the basic version as an example whereas OVS has multiple variants based on different platforms.
The OVS software architecture consists of the kernel-mode datapath and user-mode vswitchd and ovsdb.
- datapath is a kernel module responsible for data exchange. It reads data from network ports, quickly matches flow entries in the flow table, and directly forwards the data that is successfully matched or sends the data that fails to be matched to the vswitchd process for processing. The hook function is registered during OVS initialization and port binding to make the kernel module take over the packet processing on the ports.
- vswitchd is a daemon for OVS management and control. It saves configuration information to OVSDB through the UNIX socket and interacts with the kernel module through Netlink.
- ovsdb is an OVS database that stores OVS configuration information.
In addition, the OVS's release package contains a series of management tools, such as ovs-vsctl, ovs-dpctl, ovs-ofctl, ovs-appctl and ovs-docker, facilitating OVS's configuration and use.
In VM and container scenarios, OVS is well adapted as a virtual switch. In addition to the standard control interface and visualized interface of the virtual network layer, OVS also provides distributed support across multiple physical nodes and supports multiple
OVS supports the following features:
- Standard 802.1Q VLAN model with trunk and access ports
- NIC bonding with or without LACP on the upstream switch
- NetFlow, sFlow(R), and mirroring for increased visibility
- QoS configuration, plus policing
- Geneve, GRE, VXLAN, STT, and LISP tunneling
- 802.1ag connectivity fault management
- OpenFlow 1.0 plus numerous extensions
- Transactional configuration database with C and Python bindings
- High-performance forwarding using a Linux kernel module
The Linux kernel module can be supported only when the Linux kernel version is later than 3.10. In addition, OVS can run in
Use the source code compilation method to install the OVS software.
Recommended Version
2.12.0