// Module included in the following assemblies:
//
// * scalability_and_performance/telco_core_ref_design_specs/telco-core-rds.adoc

:_mod-docs-content-type: REFERENCE
[id="telco-core-sr-iov_{context}"]
= SR-IOV

[role="_abstract"]
SR-IOV enables physical functions (PFs) to be divided into multiple virtual functions (VFs) for higher throughput performance while keeping pods isolated.

New in this release::
* There are no reference design updates in this release.

Description::
SR-IOV enables physical functions (PFs) to be divided into multiple virtual functions (VFs).
VFs can then be assigned to multiple pods to achieve higher throughput performance while keeping the pods isolated.
The SR-IOV Network Operator provisions and manages SR-IOV CNI, network device plugin, and other components of the SR-IOV stack.

Limits and requirements::
* Only certain network interfaces are supported. See "Supported devices" for more information.

* Enabling SR-IOV and IOMMU: the SR-IOV Network Operator automatically enables IOMMU on the kernel command line.

* SR-IOV VFs do not receive link state updates from the PF.
If a link down detection is required, it must be done at the protocol level.

* `MultiNetworkPolicy` CRs can be applied to `netdevice` networks only.
This is because the implementation uses iptables, which cannot manage vfio interfaces.

Engineering considerations::
* SR-IOV interfaces in `vfio` mode are typically used to enable additional secondary networks for applications that require high throughput or low latency.
* The `SriovOperatorConfig` CR must be explicitly created.
This CR is included in the reference configuration policies, which causes it to be created during initial deployment.
* NICs that do not support firmware updates with UEFI secure boot or kernel lockdown must be preconfigured with sufficient virtual functions (VFs) enabled to support the number of VFs required by the application workload.
For Mellanox NICs, you must disable the Mellanox vendor plugin in the SR-IOV Network Operator. For more information see, "Configuring an SR-IOV network device".
* To change the MTU value of a VF after the pod has started, do not configure the `SriovNetworkNodePolicy` MTU field.
Instead, use the Kubernetes NMState Operator to set the MTU of the related PF.

