From 31b2428db86d525194b391557c1ab9a980c10090 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Tue, 16 Jul 2024 23:29:50 +0200 Subject: [PATCH 1/8] CI: Add configuration file for gNB fhi7.2 with Benetel550 and VVDN --- .../gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf | 297 ++++++++++++++++++ ...sa.band78.273prb.fhi72.4x4-benetel550.conf | 296 +++++++++++++++++ 2 files changed, 593 insertions(+) create mode 100644 ci-scripts/conf_files/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf create mode 100644 ci-scripts/conf_files/gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf diff --git a/ci-scripts/conf_files/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf b/ci-scripts/conf_files/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf new file mode 100644 index 0000000000..b98ed5d31c --- /dev/null +++ b/ci-scripts/conf_files/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf @@ -0,0 +1,297 @@ +Active_gNBs = ( "gNB-OAI"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + gNB_name = "gNB-OAI"; + + // 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 = 12345678L; + nr_cellid = 1; + + ////////// Physical parameters: + + pdsch_AntennaPorts_XP = 2; + pdsch_AntennaPorts_N1 = 1; + maxMIMO_layers = 2; + pusch_AntennaPorts = 4; + do_CSIRS = 1; + do_SRS = 0 ; + + pdcch_ConfigSIB1 = ( + { + controlResourceSetZero = 11; + searchSpaceZero = 0; + } + ); + + servingCellConfigCommon = ( + { + #spCellConfigCommon + physCellId = 0; +# downlinkConfigCommon + #frequencyInfoDL + # this is 3450.72 MHz (center frequency) + absoluteFrequencySSB = 666624; + dl_frequencyBand = 77; + # this is 3401.58 MHz + dl_absoluteFrequencyPointA = 663348; + #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; +#ra_ReponseWindow +#1,2,4,8,10,20,40,80 + ra_ResponseWindow = 5; +#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 = 3; +#oneHalf (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_PositionsInBurs_BitmapPR +# 1=short, 2=medium, 3=long + ssb_PositionsInBurst_PR = 2; + 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 = 6; + nrofUplinkSlots = 1; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = 0; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// AMF parameters: + amf_ip_address = ({ ipv4 = "172.21.6.103"; }); + + NETWORK_INTERFACES : + { + GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.18.20"; + GNB_IPV4_ADDRESS_FOR_NGU = "172.21.18.20"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( +{ + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + pusch_TargetSNRx10 = 180; + pucch_TargetSNRx10 = 230; + ul_bler_target_upper=.35; + ul_bler_target_lower=.15; + pusch_FailureThres = 100; +} +); + +L1s = ( +{ + num_cc = 1; + tr_n_preference = "local_mac"; + prach_dtx_threshold = 130 + pucch0_dtx_threshold = 80; + pusch_dtx_threshold = -100; + tx_amp_backoff_dB = 3; + L1_rx_thread_core = 3; + L1_tx_thread_core = 4; + 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 = 5; + sl_ahead = 5; + ##beamforming 1x2 matrix: 1 layer x 2 antennas + bf_weights = [0x00007fff, 0x0000,0x00007fff, 0x0000]; + clock_src = "internal"; + tr_preference = "raw_if4p5"; # important: activate FHI7.2 + do_precoding = 0; # needs to match O-RU configuration +} +); + +rfsimulator : +{ + serveraddr = "server"; + serverport = "4043"; + options = (); #("saviq"); or/and "chanmod" + modelname = "AWGN"; + IQfile = "/tmp/rfsimulator.iqs"; +}; + +security = { + # preferred ciphering algorithms + # the first one of the list that an UE supports in chosen + # valid values: nea0, nea1, nea2, nea3 + ciphering_algorithms = ( "nea0" ); + + # preferred integrity algorithms + # the first one of the list that an UE supports in chosen + # valid values: nia0, nia1, nia2, nia3 + integrity_algorithms = ( "nia2", "nia0" ); + + # setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter + # what 'ciphering_algorithms' configures; same thing for 'drb_integrity' + drb_ciphering = "yes"; + 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"; + ngap_log_level = "info"; + f1ap_log_level = "info"; +}; + +fhi_72 = { + dpdk_devices = ("0000:c3:11.0", "0000:c3:11.1"); + system_core = 0; + io_core = 1; + worker_cores = (2); + du_addr = ("76:76:64:6e:00:01", "76:76:64:6e:00:01"); + ru_addr = ("98:ae:71:01:c5:eb", "98:ae:71:01:c5:eb"); + mtu = 9216; # check if xran uses this properly + fh_config = ({ + Tadv_cp_dl = 125; + T2a_cp_dl = (285, 429); # (min, max) + T2a_cp_ul = (285, 429); # (min, max) + T2a_up = (125, 428); # (min, max) + Ta3 = (130, 170); # (min, max) + T1a_cp_dl = (285, 470); # (min, max) + T1a_cp_ul = (285, 429); # (min, max) + T1a_up = (125, 350); # (min, max) + Ta4 = (110, 180); # (min, max) + ru_config = { + iq_width = 9; + iq_width_prach = 9; + }; + prach_config = { + eAxC_offset = 4; + }; + }); +}; diff --git a/ci-scripts/conf_files/gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf b/ci-scripts/conf_files/gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf new file mode 100644 index 0000000000..f8586437fa --- /dev/null +++ b/ci-scripts/conf_files/gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf @@ -0,0 +1,296 @@ +Active_gNBs = ( "gNB-OAI"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + gNB_name = "gNB-OAI"; + + // 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 = 1; + maxMIMO_layers = 2; + pusch_AntennaPorts = 4; + do_CSIRS = 1; + do_SRS = 0 ; + sib1_tda = 15; +# force_UL256qam_off = 1; + + pdcch_ConfigSIB1 = ( + { + controlResourceSetZero = 11; + searchSpaceZero = 0; + } + ); + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + # n_TimingAdvanceOffset = 0; +# downlinkConfigCommon + #frequencyInfoDL + # this is 3450.72 MHz (center frequency) + absoluteFrequencySSB = 623328; + dl_frequencyBand = 78; + # this is 3401.58 MHz + dl_absoluteFrequencyPointA = 620052; + #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 = 78; + #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 = 151; +#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 = 8; +#powerRampingStep +# 0=dB0,1=dB2,2=dB4,3=dB6 + powerRampingStep = 1; +#ra_ReponseWindow +#1,2,4,8,10,20,40,80 + ra_ResponseWindow = 5; +#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 = 3; +#oneHalf (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 = -96; + +# pucch-ConfigCommon setup : +# pucchGroupHopping +# 0 = neither, 1= group hopping, 2=sequence hopping + pucchGroupHopping = 0; + hoppingId = 0; + p0_nominal = -96; +# ssb_PositionsInBurs_BitmapPR +# 1=short, 2=medium, 3=long + ssb_PositionsInBurst_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -15; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// AMF parameters: + amf_ip_address = ({ ipv4 = "172.21.6.103"; }); + + NETWORK_INTERFACES : + { + GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.18.20"; + GNB_IPV4_ADDRESS_FOR_NGU = "172.21.18.20"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( +{ + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + pusch_TargetSNRx10 = 100; + pucch_TargetSNRx10 = 200; + dl_bler_target_upper=.35; + dl_bler_target_lower=.15; + ul_bler_target_upper=.35; + ul_bler_target_lower=.15; + pusch_FailureThres = 1000; + ul_max_mcs = 28; +} +); + +L1s = ( +{ + num_cc = 1; + tr_n_preference = "local_mac"; + prach_dtx_threshold = 90; + pucch0_dtx_threshold = 80; + pusch_dtx_threshold = 10; + max_ldpc_iterations = 15; + tx_amp_backoff_dB = 12; # needs to match O-RU configuration + L1_rx_thread_core = 3; + L1_tx_thread_core = 4; + 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 = [78]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + sf_extension = 0; + eNB_instances = [0]; + ru_thread_core = 5; + sl_ahead = 10; + ##beamforming 1x2 matrix: 1 layer x 2 antennas + bf_weights = [0x00007fff, 0x0000,0x00007fff, 0x0000]; + tr_preference = "raw_if4p5"; # important: activate FHI7.2 + do_precoding = 0; # needs to match O-RU configuration +} +); + +security = { + # preferred ciphering algorithms + # the first one of the list that an UE supports in chosen + # valid values: nea0, nea1, nea2, nea3 + ciphering_algorithms = ( "nea0" ); + + # preferred integrity algorithms + # the first one of the list that an UE supports in chosen + # valid values: nia0, nia1, nia2, nia3 + integrity_algorithms = ( "nia2", "nia0" ); + + # setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter + # what 'ciphering_algorithms' configures; same thing for 'drb_integrity' + drb_ciphering = "yes"; + 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"; + ngap_log_level ="info"; + f1ap_log_level ="info"; +}; + +fhi_72 = { + dpdk_devices = ("0000:c3:11.0", "0000:c3:11.1"); + system_core = 0; + io_core = 1; + worker_cores = (2); + du_addr = ("00:11:22:33:44:66", "00:11:22:33:44:67"); + ru_addr = ("70:b3:d5:e1:5b:81", "70:b3:d5:e1:5b:81"); + mtu = 9216; + file_prefix = "fhi_72"; + fh_config = ({ + Tadv_cp_dl = 125; + T2a_cp_dl = (259, 500); + T2a_cp_ul = (25, 500); + T2a_up = (134, 375); + Ta3 = (152, 160); + T1a_cp_dl = (419, 470); + T1a_cp_ul = (285, 336); + T1a_up = (294, 345); + Ta4 = (0, 200); + ru_config = { + iq_width = 9; + iq_width_prach = 9; + }; + prach_config = { + eAxC_offset = 4; + }; + }); +}; From 7dffdcd797b114a5c4906c6a17aa8d6a5865e91a Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Fri, 2 Aug 2024 14:28:41 +0200 Subject: [PATCH 2/8] CI: Add YAML files and deployment scripts for FHI7.2 pipeline Create directories for gNB deployment with VVDN and Benetel550 RUs. Each directory includes scripts for setting up and cleaning up the host machine running the gNB. --- .../sa_fhi_7.2_benetel550_gnb/README.md | 15 ++++ .../docker-compose.yml | 40 +++++++++ .../setup_cleanup.sh | 5 ++ .../setup_sriov_benetel.sh | 22 +++++ .../yaml_files/sa_fhi_7.2_vvdn_gnb/README.md | 87 +++++++++++++++++++ .../sa_fhi_7.2_vvdn_gnb/docker-compose.yml | 40 +++++++++ .../sa_fhi_7.2_vvdn_gnb/setup_cleanup.sh | 5 ++ .../sa_fhi_7.2_vvdn_gnb/setup_sriov_vvdn.sh | 21 +++++ 8 files changed, 235 insertions(+) create mode 100644 ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/README.md create mode 100644 ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/docker-compose.yml create mode 100644 ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/setup_cleanup.sh create mode 100644 ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/setup_sriov_benetel.sh create mode 100644 ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/README.md create mode 100644 ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/docker-compose.yml create mode 100644 ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/setup_cleanup.sh create mode 100644 ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/setup_sriov_vvdn.sh diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/README.md b/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/README.md new file mode 100644 index 0000000000..c9cf235bb2 --- /dev/null +++ b/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/README.md @@ -0,0 +1,15 @@ + + + + + +
+ + + + + + OAI O-RAN 7.2 Front-haul Docker Compose +
+ +For instructions on OAI gNB Docker deployment with FH 7.2 RU, please refer to the [README](../sa_fhi_7.2_vvdn_gnb/README.md). diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/docker-compose.yml new file mode 100644 index 0000000000..5783964bbe --- /dev/null +++ b/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/docker-compose.yml @@ -0,0 +1,40 @@ +services: + oai-gnb: + image: oai-gnb-fhi72:latest + cap_add: + - SYS_ADMIN + - IPC_LOCK + - SYS_NICE + cap_drop: + - ALL + container_name: oai-gnb + environment: + TZ: Europe/Paris + USE_ADDITIONAL_OPTIONS: --sa --thread-pool 6,7,8,9 + devices: + - /dev/vfio:/dev/vfio/ + volumes: + - ../../conf_files/gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf:/opt/oai-gnb/etc/gnb.conf + - /dev/hugepages:/dev/hugepages + # Please change these values based on your system + cpuset: "0,1,2,3,4,5,6,7,8,9" + networks: + oai-net: + ipv4_address: 172.21.18.20 + healthcheck: + test: /bin/bash -c "pgrep nr-softmodem" + interval: 10s + timeout: 5s + retries: 5 +networks: + oai-net: + driver: macvlan + name: oai-net + ipam: + config: + - subnet: "172.21.16.0/22" + ip_range: "172.21.18.20/32" + gateway: "172.21.19.254" + driver_opts: + com.docker.network.bridge.name: "oai-net" + parent: ens7f0 diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/setup_cleanup.sh b/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/setup_cleanup.sh new file mode 100644 index 0000000000..9a06336acc --- /dev/null +++ b/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/setup_cleanup.sh @@ -0,0 +1,5 @@ +set -e +sudo cpupower idle-set -E > /dev/null +sudo sysctl kernel.sched_rt_runtime_us=950000 +sudo sysctl kernel.timer_migration=1 +exit 0 diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/setup_sriov_benetel.sh b/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/setup_sriov_benetel.sh new file mode 100644 index 0000000000..1bcf941ae0 --- /dev/null +++ b/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/setup_sriov_benetel.sh @@ -0,0 +1,22 @@ +set -e +sudo cpupower idle-set -D 0 > /dev/null +sudo sysctl kernel.sched_rt_runtime_us=-1 +sudo sysctl kernel.timer_migration=0 +sudo ethtool -G ens7f1 rx 8160 +sudo ethtool -G ens7f1 tx 8160 +sudo ifconfig ens7f1 mtu 9216 +sudo sh -c 'echo 0 > /sys/class/net/ens7f1/device/sriov_numvfs' +sudo sh -c 'echo 2 > /sys/class/net/ens7f1/device/sriov_numvfs' +sudo modprobe -r iavf +sudo modprobe iavf +# this next 2 lines is for C/U planes +sudo ip link set ens7f1 vf 0 mac 00:11:22:33:44:66 vlan 3 qos 0 spoofchk off mtu 9216 +sudo ip link set ens7f1 vf 1 mac 00:11:22:33:44:67 vlan 3 qos 0 spoofchk off mtu 9216 +sleep 1 +# These are the DPDK bindings for C/U-planes on vlan 3 +sudo /usr/local/bin/dpdk-devbind.py --unbind c3:11.0 +sudo /usr/local/bin/dpdk-devbind.py --unbind c3:11.1 +sudo modprobe vfio-pci +sudo /usr/local/bin/dpdk-devbind.py --bind vfio-pci c3:11.0 +sudo /usr/local/bin/dpdk-devbind.py --bind vfio-pci c3:11.1 +exit 0 diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/README.md b/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/README.md new file mode 100644 index 0000000000..2fcf39ad2c --- /dev/null +++ b/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/README.md @@ -0,0 +1,87 @@ + + + + + +
+ + + + + + OAI O-RAN 7.2 Front-haul Docker Compose +
+ +![Docker deploy 7.2](../../../doc/images/docker-deploy-oai-7-2.png) + +This docker-compose is designed to use `OAI-gNB` with a 7.2 compatible Radio Unit. Before using this docker compose you have to configure +the host machine as per the [ORAN_FHI7.2_Tutorial](../../../doc/ORAN_FHI7.2_Tutorial.md). The container image used by the docker compose file is tested only on `Ubuntu 22.04` and `RHEL 9.4` docker host. + +## Build Image (Optional) + +Refer to [OAI Docker/Podman Build and Usage Procedures](../../../docker/README.md) + +## Configure Networking + +### SR-IOV Virtual Functions (VFs) + +In docker-compose environment there is no automated method +to configure the VFs on the fly. The user will have to manually configure +C/U plane VFs before starting the container `OAI-gNB`. + +You can follow the step +[configure-network-interfaces-and-dpdk-vfs](../../../doc/ORAN_FHI7.2_Tutorial.md#configure-network-interfaces-and-dpdk-vfs). + +### Interface towards AMF (N2) + +For `N2` interface we are using `macvlan` driver of docker. + +You can use the `bridge` driver, in situation + +- When the core network is running on the same machine +- or different machine but you have configured +needed `ip route` and forwarding to access the core network from RAN host. + +To configure docker `macvlan` network +you need to choose `ipam.config` and `driver_opts.parent` are per your environment + +``` + oai-net: + driver: macvlan + name: oai-net + ipam: + config: + - subnet: "172.21.16.0/22" + ip_range: "172.21.18.20/32" + gateway: "172.21.19.254" + driver_opts: + com.docker.network.bridge.name: "oai-net" + parent: enp193s0f0 +``` + +To configure `bridge` network you need to choose `ipam.config.subnet` as per your environment. + +``` + oai-net: + driver: bridge + name: oai-net + ipam: + config: + - subnet: 192.168.72.128/26 + driver_opts: + com.docker.network.bridge.name: "oai-net" +``` + +## Deploy OAI-gNB Container + +The [configuration file](../../conf_files/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf) used by docker compose is configured for VVDN RU. + +```bash +docker-compose up -d +``` + +To check the logs + +```bash +docker logs oai-gnb -f +``` diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/docker-compose.yml new file mode 100644 index 0000000000..2798a8e8fc --- /dev/null +++ b/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/docker-compose.yml @@ -0,0 +1,40 @@ +services: + oai-gnb: + image: oai-gnb-fhi72:latest + cap_add: + - SYS_ADMIN + - IPC_LOCK + - SYS_NICE + cap_drop: + - ALL + container_name: oai-gnb + environment: + TZ: Europe/Paris + USE_ADDITIONAL_OPTIONS: --sa --thread-pool 6,7,8,9 + devices: + - /dev/vfio:/dev/vfio/ + volumes: + - ../../conf_files/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf:/opt/oai-gnb/etc/gnb.conf + - /dev/hugepages:/dev/hugepages + # Please change these values based on your system + cpuset: "0,1,2,3,4,5,6,7,8,9" + networks: + oai-net: + ipv4_address: 172.21.18.20 + healthcheck: + test: /bin/bash -c "pgrep nr-softmodem" + interval: 10s + timeout: 5s + retries: 5 +networks: + oai-net: + driver: macvlan + name: oai-net + ipam: + config: + - subnet: "172.21.16.0/22" + ip_range: "172.21.18.20/32" + gateway: "172.21.19.254" + driver_opts: + com.docker.network.bridge.name: "oai-net" + parent: ens7f0 diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/setup_cleanup.sh b/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/setup_cleanup.sh new file mode 100644 index 0000000000..9a06336acc --- /dev/null +++ b/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/setup_cleanup.sh @@ -0,0 +1,5 @@ +set -e +sudo cpupower idle-set -E > /dev/null +sudo sysctl kernel.sched_rt_runtime_us=950000 +sudo sysctl kernel.timer_migration=1 +exit 0 diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/setup_sriov_vvdn.sh b/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/setup_sriov_vvdn.sh new file mode 100644 index 0000000000..2b7a512f83 --- /dev/null +++ b/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/setup_sriov_vvdn.sh @@ -0,0 +1,21 @@ +set -e +sudo cpupower idle-set -D 0 > /dev/null +sudo sysctl kernel.sched_rt_runtime_us=-1 +sudo sysctl kernel.timer_migration=0 +sudo ethtool -G ens7f1 rx 8160 +sudo ethtool -G ens7f1 tx 8160 +sudo sh -c 'echo 0 > /sys/class/net/ens7f1/device/sriov_numvfs' +sudo sh -c 'echo 2 > /sys/class/net/ens7f1/device/sriov_numvfs' +sudo modprobe -r iavf +sudo modprobe iavf +# this next 2 lines is for C/U planes +sudo ip link set ens7f1 vf 0 mac 76:76:64:6e:00:01 vlan 4 spoofchk off mtu 9216 +sudo ip link set ens7f1 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 +sudo /usr/local/bin/dpdk-devbind.py --unbind c3:11.0 +sudo /usr/local/bin/dpdk-devbind.py --unbind c3:11.1 +sudo modprobe vfio-pci +sudo /usr/local/bin/dpdk-devbind.py --bind vfio-pci c3:11.0 +sudo /usr/local/bin/dpdk-devbind.py --bind vfio-pci c3:11.1 +exit 0 From 9c602a7790417da85af8defd9f7b170496ddd7d5 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Fri, 2 Aug 2024 14:30:07 +0200 Subject: [PATCH 3/8] CI: Remove unused directory for FHI 7.2 deployments --- .../yaml_files/sa_fhi_7.2_gnb/README.md | 87 ------------------- .../sa_fhi_7.2_gnb/docker-compose.yml | 34 -------- 2 files changed, 121 deletions(-) delete mode 100644 ci-scripts/yaml_files/sa_fhi_7.2_gnb/README.md delete mode 100644 ci-scripts/yaml_files/sa_fhi_7.2_gnb/docker-compose.yml diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_gnb/README.md b/ci-scripts/yaml_files/sa_fhi_7.2_gnb/README.md deleted file mode 100644 index 1acbe7fb86..0000000000 --- a/ci-scripts/yaml_files/sa_fhi_7.2_gnb/README.md +++ /dev/null @@ -1,87 +0,0 @@ - - - - - -
- - - - - - OAI O-RAN 7.2 Front-haul Docker Compose -
- -![Docker deploy 7.2](../../../doc/images/docker-deploy-oai-7-2.png) - -This docker-compose is designed to use `OAI-gNB` with a 7.2 compatible Radio Unit. Before using this docker compose you have to configure -the host machine as per the [ORAN_FHI7.2_Tutorial](../../../doc/ORAN_FHI7.2_Tutorial.md). The container image used by the docker compose file is tested only on `Ubuntu 22.04` docker host. - -## Build Image (Optional) - -Refer to [OAI Docker/Podman Build and Usage Procedures](../../../docker/README.md) - -## Configure Networking - -### SR-IOV Virtual Functions (VFs) - -In docker-compose environment there is no automated method -to configure the VFs on the fly. The user will have to manually configure -C/U plane VFs before starting the container `OAI-gNB`. - -You can follow the step -[configure-network-interfaces-and-dpdk-vfs](../../../doc/ORAN_FHI7.2_Tutorial.md#configure-network-interfaces-and-dpdk-vfs). - -### Interface towards AMF (N2) - -For `N2` interface we are using `macvlan` driver of docker. - -You can use the `bridge` driver, in situation - -- When the core network is running on the same machine -- or different machine but you have configured -needed `ip route` and forwarding to access the core network from RAN host. - -To configure docker `macvlan` network -you need to choose `ipam.config` and `driver_opts.parent` are per your environment - -``` - oai-net: - driver: macvlan - name: oai-net - ipam: - config: - - subnet: "172.21.16.0/22" - ip_range: "172.21.18.20/32" - gateway: "172.21.19.254" - driver_opts: - com.docker.network.bridge.name: "oai-net" - parent: enp193s0f0 -``` - -To configure `bridge` network you need to choose `ipam.config.subnet` as per your environment. - -``` - oai-net: - driver: bridge - name: oai-net - ipam: - config: - - subnet: 192.168.72.128/26 - driver_opts: - com.docker.network.bridge.name: "oai-net" -``` - -## Deploy OAI-gNB Container - -The [configuration file](../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-benetel650.conf) used by docker compose is configured for Benetel 650 RU (RAN650-1v1.0.4-dda1bf5). - -```bash -docker-compose up -d -``` - -To check the logs - -```bash -docker logs oai-gnb -f -``` diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_fhi_7.2_gnb/docker-compose.yml deleted file mode 100644 index e3e93b3b74..0000000000 --- a/ci-scripts/yaml_files/sa_fhi_7.2_gnb/docker-compose.yml +++ /dev/null @@ -1,34 +0,0 @@ -services: - oai-gnb: - image: oai-gnb-fhi72:latest - privileged: true - container_name: oai-gnb - environment: - TZ: Europe/Paris - USE_ADDITIONAL_OPTIONS: --sa --thread-pool 13,14,15,16,17,18 - devices: - - /dev/vfio:/dev/vfio/ - volumes: - - ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-benetel650.conf:/opt/oai-gnb/etc/gnb.conf - - /dev/hugepages:/dev/hugepages - cpuset: "0,1,2,8,9,10,13,14,15,16,17,18" - networks: - oai-net: - ipv4_address: 172.21.18.20 - healthcheck: - test: /bin/bash -c "pgrep nr-softmodem" - interval: 10s - timeout: 5s - retries: 5 -networks: - oai-net: - driver: macvlan - name: oai-net - ipam: - config: - - subnet: "172.21.16.0/22" - ip_range: "172.21.18.20/32" - gateway: "172.21.19.254" - driver_opts: - com.docker.network.bridge.name: "oai-net" - parent: enp193s0f0 From 3cdb0d795e19fb614d2130052ef07e388f82311f Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Tue, 30 Jul 2024 15:06:40 +0200 Subject: [PATCH 4/8] CI: Add path and namespace configuration for OC CNs - Modify CN deployment and termination functions to include namespace and path parameters. - Update `Module_UE` class with new attributes for namespace and CN path. - Integrate `cnID` for OC CN deployment and termination in `epc.py`. - Extract `cn_id` from XML configurations for CN operations. - Update XML files to include `cn_id` tag for 5G Core initialization and termination. (Used in OAIUE and AW2S pipeline, for OC CN deployment. This change will not affect other CN deployments.) --- ci-scripts/ci_infra.yaml | 2 ++ ci-scripts/cls_cluster.py | 15 ++++++--------- ci-scripts/cls_module.py | 8 ++++++++ ci-scripts/epc.py | 8 ++++++-- ci-scripts/main.py | 2 ++ ci-scripts/xml_files/sa_cn5g_closure.xml | 1 + ci-scripts/xml_files/sa_cn5g_start.xml | 1 + 7 files changed, 26 insertions(+), 11 deletions(-) diff --git a/ci-scripts/ci_infra.yaml b/ci-scripts/ci_infra.yaml index 8cbb5936e2..d562593e1a 100644 --- a/ci-scripts/ci_infra.yaml +++ b/ci-scripts/ci_infra.yaml @@ -58,6 +58,8 @@ adb_ue_2: oc-cn5g: Host: avra + Namespace: "oaicicd-core-for-ci-ran" + CNPath: "/opt/oai-cn5g-fed-develop-2024-april-00102" NetworkScript: echo "inet 172.21.6.102" RunIperf3Server: False diff --git a/ci-scripts/cls_cluster.py b/ci-scripts/cls_cluster.py index 80d6d95daa..3f11fad7fb 100644 --- a/ci-scripts/cls_cluster.py +++ b/ci-scripts/cls_cluster.py @@ -43,7 +43,6 @@ NAMESPACE = "oaicicd-ran" OCUrl = "https://api.oai.cs.eurecom.fr:6443" OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/" CI_OC_RAN_NAMESPACE = "oaicicd-ran" -CI_OC_CORE_NAMESPACE = "oaicicd-core-for-ci-ran" CN_IMAGES = ["mysql", "oai-nrf", "oai-amf", "oai-smf", "oai-upf", "oai-ausf", "oai-udm", "oai-udr", "oai-traffic-server"] CN_CONTAINERS = ["", "-c nrf", "-c amf", "-c smf", "-c upf", "-c ausf", "-c udm", "-c udr", ""] @@ -68,10 +67,9 @@ def OC_login(cmd, ocUserName, ocPassword, ocProjectName): def OC_logout(cmd): cmd.run(f'oc logout') -def OC_deploy_CN(cmd, ocUserName, ocPassword): - logging.debug('OC OAI CN5G: Deploying OAI CN5G on Openshift Cluster') - path = "/opt/oai-cn5g-fed-develop-2024-april-00102" - succeeded = OC_login(cmd, ocUserName, ocPassword, CI_OC_CORE_NAMESPACE) +def OC_deploy_CN(cmd, ocUserName, ocPassword, ocNamespace, path): + logging.debug(f'OC OAI CN5G: Deploying OAI CN5G on Openshift Cluster: {ocNamespace}') + succeeded = OC_login(cmd, ocUserName, ocPassword, ocNamespace) if not succeeded: return False, CONST.OC_LOGIN_FAIL cmd.run('helm uninstall oai5gcn --wait --timeout 60s') @@ -84,10 +82,9 @@ def OC_deploy_CN(cmd, ocUserName, ocPassword): OC_logout(cmd) return True, report -def OC_undeploy_CN(cmd, ocUserName, ocPassword): - logging.debug('OC OAI CN5G: Terminating CN on Openshift Cluster') - path = "/opt/oai-cn5g-fed-develop-2024-april-00102" - succeeded = OC_login(cmd, ocUserName, ocPassword, CI_OC_CORE_NAMESPACE) +def OC_undeploy_CN(cmd, ocUserName, ocPassword, ocNamespace, path): + logging.debug(f'OC OAI CN5G: Terminating CN on Openshift Cluster: {ocNamespace}') + succeeded = OC_login(cmd, ocUserName, ocPassword, ocNamespace) if not succeeded: return False, CONST.OC_LOGIN_FAIL cmd.run(f'rm -Rf {path}/logs') diff --git a/ci-scripts/cls_module.py b/ci-scripts/cls_module.py index d0cfba0299..ef758a2933 100644 --- a/ci-scripts/cls_module.py +++ b/ci-scripts/cls_module.py @@ -65,6 +65,8 @@ class Module_UE: self.logStore = m.get('LogStore') self.cmd_prefix = m.get('CmdPrefix') self.runIperf3Server = m.get('RunIperf3Server', True) + self.namespace = m.get('Namespace') + self.cnPath = m.get('CNPath') logging.info(f'initialized {self.module_name}@{self.host} from {filename}') def __str__(self): @@ -190,6 +192,12 @@ class Module_UE: def getHost(self): return self.host + def getNamespace(self): + return self.namespace + + def getCNPath(self): + return self.cnPath + def getRunIperf3Server(self): return self.runIperf3Server diff --git a/ci-scripts/epc.py b/ci-scripts/epc.py index fb5aa8cde6..7c0eb51853 100644 --- a/ci-scripts/epc.py +++ b/ci-scripts/epc.py @@ -48,6 +48,7 @@ import helpreadme as HELP import constants as CONST import cls_cluster as OC import cls_cmd +import cls_module #----------------------------------------------------------- # Class Declaration #----------------------------------------------------------- @@ -75,6 +76,7 @@ class EPCManagement(): self.OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/" self.OCUserName = '' self.OCPassword = '' + self.cnID = '' self.imageToPull = '' self.eNBSourceCodePath = '' @@ -298,7 +300,8 @@ class EPCManagement(): html_cell += '(' + res4.group('date') + ')' html_cell += '\n' elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE): - succeeded, report = OC.OC_deploy_CN(mySSH, self.OCUserName, self.OCPassword) + cn = cls_module.Module_UE(self.cnID) + succeeded, report = OC.OC_deploy_CN(mySSH, self.OCUserName, self.OCPassword, cn.getNamespace(), cn.getCNPath()) if not succeeded: HTML.CreateHtmlTestRow('N/A', 'KO', report) HTML.CreateHtmlTabFooter(False) @@ -575,7 +578,8 @@ class EPCManagement(): mySSH.copyin(f'{self.SourceCodePath}/logs/test_logs_CN.zip','test_logs_CN.zip') logging.debug(message) elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE): - succeeded, report = OC.OC_undeploy_CN(mySSH, self.OCUserName, self.OCPassword) + cn = cls_module.Module_UE(self.cnID) + succeeded, report = OC.OC_undeploy_CN(mySSH, self.OCUserName, self.OCPassword, cn.getNamespace(), cn.getCNPath()) if not succeeded: HTML.CreateHtmlTestRow('N/A', 'KO', report) HTML.CreateHtmlTabFooter(False) diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 03c99d9741..14466a1594 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -329,11 +329,13 @@ def GetParametersFromXML(action): string_field = test.findtext('args') if (string_field is not None): EPC.cfgDeploy = string_field + EPC.cnID = test.findtext('cn_id') elif action == 'Terminate_5GCN': string_field = test.findtext('args') if (string_field is not None): EPC.cfgUnDeploy = string_field + EPC.cnID = test.findtext('cn_id') elif action == 'Deploy_Object' or action == 'Undeploy_Object': eNB_instance=test.findtext('eNB_instance') diff --git a/ci-scripts/xml_files/sa_cn5g_closure.xml b/ci-scripts/xml_files/sa_cn5g_closure.xml index 7174da3b7b..727e208d4c 100644 --- a/ci-scripts/xml_files/sa_cn5g_closure.xml +++ b/ci-scripts/xml_files/sa_cn5g_closure.xml @@ -32,6 +32,7 @@ Terminate_5GCN Terminate 5G Core + oc-cn5g diff --git a/ci-scripts/xml_files/sa_cn5g_start.xml b/ci-scripts/xml_files/sa_cn5g_start.xml index 6499d60700..3de615330a 100644 --- a/ci-scripts/xml_files/sa_cn5g_start.xml +++ b/ci-scripts/xml_files/sa_cn5g_start.xml @@ -33,5 +33,6 @@ Initialize_5GCN Initialize 5G Core + oc-cn5g From ca2d9ec2a1ef9482e12a183953f5988dedd4ef18 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Fri, 2 Aug 2024 15:29:49 +0200 Subject: [PATCH 5/8] CI: Update ci_infra for FHI7.2 pipeline --- ci-scripts/ci_infra.yaml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/ci-scripts/ci_infra.yaml b/ci-scripts/ci_infra.yaml index d562593e1a..8ffb1c2083 100644 --- a/ci-scripts/ci_infra.yaml +++ b/ci-scripts/ci_infra.yaml @@ -18,6 +18,14 @@ up2: IF: wwan0 MTU: 1500 +up2-fhi72: + Host: up2 + AttachScript: sudo /opt/mbim-fhi72/start_quectel_mbim.sh + DetachScript: sudo /opt/mbim-fhi72/stop_quectel_mbim.sh + NetworkScript: ip a show dev wwan0 + IF: wwan0 + MTU: 1500 + sphex_quectel: Host: sphex InitScript: sudo stdbuf -oL /home/oaicicd/quectel-CM/quectel-CM -4 -s oai.ipv4 &> /tmp/quecel-cm.log & @@ -63,6 +71,13 @@ oc-cn5g: NetworkScript: echo "inet 172.21.6.102" RunIperf3Server: False +oc-cn5g-20897: + Host: cacofonix + Namespace: "oaicicd-core-for-fhi72" + CNPath: "/opt/oai-cn5g-fed-develop-2024-april-20897" + NetworkScript: echo "inet 172.21.6.105" + RunIperf3Server: False + matix-cn5g: Host: matix NetworkScript: docker exec prod-trf-gen ip a show dev eth0 @@ -101,6 +116,10 @@ amarisoft_ue: Host: amariue InitScript: /root/lteue-linux-2023-10-27/ue/lteue /root/oaicicd/ran_sa_aw2s_asue_2x2/aw2s-multi-00102-2x2.cfg & TermScript: /root/2023-10-27/libs/ws.js -t 10 127.0.0.1:9002 '{"message":"quit"}' || killall -KILL lteue-avx2 +amarisoft_ue_fhi72: + Host: amariue + InitScript: /root/lteue-linux-2023-10-27/ue/lteue /root/oaicicd/ran_sa_fhi72_asue_2x2_benetel550/fhi72-multi-20897-2x2.cfg & + TermScript: /root/2023-10-27/libs/ws.js -t 10 127.0.0.1:9002 '{"message":"quit"}' || killall -KILL lteue-avx2 amarisoft_ue_1: Host: amariue AttachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":1}' From 9a4d1e920d16a59d1aea3e853b3352d30a19465d Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Mon, 5 Aug 2024 14:15:29 +0200 Subject: [PATCH 6/8] CI: Add XML files for FHI72 pipeline --- .../xml_files/container_sa_fhi72_vvdn_up2.xml | 143 ++++++++++++++++++ .../container_sa_fhi72_vvdn_up2_cleanup.xml | 63 ++++++++ .../xml_files/sa_cn5g_20897_closure.xml | 38 +++++ ci-scripts/xml_files/sa_cn5g_20897_start.xml | 38 +++++ 4 files changed, 282 insertions(+) create mode 100644 ci-scripts/xml_files/container_sa_fhi72_vvdn_up2.xml create mode 100644 ci-scripts/xml_files/container_sa_fhi72_vvdn_up2_cleanup.xml create mode 100644 ci-scripts/xml_files/sa_cn5g_20897_closure.xml create mode 100644 ci-scripts/xml_files/sa_cn5g_20897_start.xml diff --git a/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2.xml b/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2.xml new file mode 100644 index 0000000000..bac2ec38a0 --- /dev/null +++ b/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2.xml @@ -0,0 +1,143 @@ + + + test-5g-fhi72-vvdn + 100 MHz TDD SA VVDN + tasks + 1 + + 200000 + 110000 + 120000 + 102000 + 102001 + 100100 + 100010 + 100020 + 100030 + 100040 + 103000 + 100002 + 130000 + + + + + Custom_Command + Setup sriov and network interfaces VVDN + cacofonix + /opt/FHI7.2/setup_sriov_vvdn.sh + yes + + + + Pull_Cluster_Image + Pull Images from Cluster + oaicicd-ran + oai-gnb-fhi72 + + + + Deploy_Object + Deploy gNB (TDD/Band78/100MHz/VVDN) in a container + ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb + 0 + 0 + + + + Attach_UE + Attach UE + up2-fhi72 + + + + Ping + Ping: 100 pings in 10 sec + up2-fhi72 + -c 100 -i 0.1 172.21.6.104 + 1 + 15 + + + + Iperf + iperf (DL/300Mbps/UDP)(30 sec)(multi-ue profile) + -u -b 300M -t 30 -R + up2-fhi72 + 20 + 80 + balanced + oc-cn5g-20897 + + + + Iperf + iperf (DL/TCP)(30 sec)(multi-ue profile) + -t 30 -R + up2-fhi72 + 40 + oc-cn5g-20897 + + + + Iperf + iperf (UL/70Mbps/UDP)(30 sec)(multi-ue profile) + -u -b 70M -t 30 + up2-fhi72 + 20 + 80 + balanced + oc-cn5g-20897 + + + + Iperf + iperf (UL/TCP)(30 sec)(multi-ue profile) + -t 30 + up2-fhi72 + 40 + oc-cn5g-20897 + + + + Detach_UE + Detach UE + up2-fhi72 + + + + IdleSleep + Sleep + 5 + + + + Undeploy_Object + Undeploy gNB + ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb + 0 + 0 + + + diff --git a/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2_cleanup.xml b/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2_cleanup.xml new file mode 100644 index 0000000000..1a9aecfc8a --- /dev/null +++ b/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2_cleanup.xml @@ -0,0 +1,63 @@ + + + cleanup-fhi72-vvdn + Cleanup VVDN + trash + + 555555 + 666666 + 777777 + 888888 + + + + + Detach_UE + Detach UE + up2-fhi72 + + + + Undeploy_Object + Undeploy gNB + ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb + 0 + 0 + + + + Clean_Test_Server_Images + Clean Test Images on Test Server + 0 + + + + Custom_Command + Set CPU to idle state, set kernel parameters to default values + cacofonix + /opt/FHI7.2/setup_cleanup.sh + yes + + + diff --git a/ci-scripts/xml_files/sa_cn5g_20897_closure.xml b/ci-scripts/xml_files/sa_cn5g_20897_closure.xml new file mode 100644 index 0000000000..685775c1a4 --- /dev/null +++ b/ci-scripts/xml_files/sa_cn5g_20897_closure.xml @@ -0,0 +1,38 @@ + + + cn5g-closure + CN5G-Closure + log-out + + 060000 + + + + + Terminate_5GCN + Terminate 5G Core + oc-cn5g-20897 + + + diff --git a/ci-scripts/xml_files/sa_cn5g_20897_start.xml b/ci-scripts/xml_files/sa_cn5g_20897_start.xml new file mode 100644 index 0000000000..2d60baedc1 --- /dev/null +++ b/ci-scripts/xml_files/sa_cn5g_20897_start.xml @@ -0,0 +1,38 @@ + + + cn5g-start-tab + CN5G-Start + log-in + + 000100 + + + + + + Initialize_5GCN + Initialize 5G Core + oc-cn5g-20897 + + From a57098ec02e3b8047178c84225725ca691549764 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Thu, 18 Jul 2024 09:05:13 +0200 Subject: [PATCH 7/8] CI: Add FHI72 pipeline to CI doc --- doc/TESTBenches.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/TESTBenches.md b/doc/TESTBenches.md index 17c869d55e..00537b8469 100644 --- a/doc/TESTBenches.md +++ b/doc/TESTBenches.md @@ -199,6 +199,12 @@ information on how the images are built. ~5G-NR - matix + N310 (gNB), up2 + COTS UE (Quectel RM520N), OAI 5GC deployed in docker on matix - NR performance tests: 2x2 configuration, 60 MHz and 100 MHz bandwidth +- [RAN-SA-FHI72-CN5G](https://jenkins-oai.eurecom.fr/view/RAN/job/RAN-SA-FHI72-CN5G/) + ~5G-NR + - cacofonix + FHI72 + Benetel550 (gNB), AmariUE, OAI CN5G + - cacofonix + FHI72 + VVDN (gNB), up2 (Quectel RM520N UE), OAI CN5G + - OpenShift cluster for CN deployment + - FHI 7.2 testing with 100 MHz bandwidth, 2 layers in DL ### RAN-CI-NSA-Trigger From d8696f703c947cece876a6d11b3ca708cbbef3b2 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Thu, 18 Jul 2024 16:32:26 +0200 Subject: [PATCH 8/8] CI: Add FHI72 pipeline to the parent pipeline --- ci-scripts/Jenkinsfile-GitLab-Container | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/ci-scripts/Jenkinsfile-GitLab-Container b/ci-scripts/Jenkinsfile-GitLab-Container index b1bf895111..f5b83ec071 100644 --- a/ci-scripts/Jenkinsfile-GitLab-Container +++ b/ci-scripts/Jenkinsfile-GitLab-Container @@ -585,6 +585,29 @@ pipeline { } } } + stage ("SA-FHI72-CN5G") { + when { expression {do5Gtest} } + steps { + script { + triggerSlaveJob ('RAN-SA-FHI72-CN5G', 'SA-FHI72-CN5G') + } + } + post { + always { + script { + // Using a unique variable name for each test stage to avoid overwriting on a global variable + // due to parallel-time concurrency + saFHI72Status = finalizeSlaveJob('RAN-SA-FHI72-CN5G') + } + } + failure { + script { + currentBuild.result = 'FAILURE' + failingStages += saFHI72Status + } + } + } + } stage ("SA-OAIUE-CN5G") { when { expression {do5Gtest} } steps {