5G/NR |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
RRC Connection Reconfiguration in a nutshell
RRC ConnectionReconfiguration in Detail
As in LTE, RRC Reconfiguration is the most important steps in establishing Radio Connection between UE and Network. Understanding every details of RRC Reconfiguration would imply understanding almost everything in NR Radio Stack. I would take around an year to get the understandings on the details of this single message to a certain degree and you would need to keep learning further details and new things throughout the whole life cycles of 5G/NR. So.. don't be 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 updated piece by piece and linked to many other pages for the details.
Overall Sequence of RRC Reconfiguration for NR
Following sequence shows what triggers NR RRC Reconfiguration on UE. As you see here, this can be triggered by LTE (in NSA(Non-Standalone) deployment) or by NR (in SA(Standalone) deployment).
Purpose (Function) of RRC Reconfiguration
As you can guess from the word itself, the major functionality of RrcReconfiguration is to setup or modify RRC configuration. This imply that there should have already been some RRC Configuration process before this message. It is true. In LTE, there is a step RrcConnectionSetup message before RrcConnectionReconfiguration and in NR there is RRC Setup message before RrcReconfiguration.
The major functionality of RRC Reconfiguration are to configure following RRC Components/Functions
For each of the RRC Component/Functions, RrcReconfiguration message can do following operations
What should UE do when it gets RRCReconfiguration message ?
What should a UE do when it gets RrcReconfiguration message ? The answer is simple. Do whatever the message tell you to do. I know this is not the answer you want to hear :). Like in LTE, RRCReconfiguration is the most complicated message in NR. Understanding this message in full detail is like understanding the full protocol stack of NR. You will see a good framework or starting point of understanding this message in 3GPP 38.331 - 5.3.5.3 Reception of an RRCReconfiguration by the UE. Followings are some of the highest level IE(Information Elements) that you may start with.
Since this message carries too many parameters (Information Elements), you would easily get lost if you try to go through each and every items from the beginning. I would suggest you to pick up any one of the high level items from the items listed above and try to understand the overall functionality of the high level item ,and then move to next item and get an overview and so on. When you have overall understandings on every items listed above, then move down to next level (one-step down) in each section.
RRC Reconfiguration Message structure
Followings are RRC Reconfiguration Message structure from 38.331. (NOTE : This is not necessarily from the latest specification. So just get the overal structure from this note and double check with 3GPP document version that you are specifically interested in).
RRCReconfiguration ::= SEQUENCE { rrc-TransactionIdentifier RRC-TransactionIdentifier, criticalExtensions CHOICE { rrcReconfiguration RRCReconfiguration-IEs, criticalExtensionsFuture SEQUENCE {} } }
RRCReconfiguration-IEs ::= SEQUENCE { radioBearerConfig RadioBearerConfig OPTIONAL, -- Need M secondaryCellGroup OCTET STRING (CONTAINING CellGroupConfig) OPTIONAL, -- Need M measConfig MeasConfig OPTIONAL, -- Need M lateNonCriticalExtension OCTET STRING OPTIONAL, nonCriticalExtension SEQUENCE {} OPTIONAL }
RadioBearerConfig ::= SEQUENCE { srb-ToAddModList SRB-ToAddModList OPTIONAL, -- Need N srb3-ToRelease ENUMERATED{true} OPTIONAL, -- Need N drb-ToAddModList DRB-ToAddModList OPTIONAL, -- Need N drb-ToReleaseList DRB-ToReleaseList OPTIONAL, -- Need N securityConfig SecurityConfig OPTIONAL, -- Cond M ... }
SRB-ToAddModList ::= SEQUENCE (SIZE (1..2)) OF SRB-ToAddMod
SRB-ToAddMod ::= SEQUENCE { srb-Identity SRB-Identity, reestablishPDCP ENUMERATED{true} OPTIONAL, - Need N discardOnPDCP ENUMERATED{true} OPTIONAL, -- Need N pdcp-Config PDCP-Config OPTIONAL, -- Cond PDCP ... }
DRB-ToAddModList ::= SEQUENCE (SIZE (1..maxDRB)) OF DRB-ToAddMod DRB-ToAddMod ::= SEQUENCE { cnAssociation CHOICE { eps-BearerIdentity INTEGER (0..15) OPTIONAL, sdap-Config SDAP-Config OPTIONAL }, drb-Identity DRB-Identity, reestablishPDCP ENUMERATED{true} OPTIONAL, recoverPDCP ENUMERATED{true} OPTIONAL, pdcp-Config PDCP-Config OPTIONAL, ... }
SDAP-Config ::= SEQUENCE { pdu-Session PDU-SessionID, sdap-HeaderDL ENUMERATED {present, absent}, sdap-HeaderUL ENUMERATED {present, absent}, defaultDRB BOOLEAN, mappedQoS-FlowsToAdd SEQUENCE (SIZE (1..maxNrofQFIs)) OF QFI OPTIONAL, mappedQoS-FlowsToRelease SEQUENCE (SIZE (1..maxNrofQFIs)) OF QFI OPTIONAL, ... }
QFI ::= INTEGER (0..maxQFI) PDU-SessionID ::= INTEGER (0..255)
PDCP-Config ::= SEQUENCE { drb SEQUENCE { discardTimer ENUMERATED {ms10, ms20, ms30, ms40, ms50, ms60, ms75, ms100, ms150, ms200, ms250, ms300, ms500, ms750, ms1500, infinity} OPTIONAL, --Cond Setup pdcp-SN-SizeUL ENUMERATED {len12bits, len18bits} OPTIONAL, -- Cond Setup2 pdcp-SN-SizeDL ENUMERATED {len12bits, len18bits} OPTIONAL, -- Cond Setup2 headerCompression CHOICE { notUsed NULL, rohc SEQUENCE { maxCID INTEGER (1..16383) DEFAULT 15, profiles SEQUENCE { profile0x0001 BOOLEAN, profile0x0002 BOOLEAN, profile0x0003 BOOLEAN, profile0x0004 BOOLEAN, profile0x0006 BOOLEAN, profile0x0101 BOOLEAN, profile0x0102 BOOLEAN, profile0x0103 BOOLEAN, profile0x0104 BOOLEAN }, drb-ContinueROHC ENUMERATED { true } OPTIONAL -- Need N }, uplinkOnlyROHC SEQUENCE { maxCID INTEGER (1..16383) DEFAULT 15, profiles SEQUENCE { profile0x0006 BOOLEAN }, drb-ContinueROHC ENUMERATED { true } OPTIONAL -- Need N }, ... }, integrityProtection ENUMERATED { enabled } OPTIONAL, -- Cond ConnectedTo5GC statusReportRequired ENUMERATED { true } OPTIONAL, -- Cond Rlc-AM outOfOrderDelivery ENUMERATED { true } OPTIONAL -- Need R } OPTIONAL, -- Cond DRB moreThanOneRLC SEQUENCE { primaryPath SEQUENCE { cellGroup CellGroupId OPTIONAL, -- Need R logicalChannel LogicalChannelIdentity OPTIONAL -- Need R }, ul-DataSplitThreshold UL-DataSplitThreshold OPTIONAL, -- Cond SplitBearer pdcp-Duplication BOOLEAN OPTIONAL -- Need R } 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, ms240, ms260, ms280, ms300, ms500, ms750, ms1000, ms1250, ms1500, ms1750, ms2000, ms2250, ms2500, ms2750, ms3000, spare28, spare27, spare26, spare25, spare24, spare23, spare22, spare21, spare20, spare19, spare18, spare17, spare16, spare15, spare14, spare13, spare12, spare11, spare10, spare09, spare08, spare07, spare06, spare05, spare04, spare03, spare02, spare01 } OPTIONAL, -- Need S ..., [[ cipheringDisabled ENUMERATED {true} OPTIONAL -- Cond ConnectedTo5GC ]] }
UL-DataSplitThreshold ::= ENUMERATED { b0, b100, b200, b400, b800, b1600, b3200, b6400, b12800, b25600, b51200, b102400, b204800, b409600, b819200, b1228800, b1638400, b2457600, b3276800, b4096000, b4915200, b5734400, b6553600, infinity, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1}
DRB-ToReleaseList ::= SEQUENCE (SIZE (1..maxDRB)) OF DRB-Identity
SecurityConfig ::= SEQUENCE { securityAlgorithmConfig SecurityAlgorithmConfig OPTIONAL, keyToUse ENUMERATED{KeNB, S-KgNB} OPTIONAL ... }
SecurityAlgorithmConfig ::= SEQUENCE { cipheringAlgorithm CipheringAlgorithm, integrityProtAlgorithm IntegrityProtAlgorithm OPTIONAL, -- Need R ... }
IntegrityProtAlgorithm ::= ENUMERATED { nia0, nia1, nia2, nia3, spare4, spare3, spare2, spare1, ...}
CipheringAlgorithm ::= ENUMERATED { nea0, nea1, nea2, nea3, spare4, spare3, spare2, spare1, ...}
CellGroupConfig ::= SEQUENCE { cellGroupId CellGroupId, rlc-BearerToAddModList SEQUENCE (SIZE(1..maxLC-ID)) OF RLC-Bearer-Config OPTIONAL, rlc-BearerToReleaseList SEQUENCE (SIZE(1..maxLC-ID)) OF LogicalChannelIdentity OPTIONAL, mac-CellGroupConfig MAC-CellGroupConfig OPTIONAL, physicalCellGroupConfig PhysicalCellGroupConfig OPTIONAL, spCellConfig SpCellConfig OPTIONAL, sCellToAddModList SEQUENCE (SIZE (1..maxNrofSCells)) OF SCellConfig OPTIONAL, sCellToReleaseList SEQUENCE (SIZE (1..maxNrofSCells)) OF SCellIndex OPTIONAL, ... }
MAC-CellGroupConfig ::= SEQUENCE { drx-Config SetupRelease { DRX-Config } OPTIONAL, -- Need M schedulingRequestConfig SchedulingRequestConfig OPTIONAL, -- Need M bsr-Config BSR-Config OPTIONAL, -- Need M tag-Config TAG-Config OPTIONAL, -- Need M phr-Config SetupRelease { PHR-Config } OPTIONAL, -- Need M skipUplinkTxDynamic BOOLEAN, cs-RNTI SetupRelease { RNTI-Value } OPTIONAL -- Need M }
DRX-Config ::= SEQUENCE { drx-onDurationTimer CHOICE { subMilliSeconds INTEGER (1..31), milliSeconds ENUMERATED { ms1, ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30, ms40, ms50, ms60, ms80, ms100, ms200, ms300, ms400, ms500, ms600, ms800, ms1000, ms1200, ms1600, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 } }, drx-InactivityTimer ENUMERATED { ms0, ms1, ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30, ms40, ms50, ms60, ms80, ms100, ms200, ms300, ms500, ms750, ms1280, ms1920, ms2560, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1}, drx-HARQ-RTT-TimerDL INTEGER (0..56), drx-HARQ-RTT-TimerUL INTEGER (0..56), drx-RetransmissionTimerDL ENUMERATED { sl0, sl1, sl2, sl4, sl6, sl8, sl16, sl24, sl33, sl40, sl64, sl80, sl96, sl112, sl128, sl160, sl320, spare15, spare14, spare13, spare12, spare11, spare10, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1}, drx-RetransmissionTimerUL ENUMERATED { sl0, sl1, sl2, sl4, sl6, sl8, sl16, sl24, sl33, sl40, sl64, sl80, sl96, sl112, sl128, sl160, sl320, spare15, spare14, spare13, spare12, spare11, spare10, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 }, 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, ms30, ms32, ms35, ms40, ms64, ms80, ms128, ms160, ms256, ms320, ms512, ms640, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 }, drx-ShortCycleTimer INTEGER (1..16) } OPTIONAL, -- Need R drx-SlotOffset INTEGER (0..31)
}
PHR-Config ::= SEQUENCE { phr-PeriodicTimer ENUMERATED {sf10, sf20, sf50, sf100, sf200,sf500, sf1000, infinity}, phr-ProhibitTimer ENUMERATED {sf0, sf10, sf20, sf50, sf100,sf200, sf500, sf1000}, phr-Tx-PowerFactorChange ENUMERATED {dB1, dB3, dB6, infinity}, multiplePHR BOOLEAN, phr-Type2PCell BOOLEAN, phr-Type2OtherCell BOOLEAN, phr-ModeOtherCG ENUMERATED {real, virtual}
}
TAG-Config ::= SEQUENCE { tag-ToReleaseList SEQUENCE (SIZE (1..maxNrofTAGs)) OF TAG-Id OPTIONAL,-- Need N tag-ToAddModList SEQUENCE (SIZE (1..maxNrofTAGs)) OF TAG-ToAddMod OPTIONAL -- Need N }
TAG-ToAddMod ::= SEQUENCE { tag-Id TAG-Id, timeAlignmentTimer TimeAlignmentTimer, ... }
TAG-Id ::= INTEGER (0..maxNrofTAGs-1)
TimeAlignmentTimer ::= ENUMERATED {ms500, ms750, ms1280, ms1920, ms2560, ms5120, ms10240, infinity}
BSR-Config ::= SEQUENCE { periodicBSR-Timer ENUMERATED { sf1, sf5, sf10, sf16, sf20, sf32, sf40, sf64, sf80, sf128, sf160, sf320, sf640, sf1280, sf2560, infinity}, retxBSR-Timer ENUMERATED { sf10, sf20, sf40, sf80, sf160, sf320, sf640, sf1280, sf2560, sf5120, sf10240, spare5, spare4,spare3, spare2, spare1}, logicalChannelSR-DelayTimer ENUMERATED { sf20, sf40, sf64, sf128, sf512, sf1024, sf2560, spare1} OPTIONAL -- Need R }
SchedulingRequestConfig ::= SEQUENCE { schedulingRequestToAddModList SEQUENCE (SIZE (1..maxNrofSR-ConfigPerCellGroup)) OF SchedulingRequestToAddMod OPTIONAL, -- Need N schedulingRequestToReleaseList SEQUENCE (SIZE (1..maxNrofSR-ConfigPerCellGroup)) OF SchedulingRequestId OPTIONAL -- Need N }
SchedulingRequestToAddMod ::= SEQUENCE { sr-ConfigIndex SchedulingRequestId, sr-ProhibitTimer ENUMERATED {ms1, ms2, ms4, ms8, ms16, ms32, ms64, ms128} OPTIONAL, -- Need S sr-TransMax ENUMERATED {n4,n8,n16,n32,n64,spare3,spare2,spare1} }
SchedulingRequestId ::= INTEGER (0..7)
CellGroupId ::= INTEGER (1.. maxSCellGroups)
LCH-Config ::= SEQUENCE { logicalChannelIdentity LogicalChannelIdentity, servedRadioBearer INTEGER (1..32) OPTIONAL, reestablishRLC ENUMERATED {true} OPTIONAL, rlc-Config RLC-Config OPTIONAL, mac-LogicalChannelConfig LogicalChannelConfig OPTIONAL }
LogicalChannelIdentity ::= INTEGER (1..FFS)
PhysicalCellGroupConfig ::= SEQUENCE { harq-ACK-SpatialBundlingPUCCH ENUMERATED {true} OPTIONAL, -- Need S harq-ACK-SpatialBundlingPUSCH ENUMERATED {true} OPTIONAL, -- Need S p-NR P-Max OPTIONAL, -- Need R pdsch-HARQ-ACK-Codebook ENUMERATED {semiStatic, dynamic}, tpc-SRS-RNTI RNTI-Value OPTIONAL, -- Need R tpc-PUCCH-RNTI RNTI-Value OPTIONAL, -- Need R tpc-PUSCH-RNTI RNTI-Value OPTIONAL, -- Need R sp-CSI-RNTI RNTI-Value OPTIONAL, -- Cond SP-CSI-Report cs-RNTI SetupRelease { RNTI-Value } OPTIONAL, -- Need R }
MeasConfig ::= SEQUENCE { measObjectToRemoveList MeasObjectToRemoveList OPTIONAL, -- Need N measObjectToAddModList MeasObjectToAddModList OPTIONAL, -- Need N reportConfigToRemoveList ReportConfigToRemoveList OPTIONAL, -- Need N reportConfigToAddModList ReportConfigToAddModList OPTIONAL, -- Need N measIdToRemoveList MeasIdToRemoveList OPTIONAL, -- Need N measIdToAddModList MeasIdToAddModList OPTIONAL, -- Need N s-MeasureConfig CHOICE { ssb-RSRP RSRP-Range, csi-RSRP RSRP-Range } OPTIONAL, -- Need M quantityConfig QuantityConfig OPTIONAL, -- Need M measGapConfig MeasGapConfig OPTIONAL, -- Need M measGapSharingConfig MeasGapSharingConfig OPTIONAL, -- Need M ... } MeasObjectToRemoveList ::= SEQUENCE (SIZE (1..maxNrofObjectId)) OF MeasObjectId MeasIdToRemoveList ::= SEQUENCE (SIZE (1..maxNrofMeasId)) OF MeasId ReportConfigToRemoveList ::= SEQUENCE (SIZE (1..maxReportConfigId)) OF ReportConfigId
MeasGapConfig ::= SEQUENCE { gapFR2 SetupRelease { GapConfig } OPTIONAL, -- Need M ... }
GapConfig ::= SEQUENCE { gapOffset INTEGER (0..159), mgl ENUMERATED {ms1dot5, ms3, ms3dot5, ms4, ms5dot5, ms6}, mgrp ENUMERATED {ms20, ms40, ms80, ms160}, mgta ENUMERATED {ms0, ms0dot25, ms0dot5}, ... }
MeasGapSharingConfig ::= SEQUENCE { gapSharingFR2 SetupRelease { MeasGapSharingScheme } OPTIONAL, -- Need M ... } MeasGapSharingScheme ::= ENUMERATED { scheme00, scheme01, scheme10, scheme11 }
QuantityConfig ::= SEQUENCE { quantityConfigNR-List SEQUENCE (SIZE (1..maxNrofQuantityConfig)) OF QuantityConfigNR OPTIONAL, -- Need M ... }
QuantityConfigNR::= SEQUENCE { quantityConfigCell QuantityConfigRS, quantityConfigRS-Index QuantityConfigRS OPTIONAL -- Need M }
QuantityConfigRS ::= SEQUENCE { ssb-FilterConfig FilterConfig, cs-RS-FilterConfig FilterConfig }
FilterConfig ::= SEQUENCE { filterCoefficientRSRP FilterCoefficient DEFAULT fc4, filterCoefficientRSRQ FilterCoefficient DEFAULT fc4, filterCoefficientRS-SINR FilterCoefficient DEFAULT fc4 }
SpCellConfig ::= SEQUENCE { servCellIndex ServCellIndex OPTIONAL, -- Cond SCG reconfigurationWithSync ReconfigurationWithSync OPTIONAL, rlf-TimersAndConstants etupRelease { RLF-TimersAndConstants } OPTIONAL, -- Need M rlmInSyncOutOfSyncThreshold INTEGER (0..1) OPTIONAL, -- Need M spCellConfigDedicated ServingCellConfig OPTIONAL, -- Need M ... }
ReconfigurationWithSync ::= SEQUENCE { spCellConfigCommon ServingCellConfigCommon OPTIONAL, -- Need M newUE-Identity RNTI-Value, t304 ENUMERATED {ms50, ms100, ms150, ms200, ms500, ms1000 , ms2000, ms10000}, rach-ConfigDedicated CHOICE { uplink RACH-ConfigDedicated, supplementaryUplink RACH-ConfigDedicated } OPTIONAL, -- Need N ... }
ServingCellConfig ::= SEQUENCE { tdd-UL-DL-ConfigurationDedicated TDD-UL-DL-ConfigDedicated OPTIONAL,-- Cond TDD initialDownlinkBWP BWP-DownlinkDedicated OPTIONAL, -- Cond ServCellAdd downlinkBWP-ToReleaseList SEQUENCE (SIZE (1..maxNrofBWPs)) OF BWP-Id OPTIONAL, downlinkBWP-ToAddModList SEQUENCE (SIZE (1..maxNrofBWPs)) OF BWP-Downlink OPTIONAL firstActiveDownlinkBWP-Id BWP-Id OPTIONAL, -- Need R bwp-InactivityTimer ENUMERATED {ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30, ms40,ms50, ms60, ms80, ms100, ms200, ms300, ms500, ms750, ms1280, ms1920, ms2560, spare10, spare9, spare8, spare7, spare6, spare5, spare4, spare3, spare2, spare1 } OPTIONAL, defaultDownlinkBWP-Id BWP-Id OPTIONAL, -- Need M uplinkConfig UplinkConfig OPTIONAL, -- Cond ServCellAdd-UL supplementaryUplink UplinkConfig OPTIONAL, -- Cond ServCellAdd-SUL pdsch-ServingCellConfig SetupRelease { PDSCH-ServingCellConfig } OPTIONAL, -- Need M csi-MeasConfig SetupRelease { CSI-MeasConfig } OPTIONAL, -- Need M carrierSwitching SetupRelease { SRS-CarrierSwitching} OPTIONAL, -- Need M sCellDeactivationTimer ENUMERATED {ms20, ms40, ms80, ms160, ms200, ms240, ms320, ms400, ms480, ms520, ms640, ms720, ms840, ms1280, spare2,spare1} OPTIONAL,-- Cond ServingCellWithoutPUCCH crossCarrierSchedulingConfig CrossCarrierSchedulingConfig OPTIONAL, -- Need M tag-Id TAG-Id, ue-BeamLockFunction ENUMERATED {enabled} OPTIONAL, -- Need R pathlossReferenceLinking ENUMERATED {pCell, sCell} OPTIONAL -- Cond SCellOnly }
PDSCH-ServingCellConfig ::= SEQUENCE { codeBlockGroupTransmission SetupRelease { PDSCH-CodeBlockGroupTransmission } OPTIONAL, -- Need M xOverhead ENUMERATED { xOh6, xOh12, xOh18 } OPTIONAL,-- Need S nrofHARQ-ProcessesForPDSCH ENUMERATED {n2, n4, n6, n10, n12, n16} OPTIONAL,-- Need S pucch-Cell ServCellIndex OPTIONAL , -- Cond SCellAddOnly ... }
PDSCH-CodeBlockGroupTransmission ::= SEQUENCE { maxCodeBlockGroupsPerTransportBlock ENUMERATED {n2, n4, n6, n8}, codeBlockGroupFlushIndicator BOOLEAN, ... }
UplinkConfig ::= SEQUENCE { initialUplinkBWP BWP-UplinkDedicated OPTIONAL, -- Cond ServCellAdd. uplinkBWP-ToReleaseList SEQUENCE (SIZE (1..maxNrofBWPs)) OF BWP-Id OPTIONAL,-- Need N uplinkBWP-ToAddModList SEQUENCE (SIZE (1..maxNrofBWPs)) OF BWP-Uplink OPTIONAL, firstActiveUplinkBWP-Id BWP-Id OPTIONAL, -- Need R pusch-ServingCellConfig SetupRelease { PUSCH-ServingCellConfig } OPTIONAL, ... }
ServingCellConfigCommon ::= SEQUENCE { physCellId PhysCellId downlinkConfigCommon DownlinkConfigCommon, uplinkConfigCommon UplinkConfigCommon supplementaryUplinkConfig UplinkConfigCommon n-TimingAdvanceOffset ENUMERATED { n0, n25600, n39936 } ssb-PositionsInBurst CHOICE { shortBitmap BIT STRING (SIZE (4)), mediumBitmap BIT STRING (SIZE (8)), longBitmap BIT STRING (SIZE (64)) } OPTIONAL, -- Need R, ssb-periodicityServingCell ENUMERATED { ms5, ms10, ms20, ms40, ms80, ms160, spare2, spare1 }OPTIONAL, -- Need S dmrs-TypeA-Position ENUMERATED {pos2, pos3}, lte-CRS-ToMatchAround SetupRelease { RateMatchPatternLTE-CRS } OPTIONAL, rateMatchPatternToAddModList SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF rateMatchPatternToReleaseList SEQUENCE (SIZE (1..maxNrofRateMatchPatterns)) OF RateMatchPatternId ssbsubcarrierSpacing SubcarrierSpacing tdd-UL-DL-ConfigurationCommon TDD-UL-DL-ConfigCommon ss-PBCH-BlockPower INTEGER (-60..50), ... }
RateMatchPatternLTE-CRS ::= SEQUENCE { carrierFreqDL INTEGER (0..16383), carrierBandwidthDL ENUMERATED {n6, n15, n25, n50, n75, n100, spare2, spare1}, mbsfn-SubframeConfigList EUTRA-MBSFN-SubframeConfigList OPTIONAL, nrofCRS-Ports ENUMERATED {n1, n2, n4}, v-Shift ENUMERATED {n0, n1, n2, n3, n4, n5} }
RateMatchPattern ::= SEQUENCE { rateMatchPatternId RateMatchPatternId, patternType CHOICE { bitmaps SEQUENCE { resourceBlocks BIT STRING (SIZE (275)), symbolsInResourceBlock CHOICE { oneSlot BIT STRING (SIZE (14)), twoSlots BIT STRING (SIZE (28)) }, periodicityAndPattern CHOICE { n2 BIT STRING (SIZE (2)), n4 BIT STRING (SIZE (4)), n5 BIT STRING (SIZE (5)), n8 BIT STRING (SIZE (8)), n10 BIT STRING (SIZE (10)), n20 BIT STRING (SIZE (20)), n40 BIT STRING (SIZE (40)) } OPTIONAL, -- Need S ... }, controlResourceSet ControlResourceSetId }, subcarrierSpacing SubcarrierSpacing OPTIONAL, -- Cond CellLevel mode ENUMERATED { dynamic, semiStatic }, ... }
EUTRA-MBSFN-SubframeConfigList ::= SEQUENCE (SIZE (1..maxMBSFN-Allocations)) OF EUTRA-MBSFN-SubframeConfig
EUTRA-MBSFN-SubframeConfig ::= SEQUENCE { radioframeAllocationPeriod ENUMERATED {n1, n2, n4, n8, n16, n32}, radioframeAllocationOffset INTEGER (0..7), subframeAllocation CHOICE { oneFrame BIT STRING (SIZE(6)), fourFrames BIT STRING (SIZE(24)) }, subframeAllocation-v1430 CHOICE { oneFrame-v1430 BIT STRING (SIZE(2)), fourFrames-v1430 BIT STRING (SIZE(8)) } OPTIONAL, -- Need R ... }
SubcarrierSpacing ::= ENUMERATED {kHz15, kHz30, kHz60, kHz120, kHz240, spare3, spare2, spare1}
UplinkConfigCommon ::= SEQUENCE {. frequencyInfoUL FrequencyInfoUL initialUplinkBWP BWP-UplinkCommon }
FrequencyInfoDL ::= SEQUENCE { absoluteFrequencySSB ARFCN-ValueNR, frequencyBandList MultiFrequencyBandListNR, absoluteFrequencyPointA ARFCN-ValueNR, scs-SpecificCarrierList SEQUENCE (SIZE (1..maxSCSs)) OF SCS-SpecificCarrier, ... }
SCS-SpecificCarrier ::= SEQUENCE { offsetToCarrier INTEGER (0..2199), subcarrierSpacing SubcarrierSpacing, carrierBandwidth INTEGER (1..maxNrofPhysicalResourceBlocks), ..., [[ txDirectCurrentLocation-v1530 INTEGER (0..4095) OPTIONAL -- Need S ]] }
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 resource element RE=#0 (subcarrier #0) of resource block RB#10 of the SS block. The cell-defining SSB of the PCell is always on the sync raster. Frequencies are considered to be on the sync raster if they are also identifiable with a GSCN value. If the field is absent, the SSB related parameters should be absent, e.g. ssb-PositionsInBurst, ssb-periodicityServingCell and subcarrierSpacing in ServingCellConfigCommon IE. If the field is absent, the UE obtains timing reference from the SpCell. This is only supported in case the Scell is in the same frequency band as the SpCell
absoluteFrequencyPointA : Absolute frequency position of the reference resource block (Common RB 0). Its lowest subcarrier is also known as Point A. Note that the lower edge of the actual carrier is not defined by this field but rather in the scs-SpecificCarrierList. Corresponds to L1 parameter 'offset-ref-low-scs-ref-PRB' . See this page for further details.
carrierBandwidth : Width of this carrier in number of PRBs (using the subcarrierSpacing defined for this carrier) Corresponds to L1 parameter 'BW
offsetToCarrier : Offset in frequency domain between Point A (lowest subcarrier of common RB 0) and the lowest usable subcarrier on this carrier in number of PRBs (using the subcarrierSpacing defined for this carrier). The maximum value corresponds to 275*8-1. Corresponds to L1 parameter 'offset-pointA-low-scs'
SubcarrierSpacing : Subcarrier spacing of this carrier. It is used to convert the offsetToCarrier into an actual frequency. Only the values 15 or 30 kHz (<6GHz), 60 or 120 kHz (>6GHz) are applicable. The network configures all SCSs of configured BWPs configured in this serving cell. Corresponds to L1 parameter 'ref-scs'
txDirectCurrentLocation : Indicates the downlink Tx Direct Current location for the carrier. A value in the range 0..3299 indicates the subcarrier index within the carrier. The values in the value range 3301..4095 are reserved and ignored by the UE. If this field is absent, the UE assumes the default value of 3300 (i.e. "Outside the carrier").
offsetToPointA : The offset in PRB between the Point A and the lowest subcarrier of the lowest PRB of the cell-defining SSB after floating SSB is resolved. See this page for further details.
FrequencyInfoUL ::= SEQUENCE { frequencyBandList MultiFrequencyBandListNR absoluteFrequencyPointA ARFCN-ValueNR scs-SpecificCarriers SEQUENCE (SIZE (1..maxSCSs)) OF SCS-SpecificCarrier, additionalSpectrumEmission AdditionalSpectrumEmission p-Max P-Max frequencyShift7p5khz ENUMERATED {true} ... }
subcarrierSpacingCommon : Indicates Subcarrier spacing for SIB1, Msg.2/4 for initial access and SI-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 block grid in number of subcarriers. Absence of the field indicates that no offset if applied (offset = 0). See 38.211, 7.4.3.1) ssb-PositionsInBurst : Indicates the time domain positions of the transmitted SS-blocks in an SS-burst. It corresponds to L1 parameter 'SSB-Transmitted' (see 38.213, section 4.1) shortBitmap : bitmap for sub 3 GHz mediumBitmap : bitmap for 3-6 GHz longBitmap : bitmap for above 6 GHz ssb-periodicityServingCell : The SSB periodicity in msec for the rate matching purpose (see 38.211-7.4.3.1) dmrs-TypeA-Position : Position of (first) DL DM-RS (see 38.211, section 7.4.1.1.1). This field is usually in MIB. Assuming that the UE does not need to acquire MIB before sending RA to target cell, this parameter should also be here.
subcarrierSpacingSSB : Subcarrier spacing of SSB. Used only for non-initial access (e.g. SCells, PCell of SCG). ss-PBCH-BlockPower : TX power that the NW used for SSB transmission. The UE uses it to estimate the RA preamble TX power rach-ConfigCommon : Parameters that are also conveyed via system information (SIB1) but which are provided here to accelerate handover and to avoid that UEs need to read system information from SCells. See rach-ConfigCommon details in RACH page.
newUE-Identity : This is used as an RNTI assigning a C-RNTI to a UE. 38.331(v15.1)-5.3.5.5.2 states 'apply the value of the newUE-Identity as the C-RNTI for this cell group'
Example :
Example 01 : Initial NR Addition. Following is a RrcConnectionReconfiguration for NR Addition from Amarisoft. Click here to get the decoded message.
Reference
[1]
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||