ARC-OTA 配置应用笔记 (逐步调试命令)#
ARC-OTA 软件发布清单#
设置 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