From e6f0f80c9fcb32c33ade0a9bef535bc5fac96b1a Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Wed, 29 May 2024 10:08:33 +0200 Subject: [PATCH 1/5] Over-estimate short and long BSR 38.321 6.1.3.1 says: "The size of the RLC headers and MAC subheaders are not considered in the buffer size computation" [for BSR]. However, prior to this commit, we take the size signaled of the BSR and schedule the UE with that amount of data, making it impossible for the UE to transmit all its data at once (because it is the size signaled + headers). In this commit, over-estimate the buffer status size. As we cannot know the exact number and size of headers, we simply use "BSR size + n", as done in function overestim_bsr_index(). --- .../LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c | 101 +++++++++++------- 1 file changed, 63 insertions(+), 38 deletions(-) diff --git a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c index fec34b753f..6d76a66877 100644 --- a/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c +++ b/openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c @@ -111,6 +111,65 @@ static int compute_ph_factor(int mu, int tbs_bits, int rb, int n_layers, int n_s return ((int)roundf(delta_tf + bw_factor)); } +/* \brief over-estimate the BSR index, given real_index. + * + * BSR does not account for headers, so we need to estimate. See 38.321 + * 6.1.3.1: "The size of the RLC headers and MAC subheaders are not considered + * in the buffer size computation." */ +static int overestim_bsr_index(int real_index) +{ + /* if UE reports BSR 0, it means "no data"; otherwise, overestimate to + * account for headers */ + const int add_overestim = 1; + return real_index > 0 ? real_index + add_overestim : real_index; +} + +static int estimate_ul_buffer_short_bsr(const NR_BSR_SHORT *bsr) +{ + /* NOTE: the short BSR might be for different LCGID than 0, but we do not + * differentiate them */ + int rep_idx = bsr->Buffer_size; + int estim_idx = overestim_bsr_index(rep_idx); + int max = sizeofArray(NR_SHORT_BSR_TABLE); + int idx = min(estim_idx, max); + int estim_size = NR_SHORT_BSR_TABLE[idx]; + LOG_D(NR_MAC, "short BSR LCGID %d index %d estim index %d size %d\n", bsr->LcgID, rep_idx, estim_idx, estim_size); + return estim_size; +} + +static int estimate_ul_buffer_long_bsr(const NR_BSR_LONG *bsr) +{ + LOG_D(NR_MAC, + "LONG BSR, LCG ID(7-0) %d/%d/%d/%d/%d/%d/%d/%d\n", + bsr->LcgID7, + bsr->LcgID6, + bsr->LcgID5, + bsr->LcgID4, + bsr->LcgID3, + bsr->LcgID2, + bsr->LcgID1, + bsr->LcgID0); + bool bsr_active[8] = {bsr->LcgID0 != 0, bsr->LcgID1 != 0, bsr->LcgID2 != 0, bsr->LcgID3 != 0, bsr->LcgID4 != 0, bsr->LcgID5 != 0, bsr->LcgID6 != 0, bsr->LcgID7 != 0}; + + int estim_size = 0; + int max = sizeofArray(NR_LONG_BSR_TABLE); + uint8_t *payload = ((uint8_t*) bsr) + 1; + int m = 0; + const int total_lcgids = 8; /* see 38.321 6.1.3.1 */ + for (int n = 0; n < total_lcgids; n++) { + if (!bsr_active[n]) + continue; + int rep_idx = payload[m]; + int estim_idx = overestim_bsr_index(rep_idx); + int idx = min(estim_idx, max); + estim_size += NR_LONG_BSR_TABLE[idx]; + + LOG_D(NR_MAC, "LONG BSR LCGID/m %d/%d Index %d estim index %d size %d", n, m, rep_idx, estim_idx, estim_size); + m++; + } + return estim_size; +} + // For both UL-SCH except: // - UL-SCH: fixed-size MAC CE(known by LCID) // - UL-SCH: padding @@ -166,7 +225,6 @@ static int nr_process_mac_pdu(instance_t module_idP, LOG_D(NR_MAC, "In %s: received UL-SCH sub-PDU with LCID 0x%x in %d.%d (remaining PDU length %d)\n", __func__, rx_lcid, frameP, slot, pdu_len); unsigned char *ce_ptr; - int n_Lcg = 0; switch(rx_lcid){ // MAC CE @@ -192,17 +250,8 @@ static int nr_process_mac_pdu(instance_t module_idP, } /* Extract short BSR value */ ce_ptr = &pduP[mac_subheader_len]; - NR_BSR_SHORT *bsr_s = (NR_BSR_SHORT *) ce_ptr; - sched_ctrl->estimated_ul_buffer = 0; - sched_ctrl->estimated_ul_buffer = NR_SHORT_BSR_TABLE[bsr_s->Buffer_size]; - LOG_D(NR_MAC, - "SHORT BSR at %4d.%2d, LCG ID %d, BS Index %d, BS value < %d, est buf %d\n", - frameP, - slot, - bsr_s->LcgID, - bsr_s->Buffer_size, - NR_SHORT_BSR_TABLE[bsr_s->Buffer_size], - sched_ctrl->estimated_ul_buffer); + sched_ctrl->estimated_ul_buffer = estimate_ul_buffer_short_bsr((NR_BSR_SHORT *)ce_ptr); + LOG_D(NR_MAC, "SHORT BSR at %4d.%2d, est buf %d\n", frameP, slot, sched_ctrl->estimated_ul_buffer); break; case UL_SCH_LCID_L_BSR: case UL_SCH_LCID_L_TRUNCATED_BSR: @@ -219,32 +268,8 @@ static int nr_process_mac_pdu(instance_t module_idP, } /* Extract long BSR value */ ce_ptr = &pduP[mac_subheader_len]; - NR_BSR_LONG *bsr_l = (NR_BSR_LONG *) ce_ptr; - sched_ctrl->estimated_ul_buffer = 0; - - n_Lcg = bsr_l->LcgID7 + bsr_l->LcgID6 + bsr_l->LcgID5 + bsr_l->LcgID4 + - bsr_l->LcgID3 + bsr_l->LcgID2 + bsr_l->LcgID1 + bsr_l->LcgID0; - - LOG_D(NR_MAC, "LONG BSR, LCG ID(7-0) %d/%d/%d/%d/%d/%d/%d/%d\n", - bsr_l->LcgID7, bsr_l->LcgID6, bsr_l->LcgID5, bsr_l->LcgID4, - bsr_l->LcgID3, bsr_l->LcgID2, bsr_l->LcgID1, bsr_l->LcgID0); - - for (int n = 0; n < n_Lcg; n++){ - LOG_D(NR_MAC, "LONG BSR, %d/%d (n/n_Lcg), BS Index %d, BS value < %d", - n, n_Lcg, pduP[mac_subheader_len + 1 + n], - NR_LONG_BSR_TABLE[pduP[mac_subheader_len + 1 + n]]); - sched_ctrl->estimated_ul_buffer += NR_LONG_BSR_TABLE[pduP[mac_subheader_len + 1 + n]]; - LOG_D(NR_MAC, - "LONG BSR at %4d.%2d, %d/%d (n/n_Lcg), BS Index %d, BS value < %d, total %d\n", - frameP, - slot, - n, - n_Lcg, - pduP[mac_subheader_len + 1 + n], - NR_LONG_BSR_TABLE[pduP[mac_subheader_len + 1 + n]], - sched_ctrl->estimated_ul_buffer); - } - + sched_ctrl->estimated_ul_buffer = estimate_ul_buffer_long_bsr((NR_BSR_LONG *)ce_ptr); + LOG_D(NR_MAC, "LONG BSR at %4d.%2d, estim buf %d\n", frameP, slot, sched_ctrl->estimated_ul_buffer); break; case UL_SCH_LCID_C_RNTI: From 9cf0640432ff27f1dd8213301c9ca296d0daad2f Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 30 May 2024 08:09:05 +0200 Subject: [PATCH 2/5] SA B200 gNB CI test: use host-mode --- .../gnb.sa.band78.51prb.usrpb200.conf | 4 ++-- .../xml_files/container_sa_b200_quectel.xml | 4 ++-- .../yaml_files/sa_b200_gnb/docker-compose.yml | 17 +++++------------ 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/ci-scripts/conf_files/gnb.sa.band78.51prb.usrpb200.conf b/ci-scripts/conf_files/gnb.sa.band78.51prb.usrpb200.conf index c39f38d55e..a53fefea34 100644 --- a/ci-scripts/conf_files/gnb.sa.band78.51prb.usrpb200.conf +++ b/ci-scripts/conf_files/gnb.sa.band78.51prb.usrpb200.conf @@ -161,8 +161,8 @@ gNBs = NETWORK_INTERFACES : { - GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.68.194"; - GNB_IPV4_ADDRESS_FOR_NGU = "192.168.68.194"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.109"; + GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.109"; GNB_PORT_FOR_S1U = 2152; # Spec 2152 }; diff --git a/ci-scripts/xml_files/container_sa_b200_quectel.xml b/ci-scripts/xml_files/container_sa_b200_quectel.xml index 3eff9cddfd..db4c9d1d67 100644 --- a/ci-scripts/xml_files/container_sa_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_b200_quectel.xml @@ -185,14 +185,14 @@ Custom_Command Trigger Reestablishment ofqot - echo ci force_reestab | nc -N 192.168.68.194 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' + echo ci force_reestab | nc -N 127.0.0.1 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' yes Custom_Command Verify Reestablishment ofqot - echo ci get_reestab_count | nc -N 192.168.68.194 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' + echo ci get_reestab_count | nc -N 127.0.0.1 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' yes diff --git a/ci-scripts/yaml_files/sa_b200_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_b200_gnb/docker-compose.yml index a859159e59..e440cec52d 100644 --- a/ci-scripts/yaml_files/sa_b200_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/sa_b200_gnb/docker-compose.yml @@ -11,9 +11,11 @@ services: volumes: - ../../conf_files/gnb.sa.band78.51prb.usrpb200.conf:/opt/oai-gnb/etc/gnb.conf - /dev:/dev - networks: - public_net: - ipv4_address: 192.168.68.194 + # for performance reasons, we use host mode: in bridge mode, we have + # unacceptable DL TCP performance. However, the whole point of + # containerization is to not be in host mode, so update this to macvlan + # later. + network_mode: "host" #entrypoint: /bin/bash -c "sleep infinity" healthcheck: # pgrep does NOT work @@ -21,12 +23,3 @@ services: interval: 10s timeout: 5s retries: 5 - -networks: - public_net: - name: sa-b200-gnb-net - ipam: - config: - - subnet: 192.168.68.192/26 - driver_opts: - com.docker.network.bridge.name: "sa-gnb-net" From 0ccd4ad000ed895f30156f18810de2abdecd1180 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 30 May 2024 08:47:33 +0200 Subject: [PATCH 3/5] SA SC-FDMA B200 gNB CI test: use host-mode --- .../gnb.sa.band78.106prb.usrpb200.sc-fdma.conf | 4 ++-- .../xml_files/container_sa_sc_b200_quectel.xml | 4 ++-- .../sa_sc_b200_gnb/docker-compose.yml | 17 +++++------------ 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/ci-scripts/conf_files/gnb.sa.band78.106prb.usrpb200.sc-fdma.conf b/ci-scripts/conf_files/gnb.sa.band78.106prb.usrpb200.sc-fdma.conf index 82fb9f90e1..6a82a57dcd 100644 --- a/ci-scripts/conf_files/gnb.sa.band78.106prb.usrpb200.sc-fdma.conf +++ b/ci-scripts/conf_files/gnb.sa.band78.106prb.usrpb200.sc-fdma.conf @@ -161,8 +161,8 @@ gNBs = NETWORK_INTERFACES : { - GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.68.194"; - GNB_IPV4_ADDRESS_FOR_NGU = "192.168.68.194"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.109"; + GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.109"; GNB_PORT_FOR_S1U = 2152; # Spec 2152 }; diff --git a/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml b/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml index 4c1e2ab506..09720f422a 100644 --- a/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml @@ -179,14 +179,14 @@ Custom_Command Trigger Reestablishment ofqot - echo ci force_reestab | nc -N 192.168.68.194 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' + echo ci force_reestab | nc -N 127.0.0.1 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' yes Custom_Command Verify Reestablishment ofqot - echo ci get_reestab_count | nc -N 192.168.68.194 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' + echo ci get_reestab_count | nc -N 127.0.0.1 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' yes diff --git a/ci-scripts/yaml_files/sa_sc_b200_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_sc_b200_gnb/docker-compose.yml index c82b5f428a..7bd0f03b10 100644 --- a/ci-scripts/yaml_files/sa_sc_b200_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/sa_sc_b200_gnb/docker-compose.yml @@ -11,9 +11,11 @@ services: volumes: - ../../conf_files/gnb.sa.band78.106prb.usrpb200.sc-fdma.conf:/opt/oai-gnb/etc/gnb.conf - /dev:/dev - networks: - public_net: - ipv4_address: 192.168.68.194 + # for performance reasons, we use host mode: in bridge mode, we have + # unacceptable DL TCP performance. However, the whole point of + # containerization is to not be in host mode, so update this to macvlan + # later. + network_mode: "host" #entrypoint: /bin/bash -c "sleep infinity" healthcheck: # pgrep does NOT work @@ -21,12 +23,3 @@ services: interval: 10s timeout: 5s retries: 5 - -networks: - public_net: - name: sa-b200-gnb-net - ipam: - config: - - subnet: 192.168.68.192/26 - driver_opts: - com.docker.network.bridge.name: "sa-gnb-net" From 7bfa8e78fd539fb6db6889fa2b8720991d4636f6 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 30 May 2024 08:52:08 +0200 Subject: [PATCH 4/5] SA F1 B200 gNB CI test: use host-mode --- ci-scripts/conf_files/gnb-cu.sa.f1.conf | 8 ++--- .../gnb-du.sa.band1.52prb.usrpb210.conf | 4 +-- .../container_sa_f1_b200_quectel.xml | 4 +-- .../sa_f1_b200_gnb/docker-compose.yml | 34 +++++++++---------- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/ci-scripts/conf_files/gnb-cu.sa.f1.conf b/ci-scripts/conf_files/gnb-cu.sa.f1.conf index 1cd2d76318..2126aac17f 100644 --- a/ci-scripts/conf_files/gnb-cu.sa.f1.conf +++ b/ci-scripts/conf_files/gnb-cu.sa.f1.conf @@ -22,8 +22,8 @@ gNBs = tr_s_preference = "f1"; - local_s_address = "192.168.68.194"; - remote_s_address = "192.168.68.195"; + local_s_address = "127.0.0.4"; + remote_s_address = "127.0.0.5"; local_s_portc = 501; local_s_portd = 2153; remote_s_portc = 500; @@ -44,8 +44,8 @@ gNBs = NETWORK_INTERFACES : { - GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.68.194"; - GNB_IPV4_ADDRESS_FOR_NGU = "192.168.68.194"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.109"; + GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.109"; GNB_PORT_FOR_S1U = 2152; # Spec 2152 }; } diff --git a/ci-scripts/conf_files/gnb-du.sa.band1.52prb.usrpb210.conf b/ci-scripts/conf_files/gnb-du.sa.band1.52prb.usrpb210.conf index 5afadb781a..7c4550b346 100644 --- a/ci-scripts/conf_files/gnb-du.sa.band1.52prb.usrpb210.conf +++ b/ci-scripts/conf_files/gnb-du.sa.band1.52prb.usrpb210.conf @@ -162,8 +162,8 @@ MACRLCs = ( num_cc = 1; tr_s_preference = "local_L1"; tr_n_preference = "f1"; - local_n_address = "192.168.68.195"; - remote_n_address = "192.168.68.194"; + local_n_address = "127.0.0.5"; + remote_n_address = "127.0.0.4"; local_n_portc = 500; local_n_portd = 2153; remote_n_portc = 501; diff --git a/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml b/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml index df69f4c32c..6989c8fc26 100644 --- a/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml @@ -209,14 +209,14 @@ Custom_Command Trigger Reestablishment (on DU) ofqot - echo ci force_reestab | nc -N 192.168.68.195 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' + echo ci force_reestab | nc -N 127.0.0.1 9091 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' yes Custom_Command Verify Reestablishment (on CU) ofqot - echo ci get_reestab_count | nc -N 192.168.68.194 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' + echo ci get_reestab_count | nc -N 127.0.0.1 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' yes diff --git a/ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml index 97438eb67e..b2f682aada 100644 --- a/ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml @@ -6,12 +6,16 @@ services: ulimits: core: -1 # for core dumps environment: - USE_ADDITIONAL_OPTIONS: --sa --telnetsrv --telnetsrv.shrmod ci --log_config.global_log_options level,nocolor,time,line_num,function + USE_ADDITIONAL_OPTIONS: --sa + --telnetsrv --telnetsrv.listenport 9090 --telnetsrv.shrmod ci + --log_config.global_log_options level,nocolor,time,line_num,function volumes: - ../../conf_files/gnb-cu.sa.f1.conf:/opt/oai-gnb/etc/gnb.conf - networks: - public_net: - ipv4_address: 192.168.68.194 + # for performance reasons, we use host mode: in bridge mode, we have + # unacceptable DL TCP performance. However, the whole point of + # containerization is to not be in host mode, so update this to macvlan + # later. + network_mode: "host" #entrypoint: /bin/bash -c "sleep infinity" healthcheck: # pgrep does NOT work @@ -28,13 +32,18 @@ services: core: -1 # for core dumps environment: USE_B2XX: 'yes' - USE_ADDITIONAL_OPTIONS: --sa --RUs.[0].sdr_addrs serial=30C51D4 --continuous-tx --telnetsrv --telnetsrv.shrmod ci --log_config.global_log_options level,nocolor,time,line_num,function --gNBs.[0].min_rxtxtime 2 --gNBs.[0].do_CSIRS 1 --gNBs.[0].do_SRS 0 --L1s.[0].max_ldpc_iterations 20 + USE_ADDITIONAL_OPTIONS: --sa --RUs.[0].sdr_addrs serial=30C51D4 --continuous-tx + --telnetsrv --telnetsrv.listenport 9091 --telnetsrv.shrmod ci + --gNBs.[0].min_rxtxtime 2 --gNBs.[0].do_CSIRS 1 --gNBs.[0].do_SRS 0 --L1s.[0].max_ldpc_iterations 20 + --log_config.global_log_options level,nocolor,time,line_num,function volumes: - ../../conf_files/gnb-du.sa.band1.52prb.usrpb210.conf:/opt/oai-gnb/etc/gnb.conf - /dev:/dev - networks: - public_net: - ipv4_address: 192.168.68.195 + # for performance reasons, we use host mode: in bridge mode, we have + # unacceptable DL TCP performance. However, the whole point of + # containerization is to not be in host mode, so update this to macvlan + # later. + network_mode: "host" #entrypoint: /bin/bash -c "sleep infinity" healthcheck: # pgrep does NOT work @@ -42,12 +51,3 @@ services: interval: 10s timeout: 5s retries: 5 - -networks: - public_net: - name: sa-b200-gnb-net - ipam: - config: - - subnet: 192.168.68.192/26 - driver_opts: - com.docker.network.bridge.name: "sa-gnb-net" From 7fe29041c225c3b6450c93112e693d418491c870 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Thu, 30 May 2024 08:54:25 +0200 Subject: [PATCH 5/5] SA E1 B200 gNB CI test: use host-mode --- .../conf_files/gnb-cucp.sa.f1.quectel.conf | 10 ++--- .../conf_files/gnb-cuup.sa.f1.quectel.conf | 12 +++--- .../gnb-du.sa.band78.106prb.usrpb200.conf | 4 +- .../container_sa_e1_b200_quectel.xml | 4 +- .../sa_e1_b200_gnb/docker-compose.yml | 42 +++++++++---------- 5 files changed, 36 insertions(+), 36 deletions(-) diff --git a/ci-scripts/conf_files/gnb-cucp.sa.f1.quectel.conf b/ci-scripts/conf_files/gnb-cucp.sa.f1.quectel.conf index 7f7daa1370..153e7f77a3 100644 --- a/ci-scripts/conf_files/gnb-cucp.sa.f1.quectel.conf +++ b/ci-scripts/conf_files/gnb-cucp.sa.f1.quectel.conf @@ -23,8 +23,8 @@ gNBs = tr_s_preference = "f1"; - local_s_address = "192.168.68.194"; - remote_s_address = "192.168.68.195"; + local_s_address = "127.0.0.4"; + remote_s_address = "127.0.0.5"; local_s_portc = 501; local_s_portd = 2153; remote_s_portc = 500; @@ -46,16 +46,16 @@ gNBs = ( { type = "cp"; - ipv4_cucp = "192.168.68.194"; + ipv4_cucp = "127.0.0.4"; port_cucp = 38462; - ipv4_cuup = "192.168.68.196"; + ipv4_cuup = "127.0.0.6"; port_cuup = 38462; } ) NETWORK_INTERFACES : { - GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.68.194"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.109"; }; } ); diff --git a/ci-scripts/conf_files/gnb-cuup.sa.f1.quectel.conf b/ci-scripts/conf_files/gnb-cuup.sa.f1.quectel.conf index 2b231e950d..fa6532be7b 100644 --- a/ci-scripts/conf_files/gnb-cuup.sa.f1.quectel.conf +++ b/ci-scripts/conf_files/gnb-cuup.sa.f1.quectel.conf @@ -21,8 +21,8 @@ gNBs = tr_s_preference = "f1"; - local_s_address = "192.168.68.196"; - remote_s_address = "192.168.68.195"; + local_s_address = "127.0.0.6"; + remote_s_address = "127.0.0.5"; local_s_portc = 501; local_s_portd = 2153; remote_s_portc = 500; @@ -40,15 +40,15 @@ gNBs = ( { type = "up"; - ipv4_cucp = "192.168.68.194"; - ipv4_cuup = "192.168.68.196"; + ipv4_cucp = "127.0.0.4"; + ipv4_cuup = "127.0.0.6"; } ) NETWORK_INTERFACES : { - GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.68.196"; - GNB_IPV4_ADDRESS_FOR_NGU = "192.168.68.196"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.109"; + GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.109"; GNB_PORT_FOR_S1U = 2152; # Spec 2152 }; } diff --git a/ci-scripts/conf_files/gnb-du.sa.band78.106prb.usrpb200.conf b/ci-scripts/conf_files/gnb-du.sa.band78.106prb.usrpb200.conf index 07be610807..24a81ae0ae 100644 --- a/ci-scripts/conf_files/gnb-du.sa.band78.106prb.usrpb200.conf +++ b/ci-scripts/conf_files/gnb-du.sa.band78.106prb.usrpb200.conf @@ -169,8 +169,8 @@ MACRLCs = ( num_cc = 1; tr_s_preference = "local_L1"; tr_n_preference = "f1"; - local_n_address = "192.168.68.195"; - remote_n_address = "192.168.68.194"; + local_n_address = "127.0.0.5"; + remote_n_address = "127.0.0.4"; local_n_portc = 500; local_n_portd = 2153; remote_n_portc = 501; diff --git a/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml b/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml index b888cdb855..92577c3abc 100644 --- a/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml @@ -177,14 +177,14 @@ Custom_Command Trigger Reestablishment (on DU) ofqot - echo ci force_reestab | nc -N 192.168.68.195 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' + echo ci force_reestab | nc -N 127.0.0.1 9091 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' yes Custom_Command Verify Reestablishment (on CU) ofqot - echo ci get_reestab_count | nc -N 192.168.68.194 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' + echo ci get_reestab_count | nc -N 127.0.0.1 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' yes diff --git a/ci-scripts/yaml_files/sa_e1_b200_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_e1_b200_gnb/docker-compose.yml index 5cb9d350c2..7798d41c88 100644 --- a/ci-scripts/yaml_files/sa_e1_b200_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/sa_e1_b200_gnb/docker-compose.yml @@ -6,12 +6,16 @@ services: ulimits: core: -1 # for core dumps environment: - USE_ADDITIONAL_OPTIONS: --sa --telnetsrv --telnetsrv.shrmod ci --log_config.global_log_options level,nocolor,time,line_num,function + USE_ADDITIONAL_OPTIONS: --sa + --telnetsrv --telnetsrv.listenport 9090 --telnetsrv.shrmod ci + --log_config.global_log_options level,nocolor,time,line_num,function volumes: - ../../conf_files/gnb-cucp.sa.f1.quectel.conf:/opt/oai-gnb/etc/gnb.conf - networks: - public_net: - ipv4_address: 192.168.68.194 + # for performance reasons, we use host mode: in bridge mode, we have + # unacceptable DL TCP performance. However, the whole point of + # containerization is to not be in host mode, so update this to macvlan + # later. + network_mode: "host" healthcheck: # pgrep does NOT work test: /bin/bash -c "ps aux | grep -v grep | grep -c softmodem" @@ -26,12 +30,15 @@ services: ulimits: core: -1 # for core dumps environment: - USE_ADDITIONAL_OPTIONS: --sa --log_config.global_log_options level,nocolor,time,line_num,function + USE_ADDITIONAL_OPTIONS: --sa + --log_config.global_log_options level,nocolor,time,line_num,function volumes: - ../../conf_files/gnb-cuup.sa.f1.quectel.conf:/opt/oai-gnb/etc/gnb.conf - networks: - public_net: - ipv4_address: 192.168.68.196 + # for performance reasons, we use host mode: in bridge mode, we have + # unacceptable DL TCP performance. However, the whole point of + # containerization is to not be in host mode, so update this to macvlan + # later. + network_mode: "host" healthcheck: # pgrep does NOT work test: /bin/bash -c "ps aux | grep -v grep | grep -c nr-cuup" @@ -50,16 +57,18 @@ services: USE_ADDITIONAL_OPTIONS: --sa --RUs.[0].sdr_addrs serial=30C51D4 --continuous-tx -E - --telnetsrv --telnetsrv.shrmod ci + --telnetsrv --telnetsrv.listenport 9091 --telnetsrv.shrmod ci --gNBs.[0].min_rxtxtime 2 --gNBs.[0].do_CSIRS 1 --gNBs.[0].do_SRS 1 --RUs.[0].att_rx 14 --RUs.[0].att_tx 14 --log_config.global_log_options level,nocolor,time,line_num,function volumes: - ../../conf_files/gnb-du.sa.band78.106prb.usrpb200.conf:/opt/oai-gnb/etc/gnb.conf - /dev:/dev - networks: - public_net: - ipv4_address: 192.168.68.195 + # for performance reasons, we use host mode: in bridge mode, we have + # unacceptable DL TCP performance. However, the whole point of + # containerization is to not be in host mode, so update this to macvlan + # later. + network_mode: "host" #entrypoint: /bin/bash -c "sleep infinity" healthcheck: # pgrep does NOT work @@ -67,12 +76,3 @@ services: interval: 10s timeout: 5s retries: 5 - -networks: - public_net: - name: sa-b200-gnb-net - ipam: - config: - - subnet: 192.168.68.192/26 - driver_opts: - com.docker.network.bridge.name: "sa-gnb-net"