5G RRC Reconfig
5G RRC Reconfig
In NSA setup, this is the most important and complicated message you need to und
As in LTE, RRC Reconfiguration is the most important steps in establishing Radio Connectio
between UE and Network. Understanding every details of RRC Reconfiguration would impl
understanding almost everything in NR Radio Stack. I would take around an year to get th
understandings on the details of this single message to a certain degree and you would ne
keep learning further details and new things throughout the whole life cycles of 5G/NR. So
too hurry trying to understand everything at a time and read / think on small pieces and
analyze the protocol log when available whenever you have chance. This page also will be
piece by piece and linked to many other pages for the details.
Example :
o Example 01
Following sequence shows what triggers NR RRC Reconfiguration on UE. As you see here,
be triggered by LTE (in NSA(Non-Standalone) deployment) or by NR (in SA(Standalone)
deployment).
Both processes start with an "Initial Setup" phase, where the UE establishes an initia
connection with the network (eNB or gNB).
NOTE : In both case, NR RACH process are crucial and understanding the procedure is sup
important. (In NSA case, the NR RACH process happens after RRC Connection Reconfigura
SA, it happens as a part of Initial Attach). For further details, check out the followings
NR RACH in NSA
NR RACH in SA
As you can guess from the word itself, the major functionality of RrcReconfiguration is to s
modify RRC configuration. This imply that there should have already been some RRC Confi
process before this message. It is true. In LTE, there is a step RrcConnectionSetup messag
RrcConnectionReconfiguration and in NR there is RRC Setup message before RrcReconfigu
Radio Bearer
Measurement
Radio Bearer
o Establish
o Modify
o Release
Measurement
o Setup
o Modify
o Release
o Add
o Modify
o Release
secondaryCellGroup
radioBearerConfig
measConfig
nr-SecondaryCellGroupConfig
spCellConfig->reconfigurationWithSync
Since this message carries too many parameters (Information Elements), you would easily
if you try to go through each and every items from the beginning. I would suggest you to
any one of the high level items from the items listed above and try to understand the ove
functionality of the high level item ,and then move to next item and get an overview and
When you have overall understandings on every items listed above, then move down to n
(one-step down) in each section.
Followings are RRC Reconfiguration Message structure from 38.331. (NOTE : This is not ne
from the latest specification. So just get the overal structure from this note and double ch
3GPP document version that you are specifically interested in).
rrc-TransactionIdentifier RRC-TransactionIdentifier,
criticalExtensions CHOICE {
rrcReconfiguration RRCReconfiguration-IEs,
criticalExtensionsFuture SEQUENCE {}
RRCReconfiguration-IEs ::=SEQUENCE {
radioBearerConfig RadioBearerConfig OPTIONAL, -- Need M
The radio bearer configuration process allows the network to establish, modify, and releas
bearers for the UE. the radio bearer configuration procedure allows the network to control
bearers used by the UE to meet the QoS and service requirements. It is a key part of RRC
connection establishment, reconfiguration, and mobility procedures.
Radio bearers carry user plane data between the UE and the network. The SRBs (Sig
Radio Bearers) carry control plane data like RRC messages, while the DRBs (Data Ra
Bearers) carry user plane data.
The network uses the RadioBearerConfig information element to configure the radio
for the UE. This allows the network to setup, modify or release SRBs, DRBs, and mul
MRBs.
Through this configuration, the network can control the QoS profile, security parame
PDCP configuration etc for each radio bearer.
The network can add new radio bearers, modify the configuration of existing ones, o
radio bearers that are no longer needed.
The UE performs actions to configure radio bearers based on the RadioBearerConfig IE rec
from the network. This includes SRB release, SRB addition/modification, DRB release, DRB
addition/modification, multicast MRB release, and multicast MRB addition/modification. Fo
are summary based on each sections under 38.331-5.3.5.6
1> SRB Release
o Establish PDCP entity for target cell group for each SRB if DAPS bearer configu
...
srb-Identity SRB-Identity,
...
cnAssociation CHOICE {
drb-Identity DRB-Identity,
...
pdu-Session PDU-SessionID,
defaultDRB BOOLEAN,
...
drb SEQUENCE {
discardTimer ENUMERATED {ms10, ms20, ms30, ms40, ms50, ms60, ms75, ms100,
ms200,
headerCompression CHOICE {
notUsed NULL,
rohc SEQUENCE {
profiles SEQUENCE {
profile0x0001 BOOLEAN,
profile0x0002 BOOLEAN,
profile0x0003 BOOLEAN,
profile0x0004 BOOLEAN,
profile0x0006 BOOLEAN,
profile0x0101 BOOLEAN,
profile0x0102 BOOLEAN,
profile0x0103 BOOLEAN,
profile0x0104 BOOLEAN
},
},
uplinkOnlyROHC SEQUENCE {
profiles SEQUENCE {
profile0x0006 BOOLEAN
},
},
...
},
moreThanOneRLC SEQUENCE {
primaryPath SEQUENCE {
},
} OPTIONAL,
t-Reordering ENUMERATED {
ms0, ms1, ms2, ms4, ms5, ms8, ms10, ms15, ms20, ms30, ms40,
ms50, ms60, ms80, ms100, ms120, ms140, ms160, ms180, ms200, ms220
...,
[[
cipheringDisabled ENUMERATED {true} OPTIONAL -- Cond ConnectedTo5GC
]]
b0, b100, b200, b400, b800, b1600, b3200, b6400, b12800, b25600, b51200, b102400
b204800,
b6553600, infinity, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1}
...
cipheringAlgorithm CipheringAlgorithm,
...
cellGroupId CellGroupId,
...
skipUplinkTxDynamic BOOLEAN,
cs-RNTI SetupRelease { RNTI-Value } OPTIONAL -- Need M
drx-onDurationTimer CHOICE {
milliSeconds ENUMERATED {
ms1, ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30,
},
drx-InactivityTimer ENUMERATED {
ms0, ms1, ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30,
drx-RetransmissionTimerDL ENUMERATED {
sl0, sl1, sl2, sl4, sl6, sl8, sl16, sl24, sl33, sl40, sl64,
drx-RetransmissionTimerUL ENUMERATED {
sl0, sl1, sl2, sl4, sl6, sl8, sl16, sl24, sl33, sl40, sl64,
sl80, sl96, sl112, sl128, sl160, sl320, spare15, spare14,
drx-LongCycleStartOffset CHOICE {
ms10 INTEGER(0..9),
ms20 INTEGER(0..19),
ms32 INTEGER(0..31),
ms40 INTEGER(0..39),
ms60 INTEGER(0..59),
ms64 INTEGER(0..63),
ms70 INTEGER(0..69),
ms80 INTEGER(0..79),
ms128 INTEGER(0..127),
ms160 INTEGER(0..159),
ms256 INTEGER(0..255),
ms320 INTEGER(0..319),
ms512 INTEGER(0..511),
ms640 INTEGER(0..639),
ms1024 INTEGER(0..1023),
ms1280 INTEGER(0..1279),
ms2048 INTEGER(0..2047),
ms2560 INTEGER(0..2559),
ms5120 INTEGER(0..5119),
ms10240 INTEGER(0..10239)
},
shortDRX SEQUENCE {
drx-ShortCycle ENUMERATED {
ms2, ms3, ms4, ms5, ms6, ms7, ms8, ms10, ms14, ms16, ms20,
} OPTIONAL, -- Need R
multiplePHR BOOLEAN,
phr-Type2PCell BOOLEAN,
phr-Type2OtherCell BOOLEAN,
TAG-Config ::=SEQUENCE {
}
TAG-ToAddMod ::= SEQUENCE {
tag-Id TAG-Id,
timeAlignmentTimer TimeAlignmentTimer,
...
ms10240, infinity}
periodicBSR-Timer ENUMERATED {
sf1, sf5, sf10, sf16, sf20, sf32, sf40, sf64, sf80, sf128,
retxBSR-Timer ENUMERATED { sf10, sf20, sf40, sf80, sf160, sf320, sf640, sf1280
SchedulingRequestToAddMod ::=SEQUENCE {
sr-ConfigIndex SchedulingRequestId,
logicalChannelIdentity LogicalChannelIdentity,
MeasConfig is to specify various configurations for RRC level measurement like types of
measurement, types of reference signal for the measurement etc. The details are specifed
38.331-5.5
Types of Measurement
NR measurements;
Type of Reference signal for the measurement and corresponding measurement item. The
measurements are performed only when they are configured in the RRC message.
SS/PBCH block(s):
CSI-RS resources:
s-MeasureConfig CHOICE {
ssb-RSRP RSRP-Range,
csi-RSRP RSRP-Range
} OPTIONAL, -- Need M
...
...
...
...
...
QuantityConfigNR::= SEQUENCE {
quantityConfigCell QuantityConfigRS,
ssb-FilterConfig FilterConfig,
cs-RS-FilterConfig FilterConfig
"spCell" stands for Special or Secondary Primary Cell. The term "spCell" refers to a specifi
primary cell in a defined group within a cellular network. "spCell" is used to refer to a spec
a defined group, making it the primary cell of that particular group. It's often mentioned in
context of Master Cell Group (MCG) and Secondary Cell Group (SCG), where it denotes the
cell of these groups. In the context of NSA, spCell is the first NR cell added as SCG(Second
Group) to LTE anchor.
...
newUE-Identity RNTI-Value,
rach-ConfigDedicated CHOICE {
uplink RACH-ConfigDedicated,
supplementaryUplink RACH-ConfigDedicated
} OPTIONAL, -- Need N
...
bwp-InactivityTimer ENUMERATED {ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20,
tag-Id TAG-Id,
codeBlockGroupTransmission SetupRelease {
PDSCH-CodeBlockGroupTransmission
} OPTIONAL, -- Need M
...
codeBlockGroupFlushIndicator BOOLEAN,
...
...
physCellId PhysCellId
downlinkConfigCommon DownlinkConfigCommon,
uplinkConfigCommon UplinkConfigCommon
supplementaryUplinkConfig UplinkConfigCommon
ssb-PositionsInBurst CHOICE {
} OPTIONAL, -- Need R,
RateMatchPattern
ssbsubcarrierSpacing SubcarrierSpacing
tdd-UL-DL-ConfigurationCommon TDD-UL-DL-ConfigCommon
...
carrierBandwidthDL ENUMERATED {n6, n15, n25, n50, n75, n100, spare2, spare
rateMatchPatternId RateMatchPatternId,
patternType CHOICE {
bitmaps SEQUENCE {
symbolsInResourceBlock CHOICE {
},
periodicityAndPattern CHOICE {
} OPTIONAL, -- Need S
...
},
controlResourceSet ControlResourceSetId
},
...
EUTRA-MBSFN-SubframeConfigList ::=
subframeAllocation CHOICE {
},
subframeAllocation-v1430 CHOICE {
} OPTIONAL, -- Need R
...
SubcarrierSpacing ::= ENUMERATED {kHz15, kHz30, kHz60, kHz120, kHz240, spare3, spa
spare1}
frequencyInfoUL FrequencyInfoUL
initialUplinkBWP BWP-UplinkCommon
absoluteFrequencySSB ARFCN-ValueNR,
frequencyBandList MultiFrequencyBandListNR,
absoluteFrequencyPointA ARFCN-ValueNR,
...
subcarrierSpacing SubcarrierSpacing,
[[
]]
absoluteFrequencySSB : Frequency of the SSB to be used for this serving cell. SSB related
parameters (e.g. SSB index) provided for a serving cell refer to this SSB frequency unless
mentioned otherwise. The frequency provided in this field identifies the position of resourc
element RE=#0 (subcarrier #0) of resource block RB#10 of the SS block. The cell-defining
the PCell is always on the sync raster. Frequencies are considered to be on the sync raster
are also identifiable with a GSCN value. If the field is absent, the SSB related parameters s
absent, e.g. ssb-PositionsInBurst, ssb-periodicityServingCell and subcarrierSpacing in
ServingCellConfigCommon IE. If the field is absent, the UE obtains timing reference from t
This is only supported in case the Scell is in the same frequency band as the SpCell
txDirectCurrentLocation : Indicates the downlink Tx Direct Current location for the carrier.
the range 0..3299 indicates the subcarrier index within the carrier. The values in the value
3301..4095 are reserved and ignored by the UE. If this field is absent, the UE assumes the
value of 3300 (i.e. "Outside the carrier").
offsetToPointA : The offset in PRB between the Point A and the lowest subcarrier of the low
of the cell-defining SSB after floating SSB is resolved. See this page for further details.
Example 01 : spCellConfig.FrequencyInfoDL
absoluteFrequencySSB 2054962
ssb_SubcarrierOffset Omit
frequencyBandList
frequencyBand[0] 257
absoluteFrequencyPointA 2054170
scs_SpecificCarrierList
scs_SpecificCarrier[0]
offsetToCarrier 0
subcarrierSpacing 120khz
k0 n0
carrierBandwidth 66
frequencyBandList MultiFrequencyBandListNR
absoluteFrequencyPointA ARFCN-ValueNR
additionalSpectrumEmission AdditionalSpectrumEmission
p-Max P-Max
...
}
subcarrierSpacingCommon : Indicates Subcarrier spacing for SIB1, Msg.2/4 for initial acce
messages.
Values 15, and 30 kHz are applicable for carrier frequencies <6GHz;
Values 60 and 120 kHz are applicable for carrier frequencies >6GHz
ssb-subcarrieroffset : The frequency domain offset between SSB and the overall resource
in number of subcarriers. Absence of the field indicates that no offset if applied (offset = 0
38.211, 7.4.3.1)
ssb-periodicityServingCell : The SSB periodicity in msec for the rate matching purpose (se
7.4.3.1)
dmrs-TypeA-Position : Position of (first) DL DM-RS (see 38.211, section 7.4.1.1.1). This field
in MIB. Assuming that the UE does not need to acquire MIB before sending RA to target ce
parameter should also be here.
subcarrierSpacingSSB : Subcarrier spacing of SSB. Used only for non-initial access (e.g. SC
of SCG).
ss-PBCH-BlockPower : TX power that the NW used for SSB transmission. The UE uses it to
the RA preamble TX power
rach-ConfigCommon : Parameters that are also conveyed via system information (SIB1) bu
are provided here to accelerate handover and to avoid that UEs need to read system infor
from SCells. See rach-ConfigCommon details in RACH page.
Example :
You can get the entire procedure of how to test NSA and full log from this tutorial of Ama
Tech-Academy
Reference
[1]