mirror of
https://github.com/openvswitch/ovs
synced 2025-08-22 01:51:26 +00:00
Signed-off-by: Martin Casado <casado@nicira.com> Signed-off-by: Paul Fazzone <pfazzone@nicira.com> Signed-off-by: Dan Wendlandt <dan@nicira.com>
105 lines
5.4 KiB
Plaintext
105 lines
5.4 KiB
Plaintext
Why Open vSwitch?
|
|
=================
|
|
|
|
We love the existing network stack in Linux. It is robust, flexible,
|
|
and feature rich. Linux already contains an in-kernel L2 switch (the
|
|
Linux bridge) which can be used by VMs for inter-VM communication. So,
|
|
it is reasonable to ask why there is a need for a new network switch.
|
|
|
|
The answer is that Open vSwitch is targeted at multi-server
|
|
virtualization deployments, a landscape for which the existing stack is
|
|
not well suited. These environments are often characterized by highly
|
|
dynamic end-points, the maintenance of logical abstractions, and
|
|
(sometimes) integration with or offloading to special purpose switching
|
|
hardware.
|
|
|
|
The following characteristics and design considerations help Open
|
|
vSwitch cope with the above requirements.
|
|
|
|
* The mobility of state: All network state associated with a network
|
|
entity (say a virtual machine) should be easily identifiable and
|
|
migratable between different hosts. This may include traditional
|
|
"soft state" (such as an entry in an L2 learning table), L3 forwarding
|
|
state, policy routing state, ACLs, QoS policy, monitoring
|
|
configuration (e.g. NetFlow, sFlow), etc.
|
|
|
|
Open vSwitch has support for both configuring and migrating both slow
|
|
(configuration) and fast network state between instances. For
|
|
example, if a VM migrates between end-hosts, it is possible to not
|
|
only migrate associated configuration (SPAN rules, ACLs, QoS) but any
|
|
live network state (including, for example, existing state which
|
|
may be difficult to reconstruct). Further, Open vSwitch state is
|
|
typed and backed by a real data-model allowing for the development of
|
|
structured automation systems.
|
|
|
|
* Responding to network dynamics: Virtual environments are often
|
|
characterized by high-rates of change. VMs coming and going, VMs
|
|
moving backwards and forwards in time, changes to the logical network
|
|
environments, and so forth.
|
|
|
|
Open vSwitch supports a number of features that allow a network
|
|
control system to respond and adapt as the environment changes. This
|
|
includes simple accounting and visibility support such as NetFlow and
|
|
sFlow. But perhaps more useful, Open vSwitch supports a network state
|
|
database (OVSDB) that supports remote triggers. Therefore, a piece of
|
|
orchestration software can "watch" various aspects of the network and
|
|
respond if/when they change. This is used heavily today, for example,
|
|
to respond to and track VM migrations.
|
|
|
|
Open vSwitch also supports OpenFlow as a method of exporting remote
|
|
access to control traffic. There are a number of uses for this
|
|
including global network discovery through inspection of discovery
|
|
or link-state traffic (e.g. LLDP, CDP, OSPF, etc.).
|
|
|
|
* Maintenance of logical tags: Distributed virtual switches (such as
|
|
VMware vDS and Cisco's Nexus 1000V) often maintain logical context
|
|
within the network through appending or manipulating tags in network
|
|
packets. This can be used to uniquely identify a VM (in a manner
|
|
resistant to hardware spoofing), or to hold some other context that
|
|
is only relevant in the logical domain. Much of the problem of
|
|
building a distributed virtual switch is to efficiently and correctly
|
|
manage these tags.
|
|
|
|
Open vSwitch includes multiple methods for specifying and maintaining
|
|
tagging rules, all of which are accessible to a remote process for
|
|
orchestration. Further, in many cases these tagging rules are stored
|
|
in an optimized form so they don't have to be coupled with a
|
|
heavyweight network device. This allows, for example, thousands of
|
|
tagging or address remapping rules to be configured, changed, and
|
|
migrated.
|
|
|
|
In a similar vein, Open vSwitch supports a GRE implementation that can
|
|
handle thousands of simultaneous GRE tunnels and supports remote
|
|
configuration for tunnel creation, configuration, and tear-down.
|
|
This, for example, can be used to connect private VM networks in
|
|
different data centers.
|
|
|
|
* Hardware integration: Open vSwitch's forwarding path (the in-kernel
|
|
datapath) is designed to be amenable to "offloading" packet processing
|
|
to hardware chipsets, whether housed in a classic hardware switch
|
|
chassis or in an end-host NIC. This allows for the Open vSwitch
|
|
control path to be able to both control a pure software
|
|
implementation or a hardware switch.
|
|
|
|
There are many ongoing efforts to port Open vSwitch to hardware
|
|
chipsets. These include multiple merchant silicon chipsets (Broadcom
|
|
and Marvell), as well as a number of vendor-specific platforms.
|
|
|
|
The advantage of hardware integration is not only performance within
|
|
virtualized environments. If physical switches also expose the Open
|
|
vSwitch control abstractions, both bare-metal and virtualized hosting
|
|
environments can be managed using the same mechanism for automated
|
|
network control.
|
|
|
|
In many ways, Open vSwitch targets a different point in the design space
|
|
than the existing Linux networking stack, focusing on the need for
|
|
automated and dynamic network control in large-scale Linux-based
|
|
virtualization environments.
|
|
|
|
The goal with Open vSwitch is to keep the in-kernel code as small as
|
|
possible (as is necessary for performance) and to re-use existing
|
|
subsystems when applicable (for example Open vSwitch uses the existing
|
|
QoS stack). Open vSwitch limits disruption by using existing hooks into
|
|
the kernel, so Open vSwitch can be deployed as a module without
|
|
requiring any modification to the kernel.
|