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 ims
by 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