Statistics
| Branch: | Tag: | Revision:

root / doc / design-openvswitch.rst @ 7165b450

History | View | Annotate | Download (3.7 kB)

1 3771161c Sebastian Gebhard
========================
2 3771161c Sebastian Gebhard
Support for Open vSwitch
3 3771161c Sebastian Gebhard
========================
4 3771161c Sebastian Gebhard
5 3771161c Sebastian Gebhard
.. contents:: :depth: 3
6 3771161c Sebastian Gebhard
7 3771161c Sebastian Gebhard
This is a design document detailing the implementation of support for
8 3771161c Sebastian Gebhard
Open vSwitch in the Ganeti tool chain.
9 3771161c Sebastian Gebhard
10 3771161c Sebastian Gebhard
Current state and shortcomings
11 3771161c Sebastian Gebhard
==============================
12 3771161c Sebastian Gebhard
13 20029b6e Sebastian Gebhard
At the moment Ganeti's support for Open vSwitch is very basic and
14 3771161c Sebastian Gebhard
limited to connecting instances to an existing vSwitch.
15 3771161c Sebastian Gebhard
16 3771161c Sebastian Gebhard
The shortcomings of this approach are:
17 3771161c Sebastian Gebhard
18 3771161c Sebastian Gebhard
1. The full functionality (VLANs, QoS and trunking) of Open vSwitch is not used.
19 3771161c Sebastian Gebhard
20 3771161c Sebastian Gebhard
2. Open vSwitch cannot be managed centrally.
21 3771161c Sebastian Gebhard
22 3771161c Sebastian Gebhard
Proposed changes
23 3771161c Sebastian Gebhard
----------------
24 20029b6e Sebastian Gebhard
1. Implement functions into gnt-network to manage Open vSwitch through Ganeti gnt-network
25 20029b6e Sebastian Gebhard
   should be able to create, modify and delete vSwitches. The resulting configuration shall
26 3771161c Sebastian Gebhard
   automatically be done on all members of the node group. Connecting Ethernet devices to
27 3771161c Sebastian Gebhard
   vSwitches should be managed through this interface as well.
28 3771161c Sebastian Gebhard
29 3771161c Sebastian Gebhard
2. Implement VLAN-capabilities: Instances shall have additional information for every NIC: VLAN-ID
30 3771161c Sebastian Gebhard
   and port type. These are used to determine their type of connection to Open vSwitch. This will
31 3771161c Sebastian Gebhard
   require modifying the methods for instance creation and modification
32 3771161c Sebastian Gebhard
33 20029b6e Sebastian Gebhard
3. Implement NIC bonding: Functions to bond NICs for performance improvement, load-balancing and
34 20029b6e Sebastian Gebhard
   failover should be added. It is preferable to have a configuration option to determine the
35 20029b6e Sebastian Gebhard
   type of the trunk, as there are different types of trunks (LACP dynamic and static, different
36 3771161c Sebastian Gebhard
   failover and load-balancing mechanisms)
37 3771161c Sebastian Gebhard
38 20029b6e Sebastian Gebhard
4. Set QoS level on per instance basis: Instances shall have an additional information: maximum
39 20029b6e Sebastian Gebhard
   bandwidth and maximum burst. This helps to balance the bandwidth needs between the VMs and to
40 3771161c Sebastian Gebhard
   ensure fair sharing of the bandwidth.
41 3771161c Sebastian Gebhard
42 20029b6e Sebastian Gebhard
Configuration changes for VLANs
43 20029b6e Sebastian Gebhard
+++++++++++++++++++++++++++++++
44 20029b6e Sebastian Gebhard
nicparams shall be extended by a value "vlan" that will store the VLAN information for each NIC.
45 20029b6e Sebastian Gebhard
This parameter will only be used if nicparams[constants.NIC_MODE] == constants.NIC_MODE_OVS,
46 20029b6e Sebastian Gebhard
since it doesn't make sense in other modes.
47 20029b6e Sebastian Gebhard
48 20029b6e Sebastian Gebhard
Each VLAN the NIC belongs to shall be stored in this single value. The format of storing this information
49 20029b6e Sebastian Gebhard
is the same as the one which is used in Xen 4.3, since Xen 4.3 comes with functionality to support
50 20029b6e Sebastian Gebhard
OpenvSwitch.
51 20029b6e Sebastian Gebhard
52 20029b6e Sebastian Gebhard
This parameter will, at first, only be implemented for Xen and will have no effects on other hypervisors.
53 20029b6e Sebastian Gebhard
Support for KVM will be added in the future.
54 20029b6e Sebastian Gebhard
55 20029b6e Sebastian Gebhard
Example:
56 20029b6e Sebastian Gebhard
switch1 will connect the VM to the default VLAN of the switch1.
57 20029b6e Sebastian Gebhard
switch1.3 means that the VM is connected to an access port of VLAN 3.
58 20029b6e Sebastian Gebhard
switch1.2:10:20 means that the VM is connected to a trunk port on switch1, carrying VLANs 2, 10 and 20.
59 20029b6e Sebastian Gebhard
60 20029b6e Sebastian Gebhard
This configuration string is split at the dot and stored in nicparams[constants.NIC_LINK] and
61 20029b6e Sebastian Gebhard
nicparams[constants.NIC_VLAN] respectively.
62 20029b6e Sebastian Gebhard
63 20029b6e Sebastian Gebhard
For Xen hypervisors, this information can be concatenated again and stored in the vif config as
64 20029b6e Sebastian Gebhard
the bridge parameter and will be fully compatible with vif-openvswitch as of Xen 4.3.
65 20029b6e Sebastian Gebhard
66 20029b6e Sebastian Gebhard
Users of older Xen versions should be able to grab vif-openvswitch from the Xen repo and use it
67 20029b6e Sebastian Gebhard
(tested in 4.2).
68 20029b6e Sebastian Gebhard
69 20029b6e Sebastian Gebhard
The differentiation between access port and trunk port is given by the number of VLANs that are
70 20029b6e Sebastian Gebhard
specified.
71 20029b6e Sebastian Gebhard
72 20029b6e Sebastian Gebhard
gnt-instance modify shall be able to add or remove single VLANs from the vlan string without users needing
73 20029b6e Sebastian Gebhard
to specify the complete new string.
74 20029b6e Sebastian Gebhard
75 20029b6e Sebastian Gebhard
Configuration changes for QoS
76 20029b6e Sebastian Gebhard
+++++++++++++++++++++++++++++
77 3771161c Sebastian Gebhard
Instances shall be extended with configuration options for
78 3771161c Sebastian Gebhard
79 3771161c Sebastian Gebhard
- maximum bandwidth
80 3771161c Sebastian Gebhard
- maximum burst rate
81 3771161c Sebastian Gebhard
82 3771161c Sebastian Gebhard
New configuration objects need to be created for the Open vSwitch configuration.
83 3771161c Sebastian Gebhard
84 3771161c Sebastian Gebhard
All these configuration changes need to be made available on the whole node group.
85 3771161c Sebastian Gebhard
86 3771161c Sebastian Gebhard
.. vim: set textwidth=72 :
87 3771161c Sebastian Gebhard
.. Local Variables:
88 3771161c Sebastian Gebhard
.. mode: rst
89 3771161c Sebastian Gebhard
.. fill-column: 72
90 3771161c Sebastian Gebhard
.. End: