Document remote-managed port usage considerations
While most of the SR-IOV related documentation resides in the Neutron repository which is going to have a separate section on the topic of supporting remote-managed ports and off-path networking backends, there are still some things specific to Nova which are worth documenting in Nova docs. https://docs.openstack.org/neutron/latest/admin/config-sriov.html Implements: blueprint integration-with-off-path-network-backends Change-Id: I3c5fe8ec0539e10d07b1b4888e9833bc7ede1d04
This commit is contained in:
parent
db15cb9513
commit
419391e97d
@ -37,6 +37,42 @@ A full guide on configuring and using SR-IOV is provided in the
|
||||
Nova will ignore PCI devices reported by the hypervisor if the address is
|
||||
outside of these ranges.
|
||||
|
||||
.. versionadded:: 25.0.0
|
||||
|
||||
For information on creating servers with remotely-managed SR-IOV network
|
||||
interfaces of SmartNIC DPUs, refer to the relevant section in
|
||||
:neutron-doc:`Networking Guide <admin/ovn/smartnic_dpu>`.
|
||||
|
||||
**Limitations**
|
||||
|
||||
* Only VFs are supported and they must be tagged in the Nova Compute
|
||||
configuration in the ``passthrough_whitelist`` option as
|
||||
``remote_managed: "true"``. There is no auto-discovery of this based
|
||||
on vendor and product IDs;
|
||||
* Either VF or its respective PF must expose a PCI VPD capability with a
|
||||
unique card serial number according to the PCI/PCIe specifications
|
||||
(see `the Libvirt docs <https://libvirt.org/drvnodedev.html#VPDCap>`_ to
|
||||
get an example of how VPD data is represented and what to expect). If
|
||||
this is not the case, those devices will not appear in allocation pools;
|
||||
* Only the Libvirt driver is capable of supporting this feature at the
|
||||
time of writing;
|
||||
* The support for VPD capability handling in Libvirt was added in release
|
||||
`7.9.0 <https://libvirt.org/news.html#v7-9-0-2021-11-01>`_ - older
|
||||
versions are not supported by this feature;
|
||||
* All compute nodes must be upgraded to the Yoga release in order for
|
||||
scheduling of nodes with ``VNIC_TYPE_REMOTE_MANAGED`` ports to succeed;
|
||||
* The same limitations apply to operations like live migration as with
|
||||
`legacy SR-IOV ports <https://docs.openstack.org/neutron/latest/admin/config-sriov.html#known-limitations>`_;
|
||||
* Clearing a VLAN by programming VLAN 0 must not result in errors in the
|
||||
VF kernel driver at the compute host. Before v8.1.0 Libvirt clears
|
||||
a VLAN by programming VLAN 0 before passing a VF through to the guest
|
||||
which may result in an error depending on your driver and kernel version
|
||||
(see, for example, `this bug <https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1957753>`_
|
||||
which discusses a case relevant to one driver). As of Libvirt v8.1.0,
|
||||
EPERM errors encountered while programming VLAN 0 are ignored if
|
||||
VLAN clearning is not explicitly requested in the device XML (i.e.
|
||||
VLAN 0 is not specified explicitly).
|
||||
|
||||
NUMA Affinity
|
||||
-------------
|
||||
|
||||
|
@ -156,6 +156,70 @@ Refer to :oslo.config:option:`pci.alias` for syntax information.
|
||||
|
||||
Once configured, restart the :program:`nova-compute` service.
|
||||
|
||||
Special Tags
|
||||
^^^^^^^^^^^^
|
||||
|
||||
When specified in :oslo.config:option:`pci.passthrough_whitelist` some tags
|
||||
have special meaning:
|
||||
|
||||
``physical_network``
|
||||
Associates a device with a physical network label which corresponds to the
|
||||
``physical_network`` attribute of a network segment object in Neutron. For
|
||||
virtual networks such as overlays a value of ``null`` should be specified
|
||||
as follows: ``"physical_network": null``. In the case of physical networks,
|
||||
this tag is used to supply the metadata necessary for identifying a switched
|
||||
fabric to which a PCI device belongs and associate the port with the correct
|
||||
network segment in the networking backend. Besides typical SR-IOV scenarios,
|
||||
this tag can be used for remote-managed devices in conjunction with the
|
||||
``remote_managed`` tag.
|
||||
|
||||
``remote_managed``
|
||||
Used to specify whether a PCI device is managed remotely or not. By default,
|
||||
devices are implicitly tagged as ``"remote_managed": "false"`` but and they
|
||||
must be tagged as ``"remote_managed": "true"`` if ports with
|
||||
``VNIC_TYPE_REMOTE_MANAGED`` are intended to be used. Once that is done,
|
||||
those PCI devices will not be available for allocation for regular
|
||||
PCI passthrough use. Specifying ``"remote_managed": "true"`` is only valid
|
||||
for SR-IOV VFs and specifying it for PFs is prohibited.
|
||||
|
||||
.. important::
|
||||
It is recommended that PCI VFs that are meant to be remote-managed
|
||||
(e.g. the ones provided by SmartNIC DPUs) are tagged as remote-managed in
|
||||
order to prevent them from being allocated for regular PCI passthrough since
|
||||
they have to be programmed accordingly at the host that has access to the
|
||||
NIC switch control plane. If this is not done, instances requesting regular
|
||||
SR-IOV ports may get a device that will not be configured correctly and
|
||||
will not be usable for sending network traffic.
|
||||
|
||||
.. important::
|
||||
For the Libvirt virt driver, clearing a VLAN by programming VLAN 0 must not
|
||||
result in errors in the VF kernel driver at the compute host. Before v8.1.0
|
||||
Libvirt clears a VLAN before passing a VF through to the guest which may
|
||||
result in an error depending on your driver and kernel version (see, for
|
||||
example, `this bug <https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1957753>`_
|
||||
which discusses a case relevant to one driver). As of Libvirt v8.1.0, EPERM
|
||||
errors encountered while programming a VLAN are ignored if VLAN clearning is
|
||||
not explicitly requested in the device XML.
|
||||
|
||||
``trusted``
|
||||
If a port is requested to be trusted by specifying an extra option during
|
||||
port creation via ``--binding-profile trusted=true``, only devices tagged as
|
||||
``trusted: "true"`` will be allocated to instances. Nova will then configure
|
||||
those devices as trusted by the network controller through its PF device driver.
|
||||
The specific set of features allowed by the trusted mode of a VF will differ
|
||||
depending on the network controller itself, its firmware version and what a PF
|
||||
device driver version allows to pass to the NIC. Common features to be affected
|
||||
by this tag are changing the VF MAC address, enabling promiscuous mode or
|
||||
multicast promiscuous mode.
|
||||
|
||||
.. important::
|
||||
While the ``trusted tag`` does not directly conflict with the
|
||||
``remote_managed`` tag, network controllers in SmartNIC DPUs may prohibit
|
||||
setting the ``trusted`` mode on a VF via a PF device driver in the first
|
||||
place. It is recommended to test specific devices, drivers and firmware
|
||||
versions before assuming this feature can be used.
|
||||
|
||||
|
||||
Configure ``nova-scheduler``
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user