Skip to content

NR RRC - RRCReestablishment - Fix MultiplePDU Regression

Brief

This MR fixes/handles the RRC Reestablishment when a UE has more than 1 DRB or PDU Session. Also I changed the way DRBs are generated and stored in the gNB, because before I was not able to get the full list of DRBs that were established at the gNB to do RRCReestablishment procedure.

generateDRB function, stores a DRB configuration to the RRC contect struct and

generateDRB_ASN1 function, generates an ASN1 struct to be used in RRC messages providing the desired DRB from RRC.

Previously we were configuring the DRB_configList2, but we were passing the DRB_configList, at the do_RRCReconfiguration, now we only use the DRB_configList2.

Also some simplifications were made at RRCReestablishmentComplete, to make the code more clear. For example, functions were created for each smaller procedure for code readability.

Setup

To trigger the RRCReestablishment, I used a patch from @luis_pereira87 Trigger_RRCReestablishment.patch.

For the core network, I followed the instructions from https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/develop/doc/NR_SA_Tutorial_OAI_CN5G.md

For the gNB, I applied the Trigger_RRCReestablishment.patch on top of the changes

For the UE, I used Quectel RM500Q-GL, configured with two PDU Sessions, oai and imsby executing

AT+CGDCONT=1,"IP","oai"
AT+CGDCONT=2,"IP4V6","ims"

Then when the gNB & CN was running, I used qmicli to connect to the network, specificaly with the following commands:

sudo qmicli -d /dev/cdc-wdm1 -p --dms-set-operating-mode=low-power
sudo qmicli -d /dev/cdc-wdm1 -p --dms-set-operating-mode=online
sudo qmicli -d /dev/cdc-wdm1 -p --wds-start-network="ip-type=4,apn=oai" --client-no-release-cid
sudo qmicli -d /dev/cdc-wdm1 -p --wds-start-network="ip-type=4,apn=ims" --client-no-release-cid
sudo ip link set wwan0 down
echo 'Y' | sudo tee /sys/class/net/wwan0/qmi/raw_ip
sudo ip link set wwan0 up
sudo udhcpc -q -f -i wwan0

Merge request reports