Merge "doc: Rewrap 'vif_types' document"

This commit is contained in:
Jenkins 2017-04-05 16:31:24 +00:00 committed by Gerrit Code Review
commit e133b8a377

View File

@ -1,127 +1,119 @@
=========== =========
VIF Types VIF Types
=========== =========
In os-vif, a VIF type refers to a particular approach for configuring In os-vif, a VIF type refers to a particular approach for configuring the
the backend of a guest virtual network interface. There is a small, backend of a guest virtual network interface. There is a small, finite set of
finite set of ways that a VIF backend can be configured for any given ways that a VIF backend can be configured for any given hypervisor and a
hypervisor and a limited amount of metadata is associated with each limited amount of metadata is associated with each approach.
approach.
VIF objects VIF objects
=========== ===========
Each distinct type of VIF configuration is represented by a versioned Each distinct type of VIF configuration is represented by a versioned object in
object in os-vif, subclassed from os_vif.objects.VIFBase. The VIFBase os-vif, subclassed from `os_vif.objects.VIFBase`. The `VIFBase` class defines
class defines some fields that are common to all types of VIF, and some fields that are common to all types of VIF, and provides an association to
provides an association to a versioned object describing the network a versioned object describing the network the VIF is plugged into.
the VIF is plugged into.
VIFGeneric VIFGeneric
---------- ----------
This class provides a totally generic type of configuration, where the This class provides a totally generic type of configuration, where the guest is
guest is simply associated with an arbitrary TAP device (or equivalent). simply associated with an arbitrary TAP device (or equivalent). The way the
The way the TAP device is connected to the host network stack is TAP device is connected to the host network stack is explicitly left undefined
explicitly left undefined and entirely up to the plugin to decide. and entirely up to the plugin to decide.
VIFBridge VIFBridge
--------- ---------
This class provides a configuration where the guest is connected This class provides a configuration where the guest is connected directly to an
directly to an explicit host bridge device. This provides ethernet explicit host bridge device. This provides ethernet layer bridging, typically
layer bridging, typically to the LAN. to the LAN.
VIFOpenVSwitch VIFOpenVSwitch
-------------- --------------
This class provides a configuration where the guest is connected to This class provides a configuration where the guest is connected to an Open
an openvswitch port. vSwitch port.
VIFDirect VIFDirect
--------- ---------
This class provides a configuration where the guest is connected to This class provides a configuration where the guest is connected to a physical
a physical network device. The connection to the device may operate network device. The connection to the device may operate in one of a number of
in one of a number of different modes, VEPA (either 802.1qbg different modes, VEPA (either 802.1qbg 802.1qbh), passthrough (exclusive
802.1qbh), passthrough (exclusive assignment of the host NIC) or assignment of the host NIC) or bridge (ethernet layer bridging of traffic). The
bridge (ethernet layer bridging of traffic). The passthrough mode passthrough mode would be used when there is a network device which needs to
would be used when there is a network device which needs to have have a MAC address or VLAN configuration. For passthrough of network devices
a MAC address or vlan conf. For passthrough of network devices without MAC/VLAN configuration, the `VIFHostDevice` should be used instead.
without MAC/vlan configuration, the VIFHostDevice should be used
instead.
VIFVHostUser VIFVHostUser
------------ ------------
This class provides another totally generic type of configuration, This class provides another totally generic type of configuration, where the
where the guest is exposing a UNIX socket for its control plane, guest is exposing a UNIX socket for its control plane, allowing an external
allowing an external userspace service to provide the backend data userspace service to provide the backend data plane via a mapped memory region.
plane via a mapped memory region. The process must implement the The process must implement the virtio-net vhost protocol on this socket in
virtio-net vhost protocol on this socket in whatever means is most whatever means is most suitable.
suitable.
VIFHostDevice VIFHostDevice
------------- -------------
This class provides a way to pass a physical device to the guest. This class provides a way to pass a physical device to the guest. Either an
Either an entire physical device, or a SR-IOV PCI device virtual entire physical device, or a SR-IOV PCI device virtual function, are permitted.
function, are permitted.
VIF port profile objects VIF port profile objects
======================== ========================
Each VIF instance can optionally be associated with a port profile Each VIF instance can optionally be associated with a port profile object. This
object. This provides a set of metadata attributes that serve to provides a set of metadata attributes that serve to identify the guest virtual
identify the guest virtual interface to the host. Different types interface to the host. Different types of host connectivity will require
of host connectivity will require different port profile object different port profile object metadata. Each port profile type is associated
metadata. Each port profile type is associated wtih a versioned with a versioned object, subclassing `VIFPortProfileBase`.
object, subclassing VIFPortProfileBase
VIFPortProfileOpenVSwitch VIFPortProfileOpenVSwitch
------------------------- -------------------------
This profile provides the metadata required to associate a VIF This profile provides the metadata required to associate a VIF with an Open
with an openvswitch host port. vSwitch host port.
VIFPortProfile8021Qbg VIFPortProfile8021Qbg
--------------------- ---------------------
This profile provides the metadata required to associate a VIF This profile provides the metadata required to associate a VIF with a VEPA host
with a VEPA host device supporting the 801.1Qbg spec. device supporting the 801.1Qbg spec.
VIFPortProfile8021Qbh VIFPortProfile8021Qbh
--------------------- ---------------------
This profile provides the metadata required to associate a VIF This profile provides the metadata required to associate a VIF with a VEPA host
with a VEPA host device supporting the 801.1Qbg spec. device supporting the 801.1Qbg spec.
VIFPortProfileFPOpenVSwitch VIFPortProfileFPOpenVSwitch
--------------------------- ---------------------------
This profile provides the metadata required to associate a fast path This profile provides the metadata required to associate a fast path vhost-user
vhostuser VIF with an openvswitch port. VIF with an Open vSwitch port.
VIFPortProfileFPBridge VIFPortProfileFPBridge
---------------------- ----------------------
This profile provides the metadata required to associate a fast path This profile provides the metadata required to associate a fast path vhost-user
vhostuser VIF with a linuxbridge port. VIF with a Linux bridge port.
VIFPortProfileFPTap VIFPortProfileFPTap
------------------- -------------------
This profile provides the metadata required to associate a fast path This profile provides the metadata required to associate a fast path vhost-user
vhostuser VIF with a calico port. VIF with a Calico port.
VIF network objects VIF network objects
=================== ===================
Each VIF instance is associated with a set of objects which Each VIF instance is associated with a set of objects which describe the
describe the logical network that the guest will be plugged logical network that the guest will be plugged into. This information is again
into. This information is again represented by a set of represented by a set of versioned objects
versioned objects
TODO :-( TODO :-(