This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.Chapter 17. Optimizing data plane performance with the Intel vRAN Dedicated Accelerator ACC100
17.1. Understanding the vRAN Dedicated Accelerator ACC100 Copy linkLink copied to clipboard!
Hardware accelerator cards from Intel accelerate 4G/LTE and 5G Virtualized Radio Access Networks (vRAN) workloads. This in turn increases the overall compute capacity of a commercial, off-the-shelf platform.
The vRAN Dedicated Accelerator ACC100, based on Intel eASIC technology is designed to offload and accelerate the computing-intensive process of forward error correction (FEC) for 4G/LTE and 5G technology, freeing up processing power. Intel eASIC devices are structured ASICs, an intermediate technology between FPGAs and standard application-specific integrated circuits (ASICs).
Intel vRAN Dedicated Accelerator ACC100 support on OpenShift Container Platform uses one Operator:
- OpenNESS Operator for Wireless FEC Accelerators
17.2. Installing the OpenNESS SR-IOV Operator for Wireless FEC Accelerators Copy linkLink copied to clipboard!
The role of the OpenNESS Operator for Intel Wireless forward error correction (FEC) Accelerator is to orchestrate and manage the devices exposed by a range of Intel vRAN FEC acceleration hardware within the OpenShift Container Platform cluster.
One of the most compute-intensive 4G/LTE and 5G workloads is RAN layer 1 (L1) FEC. FEC resolves data transmission errors over unreliable or noisy communication channels. FEC technology detects and corrects a limited number of errors in 4G/LTE or 5G data without the need for retransmission.
The FEC device provided by the Intel vRAN Dedicated Accelerator ACC100 supports the vRAN use case.
The OpenNESS SR-IOV Operator for Wireless FEC Accelerators provides functionality to create virtual functions (VFs) for the FEC device, binds them to appropriate drivers, and configures the VFs queues for functionality in 4G/LTE or 5G deployment.
As a cluster administrator, you can install the OpenNESS SR-IOV Operator for Wireless FEC Accelerators by using the OpenShift Container Platform CLI or the web console.
17.2.1. Installing the OpenNESS SR-IOV Operator for Wireless FEC Accelerators by using the CLI Copy linkLink copied to clipboard!
As a cluster administrator, you can install the OpenNESS SR-IOV Operator for Wireless FEC Accelerators by using the CLI.
Prerequisites
- A cluster installed on bare-metal hardware.
-
Install the OpenShift CLI (
oc
). -
Log in as a user with
cluster-admin
privileges.
Procedure
Create a namespace for the OpenNESS SR-IOV Operator for Wireless FEC Accelerators by completing the following actions:
Define the
vran-acceleration-operators
namespace by creating a file namedsriov-namespace.yaml
as shown in the following example:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create the namespace by running the following command:
oc create -f sriov-namespace.yaml
$ oc create -f sriov-namespace.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Install the OpenNESS SR-IOV Operator for Wireless FEC Accelerators in the namespace you created in the previous step by creating the following objects:
Create the following
OperatorGroup
custom resource (CR) and save the YAML in thesriov-operatorgroup.yaml
file:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create the
OperatorGroup
CR by running the following command:oc create -f sriov-operatorgroup.yaml
$ oc create -f sriov-operatorgroup.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Run the following command to get the
channel
value required for the next step.oc get packagemanifest sriov-fec -n openshift-marketplace -o jsonpath='{.status.defaultChannel}'
$ oc get packagemanifest sriov-fec -n openshift-marketplace -o jsonpath='{.status.defaultChannel}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
stable
stable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create the following Subscription CR and save the YAML in the
sriov-sub.yaml
file:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create the
Subscription
CR by running the following command:oc create -f sriov-sub.yaml
$ oc create -f sriov-sub.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Verification
Verify that the Operator is installed:
oc get csv -n vran-acceleration-operators -o custom-columns=Name:.metadata.name,Phase:.status.phase
$ oc get csv -n vran-acceleration-operators -o custom-columns=Name:.metadata.name,Phase:.status.phase
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Name Phase sriov-fec.v1.1.0 Succeeded
Name Phase sriov-fec.v1.1.0 Succeeded
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.2.2. Installing the OpenNESS SR-IOV Operator for Wireless FEC Accelerators by using the web console Copy linkLink copied to clipboard!
As a cluster administrator, you can install the OpenNESS SR-IOV Operator for Wireless FEC Accelerators by using the web console.
You must create the Namespace
and OperatorGroup
custom resource (CR) as mentioned in the previous section.
Procedure
Install the OpenNESS SR-IOV Operator for Wireless FEC Accelerators by using the OpenShift Container Platform web console:
-
In the OpenShift Container Platform web console, click Operators
OperatorHub. - Choose OpenNESS SR-IOV Operator for Wireless FEC Accelerators from the list of available Operators, and then click Install.
- On the Install Operator page, select All namespaces on the cluster. Then, click Install.
-
In the OpenShift Container Platform web console, click Operators
Optional: Verify that the SRIOV-FEC Operator is installed successfully:
-
Switch to the Operators
Installed Operators page. Ensure that OpenNESS SR-IOV Operator for Wireless FEC Accelerators is listed in the vran-acceleration-operators project with a Status of InstallSucceeded.
NoteDuring installation an Operator might display a Failed status. If the installation later succeeds with an InstallSucceeded message, you can ignore the Failed message.
If the console does not indicate that the Operator is installed, perform the following troubleshooting steps:
-
Go to the Operators
Installed Operators page and inspect the Operator Subscriptions and Install Plans tabs for any failure or errors under Status. -
Go to the Workloads
Pods page and check the logs for pods in the vran-acceleration-operators
project.
-
Go to the Operators
-
Switch to the Operators
17.2.3. Configuring the SR-IOV FEC Operator for the Intel® vRAN Dedicated Accelerator ACC100 Copy linkLink copied to clipboard!
Programming the Intel vRAN Dedicated Accelerator ACC100 exposes the Single Root I/O Virtualization (SRIOV) virtual function (VF) devices that are then used to accelerate the forward error correction (FEC) in the vRAN workload. The Intel vRAN Dedicated Accelerator ACC100 accelerates 4G and 5G Virtualized Radio Access Networks (vRAN) workloads. This in turn increases the overall compute capacity of a commercial, off-the-shelf platform. This device is also known as Mount Bryce.
The SR-IOV-FEC Operator handles the management of the FEC devices that are used to accelerate the FEC process in vRAN L1 applications.
Configuring the SR-IOV-FEC Operator involves:
- Creating the virtual functions (VFs) for the FEC device
- Binding the VFs to the appropriate drivers
- Configuring the VF queues for desired functionality in a 4G or 5G deployment
The role of forward error correction (FEC) is to correct transmission errors, where certain bits in a message can be lost or garbled. Messages can be lost or garbled due to noise in the transmission media, interference, or low signal strength. Without FEC, a garbled message would have to be resent, adding to the network load and impacting throughput and latency.
Prerequisites
- Intel FPGA ACC100 5G/4G card.
- Node or nodes installed with the OpenNESS Operator for Wireless FEC Accelerators.
- Enable global SR-IOV and VT-d settings in the BIOS for the node.
- RT kernel configured with Performance Addon Operator.
-
Log in as a user with
cluster-admin
privileges.
Procedure
Change to the
vran-acceleration-operators
project:oc project vran-acceleration-operators
$ oc project vran-acceleration-operators
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the SR-IOV-FEC Operator is installed:
oc get csv -o custom-columns=Name:.metadata.name,Phase:.status.phase
$ oc get csv -o custom-columns=Name:.metadata.name,Phase:.status.phase
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Name Phase sriov-fec.v1.1.0 Succeeded
Name Phase sriov-fec.v1.1.0 Succeeded
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify that the
sriov-fec
pods are running:oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
NAME READY STATUS RESTARTS AGE sriov-device-plugin-j5jlv 1/1 Running 1 15d sriov-fec-controller-manager-85b6b8f4d4-gd2qg 1/1 Running 1 15d sriov-fec-daemonset-kqqs6 1/1 Running 1 15d
NAME READY STATUS RESTARTS AGE sriov-device-plugin-j5jlv 1/1 Running 1 15d sriov-fec-controller-manager-85b6b8f4d4-gd2qg 1/1 Running 1 15d sriov-fec-daemonset-kqqs6 1/1 Running 1 15d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
sriov-device-plugin
expose the FEC virtual functions as resources under the node -
sriov-fec-controller-manager
applies CR to the node and maintains the operands containers sriov-fec-daemonset
is responsible for:- Discovering the SRIOV NICs on each node.
- Syncing the status of the custom resource (CR) defined in step 6.
- Taking the spec of the CR as input and configuring the discovered NICs.
-
Retrieve all the nodes containing one of the supported vRAN FEC accelerator devices:
oc get sriovfecnodeconfig
$ oc get sriovfecnodeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
NAME CONFIGURED node1 Succeeded
NAME CONFIGURED node1 Succeeded
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Find the physical function (PF) of the SR-IOV FEC accelerator device to configure:
oc get sriovfecnodeconfig node1 -o yaml
$ oc get sriovfecnodeconfig node1 -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Configure the number of virtual functions and queue groups on the FEC device:
Create the following custom resource (CR) and save the YAML in the
sriovfec_acc100cr.yaml
file:NoteThis example configures the ACC100 8/8 queue groups for 5G, 4 queue groups for Uplink, and another 4 queue groups for Downlink.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify a name for the CR object. The only name that can be specified is
config
. - 2
- Specify the node name.
- 3
- Specify the PCI address of the card on which the SR-IOV-FEC Operator will be installed.
- 4
- Specify the number of virtual functions to create. For the Intel vRAN Dedicated Accelerator ACC100, create all 16 VFs.
NoteThe card is configured to provide up to 8 queue groups with up to 16 queues per group. The queue groups can be divided between groups allocated to 5G and 4G and Uplink and Downlink. The Intel vRAN Dedicated Accelerator ACC100 can be configured for:
- 4G or 5G only
- 4G and 5G at the same time
Each configured VF has access to all the queues. Each of the queue groups have a distinct priority level. The request for a given queue group is made from the application level that is, the vRAN application leveraging the FEC device.
Apply the CR:
oc apply -f sriovfec_acc100cr.yaml
$ oc apply -f sriovfec_acc100cr.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow After applying the CR, the SR-IOV FEC daemon starts configuring the FEC device.
Verification
Check the status:
oc get sriovfecclusterconfig config -o yaml
$ oc get sriovfecclusterconfig config -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Check the logs:
Determine the pod name of the SR-IOV daemon:
oc get po -o wide | grep sriov-fec-daemonset | grep node1
$ oc get po -o wide | grep sriov-fec-daemonset | grep node1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
sriov-fec-daemonset-kqqs6 1/1 Running 0 19h
sriov-fec-daemonset-kqqs6 1/1 Running 0 19h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow View the logs:
oc logs sriov-fec-daemonset-kqqs6
$ oc logs sriov-fec-daemonset-kqqs6
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Check the FEC configuration of the card:
oc get sriovfecnodeconfig node1 -o yaml
$ oc get sriovfecnodeconfig node1 -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.2.4. Verifying application pod access and ACC100 usage on OpenNESS Copy linkLink copied to clipboard!
OpenNESS is an edge computing software toolkit that you can use to onboard and manage applications and network functions on any type of network.
To verify all OpenNESS features are working together, including SR-IOV binding, the device plugin, Wireless Base Band Device (bbdev) configuration, and SR-IOV (FEC) VF functionality inside a non-root pod, you can build an image and run a simple validation application for the device.
For more information, go to openess.org.
Prerequisites
- Node or nodes installed with the OpenNESS SR-IOV Operator for Wireless FEC Accelerators.
- Real-Time kernel and huge pages configured with the Performance Addon Operator.
Procedure
Create a namespace for the test by completing the following actions:
Define the
test-bbdev
namespace by creating a file namedtest-bbdev-namespace.yaml
file as shown in the following example:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create the namespace by running the following command:
oc create -f test-bbdev-namespace.yaml
$ oc create -f test-bbdev-namespace.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Create the following
Pod
specification, and then save the YAML in thepod-test.yaml
file:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Specify the
namespace
you created in step 1. - 2
- This defines the test image containing the compiled DPDK.
- 3
- Make the container execute internally as the root user.
- 4
- Specify hugepage size
hugepages-1Gi
and the quantity of hugepages that will be allocated to the pod. Hugepages and isolated CPUs need to be configured using the Performance Addon Operator. - 5
- Specify the number of CPUs.
- 6
- Testing of the ACC100 5G FEC configuration is supported by
intel.com/intel_fec_acc100
.
Create the pod:
oc apply -f pod-test.yaml
$ oc apply -f pod-test.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Check that the pod is created:
oc get pods -n test-bbdev
$ oc get pods -n test-bbdev
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
NAME READY STATUS RESTARTS AGE pod-bbdev-sample-app 1/1 Running 0 80s
NAME READY STATUS RESTARTS AGE pod-bbdev-sample-app 1/1 Running 0 80s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Use a remote shell to log in to the
pod-bbdev-sample-app
:oc rsh pod-bbdev-sample-app
$ oc rsh pod-bbdev-sample-app
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
sh-4.4#
sh-4.4#
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Print the VF allocated to the pod:
printenv | grep INTEL_FEC
sh-4.4# printenv | grep INTEL_FEC
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
PCIDEVICE_INTEL_COM_INTEL_FEC_ACC100=0.0.0.0:1d.00.0
PCIDEVICE_INTEL_COM_INTEL_FEC_ACC100=0.0.0.0:1d.00.0
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- This is the PCI address of the virtual function.
Change to the
test-bbdev
directory.cd test/test-bbdev/
sh-4.4# cd test/test-bbdev/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Check the CPUs that are assigned to the pod:
export CPU=$(cat /sys/fs/cgroup/cpuset/cpuset.cpus) echo ${CPU}
sh-4.4# export CPU=$(cat /sys/fs/cgroup/cpuset/cpuset.cpus) sh-4.4# echo ${CPU}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow This prints out the CPUs that are assigned to the
fec.pod
.Example output
24,25,64,65
24,25,64,65
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Run the
test-bbdev
application to test the device:./test-bbdev.py -e="-l ${CPU} -a ${PCIDEVICE_INTEL_COM_INTEL_FEC_ACC100}" -c validation \ -n 64 -b 32 -l 1 -v ./test_vectors/*"
sh-4.4# ./test-bbdev.py -e="-l ${CPU} -a ${PCIDEVICE_INTEL_COM_INTEL_FEC_ACC100}" -c validation \ -n 64 -b 32 -l 1 -v ./test_vectors/*"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- While some tests can be skipped, be sure that the vector tests pass.