<commit_before>==========================
Using SR-IOV functionality
==========================

The purpose of this page is to describe how to enable SR-IOV
functionality available in OpenStack (using OpenStack Networking) as of
the Juno release. This page serves as a how-to guide on configuring
OpenStack Networking and OpenStack Compute to create neutron SR-IOV ports.

The basics
~~~~~~~~~~

PCI-SIG Single Root I/O Virtualization and Sharing (SR-IOV)
specification defines a standardized mechanism to virtualize PCIe devices.
The mechanism can virtualize a single PCIe Ethernet controller to appear as
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
are able to achieve low latency and near-line wire speed.

SR-IOV with ethernet
~~~~~~~~~~~~~~~~~~~~

The following terms are used over the document:

.. list-table::
   :header-rows: 1
   :widths: 10 90

   * - Term
     - Definition
   * - PF
     - Physical Function. This is the physical Ethernet controller
       that supports SR-IOV.
   * - VF
     - Virtual Function. This is a virtual PCIe device created
       from a physical Ethernet controller.


In order to enable SR-IOV, the following steps are required:

#. Create Virtual Functions (Compute)
#. Whitelist PCI devices in nova-compute (Compute)
#. Configure neutron-server (Controller)
#. Configure nova-scheduler (Controller)
#. Enable neutron sriov-agent (Compute)

**Neutron sriov-agent**

Neutron sriov-agent is required in the lastest version.

Neutron sriov-agent allows you to set the admin state of ports and
starting from Liberty allows you to control
port security (enable and disable spoof checking) and QoS rate limit settings.

.. note::

   Neutron sriov-agent was optional before Mitaka, and was not
   enabled by default before Liberty.

Known limitations
-----------------

* QoS is supported since Liberty, while it has limitations.
  ``max_burst_kbps`` (burst over ``max_kbps``) is not supported.
  ``max_kbps`` is rounded to Mbps.
* Security Group is not supported. the agent is only working with
  ``firewall_driver = neutron.agent.firewall.NoopFirewallDriver``.
* No OpenStack Dashboard integration. Users need to use CLI or API to
  create neutron SR-IOV ports.
* Live migration is not supported for instances with SR-IOV ports.
* ARP spoofing filtering was not supported before Mitaka when using
  neutron sriov-agent.

Environment example
-------------------<commit_msg>[networking] use explicit release name<commit_after>==========================
Using SR-IOV functionality
==========================

The purpose of this page is to describe how to enable SR-IOV
functionality available in OpenStack (using OpenStack Networking) as of
the Juno release. This page serves as a how-to guide on configuring
OpenStack Networking and OpenStack Compute to create neutron SR-IOV ports.

The basics
~~~~~~~~~~

PCI-SIG Single Root I/O Virtualization and Sharing (SR-IOV)
specification defines a standardized mechanism to virtualize PCIe devices.
The mechanism can virtualize a single PCIe Ethernet controller to appear as
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
are able to achieve low latency and near-line wire speed.

SR-IOV with ethernet
~~~~~~~~~~~~~~~~~~~~

The following terms are used over the document:

.. list-table::
   :header-rows: 1
   :widths: 10 90

   * - Term
     - Definition
   * - PF
     - Physical Function. This is the physical Ethernet controller
       that supports SR-IOV.
   * - VF
     - Virtual Function. This is a virtual PCIe device created
       from a physical Ethernet controller.


In order to enable SR-IOV, the following steps are required:

#. Create Virtual Functions (Compute)
#. Whitelist PCI devices in nova-compute (Compute)
#. Configure neutron-server (Controller)
#. Configure nova-scheduler (Controller)
#. Enable neutron sriov-agent (Compute)

**Neutron sriov-agent**

Neutron sriov-agent is required since Mitaka release.

Neutron sriov-agent allows you to set the admin state of ports and
starting from Liberty allows you to control
port security (enable and disable spoof checking) and QoS rate limit settings.

.. note::

   Neutron sriov-agent was optional before Mitaka, and was not
   enabled by default before Liberty.

Known limitations
-----------------

* QoS is supported since Liberty, while it has limitations.
  ``max_burst_kbps`` (burst over ``max_kbps``) is not supported.
  ``max_kbps`` is rounded to Mbps.
* Security Group is not supported. the agent is only working with
  ``firewall_driver = neutron.agent.firewall.NoopFirewallDriver``.
* No OpenStack Dashboard integration. Users need to use CLI or API to
  create neutron SR-IOV ports.
* Live migration is not supported for instances with SR-IOV ports.
* ARP spoofing filtering was not supported before Mitaka when using
  neutron sriov-agent.

Environment example
-------------------
{'fraction_non_alphanumeric': 0.09994074659292909, 'fraction_numerical': 0.0019751135690302193, 'mean_word_length': 3.804554079696395, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4547863', 'n_tokens_mistral': 1409, 'n_tokens_neox': 1319, 'n_words': 645}