1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 21:46:22 +01:00

Merge pull request #89963 from openshift-cherrypick-robot/cherry-pick-86437-to-enterprise-4.19

[enterprise-4.19] OSDOCS-8677-SRIOV-1: First ContentX PR for reorg of SR-IOV
This commit is contained in:
Darragh Fitzmaurice
2025-03-10 15:08:50 +00:00
committed by GitHub
21 changed files with 367 additions and 353 deletions

View File

@@ -1573,8 +1573,6 @@ Topics:
File: configuring-sriov-ib-attach
- Name: Configuring an RDMA subsystem for SR-IOV
File: configuring-sriov-rdma-cni
- Name: Adding a pod to an SR-IOV network
File: add-pod
- Name: Configuring interface-level network sysctl settings and all-multicast mode for SR-IOV networks
File: configuring-interface-sysctl-sriov-device
- Name: Configuring QinQ support for SR-IOV networks

View File

@@ -44,6 +44,5 @@ After you perform preinstallation tasks, install your cluster by following the m
** xref:../../machine_management/creating_machinesets/creating-machineset-osp.adoc#machineset-yaml-osp-sr-iov_creating-machineset-osp[Create SR-IOV compute machines].
* Consult the following references after you deploy your cluster to improve its performance:
** xref:../../networking/hardware_networks/using-dpdk-and-rdma.adoc#nw-openstack-ovs-dpdk-testpmd-pod_using-dpdk-and-rdma[A test pod template for clusters that use OVS-DPDK on OpenStack].
** xref:../../networking/hardware_networks/add-pod.adoc#nw-openstack-sr-iov-testpmd-pod_add-pod[A test pod template for clusters that use SR-IOV on OpenStack].
** xref:../../networking/hardware_networks/configuring-sriov-device.adoc#nw-openstack-sr-iov-testpmd-pod_configuring-sriov-device[A test pod template for clusters that use SR-IOV on OpenStack].
** xref:../../scalability_and_performance/cnf-tuning-low-latency-nodes-with-perf-profile.adoc#installation-openstack-ovs-dpdk-performance-profile_cnf-low-latency-perf-profile[A performance profile template for clusters that use OVS-DPDK on OpenStack]
.

View File

@@ -2,7 +2,7 @@
//
//networking/hardware_networks/configuring-sriov-device.adoc
:_mod-docs-content-type: PROCEDURE
:_mod-docs-content-type: CONCEPT
[id="cnf-assigning-a-sriov-network-to-a-vrf_{context}"]
= Assigning an SR-IOV network to a VRF
@@ -16,118 +16,3 @@ Applications that use VRFs need to bind to a specific device. The common usage i
Using a VRF through the `ip vrf exec` command is not supported in {product-title} pods. To use VRF, bind applications directly to the VRF interface.
====
[id="cnf-creating-an-additional-sriov-network-with-vrf-plug-in_{context}"]
== Creating an additional SR-IOV network attachment with the CNI VRF plugin
The SR-IOV Network Operator manages additional network definitions. When you specify an additional SR-IOV network to create, the SR-IOV Network Operator creates the `NetworkAttachmentDefinition` custom resource (CR) automatically.
[NOTE]
====
Do not edit `NetworkAttachmentDefinition` custom resources that the SR-IOV Network Operator manages. Doing so might disrupt network traffic on your additional network.
====
To create an additional SR-IOV network attachment with the CNI VRF plugin, perform the following procedure.
.Prerequisites
* Install the {product-title} CLI (oc).
* Log in to the {product-title} cluster as a user with cluster-admin privileges.
.Procedure
. Create the `SriovNetwork` custom resource (CR) for the additional SR-IOV network attachment and insert the `metaPlugins` configuration, as in the following example CR. Save the YAML as the file `sriov-network-attachment.yaml`.
+
[source,yaml]
----
apiVersion: sriovnetwork.openshift.io/v1
kind: SriovNetwork
metadata:
name: example-network
namespace: additional-sriov-network-1
spec:
ipam: |
{
"type": "host-local",
"subnet": "10.56.217.0/24",
"rangeStart": "10.56.217.171",
"rangeEnd": "10.56.217.181",
"routes": [{
"dst": "0.0.0.0/0"
}],
"gateway": "10.56.217.1"
}
vlan: 0
resourceName: intelnics
metaPlugins : |
{
"type": "vrf", <1>
"vrfname": "example-vrf-name" <2>
}
----
<1> `type` must be set to `vrf`.
<2> `vrfname` is the name of the VRF that the interface is assigned to. If it does not exist in the pod, it is created.
. Create the `SriovNetwork` resource:
+
[source,terminal]
----
$ oc create -f sriov-network-attachment.yaml
----
.Verifying that the `NetworkAttachmentDefinition` CR is successfully created
* Confirm that the SR-IOV Network Operator created the `NetworkAttachmentDefinition` CR by running the following command.
+
[source,terminal]
----
$ oc get network-attachment-definitions -n <namespace> <1>
----
<1> Replace `<namespace>` with the namespace that you specified when configuring the network attachment, for example, `additional-sriov-network-1`.
+
.Example output
[source,terminal]
----
NAME AGE
additional-sriov-network-1 14m
----
+
[NOTE]
====
There might be a delay before the SR-IOV Network Operator creates the CR.
====
.Verifying that the additional SR-IOV network attachment is successful
To verify that the VRF CNI is correctly configured and the additional SR-IOV network attachment is attached, do the following:
. Create an SR-IOV network that uses the VRF CNI.
. Assign the network to a pod.
. Verify that the pod network attachment is connected to the SR-IOV additional network. Remote shell into the pod and run the following command:
+
[source,terminal]
----
$ ip vrf show
----
+
.Example output
[source,terminal]
----
Name Table
-----------------------
red 10
----
. Confirm the VRF interface is master of the secondary interface:
+
[source,terminal]
----
$ ip link
----
+
.Example output
[source,terminal]
----
...
5: net1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master red state UP mode
...
----

View File

@@ -0,0 +1,120 @@
// Module included in the following assemblies:
//
//networking/hardware_networks/configuring-sriov-device.adoc
:_mod-docs-content-type: PROCEDURE
[id="cnf-creating-an-additional-sriov-network-with-vrf-plug-in_{context}"]
= Creating an additional SR-IOV network attachment with the CNI VRF plugin
The SR-IOV Network Operator manages additional network definitions. When you specify an additional SR-IOV network to create, the SR-IOV Network Operator creates the `NetworkAttachmentDefinition` custom resource (CR) automatically.
[NOTE]
====
Do not edit `NetworkAttachmentDefinition` custom resources that the SR-IOV Network Operator manages. Doing so might disrupt network traffic on your additional network.
====
To create an additional SR-IOV network attachment with the CNI VRF plugin, perform the following procedure.
.Prerequisites
* Install the {product-title} CLI (oc).
* Log in to the {product-title} cluster as a user with cluster-admin privileges.
.Procedure
. Create the `SriovNetwork` custom resource (CR) for the additional SR-IOV network attachment and insert the `metaPlugins` configuration, as in the following example CR. Save the YAML as the file `sriov-network-attachment.yaml`.
+
.Example `SriovNetwork` custom resource (CR) example
[source,yaml]
----
apiVersion: sriovnetwork.openshift.io/v1
kind: SriovNetwork
metadata:
name: example-network
namespace: additional-sriov-network-1
spec:
ipam: |
{
"type": "host-local",
"subnet": "10.56.217.0/24",
"rangeStart": "10.56.217.171",
"rangeEnd": "10.56.217.181",
"routes": [{
"dst": "0.0.0.0/0"
}],
"gateway": "10.56.217.1"
}
vlan: 0
resourceName: intelnics
metaPlugins : |
{
"type": "vrf", <1>
"vrfname": "example-vrf-name" <2>
}
----
<1> `type` must be set to `vrf`.
<2> `vrfname` is the name of the VRF that the interface is assigned to. If it does not exist in the pod, it is created.
. Create the `SriovNetwork` resource:
+
[source,terminal]
----
$ oc create -f sriov-network-attachment.yaml
----
.Verifying that the `NetworkAttachmentDefinition` CR is successfully created
* Confirm that the SR-IOV Network Operator created the `NetworkAttachmentDefinition` CR by running the following command:
+
[source,terminal]
----
$ oc get network-attachment-definitions -n <namespace> <1>
----
<1> Replace `<namespace>` with the namespace that you specified when configuring the network attachment, for example, `additional-sriov-network-1`.
+
.Example output
[source,terminal]
----
NAME AGE
additional-sriov-network-1 14m
----
+
[NOTE]
====
There might be a delay before the SR-IOV Network Operator creates the CR.
====
.Verifying that the additional SR-IOV network attachment is successful
To verify that the VRF CNI is correctly configured and that the additional SR-IOV network attachment is attached, do the following:
. Create an SR-IOV network that uses the VRF CNI.
. Assign the network to a pod.
. Verify that the pod network attachment is connected to the SR-IOV additional network. Remote shell into the pod and run the following command:
+
[source,terminal]
----
$ ip vrf show
----
+
.Example output
[source,terminal]
----
Name Table
-----------------------
red 10
----
. Confirm that the VRF interface is `master` of the secondary interface by running the following command:
+
[source,terminal]
----
$ ip link
----
+
.Example output
[source,terminal]
----
...
5: net1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master red state UP mode
...
----

View File

@@ -1,7 +1,8 @@
// Module included in the following assemblies:
//
// * networking/multiple_networks/attaching-pod.adoc
// * networking/hardware_networks/add-pod.adoc
// * networking/hardware_networks/configuring-sriov-ib-attach.adoc
// * networking/hardware_networks/configuring-sriov-net-attach.adoc
ifeval::["{context}" == "configuring-sr-iov"]
:sriov:

View File

@@ -9,13 +9,9 @@
// for the Macvlan CNI plugin only. In the future other Multus plugins
// might be managed the same way by the CNO.
ifeval::["{context}" == "configuring-sriov-net-attach"]
:sr-iov:
endif::[]
:_mod-docs-content-type: CONCEPT
[id="nw-multus-ipam-object_{context}"]
= Configuration of IP address assignment for an additional network
= Configuration of IP address assignment for a network attachment
The IP address management (IPAM) Container Network Interface (CNI) plugin provides IP addresses for other CNI plugins.
@@ -26,8 +22,7 @@ You can use the following IP address assignment types:
- Dynamic assignment through the Whereabouts IPAM CNI plugin.
////
IMPORTANT: If you set the `type` parameter to the `DHCP` value, you cannot set
any other parameters.
IMPORTANT: If you set the `type` parameter to the `DHCP` value, you cannot set any other parameters.
////
[id="nw-multus-static_{context}"]
@@ -130,16 +125,12 @@ such as `example-host`, during a DNS lookup query.
[id="nw-multus-dhcp_{context}"]
== Dynamic IP address (DHCP) assignment configuration
The following JSON describes the configuration for dynamic IP address address assignment with DHCP.
.Renewal of DHCP leases
[IMPORTANT]
====
A pod obtains its original DHCP lease when it is created. The lease must be periodically renewed by a minimal DHCP server deployment running on the cluster.
ifdef::sr-iov[]
The SR-IOV Network Operator does not create a DHCP server deployment; The Cluster Network Operator is responsible for creating the minimal DHCP server deployment.
endif::sr-iov[]
[IMPORTANT]
====
For an Ethernet network attachment, the SR-IOV Network Operator does not create a DHCP server deployment; the Cluster Network Operator is responsible for creating the minimal DHCP server deployment.
====
To trigger the deployment of the DHCP server, you must create a shim network attachment by editing the Cluster Network Operator configuration, as in the following example:
@@ -166,7 +157,8 @@ spec:
}
# ...
----
====
The following table describes the configuration parameters for dynamic IP address address assignment with DHCP.
.`ipam` DHCP configuration object
[cols=".^2,.^2,.^6",options="header"]
@@ -179,6 +171,8 @@ spec:
|====
The following JSON example describes the configuration p for dynamic IP address address assignment with DHCP.
.Dynamic IP address (DHCP) assignment configuration example
[source,json]
----
@@ -274,7 +268,3 @@ The following example shows a dynamic IP address assignment that uses overlappin
}
----
<1> Optional. If set, must match the `network_name` of `NetworkAttachmentDefinition 1`.
ifdef::sr-iov[]
:!sr-iov:
endif::[]

View File

@@ -1,6 +1,6 @@
// Module included in the following assemblies:
//
// * networking/hardware_networks/add-pod.adoc
// * networking/hardware_networks/configuring-sriov-device.adoc
:_mod-docs-content-type: REFERENCE
[id="nw-openstack-ovs-sr-iov-testpmd-pod_{context}"]

View File

@@ -0,0 +1,57 @@
// Module included in the following assemblies:
//
// * networking/hardware_networks/configuring-sriov-device.adoc
:_mod-docs-content-type: REFERENCE
[id="nw-sr-iov-network-node-configuration-examples_{context}"]
= SR-IOV network node configuration examples
The following example describes the configuration for an InfiniBand device:
.Example configuration for an InfiniBand device
[source,yaml]
----
apiVersion: sriovnetwork.openshift.io/v1
kind: SriovNetworkNodePolicy
metadata:
name: <name>
namespace: openshift-sriov-network-operator
spec:
resourceName: <sriov_resource_name>
nodeSelector:
feature.node.kubernetes.io/network-sriov.capable: "true"
numVfs: <num>
nicSelector:
vendor: "<vendor_code>"
deviceID: "<device_id>"
rootDevices:
- "<pci_bus_id>"
linkType: <link_type>
isRdma: true
# ...
----
The following example describes the configuration for an SR-IOV network device in a {rh-openstack} virtual machine:
.Example configuration for an SR-IOV device in a virtual machine
[source,yaml]
----
apiVersion: sriovnetwork.openshift.io/v1
kind: SriovNetworkNodePolicy
metadata:
name: <name>
namespace: openshift-sriov-network-operator
spec:
resourceName: <sriov_resource_name>
nodeSelector:
feature.node.kubernetes.io/network-sriov.capable: "true"
numVfs: 1 <1>
nicSelector:
vendor: "<vendor_code>"
deviceID: "<device_id>"
netFilter: "openstack/NetworkID:ea24bd04-8674-4f69-b0ee-fa0b3bd20509" <2>
# ...
----
<1> When configuring the node network policy for a virtual machine, the `numVfs` parameter is always set to `1`.
<2> When the virtual machine is deployed on {rh-openstack}, the `netFilter` parameter must refer to a network ID. Valid values for `netFilter` are available from an `SriovNetworkNodeState` object.

View File

@@ -130,45 +130,6 @@ network-resources-injector-dwqpx 1/1 Running 0 10m
network-resources-injector-lktz5 1/1 Running 0 10m
----
[id="about-sr-iov-operator-admission-control-webhook_{context}"]
== About the SR-IOV Network Operator admission controller webhook
The SR-IOV Network Operator Admission Controller webhook is a Kubernetes Dynamic
Admission Controller application. It provides the following capabilities:
* Validation of the `SriovNetworkNodePolicy` CR when it is created or updated.
* Mutation of the `SriovNetworkNodePolicy` CR by setting the default value for the `priority` and `deviceType` fields when the CR is created or updated.
By default the SR-IOV Network Operator Admission Controller webhook is enabled by the Operator and runs as a daemon set on all control plane nodes.
[NOTE]
====
Use caution when disabling the SR-IOV Network Operator Admission Controller webhook. You can disable the webhook under specific circumstances, such as troubleshooting, or if you want to use unsupported devices. For information about configuring unsupported devices, see link:https://access.redhat.com/articles/7010183[Configuring the SR-IOV Network Operator to use an unsupported NIC].
====
The following is an example of the Operator Admission Controller webhook pods running in a cluster with three control plane nodes:
[source,terminal]
----
$ oc get pods -n openshift-sriov-network-operator
----
.Example output
[source,terminal]
----
NAME READY STATUS RESTARTS AGE
operator-webhook-9jkw6 1/1 Running 0 16m
operator-webhook-kbr5p 1/1 Running 0 16m
operator-webhook-rpfrl 1/1 Running 0 16m
----
[id="about-custom-node-selectors_{context}"]
== About custom node selectors
The SR-IOV Network Config daemon discovers and configures the SR-IOV network devices on cluster nodes.
By default, it is deployed to all the `worker` nodes in the cluster.
You can use node labels to specify on which nodes the SR-IOV Network Config daemon runs.
[id="disable-enable-network-resource-injector_{context}"]
== Disabling or enabling the Network Resources Injector
@@ -207,6 +168,38 @@ spec:
----
====
[id="about-sr-iov-operator-admission-control-webhook_{context}"]
== About the SR-IOV Network Operator admission controller webhook
The SR-IOV Network Operator Admission Controller webhook is a Kubernetes Dynamic
Admission Controller application. It provides the following capabilities:
* Validation of the `SriovNetworkNodePolicy` CR when it is created or updated.
* Mutation of the `SriovNetworkNodePolicy` CR by setting the default value for the `priority` and `deviceType` fields when the CR is created or updated.
By default the SR-IOV Network Operator Admission Controller webhook is enabled by the Operator and runs as a daemon set on all control plane nodes.
[NOTE]
====
Use caution when disabling the SR-IOV Network Operator Admission Controller webhook. You can disable the webhook under specific circumstances, such as troubleshooting, or if you want to use unsupported devices. For information about configuring unsupported devices, see link:https://access.redhat.com/articles/7010183[Configuring the SR-IOV Network Operator to use an unsupported NIC].
====
The following is an example of the Operator Admission Controller webhook pods running in a cluster with three control plane nodes:
[source,terminal]
----
$ oc get pods -n openshift-sriov-network-operator
----
.Example output
[source,terminal]
----
NAME READY STATUS RESTARTS AGE
operator-webhook-9jkw6 1/1 Running 0 16m
operator-webhook-kbr5p 1/1 Running 0 16m
operator-webhook-rpfrl 1/1 Running 0 16m
----
[id="disable-enable-sr-iov-operator-admission-control-webhook_{context}"]
== Disabling or enabling the SR-IOV Network Operator admission controller webhook
@@ -245,6 +238,13 @@ spec:
----
====
[id="about-custom-node-selectors_{context}"]
== About custom node selectors
The SR-IOV Network Config daemon discovers and configures the SR-IOV network devices on cluster nodes.
By default, it is deployed to all the `worker` nodes in the cluster.
You can use node labels to specify on which nodes the SR-IOV Network Config daemon runs.
[id="configuring-custom-nodeselector_{context}"]
== Configuring a custom NodeSelector for the SR-IOV Network Config daemon

View File

@@ -1,6 +1,7 @@
// Module included in the following assemblies:
//
// * networking/hardware_networks/add-pod.adoc
// * networking/hardware_networks/configuring-sriov-ib-attach.adoc
// * networking/hardware_networks/configuring-sriov-net-attach.adoc
:_mod-docs-content-type: PROCEDURE
[id="nw-sriov-expose-mtu_{context}"]

View File

@@ -120,55 +120,3 @@ Do not set linkType to `eth` for SriovNetworkNodePolicy, because this can lead t
<19> Optional: To enable hardware offloading, you must set the `eSwitchMode` field to `"switchdev"`. For more information about hardware offloading, see "Configuring hardware offloading".
<20> Optional: To exclude advertising an SR-IOV network resource's NUMA node to the Topology Manager, set the value to `true`. The default value is `false`.
[id="sr-iov-network-node-configuration-examples_{context}"]
== SR-IOV network node configuration examples
The following example describes the configuration for an InfiniBand device:
.Example configuration for an InfiniBand device
[source,yaml]
----
apiVersion: sriovnetwork.openshift.io/v1
kind: SriovNetworkNodePolicy
metadata:
name: policy-ib-net-1
namespace: openshift-sriov-network-operator
spec:
resourceName: ibnic1
nodeSelector:
feature.node.kubernetes.io/network-sriov.capable: "true"
numVfs: 4
nicSelector:
vendor: "15b3"
deviceID: "101b"
rootDevices:
- "0000:19:00.0"
linkType: ib
isRdma: true
----
The following example describes the configuration for an SR-IOV network device in a {rh-openstack} virtual machine:
.Example configuration for an SR-IOV device in a virtual machine
[source,yaml]
----
apiVersion: sriovnetwork.openshift.io/v1
kind: SriovNetworkNodePolicy
metadata:
name: policy-sriov-net-openstack-1
namespace: openshift-sriov-network-operator
spec:
resourceName: sriovnic1
nodeSelector:
feature.node.kubernetes.io/network-sriov.capable: "true"
numVfs: 1 <1>
nicSelector:
vendor: "15b3"
deviceID: "101b"
netFilter: "openstack/NetworkID:ea24bd04-8674-4f69-b0ee-fa0b3bd20509" <2>
----
<1> The `numVfs` field is always set to `1` when configuring the node network policy for a virtual machine.
<2> The `netFilter` field must refer to a network ID when the virtual machine is deployed on {rh-openstack}. Valid values for `netFilter` are available from an `SriovNetworkNodeState` object.

View File

@@ -1,17 +1,15 @@
// Module included in the following assemblies:
//
// * networking/hardware_networks/add-pod.adoc
// * networking/hardware_networks/configuring-sriov-net-attach.adoc
[id="nw-sriov-runtime-config_{context}"]
= Runtime configuration for a network attachment
:_mod-docs-content-type: REFERENCE
[id="nw-sriov-runtime-config-ethernet_{context}"]
= Runtime configuration for an Ethernet-based SR-IOV attachment
When attaching a pod to an additional network, you can specify a runtime configuration to make specific customizations for the pod. For example, you can request a specific MAC hardware address.
You specify the runtime configuration by setting an annotation in the pod specification. The annotation key is `k8s.v1.cni.cncf.io/networks`, and it accepts a JSON object that describes the runtime configuration.
[id="runtime-config-ethernet_{context}"]
== Runtime configuration for an Ethernet-based SR-IOV attachment
The following JSON describes the runtime configuration options for an Ethernet-based SR-IOV network attachment.
[source,json]
@@ -51,46 +49,3 @@ spec:
imagePullPolicy: IfNotPresent
command: ["sleep", "infinity"]
----
[id="runtime-config-infiniband_{context}"]
== Runtime configuration for an InfiniBand-based SR-IOV attachment
The following JSON describes the runtime configuration options for an InfiniBand-based SR-IOV network attachment.
[source,json]
----
[
{
"name": "<network_attachment>", <1>
"infiniband-guid": "<guid>", <2>
"ips": ["<cidr_range>"] <3>
}
]
----
<1> The name of the SR-IOV network attachment definition CR.
<2> The InfiniBand GUID for the SR-IOV device. To use this feature, you also must specify `{ "infinibandGUID": true }` in the `SriovIBNetwork` object.
<3> The IP addresses for the SR-IOV device that is allocated from the resource type defined in the SR-IOV network attachment definition CR. Both IPv4 and IPv6 addresses are supported. To use this feature, you also must specify `{ "ips": true }` in the `SriovIBNetwork` object.
.Example runtime configuration
[source,yaml]
----
apiVersion: v1
kind: Pod
metadata:
name: sample-pod
annotations:
k8s.v1.cni.cncf.io/networks: |-
[
{
"name": "ib1",
"infiniband-guid": "c2:11:22:33:44:55:66:77",
"ips": ["192.168.10.1/24", "2001::1/64"]
}
]
spec:
containers:
- name: sample-container
image: <image>
imagePullPolicy: IfNotPresent
command: ["sleep", "infinity"]
----

View File

@@ -0,0 +1,51 @@
// Module included in the following assemblies:
//
// * networking/hardware_networks/configuring-sriov-ib-attach.adoc
:_mod-docs-content-type: REFERENCE
[id="nw-sriov-runtime-config-sriov-ib_{context}"]
= Runtime configuration for an InfiniBand-based SR-IOV attachment
When attaching a pod to an additional network, you can specify a runtime configuration to make specific customizations for the pod. For example, you can request a specific MAC hardware address.
You specify the runtime configuration by setting an annotation in the pod specification. The annotation key is `k8s.v1.cni.cncf.io/networks`, and it accepts a JSON object that describes the runtime configuration.
The following JSON describes the runtime configuration options for an InfiniBand-based SR-IOV network attachment.
[source,json]
----
[
{
"name": "<network_attachment>", <1>
"infiniband-guid": "<guid>", <2>
"ips": ["<cidr_range>"] <3>
}
]
----
<1> The name of the SR-IOV network attachment definition CR.
<2> The InfiniBand GUID for the SR-IOV device. To use this feature, you also must specify `{ "infinibandGUID": true }` in the `SriovIBNetwork` object.
<3> The IP addresses for the SR-IOV device that is allocated from the resource type defined in the SR-IOV network attachment definition CR. Both IPv4 and IPv6 addresses are supported. To use this feature, you also must specify `{ "ips": true }` in the `SriovIBNetwork` object.
.Example runtime configuration
[source,yaml]
----
apiVersion: v1
kind: Pod
metadata:
name: sample-pod
annotations:
k8s.v1.cni.cncf.io/networks: |-
[
{
"name": "ib1",
"infiniband-guid": "c2:11:22:33:44:55:66:77",
"ips": ["192.168.10.1/24", "2001::1/64"]
}
]
spec:
containers:
- name: sample-container
image: <image>
imagePullPolicy: IfNotPresent
command: ["sleep", "infinity"]
----

View File

@@ -1,6 +1,6 @@
// Module included in the following assemblies:
//
// * networking/hardware_networks/add-pod.adoc
// * networking/hardware_networks/configuring-sriov-device.adoc
:_mod-docs-content-type: PROCEDURE
[id="nw-sriov-topology-manager_{context}"]

View File

@@ -79,12 +79,11 @@ The SR-IOV Network resources injector and SR-IOV Network Operator webhook are en
Use caution when disabling the SR-IOV Network Operator Admission Controller webhook. You can disable the webhook under specific circumstances, such as troubleshooting, or if you want to use unsupported devices.
====
// Supported platforms
include::modules/nw-sriov-supported-platforms.adoc[leveloffset=+2]
// Supported devices
include::modules/nw-sriov-supported-devices.adoc[leveloffset=+2]
include::modules/nw-sriov-device-discovery.adoc[leveloffset=+2]
include::modules/nw-sriov-example-vf-function-in-pod.adoc[leveloffset=+2]
include::modules/nw-sriov-app-netutil.adoc[leveloffset=+2]
include::modules/nw-sriov-huge-pages.adoc[leveloffset=+2]
[role="_additional-resources"]
[id="configure-multi-networks-additional-resources"]
@@ -95,8 +94,10 @@ include::modules/nw-sriov-huge-pages.adoc[leveloffset=+2]
[id="about-sriov-next-steps"]
== Next steps
* Optional: xref:../../networking/networking_operators/sr-iov-operator/configuring-sriov-operator.adoc#configuring-sriov-operator[Configuring the SR-IOV Network Operator]
* xref:../../networking/networking_operators/sr-iov-operator/configuring-sriov-operator.adoc#configuring-sriov-operator[Configuring the SR-IOV Network Operator]
* xref:../../networking/hardware_networks/configuring-sriov-device.adoc#configuring-sriov-device[Configuring an SR-IOV network device]
* If you use {VirtProductName}: xref:../../virt/vm_networking/virt-connecting-vm-to-sriov.adoc#virt-connecting-vm-to-sriov[Connecting a virtual machine to an SR-IOV network]
* xref:../../networking/hardware_networks/configuring-sriov-net-attach.adoc#configuring-sriov-net-attach[Configuring an SR-IOV network attachment]
* xref:../../networking/hardware_networks/add-pod.adoc#add-pod[Adding a pod to an SR-IOV additional network]
* xref:../../networking/hardware_networks/configuring-sriov-net-attach.adoc#configuring-sriov-net-attach[Ethernet network attachement: Adding a pod to an SR-IOV additional network]
* xref:../../networking/hardware_networks/configuring-sriov-ib-attach.adoc#configuring-sriov-ib-attach[InfiniBand network attachement: Adding a pod to an SR-IOV additional network]

View File

@@ -1,30 +0,0 @@
:_mod-docs-content-type: ASSEMBLY
[id="add-pod"]
= Adding a pod to an SR-IOV additional network
include::_attributes/common-attributes.adoc[]
:context: configuring-sr-iov
toc::[]
You can add a pod to an existing Single Root I/O Virtualization (SR-IOV) network.
Before you perform any tasks in the following documentation, ensure that you xref:../../networking/networking_operators/sr-iov-operator/installing-sriov-operator.adoc#installing-sriov-operator[installed the SR-IOV Network Operator].
include::modules/nw-sriov-runtime-config.adoc[leveloffset=+1]
include::modules/nw-multus-add-pod.adoc[leveloffset=+1]
include::modules/nw-sriov-expose-mtu.adoc[leveloffset=+2]
include::modules/nw-sriov-topology-manager.adoc[leveloffset=+1]
include::modules/nw-openstack-sr-iov-testpmd-pod.adoc[leveloffset=+1]
[role="_additional-resources"]
[id="add-pod-additional-resources"]
== Additional resources
* xref:../../networking/hardware_networks/configuring-sriov-device.adoc#configuring-sriov-device[Configuring an SR-IOV Ethernet network attachment]
* xref:../../networking/hardware_networks/configuring-sriov-ib-attach.adoc#configuring-sriov-ib-attach[Configuring an SR-IOV InfiniBand network attachment]
* xref:../../scalability_and_performance/using-cpu-manager.adoc#using-cpu-manager[Using CPU Manager]
* xref:../../networking/hardware_networks/configuring-sriov-device.adoc#nw-sriov-exclude-topology-manager_configuring-sriov-device[Exclude SR-IOV network topology for NUMA-aware scheduling]

View File

@@ -13,6 +13,12 @@ Before you perform any tasks in the following documentation, ensure that you xre
// SR-IOV network node configuration object
include::modules/nw-sriov-networknodepolicy-object.adoc[leveloffset=+1]
// SR-IOV network node configuration examples
include::modules/nw-sr-iov-network-node-configuration-examples.adoc[leveloffset=+2]
// Automated discovery of SR-IOV network devices
include::modules/nw-sriov-device-discovery.adoc[leveloffset=+2]
// A direct companion to nw-sriov-networknodepolicy-object
// Virtual function (VF) partitioning for SR-IOV devices
@@ -20,6 +26,15 @@ include::modules/nw-sriov-nic-mlx-secure-boot.adoc[leveloffset=+2]
include::modules/nw-sriov-nic-partitioning.adoc[leveloffset=+2]
// A test pod template for clusters that use SR-IOV on OpenStack
include::modules/nw-openstack-sr-iov-testpmd-pod.adoc[leveloffset=+2]
// A test pod template for clusters that use OVS hardware offloading on OpenStack
include::modules/nw-openstack-hw-offload-testpmd-pod.adoc[leveloffset=+2]
// Huge pages resource injection for Downward API
include::modules/nw-sriov-huge-pages.adoc[leveloffset=+2]
// Configuring SR-IOV network devices
include::modules/nw-sriov-configuring-device.adoc[leveloffset=+1]
@@ -28,20 +43,14 @@ include::modules/nw-sriov-configuring-device.adoc[leveloffset=+1]
* xref:../../nodes/nodes/nodes-nodes-working.adoc#nodes-nodes-working-updating_nodes-nodes-working[Understanding how to update labels on nodes].
// Configuring parallel node draining during SR-IOV network policy updates
include::modules/nw-sriov-configuring-multiple-nodes.adoc[leveloffset=+2]
// Troubleshooting SR-IOV configuration
include::modules/nw-sriov-troubleshooting.adoc[leveloffset=+1]
// Assigning an SR-IOV network to a VRF
include::modules/cnf-assigning-a-sriov-network-to-a-vrf.adoc[leveloffset=+1]
// Creating a non-uniform memory access (NUMA) aligned SR-IOV pod
include::modules/nw-sriov-topology-manager.adoc[leveloffset=+1]
// Exclude the SR-IOV network topology for NUMA-aware scheduling
include::modules/nw-sriov-exclude-topology-manager.adoc[leveloffset=+1]
// Excluding the SR-IOV network topology for NUMA-aware scheduling
include::modules/nw-sriov-configure-exclude-topology-manager.adoc[leveloffset=+2]
// Troubleshooting SR-IOV configuration
include::modules/nw-sriov-troubleshooting.adoc[leveloffset=+1]
[role="_additional-resources"]
.Additional resources

View File

@@ -13,26 +13,29 @@ Before you perform any tasks in the following documentation, ensure that you xre
// InfiniBand device configuration object
include::modules/nw-sriov-ibnetwork-object.adoc[leveloffset=+1]
// Configuration of IP address assignment for an additional network
include::modules/nw-multus-ipam-object.adoc[leveloffset=+2]
// Creating a configuration for assignment of dual-stack IP addresses dynamically
include::modules/nw-multus-configure-dualstack-ip-address.adoc[leveloffset=+2]
[role="_additional-resources"]
.Additional resources
* xref:../../networking/multiple_networks/secondary_networks/attaching-pod.adoc#attaching-pod[Attaching a pod to an additional network]
// Configuration of IP address assignment for a network attachment
include::modules/nw-multus-ipam-object.adoc[leveloffset=+2]
// Configuring SR-IOV additional network
include::modules/nw-sriov-network-attachment.adoc[leveloffset=+1]
[id="configuring-sriov-ib-attach-next-steps"]
== Next steps
// Runtime configuration for an InfiniBand-based SR-IOV attachment
include::modules/nw-sriov-runtime-config-sriov-ib.adoc[leveloffset=+1]
* xref:../../networking/hardware_networks/add-pod.adoc#add-pod[Adding a pod to an SR-IOV additional network]
// Adding a pod to an additional network
include::modules/nw-multus-add-pod.adoc[leveloffset=+1]
// Exposing MTU for vfio-pci SR-IOV devices to pod
include::modules/nw-sriov-expose-mtu.adoc[leveloffset=+2]
[role="_additional-resources"]
[id="configuring-sriov-ib-attach-additional-resources"]
== Additional resources
* xref:../../networking/hardware_networks/configuring-sriov-device.adoc#configuring-sriov-device[Configuring an SR-IOV network device]
* xref:../../networking/hardware_networks/configuring-sriov-device.adoc#configuring-sriov-device[Configuring an SR-IOV network device]
* xref:../../scalability_and_performance/using-cpu-manager.adoc#using-cpu-manager[Using CPU Manager]
* xref:../../networking/hardware_networks/configuring-sriov-device.adoc#nw-sriov-exclude-topology-manager_configuring-sriov-device[Exclude SR-IOV network topology for NUMA-aware scheduling]

View File

@@ -10,24 +10,43 @@ You can configure an Ethernet network attachment for an Single Root I/O Virtuali
Before you perform any tasks in the following documentation, ensure that you xref:../../networking/networking_operators/sr-iov-operator/installing-sriov-operator.adoc#installing-sriov-operator[installed the SR-IOV Network Operator].
// Ethernet device configuration object
include::modules/nw-sriov-network-object.adoc[leveloffset=+1]
include::modules/nw-multus-ipam-object.adoc[leveloffset=+2]
// Creating a configuration for assignment of dual-stack IP addresses dynamically
include::modules/nw-multus-configure-dualstack-ip-address.adoc[leveloffset=+2]
[role="_additional-resources"]
.Additional resources
* xref:../../networking/multiple_networks/secondary_networks/attaching-pod.adoc#attaching-pod[Attaching a pod to an additional network]
// Configuration of IP address assignment for a network attachment
include::modules/nw-multus-ipam-object.adoc[leveloffset=+2]
// Configuring SR-IOV additional network
include::modules/nw-sriov-network-attachment.adoc[leveloffset=+1]
[id="configuring-sriov-net-attach-next-steps"]
== Next steps
// Assigning an SR-IOV network to a VRF
include::modules/cnf-assigning-a-sriov-network-to-a-vrf.adoc[leveloffset=+1]
* xref:../../networking/hardware_networks/add-pod.adoc#add-pod[Adding a pod to an SR-IOV additional network]
// Creating an additional SR-IOV network attachment with the CNI VRF plugin
include::modules/cnf-creating-an-additional-sriov-network-with-vrf-plug-in.adoc[leveloffset=+2]
// Runtime configuration for an Ethernet-based SR-IOV attachment
include::modules/nw-sriov-runtime-config-ethernet.adoc[leveloffset=+1]
// Adding a pod to an additional network
include::modules/nw-multus-add-pod.adoc[leveloffset=+1]
// Exposing MTU for vfio-pci SR-IOV devices to pod
include::modules/nw-sriov-expose-mtu.adoc[leveloffset=+2]
// Configuring parallel node draining during SR-IOV network policy updates
include::modules/nw-sriov-configuring-multiple-nodes.adoc[leveloffset=+1]
// Excluding the SR-IOV network topology for NUMA-aware scheduling
include::modules/nw-sriov-configure-exclude-topology-manager.adoc[leveloffset=+1]
[role="_additional-resources"]
[id="configuring-sriov-net-attach-additional-resources"]
== Additional resources
* xref:../../networking/hardware_networks/configuring-sriov-device.adoc#configuring-sriov-device[Configuring an SR-IOV network device]
* xref:../../networking/hardware_networks/configuring-sriov-device.adoc#configuring-sriov-device[Configuring an SR-IOV network device]
* xref:../../scalability_and_performance/using-cpu-manager.adoc#using-cpu-manager[Using CPU Manager]

View File

@@ -10,6 +10,9 @@ The containerized Data Plane Development Kit (DPDK) application is supported on
Before you perform any tasks in the following documentation, ensure that you xref:../../networking/networking_operators/sr-iov-operator/installing-sriov-operator.adoc#installing-sriov-operator[installed the SR-IOV Network Operator].
// Example use of a virtual function in a pod
include::modules/nw-sriov-example-vf-function-in-pod.adoc[leveloffset=+1]
// Using a virtual function in DPDK mode with an Intel NIC
include::modules/nw-sriov-dpdk-example-intel.adoc[leveloffset=+1]
@@ -32,6 +35,9 @@ include::modules/nw-sriov-concept-dpdk-line-rate.adoc[leveloffset=+1]
include::modules/nw-sriov-example-dpdk-line-rate.adoc[leveloffset=+1]
// DPDK library for use with container applications
include::modules/nw-sriov-app-netutil.adoc[leveloffset=+2]
include::modules/nw-sriov-network-operator.adoc[leveloffset=+2]
include::modules/nw-sriov-create-object.adoc[leveloffset=+2]
@@ -49,10 +55,9 @@ include::snippets/technology-preview.adoc[leveloffset=+0]
// Use a tag to skip header and include content only
include::modules/nw-sriov-rdma-example-mellanox.adoc[tag=content]
// A test pod template for clusters that use OVS-DPDK on OpenStack
include::modules/nw-openstack-ovs-dpdk-testpmd-pod.adoc[leveloffset=+1]
include::modules/nw-openstack-hw-offload-testpmd-pod.adoc[leveloffset=+1]
[role="_additional-resources"]
[id="additional-resources_using-dpdk-and-rdma"]
== Additional resources
@@ -73,6 +78,4 @@ include::modules/nw-openstack-hw-offload-testpmd-pod.adoc[leveloffset=+1]
* xref:../../networking/hardware_networks/configuring-sriov-net-attach.adoc#configuring-sriov-net-attach[Configuring an SR-IOV Ethernet network attachment]
* The xref:../../networking/hardware_networks/about-sriov.adoc#nw-sriov-app-netutil_about-sriov[app-netutil library] provides several API methods for gathering network information about a container's parent pod.
:!FeatureName:

View File

@@ -8,12 +8,16 @@ toc::[]
The Single Root I/O Virtualization (SR-IOV) Network Operator manages the SR-IOV network devices and network attachments in your cluster.
// Configuring the SR-IOV Network Operator
include::modules/nw-sriov-configuring-operator.adoc[leveloffset=+1]
// Deploying the SR-IOV Operator for HCP
include::modules/sriov-operator-hosted-control-planes.adoc[leveloffset=+2]
// About the SR-IOV network metrics exporter
include::modules/sriov-network-metrics-exporter.adoc[leveloffset=+1]
// Enabling the SR-IOV network metrics exporter
include::modules/sriov-operator-metrics.adoc[leveloffset=+2]
[role="_additional-resources"]