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