From c4aaec1c73856332f7deb08f4cc0a5523061892e Mon Sep 17 00:00:00 2001 From: Thales Elero Cervi Date: Tue, 16 Aug 2022 15:59:13 -0300 Subject: [PATCH] CI-PT configuration when SR-IOV is not available (stx 7.0, stx8, ds7) There is a known limitation [1] and NICs that do not support SR-IOV require a different procedure [2] when configuring PCI-PT. This change adds a note on checking SR-IOV support for the target NIC, when configuring PCI-Passthrough for it, and adds the necessary steps for the configuration to work properly whit this type of NIC. For completeness, it also duplicates the PCI-PT example for when configuring PCI SRIOV Ethernet Interfaces, with the necessary changes to the procedure. Fix merge conflict. [1] https://bugs.launchpad.net/starlingx/+bug/1836682 [2] https://wiki.openstack.org/wiki/StarlingX/Networking#Useful_Networking_Commands Partial-bug: 1836682 Signed-off-by: Thales Elero Cervi Change-Id: I7258ab34cb7ce69a2f4b82c682f72d9467d95c70 (cherry picked from commit bc0870eade7842a968e37da3742a3571e9adaca1) --- .../figures/ptj1538163621290.png | Bin 0 -> 105012 bytes ...ng-pci-passthrough-ethernet-interfaces.rst | 167 ++++++++++++----- .../index-node-mgmt-os-ccb47338adbc.rst | 8 +- .../pci-sr-iov-ethernet-interface-devices.rst | 175 +++++++++++++++--- doc/source/shared/abbrevs.txt | 1 + 5 files changed, 272 insertions(+), 79 deletions(-) create mode 100644 doc/source/node_management/figures/ptj1538163621290.png diff --git a/doc/source/node_management/figures/ptj1538163621290.png b/doc/source/node_management/figures/ptj1538163621290.png new file mode 100644 index 0000000000000000000000000000000000000000..8533efa17fc214ffd24e89ef00c49bb9d27e83f8 GIT binary patch literal 105012 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 literal 0 HcmV?d00001 diff --git a/doc/source/node_management/openstack/configuring-pci-passthrough-ethernet-interfaces.rst b/doc/source/node_management/openstack/configuring-pci-passthrough-ethernet-interfaces.rst index 85465e33e..5d4fb8e63 100644 --- a/doc/source/node_management/openstack/configuring-pci-passthrough-ethernet-interfaces.rst +++ b/doc/source/node_management/openstack/configuring-pci-passthrough-ethernet-interfaces.rst @@ -13,66 +13,105 @@ considerations. .. rubric:: |context| -You can specify interfaces when you launch an instance. + +Configure a |PCI| Passthrough Ethernet Interface on a host and request it for an +instance at boot/create time. .. rubric:: |prereq| -.. note:: - - To use |PCI| passthrough or |SRIOV| devices, you must have Intel VT-x and +- To use |PCI| passthrough or |SRIOV| devices, you must have Intel VT-x and Intel VT-d features enabled in the BIOS. -The exercise assumes that the underlying data network **group0-data0** exists -already, and that |VLAN| ID 10 is a valid segmentation ID assigned to -**project1**. +- The exercise assumes that the underlying data network **group0-data0** + exists already, and that |VLAN| ID 10 is a valid segmentation ID assigned + to **project1**. .. rubric:: |proc| -#. Log in as the **admin** user to the |os-prod-hor| interface. +#. Log in as the **admin** user to the |prod-p| |prod-hor-long|. #. Lock the compute node you want to configure. -#. Configure the Ethernet interface to be used as a PCI passthrough interface. +#. Configure the Ethernet interface to be used as a |PCI| passthrough + interface. You can do this using Horizon or the CLI. + + - Using Horison: + + #. Select **Admin** \> **Platform** \> **Host Inventory** from the + left-hand pane. + + #. Select the **Hosts** tab. + + #. Click the name of the compute host. + + #. Select the **Interfaces** tab. + + #. Click the **Edit Interface** button associated with the interface + you want to configure. - #. Select **Admin** \> **Platform** \> **Host Inventory** from the left-hand pane. + The Edit Interface dialog appears. - #. Select the **Hosts** tab. + .. image:: /node_management/figures/ptj1538163621289.png - #. Click the name of the compute host. + #. Select **pci-passthrough**, from the **Interface Class** drop-down, + and then select the data network to attach the interface. - #. Select the **Interfaces** tab. + #. (Optional) You may also need to change the |MTU|. - #. Click the **Edit Interface** button associated with the interface you - want to configure. + - Using the CLI: + + Assign the ``pci-sriov`` class to the interface. + + .. code-block:: none + + ~(keystone_admin)$ system host-if-modify -c pci-passthrough compute-0 enp0s3 + ~(keystone_admin)$ system interface-datanetwork-assign compute-0 - The Edit Interface dialog appears. - - .. image:: /node_management/figures/ptj1538163621289.png +#. Check if the Ethernet interface supports |SRIOV|. + #. Check the host port associated with the configured |PCI|-passthrough interface. - Select **pci-passthrough**, from the **Interface Class** drop-down, and - then select the data network to attach the interface. + .. code-block:: none - You may also need to change the |MTU|. + ~(keystone_admin)$ system host-if-list | grep pci-passthrough - The interface can also be configured from the |CLI| as illustrated below: + #. Review the value of ``sriov_totalvfs`` on the target port. - .. code-block:: none + If the value is ``None``, the Ethernet interface does not support + |SRIOV|. Otherwise, it does. - ~(keystone_admin)$ system host-if-modify -c pci-passthrough compute-0 enp0s3 - ~(keystone_admin)$ system interface-datanetwork-assign compute-0 + .. code-block:: none -#. Create the **net0** project network - - Select **Admin** \> **Network** \> **Networks**, select the Networks tab, and then click **Create Network**. Fill in the Create Network dialog box as illustrated below. You must ensure that: + ~(keystone_admin)$ system host-port-show | grep sriov_totalvfs - - **project1** has access to the project network, either assigning it as - the owner, as in the illustration \(using **Project**\), or by enabling - the shared flag. + .. note:: + + For Ethernet interfaces without |SRIOV| support, there is a known limitation + reported `here `__. + This limitation is overcome with a specific step later on this procedure. + + .. _create-the-net0-project-network: + +#. Create the ``net0`` project network for Ethernet interfaces that support + |SRIOV|. + + .. warning:: + + If the Ethernet interface does not support |SRIOV|, **skip** this step. + + Log in as the **admin** user to the |os-prod-hor-long|. + + Select **Admin** \> **Network** \> **Networks**, select the Networks tab, + and then click **Create Network**. Fill in the Create Network dialog box as + illustrated below. You must ensure that: + + - **project1** has access to the project network. Either by assigning it + as the owner, as in the illustration \(using **Project**\), or by + enabling the shared flag. - The segmentation ID is set to 10. @@ -80,18 +119,19 @@ already, and that |VLAN| ID 10 is a valid segmentation ID assigned to .. image:: /node_management/figures/bek1516655307871.png + Click the **Next** button to proceed to the **Subnet** tab. - Click the **Next** button to proceed to the Subnet tab. - - Click the **Next** button to proceed to the Subnet Details tab. + Click the **Next** button to proceed to the **Subnet Details** tab. #. Configure the access switch. Refer to the OEM documentation to configure the access switch. + Log in as the **admin** user to the |prod-p| |prod-hor-long|. + Configure the physical port on the access switch used to connect to - Ethernet interface **enp0s3** as an access port with default |VLAN| ID of 10. - Traffic across the connection is therefore untagged, and effectively - integrated into the targeted project network. + Ethernet interface ``enp0s3`` to be an access port with the default |VLAN| + ID of 10. Traffic across the connection is therefore untagged, and + effectively integrated into the targeted project network. You can also use a trunk port on the access switch so that it handles tagged packets as well. However, this opens the possibility for guest @@ -103,10 +143,14 @@ already, and that |VLAN| ID 10 is a valid segmentation ID assigned to #. Unlock the compute node. -#. Create a neutron port with a |VNIC| type, direct-physical. +#. Create a neutron port with a |VNIC| of type ``direct-physical`` for + Ethernet interfaces that support |SRIOV|. - The neutron port can also be created from the |CLI|, using the following - command. First, you must set up the environment and determine the correct + .. warning:: + + If the Ethernet interface does not support |SRIOV|, **skip** this step. + + First, you must set up the environment and determine the correct network |UUID| to use with the port. .. code-block:: none @@ -119,16 +163,49 @@ already, and that |VLAN| ID 10 is a valid segmentation ID assigned to You have now created a port to be used when launching the server in the next step. -#. Launch the virtual machine, specifying the port uuid created in *Step 7*. +#. Complete the following Nova configuration, for Ethernet interfaces that do + not support |SRIOV|. + + .. warning:: + + If the Ethernet interface supports |SRIOV|, **skip** this step. + + #. Get the Ethernet interface ``vendor_id`` and ``product_id``: + + .. code-block:: none + + ~(keystone_admin)$ source /etc/platform/openrc + ~(keystone_admin)$ system host-port-show | grep -E '(pvendor |pdevice )' + + #. Use the retrieved IDs to create a |PCI| alias with + ``"device_type":"type-PCI"``, as peer :ref:`Configure a PCI Alias in + Nova `. + + #. Configure a flavor with the extra spec key ``pci_passthrough:alias`` + pointing to the previously created |PCI| alias, as peer :ref:`Configure + a Flavor to Use a Generic PCI Device + ` + +#. Launch the virtual machine .. note:: - You will need to source to the same project selected in the Create - Network 'net0' in *step 4*. + You will need to source to the same project selected in the :ref:`Create + Network net0 ` step. - .. code-block:: none + - For Ethernet interfaces with |SRIOV| support: specify the port uuid + created. - ~(keystone_admin)$ openstack server create --flavor --image --nic port-id= + .. code-block:: none + + ~(keystone_admin)$ openstack server create --flavor --image --nic port-id= + + - For Ethernet interfaces without |SRIOV| support: specify the created + flavor to use the |PCI| device. + + .. code-block:: none + + ~(keystone_admin)$ openstack server create --flavor --image For more information, see the Neutron documentation at: `https://docs.openstack.org/neutron/train/admin/config-sriov.html diff --git a/doc/source/node_management/openstack/index-node-mgmt-os-ccb47338adbc.rst b/doc/source/node_management/openstack/index-node-mgmt-os-ccb47338adbc.rst index 58e3732f7..11917f553 100644 --- a/doc/source/node_management/openstack/index-node-mgmt-os-ccb47338adbc.rst +++ b/doc/source/node_management/openstack/index-node-mgmt-os-ccb47338adbc.rst @@ -22,12 +22,12 @@ PCI Device Access for VMs .. toctree:: :maxdepth: 1 - sr-iov-encryption-acceleration - configuring-pci-passthrough-ethernet-interfaces pci-passthrough-ethernet-interface-devices - configuring-a-flavor-to-use-a-generic-pci-device + configuring-pci-passthrough-ethernet-interfaces generic-pci-passthrough - pci-device-access-for-vms pci-sr-iov-ethernet-interface-devices + sr-iov-encryption-acceleration + pci-device-access-for-vms + configuring-a-flavor-to-use-a-generic-pci-device exposing-a-generic-pci-device-for-use-by-vms exposing-a-generic-pci-device-using-the-cli diff --git a/doc/source/node_management/openstack/pci-sr-iov-ethernet-interface-devices.rst b/doc/source/node_management/openstack/pci-sr-iov-ethernet-interface-devices.rst index 8f38b9be3..e4dff9a25 100644 --- a/doc/source/node_management/openstack/pci-sr-iov-ethernet-interface-devices.rst +++ b/doc/source/node_management/openstack/pci-sr-iov-ethernet-interface-devices.rst @@ -2,30 +2,28 @@ .. vic1596720744539 .. _pci-sr-iov-ethernet-interface-devices: -===================================== -PCI SR-IOV Ethernet Interface Devices -===================================== +=============================================== +Configure PCI SR-IOV Ethernet Interface Devices +=============================================== -A |SRIOV| ethernet interface is a physical |PCI| ethernet |NIC| that implements -hardware-based virtualization mechanisms to expose multiple virtual network -interfaces that can be used by one or more virtual machines simultaneously. +An |SRIOV| Ethernet interface is a physical |PCI| Ethernet |NIC| that +implements hardware-based virtualization mechanisms to expose multiple virtual +network interfaces that can be used by one or more virtual machines +simultaneously. -The |PCI|-SIG Single Root I/O Virtualization and Sharing \(|SRIOV|\) specification -defines a standardized mechanism to create individual virtual ethernet devices -from a single physical ethernet interface. For each exposed virtual ethernet -device, formally referred to as a Virtual Function \(VF\), the |SRIOV| interface -provides separate management memory space, work queues, interrupts resources, -and |DMA| streams, while utilizing common resources behind the host interface. -Each VF therefore has direct access to the hardware and can be considered to be -an independent ethernet interface. +The |PCI|-SIG Single Root I/O Virtualization and Sharing \(|SRIOV|\) +specification defines a standardized mechanism to create individual virtual +Ethernet devices from a single physical Ethernet interface. For each exposed +virtual Ethernet device, formally referred to as a |VF|, the +|SRIOV| interface provides separate management memory space, work queues, +interrupts resources, and |DMA| streams, while utilizing common resources +behind the host interface. Each |VF| therefore has direct access to the hardware +and can be considered to be an independent Ethernet interface. -When compared with a |PCI| Passthrough ethernet interface, a |SRIOV| ethernet +When compared with a |PCI| Passthrough Ethernet interface, a |SRIOV| Ethernet interface: - -.. _pci-sr-iov-ethernet-interface-devices-ul-tyq-ymg-rr: - -- Provides benefits similar to those of a |PCI| Passthrough ethernet interface, +- Provides benefits similar to those of a |PCI| Passthrough Ethernet interface, including lower latency packet processing. - Scales up more easily in a virtualized environment by providing multiple @@ -40,22 +38,139 @@ interface: - Provides a similar configuration workflow when used on |prod-os|. -The configuration of a |PCI| |SRIOV| ethernet interface is identical to -:ref:`Configure PCI Passthrough ethernet Interfaces -` except that +The configuration of a |PCI| |SRIOV| Ethernet interface is almost identical to +:ref:`Configure PCI Passthrough Ethernet Interfaces +` and will be detailed bellow. + +.. rubric:: |context| -.. _pci-sr-iov-ethernet-interface-devices-ul-ikt-nvz-qmb: +Configure a |PCI| |SRIOV| on a host and request it for an +instance at boot/create time. -- you use **pci-sriov** instead of **pci-passthrough** when defining the - network type of an interface +.. rubric:: |prereq| -- the segmentation ID of the project network\(s\) used is more significant - here since this identifies the particular |VF| of the |SRIOV| interface +- To use |PCI| passthrough or |SRIOV| devices, you must have Intel VT-x and + Intel VT-d features enabled in the BIOS. -- when creating the neutron port, you must use ``--vnic-typedirect`` +- The exercise assumes that the underlying data network **group0-data0** + exists already, and that |VLAN| ID 10 is a valid segmentation ID assigned + to **project1**. -- when creating a neutron port backed by an |SRIOV| |VF|, you must use - ``--vnic-type direct`` +.. rubric:: |proc| + +#. Log in as the **admin** user to the |prod-p| |prod-hor-long|. + +#. Lock the compute node you want to configure. + +#. Configure the Ethernet interface to be used as a |PCI| passthrough + interface. You can do this using Horizon or the CLI. + + - Using Horison: + + #. Select **Admin** \> **Platform** \> **Host Inventory** from the + left-hand pane. + + #. Select the **Hosts** tab. + + #. Click the name of the compute host. + + #. Select the **Interfaces** tab. + + #. Click the **Edit Interface** button associated with the interface + you want to configure. + + The Edit Interface dialog appears. + + .. image:: /node_management/figures/ptj1538163621290.png + + #. Select **pci-sriov**, from the **Interface Class** drop-down, and + then select the data network to attach the interface. + + #. (Optional) You may also need to change the |MTU|. + + - Using the CLI: + + Assign the ``pci-sriov`` class to the interface. + + .. code-block:: none + + ~(keystone_admin)$ system host-if-modify -c pci-sriov compute-0 enp0s3 + ~(keystone_admin)$ system interface-datanetwork-assign compute-0 + +#. Create the ``net0`` project network. + + Log in as the **admin** user to the |os-prod-hor-long|. + + Select **Admin** \> **Network** \> **Networks**, select the **Networks** + tab, and then click **Create Network**. Fill in the **Create Network** + dialog box as illustrated below. You must ensure that: + + - **project1** has access to the project network, either assigning it as + the owner, as in the illustration \(using **Project**\), or by enabling + the shared flag. + + - The segmentation ID is set to 10. + .. image:: /node_management/figures/bek1516655307871.png + + The segmentation ID of the project network\(s\) used is more significant + here since this identifies the particular |VF| of the |SRIOV| interface. + + Click the **Next** button to proceed to the **Subnet** tab. + + Click the **Next** button to proceed to the **Subnet Details** tab. + +#. Configure the access switch. Refer to your |OEM| documentation for more + details. + + Log in as the **admin** user to the |prod-p| |prod-hor-long|. + + Configure the physical port on the access switch used to connect to + Ethernet interface ``enp0s3`` as an access port with default |VLAN| ID of 10. + Traffic across the connection is therefore untagged, and effectively + integrated into the targeted project network. + + You can also use a trunk port on the access switch so that it handles + tagged packets as well. However, this opens the possibility for guest + applications to join other project networks using tagged packets with + different |VLAN| IDs, which might compromise the security of the system. + See |os-intro-doc|: :ref:`L2 Access Switches + ` for other details regarding the + configuration of the access switch. + +#. Unlock the compute node. + +#. Create a neutron port with a |VNIC| of type ``direct-physical``. + + Set up the environment and determine the correct network |UUID| to use with + the port. + + .. code-block:: none + + ~(keystone_admin)$ source /etc/platform/openrc + ~(keystone_admin)$ OS_AUTH_URL=http://keystone.openstack.svc.cluster.local/v3 + ~(keystone_admin)$ openstack network list | grep net0 + ~(keystone_admin)$ openstack port create --network --vnic-type direct + + You have now created a port to be used when launching the server in the + next step. + +#. Launch the virtual machine specifying the |UUID| of the port previously + created. + + .. note:: + + You will need to source to the same project selected in the + :ref:`Create Network net0 ` step. + + Specify the port uuid created. + + .. code-block:: none + + ~(keystone_admin)$ openstack server create --flavor --image --nic port-id= + + For more information, see the Neutron documentation at: + `https://docs.openstack.org/neutron/train/admin/config-sriov.html + `__. diff --git a/doc/source/shared/abbrevs.txt b/doc/source/shared/abbrevs.txt index aa6606aff..022d42732 100755 --- a/doc/source/shared/abbrevs.txt +++ b/doc/source/shared/abbrevs.txt @@ -89,6 +89,7 @@ .. |NVMe| replace:: :abbr:`NVMe (Non-Volatile Memory express)` .. |OAM| replace:: :abbr:`OAM (Operations, administration and management)` .. |OC| replace:: :abbr:`OC (Ordinary Clock)` +.. |OEM| replace:: :abbr:`OEM (Original Equipment Manufacturer)` .. |OIDC| replace:: :abbr:`OIDC (OpenID Connect)` .. |ONAP| replace:: :abbr:`ONAP (Open Network Automation Program)` .. |OVS| replace:: :abbr:`OVS (Open Virtual Switch)`