Merge "[neutron] SR-IOV support for infiniband"
This commit is contained in:
commit
878ae9c4a5
@ -17,6 +17,9 @@ multiple PCIe devices. You can directly assign each virtual PCIe device to
|
|||||||
a VM, bypassing the hypervisor and virtual switch layer. As a result, users
|
a VM, bypassing the hypervisor and virtual switch layer. As a result, users
|
||||||
are able to achieve low latency and near-line wire speed.
|
are able to achieve low latency and near-line wire speed.
|
||||||
|
|
||||||
|
SR-IOV with ethernet
|
||||||
|
~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
The following terms are used over the document:
|
The following terms are used over the document:
|
||||||
|
|
||||||
.. list-table::
|
.. list-table::
|
||||||
@ -41,8 +44,8 @@ In order to enable SR-IOV, the following steps are required:
|
|||||||
#. Configure nova-scheduler (Controller)
|
#. Configure nova-scheduler (Controller)
|
||||||
#. Enable neutron sriov-agent (Compute)
|
#. Enable neutron sriov-agent (Compute)
|
||||||
|
|
||||||
Neutron sriov-agent
|
**Neutron sriov-agent**
|
||||||
--------------------
|
|
||||||
There are 2 ways of configuring SR-IOV:
|
There are 2 ways of configuring SR-IOV:
|
||||||
|
|
||||||
#. With the sriov-agent running on each compute node
|
#. With the sriov-agent running on each compute node
|
||||||
@ -60,7 +63,7 @@ port security (enable and disable spoofchecking) and QoS rate limit settings.
|
|||||||
removed in Mitaka.
|
removed in Mitaka.
|
||||||
|
|
||||||
Known limitations
|
Known limitations
|
||||||
~~~~~~~~~~~~~~~~~
|
-----------------
|
||||||
|
|
||||||
* QoS is supported since Liberty, while it has limitations.
|
* QoS is supported since Liberty, while it has limitations.
|
||||||
max_burst_kbps (burst over max_kbps) is not supported.
|
max_burst_kbps (burst over max_kbps) is not supported.
|
||||||
@ -77,7 +80,7 @@ Known limitations
|
|||||||
sriov-agent.
|
sriov-agent.
|
||||||
|
|
||||||
Environment example
|
Environment example
|
||||||
~~~~~~~~~~~~~~~~~~~
|
-------------------
|
||||||
We recommend using Open vSwitch with VLAN as segregation. This
|
We recommend using Open vSwitch with VLAN as segregation. This
|
||||||
way you can combine normal VMs without SR-IOV ports
|
way you can combine normal VMs without SR-IOV ports
|
||||||
and instances with SR-IOV ports on a single neutron
|
and instances with SR-IOV ports on a single neutron
|
||||||
@ -92,7 +95,7 @@ network.
|
|||||||
|
|
||||||
|
|
||||||
Create Virtual Functions (Compute)
|
Create Virtual Functions (Compute)
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
----------------------------------
|
||||||
In this step, create the VFs for the network
|
In this step, create the VFs for the network
|
||||||
interface that will be used for SR-IOV.
|
interface that will be used for SR-IOV.
|
||||||
Use eth3 as PF, which is also used
|
Use eth3 as PF, which is also used
|
||||||
@ -165,7 +168,7 @@ For **QLogic SR-IOV Ethernet cards** see:
|
|||||||
|
|
||||||
|
|
||||||
Whitelist PCI devices nova-compute (Compute)
|
Whitelist PCI devices nova-compute (Compute)
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
--------------------------------------------
|
||||||
|
|
||||||
Tell nova-compute which pci devices are allowed to be passed
|
Tell nova-compute which pci devices are allowed to be passed
|
||||||
through. Edit the file ``/etc/nova/nova.conf``:
|
through. Edit the file ``/etc/nova/nova.conf``:
|
||||||
@ -209,7 +212,7 @@ entries per host are supported.
|
|||||||
.. _configure_sriov_neutron_server:
|
.. _configure_sriov_neutron_server:
|
||||||
|
|
||||||
Configure neutron-server (Controller)
|
Configure neutron-server (Controller)
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
-------------------------------------
|
||||||
|
|
||||||
#. Add ``sriovnicswitch`` as mechanism driver. Edit the file
|
#. Add ``sriovnicswitch`` as mechanism driver. Edit the file
|
||||||
``/etc/neutron/plugins/ml2/ml2_conf.ini``:
|
``/etc/neutron/plugins/ml2/ml2_conf.ini``:
|
||||||
@ -250,7 +253,7 @@ Configure neutron-server (Controller)
|
|||||||
the :command:`service neutron-server restart`.
|
the :command:`service neutron-server restart`.
|
||||||
|
|
||||||
Configure nova-scheduler (Controller)
|
Configure nova-scheduler (Controller)
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
-------------------------------------
|
||||||
|
|
||||||
#. On every controller node running nova-scheduler add
|
#. On every controller node running nova-scheduler add
|
||||||
PCIDeviceScheduler to the scheduler_default_filters parameter
|
PCIDeviceScheduler to the scheduler_default_filters parameter
|
||||||
@ -271,7 +274,7 @@ Configure nova-scheduler (Controller)
|
|||||||
|
|
||||||
|
|
||||||
Enable neutron sriov-agent (Compute)
|
Enable neutron sriov-agent (Compute)
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
------------------------------------
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
@ -316,7 +319,7 @@ Enable neutron sriov-agent (Compute)
|
|||||||
|
|
||||||
|
|
||||||
Creating instances with SR-IOV ports
|
Creating instances with SR-IOV ports
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
------------------------------------
|
||||||
After the configuration is done, you can now launch Instances
|
After the configuration is done, you can now launch Instances
|
||||||
with neutron SR-IOV ports.
|
with neutron SR-IOV ports.
|
||||||
|
|
||||||
@ -340,3 +343,38 @@ with neutron SR-IOV ports.
|
|||||||
|
|
||||||
$ nova boot --flavor m1.large --image ubuntu_14.04 --nic port-id=$port_id test-sriov
|
$ nova boot --flavor m1.large --image ubuntu_14.04 --nic port-id=$port_id test-sriov
|
||||||
|
|
||||||
|
SR-IOV with InfiniBand
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The support for SR-IOV with InfiniBand allows a Virtual PCI device (VF) to
|
||||||
|
be directly mapped to the guest, allowing higher performance and advanced
|
||||||
|
features such as RDMA (remote direct memory access). To use this feature,
|
||||||
|
you must:
|
||||||
|
|
||||||
|
#. Use InfiniBand enabled network adapters.
|
||||||
|
|
||||||
|
#. Run InfiniBand subnet managers to enable InfiniBand fabric.
|
||||||
|
|
||||||
|
All InfiniBand networks must have a subnet manager running for the network
|
||||||
|
to function. This is true even when doing a simple network of two
|
||||||
|
machines with no switch and the cards are plugged in back-to-back. A
|
||||||
|
subnet manager is required for the link on the cards to come up.
|
||||||
|
It is possible to have more than one subnet manager. In this case, one
|
||||||
|
of them will act as the master, and any other will act as a slave that
|
||||||
|
will take over when the master subnet manager fails.
|
||||||
|
|
||||||
|
#. Install the ``ebrctl`` utility on the compute nodes.
|
||||||
|
|
||||||
|
Check that ``ebrctl`` is listed somewhere in ``/etc/nova/rootwrap.d/*``:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ grep 'ebrctl' /etc/nova/rootwrap.d/*
|
||||||
|
|
||||||
|
If ``ebrctl`` does not appear in any of the rootwrap files, add this to the
|
||||||
|
``/etc/nova/rootwrap.d/compute.filters`` file in the ``[Filters]`` section.
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[Filters]
|
||||||
|
ebrctl: CommandFilter, ebrctl, root
|
||||||
|
Loading…
Reference in New Issue
Block a user