diff --git a/ci-scripts/conf_files/gnb-pnf.sa.band77.273prb.fhi72.4x4-4L-vvdn.conf b/ci-scripts/conf_files/gnb-pnf.sa.band77.273prb.fhi72.4x4-4L-vvdn.conf new file mode 100644 index 0000000000..cd33218fd4 --- /dev/null +++ b/ci-scripts/conf_files/gnb-pnf.sa.band77.273prb.fhi72.4x4-4L-vvdn.conf @@ -0,0 +1,70 @@ +# SPDX-License-Identifier: LicenseRef-CSSL-1.0 + +L1s = ( +{ + tr_n_preference = "nfapi"; + remote_n_address = "127.0.0.1"; // vnf addr + local_n_address = "127.0.0.1"; // pnf addr + local_n_portc = 50000; // pnf p5 port [!] + remote_n_portc = 50001; // vnf p5 port + local_n_portd = 50010; // pnf p7 port + remote_n_portd = 50011; // vnf p7 port + prach_dtx_threshold = 130 + pucch0_dtx_threshold = 80; + pusch_dtx_threshold = -100; + tx_amp_backoff_dB = 3; + L1_rx_thread_core = 11; + L1_tx_thread_core = 12; + phase_compensation = 0; # needs to match O-RU configuration +} +); + +RUs = ( +{ + local_rf = "no"; + nb_tx = 4; + nb_rx = 4; + att_tx = 0; + att_rx = 0; + bands = [77]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + sf_extension = 0; + eNB_instances = [0]; + ru_thread_core = 10; + sl_ahead = 6; + tr_preference = "raw_if4p5"; # important: activate FHI7.2 + do_precoding = 0; # needs to match O-RU configuration +} +); + +log_config : +{ + global_log_level = "info"; +}; + +fhi_72 = { + dpdk_devices = ("0000:41:11.0", "0000:41:11.1"); + dpdk_iova_mode = "VA"; + system_core = 7; + io_core = 8; + worker_cores = (9); + ru_addr = ("98:ae:71:04:83:e3", "98:ae:71:04:83:e3"); + mtu = 9600; + fh_config = ({ + T1a_cp_dl = (285, 470); + T1a_cp_ul = (285, 429); + T1a_up = (125, 350); + Ta4 = (110, 180); + ru_config = { + iq_width = 9; + iq_width_prach = 9; + }; + }); +}; + +nrLDPC_coding_aal : { + dpdk_dev : "0000:01:00.0"; + dpdk_core_list : "18-19"; + is_t2 : 1; +}; diff --git a/ci-scripts/conf_files/gnb-vnf.sa.band77.273prb.fhi72.4x4-4L-vvdn.conf b/ci-scripts/conf_files/gnb-vnf.sa.band77.273prb.fhi72.4x4-4L-vvdn.conf new file mode 100644 index 0000000000..ff4fc090f5 --- /dev/null +++ b/ci-scripts/conf_files/gnb-vnf.sa.band77.273prb.fhi72.4x4-4L-vvdn.conf @@ -0,0 +1,191 @@ +# SPDX-License-Identifier: LicenseRef-CSSL-1.0 + +Active_gNBs = ( "gNB-OAI-DU"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + gNB_DU_ID = 0xe00; + gNB_name = "gNB-OAI-DU"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ( { sst = 1; }); }); + + nr_cellid = 1; + + ////////// Physical parameters: + + pdsch_AntennaPorts_XP = 2; + pdsch_AntennaPorts_N1 = 2; + maxMIMO_layers = 4; + pusch_AntennaPorts = 4; + do_CSIRS = 1; + do_SRS = 1; + force_UL256qam_off = 0; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + physCellId = 0; +# downlinkConfigCommon + #frequencyInfoDL + # center frequency = 4049.76 MHz + # selected SSB frequency = 4049.76 MHz + absoluteFrequencySSB = 669984; + dl_frequencyBand = 77; + # frequency point A = 4000.62 MHz + dl_absoluteFrequencyPointA = 666708; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 273; + #initialDownlinkBWP + #genericParameters + initialDLBWPlocationAndBandwidth = 1099; #38.101-1 Table 5.3.2-1 + # +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 11; + initialDLBWPsearchSpaceZero = 0; + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 77; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 273; + pMax = 23; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 1099; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 159; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 0; + preambleReceivedTargetPower = -100; +#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200) + preambleTransMax = 7; +#powerRampingStep +# 0=dB0,1=dB2,2=dB4,3=dB6 + powerRampingStep = 2; +#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR +#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; +#one (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15; +#ra_ContentionResolutionTimer +#(0..7) 8,16,24,32,40,48,56,64 + ra_ContentionResolutionTimer = 7; + rsrp_ThresholdSSB = 19; +#prach-RootSequenceIndex_PR +#1 = 839, 2 = 139 + prach_RootSequenceIndex_PR = 2; + 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 = 1, +# restrictedSetConfig +# 0=unrestricted, 1=restricted type A, 2=restricted type B + restrictedSetConfig = 0, + +# this is the offset between the last PRACH preamble power and the Msg3 PUSCH, 2 times the field value in dB + msg3_DeltaPreamble = 2; + p0_NominalWithGrant = -100; + +# pucch-ConfigCommon setup : +# pucchGroupHopping +# 0 = neither, 1= group hopping, 2=sequence hopping + pucchGroupHopping = 0; + hoppingId = 0; + p0_nominal = -96; + + ssb_PositionsInBurst_Bitmap = 0x1; + +# ssb_periodicityServingCell +# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1 + ssb_periodicityServingCell = 2; + +# dmrs_TypeA_position +# 0 = pos2, 1 = pos3 + dmrs_TypeA_Position = 0; + +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + subcarrierSpacing = 1; + + + #tdd-UL-DL-ConfigurationCommon +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + referenceSubcarrierSpacing = 1; + # pattern1 + # dl_UL_TransmissionPeriodicity + # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 + dl_UL_TransmissionPeriodicity = 5; + nrofDownlinkSlots = 3; + nrofDownlinkSymbols = 10; + nrofUplinkSlots = 1; + nrofUplinkSymbols = 2; + + ssPBCH_BlockPower = -11; + } + + ); + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; +} +); + +MACRLCs = ( +{ + tr_s_preference = "nfapi"; + remote_s_address = "127.0.0.1"; // pnf addr [!] + local_s_address = "127.0.0.1"; // vnf addr + local_s_portc = 50001; // vnf p5 port + remote_s_portc = 50000; // pnf p5 port [!] + local_s_portd = 50011; // vnf p7 port [!] + remote_s_portd = 50010; // pnf p7 port [!] + tr_n_preference = "f1"; + local_n_address = "172.21.8.200"; + remote_n_address = "172.21.6.112"; + local_n_portd = 2153; + remote_n_portd = 2153; + pusch_TargetSNRx10 = 220; + pucch_TargetSNRx10 = 250; +# dl_bler_target_upper = .35; +# dl_bler_target_lower = .15; + ul_bler_target_upper = .35; + ul_bler_target_lower = .15; + pusch_FailureThres = 100; +} +); + +log_config : +{ + global_log_level = "info"; +}; diff --git a/ci-scripts/xml_files/container_sa_fhi72_vvdn_4x4_up2_nfapi.xml b/ci-scripts/xml_files/container_sa_fhi72_vvdn_4x4_up2_nfapi.xml new file mode 100644 index 0000000000..a388e72f2f --- /dev/null +++ b/ci-scripts/xml_files/container_sa_fhi72_vvdn_4x4_up2_nfapi.xml @@ -0,0 +1,190 @@ + + + + test-5g-fhi72-4x4-vvdn-nfapi + 100 MHz 4x4 TDD SA VVDN nFAPI + tasks + + + DeployCoreNetwork + Initialize 5G Core + oc-cn5g-20897-stonechat + + + + Custom_Script + Activate carriers on VVDN RU + stonechat + + + + + DeployWithScript + Deploy CU + stonechat + + /opt/oai-cn5g-fed-develop-2025-jan/ci-scripts/charts/oai-cu/ oaicicd-core-for-fhi72 %%image_tag%% + + + + Pull_Local_Registry + Pull Images from Local Registry + stonechat + oai-gnb-fhi72-t2 + + + + Deploy_Object + Deploy DU-High (TDD/Band77/100MHz/VVDN) in a container + ci-scripts/yaml_files/sa_fhi_7.2_vvdn_4x4_nfapi + oai-du-high + stonechat + 2 + + + + Deploy_Object + Deploy DU-Low (TDD/Band77/100MHz/VVDN) in a container + ci-scripts/yaml_files/sa_fhi_7.2_vvdn_4x4_nfapi + oai-du-low + stonechat + 2 + + + + Attach_UE + Attach UE + up2-fhi72 + + + + Ping + Ping: 100 pings in 10 sec + up2-fhi72 + oc-cn5g-20897-stonechat + -c 100 -i 0.1 + 1 + 15 + + + + Iperf + iperf (DL/800Mbps/UDP)(60 sec) + -u -b 800M -t 60 -R -l1428 + up2-fhi72 + 20 + 80 + balanced + oc-cn5g-20897-stonechat + + + + Iperf + iperf (DL/1200Mbps/UDP)(60 sec) + -u -b 1200M -t 60 -R -l 1428 + up2-fhi72 + 20 + 80 + balanced + oc-cn5g-20897-stonechat + + + + Iperf + iperf (DL/1400Mbps/UDP)(60 sec) + -u -b 1400M -t 60 -R -l 1428 + true + up2-fhi72 + 20 + 80 + balanced + oc-cn5g-20897-stonechat + + + + Iperf + iperf (UL/100Mbps/UDP)(30 sec) + -u -b 100M -t 30 + up2-fhi72 + 20 + 80 + balanced + oc-cn5g-20897-stonechat + + + + Iperf + iperf (DL/TCP)(30 sec) + -t 30 -R + up2-fhi72 + 40 + oc-cn5g-20897-stonechat + + + + Iperf + iperf (UL/TCP)(30 sec) + -t 30 + up2-fhi72 + 10 + oc-cn5g-20897-stonechat + + + + Detach_UE + true + Detach UE + up2-fhi72 + + + + IdleSleep + Sleep + 5 + + + + Undeploy_Object + true + Undeploy DU + ci-scripts/yaml_files/sa_fhi_7.2_vvdn_4x4_nfapi + oai-du-low oai-du-high + stonechat + + oai-du-high=EndsWithBye + + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + stonechat + oai-gnb-fhi72-t2 + + + + UndeployWithScript + true + Undeploy CU on OC + stonechat + + /opt/oai-cn5g-fed-develop-2025-jan/ci-scripts/charts/oai-cu/ oaicicd-core-for-fhi72 %%log_dir%% + + + + UndeployCoreNetwork + true + Terminate 5G Core + oc-cn5g-20897-stonechat + + + + Custom_Script + true + Inactivate carriers on VVDN RU + stonechat + + + + diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_4x4_nfapi/docker-compose.yml b/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_4x4_nfapi/docker-compose.yml new file mode 100644 index 0000000000..333e28ab2b --- /dev/null +++ b/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_4x4_nfapi/docker-compose.yml @@ -0,0 +1,69 @@ +# SPDX-License-Identifier: MIT + +services: + dpdk-init: + image: docker.io/library/oai-dpdk-init:latest + network_mode: host + container_name: dpdk-init + entrypoint: "/tmp/setup_sriov.sh" + privileged: true + devices: + - /dev/vfio:/dev/vfio/ + volumes: + - ./setup_sriov_vvdn.sh:/tmp/setup_sriov.sh + - /lib/modules:/lib/modules + - /usr/lib/modules:/usr/lib/modules + oai-du-high: + image: ${REGISTRY-oaisoftwarealliance/}oai-gnb-fhi72-t2:${TAG:-develop} + network_mode: "host" + cap_add: + - IPC_LOCK + - SYS_NICE + cap_drop: + - ALL + container_name: oai-du-high + environment: + TZ: Europe/Paris + USE_ADDITIONAL_OPTIONS: --nfapi VNF + NFAPI_TRACE_LEVEL: info + volumes: + - ../../conf_files/gnb-vnf.sa.band77.273prb.fhi72.4x4-4L-vvdn.conf:/opt/oai-gnb/etc/gnb.conf + # Please change these values based on your system + cpuset: "24,25,26" + healthcheck: + test: /bin/bash -c "pgrep nr-softmodem" + start_period: 15s + start_interval: 500ms + interval: 5s + timeout: 5s + retries: 10 + oai-du-low: + image: ${REGISTRY-oaisoftwarealliance/}oai-gnb-fhi72-t2:${TAG:-develop} + network_mode: "host" + cap_add: + - IPC_LOCK + - SYS_NICE + cap_drop: + - ALL + container_name: oai-du-low + environment: + TZ: Europe/Paris + USE_ADDITIONAL_OPTIONS: --nfapi PNF --thread-pool 13,14,15,16,17,18,19,20 --loader.ldpc.shlibversion _aal --log_config.global_log_options level,nocolor,utc_time + NFAPI_TRACE_LEVEL: info + devices: + - /dev/vfio:/dev/vfio/ + volumes: + - ../../conf_files/gnb-pnf.sa.band77.273prb.fhi72.4x4-4L-vvdn.conf:/opt/oai-gnb/etc/gnb.conf + - /dev/hugepages:/dev/hugepages + # Please change these values based on your system + cpuset: "7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23" + depends_on: + dpdk-init: + condition: service_completed_successfully + healthcheck: + test: /bin/bash -c "/opt/oai-gnb/bin/check-prach-io.sh" + start_period: 15s + start_interval: 500ms + interval: 5s + timeout: 5s + retries: 10 diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_4x4_nfapi/setup_sriov_vvdn.sh b/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_4x4_nfapi/setup_sriov_vvdn.sh new file mode 100755 index 0000000000..6457f8edb1 --- /dev/null +++ b/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_4x4_nfapi/setup_sriov_vvdn.sh @@ -0,0 +1,27 @@ +#!/bin/sh +# SPDX-License-Identifier: MIT + +set -eu + +IF_NAME=ens2f1 +DPDK_DEVBIND_PREFIX=/usr/local/bin + +ethtool -G $IF_NAME rx 8160 +ethtool -G $IF_NAME tx 8160 +sh -c "echo 0 > /sys/class/net/$IF_NAME/device/sriov_numvfs" +sh -c "echo 2 > /sys/class/net/$IF_NAME/device/sriov_numvfs" +modprobe -r iavf +modprobe iavf +# this next 2 lines is for C/U planes +ip link set $IF_NAME vf 0 mac 76:76:64:6e:00:01 vlan 4 spoofchk off mtu 9216 +ip link set $IF_NAME vf 1 mac 76:76:64:6e:00:00 vlan 4 spoofchk off mtu 9216 +sleep 1 +# These are the DPDK bindings for C/U-planes on vlan 4 +${DPDK_DEVBIND_PREFIX}/dpdk-devbind.py --unbind 41:11.0 +${DPDK_DEVBIND_PREFIX}/dpdk-devbind.py --unbind 41:11.1 +modprobe vfio-pci +${DPDK_DEVBIND_PREFIX}/dpdk-devbind.py --bind vfio-pci 41:11.0 +${DPDK_DEVBIND_PREFIX}/dpdk-devbind.py --bind vfio-pci 41:11.1 +# These are the DPDK bindings for T2 card +${DPDK_DEVBIND_PREFIX}/dpdk-devbind.py -b vfio-pci 01:00.0 +exit 0