|Index|SUSE Telco Cloud Documentación|Configuración de las funciones Telco|Aceleración vRAN (Intel ACC100/VRB1/VRB2)
Applies to SUSE Telco Cloud 3.6

41 Aceleración vRAN (Intel ACC100/VRB1/VRB2)

A medida que los proveedores de servicios de comunicaciones pasan de las redes 4G a las 5G, muchos están adoptando arquitecturas de red de acceso por radio virtualizada (vRAN) para obtener una mayor capacidad de canal y un despliegue más sencillo de servicios y aplicaciones basados en el borde. Las soluciones vRAN están idealmente situadas para ofrecer servicios de baja latencia con la flexibilidad de aumentar o disminuir la capacidad en función del volumen de tráfico en tiempo real y la demanda en la red.

Una de las cargas de trabajo 4G y 5G que requiere más computación es la capa 1 de RAN (L1) FEC, que resuelve los errores de transmisión de datos en canales de comunicación poco fiables o ruidosos. La tecnología FEC detecta y corrige un número limitado de errores en datos 4G o 5G, eliminando la necesidad de retransmisión. Dado que la transacción de aceleración FEC no contiene información sobre el estado de la celda, puede virtualizarse fácilmente, lo que permite obtener ventajas de agrupación y una migración sencilla de celdas.

Históricamente, Intel proporcionaba la tarjeta aceleradora vRAN ACC100 para ejecutar rápidamente algoritmos FEC de Layer 1, liberando potencia de procesamiento del host para la CPU principal. Desde entonces, Intel ha integrado esta tecnología directamente en las CPU más recientes, empezando por Sapphire Rapids, bajo el nombre Intel vRAN Boost (VRB). Intel vRAN Boost actúa como un acelerador de descarga en la propia CPU, eliminando la necesidad de una tarjeta de hardware independiente. Esta sección detalla la configuración de SUSE Telco Cloud para que las cargas de trabajo aprovechen ACC100 o Intel vRAN Boost.

41.1 Parámetros del kernel

Para habilitar la vRAN aceleración, debemos habilitar los siguientes parámetros del kernel (si aún no están presentes):

parametervalordescription

iommu

pt

Esta opción permite el uso de vfio para las interfaces DPDK.

intel_iommu or amd_iommu

on

Esta opción permite el uso de vfio para las VFs.

Modificad el archivo GRUB /etc/default/grub para añadirlos a la línea de comandos del kernel:

GRUB_CMDLINE_LINUX="BOOT_IMAGE=/boot/vmlinuz-6.4.0-9-rt root=UUID=77b713de-5cc7-4d4c-8fc6-f5eca0a43cf9 skew_tick=1 rd.timeout=60 rd.retry=45 console=ttyS1,115200 console=tty0 default_hugepagesz=1G hugepagesz=1G hugepages=40 hugepagesz=2M hugepages=0 ignition.platform.id=openstack net.ifnames=1 intel_iommu=on iommu=pt irqaffinity=0,31,32,63 isolcpus=domain,nohz,managed_irq,1-30,33-62 nohz_full=1-30,33-62 nohz=on mce=off nosoftlockup nowatchdog nmi_watchdog=0 quiet rcu_nocb_poll rcu_nocbs=1-30,33-62 rcupdate.rcu_cpu_stall_suppress=1 rcupdate.rcu_expedited=1 rcupdate.rcu_normal_after_boot=1 rcupdate.rcu_task_stall_timeout=0 rcutree.kthread_prio=99 security=selinux selinux=1 idle=poll"

Actualizad la configuración de GRUB y reiniciad el sistema para aplicar los cambios:

$ transactional-update grub.cfg
$ reboot

Para verificar que los parámetros se han aplicado tras el reinicio, comprobad la línea de comandos:

$ cat /proc/cmdline

41.2 Configuración de SR-IOV en aceleradores FEC

  • Cargad el módulo del núcleo de Linux vfio-pci para habilitar la aceleración vRAN. El primer argumento indica el módulo vfio-pci para admitir SR-IOV, y el segundo argumento evita que el dispositivo PCI entre en un estado de bajo consumo cuando está inactivo.

$ modprobe vfio-pci enable_sriov=1 disable_idle_d3=1
  • Obtened la dirección del dispositivo PCI del acelerador FEC:

$ lspci -DPPnn | grep -i acc
0000:07:00.0 Processing accelerators [1200]: Intel Corporation Device [8086:57c2]
0000:0a:00.0 Processing accelerators [1200]: Intel Corporation Device [8086:57c2]
  • Vinculad la interfaz física (PF) con el controlador vfio-pci:

$ dpdk-devbind.py -b vfio-pci 0000:07:00.0
  • Cread las funciones virtuales (VFs) a partir de la interfaz física (PF).

Comprobad la capacidad máxima VF de la tarjeta aceleradora. A continuación, configurad la tarjeta para exponer el número deseado de VFs, sin exceder el número máximo. En este ejemplo, configuramos la tarjeta para su capacidad total de 16 VFs:

$ cat /sys/bus/pci/devices/0000:07:00.0/sriov_totalvfs
64
$ echo 16 > /sys/bus/pci/devices/0000:07:00.0/sriov_numvfs
  • Configurad la tarjeta aceleradora y sus funciones virtuales con un perfil 4G o 5G, seleccionando el tipo de dispositivo vRAN Boost correcto según la generación exacta del procesador Intel: VRB1 (anteriormente conocido como ACC200) si es Sapphire Rapids Edge Enhanced (SPR-EE), VRB2 para Granite Rapids-D (GNR-D). Se debe proporcionar un VF token único (UUID) (la carga de trabajo consumirá este VF token para utilizar las capacidades de aceleración FEC de la tarjeta).

Warning
Warning

Obsolescencia desde pf-bb-config: la nueva versión de RPM que admite el tipo de dispositivo VRB2 ahora instala los archivos de ejemplo de configuración en la ubicación /usr/share/pf-bb-config/examples; la vía antigua /opt/pf-bb-config/ sigue siendo compatible, pero se eliminará en futuras versiones. Por favor, actualizad vuestros scripts y documentación para reflejar la nueva vía (como se ha hecho en el ejemplo siguiente).

$ pf_bb_config VRB2 -c /usr/share/pf-bb-config/examples/vrb2/vrb2_config_vf_5g.cfg -f /usr/share/pf-bb-config/examples/vrb2/srs_fft_windows_coefficient.bin -v 00112233-4455-6677-8899-aabbccddeeff -p 0000:07:00.0
== pf_bb_config Version 25.11 ==
VRB2 PF [0000:07:00.0] configuration complete!
Log file = /var/log/pf_bb_cfg_0000:07:00.0.log
  • Verificad las nuevas VFs creadas a partir de la PF de FEC. Observad que las VFs obtuvieron el ID de dispositivo 0d5d. Esta información es necesaria en el siguiente paso para exponer las VFs como recurso de Kubernetes:

$ # dpdk-devbind.py -s | grep -A18 Baseband
Baseband devices using DPDK-compatible driver
=============================================
0000:07:00.0 'Device 57c2' numa_node=0 drv=vfio-pci unused=
0000:07:00.1 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:00.2 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:00.3 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:00.4 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:00.5 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:00.6 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:00.7 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:01.0 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:01.1 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:01.2 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:01.3 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:01.4 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:01.5 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:01.6 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:01.7 'Device 57c3' numa_node=0 drv=vfio-pci unused=
0000:07:02.0 'Device 57c3' numa_node=0 drv=vfio-pci unused=
--
Other Baseband devices
======================
0000:0a:00.0 'Device 57c2' numa_node=0 unused=vfio-pci

Other Crypto devices
====================
0000:01:00.0 '420xx Series QAT 4946' numa_node=0 unused=vfio-pci
0000:03:00.0 'Device 2714' numa_node=0 unused=vfio-pci

DMA devices using kernel driver
===============================
0000:00:01.0 'Device 11fb' numa_node=0 drv=idxd unused=vfio-pci

Other Eventdev devices
======================
0000:03:00.0 'Device 2714' numa_node=0 unused=vfio-pci

No 'Mempool' devices detected
=============================

41.3 Configuración de Kubernetes para la aceleración FEC

El paso final consiste en exponer las VFs a Kubernetes con la ayuda del plugin de dispositivo SR-IOV. Cread un ConfigMap utilizando el ID de dispositivo de las VF obtenido en el paso anterior e instalad el plugin de dispositivo SR-IOV. Una vez que los nodos de Kubernetes muestren las VF de FEC como recursos Allocatable, el clúster estará listo para que las cargas de trabajo aprovechen la aceleración FEC.

Seguid los pasos de la Opción 1 en el capítulo Chapter 39, SR-IOV. El operador de red SRIOV no es aplicable al acelerador FEC, por lo que la Opción 2 no es aplicable.