ARC-OTA 配置应用笔记 (逐步调试命令)#

ARC-OTA 软件发布清单#

组件

版本

Aerial CUDA 加速 RAN

Layer 1

24-1

数据湖

24-1

pyAerial

24-1

OAI [1]

gNB

2024.w21

CN [2]

2024.w21

Sterling Skywave 服务管理

v0.5

OpenRANGym

(OSC RIC Release E)

v1.0

NVIDIA SDK Manager

v2.1

Foxconn O-RU n78 和 CBRS

v3.1.15q.551v0706-oam

设置 Aerial CUDA 加速 RAN Layer 1#

在 cuBB 的安装指南中,找到 Aerial CUDA 加速 RAN Layer 1 部分并按照说明进行操作。

运行 cuBB Docker 容器#

export GPU_FLAG="--gpus all"
export cuBB_SDK=/opt/nvidia/cuBB
#Name of your docker container
export AERIAL_CUBB_CONTAINER=cuBB_$USER
#Docker image downloaded from NGC
export AERIAL_CUBB_IMAGE=nvcr.io/qhrjhjrvlsbu/aerial-cuda-accelerated-ran:24-1-cubb

sudo usermod -aG docker $USER

docker run --detach --privileged \
   -it $GPU_FLAG --name $AERIAL_CUBB_CONTAINER \
   --hostname c_aerial_$USER \
   --add-host c_aerial_$USER:127.0.0.1 \
   --network host \
   --shm-size=4096m \
   -e cuBB_SDK=$cuBB_SDK \
   -w $cuBB_SDK \
   -v $(echo ~):$(echo ~) \
   -v /dev/hugepages:/dev/hugepages \
   -v /usr/src:/usr/src \
   -v /lib/modules:/lib/modules \
   -v ~/share:/opt/cuBB/share \
   --userns=host \
   --ipc=host \
   -v /var/log/aerial:/var/log/aerial \
   $AERIAL_CUBB_IMAGE

docker exec -it $AERIAL_CUBB_CONTAINER bash

有关安装说明,请参阅上面的 Aerial cuBB 安装指南链接。

由于 cuBB 23-4 版本起,运行 OTA 所需的 testvector 已包含在内。要使用 ru-emulator 和 test mac 运行 Aerial E2E 测试,请按照 Aerial CUDA 加速 RAN 文档生成所需的 testvector。

设置 OAI gNB#

克隆 gNB 源代码#

克隆 OpenAirInterface5G 仓库。

git clone --branch  2024.w21+ARC1.5 https://gitlab.eurecom.fr/oai/openairinterface5g.git ~/openairinterface5g

cd openairinterface5g

gNB 配置文件#

更新 OAI L2 的配置。配置位于此处

要使用的 L1 配置包含在最新的 Aerial 发布镜像中,并将根据您使用的 gNB 服务器而有所不同

  • Gigiabyte: 使用以下文件

    cuPHY-CP/cuphycontroller/config/cuphycontroller_P5G_FXN.yaml
    
  • SMC-GH: 使用与 Gigabyte 服务器相同的配置文件,确保核心已按照 配置 gNB 服务器 - SMC Grace Hopper MGX 中的描述进行隔离

    cuPHY-CP/cuphycontroller/config/cuphycontroller_P5G_FXN.yaml
    
  • Dell R750: 使用以下文件

    cuPHY-CP/cuphycontroller/config/cuphycontroller_P5G_FXN_R750.yaml
    

设置 OAI CN5G#

在每次系统重启后执行以下 iptables 设置,或在您的 Ubuntu 系统配置中使此设置永久生效。

On CN5G server, configure it to allow the traffic coming in by
adding this rule to iptables:

# On CN5G, upon startup:

sudo sysctl net.ipv4.conf.all.forwarding=1
sudo iptables -P FORWARD ACCEPT

按照 Gitlab 步骤安装核心网,步骤请参考设置 OAI CN5G

要为 ARC-OTA 运行正确的配置,请将第 2.2 和 2.3 节 OAI CN5G 配置文件替换为以下内容

# Get openairinterface5g source code
git clone --branch 2024.w21+ARC1.5 https://gitlab.eurecom.fr/oai/openairinterface5g.git ~/openairinterface5g
cd ~/openairinterface5g
cp -rT ~/openairinterface5g/doc/tutorial_resources/oai-cn5g ~/oai-cn5g

用户可配置的配置文件是

  • ~/oai-cn5g/database/oai_db.sql

配置 OAI gNB 和 CN5G#

为了理解以下示例配置设置和命令中的地址含义,我们将假设 gNB 和 CN5G 服务器具有以下接口名称和 IP 地址。

CN5G 服务器

eno1: 10.31.66.x            = SSH management port for terminal
eno2: 169.254.200.6         = BH connection on SFP switch for gNB-CN5G traffic

gNB 服务器

eno1:     10.31.66.x        = SSH management port for terminal
ens6f0:   b8:ce:f6:4e:75:40 = FH MAC address
ens6f0.2: 169.254.1.105     = FH IP address
ens6f1:   169.254.200.5     = BH connection SFP switch for gNB-CN5G traffic

gNB 设置静态路由

在 gNB 服务器上,为通往 CN5G 服务器的路径添加此静态路由。每次服务器开机后应用此路由。

Syntax:
sudo ip route add 192.168.70.128/26 via <CN5G IP> dev <gNB interface for CN5G>

Example:
sudo ip route add 192.168.70.128/26 via 169.254.200.6 dev ens6f1

gNB 设置 CN5G 服务器以用于 AMF

编辑使用的 gNB 配置文件。Aerial 的配置文件可以在这里找到

~/openairinterface5g/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-vnf.sa.band78.273prb.aerial.conf

更新 Docker compose 文件以挂载更新后的文件。

以下是使用实验室特定网络参数的示例。您的 IP 地址和接口名称可能有所不同。

GNB_INTERFACE_NAME_FOR_NG_AMF = "ens6f1";       # gNB side interface name of the SFP port toward CN (was eno1)
GNB_IPV4_ADDRESS_FOR_NG_AMF = "169.254.200.5";  # gNB side IP address of interface above (was 172.21.16.130)
GNB_INTERFACE_NAME_FOR_NGU = "ens6f1";          # gNB side interface name of the SFP port toward CN (was eno1)
GNB_IPV4_ADDRESS_FOR_NGU = "169.254.200.5";     # Same IP as GNB_IPV4_ADDRESS_FOR_NG_AMF above (was 172.21.16.130)

运行 CN5G#

启动 CN5G#

docker-compose up -d

对于 SMC-GH,您需要修补一些 CN 组件。请联系 arc@nvidia.com 获取补丁和构建说明。配置文件可以在这里找到: https://gitlab.eurecom.fr/oai/openairinterface5g/-/tree/2024.w21+ARC1.5/ci-scripts/yaml_files/sa_gh_gnb

停止 CN5G#

docker-compose down

运行时监控 CN5G 日志#

docker logs oai-amf -f

捕获 PCAP#

docker exec -it oai-amf /bin/bash
apt update && apt install tcpdump -y
tcpdump -i any -w /tmp/amf.pcap

然后从容器中复制 pcap 文件。

docker cp oai-amf:/tmp/amf.pcap .

启动 CN5G 的示例屏幕截图#

aerial@aerial-rf-r630:~/oai-cn5g$ docker compose up -d
[+] Building 0.0s (0/0)
[+] Running 11/11
✔ Network demo-oai-public-net  Created                                                                     0.1s
✔ Container oai-nrf            Started                                                                     0.7s
✔ Container mysql              Started                                                                     0.7s
✔ Container asterisk-ims       Started                                                                     0.7s
✔ Container oai-udr            Started                                                                     0.9s
✔ Container oai-udm            Started                                                                     1.2s
✔ Container oai-ausf           Started                                                                     1.5s
✔ Container oai-amf            Started                                                                     1.7s
✔ Container oai-smf            Started                                                                     2.0s
✔ Container oai-spgwu-tiny     Started                                                                     2.3s
✔ Container oai-ext-dn         Started                                                                     2.6s
aerial@aerial-rf-r630:~/oai-cn5g$ docker ps
CONTAINER ID   IMAGE                                       COMMAND                  CREATED              STATUS                        PORTS                          NAMES
d5af4f51c393   oaisoftwarealliance/trf-gen-cn5g:latest     "/bin/bash -c ' ip r…"   About a minute ago   Up About a minute (healthy)                                  oai-ext-dn
a9b2d18c7f77   oaisoftwarealliance/oai-spgwu-tiny:v1.5.1   "python3 /openair-sp…"   About a minute ago   Up About a minute (healthy)   2152/udp, 8805/udp             oai-spgwu-tiny
b61c383f9e60   oaisoftwarealliance/oai-smf:v1.5.1          "python3 /openair-sm…"   About a minute ago   Up About a minute (healthy)   80/tcp, 8080/tcp, 8805/udp     oai-smf
3681b1048c53   oaisoftwarealliance/oai-amf:v1.5.1          "python3 /openair-am…"   About a minute ago   Up About a minute (healthy)   80/tcp, 9090/tcp, 38412/sctp   oai-amf
c602f7cb1c67   oaisoftwarealliance/oai-ausf:v1.5.1         "python3 /openair-au…"   About a minute ago   Up About a minute (healthy)   80/tcp                         oai-ausf
752acae83ac0   oaisoftwarealliance/oai-udm:v1.5.1          "python3 /openair-ud…"   About a minute ago   Up About a minute (healthy)   80/tcp                         oai-udm
4bf281d08229   oaisoftwarealliance/oai-udr:v1.5.1          "python3 /openair-ud…"   About a minute ago   Up About a minute (healthy)   80/tcp                         oai-udr
33aa959be775   mysql:8.0                                   "docker-entrypoint.s…"   About a minute ago   Up About a minute (healthy)   3306/tcp, 33060/tcp            mysql
5d22e4745d00   asterisk-ims:latest                         "asterisk -fp"           About a minute ago   Up About a minute (healthy)                                  asterisk-ims
1a93b3ffe305   oaisoftwarealliance/oai-nrf:v1.5.1          "python3 /openair-nr…"   About a minute ago   Up About a minute (healthy)   80/tcp, 9090/tcp               oai-nrf