From acb2ae93bd9cb392358add33460525a957c40ed1 Mon Sep 17 00:00:00 2001 From: Bartosz Podrygajlo Date: Sat, 17 May 2025 14:24:47 +0200 Subject: [PATCH] Add RFSim 10 UEs/process RFSim test Add an RFSim test for 10 UEs in a single process. --- ci-scripts/ci_infra.yaml | 90 ++++++++ .../xml_files/container_5g_rfsim_multiue.xml | 210 ++++++++++++++++++ .../docker-compose.yaml | 144 ++++++++++++ .../5g_rfsimulator_multiue/nrue.uicc.conf | 75 +++++++ 4 files changed, 519 insertions(+) create mode 100644 ci-scripts/xml_files/container_5g_rfsim_multiue.xml create mode 100644 ci-scripts/yaml_files/5g_rfsimulator_multiue/docker-compose.yaml create mode 100644 ci-scripts/yaml_files/5g_rfsimulator_multiue/nrue.uicc.conf diff --git a/ci-scripts/ci_infra.yaml b/ci-scripts/ci_infra.yaml index aabba119ec..7a6999f503 100644 --- a/ci-scripts/ci_infra.yaml +++ b/ci-scripts/ci_infra.yaml @@ -455,3 +455,93 @@ l2sim4g_ext_dn: Host: "%%current_host%%" NetworkScript: docker exec l2sim4g-trf-gen ip a show dev eth0 CmdPrefix: docker exec l2sim4g-trf-gen + +rfsim5g_multiue1: + Host: "%%current_host%%" + NetworkScript: docker exec rfsim5g-oai-nr-ue ip a show dev oaitun_ue1 + CmdPrefix: docker exec rfsim5g-oai-nr-ue + IF: oaitun_ue1 + AttachScript: docker start rfsim5g-oai-nr-ue + DetachScript: docker stop rfsim5g-oai-nr-ue + MTU: 1500 + +rfsim5g_multiue2: + Host: "%%current_host%%" + NetworkScript: docker exec rfsim5g-oai-nr-ue ip a show dev oaitun_ue2 + CmdPrefix: docker exec rfsim5g-oai-nr-ue + IF: oaitun_ue2 + AttachScript: true + DetachScript: true + MTU: 1500 + +rfsim5g_multiue3: + Host: "%%current_host%%" + NetworkScript: docker exec rfsim5g-oai-nr-ue ip a show dev oaitun_ue3 + CmdPrefix: docker exec rfsim5g-oai-nr-ue + IF: oaitun_ue3 + AttachScript: "true" + DetachScript: "true" + MTU: 1500 + +rfsim5g_multiue4: + Host: "%%current_host%%" + NetworkScript: docker exec rfsim5g-oai-nr-ue ip a show dev oaitun_ue4 + CmdPrefix: docker exec rfsim5g-oai-nr-ue + IF: oaitun_ue4 + AttachScript: "true" + DetachScript: "true" + MTU: 1500 + +rfsim5g_multiue5: + Host: "%%current_host%%" + NetworkScript: docker exec rfsim5g-oai-nr-ue ip a show dev oaitun_ue5 + CmdPrefix: docker exec rfsim5g-oai-nr-ue + IF: oaitun_ue5 + AttachScript: "true" + DetachScript: "true" + MTU: 1500 + +rfsim5g_multiue6: + Host: "%%current_host%%" + NetworkScript: docker exec rfsim5g-oai-nr-ue ip a show dev oaitun_ue6 + CmdPrefix: docker exec rfsim5g-oai-nr-ue + IF: oaitun_ue6 + AttachScript: "true" + DetachScript: "true" + MTU: 1500 + +rfsim5g_multiue7: + Host: "%%current_host%%" + NetworkScript: docker exec rfsim5g-oai-nr-ue ip a show dev oaitun_ue7 + CmdPrefix: docker exec rfsim5g-oai-nr-ue + IF: oaitun_ue7 + AttachScript: "true" + DetachScript: "true" + MTU: 1500 + +rfsim5g_multiue8: + Host: "%%current_host%%" + NetworkScript: docker exec rfsim5g-oai-nr-ue ip a show dev oaitun_ue8 + CmdPrefix: docker exec rfsim5g-oai-nr-ue + IF: oaitun_ue8 + AttachScript: "true" + DetachScript: "true" + MTU: 1500 + +rfsim5g_multiue9: + Host: "%%current_host%%" + NetworkScript: docker exec rfsim5g-oai-nr-ue ip a show dev oaitun_ue9 + CmdPrefix: docker exec rfsim5g-oai-nr-ue + IF: oaitun_ue9 + AttachScript: "true" + DetachScript: "true" + MTU: 1500 + +rfsim5g_multiue10: + Host: "%%current_host%%" + NetworkScript: docker exec rfsim5g-oai-nr-ue ip a show dev oaitun_ue10 + CmdPrefix: docker exec rfsim5g-oai-nr-ue + IF: oaitun_ue10 + AttachScript: "true" + DetachScript: "true" + MTU: 1500 diff --git a/ci-scripts/xml_files/container_5g_rfsim_multiue.xml b/ci-scripts/xml_files/container_5g_rfsim_multiue.xml new file mode 100644 index 0000000000..e7376ad840 --- /dev/null +++ b/ci-scripts/xml_files/container_5g_rfsim_multiue.xml @@ -0,0 +1,210 @@ + + + rfsim-5gnr-tdd-multiue + Monolithic SA TDD gNB multiue + wrench + + 111111 + 800813 + 000001 + 000002 + 000003 + 000008 + 020001 + 020002 + 020003 + 020004 + 020105 + 444445 + 030001 + 030002 + 444444 + 100001 + 222222 + + + + + Pull_Local_Registry + Pull Images from Local Registry + 0 + oai-gnb-asan oai-nr-ue + + + Create_Workspace + Create new Workspace + 0 + 0 + + + Deploy_Object + Deploy OAI 5G CoreNetwork + ci-scripts/yaml_files/5g_rfsimulator_multiue + mysql oai-amf oai-smf oai-upf oai-ext-dn + 0 + 0 + + + + Deploy_Object + Deploy OAI 5G gNB RF sim SA + ci-scripts/yaml_files/5g_rfsimulator_multiue + oai-gnb + 0 + 0 + + + + Deploy_Object + Deploy OAI 5G NR-UE RF sim SA + ci-scripts/yaml_files/5g_rfsimulator_multiue + oai-nr-ue + 0 + 0 + + + + Attach_UE + Attach OAI UE (Wait for IP) + rfsim5g_multiue1 rfsim5g_multiue2 rfsim5g_multiue3 rfsim5g_multiue4 rfsim5g_multiue5 rfsim5g_multiue6 rfsim5g_multiue7 rfsim5g_multiue8 rfsim5g_multiue9 rfsim5g_multiue10 + cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix + + + + Ping + Ping ext-dn from NR-UE + rfsim5g_multiue1 + cacofonix + rfsim5g_ext_dn + cacofonix + -c 20 -i 0.25 + 5 + + + + Ping + Ping NR-UE from ext-dn + rfsim5g_ext_dn + cacofonix + rfsim5g_multiue1 + cacofonix + -c 20 -i 0.25 + 5 + + + + Ping + Ping ext-dn from Second NR-UE + rfsim5g_multiue2 + cacofonix + rfsim5g_ext_dn + cacofonix + -c 20 -i 0.25 + 5 + + + + Ping + Ping Second NR-UE from ext-dn + rfsim5g_ext_dn + cacofonix + rfsim5g_multiue2 + cacofonix + -c 20 -i 0.25 + 5 + + + + Ping + Ping ext-dn from both UEs + rfsim5g_multiue1 rfsim5g_multiue2 + cacofonix cacofonix + rfsim5g_ext_dn + cacofonix + -c 20 -i 0.25 + 5 + + + + Ping + Ping ext-dn from all UEs + rfsim5g_multiue1 rfsim5g_multiue2 rfsim5g_multiue3 rfsim5g_multiue4 rfsim5g_multiue5 rfsim5g_multiue6 rfsim5g_multiue7 rfsim5g_multiue8 rfsim5g_multiue9 rfsim5g_multiue10 + cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix + rfsim5g_ext_dn + cacofonix + -c 20 -i 0.25 -s 1016 + 5 + + + + Iperf + Iperf (DL/3Mbps/UDP)(30 sec) + -u -b 3M -t 20 -R + rfsim5g_multiue1 + cacofonix + rfsim5g_ext_dn + cacofonix + 5 + 90 + + + + Iperf + Iperf (UL/1Mbps/UDP)(30 sec) + -u -b 1M -t 20 + rfsim5g_multiue1 + cacofonix + rfsim5g_ext_dn + cacofonix + 5 + 90 + + + + Detach_UE + Detach OAI UEs + rfsim5g_multiue1 + cacofonix + + + + Undeploy_Object + true + Undeploy all OAI 5G stack + ci-scripts/yaml_files/5g_rfsimulator_multiue + 1,0,0,0 + 1,0,0,0 + 0 + 0 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + oai-gnb-asan oai-nr-ue + + + diff --git a/ci-scripts/yaml_files/5g_rfsimulator_multiue/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_multiue/docker-compose.yaml new file mode 100644 index 0000000000..6f5bc337bc --- /dev/null +++ b/ci-scripts/yaml_files/5g_rfsimulator_multiue/docker-compose.yaml @@ -0,0 +1,144 @@ +services: + mysql: + container_name: "rfsim5g-mysql" + image: mysql:8.0 + volumes: + - ../5g_rfsimulator/oai_db.sql:/docker-entrypoint-initdb.d/oai_db.sql + - ../5g_rfsimulator/mysql-healthcheck.sh:/tmp/mysql-healthcheck.sh + environment: + - TZ=Europe/Paris + - MYSQL_DATABASE=oai_db + - MYSQL_USER=test + - MYSQL_PASSWORD=test + - MYSQL_ROOT_PASSWORD=linux + healthcheck: + test: /bin/bash -c "/tmp/mysql-healthcheck.sh" + interval: 10s + timeout: 5s + retries: 30 + networks: + public_net: + ipv4_address: 192.168.71.131 + oai-amf: + container_name: "rfsim5g-oai-amf" + image: oaisoftwarealliance/oai-amf:v2.1.10 + environment: + - TZ=Europe/paris + volumes: + - ../5g_rfsimulator/mini_nonrf_config.yaml:/openair-amf/etc/config.yaml + depends_on: + - mysql + networks: + public_net: + ipv4_address: 192.168.71.132 + oai-smf: + container_name: "rfsim5g-oai-smf" + image: oaisoftwarealliance/oai-smf:v2.1.10 + environment: + - TZ=Europe/Paris + volumes: + - ../5g_rfsimulator/mini_nonrf_config.yaml:/openair-smf/etc/config.yaml + depends_on: + - oai-amf + networks: + public_net: + ipv4_address: 192.168.71.133 + oai-upf: + container_name: "rfsim5g-oai-upf" + image: oaisoftwarealliance/oai-upf:v2.1.10 + environment: + - TZ=Europe/Paris + volumes: + - ../5g_rfsimulator/mini_nonrf_config.yaml:/openair-upf/etc/config.yaml + depends_on: + - oai-smf + cap_add: + - NET_ADMIN + - SYS_ADMIN + cap_drop: + - ALL + privileged: true + networks: + public_net: + ipv4_address: 192.168.71.134 + traffic_net: + ipv4_address: 192.168.72.134 + oai-ext-dn: + privileged: true + container_name: rfsim5g-oai-ext-dn + image: oaisoftwarealliance/trf-gen-cn5g:focal + entrypoint: /bin/bash -c \ + "iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;"\ + "ip route add 12.1.1.0/24 via 192.168.72.134 dev eth0; sleep infinity" + depends_on: + - oai-upf + networks: + traffic_net: + ipv4_address: 192.168.72.135 + healthcheck: + test: /bin/bash -c "ping -c 2 192.168.72.134" + interval: 10s + timeout: 5s + retries: 5 + oai-gnb: + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} + container_name: rfsim5g-oai-gnb + cap_drop: + - ALL + environment: + USE_ADDITIONAL_OPTIONS: -E --rfsim --log_config.global_log_options level,nocolor,time + ASAN_OPTIONS: detect_leaks=0 + depends_on: + - oai-ext-dn + networks: + public_net: + ipv4_address: 192.168.71.140 + volumes: + - ../../conf_files/gnb.sa.band78.106prb.rfsim.yaml:/opt/oai-gnb/etc/gnb.yaml + healthcheck: + test: /bin/bash -c "pgrep nr-softmodem" + interval: 10s + timeout: 5s + retries: 5 + oai-nr-ue: + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} + container_name: rfsim5g-oai-nr-ue + cap_drop: + - ALL + cap_add: + - NET_ADMIN # for interface bringup + - NET_RAW # for ping + environment: + USE_ADDITIONAL_OPTIONS: -E --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001100 -C 3319680000 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time --num-ues 10 + depends_on: + - oai-gnb + networks: + public_net: + ipv4_address: 192.168.71.150 + devices: + - /dev/net/tun:/dev/net/tun + volumes: + - ./nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf + healthcheck: + test: /bin/bash -c "pgrep nr-uesoftmodem" + interval: 10s + timeout: 5s + retries: 5 + +networks: + public_net: + driver: bridge + name: rfsim5g-oai-public-net + ipam: + config: + - subnet: 192.168.71.128/26 + driver_opts: + com.docker.network.bridge.name: "rfsim5g-public" + traffic_net: + driver: bridge + name: rfsim5g-oai-traffic-net + ipam: + config: + - subnet: 192.168.72.128/26 + driver_opts: + com.docker.network.bridge.name: "rfsim5g-traffic" diff --git a/ci-scripts/yaml_files/5g_rfsimulator_multiue/nrue.uicc.conf b/ci-scripts/yaml_files/5g_rfsimulator_multiue/nrue.uicc.conf new file mode 100644 index 0000000000..92ccf9dca2 --- /dev/null +++ b/ci-scripts/yaml_files/5g_rfsimulator_multiue/nrue.uicc.conf @@ -0,0 +1,75 @@ +uicc0 = { + imsi = "208990100001100"; + key = "fec86ba6eb707ed08905757b1bb44b8f"; + opc= "C42449363BBAD02B66D16BC975D77CC1"; + dnn= "oai"; + nssai_sst=1; +} +uicc1 = { + imsi = "208990100001101"; + key = "fec86ba6eb707ed08905757b1bb44b8f"; + opc= "C42449363BBAD02B66D16BC975D77CC1"; + dnn= "oai"; + nssai_sst=1; +} +uicc2 = { + imsi = "208990100001102"; + key = "fec86ba6eb707ed08905757b1bb44b8f"; + opc= "C42449363BBAD02B66D16BC975D77CC1"; + dnn= "oai"; + nssai_sst=1; +} +uicc3 = { + imsi = "208990100001103"; + key = "fec86ba6eb707ed08905757b1bb44b8f"; + opc= "C42449363BBAD02B66D16BC975D77CC1"; + dnn= "oai"; + nssai_sst=1; +} +uicc4 = { + imsi = "208990100001104"; + key = "fec86ba6eb707ed08905757b1bb44b8f"; + opc= "C42449363BBAD02B66D16BC975D77CC1"; + dnn= "oai"; + nssai_sst=1; +} +uicc5 = { + imsi = "208990100001105"; + key = "fec86ba6eb707ed08905757b1bb44b8f"; + opc= "C42449363BBAD02B66D16BC975D77CC1"; + dnn= "oai"; + nssai_sst=1; +} +uicc6 = { + imsi = "208990100001106"; + key = "fec86ba6eb707ed08905757b1bb44b8f"; + opc= "C42449363BBAD02B66D16BC975D77CC1"; + dnn= "oai"; + nssai_sst=1; +} +uicc7 = { + imsi = "208990100001107"; + key = "fec86ba6eb707ed08905757b1bb44b8f"; + opc= "C42449363BBAD02B66D16BC975D77CC1"; + dnn= "oai"; + nssai_sst=1; +} +uicc8 = { + imsi = "208990100001108"; + key = "fec86ba6eb707ed08905757b1bb44b8f"; + opc= "C42449363BBAD02B66D16BC975D77CC1"; + dnn= "oai"; + nssai_sst=1; +} +uicc9 = { + imsi = "208990100001109"; + key = "fec86ba6eb707ed08905757b1bb44b8f"; + opc= "C42449363BBAD02B66D16BC975D77CC1"; + dnn= "oai"; + nssai_sst=1; +} + + + +thread-pool: "-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1" +