Add test to trigger re-establishment to RFSIM F1 CI
* trigger re-establshemnt on DU: reset RLC counters on DRB 1 for OAI UE, since SRB 1 does not work for lack of periodic measurements reports * how is the re-establishment triggered? * a transmission on DRB 1 occurs * detection of a mismatch of RLC counters at the UE side * max number of RLC retransmissions reached * RLF detection * verify re-establishment on CU: we ping the core from the UE; this sends packets on DRB, and because the sequence number mismatches, will trigger a reestablishment. We accept in the ping that a couple of packets might be lost; after ping is over, reestablishment must be done as well (else the ping will already fail).
This commit is contained in:
committed by
Robert Schmidt
parent
2cc63bf195
commit
0bbd446478
@@ -34,6 +34,11 @@
|
|||||||
030020
|
030020
|
||||||
030021
|
030021
|
||||||
030022
|
030022
|
||||||
|
040001
|
||||||
|
020022
|
||||||
|
040002
|
||||||
|
030021
|
||||||
|
030022
|
||||||
100021
|
100021
|
||||||
222222
|
222222
|
||||||
</TestCaseRequestedList>
|
</TestCaseRequestedList>
|
||||||
@@ -117,6 +122,31 @@
|
|||||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="040001">
|
||||||
|
<class>Custom_Command</class>
|
||||||
|
<desc>Trigger Reestablishment</desc>
|
||||||
|
<node>cacofonix</node>
|
||||||
|
<command>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'</command>
|
||||||
|
<command_fail>yes</command_fail>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="020022">
|
||||||
|
<class>Ping</class>
|
||||||
|
<desc>Ping ext-dn from all NR-UEs</desc>
|
||||||
|
<id>rfsim5g_ue</id>
|
||||||
|
<nodes>cacofonix</nodes>
|
||||||
|
<ping_args> -c 20 192.168.72.135 -i0.5 -w25</ping_args>
|
||||||
|
<ping_packetloss_threshold>80</ping_packetloss_threshold>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="040002">
|
||||||
|
<class>Custom_Command</class>
|
||||||
|
<desc>Verify Reestablishment</desc>
|
||||||
|
<node>cacofonix</node>
|
||||||
|
<command>echo ci get_reestab_count | nc 192.168.71.150 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1'</command>
|
||||||
|
<command_fail>yes</command_fail>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
<testCase id="040021">
|
<testCase id="040021">
|
||||||
<class>Custom_Command</class>
|
<class>Custom_Command</class>
|
||||||
<desc>Simulate a disruption of DL radio channel (ploss 55)(5 sec)</desc>
|
<desc>Simulate a disruption of DL radio channel (ploss 55)(5 sec)</desc>
|
||||||
|
|||||||
@@ -87,8 +87,11 @@ services:
|
|||||||
container_name: rfsim5g-oai-cu
|
container_name: rfsim5g-oai-cu
|
||||||
cap_drop:
|
cap_drop:
|
||||||
- ALL
|
- ALL
|
||||||
environment:
|
environment:
|
||||||
USE_ADDITIONAL_OPTIONS: --log_config.global_log_options level,nocolor,time
|
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
|
ASAN_OPTIONS: detect_leaks=0
|
||||||
depends_on:
|
depends_on:
|
||||||
- oai-ext-dn
|
- oai-ext-dn
|
||||||
@@ -113,6 +116,7 @@ services:
|
|||||||
--log_config.global_log_options level,nocolor,time
|
--log_config.global_log_options level,nocolor,time
|
||||||
--rfsimulator.options chanmod
|
--rfsimulator.options chanmod
|
||||||
--telnetsrv --telnetsrv.listenaddr 192.168.71.171
|
--telnetsrv --telnetsrv.listenaddr 192.168.71.171
|
||||||
|
--telnetsrv.shrmod ci
|
||||||
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
|
ASAN_OPTIONS: detect_leaks=0:detect_odr_violation=0
|
||||||
depends_on:
|
depends_on:
|
||||||
- oai-cu
|
- oai-cu
|
||||||
|
|||||||
@@ -1096,8 +1096,14 @@ bool nr_rlc_update_id(int from_id, int to_id)
|
|||||||
return true;
|
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)
|
void nr_rlc_test_trigger_reestablishment(int ue_id)
|
||||||
{
|
{
|
||||||
nr_rlc_manager_lock(nr_rlc_ue_manager);
|
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. */
|
* as the UE context is created. */
|
||||||
nr_rlc_entity_t *ent = ue->srb[0];
|
nr_rlc_entity_t *ent = ue->srb[0];
|
||||||
ent->reestablishment(ent);
|
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);
|
nr_rlc_manager_unlock(nr_rlc_ue_manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user