diff --git a/ci-scripts/xml_files/container_5g_f1_rfsim.xml b/ci-scripts/xml_files/container_5g_f1_rfsim.xml index 16c02050d2..93ad2c4c94 100644 --- a/ci-scripts/xml_files/container_5g_f1_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_f1_rfsim.xml @@ -34,6 +34,11 @@ 030020 030021 030022 + 040001 + 020022 + 040002 + 030021 + 030022 100021 222222 @@ -117,6 +122,31 @@ 90 + + Custom_Command + Trigger Reestablishment + cacofonix + echo ci force_reestab | nc 192.168.71.171 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment' + yes + + + + Ping + Ping ext-dn from all NR-UEs + rfsim5g_ue + cacofonix + -c 20 192.168.72.135 -i0.5 -w25 + 80 + + + + Custom_Command + Verify Reestablishment + cacofonix + echo ci get_reestab_count | nc 192.168.71.150 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1' + yes + + Custom_Command Simulate a disruption of DL radio channel (ploss 55)(5 sec) diff --git a/ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml b/ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml index c925af1adb..4460452f11 100644 --- a/ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml @@ -87,8 +87,11 @@ services: container_name: rfsim5g-oai-cu cap_drop: - ALL - environment: + environment: USE_ADDITIONAL_OPTIONS: --log_config.global_log_options level,nocolor,time + --rfsimulator.options chanmod + --telnetsrv --telnetsrv.listenaddr 192.168.71.150 + --telnetsrv.shrmod ci ASAN_OPTIONS: detect_leaks=0 depends_on: - oai-ext-dn @@ -113,6 +116,7 @@ services: --log_config.global_log_options level,nocolor,time --rfsimulator.options chanmod --telnetsrv --telnetsrv.listenaddr 192.168.71.171 + --telnetsrv.shrmod ci ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0 depends_on: - oai-cu diff --git a/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c b/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c index 3b0847feae..2ebd18f5e7 100644 --- a/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c +++ b/openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c @@ -1096,8 +1096,14 @@ bool nr_rlc_update_id(int from_id, int to_id) return true; } -/* This function is for testing purposes. At least on a COTS UE, it will - * trigger a reestablishment. */ +/** + * @brief This function is for testing purposes. + * Re-establishment is triggered by resetting RLC counters of the bearer, + * which leads to UE reaching maximum RLC retransmissions, RLF detection + * and RRC triggering re-sync. It is assumed that there is ongoing traffic on the bearer. + * - With COTS UEs, triggers re-establishment on SRB 1, where periodical measurement reports are sent. + * - With OAI UE, triggers re-establishment on DRB 1, assuming there is ongoing data traffic. + */ void nr_rlc_test_trigger_reestablishment(int ue_id) { nr_rlc_manager_lock(nr_rlc_ue_manager); @@ -1111,6 +1117,9 @@ void nr_rlc_test_trigger_reestablishment(int ue_id) * as the UE context is created. */ nr_rlc_entity_t *ent = ue->srb[0]; ent->reestablishment(ent); + /* Trigger re-establishment on OAI UE */ + nr_rlc_entity_t *drb = ue->drb[0]; + drb->reestablishment(drb); nr_rlc_manager_unlock(nr_rlc_ue_manager); }