From fd8fc31a6f403f5e6ccf0cc14978322a648944f1 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 8 Feb 2024 20:02:26 +0100 Subject: [PATCH] Create 5G RFsim FR2 SA test Transform the previous FR2 do-ra test to FR2 RA. Co-authored-by: Luis Pereira --- ...onf => gnb.sa.band261.u3.32prb.rfsim.conf} | 136 ++++++------------ .../container_5g_rfsim_fr2_32prb.xml | 20 +-- .../container_5g_rfsim_fr2_32prb_down.xml | 8 -- .../docker-compose.yaml | 103 +++++++++++-- 4 files changed, 148 insertions(+), 119 deletions(-) rename ci-scripts/conf_files/{gnb.band261.32prb.rfsim.phytest-dora.conf => gnb.sa.band261.u3.32prb.rfsim.conf} (70%) diff --git a/ci-scripts/conf_files/gnb.band261.32prb.rfsim.phytest-dora.conf b/ci-scripts/conf_files/gnb.sa.band261.u3.32prb.rfsim.conf similarity index 70% rename from ci-scripts/conf_files/gnb.band261.32prb.rfsim.phytest-dora.conf rename to ci-scripts/conf_files/gnb.sa.band261.u3.32prb.rfsim.conf index 7603148fb7..d027e445ab 100644 --- a/ci-scripts/conf_files/gnb.band261.32prb.rfsim.phytest-dora.conf +++ b/ci-scripts/conf_files/gnb.sa.band261.u3.32prb.rfsim.conf @@ -1,41 +1,42 @@ -Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +Active_gNBs = ( "gNB-OAI"); # Asn1_verbosity, choice in: none, info, annoying Asn1_verbosity = "none"; +sa = 1; + gNBs = ( { ////////// Identification parameters: gNB_ID = 0xe00; - - cell_type = "CELL_MACRO_GNB"; - - gNB_name = "gNB-Eurecom-5GNRBox"; + gNB_name = "gNB-OAI"; // Tracking area code, 0x0000 and 0xfffe are reserved values tracking_area_code = 1; - plmn_list = ({mcc = 208; mnc = 99; mnc_length = 2;}); + plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1; }) }); + nr_cellid = 12345678L; tr_s_preference = "local_mac" ////////// Physical parameters: + sib1_tda = 15; min_rxtxtime = 6; servingCellConfigCommon = ( { #spCellConfigCommon - physCellId = 0; + physCellId = 10; # downlinkConfigCommon #frequencyInfoDL - # this is pointA + 23 PRBs@120kHz SCS (same as initial BWP) - absoluteFrequencySSB = 2071241; + # this is pointA + 16 PRBs@120kHz SCS (same as initial BWP) + absoluteFrequencySSB = 2071387; dl_frequencyBand = 261; # this is 27.900 GHz - dl_absoluteFrequencyPointA = 2070833; + dl_absoluteFrequencyPointA = 2071003; #scs-SpecificCarrierList dl_offstToCarrier = 0; # subcarrierSpacing @@ -50,7 +51,7 @@ gNBs = # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 initialDLBWPsubcarrierSpacing = 3; #pdcch-ConfigCommon - initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPcontrolResourceSetZero = 1; initialDLBWPsearchSpaceZero = 0; #uplinkConfigCommon @@ -85,12 +86,12 @@ gNBs = powerRampingStep = 1; #ra_ReponseWindow #1,2,4,8,10,20,40,80 - ra_ResponseWindow = 7; + ra_ResponseWindow = 5; #ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR -#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen - ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3; #oneHalf (0..15) 4,8,12,16,...60,64 - ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 7; + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15; #ra_ContentionResolutionTimer #(0..7) 8,16,24,32,40,48,56,64 ra_ContentionResolutionTimer = 7; @@ -101,8 +102,7 @@ gNBs = prach_RootSequenceIndex = 1; # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex # - msg1_SubcarrierSpacing = 3, - + msg1_SubcarrierSpacing = 3; # restrictedSetConfig # 0=unrestricted, 1=restricted type A, 2=restricted type B restrictedSetConfig = 0, @@ -119,7 +119,7 @@ gNBs = # ssb_PositionsInBurs_BitmapPR # 1=short, 2=medium, 3=long ssb_PositionsInBurst_PR = 3; - ssb_PositionsInBurst_Bitmap = 0x0001000100010001L; + ssb_PositionsInBurst_Bitmap = 1; # ssb_periodicityServingCell # 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1 @@ -152,7 +152,6 @@ gNBs = ); - # ------- SCTP definitions SCTP : { @@ -162,91 +161,58 @@ gNBs = }; - ////////// MME parameters: - mme_ip_address = ( { ipv4 = "192.168.18.99"; + ////////// AMF parameters: + amf_ip_address = ( { ipv4 = "192.168.71.132"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; } ); - ///X2 - enable_x2 = "no"; - t_reloc_prep = 1000; /* unit: millisecond */ - tx2_reloc_overall = 2000; /* unit: millisecond */ - t_dc_prep = 1000; /* unit: millisecond */ - t_dc_overall = 2000; /* unit: millisecond */ - target_enb_x2_ip_address = ( - { ipv4 = "192.168.18.199"; - ipv6 = "192:168:30::17"; - preference = "ipv4"; - } - ); - NETWORK_INTERFACES : { - - GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; - GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.198/24"; - GNB_INTERFACE_NAME_FOR_S1U = "eth0"; - GNB_IPV4_ADDRESS_FOR_S1U = "192.168.18.198/24"; + GNB_INTERFACE_NAME_FOR_NG_AMF = "eth0"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.71.140/24"; + GNB_INTERFACE_NAME_FOR_NGU = "eth0"; + GNB_IPV4_ADDRESS_FOR_NGU = "192.168.71.140/24"; GNB_PORT_FOR_S1U = 2152; # Spec 2152 - GNB_IPV4_ADDRESS_FOR_X2C = "192.168.18.198/24"; - GNB_PORT_FOR_X2C = 36422; # Spec 36422 }; } ); -MACRLCs = ( - { - num_cc = 1; - tr_s_preference = "local_L1"; - tr_n_preference = "local_RRC"; - pusch_TargetSNRx10 = 200; - pucch_TargetSNRx10 = 200; - } -); +MACRLCs = ({ + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; +}); L1s = ( { num_cc = 1; tr_n_preference = "local_mac"; - ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0 + prach_dtx_threshold = 120; + #pucch0_dtx_threshold = 120; } ); -RUs = ( - { - local_rf = "yes" - nb_tx = 1; - nb_rx = 1; - att_tx = 0; - att_rx = 0; - bands = [7]; - sl_ahead = 12; - max_pdschReferenceSignalPower = -27; - max_rxgain = 75; - eNB_instances = [0]; - sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2"; - if_freq = 5124520000L; - clock_src = "external"; - time_src = "external"; - } -); +RUs = ({ + local_rf = "yes" + nb_tx = 1; + nb_rx = 1; + att_tx = 0; + att_rx = 0; + sl_ahead = 12; + bands = [261]; + max_pdschReferenceSignalPower = -27; + eNB_instances = [0]; +}); rfsimulator: { serveraddr = "server"; }; -THREAD_STRUCT = ( - { - #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" - parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; - #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" - worker_config = "WORKER_ENABLE"; - } -); - security = { # preferred ciphering algorithms # the first one of the list that an UE supports in chosen @@ -264,14 +230,6 @@ security = { drb_integrity = "no"; }; - log_config : - { - global_log_level ="info"; - hw_log_level ="info"; - phy_log_level ="info"; - mac_log_level ="info"; - rlc_log_level ="info"; - pdcp_log_level ="info"; - rrc_log_level ="info"; - }; - +log_config: { + global_log_level ="info"; +}; diff --git a/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml b/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml index 25ffb4b7b2..2c3625166e 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml @@ -28,7 +28,6 @@ 111111 100001 - 004000 000000 000001 020001 @@ -44,27 +43,20 @@ oai-gnb-asan oai-nr-ue-asan - - Custom_Command - Clean-Up any residual volume - localhost - docker volume rm 5g_rfsimulator_fr2_32prb_rrc.config - - DeployGenObject Deploy OAI gNB yaml_files/5g_rfsimulator_fr2_32prb - oai-gnb - 1 + mysql oai-amf oai-smf oai-upf oai-ext-dn + 5 DeployGenObject Deploy OAI NR-UE yaml_files/5g_rfsimulator_fr2_32prb - oai-nr-ue - 2 + oai-gnb oai-nr-ue + 7 @@ -87,8 +79,8 @@ UndeployGenObject Undeploy all OAI 5G stack yaml_files/5g_rfsimulator_fr2_32prb - 0,0,0,0 - 0,0,0,0 + 10,0,0,0 + 10,0,0,0 diff --git a/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb_down.xml b/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb_down.xml index efd7340b41..6dd65eaa85 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb_down.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb_down.xml @@ -26,7 +26,6 @@ trash 100002 - 004000 222222 @@ -37,13 +36,6 @@ yaml_files/5g_rfsimulator_fr2_32prb - - Custom_Command - Clean-Up any residual volume - localhost - docker volume rm 5g_rfsimulator_fr2_32prb_rrc.config - - Clean_Test_Server_Images Clean Test Images on Test Server diff --git a/ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml index 145122d97e..c04680ad58 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml @@ -1,18 +1,99 @@ version: '3.8' 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.0.0 + 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.0.0 + 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.0.0 + 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: oaisoftwarealliance/oai-gnb:develop privileged: true container_name: rfsim5g-oai-gnb environment: - USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --rfsimulator.wait_timeout 20 --noS1 --log_config.global_log_options level,nocolor,time + USE_ADDITIONAL_OPTIONS: --sa --rfsim --log_config.global_log_options level,nocolor,time ASAN_OPTIONS: detect_leaks=0 networks: public_net: ipv4_address: 192.168.71.140 volumes: - - ../../conf_files/gnb.band261.32prb.rfsim.phytest-dora.conf:/opt/oai-gnb/etc/gnb.conf - - rrc.config:/opt/oai-gnb/ + - ../../conf_files/gnb.sa.band261.u3.32prb.rfsim.conf:/opt/oai-gnb/etc/gnb.conf healthcheck: test: /bin/bash -c "pgrep nr-softmodem" interval: 10s @@ -24,11 +105,12 @@ services: privileged: true container_name: rfsim5g-oai-nr-ue environment: - USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --noS1 --reconfig-file etc/rrc/reconfig.raw --rbconfig-file etc/rrc/rbconfig.raw --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time + USE_ADDITIONAL_OPTIONS: --sa --rfsim + --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time + -r 32 --numerology 3 --band 261 -C 27533280000 --ssb 72 ASAN_OPTIONS: detect_leaks=0 volumes: - ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf - - rrc.config:/opt/oai-nr-ue/etc/rrc/ depends_on: - oai-gnb networks: @@ -40,9 +122,6 @@ services: timeout: 5s retries: 5 -volumes: - rrc.config: - networks: public_net: driver: bridge @@ -52,3 +131,11 @@ networks: - 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"