NR Rrc Inactive
The purpose of this tutorial is to show you how to test RrcInactive status. In this tutorial, I assume that you are familiar with basic operations of callbox and I would not explain the very basic operational procedure. I will just explain about the important configurations and how you can confirm on those configuration from the log.
RrcInactive in NR is a mechanism to park the communication in a kind of dormant mode without releasing RRC. The advantage of putting the communication into this mode comparing to releasing RRC is that it can switch back to the normal communication mode much more quickly then the case of RrcRelease.
Overall procedure (statemachine) for switching back and forth between RRC Connected and RRC Inactive is as follows.
Image Source : Sharetechnote
Table of Contents
- NR Rrc Inactive
Test Setup
Test setup for this tutorial is as shown below. (NOTE: Since TDD UL/DL configuration gets configured into SIB1 message and you may not need to get UE connected to the callbox if you just want to check the SIB1 as in this tutorial)
- SIM Card used in this tutorial is the one delivered with the system as it is.
- If you want to change the configuration, The tutorial Configuration Guide would help
Key Configuration Parameters
Followings are important configuration parameters for this tutorial. You may click on the items for the descriptions from Amarisoft documents.
- rrc_inactive : In this link, you will get the descriptions for all items listed below.
- use_full_resume_id
- rna_cell_list
- plmn
- cell_id_list
- rna_ranac_list
- tac
- ranac_list
- ran_paging_cycle
- t380_mins
- inactivity_timer
- release_timer_mins
Configuration
I used the configuration gnb-sa-rrc-inactive.cfg which is copied from gnb-sa.cfg and modified for this tutorial.
I have used mme-ims-cn-assistance.cfg which is copied from mme-ims.cfg and modified. RRC Inactive involves core network feature as well as gNB configuration, so I created a special configuration file for mme configuration as well.
In gnb-sa-rrc-inactive.cfg, add rrc_inactive object as shown below. Configuration for RRC inactive for gNB is set by rrc_inactive parameter. rna_cell_list, inactivity_timer and release_timer_mins are important parameters in this configuration. cell_id_list within rna_cell_list should be 28 digit in binary and you can create the value by concatenating gNB ID and Cell ID.
In mme-ims-cn-assistance.cfg , add the parameter cn_assistance_info_support as show below. It is important to set cn_assistance_info_support to true in order to enable RRCinactive functionality.
Perform the Test
Check basic cell configuration with 'cell phy' and cell command, and make it sure that it is configured as per your UE capability. gNB_ID and Cell ID with dotted line is used to make up the number in cell_id_list[] in the configuration file shown before.
Power on UE and Get the UE attached to cell
Make it sure that UE is registered to mme. Make it sure that at least one IP is assigned to the UE.
When there is no traffic, RRC goes into [inactive] as shown below. When the call status goes into RRCinactive, [inactive] is printed in the trace log.
When the RRC is in Inactive state, you can let Callbox to trigger Resume by sending ping as below. Usually the 'time' value for the first ping reply would be very long since it has to wait until the Resume process gets completed. During the resume process, RAN Paging and a few additional procedures should be completed and these steps are the main factors of the delay.
Rrc resumes as shown below as the user traffic (ping data in this case). When higher layer triggers RRC Resume, you would see that RACH process is triggered in trace log.
Log Analysis
First to check if UE support Rrc Inactive states from UE capability information message. If UE does not notify inactiveState, gNB and MME would not trigger RRC inactive process.
If there is no higher layer data traffic for a certain duration set in the configuration file. Network would trigger switching to RRC INACTIVE as shown below. RRC message to switch to RRCinactive is rrcRelease message with suspendConfig IE. The suspendConfig IE provide the required information to resume the connection when needed.
If you trigger data traffic (e.g, ping) while in Rrc Inactive, the callbox(gNB) would send ping to trigger Resume process. The ping should carry the ue-Identity that is same as the one configured in suspendConfig of rrcRelease message.
In response to the paging, UE will send resume request. In rrcResumeRequest message, you see resumeIdentity IE which is associated with RNTI that is configured in suspendConfig.
Callbox send Rrc Resume with the necessary Rrc Configuration to switch back to Rrc Connected state. If UE recieves the paging, it send Rrc Resume Request. If gNB recieves rrcResumeRequest from the UE, it send RRC resume message. In terms of functionality and the information it carries, RRC resume message is similar to RRC setup message. It should carry all the radio protocol parameter to reestablish the call connection.
If UE properly recieves RRC resume message and applied all the parameters properly, UE send Rrc Resume Complete
If there is no data traffic at higher layer for a certain duration. Network would trigger switching to RRC INACTIVE as shown below
If UE trigger data traffic (e.g, browsing) while in Rrc Inactive, the UE would send ResumeRequest to trigger Resume process
RRC / NAS Signaling
RrcRelease (SA)
: This is the RrcRelease message sent by gNB to switch to Rrc Inactive Status. (
{
message c1: rrcRelease: {
rrc-TransactionIdentifier 0,
criticalExtensions rrcRelease: {
suspendConfig {
fullI-RNTI '1234504601'H,
shortI-RNTI '504601'H,
ran-PagingCycle rf32,
ran-NotificationAreaInfo cellList: {
{
plmn-Identity {
mcc {
0,
0,
1
},
mnc {
0,
1
}
},
ran-AreaCells {
'001234501'H
}
}
},
t380 min30,
nextHopChainingCount 0
}
}
}
}
Paging (SA)
: This is the Paging message sent by gNB to trigger UE to wake up from the inactive status. (
{
message c1: paging: {
pagingRecordList {
{
ue-Identity fullI-RNTI: '1234504601'H
}
}
}
}
RrcResumeRequest (SA)
: This is the RrcResumeRequest message sent by UE to trigger UE to wake up from the inactive status. (
{
message c1: rrcResumeRequest: {
rrcResumeRequest {
resumeIdentity '504601'H,
resumeMAC-I 'F474'H,
resumeCause mt-Access,
spare '0'B
}
}
}
RrcResume (SA)
: This is the RrcResume message sent by gNB to setup RRC. (
{
message c1: rrcResume: {
rrc-TransactionIdentifier 0,
criticalExtensions rrcResume: {
radioBearerConfig {
..
},
masterCellGroup {
cellGroupId 0,
rlc-BearerToAddModList {
..
},
mac-CellGroupConfig {
..
},
spCellConfig {
spCellConfigDedicated {
uplinkConfig {
initialUplinkBWP {
pucch-Config setup: {
..
},
resourceToReleaseList {
..
},
schedulingRequestResourceToAddModList {
..
}
},
srs-Config setup: {
...
}
}
},
csi-MeasConfig setup: {
...
},
tag-Id 0
}
}
}
}
}
}
RrcResumeComplete (SA)
: This is the RrcResumeComplete message sent by UE. (
{
message c1: rrcResumeComplete: {
rrc-TransactionIdentifier 0,
criticalExtensions rrcResumeComplete: {
selectedPLMN-Identity 1
}
}
}