|Index|SUSE Telco Cloud 文档|电信功能配置|vRAN 加速 (Intel ACC100/VRB1/VRB2)
适用范围 SUSE Telco Cloud 3.6

41 vRAN 加速 (Intel ACC100/VRB1/VRB2)

随着通信服务提供商从 4G 网络转向 5G 网络,许多提供商正在采用虚拟化无线接入网 (vRAN) 架构,以实现更高的信道容量,并更轻松地部署基于边缘的服务和应用程序。vRAN 解决方案非常适合提供低延迟服务,并能够根据实时流量和网络需求灵活地增加或减少容量。

最耗费计算资源的 4G 和 5G 工作负载之一是 RAN 第 1 层 (L1) FEC,它解决了不可靠或嘈杂通信信道上的数据传输错误。FEC 技术可检测并纠正 4G 或 5G 数据中有限数量的错误,从而无需重传。由于 FEC 加速事务不包含小区状态信息,因此可以轻松实现虚拟化,从而实现资源池化优势并简化小区迁移。

从历史上看,英特尔提供了 ACC100 vRAN 加速卡来快速执行第 1 层 FEC 算法,从而为主 CPU 释放主机处理能力。此后,英特尔将此技术直接集成到了较新的 CPU 中(从 Sapphire Rapids 开始),并命名为 Intel vRAN Boost (VRB)。Intel vRAN Boost 作为 CPU 本身的卸载加速器,无需单独的硬件卡。本节详细介绍了 SUSE Telco Cloud 的配置,以便工作负载利用 ACC100 或 Intel vRAN Boost。

41.1 内核参数

要启用 vRAN 加速,我们需要启用以下内核参数(如果尚未存在):

parametervalue描述

IOMMU

pt

此选项启用 DPDK 接口的 vfio 使用。

intel_iommu or amd_iommu

on

此选项启用虚拟功能的 vfio 使用。

修改 GRUB 文件 /etc/default/grub 以将它们添加到内核命令行:

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"

更新 GRUB 配置并重启系统以应用更改:

$ transactional-update grub.cfg
$ reboot

要验证参数在重启后是否已应用,请检查命令行:

$ cat /proc/cmdline

41.2 在 FEC 加速器上配置 SR-IOV

  • 加载 vfio-pci 内核模块以启用 vRAN 加速。第一个参数指示支持 SR-IOV 的 vfio-pci 模块,第二个参数可防止 PCI 设备在空闲时进入低功耗状态。

$ modprobe vfio-pci enable_sriov=1 disable_idle_d3=1
  • 检索 FEC 加速器的 PCI 设备地址:

$ 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]
  • 将物理接口 (PF) 与 vfio-pci 驱动程序绑定:

$ dpdk-devbind.py -b vfio-pci 0000:07:00.0
  • 从物理接口 (PF) 创建虚拟功能 (VFs)。

检查加速器卡的 VF 最大容量。接下来,配置该卡以暴露所需数量的虚拟功能,且不超过最大数量。在此示例中,我们将该卡配置为其 16 个虚拟功能的全部容量:

$ cat /sys/bus/pci/devices/0000:07:00.0/sriov_totalvfs
64
$ echo 16 > /sys/bus/pci/devices/0000:07:00.0/sriov_numvfs
  • 使用 4G 或 5G 配置文件配置加速器卡及其虚拟功能,并根据具体的英特尔处理器代次选择正确的 vRAN Boost 设备类型:如果为 Sapphire Rapids Edge Enhanced (SPR-EE),则选择 VRB1(前称为 ACC200);如果为 Granite Rapids-D (GNR-D),则选择 VRB2。必须提供唯一的虚拟功能词元 (UUID)(工作负载将使用此虚拟功能词元来利用该卡的 FEC 加速功能)。

警告
警告

自 pf-bb-config 起弃用:支持 VRB2 设备类型的新 rpm 版本现在将配置文件安装在 /usr/share/pf-bb-config/examples 路径;旧的 /opt/pf-bb-config/ 路径仍受支持,但将在未来版本中移除。请更新您的脚本和文档以反映新路径(如下例所示)。

$ 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
  • 验证从 FEC PF 创建的新虚拟功能。请注意,虚拟功能已获得 0d5d 设备 ID。下一步需要此信息以将这些虚拟功能公开为 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 配置 Kubernetes 以实现 FEC 加速

最后一步是在 SR-IOV 设备插件的帮助下将虚拟功能公开给 Kubernetes。使用从上一步收集的虚拟功能的 deviceID 创建 ConfigMap,并安装 SR-IOV 设备插件。一旦 Kubernetes 节点将 FEC 虚拟功能显示为 Allocatable 资源,集群即准备好让工作负载享受 FEC 加速。

按照 第 39 章 “SR-IOV” 章节中选项 1 的步骤操作。SRIOV Network Operator 不适用于 FEC 加速器,因此选项 2 不适用。