Difference between revisions of "LibvirtVIFTypeXMLConfigs"
(→VIF_TYPE_OVS) |
m (→VIF_TYPE_VHOSTUSER) |
||
(6 intermediate revisions by 2 users not shown) | |||
Line 3: | Line 3: | ||
This document outlines the way the LibvirtGenericVIFDriver configures networking in Liberty-1 development tree, and also looks at a few proposed new VIF types | This document outlines the way the LibvirtGenericVIFDriver configures networking in Liberty-1 development tree, and also looks at a few proposed new VIF types | ||
− | == Common configuration== | + | == Current configuration == |
+ | |||
+ | === Common configuration=== | ||
A number of aspects of the guest interface configuration are common to all VIF types, though some types do have restrictions on valid values. For example. VIF_TYPE_VHOSTUSER requires a model of virtio. | A number of aspects of the guest interface configuration are common to all VIF types, though some types do have restrictions on valid values. For example. VIF_TYPE_VHOSTUSER requires a model of virtio. | ||
− | <interface type="..."> | + | <nowiki><interface type="..."> |
<mac address="01:02:ab:de:03:04"/> | <mac address="01:02:ab:de:03:04"/> | ||
<model type="virtio|e1000|...."/> | <model type="virtio|e1000|...."/> | ||
Line 14: | Line 16: | ||
....QOS settings... | ....QOS settings... | ||
</bandwidth> | </bandwidth> | ||
− | </interface> | + | </interface></nowiki> |
− | == VIF_TYPE_OVS == | + | === VIF_TYPE_OVS === |
Primary method: | Primary method: | ||
Line 38: | Line 40: | ||
</interface></nowiki> | </interface></nowiki> | ||
− | == VIF_TYPE_IVS == | + | === VIF_TYPE_IVS === |
Either | Either | ||
− | <interface type="ethernet"> | + | <nowiki><interface type="ethernet"> |
<target dev="vnet0"/> | <target dev="vnet0"/> | ||
− | </interface> | + | </interface></nowiki> |
Or if firewall filtering is needed, it uses | Or if firewall filtering is needed, it uses | ||
− | <interface type="bridge"> | + | <nowiki><interface type="bridge"> |
<source bridge="br0"/> | <source bridge="br0"/> | ||
<target dev="vnet0"/> | <target dev="vnet0"/> | ||
− | </interface> | + | </interface></nowiki> |
− | == VIF_TYPE_DVS == | + | === VIF_TYPE_DVS === |
VMWare specific, not used by libvirt | VMWare specific, not used by libvirt | ||
− | == VIF_TYPE_IOVISOR == | + | === VIF_TYPE_IOVISOR === |
− | <interface type="ethernet"> | + | <nowiki><interface type="ethernet"> |
<target dev="vnet0"/> | <target dev="vnet0"/> | ||
− | </interface> | + | </interface></nowiki> |
− | == VIF_TYPE_BRIDGE == | + | === VIF_TYPE_BRIDGE === |
− | <interface type="bridge"> | + | <nowiki><interface type="bridge"> |
<source bridge="br0"/> | <source bridge="br0"/> | ||
<target dev="vnet0"/> | <target dev="vnet0"/> | ||
<filterref name="nwfilter"/> | <filterref name="nwfilter"/> | ||
− | </interface> | + | </interface></nowiki> |
− | == VIF_TYPE_802_QBG == | + | === VIF_TYPE_802_QBG === |
− | <interface type="direct"> | + | <nowiki><interface type="direct"> |
<source dev="eth0"> | <source dev="eth0"> | ||
<portprofile type="802.1qbg"> | <portprofile type="802.1qbg"> | ||
Line 82: | Line 84: | ||
instanceid="09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f"/> | instanceid="09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f"/> | ||
</portprofile> | </portprofile> | ||
− | </interface> | + | </interface></nowiki> |
− | == VIF_TYPE_802_QBH == | + | === VIF_TYPE_802_QBH === |
− | <interface type="direct"> | + | <nowiki><interface type="direct"> |
<source dev="eth0" mode="vepa"> | <source dev="eth0" mode="vepa"> | ||
<portprofile type="802.1qbh"> | <portprofile type="802.1qbh"> | ||
<parameters profileid="manager"/> | <parameters profileid="manager"/> | ||
</portprofile> | </portprofile> | ||
− | </interface> | + | </interface></nowiki> |
− | == VIF_TYPE_HW_VEB == | + | === VIF_TYPE_HW_VEB === |
− | <interface type="direct"> | + | <nowiki><interface type="direct"> |
<source dev="eth0" mode="passthrough"> | <source dev="eth0" mode="passthrough"> | ||
− | </interface> | + | </interface></nowiki> |
Or | Or | ||
− | <interface type="hostdev"> | + | <nowiki><interface type="hostdev"> |
<source dev="00:02:10.2"/> | <source dev="00:02:10.2"/> | ||
<vlan>3</vlan> | <vlan>3</vlan> | ||
− | </interface> | + | </interface></nowiki> |
− | == VIF_TYPE_MLNX_DIRECT == | + | === VIF_TYPE_MLNX_DIRECT === |
− | <interface type="direct"> | + | <nowiki><interface type="direct"> |
<source dev="eth0" mode="passthrough"> | <source dev="eth0" mode="passthrough"> | ||
− | </interface> | + | </interface></nowiki> |
− | == VIF_TYPE_MIDONET == | + | === VIF_TYPE_MIDONET === |
− | <interface type="ethernet"> | + | <nowiki><interface type="ethernet"> |
<target dev="vnet0"/> | <target dev="vnet0"/> | ||
− | </interface> | + | </interface></nowiki> |
− | == VIF_TYPE_VHOSTUSER == | + | === VIF_TYPE_VHOSTUSER === |
− | <interface type="vhostuser"> | + | <nowiki><interface type="vhostuser"> |
− | <source type="unix" path="/some/sock" mode=" | + | <source type="unix" path="/some/sock" mode="server|client"/> |
− | </interface> | + | </interface></nowiki> |
− | == VIF_TYPE_VROUTER == | + | === VIF_TYPE_VROUTER === |
− | <interface type="ethernet"> | + | <nowiki><interface type="ethernet"> |
<target dev="vnet0"/> | <target dev="vnet0"/> | ||
− | </interface> | + | </interface></nowiki> |
− | == VIF_TYPE_OTHER == | + | === VIF_TYPE_OTHER === |
Dummy placeholder, not used by libvirt. | Dummy placeholder, not used by libvirt. | ||
− | == Proposed: VIF_TYPE_MACVTAP == | + | === Proposed: VIF_TYPE_MACVTAP === |
− | <interface type='direct'> | + | <nowiki><interface type='direct'> |
<source dev='eth0' mode=’vepa|bridge’/> | <source dev='eth0' mode=’vepa|bridge’/> | ||
− | </interface> | + | </interface></nowiki> |
+ | |||
+ | |||
+ | == Consolidated XML configs needed == | ||
+ | |||
+ | Based on what is implemented in existing VIF types and proposed VIF types, it is possible to consoldiate to a limited set of libvirt variants | ||
+ | |||
+ | In fact out of the 15 different VIF types, there are only ultimately 5 distinct libvirt guest configurations used | ||
+ | |||
+ | === VIF_TYPE_BRIDGE === | ||
+ | |||
+ | <nowiki><interface type="bridge"> | ||
+ | <source bridge="br0"/> | ||
+ | <target dev="vnet0"/> | ||
+ | <filterref name="nwfilter"/> | ||
+ | <vportprofile> | ||
+ | .... | ||
+ | </portprofile> | ||
+ | </interface></nowiki> | ||
+ | |||
+ | === VIF_TYPE_GENERIC === | ||
+ | |||
+ | A standalone TAP dev, that is connected to host in unspecified manner | ||
+ | |||
+ | <nowiki><interface type="ethernet"> | ||
+ | <target dev="vnet0"/> | ||
+ | </interface></nowiki> | ||
+ | |||
+ | === VIF_TYPE_VHOSTUSER === | ||
+ | |||
+ | <nowiki><interface type="vhostuser"> | ||
+ | <source type="unix" path="/some/sock" mode="server|client"/> | ||
+ | </interface></nowiki> | ||
+ | |||
+ | === VIF_TYPE_PCI_ASSIGNED === | ||
+ | |||
+ | <nowiki><interface type="hostdev"> | ||
+ | <source dev="00:02:10.2"/> | ||
+ | <vlan>3</vlan> | ||
+ | </interface></nowiki> | ||
+ | |||
+ | === VIF_TYPE_DIRECT === | ||
+ | |||
+ | <nowiki><interface type='direct'> | ||
+ | <source dev='eth0' mode=’vepa|bridge|passthrough’/> | ||
+ | <vportprofile> | ||
+ | .... | ||
+ | </portprofile> | ||
+ | </interface></nowiki> | ||
+ | |||
+ | As an alternative to specifying a 'mode' it might be desirable to have separate VIF types VIF_TYPE_VEPA, VIF_TYPE_PASSTHROUGH, VIF_TYPE_DEV_BRIDGE |
Latest revision as of 00:42, 10 July 2015
Contents
- 1 Libvirt VIF Type XML configuration
- 1.1 Current configuration
- 1.1.1 Common configuration
- 1.1.2 VIF_TYPE_OVS
- 1.1.3 VIF_TYPE_IVS
- 1.1.4 VIF_TYPE_DVS
- 1.1.5 VIF_TYPE_IOVISOR
- 1.1.6 VIF_TYPE_BRIDGE
- 1.1.7 VIF_TYPE_802_QBG
- 1.1.8 VIF_TYPE_802_QBH
- 1.1.9 VIF_TYPE_HW_VEB
- 1.1.10 VIF_TYPE_MLNX_DIRECT
- 1.1.11 VIF_TYPE_MIDONET
- 1.1.12 VIF_TYPE_VHOSTUSER
- 1.1.13 VIF_TYPE_VROUTER
- 1.1.14 VIF_TYPE_OTHER
- 1.1.15 Proposed: VIF_TYPE_MACVTAP
- 1.2 Consolidated XML configs needed
- 1.1 Current configuration
Libvirt VIF Type XML configuration
This document outlines the way the LibvirtGenericVIFDriver configures networking in Liberty-1 development tree, and also looks at a few proposed new VIF types
Current configuration
Common configuration
A number of aspects of the guest interface configuration are common to all VIF types, though some types do have restrictions on valid values. For example. VIF_TYPE_VHOSTUSER requires a model of virtio.
<interface type="..."> <mac address="01:02:ab:de:03:04"/> <model type="virtio|e1000|...."/> <driver name="vhost|qemu"/> <bandwidth> ....QOS settings... </bandwidth> </interface>
VIF_TYPE_OVS
Primary method:
<interface type="bridge"> <source bridge="br0"/> <target dev="vnet0"/> <portprofile type="openvswitch"> <parameters interfaceid='09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f' profileid="something"/> </portprofie> </interface>
Or if firewall filtering is needed, it uses
<interface type="bridge"> <source bridge="br0"/> <target dev="vnet0"/> <filterref name="nwfilter"/> </interface>
VIF_TYPE_IVS
Either
<interface type="ethernet"> <target dev="vnet0"/> </interface>
Or if firewall filtering is needed, it uses
<interface type="bridge"> <source bridge="br0"/> <target dev="vnet0"/> </interface>
VIF_TYPE_DVS
VMWare specific, not used by libvirt
VIF_TYPE_IOVISOR
<interface type="ethernet"> <target dev="vnet0"/> </interface>
VIF_TYPE_BRIDGE
<interface type="bridge"> <source bridge="br0"/> <target dev="vnet0"/> <filterref name="nwfilter"/> </interface>
VIF_TYPE_802_QBG
<interface type="direct"> <source dev="eth0"> <portprofile type="802.1qbg"> <parameters managerid="11" typeid="1193047" typeidversion="2" instanceid="09b11c53-8b5c-4eeb-8f00-d84eaa0aaa4f"/> </portprofile> </interface>
VIF_TYPE_802_QBH
<interface type="direct"> <source dev="eth0" mode="vepa"> <portprofile type="802.1qbh"> <parameters profileid="manager"/> </portprofile> </interface>
VIF_TYPE_HW_VEB
<interface type="direct"> <source dev="eth0" mode="passthrough"> </interface>
Or
<interface type="hostdev"> <source dev="00:02:10.2"/> <vlan>3</vlan> </interface>
VIF_TYPE_MLNX_DIRECT
<interface type="direct"> <source dev="eth0" mode="passthrough"> </interface>
VIF_TYPE_MIDONET
<interface type="ethernet"> <target dev="vnet0"/> </interface>
VIF_TYPE_VHOSTUSER
<interface type="vhostuser"> <source type="unix" path="/some/sock" mode="server|client"/> </interface>
VIF_TYPE_VROUTER
<interface type="ethernet"> <target dev="vnet0"/> </interface>
VIF_TYPE_OTHER
Dummy placeholder, not used by libvirt.
Proposed: VIF_TYPE_MACVTAP
<interface type='direct'> <source dev='eth0' mode=’vepa|bridge’/> </interface>
Consolidated XML configs needed
Based on what is implemented in existing VIF types and proposed VIF types, it is possible to consoldiate to a limited set of libvirt variants
In fact out of the 15 different VIF types, there are only ultimately 5 distinct libvirt guest configurations used
VIF_TYPE_BRIDGE
<interface type="bridge"> <source bridge="br0"/> <target dev="vnet0"/> <filterref name="nwfilter"/> <vportprofile> .... </portprofile> </interface>
VIF_TYPE_GENERIC
A standalone TAP dev, that is connected to host in unspecified manner
<interface type="ethernet"> <target dev="vnet0"/> </interface>
VIF_TYPE_VHOSTUSER
<interface type="vhostuser"> <source type="unix" path="/some/sock" mode="server|client"/> </interface>
VIF_TYPE_PCI_ASSIGNED
<interface type="hostdev"> <source dev="00:02:10.2"/> <vlan>3</vlan> </interface>
VIF_TYPE_DIRECT
<interface type='direct'> <source dev='eth0' mode=’vepa|bridge|passthrough’/> <vportprofile> .... </portprofile> </interface>
As an alternative to specifying a 'mode' it might be desirable to have separate VIF types VIF_TYPE_VEPA, VIF_TYPE_PASSTHROUGH, VIF_TYPE_DEV_BRIDGE