5G/NR - RRC Overview |
||
5G/NR RRC INACTIVE
There is a addition RRC states between RRC Connected and Idle and Network/UE can optionally stay in INACTIVE state without completely releasing the RRC when there is no traffic and quickly switch back to CONNECTED states when necessary. (NOTE : There was no corresponding states in LTE, but Rrc Inactive status is added to LTE from Release 16). To me, RRC INACTIVE state is similar to the combination of FACH and PCH in UMTS. Actually Use case of INACTIVE state is almost same as FACH/PCH in UMTS.
The switching between RRC CONNECTED and RRC INACTIVE state happens as shown below.
Highlights of this statemachine / statechange is listed as follows.
UE can interact with other radio technology even in RRC INACTIVE state as shown below.
<36.331 v17.2- Figure 4.2.1-2: UE state machine and state transitions between NR/5GC, E-UTRA/EPC and EUTRA/5GC>
This signaling procedure can be illustrated in other way as well illustrated by Rahim Navael as shown below. Rahim kindly approved me to share the illustration in my note.
Image Source : Rahim Navaei's LinkedIn Post
As you see here, this single slide carries a lot of details and may look a little bit intimidated at the first glance. But it would gets more meaningful as you get more familiar with the process. I would suggest you to try to associate this slide with the protocol sequences shown here and check RRC message details in the example.
What do we need this kind of special RRC State ? Simply put, the main purpose of RrcInactive state is for power saving. Overall thought process of developing and evolving RrcInactive state can be summarized as below.
What can happen in RRC INACTIVE state ?
The behavior/Procedure in RRC INACTIVE state is described in 38.331 - 4.2.1 as follows. As of now (Sep 2022) and as per my experience, the most common process and UE behavior we are interested in is highlight in color.
The UE:
I think the process in RRC INACTIVE is better described in following specification. Check out which physical channel is active and which RNTI is used in RRC INACTIVE state.
< 38.202 v17.2 - Table 6.2-2: Downlink Reception Type Combinations >
< 38.202 v17.2 - Table 6.2-1: Downlink "Reception Types" >
Following is a example of protocol sequence captured by Amarisoft Callbox and a commercial UE. Suumary of the overall sequence is as follows.
NOTE : If you want to see the contents of full log with Amarisoft Log viewer, go to LogAnalysis section and click on 'Sample Log' in this tutorial of Amarisoft TechAcademy. [1] Network would check if UE support Rrc Inactive via UE Capability Information. (Step (1)) [2] When there is no traffic for a certain time period, Network would suspend via Rrc Release (Step(2)) [3] Now the call status is in RRC INACTIVE [4] (I did ping from network). Network will trigger Rrc Resume process via Paging (Step (3)) [5] UE trigger RACH process and send Rrc Resume Request (Step (4)) [6] Network send Rrc Resume (Step (5)) [7] UE send Rrc Resume Complete (Step (6)) [8] Higher layer data (ping in this case) is going on [9] After a certain time period from the completion of Higher Layer Data exchange, Network trigger Rrc Suspend via Rrc Release (Step (7)) [10] I launched Browser from UE to let UE trigger the resume. [11] UE trigger RACH process and send Rrc Resume Request (Step (8)) [12] Network send Rrc Resume (Step (9)) [13] UE send Rrc Resume Complete (Step (10))
{ message c1: ueCapabilityInformation: { rrc-TransactionIdentifier 0, criticalExtensions ueCapabilityInformation: { ue-CapabilityRAT-ContainerList { { ... nonCriticalExtension { ... }, inactiveState supported } } } } } } }
{ message c1: rrcRelease: { rrc-TransactionIdentifier 0, criticalExtensions rrcRelease: { suspendConfig { fullI-RNTI '123450460D'H, shortI-RNTI '50460D'H, ran-PagingCycle rf32, ran-NotificationAreaInfo cellList: { { plmn-Identity { mcc { 0, 0, 1 }, mnc { 0, 1 } }, ran-AreaCells { '001234501'H } } }, t380 min30, nextHopChainingCount 0 } } } }
{ message c1: paging: { pagingRecordList { { ue-Identity fullI-RNTI: '1234504601'H } } } }
{ message c1: rrcResumeRequest: { rrcResumeRequest { resumeIdentity '504601'H, resumeMAC-I 'F474'H, resumeCause mt-Access, spare '0'B } } }
: This would be the most complicated message for Resume process.. the configuration is almost like RrcSetup / RrcReconfiguration. If the resume happens with the same cell, this message would be enough to carry PUCCH, SRS, DRX and CA configuration since the NW and UE still keep some context from previous connection, but if the resume happens in different cell, NW would need to send full configuration (like full RrcSetup).
{ message c1: rrcResume: { rrc-TransactionIdentifier 0, criticalExtensions rrcResume: { radioBearerConfig { srb-ToAddModList { { srb-Identity 2, reestablishPDCP true } }, drb-ToAddModList { { drb-Identity 1, reestablishPDCP true } } }, masterCellGroup { cellGroupId 0, rlc-BearerToAddModList { { logicalChannelIdentity 2, reestablishRLC true }, { logicalChannelIdentity 4, reestablishRLC true } }, mac-CellGroupConfig { phr-Config setup: { phr-PeriodicTimer sf500, phr-ProhibitTimer sf200, phr-Tx-PowerFactorChange dB3, multiplePHR FALSE, dummy FALSE, phr-Type2OtherCell FALSE, phr-ModeOtherCG real }, skipUplinkTxDynamic FALSE }, spCellConfig { spCellConfigDedicated { uplinkConfig { initialUplinkBWP { pucch-Config setup: { resourceToAddModList { { pucch-ResourceId 16, startingPRB 50, intraSlotFrequencyHopping enabled, secondHopPRB 0, format format1: { initialCyclicShift 8, nrofSymbols 14, startingSymbolIndex 0, timeDomainOCC 2 } }, { pucch-ResourceId 17, startingPRB 49, intraSlotFrequencyHopping enabled, secondHopPRB 1, format format2: { nrofPRBs 1, nrofSymbols 2, startingSymbolIndex 2 } } }, resourceToReleaseList { 16, 17 }, schedulingRequestResourceToAddModList { { schedulingRequestResourceId 1, schedulingRequestID 0, periodicityAndOffset sl40: 8, resource 16 } } }, srs-Config setup: { srs-ResourceToAddModList { { srs-ResourceId 0, nrofSRS-Ports port1, transmissionComb n2: { combOffset-n2 0, cyclicShift-n2 0 }, resourceMapping { startPosition 0, nrofSymbols n1, repetitionFactor n1 }, freqDomainPosition 0, freqDomainShift 5, freqHopping { c-SRS 11, b-SRS 3, b-hop 0 }, groupOrSequenceHopping neither, resourceType aperiodic: { }, sequenceId 500 } } } } }, csi-MeasConfig setup: { csi-ReportConfigToAddModList { { reportConfigId 0, resourcesForChannelMeasurement 0, csi-IM-ResourcesForInterference 1, reportConfigType periodic: { reportSlotConfig slots80: 9, pucch-CSI-ResourceList { { uplinkBandwidthPartId 0, pucch-Resource 17 } } }, reportQuantity cri-RI-PMI-CQI: NULL, reportFreqConfiguration { cqi-FormatIndicator widebandCQI, pmi-FormatIndicator widebandPMI }, timeRestrictionForChannelMeasurements notConfigured, timeRestrictionForInterferenceMeasurements notConfigured, codebookConfig { codebookType type1: { subType typeI-SinglePanel: { nrOfAntennaPorts two: { twoTX-CodebookSubsetRestriction '111111'B }, typeI-SinglePanel-ri-Restriction '03'H }, codebookMode 1 } }, groupBasedBeamReporting disabled: { }, cqi-Table table2, subbandSize value1 } } }, tag-Id 0 } } } } } }
{ message c1: rrcResumeComplete: { rrc-TransactionIdentifier 0, criticalExtensions rrcResumeComplete: { selectedPLMN-Identity 1 } } }
{ message c1: rrcRelease: { rrc-TransactionIdentifier 0, criticalExtensions rrcRelease: { suspendConfig { fullI-RNTI '123450460A'H, shortI-RNTI '50460A'H, ran-PagingCycle rf32, ran-NotificationAreaInfo cellList: { { plmn-Identity { mcc { 0, 0, 1 }, mnc { 0, 1 } }, ran-AreaCells { '001234501'H } } }, t380 min30, nextHopChainingCount 0 } } } }
{ message c1: rrcResumeRequest: { rrcResumeRequest { resumeIdentity '50460A'H, resumeMAC-I 'B534'H, resumeCause mo-Data, spare '0'B } } }
{ message c1: rrcResume: { rrc-TransactionIdentifier 0, criticalExtensions rrcResume: { radioBearerConfig { srb-ToAddModList { { srb-Identity 2, reestablishPDCP true } }, drb-ToAddModList { { drb-Identity 1, reestablishPDCP true } } }, masterCellGroup { cellGroupId 0, rlc-BearerToAddModList { { logicalChannelIdentity 2, reestablishRLC true }, { logicalChannelIdentity 4, reestablishRLC true } }, mac-CellGroupConfig { phr-Config setup: { phr-PeriodicTimer sf500, phr-ProhibitTimer sf200, phr-Tx-PowerFactorChange dB3, multiplePHR FALSE, dummy FALSE, phr-Type2OtherCell FALSE, phr-ModeOtherCG real }, skipUplinkTxDynamic FALSE }, spCellConfig { spCellConfigDedicated { uplinkConfig { initialUplinkBWP { pucch-Config setup: { resourceToAddModList { { pucch-ResourceId 16, startingPRB 50, intraSlotFrequencyHopping enabled, secondHopPRB 0, format format1: { initialCyclicShift 8, nrofSymbols 14, startingSymbolIndex 0, timeDomainOCC 2 } }, { pucch-ResourceId 17, startingPRB 49, intraSlotFrequencyHopping enabled, secondHopPRB 1, format format2: { nrofPRBs 1, nrofSymbols 2, startingSymbolIndex 2 } } }, resourceToReleaseList { 16, 17 }, schedulingRequestResourceToAddModList { { schedulingRequestResourceId 1, schedulingRequestID 0, periodicityAndOffset sl40: 8, resource 16 } } }, srs-Config setup: { srs-ResourceToAddModList { { srs-ResourceId 0, nrofSRS-Ports port1, transmissionComb n2: { combOffset-n2 0, cyclicShift-n2 0 }, resourceMapping { startPosition 0, nrofSymbols n1, repetitionFactor n1 }, freqDomainPosition 0, freqDomainShift 5, freqHopping { c-SRS 11, b-SRS 3, b-hop 0 }, groupOrSequenceHopping neither, resourceType aperiodic: { }, sequenceId 500 } } } } }, csi-MeasConfig setup: { csi-ReportConfigToAddModList { { reportConfigId 0, resourcesForChannelMeasurement 0, csi-IM-ResourcesForInterference 1, reportConfigType periodic: { reportSlotConfig slots80: 9, pucch-CSI-ResourceList { { uplinkBandwidthPartId 0, pucch-Resource 17 } } }, reportQuantity cri-RI-PMI-CQI: NULL, reportFreqConfiguration { cqi-FormatIndicator widebandCQI, pmi-FormatIndicator widebandPMI }, timeRestrictionForChannelMeasurements notConfigured, timeRestrictionForInterferenceMeasurements notConfigured, codebookConfig { codebookType type1: { subType typeI-SinglePanel: { nrOfAntennaPorts two: { twoTX-CodebookSubsetRestriction '111111'B }, typeI-SinglePanel-ri-Restriction '03'H }, codebookMode 1 } }, groupBasedBeamReporting disabled: { }, cqi-Table table2, subbandSize value1 } } }, tag-Id 0 } } } } } }
{ message c1: rrcResumeComplete: { rrc-TransactionIdentifier 0, criticalExtensions rrcResumeComplete: { selectedPLMN-Identity 1 } } }
UE-NR-Capability-v1530 ::= SEQUENCE { fdd-Add-UE-NR-Capabilities-v1530 UE-NR-CapabilityAddXDD-Mode-v1530 OPTIONAL, tdd-Add-UE-NR-Capabilities-v1530 UE-NR-CapabilityAddXDD-Mode-v1530 OPTIONAL, dummy ENUMERATED {supported} OPTIONAL, interRAT-Parameters InterRAT-Parameters OPTIONAL, inactiveState ENUMERATED {supported} OPTIONAL, delayBudgetReporting ENUMERATED {supported} OPTIONAL, nonCriticalExtension UE-NR-Capability-v1540 OPTIONAL }
RRCRelease ::= SEQUENCE { rrc-TransactionIdentifier RRC-TransactionIdentifier, criticalExtensions CHOICE { rrcRelease RRCRelease-IEs, criticalExtensionsFuture SEQUENCE {} } }
RRCRelease-IEs ::= SEQUENCE { redirectedCarrierInfo RedirectedCarrierInfo OPTIONAL, -- Need N cellReselectionPriorities CellReselectionPriorities OPTIONAL, -- Need R suspendConfig SuspendConfig OPTIONAL, -- Need R deprioritisationReq SEQUENCE { deprioritisationType ENUMERATED {frequency, nr}, deprioritisationTimer ENUMERATED {min5, min10, min15, min30} } OPTIONAL, -- Need N lateNonCriticalExtension OCTET STRING OPTIONAL, nonCriticalExtension RRCRelease-v1540-IEs OPTIONAL }
SuspendConfig ::= SEQUENCE { fullI-RNTI I-RNTI-Value, shortI-RNTI ShortI-RNTI-Value, ran-PagingCycle PagingCycle, ran-NotificationAreaInfo RAN-NotificationAreaInfo OPTIONAL, -- Need M t380 PeriodicRNAU-TimerValue OPTIONAL, -- Need R nextHopChainingCount NextHopChainingCount, ... }
RRCResumeRequest ::= SEQUENCE { rrcResumeRequest RRCResumeRequest-IEs }
RRCResumeRequest-IEs ::= SEQUENCE { resumeIdentity ShortI-RNTI-Value, resumeMAC-I BIT STRING (SIZE (16)), resumeCause ResumeCause, spare BIT STRING (SIZE (1)) }
RRCResumeRequest1 ::= SEQUENCE { rrcResumeRequest1 RRCResumeRequest1-IEs }
RRCResumeRequest1-IEs ::= SEQUENCE { resumeIdentity I-RNTI-Value, resumeMAC-I BIT STRING (SIZE (16)), resumeCause ResumeCause, spare BIT STRING (SIZE (1)) }
ResumeCause ::= ENUMERATED { emergency, highPriorityAccess, mt-Access, mo-Signalling, mo-Data, mo-VoiceCall, mo-VideoCall, mo-SMS, rna-Update, mps-PriorityAccess, mcs-PriorityAccess, spare1, spare2, spare3, spare4, spare5 }
Reference
[1] 3GPP 38.331 [2] Key details of RRC Inactive State in 5G.
|
||