Difference between revisions of "Libvirt-direct-network"
Ophir Maor (talk | contribs) m (→Virtual Network Interface supprot for Libvirt VIF Driver) |
(→Implementation) |
||
(5 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
− | = | + | = vNIC support using libvirt VIF Driver = |
− | Hardware Based Virtual NICs (SR-IOV) can be | + | Hardware Based Virtual NICs (SR-IOV) can be achieved in via the following ways: |
− | * Direct Interface ( | + | * Direct Interface (Para-virtualized) |
− | * PCI Device (hostdev). | + | * PCI Device (hostdev). |
The interface can be assigned by using the interface name or PCI device address. | The interface can be assigned by using the interface name or PCI device address. | ||
− | This approach has several limitations well documented in libvirt site[http://wiki.libvirt.org/page/Networking#Assignment_from_a_pool_of_SRIOV_VFs_in_a_libvirt_.3Cnetwork.3E_definition here] | + | This approach has several limitations well documented in libvirt site [http://wiki.libvirt.org/page/Networking#Assignment_from_a_pool_of_SRIOV_VFs_in_a_libvirt_.3Cnetwork.3E_definition here] |
It is possible to avoid these limitations by creating a libvirt network with a device pool containing all the VFs of an SR-IOV device. | It is possible to avoid these limitations by creating a libvirt network with a device pool containing all the VFs of an SR-IOV device. | ||
Line 13: | Line 13: | ||
This support is available using: | This support is available using: | ||
− | * libvirt 0.9.4 | + | * libvirt 0.9.4 - used for direct assignment |
− | * libvirt 0.10.0 for PCI device assignment. | + | * libvirt 0.10.0 - used for PCI device assignment. |
− | = Configuring the vNIC = | + | == Configuring the vNIC == |
− | + | In order to configure the vNIC the network pool name and the vnic_type should be provided to the VIF Driver. | |
− | + | First phase: The network pool name will be provided by adding a configuration variable to the nova.conf named 'physical_network' and the vnic_type is set to 'direct'. | |
− | Next Phase should extend the data that is provided to the VIF Driver once the quantum port is created to provide the physical network name. | + | Next Phase: You should extend the data that is provided to the VIF Driver once the quantum port is created to provide the physical network name. |
− | == | + | == Creating the Network Pool == |
The creation of the Network Pool will be done according to Physical Network mapping to physical interface(s) either Manually (First phase) or by the Quantum Plugin Agent. | The creation of the Network Pool will be done according to Physical Network mapping to physical interface(s) either Manually (First phase) or by the Quantum Plugin Agent. | ||
An example for Network definition can be found [http://libvirt.org/formatnetwork.html#examplesDirect here] | An example for Network definition can be found [http://libvirt.org/formatnetwork.html#examplesDirect here] | ||
− | + | == Implementation == | |
− | * Additional vnic_type - 'direct' is defined. | + | * Additional vnic_type - 'direct' is defined. |
− | * The Implementation extends LibvirtGenericVIFDriver. | + | * The Implementation extends LibvirtGenericVIFDriver. |
− | * Initial support is for direct interface assignment | + | * Initial support is for direct interface assignment |
* Next phase will add support for PCI device assignment.<br /> | * Next phase will add support for PCI device assignment.<br /> | ||
+ | |||
Related Nova blueprint - [https://blueprints.launchpad.net/nova/+spec/libvirt-direct-network Adding libvirt network interface to VIF Driver blueprint ]<br /> | Related Nova blueprint - [https://blueprints.launchpad.net/nova/+spec/libvirt-direct-network Adding libvirt network interface to VIF Driver blueprint ]<br /> | ||
+ | |||
[https://wiki.openstack.org/wiki/Mellanox-Quantum Mellanox Quantum Plugin] requires this functionality <br /> | [https://wiki.openstack.org/wiki/Mellanox-Quantum Mellanox Quantum Plugin] requires this functionality <br /> | ||
− | You can watch the review process here: | + | |
− | https://review.openstack.org/#/c/29048/ | + | You can watch the review process here: |
+ | https://review.openstack.org/#/c/29048/ |
Latest revision as of 07:35, 20 May 2013
Contents
vNIC support using libvirt VIF Driver
Hardware Based Virtual NICs (SR-IOV) can be achieved in via the following ways:
- Direct Interface (Para-virtualized)
- PCI Device (hostdev).
The interface can be assigned by using the interface name or PCI device address.
This approach has several limitations well documented in libvirt site here
It is possible to avoid these limitations by creating a libvirt network with a device pool containing all the VFs of an SR-IOV device. A network device is chosen from the interface pool and directly assigned to the guest VM.
This support is available using:
- libvirt 0.9.4 - used for direct assignment
- libvirt 0.10.0 - used for PCI device assignment.
Configuring the vNIC
In order to configure the vNIC the network pool name and the vnic_type should be provided to the VIF Driver. First phase: The network pool name will be provided by adding a configuration variable to the nova.conf named 'physical_network' and the vnic_type is set to 'direct'.
Next Phase: You should extend the data that is provided to the VIF Driver once the quantum port is created to provide the physical network name.
Creating the Network Pool
The creation of the Network Pool will be done according to Physical Network mapping to physical interface(s) either Manually (First phase) or by the Quantum Plugin Agent. An example for Network definition can be found here
Implementation
- Additional vnic_type - 'direct' is defined.
- The Implementation extends LibvirtGenericVIFDriver.
- Initial support is for direct interface assignment
- Next phase will add support for PCI device assignment.
Related Nova blueprint - Adding libvirt network interface to VIF Driver blueprint
Mellanox Quantum Plugin requires this functionality
You can watch the review process here: https://review.openstack.org/#/c/29048/