>
Home5G NRCross-Layer TopicsNSA Attach Flow
🧠 Cross-Layer TopicsIntermediate

5G NSA (EN-DC) Attach Call Flow in 5G NR

The Non-Standalone attach, step by step: LTE RACH → EPS attach → B1 measurement → X2 SgNB addition → NR RRC → dual connectivity.

📚 3GPP-basedTS 37.340TS 36.331TS 38.331TS 38.473

In NSA the UE does not attach to 5G. It attaches to LTE, over S1 to an EPC, exactly as it would with no NR in the network at all -- and only then, if a long chain of capability bits, band combinations and measurement thresholds all line up, is an NR leg bolted on as a secondary cell group. That ordering is the whole subject. It means the NR radio is never on the critical path for service, that a broken NR leg is invisible to the user, and that almost every NSA field problem turns out to live in the addition step rather than in NR. This document walks the whole chain: the dcnr bit and restrictDCnR flag that gate it, the EN-DC band combination that gates it again, event B1 as the only trigger there is, the full X2AP SGNB ADDITION sequence with the three-level container nesting that forces an NSA log to carry two RRC decoders, contention-free random access at the PSCell, the option 3x path switch, the four bearer types and why three of them use NR PDCP, S-K_gNB chained off K_eNB with an sk-counter, the uplink power problem that surprises everyone, SCG failure and its deliberate silence, and a failure taxonomy with ten owners in it. The SA counterpart -- the same UE, an AMF, a 5G-GUTI and a real NAS registration -- is the companion 01 Registration Process; read the two together, because the contrast explains NSA faster than NSA explains itself.

Contents
  1. 01Why NSA Exists, and What It Is Not
  2. 02The Nodes, the Interfaces, and What Is Missing
  3. 03Option 3, 3a and 3x: Where the User Plane Anchors
  4. 04Phase 1: The LTE Attach, and the Two Bits That Decide Everything
  5. 05Phase 2: Capability, Band Combinations, and Event B1
  6. 06Phase 3, Part 1: SGNB ADDITION REQUEST
  7. 07Phase 3, Part 2: The Acknowledge and the CG-Config
  8. 08Three Levels of Container: NR RRC Inside LTE RRC Inside X2AP
  9. 09Phase 3, Part 3: Reconfiguration, PSCell RACH, SCG Active
  10. 10Phase 4: E-RAB Modification, the Path Switch, the End Marker
  11. 11The Four Bearer Types, and Why NR PDCP Wins
  12. 12Security: S-K_gNB, the sk-counter and an LTE Root
  13. 13Power and the Uplink: The Field Surprise
  14. 14Ongoing Operation: Modification, PSCell Change, Release
  15. 15SCG Failure, and Why It Is Silent
  16. 16Timers and Parameters Reference
  17. 17The NSA Failure Taxonomy
  18. 18ASN.1 Structures
  19. 19Worked Arithmetic
  20. 20Illustrative Message Traces
  21. 21Release Deltas: Rel-15 to Rel-18
  22. 22Reading NSA in Logs: A Checklist
  23. 23Glossary
  24. 24References

1. Why NSA Exists, and What It Is Not

NSA exists because in 2018 operators had spectrum at 3.5 GHz, a requirement to launch 5G, and no 5G core. EN-DC -- E-UTRA-NR Dual Connectivity, the radio mechanism behind what everyone calls NSA -- let them put an NR carrier on the air, aggregate it with an existing LTE carrier, and sell the result as 5G, without replacing a single EPC node or writing a line of 5G NAS. TS 37.340 cl. 4.1

That is a deployment-economics answer, not an engineering one, and it is worth being blunt about it because it explains every awkward property of NSA. The awkwardness is not accidental design; it is the price of not touching the core.

Start with what NSA is not. It is not a 5G attach. There is no 5G registration, no AMF, no SUCI, no 5G-GUTI, no 5G NAS security context and no NR RRC state machine of the UE's own. The UE performs an EPS attach over E-UTRA to an MME, exactly as an LTE-only UE would, and everything NR-related happens afterwards, inside an already-established LTE RRC connection, as an addition to it. The companion 01 Registration Process describes the SA case; hold the two side by side while you read this table.

DimensionNSA (EN-DC, option 3x)SA (option 2)Consequence for the engineer
Core networkEPC. MME, S-GW, P-GW, HSS. S1AP and GTPv2-C.5GC. AMF, SMF, UPF, UDM, AUSF. NGAP and SBI.Nothing you know about NGAP applies. An NSA trace has no N2, and a tool set up for 5GC signalling will show you an empty capture.
Control-plane anchorThe MeNB, always. One S1-MME association, one RRC connection, one SRB1 on the LTE leg. The SgNB has no core control-plane interface at all.The gNB. NGAP to the AMF, SRB1 on NR.In NSA every NR reconfiguration reaches the UE as an LTE RRC message. If SRB1 on LTE is unhealthy, NR cannot be configured, changed or released.
RRC state machineOne, owned by LTE. RRC_IDLE / RRC_CONNECTED per TS 36.331. The NR leg has no state of its own -- it is a cell group inside the LTE connection.One, owned by NR, with RRC_INACTIVE as a third state.There is no RRC_INACTIVE in NSA. A UE that goes idle drops the whole NR leg and must be re-added from scratch on the next connection.
Mobility ownershipThe MeNB decides everything: LTE handover, whether to keep NR across it, PSCell change, SgNB change, SgNB release. The SgNB can only ask.The gNB, with Xn or NG handover. See companions 23 Xn Handover and 24 NG/N2 Handover.An NR coverage hole is handled by the LTE cell's RRM, which may have no NR measurement configured for the target. NR is routinely lost at LTE handover for entirely LTE reasons.
NASEPS NAS, TS 24.301. Attach, EPS bearers, EPS network feature support. No 5GMM anywhere.5GMM, TS 24.501. Registration, PDU sessions, 5GMM capability.NR capability is negotiated in EPS NAS via one bit, DCNR, and can be refused by the MME with one flag. Both are in §4.
Security rootK_ASME from EPS AKA, then K_eNB, then S-K_gNB derived from K_eNB with an sk-counter. TS 33.401.K_AUSF / K_SEAF / K_AMF / K_gNB. TS 33.501.The NR air interface in NSA is protected by keys rooted in an LTE key hierarchy. Nothing in the 5G key tree is present. See §12 and companion 27 AS Security Mode.
VoiceVoLTE on the LTE leg, over an MCG bearer with QCI 1. No VoNR, no IMS over NR.VoNR over NR, or EPS fallback to LTE.Voice never depends on NR, which is why the SCG can fail silently (§15) and why operators tolerated NSA for years.
Required UE supportDCNR bit in the UE network capability, an EN-DC band combination covering the deployed LTE and NR bands, UE-MRDC-Capability, and NR PDCP. All optional features in Rel-15.NR band support and UE-NR-Capability. NR is the primary RAT.Three independent capability gates, each of which fails silently and none of which produces an error message. This is §5 and the top of the failure taxonomy in §17.

Table 1. Read the last column top to bottom. Every row turns into a diagnostic that has no equivalent in SA, and every one of them is a place where NR can be absent while the UE is perfectly happy on LTE.

💡
THE ONE THING TO TAKE AWAY

The single organising fact of this document: the UE attaches to LTE, and NR is added afterwards.

Service does not depend on the addition succeeding. The UE is attached, authenticated, has an IP address and is passing traffic before the NR leg is even considered. Everything NR contributes is extra throughput on top of a working connection.

So when an NSA UE has no NR, the fault is almost never in NR. It is in the chain of decisions that leads to the addition: a capability bit, a subscription flag, a band-combination entry, a measurement threshold, an X2 association, an octet string that would not parse. NR itself is usually fine, and often has not been asked to do anything yet.

One more piece of vocabulary discipline, because it causes real confusion. Option 3 is the 3GPP architecture-option number for EN-DC with an EPC TS 37.340 cl. 4.1.2; option 2 is SA NR with a 5GC. Within option 3 there are three user-plane variants -- 3, 3a and 3x -- which are about where the S1-U terminates and nothing else (§3). And the node names differ from everything in the rest of this document set: the LTE node is the MeNB (master eNB), the NR node is the SgNB (secondary gNB, formally an en-gNB, meaning a gNB with an S1 rather than an NG interface). en-gNB and gNB are different node types in 3GPP terms, not two names for the same thing.

2. The Nodes, the Interfaces, and What Is Missing

Four network nodes, five interfaces, and two protocols you may not have looked at in years. The most useful way to learn the architecture is by subtraction: list what an SA deployment has, then delete the half of it that NSA does not.

Figure 1. The red box is the point. There is no AMF, so there is no NGAP, so the SgNB has no path to the core control plane -- every fact the SgNB knows about the UE arrived over X2-C from the MeNB, including the UE's capabilities and its security key.
InterfaceBetweenProtocol and specWhat rides on itWhat breaks if it is down
LTE UuUE -- MeNBE-UTRA RRC, TS 36.331SRB0/SRB1/SRB2, all NAS, all NR configuration as embedded octet strings, MeasurementReport, SCGFailureInformationNR.Everything. This is the only signalling path to the UE.
NR UuUE -- SgNBNR PHY/MAC/RLC/PDCP, TS 38.2xx / TS 38.321-323SCG user plane, PSCell PDCCH/PDSCH/PUSCH, CSI, SRS. Optionally SRB3.Throughput falls to the LTE figure. No session is lost (§15).
X2-CMeNB -- SgNBX2AP, TS 36.423 cl. 8.4SGNB ADDITION, MODIFICATION, CHANGE, RELEASE, RRC TRANSFER, SECONDARY RAT DATA USAGE REPORT, and the inter-node RRC containers.No new NR legs anywhere on the site pair. Existing legs keep running until something needs reconfiguring, then die.
X2-UMeNB -- SgNBGTP-U, TS 29.281The non-anchor share of a split bearer's PDCP PDUs -- SgNB to MeNB in option 3x, MeNB to SgNB in option 3.Split bearers stall on the far leg; PDCP reordering timers expire and the UE sees loss, not just slowness.
S1-MMEMeNB -- MMES1AP, TS 36.413INITIAL UE MESSAGE, INITIAL CONTEXT SETUP, all NAS transport, E-RAB MODIFICATION INDICATION for the option 3x path switch.No attach, therefore no NSA.
S1-UMeNB or SgNB -- S-GWGTP-U, TS 29.281User data. Terminates at the MeNB in option 3, at the SgNB for SN-terminated bearers in 3a and 3x.The bearers anchored at that node lose their core-side path.

Table 2. Note the asymmetry in the last two rows: which node's S1-U carries the traffic is a per-bearer decision taken at SgNB addition, and it is the only architectural choice in NSA that the transport planner cares about.

Two X2AP details are worth having in your head before §6. First, X2AP here is the same X2AP as LTE-to-LTE X2, extended in Rel-15 with the SgNB-prefixed procedures -- so an X2 association that works for LTE handover does not necessarily support EN-DC. The X2 SETUP exchange carries served-cell information, and an en-gNB advertises NR served cells in an ServedNRCellsToAdd structure the peer must understand. An eNB with pre-Rel-15 software will complete X2 Setup and then reject every SGNB ADDITION REQUEST.

Second, the SgNB-prefixed procedures are all UE-associated, keyed on the pair MeNB UE X2AP ID and SgNB UE X2AP ID. The MeNB allocates the first and the SgNB the second, and the SgNB's identity does not exist until the acknowledge comes back. That is why the request carries only one of the two and why correlating an NSA X2 trace means keying on the MeNB identity for the first message pair and on both thereafter.

📘
Spec detail

There is no F1 in EN-DC as far as X2AP is concerned. An en-gNB may internally be split into a CU and a DU with F1AP between them -- most commercial ones are -- but that split is invisible on X2-C, exactly as the target gNB's internal split is invisible on Xn in companion 23 Xn Handover. If your PSCell setup latency is 20 ms rather than 4 ms, an F1AP round trip inside the SgNB is the usual reason, and you will not see it on X2.

3. Option 3, 3a and 3x: Where the User Plane Anchors

All three variants have the identical control plane: S1-MME at the MeNB, RRC at the MeNB, X2-C between the nodes. They differ in exactly one thing -- which node the S-GW's downlink GTP-U tunnel terminates at -- and that one thing decides where PDCP lives, which site needs backhaul, and whether X2-U carries user data at all.

Figure 2. Trace one downlink packet through each column. In option 3 it enters at the MeNB and part of it leaves again over X2-U; in 3x it enters at the SgNB and part of it leaves over X2-U in the other direction; in 3a it never crosses X2-U because a bearer lives entirely on one leg.
VariantS1-U terminatesPDCP location and typeSplit within a bearer?Transport consequence
Option 3MeNBMeNB, and it must be NR PDCP for any bearer that will use the NR leg -- an eNB running LTE PDCP cannot split to an NR RLC entity.Yes, MCG split bearer. MeNB splits, sends the NR share over X2-U.The eNB's S1-U must carry the whole aggregate, NR included. At a legacy macro site with 1 Gbit/s of backhaul this is the binding constraint, and it is why option 3 was abandoned.
Option 3aPer bearer: MeNB or SgNBOne PDCP entity per bearer at whichever node anchors it. LTE PDCP for MeNB-anchored, NR PDCP for SgNB-anchored.No. A bearer is on one radio only.No user plane on X2-U at all, and each node's backhaul carries only its own bearers. Simple, cheap -- and no single flow can exceed one radio's capacity.
Option 3xSgNB (for SN-terminated bearers)SgNB, NR PDCP, for every bearer offered to NR.Yes, SCG split bearer. SgNB splits, sends the LTE share over X2-U.The new NR site needs the aggregate backhaul -- which it was built with anyway -- and the legacy eNB's S1-U is untouched. This is why 3x won.

Table 3. Option 3x moves the transport requirement to the node that was just built and sized for it. That is the entire argument, and it is a civil-engineering argument rather than a radio one.

Assume 3x unless you have evidence otherwise. Effectively every commercial EN-DC deployment uses it, and the variants show up in the trace clearly: in the SGNB ADDITION REQUEST the MeNB asks for an sgNB-terminated bearer option per E-RAB, and the acknowledge returns an S1 downlink tunnel endpoint at the SgNB. If instead the acknowledge returns an X2-U endpoint and the S1-U never moves, you are looking at option 3.

⚠️
Common pitfall

A mixed deployment is legal and common, and it is a trap. The same UE can hold an SN-terminated split bearer for its default QCI 9 data and an MN-terminated MCG bearer for QCI 1 voice, at the same time, with two different S1-U endpoints on two different nodes. A downlink capacity problem that affects only voice, or only data, on a site where both bearers exist, is very often a transport problem on one of the two S1-U paths -- and looking at only one node's counters will show nothing.

4. Phase 1: The LTE Attach, and the Two Bits That Decide Everything

This is an NR document set, so phase 1 gets a summary rather than a treatment -- but it gets the summary in order, because the ordering is the argument. Everything below happens on E-UTRA, with the EPC, with no NR involvement whatsoever.

  1. E-UTRA cell search and PLMN selection. The UE scans E-UTRA carriers, acquires PSS/SSS and PBCH, reads SIB1 for the PLMN identity list and the tracking area, and selects a cell. In our running scenario: EARFCN 1650, band 3, PCI 118, PLMN 001-01. There is no NR SSB search here and no NR SIB1 read -- ever, in the whole of NSA. The UE will never read an NR SIB1 for access purposes.
  2. RRC connection establishment. RRCConnectionRequest on CCCH, RRCConnectionSetup, RRCConnectionSetupComplete on SRB1 with the initial NAS message piggybacked. TS 36.331 cl. 5.3.3 The equivalent NR procedure is in companion 15 RRC Procedures.
  3. EPS Attach Request, carried in that SetupComplete and relayed by the eNB in an S1AP INITIAL UE MESSAGE. This message carries the UE network capability IE, and inside it the DCNR bit. That is gate one.
  4. Authentication and NAS security. EPS AKA: Authentication Request/Response against the HSS-derived vector, then Security Mode Command/Complete establishing NAS integrity and ciphering under K_ASME. TS 33.401 cl. 6.1 Note what is absent: no SUCI, no concealment, no 5G-GUTI, no K_AUSF.
  5. Initial context setup and the default EPS bearer. The MME sends S1AP INITIAL CONTEXT SETUP REQUEST with the default E-RAB -- E-RAB 5, QCI 9 in our scenario -- the S-GW's uplink S1-U endpoint, the UE's security capabilities including the NR ones, and a Handover Restriction List. The eNB derives K_eNB, runs the LTE SecurityModeCommand, and configures the bearer as an ordinary LTE DRB: DRB 1, LTE PDCP, LTE RLC, MCG only.
  6. Attach Accept, in a NAS message inside DLInformationTransfer. This carries the EPS network feature support IE, and inside it the restrictDCNR flag. That is gate two.
  7. Attach Complete. The UE is attached, has an IP address, and is passing traffic on a bearer that has nothing to do with NR and will keep working whatever happens next.

4.1 Gate one: the UE's DCNR bit

DCNR -- dual connectivity with NR -- is a single bit the UE sets in the UE network capability IE of the Attach Request and of every Tracking Area Update. TS 24.301 cl. 9.9.3.34 Set means I support dual connectivity with NR. Clear means do not offer me NR, and the network will not.

A UE clears it for reasons that are entirely outside the radio: the user turned 5G off in settings, the modem's carrier policy profile has NSA disabled for this PLMN, the device is in a battery-saving mode that disables EN-DC, or the SIM's operator configuration does not enable it. None of these produce anything visible except a cleared bit. This is the single most common cause of this phone has no 5G icon and that phone does.

4.2 Gate two: the MME's restrictDCNR flag

restrictDCNR is a bit in the EPS network feature support IE the MME sends in the Attach Accept and in every TAU Accept. TS 24.301 cl. 9.9.3.12A Set means use of dual connectivity with NR is restricted for this UE, and a compliant UE will then not attempt or accept EN-DC even if it set DCNR itself.

The MME sets it from subscription data -- an HSS field, per-subscriber, often tied to the tariff -- or from local policy, per tracking area or per roaming partner. The corresponding RAN-side control is the NR Restriction in EPS as Secondary RAT bit inside the S1AP Handover Restriction List, which the MME sends to the eNB rather than to the UE. TS 36.413 cl. 9.2.1.22 The two are supposed to agree, and when they do not, behaviour depends on the vendor.

💡
START HERE, ALWAYS

A UE that never gets an NR leg usually has nothing wrong with its NR at all.

Before you look at a single NR counter, decode two IEs. If DCNR is 0 in the Attach Request, the fault is in the device or its carrier policy and the network is behaving correctly. If DCNR is 1 and restrictDCNR is 1 in the Attach Accept, the fault is in subscription or MME policy and the RAN is behaving correctly.

Both look identical from the radio side: an attached, healthy UE that is never sent a measObjectNR, never sends a B1 report, and never appears in an X2AP trace. There is no NR failure to find, because NR was never asked.

The reason this wastes so much time is that neither condition raises an alarm, increments a failure counter, or appears in any NR KPI. The only evidence is in two NAS IEs on the LTE leg.

One asymmetry to note. restrictDCNR can be cleared by a later TAU Accept, so a UE that could not use NR at 09:00 may be able to at 09:05 after moving into a different tracking area, with no other observable change. If your NSA attach-success statistics are bimodal by tracking area, the MME's per-TA policy table is the first thing to read.

5. Phase 2: Capability, Band Combinations, and Event B1

Both gates open. The UE is attached and passing traffic. Now the MeNB has to answer two questions before it can offer an NR leg: can this UE do EN-DC on the bands I have, and is there an NR cell here worth adding. Neither answer is available yet, and getting them takes two more LTE RRC exchanges.

Figure 3. Ten numbered steps across both phases, and NR appears in only two of them -- step 8 as a capability container and step 9 as a measurement object. Both are LTE RRC messages carrying NR ASN.1 as an opaque payload, which is the pattern for the whole document.

5.1 UECapabilityEnquiry and the two containers

The MeNB sends an LTE UECapabilityEnquiry with ue-CapabilityRequest listing the RATs it wants: eutra, eutra-nr and nr. TS 36.331 cl. 5.6.3 Three RAT types, three separate containers in the response, and they answer different questions.

RAT type requestedContainer returnedWhat it describesWhy the MeNB needs it
eutraUE-EUTRA-Capability, TS 36.331LTE categories, LTE CA band combinations, LTE feature support.The LTE leg, as always. Nothing EN-DC specific.
eutra-nrUE-MRDC-Capability, TS 38.331 -- note the NR spec, encoded with NR ASN.1, carried inside an LTE messageThe EN-DC band combinations, each naming an LTE band and an NR band with bandwidth classes; power sharing support; single-uplink support; ul-SharingEUTRA-NR; the featureSetCombination index.This is the gate. Without a combination covering this site's LTE and NR band pair, EN-DC is impossible for this UE regardless of what either radio supports individually.
nrUE-NR-Capability, TS 38.331The NR radio itself: supported bands, bandwidths, numerologies, MIMO layers, modulation, processing timeline.Relayed to the SgNB in the addition request so the SgNB can author a configuration the UE can actually apply.

Table 4. The middle row is the one that decides EN-DC. The bottom row only decides what the NR configuration looks like once EN-DC has already been agreed.

The nesting is worth naming now because it recurs throughout: UECapabilityInformation is an LTE RRC message whose ue-CapabilityRAT-ContainerList holds, per RAT, an OCTET STRING. For eutra-nr and nr those octets are NR ASN.1, encoded per TS 38.331 and unparseable by an LTE-only decoder. This is the first of three places in NSA where an LTE message carries NR ASN.1 (§8).

5.2 Why the band combination list is what actually gates a band pair

A UE's UE-NR-Capability may list band n78. Its UE-EUTRA-Capability may list band 3. Neither fact means the UE can do EN-DC on B3 + n78. What means that is an entry in rf-ParametersMRDC.supportedBandCombinationList whose bandList contains both, with usable bandwidth classes on both. TS 38.331 cl. 6.3.3

That is not pedantry. A band combination is a statement about the UE's RF front end: two simultaneously active transmit and receive chains, with filters, duplexers and enough isolation to avoid intermodulation products landing in its own receiver. B3 uplink at 1710-1785 MHz and n78 at 3300-3800 MHz are far apart and easy; some combinations create a harmonic or intermodulation problem the UE simply cannot support, and those combinations are absent from the list even though both bands are individually present.

Field inside a BandCombinationType / rangeWhat it tells youDiagnostic use
bandList -> BandParameters1..maxSimultaneousBands, each a CHOICE of eutra or nrWhich bands, and per band the DL/UL CA bandwidth class. A class of a means one carrier.Intersect against the site's deployed bands. Absence here is the hardest failure in NSA to diagnose because nothing reports it.
featureSetCombinationFeatureSetCombinationId, INTEGER (0..maxFeatureSetCombinations-1)An index into featureSetCombinations, which gives the per-band feature detail -- MIMO layers, modulation, CA behaviour -- for this combination.The same band pair can appear twice with different feature sets. Peak throughput comes from the feature set, not the band list.
mrdc-Parameters.dynamicPowerSharingENDCENUMERATED {supported}, optionalThe UE can share transmit power dynamically between the LTE and NR uplinks rather than reserving a fixed split.Absent means the network must configure a static split or TDM pattern, and NSA uplink gain largely disappears (§13).
mrdc-Parameters.singleUL-TransmissionENUMERATED {supported}, optionalThe UE supports single-uplink operation -- only one of the two uplinks active at a time.Present and used means the uplink is time-shared, not aggregated. Check this before believing an uplink aggregation figure.
mrdc-Parameters.ul-SharingEUTRA-NRENUMERATED {tdm, fdm, both}, optionalHow the UE can share an uplink between the two RATs when they are in the same band region.Relevant for intra-band EN-DC such as B41 + n41; irrelevant for B3 + n78.
supportedBandwidthCombinationSetBIT STRING (SIZE (1..32)), optionalWhich of the bandwidth combination sets defined for this combination the UE supports.A UE can support B3 + n78 but not at 100 MHz of n78. This bit string is where that restriction lives.
powerClass-v1530ENUMERATED {pc2}, optionalThe UE is power class 2 (26 dBm) rather than the default class 3 (23 dBm) for this combination.3 dB of uplink link budget, and it is per band combination, not per device. See §13.

Table 5. Every row is optional in the ASN.1 and absent by default. In EN-DC capability signalling, absence is the answer to most questions, and it never comes with an explanation.

⚠️
Common pitfall

appliedFreqBandListFilter is the field that makes capability signalling manageable and capability debugging miserable. An unfiltered UE-MRDC-Capability for a modern multi-band device is tens of kilobytes -- larger than the RRC message will carry. So the MeNB sends requestedFreqBandsNR-MRDC in the enquiry and the UE returns only combinations touching those bands, echoing the filter it applied.

If the filter is wrong -- a band the site deploys is missing from it -- the UE will faithfully return a combination list with no entry for that band, and the MeNB will conclude the UE does not support EN-DC there. The UE is fine. The enquiry was wrong.

So always read appliedFreqBandListFilter in the response before concluding anything from the combination list. A missing combination and a filtered-out combination look identical otherwise. Companion 26 UE Capability covers the filtering rules in full.

5.3 Event B1: the only trigger there is

The MeNB now knows EN-DC is possible. It still does not know whether there is an NR cell in range, and it has no way to find out except by asking the UE to look. It does that with an LTE measConfig containing two new-in-Rel-15 structures: a MeasObjectNR-r15 describing the NR carrier, and a ReportConfigInterRAT carrying eventB1-NR-r15. TS 36.331 cl. 5.5.4.1

IEFieldTypical value in our scenarioWhat it controls
MeasObjectNR-r15carrierFreq-r15632628 (n78, 3550 MHz)The NR ARFCN the UE tunes to. Wrong here and the UE searches empty spectrum forever.
MeasObjectNR-r15rs-ConfigSSB-r15.measTimingConfig-r15periodicityAndOffset sf20, duration sf5The SMTC: when the UE is allowed to look for SSBs. If the SgNB's SSB burst falls outside this window the UE finds nothing. Companion 21 Measurement Gaps and SMTC.
MeasObjectNR-r15rs-ConfigSSB-r15.subcarrierSpacingSSB-r15kHz30The SSB numerology. Mismatched, the UE correlates against the wrong pattern and detects nothing.
MeasObjectNR-r15offsetFreq-r15-2 dBOfn in the B1 inequality -- a per-frequency thumb on the scale, used to make NR addition more or less eager.
ReportConfigInterRATeventB1-NR-r15.b1-ThresholdNR-r15nr-RSRP-r15 = 61, i.e. -96 dBmThresh. RSRP-RangeNR value n means -157 + n dBm. TS 38.133 cl. 10.1.6
ReportConfigInterRAThysteresis4, i.e. 2 dBHys, in units of 0.5 dB. Widens the gap between entering and leaving.
ReportConfigInterRATtimeToTriggerms320How long the entering condition must hold continuously. The dominant term in the addition delay budget (§19).
ReportConfigInterRATreportQuantityCellNR-r15rsrp true, rsrq false, sinr falseWhat the report actually contains. An SgNB that wants SINR for admission control and is sent only RSRP will fall back to defaults.

Table 6. Eight fields, and getting any one of them wrong produces the same symptom: no B1 report, ever, from any UE in the cell. The three most commonly wrong are the SMTC, the SSB subcarrier spacing and the ARFCN.

The inequalities themselves are short. With Mn the UE's L3-filtered measurement of the NR neighbour in dBm, Ofn the measurement object's frequency offset, Hys the hysteresis and Thresh the threshold, all in dB or dBm TS 36.331 cl. 5.5.4.7:

Event B1 for an inter-RAT NR neighbour, evaluated
B1 entering condition (B1-1):   Mn + Ofn - Hys  >  Thresh
B1 leaving  condition (B1-2):   Mn + Ofn + Hys  <  Thresh

With Ofn = -2 dB, Hys = 2 dB (IE value 4), Thresh = -96 dBm:

  entering when   Mn  >  Thresh - Ofn + Hys  =  -96 + 2 + 2  =  -92 dBm
  leaving  when   Mn  <  Thresh - Ofn - Hys  =  -96 + 2 - 2  =  -96 dBm

-- 4 dB of hysteresis band between the two levels, as designed.
-- Note there is no A3-style neighbour-versus-serving comparison here:
-- B1 is an absolute threshold on the NR cell alone. The LTE serving
-- cell's quality does not enter the arithmetic at all.
Figure 4. The dip at 600 ms never comes close to the leaving level of -96 dBm, and that is the point: timeToTrigger is reset when the entering condition ceases to hold, not when the leaving condition starts to. Four dB of hysteresis buys nothing here.
💡
Key point

The absolute-threshold design is deliberate and has a consequence people find counter-intuitive. Because the LTE serving cell does not appear in the inequality, a UE sitting on a strong LTE cell will add NR the moment a mediocre NR cell crosses -96 dBm -- even though the LTE leg alone would serve it better than the NR leg can. That is correct behaviour: EN-DC adds capacity, it does not replace it, so a weak NR leg costs nothing but a little scheduling overhead.

It also means b1-ThresholdNR is a capacity-and-battery knob rather than a coverage knob. Raise it and you add NR only where NR is good; lower it and you add NR everywhere, pay for it in UE power and PSCell change churn, and gain very little throughput. Companion 20 Measurements and Events has the general event framework.

6. Phase 3, Part 1: SGNB ADDITION REQUEST

The B1 report has arrived. The MeNB resolves the reported NR PCI and frequency to a neighbour en-gNB, checks it has an X2 association to it, and sends the message that starts everything: X2AP SGNB ADDITION REQUEST, the initiating message of the SgNB Addition Preparation procedure. TS 36.423 cl. 8.4.1

This is a class-1 procedure -- it has explicit outcomes -- and it is the only message in NSA that hands a UE from one node to another. Everything the SgNB will ever know about this UE is in it. The SgNB has no S1-MME, no path to the MME, no subscription data and no prior contact with the UE; if a fact is not in this message or a later SGNB MODIFICATION, the SgNB does not have it.

IEPresenceContentsWhy the SgNB cannot proceed without it
MeNB UE X2AP IDMandatoryINTEGER (0..4095), MeNB-allocated.The correlation key for the whole procedure. The SgNB's own ID does not exist yet.
NR UE Security CapabilitiesMandatoryBitmaps of supported NR encryption and NR integrity algorithms, as the MME supplied them over S1AP.The SgNB must pick a ciphering algorithm for the NR PDCP of its bearers, and it has no other source for what the UE supports.
SgNB Security KeyMandatoryS-K_gNB, 256 bits, already derived by the MeNB from K_eNB and the sk-counter.The root of the SgNB's entire AS key branch. Note the SgNB receives a derived key and never sees K_eNB (§12).
SgNB UE Aggregate Maximum Bit RateMandatoryThe share of the UE-AMBR the MeNB is willing to let the SgNB schedule.The MeNB, not the MME, decides the split. A conservative value here silently caps NR throughput and is invisible from the NR side.
E-RABs To Be Added ListMandatoryPer E-RAB: the E-RAB ID, E-RAB Level QoS Parameters (QCI, ARP, GBR where applicable), and a CHOICE of bearer option -- sgNB-terminated or meNB-terminated -- carrying the relevant tunnel endpoints.The work request. The bearer-option choice is where option 3 versus 3x is decided, per bearer (§3).
MeNB to SgNB ContainerMandatoryAn OCTET STRING containing an NR RRC CG-ConfigInfo TS 38.331 cl. 11.2.2: the UE's NR and MRDC capabilities, the candidate cell measurement results from the B1 report, the MeNB's current MCG configuration for coordination, and any configRestrictInfo.Capability and measurement. Without it the SgNB cannot author a configuration the UE can apply, nor know which of its cells the UE can actually hear.
Selected PLMNOptionalThe serving PLMN identity, 001-01 here.Needed for the SgNB's own cell selection restrictions and for charging records in a shared-RAN deployment.
Handover Restriction ListOptionalThe forbidden TAs, forbidden LAs and RAT restrictions the MME gave the MeNB.Lets the SgNB avoid choosing a PSCell the UE is not allowed to use.
SgNB Addition Trigger IndicationOptional, Rel-15ENUMERATED {sn-change, inter-eNB-HO, intra-eNB-HO}.Distinguishes a first addition from a re-addition caused by mobility. Absent means a plain first addition.
MeNB Resource Coordination InformationOptionalThe MeNB's intended resource usage pattern, for intra-band or co-sited deployments.Only meaningful when the two nodes share spectrum or an antenna; ignored for B3 + n78.
Requested Split SRBsOptional, Rel-15Whether the MeNB wants SRB1 and/or SRB2 duplicated over the SCG.Rarely used in EN-DC. When absent, all RRC stays on the LTE leg.

Table 7. The two mandatory containers do the interesting work: SgNB Security Key makes the SgNB cryptographically part of this UE's session, and MeNB to SgNB Container is the only channel through which NR-specific information ever reaches it.

6.1 The SCG configuration query, and what admission control decides

The request does not tell the SgNB what to configure. It tells it what is needed and asks it to decide -- which is the CG-ConfigInfo container's real function, and the reason the procedure has a preparation phase at all. On receipt the SgNB runs, in order:

  1. Per-E-RAB admission control. For each requested E-RAB, is there capacity at the candidate cell for its QoS class? A GBR bearer may be refused while a non-GBR one is admitted, which is why the acknowledge has both an admitted and a not-admitted list.
  2. PSCell selection. From candidateCellInfoListMN in the container -- the relayed B1 measurement results -- pick the cell and the SSB beam the UE reported best. Our scenario: PCI 502, SSB index 1. The SgNB may prefer a different cell for load reasons, but it can only pick from cells the UE has actually reported.
  3. Bandwidth part and numerology choice, constrained by the UE's UE-NR-Capability and by supportedBandwidthCombinationSet for the selected band combination.
  4. CFRA resource reservation. A dedicated preamble and RACH occasion at the PSCell, so the UE's arrival is contention-free. Our scenario: preamble 58. This is a real resource, held from now until the UE arrives or the procedure fails.
  5. Security algorithm selection from NR UE Security Capabilities, and derivation of the NR AS keys from S-K_gNB.
  6. Authoring the NR RRCReconfiguration for the secondary cell group, then wrapping it as an OCTET STRING inside a CG-Config (§7).
🔍
What you see in logs

Admission control at the SgNB is per E-RAB, and partial success is normal rather than exceptional. An acknowledge carrying E-RABs Admitted To Be Added List with one entry and E-RABs Not Admitted List with another is a successful procedure, and most counters will record it as one.

The UE then gets an NR leg that carries some of its traffic and not the rest, which looks like a throughput anomaly rather than a failure. Diff the requested list against the admitted list on every addition; it is two lines of script and it explains a whole class of complaint.

If admission control fails for every bearer, or the container will not parse, or the UE's capabilities cannot be satisfied, the SgNB answers with SGNB ADDITION REQUEST REJECT -- a distinct message with a Cause IE, not an acknowledge with an empty admitted list. The common causes and what they mean are in the failure taxonomy (§17).

7. Phase 3, Part 2: The Acknowledge and the CG-Config

SGNB ADDITION REQUEST ACKNOWLEDGE is the most information-dense message in NSA. It allocates the SgNB's UE identity, returns the per-bearer verdict with tunnel endpoints, and -- the part that matters most -- carries a complete NR RRCReconfiguration the MeNB will relay to the UE without understanding a byte of it. TS 36.423 cl. 9.1.4.2

IEContentsConsumed by
SgNB UE X2AP IDINTEGER (0..4294967295), SgNB-allocated.The MeNB, for every subsequent UE-associated X2AP message.
E-RABs Admitted To Be Added ListPer admitted E-RAB, for an sgNB-terminated bearer: the SgNB's S1 downlink GTP tunnel endpoint (transport address plus TEID) for the S-GW to send to, and where the bearer is split, the SgNB's X2-U endpoints. For a meNB-terminated bearer instead: the SgNB's X2-U endpoint for the MeNB to forward to.The MeNB, which passes the S1 endpoint to the MME in the E-RAB Modification Indication (§10) and uses the X2-U endpoint directly.
E-RABs Not Admitted ListPer refused E-RAB, an E-RAB ID and a Cause.The MeNB's RRM, which must keep those bearers on the MCG. And you, because the Cause is the only explanation you will get.
SgNB to MeNB ContainerOCTET STRING containing an NR RRC CG-Config TS 38.331 cl. 11.2.2. Its fields are broken out below.Relayed to the UE, mostly verbatim. The MeNB parses only the outer CG-Config structure, never the octet strings inside it.
Admitted Split SRBsWhich SRBs, if any, the SgNB accepted for duplication over the SCG.The MeNB. Usually absent.
SgNB Resource Coordination InformationThe SgNB's intended resource usage, mirroring the MeNB's.The MeNB's scheduler in co-sited or intra-band deployments.
Criticality DiagnosticsWhich IEs the SgNB did not understand, when any.You. A populated Criticality Diagnostics on an otherwise successful addition is a version mismatch worth chasing before it becomes a failure.

Table 8. Only the third and fourth rows have anything to do with the radio. The rest is transport plumbing -- which is a fair summary of what X2AP is for.

7.1 Inside CG-Config

CG-Config is an inter-node RRC message: an NR RRC structure that is never transmitted on any air interface, defined in TS 38.331 clause 11.2 precisely so that two network nodes can exchange NR configuration in NR ASN.1. Its NG-RAN cousins are HandoverPreparationInformation and HandoverCommand, which serve the same purpose in companion 23 Xn Handover.

Field of CG-Config-IEsTypeWhat it carries here
scg-CellGroupConfigOCTET STRING containing an NR RRCReconfigurationThe payload. A full NR RRCReconfiguration whose secondaryCellGroup is a CellGroupConfig for the SCG: the PSCell in spCellConfig, reconfigurationWithSync with the PSCell's ServingCellConfigCommon and the CFRA resources, the BWP and MAC configuration, physicalCellGroupConfig with p-NR-FR1, and the RLC bearers.
scg-RB-ConfigOCTET STRING containing an NR RadioBearerConfigThe DRB definitions for the SCG's bearers: drb-Identity, the cnAssociation binding to eps-BearerIdentity, the NR PDCP-Config including moreThanOneRLC and ul-DataSplitThreshold for a split bearer, and the ciphering algorithm.
configRestrictModReqConfigRestrictModReqSCGThe SgNB asking the MeNB to relax a restriction the MeNB imposed -- for example a different maximum number of SCG bearers. Rare, and a sign of a tight coordination configuration.
drx-InfoSCGDRX-InfoThe SCG's DRX parameters, so the MeNB can align its own MCG DRX. Misalignment here costs UE battery, not function. Companion 11 DRX.
candidateCellInfoListSNOCTET STRING containing MeasResultList2NRNR cells the SgNB itself knows the UE could use, for the MeNB's future PSCell change decisions.
measConfigSNMeasConfigSNThe NR measurement configuration the SgNB wants applied -- but note that in EN-DC the SgNB's measurements are configured inside the scg-CellGroupConfig, so this is mostly about coordination.
selectedBandCombinationBandCombinationInfoSNWhich of the UE's advertised EN-DC band combinations the SgNB actually chose. Worth logging: it tells you which feature set, and therefore which peak rate, is in force.
fr-InfoListSCGFR-InfoListPer serving cell, whether it is FR1 or FR2. Matters for power management and for which p-NR-FRx limit applies.

Table 9. Two of these eight fields are opaque octet strings, and they are the two that contain everything the UE will actually be told. That structural fact is §8.

📘
Spec detail

reconfigurationWithSync is the field that makes this an SCG addition rather than a configuration change. Its presence tells the UE to perform random access at the named cell and starts T304 for that cell group. TS 38.331 cl. 5.3.5.5.2 It is the same IE, with the same effect, as the one that executes a handover in companion 22 Handover Overview -- except that here the UE is synchronising to an additional cell rather than moving to a replacement one, and its LTE connection carries on undisturbed while it happens.

That is why an SCG addition failure and a handover failure look so alike in UE logs, and why the recovery is completely different: a failed handover means re-establishment, a failed SCG addition means one SCGFailureInformationNR message and business as usual (§15).

8. Three Levels of Container: NR RRC Inside LTE RRC Inside X2AP

This is the most important structural fact in NSA, and it deserves its own section because it explains a category of problem rather than a single one. The NR configuration the UE applies is authored by the SgNB in NR ASN.1, wrapped in an inter-node NR RRC message, wrapped in an X2AP octet string, unwrapped by the MeNB, re-wrapped in an LTE RRC octet string, and transmitted on an LTE air interface. The MeNB relays bytes it cannot parse. The SgNB authors bytes it cannot transmit.

Figure 5. The two columns are the same octets at two different moments. The dashed arrow is the only operation the MeNB performs on them: a copy. Everything else it adds -- sk-Counter-r15, p-MaxEUTRA -- sits outside the container it copied.
LevelEncodingWho authors itWho can decode itWhat a mismatch here looks like
X2AP SGNB ADDITION REQUEST ACKNOWLEDGEX2AP PER, TS 36.423SgNBMeNB and SgNBAn X2AP-level failure -- SGNB ADDITION REQUEST REJECT, or a populated Criticality Diagnostics. Visible immediately, at the right node.
SgNB to MeNB Container -> NR CG-ConfigNR RRC UPER, TS 38.331 cl. 11.2SgNBMeNB (outer structure only) and SgNBThe MeNB cannot find scg-CellGroupConfig and abandons the addition. Logged at the MeNB as a container decode error, with no useful detail.
scg-CellGroupConfig -> NR RRCReconfigurationNR RRC UPER, TS 38.331 cl. 6.2.2SgNBUE and SgNB onlyNothing at all, anywhere in the network. The MeNB copies it, transmits it, and the UE answers scg-reconfigFailure -- from which the network learns only that it failed, never which field.
LTE RRCConnectionReconfigurationLTE RRC UPER, TS 36.331MeNBMeNB and UEThe UE cannot decode the LTE message at all, and the failure is an ordinary LTE reconfiguration failure -- with re-establishment, not an SCG failure.

Table 10. Read the last column downward. The middle two rows are the dangerous ones, because the node that could report the problem is not the node that can see it.

💡
WHY YOU NEED TWO DECODERS

An NSA log needs two decoders. Not two tools, necessarily, but two ASN.1 schema sets: TS 36.331 for the LTE RRC and TS 38.331 for the NR RRC inside it.

A tool with only the LTE schema will decode the RRCConnectionReconfiguration perfectly and then show you nr-SecondaryCellGroupConfig-r15 : OCTET STRING (312 bytes). Those 312 bytes are the entire NR configuration -- the PSCell, the BWP, the CFRA preamble, the DRB, the ciphering algorithm -- and they are exactly where the problem is on any addition that fails at the UE.

The practical workaround, when you are stuck with one decoder: extract the octet string, save it as a binary blob, and decode it separately against the NR RRCReconfiguration schema. It is a standalone, self-contained UPER-encoded message; nothing about the LTE context is needed to parse it.

The same applies at the X2AP level: extract SgNB to MeNB Container and decode it as a CG-Config, then extract scg-CellGroupConfig from that and decode it as an RRCReconfiguration. Two unwrap steps, and the trace in §20.5 shows all three levels side by side.

One question this raises immediately: why not just define the fields in LTE RRC and be done with it? Because the SgNB's configuration is NR configuration, versioned with the NR spec and extended by every NR release. Encoding it opaquely means an LTE eNB from Rel-15 can relay a Rel-18 NR configuration it has never heard of, unmodified, to a Rel-18 UE. The opacity is the forward-compatibility mechanism -- it is doing real work, and the price is exactly the diagnostic blindness described above.

The sk-Counter-r15 field is the exception that proves the rule, and it is worth noticing where it sits. It is the one security-relevant value the MeNB authors, and it is deliberately placed in the LTE message outside the NR container -- because the MeNB owns K_eNB and therefore owns the freshness of every key derived from it (§12). The SgNB is told the resulting S-K_gNB; it is never told the counter, and it could not verify it if it were.

9. Phase 3, Part 3: Reconfiguration, PSCell RACH, SCG Active

One LTE RRC message reaches the UE, and the SCG comes to life. Six things happen in the UE between receiving it and reporting success, and they happen in a fixed order.

Figure 6. Note the ordering hazard flagged in red: step 6, the UE's preamble at the PSCell, can arrive before step 5 tells the SgNB the UE was configured. A correct SgNB accepts it anyway.

9.1 The LTE RRCConnectionReconfiguration

The message is an ordinary RRCConnectionReconfiguration on SRB1, protected by LTE PDCP with the MCG's keys. What makes it an EN-DC message is the RRCConnectionReconfiguration-v1510-IEs extension TS 36.331 cl. 6.2.2:

FieldTypeSet toEffect at the UE
nr-Config-r15CHOICE { release NULL, setup SEQUENCE {...} }setupsetup means add or modify the SCG; release means tear it down. A single CHOICE discriminant is the difference between adding NR and removing it.
nr-Config-r15.setup.endc-ReleaseAndAdd-r15BOOLEANfalsetrue tells the UE to release the existing SCG before applying the new one, rather than delta-configuring it. Used on SgNB change.
nr-Config-r15.setup.nr-SecondaryCellGroupConfig-r15OCTET STRINGthe SgNB's scg-CellGroupConfig, verbatimThe NR RRCReconfiguration. The UE decodes it with its NR RRC decoder and applies it as if it had arrived on an NR SRB.
nr-Config-r15.setup.p-MaxEUTRA-r15P-Max, INTEGER (-30..33) dBme.g. 21 dBmCaps the LTE uplink so that LTE plus NR stays inside the UE's power class. Authored by the MeNB (§13).
sk-Counter-r15INTEGER (0..65535)1The freshness input the UE uses to derive S-K_gNB from its own K_eNB. Must match what the MeNB used, or every NR PDCP PDU fails to decipher (§12).
nr-RadioBearerConfig1-r15OCTET STRINGthe SgNB's scg-RB-Config, verbatimAn NR RadioBearerConfig. Establishes the NR DRBs, their PDCP configuration and their mapping to EPS bearer identities.
nr-RadioBearerConfig2-r15OCTET STRINGabsentA second bearer configuration, used when MN-terminated and SN-terminated bearers need separate RadioBearerConfig structures with different keys.
tdm-PatternConfig-r15SEQUENCEabsentThe single-uplink TDM pattern, for UEs and band pairs that cannot transmit on both uplinks at once (§13).

Table 11. Two octet strings and one integer do all the NR work. Everything else in the message is the LTE leg's own business -- and note that the same message routinely carries an MCG reconfiguration at the same time, which is why drb-ToReleaseList for LTE DRB 1 often appears alongside nr-RadioBearerConfig1-r15 adding NR DRB 2 for the very same EPS bearer.

The UE's actions, in order: decode the LTE message; decode the embedded NR RRCReconfiguration; derive S-K_gNB from K_eNB and sk-Counter-r15, and from it the NR AS keys; apply the RadioBearerConfig, establishing NR PDCP entities; apply the CellGroupConfig, establishing the SCG MAC and RLC and the PSCell's physical configuration; note reconfigurationWithSync and start T304 for the SCG. Then -- and this is the part that surprises people -- it answers on the LTE leg before it has ever transmitted on NR.

RRCConnectionReconfigurationComplete carries scg-ConfigResponseNR-r15, an octet string containing an NR RRCReconfigurationComplete. The UE is confirming, in NR ASN.1, over LTE, that it has understood a configuration it has not yet used. The MeNB relays that confirmation to the SgNB in X2AP SGNB RECONFIGURATION COMPLETE, whose Response Information is a CHOICE between configuration-successfully-applied and configuration-rejected-by-MeNB with a Cause. TS 36.423 cl. 9.1.4.7

9.2 Contention-free random access at the PSCell

Now the NR radio is used for the first time. The UE performs random access at the PSCell using the rach-ConfigDedicated inside reconfigurationWithSync -- a specific preamble index on specific RACH occasions, reserved for it alone. Preamble 58 in our scenario. Because it is contention-free there is no MSG3 and no contention resolution: MSG1 then MSG2, and the C-RNTI the UE will use is already in the configuration it applied. Companion 03 Random Access covers the procedure itself; the EN-DC-specific points are these:

  • The UE is already time-aligned to LTE, not to NR. The PSCell is a different node with a different propagation delay, so the SCG needs its own timing advance, and the RAR's TA command is the only way to get it. See companion 04 Timing Advance for the N_TA arithmetic; the SCG maintains a completely separate timeAlignmentTimer.
  • The beam matters. The UE transmits on the RACH occasion associated with the SSB the SgNB selected -- SSB index 1 here, the one the UE reported in B1. If the UE has moved and that beam is no longer the best, the CFRA attempt is made on a weak beam and may fail even though the cell is perfectly reachable on another one.
  • T304 for the SCG is running, started when reconfigurationWithSync was applied, and it supervises this random access and nothing else. On expiry the UE does not re-establish; it declares SCG failure and tells the MeNB (§15).
  • The race in step 5 versus step 6 is real. Nothing in the UE waits for SGNB RECONFIGURATION COMPLETE to reach the SgNB, and on a slow X2 the preamble can arrive first. A correct SgNB treats a preamble on a reserved CFRA resource as valid on arrival. Interop failures here present as a first-attempt CFRA failure that succeeds on retry, correlated with X2 latency rather than with radio conditions.

On successful RAR the UE stops T304, applies the timing advance, and the SCG is active: NR PDCCH monitored, CSI reported, SRS transmitted, and the SCG's DRBs able to carry data in both directions. The UE has now used the NR radio for the first time, roughly 600 ms after it was attached (§19).

💡
Key point

The UE never entered an NR RRC_IDLE state, never performed NR cell selection, never read an NR SIB1 for access, never sent an NR RRCSetupRequest, and holds no NR NAS context. Its NR C-RNTI was handed to it in a configuration rather than won in a contention.

This is worth internalising before you read an NSA UE log looking for familiar NR landmarks. Most of them are simply absent, and their absence is correct.

10. Phase 4: E-RAB Modification, the Path Switch, the End Marker

The SCG is active and the UE can be scheduled on NR. But in option 3x the S-GW is still sending that bearer's downlink data to the MeNB, because nothing has told it otherwise. One S1AP procedure fixes that, and it is the only point in the whole of NSA where the core network is told anything about NR.

Figure 7. Steps 1 to 3 exist only in option 3x. The bottom band is the bearer that never moved -- and in a real network that is the voice bearer, which is why an NSA voice call is entirely unaffected by anything the SgNB does.
  1. S1AP E-RAB MODIFICATION INDICATION, MeNB to MME TS 36.413 cl. 8.2.4A. Per affected E-RAB it carries the new downlink transport layer address and TEID -- the SgNB's, taken straight from the addition acknowledge. Our scenario: E-RAB 5, 203.0.113.31, TEID 0x0001D4A1. This is the MeNB acting on the SgNB's behalf; the SgNB has no S1-MME of its own to send it on.
  2. GTPv2-C Modify Bearer Request / Response, MME to S-GW. The S-GW rewrites its downlink tunnel endpoint for that bearer and starts sending to the SgNB.
  3. S1AP E-RAB MODIFICATION CONFIRM, MME to MeNB, listing the E-RABs that were successfully modified. An E-RAB missing from the confirm list was not switched and its data is still arriving at the MeNB.
  4. GTP-U End Marker on the old S1-U tunnel, S-GW to MeNB: a single PDU with no payload, the S-GW's statement that it has switched and nothing more will follow on this path. TS 29.281 cl. 5.1 The MeNB forwards it over X2-U to the SgNB, whose PDCP entity then knows it can stop waiting for late PDUs from the old path and deliver what it has in order.

In steady state the split bearer looks like this: the S-GW sends downlink data to the SgNB; the SgNB's NR PDCP entity assigns sequence numbers, decides per PDU which leg to use, sends the NR share to its own RLC and the LTE share over X2-U to the MeNB's RLC; the UE receives on both radios and reorders both streams in one NR PDCP entity. One PDCP entity, two RLC entities in two different physical nodes, one reordering window.

🔍
What you see in logs

In option 3 there is no E-RAB MODIFICATION INDICATION, no MODIFICATION CONFIRM and no End Marker, because the S1-U never moves. Which means that in option 3, an S1 trace contains no evidence that NR was ever added. The core network's view of an option 3 UE with a 1.9 Gbit/s NR leg is identical to its view of the same UE on LTE alone.

If you are correlating RAN and core traces to explain a throughput figure, know which option you are on before you start. On 3x the path switch is your marker for NR is now carrying this bearer; on 3 you have to get that from X2AP.

Two failure shapes deserve naming here. If the End Marker is lost, the SgNB's PDCP waits out its t-Reordering before delivering, and the symptom is a burst of jitter at addition rather than loss -- the same shape as the missing-End-Marker case in companion 23 Xn Handover. If the Modify Bearer never completes but the addition did, downlink data keeps arriving at the MeNB while the UE expects it on NR, and the result is a bearer that works at LTE speed with an idle NR leg, which is very often misread as a radio problem.

11. The Four Bearer Types, and Why NR PDCP Wins

A bearer in EN-DC is described by two independent choices: which node terminates it (holds the PDCP entity and the S1-U) and which cell groups carry it. Two choices, two values each, four types -- and the EN-DC literature names them twice, once in MCG/SCG terms and once in MN/SN-terminated terms. Both namings are in use; the table below has each.

Figure 8. The PDCP row is the one to read first: three of the four types use NR PDCP, and the exception is the type that cannot use the NR radio at all.
Type (EN-DC name)MN/SN namePDCPRLC entitiesS1-U atWhen it is used
MCG bearerMN-terminated MCG bearerLTE PDCP at the MeNBOne, LTE RLC at the MeNBMeNBSignalling-adjacent and latency-critical traffic; QCI 1 voice; every bearer before the SCG exists and after it is released.
MCG split bearerMN-terminated split bearerNR PDCP at the MeNB -- forcedTwo: LTE RLC at the MeNB, NR RLC at the SgNBMeNBOption 3. The eNB splits and sends the NR share over X2-U.
SCG split bearerSN-terminated split bearerNR PDCP at the SgNBTwo: NR RLC at the SgNB, LTE RLC at the MeNBSgNBOption 3x, the deployed default. The SgNB splits and sends the LTE share over X2-U.
SCG bearerSN-terminated SCG bearerNR PDCP at the SgNBOne, NR RLC at the SgNBSgNBOption 3a, and any traffic the operator is happy to lose entirely if the SCG fails.

Table 12. Only the first row survives an SCG failure untouched. The other three all need reconfiguring, which is why §15's recovery is a reconfiguration rather than a release.

11.1 LTE PDCP against NR PDCP, and why a split bearer forces NR PDCP

LTE PDCP TS 36.323 and NR PDCP TS 38.323 are different protocols, not versions of one. The differences that matter here:

PropertyLTE PDCPNR PDCPConsequence in EN-DC
Sequence number length5, 7, 12, 15 or 18 bits12 or 18 bitsAn NR PDCP entity's window is large enough to cover the reordering delay of two legs with very different latencies. A 7-bit LTE SN is not.
ReorderingIn-sequence delivery, no explicit reordering timer for the split caset-Reordering timer, out-of-order delivery to upper layers permittedThis is the decisive one. Splitting a bearer across an LTE RLC and an NR RLC guarantees out-of-order arrival, and only NR PDCP has the machinery to absorb it.
Multiple RLC entitiesSupported only for LTE-DC split bearersmoreThanOneRLC with an explicit primaryPath and ul-DataSplitThresholdThe uplink split rule is a first-class configurable in NR PDCP and is not expressible in LTE PDCP for an NR leg.
DuplicationNot supportedpdcp-Duplication, per bearerAvailable in EN-DC as a reliability tool: the same PDU on both legs. Costs double the air resource for the bearer.
Header compressionROHCROHC, plus EHC from Rel-16Marginal here, but a UE that supports EHC only in NR PDCP will show different compression behaviour on the two bearer types.

Table 13. Row two is the whole argument. Everything else is convenience; reordering across two legs is a requirement.

So the rule is simple and has a real cost: any bearer that will use the NR radio uses NR PDCP, even for the data that travels over LTE. In option 3x the SgNB holds that entity, which is natural. In option 3 the eNB has to hold an NR PDCP entity -- an LTE node running a piece of the NR protocol stack, which is exactly the software burden that made option 3 unattractive to eNB vendors and is a second reason 3x won.

It also explains the DRB identity change noted in §9.1. An EPS bearer being moved from an MCG bearer to an SCG split bearer cannot keep its PDCP entity, because the entity is a different protocol in a different node. The LTE DRB is released, an NR DRB is established with a new drb-Identity, and the two are tied together only by the cnAssociation.eps-BearerIdentity inside the NR RadioBearerConfig. In our scenario EPS bearer 5 arrives as LTE DRB 1 and continues as NR DRB 2, and correlating those two in a log means matching on the EPS bearer identity, not the DRB identity.

11.2 ul-DataSplitThreshold and what the uplink split actually does

Downlink splitting is the network's decision, made per PDU by the anchoring PDCP entity with full knowledge of both legs' buffer states. Uplink splitting is the UE's decision, and it is governed by one deliberately crude rule. TS 38.323 cl. 5.2.1

ul-DataSplitThreshold, and the rule it implements
NR PDCP-Config for a split bearer, uplink side:

  moreThanOneRLC
    primaryPath        { cellGroup 1 (SCG), logicalChannel 4 }
    ul-DataSplitThreshold  b1600         -- 1600 bytes
    pdcp-Duplication       (absent)

UE behaviour:
  total UL PDCP volume pending  <  1600 bytes  ->  primaryPath ONLY
  total UL PDCP volume pending  >= 1600 bytes  ->  either leg, UE choice

-- 'total volume pending' is PDCP SDUs plus PDCP PDUs not yet delivered
-- to lower layers, summed across BOTH legs -- not per leg.
-- Below the threshold the second leg is not merely deprioritised;
-- it is not used at all, and a BSR for it is not sent.

Listing 1. ul-DataSplitThreshold values run from b0 -- always split -- through b100, b200, b400 and so on to b4096000, plus infinity, which means never split. infinity with a split bearer configured is a perfectly legal way to configure an uplink that will never use NR.

The consequence for measurement is direct. A short uplink transfer -- an HTTP request, a DNS lookup, a TCP ACK stream, a VoIP frame -- is below any sane threshold and travels entirely on the primary path. If the primary path is the SCG, small uplink transfers ride NR and their latency is NR's. If it is the MCG, they ride LTE. Either way an uplink speed test that ramps up will show the second leg appearing partway through, and an uplink latency test will never see it at all.

⚠️
Common pitfall

A common and entirely silent misconfiguration: primaryPath set to the MCG on an SCG split bearer, with a high ul-DataSplitThreshold. Every small uplink transfer then goes over LTE, crosses X2-U to reach the SgNB's PDCP, and arrives with the X2 transport latency added -- often 8 to 10 ms of pure overhead on traffic that could have gone directly to the node that anchors it.

The symptom is uplink latency worse than the LTE-only baseline while NR is attached, with normal throughput once volume rises above the threshold. Nothing fails, no counter moves, and the usual first suspicion -- NR uplink coverage -- is wrong.

12. Security: S-K_gNB, the sk-counter and an LTE Root

The NR air interface in EN-DC is protected by keys that descend from an LTE key hierarchy. There is no K_AUSF, no K_SEAF, no K_AMF and no 5G AKA anywhere in the picture. The whole chain is TS 33.401, with Annex E and Annex A.15 covering the dual-connectivity additions. TS 33.401 Annex E.2.4

The EN-DC key hierarchy, top to bottom
  K            (in the USIM and the HSS)
   |
  CK, IK  ->  K_ASME            EPS AKA, at the MME and the UE
   |
  K_eNB                          MeNB, from K_ASME and the NAS uplink COUNT
   |
   +--> K_RRCenc, K_RRCint, K_UPenc      the MCG's own AS keys (LTE)
   |
   +--> S-K_gNB = KDF(K_eNB, sk-counter)     <-- the only new step
          |
          +--> K_RRCenc, K_RRCint      SCG RRC keys, used only if SRB3 exists
          +--> K_UPenc                 NR PDCP ciphering for SN-terminated DRBs

-- Compare companion 27 AS Security Mode, where K_gNB descends from
-- K_AMF and vertical derivation uses NH and NCC. Neither NH nor NCC
-- exists here. sk-counter is the entire freshness mechanism.

Listing 2. One derivation step is all that separates the SgNB's key branch from the LTE key the MeNB already had. S-K_gNB is 256 bits and is delivered to the SgNB in the SgNB Security Key IE of the addition request.

AspectHow it works in EN-DCHow it differs from SA NR
Key rootK_eNB at the MeNB, itself from K_ASME.SA roots the gNB's keys in K_AMF from the 5G hierarchy. No part of that tree exists in NSA.
Freshness for the secondary nodesk-counter, INTEGER (0..65535), maintained by the MeNB and sent to the UE in sk-Counter-r15. The SgNB never sees it.SA NR-DC uses the same sk-counter mechanism for its SN. The 5G NH/NCC chain is for handover, not for secondary node addition.
Refresh triggerThe MeNB increments sk-counter on every SgNB addition, SgNB change, and any time the same S-K_gNB would otherwise be reused with the same K_eNB. Wrapping requires a K_eNB refresh first -- in practice an intra-cell handover on the LTE leg.Structurally identical; the underlying key refresh mechanism underneath it is an LTE one rather than a 5G one.
AlgorithmsThe SgNB selects an NR ciphering algorithm -- NEA0, NEA1 (SNOW 3G), NEA2 (AES) or NEA3 (ZUC) -- from NR UE Security Capabilities, which the MME supplied over S1AP. Integrity algorithms NIA1-NIA3 apply to SRB3 where it exists.Same algorithm set. The difference is who chose it and from what source: in SA the gNB has the capabilities from the AMF directly.
User-plane integrityNot used. UP integrity protection is a 5GS feature and there is no mechanism to negotiate it over an EPC.SA can enable UP integrity per DRB via integrityProtection in the PDCP configuration.
Where the algorithm is signalled to the UEInside the NR RadioBearerConfig in nr-RadioBearerConfig1-r15 -- securityConfig.securityAlgorithmConfig -- not in an LTE SecurityModeCommand.SA signals it in the NR SecurityModeCommand. In EN-DC there is no NR SecurityModeCommand at all.

Table 14. The last row is the one that catches people out: there is no NR SecurityModeCommand in EN-DC, so searching an NSA log for one returns nothing and proves nothing.

⚠️
Common pitfall

An sk-counter mismatch between UE and network is the most complete and least informative failure in NSA. Both sides derive a 256-bit key; the keys differ; every NR PDCP PDU the UE receives fails its integrity or deciphering check, and every one it sends is garbage to the SgNB.

What you see: the addition succeeds, the LTE RRCConnectionReconfigurationComplete arrives normally, PSCell CFRA succeeds, the SCG goes active -- and then no user data ever crosses the NR leg. NR PDCP discards silently. There is no error message, because PDCP has no way to report one.

The distinguishing symptom is an active SCG with non-zero NR PHY throughput and zero PDCP delivery. If the physical layer is working and PDCP is delivering nothing, suspect the key before the radio -- and check that sk-Counter-r15 in the LTE reconfiguration matches the counter the MeNB used to derive the key it put in the X2AP request.

14. Ongoing Operation: Modification, PSCell Change, Release

Addition is one procedure of many, and the others share a design principle worth stating once: the MeNB decides, the SgNB requests. Every X2AP procedure in EN-DC exists in an MeNB-initiated and an SgNB-initiated form, and the SgNB-initiated form is always a request the MeNB can refuse -- because only the MeNB can reach the UE.

ProcedureInitiated byMessagesWhat it is forDoes the UE see it?
SgNB ModificationMeNBSGNB MODIFICATION REQUEST / REQUEST ACKNOWLEDGE / REQUEST REJECTAdd, modify or release individual E-RABs on an existing SCG; supply a new S-K_gNB after a key refresh; pass an updated capability or restriction.Usually yes -- a new LTE reconfiguration with a fresh NR container.
SgNB ModificationSgNBSGNB MODIFICATION REQUIRED / CONFIRM / REFUSEThe SgNB needs the UE reconfigured -- a PSCell change within the same SgNB, a bandwidth part change, a released bearer -- and cannot do it itself.Yes, if the MeNB confirms. If it refuses, the SgNB is stuck with the configuration it has.
PSCell change (intra-SgNB)SgNBSGNB MODIFICATION REQUIRED carrying a new CG-Config with reconfigurationWithSyncMove the UE's SCG anchor to another cell of the same SgNB as it moves.Yes. It is a full synchronised reconfiguration with T304 and a CFRA attempt at the new PSCell -- mechanically the same as §9.
SgNB ChangeSgNBSGNB CHANGE REQUIRED / CONFIRM / REFUSE, then an addition to the new SgNB and a release of the oldMove the SCG to a different SgNB. The old SgNB proposes the target in candidateCellInfoListSN.Yes, and typically with endc-ReleaseAndAdd-r15 set true -- release the old SCG completely, then apply the new one.
SgNB ReleaseMeNBSGNB RELEASE REQUEST / REQUEST ACKNOWLEDGE / REQUEST REJECTThe MeNB no longer wants the SCG: the UE is going idle, an LTE handover is going somewhere with no EN-DC, the NR leg has failed, or a policy timer expired.Yes, unless the UE is already gone -- in which case the release is housekeeping only.
SgNB ReleaseSgNBSGNB RELEASE REQUIRED / CONFIRMThe SgNB wants out: overload, cell lock, a planned outage, or the UE has been inactive on NR long enough to be not worth the resource.Yes, once the MeNB acts on it.
Secondary RAT Data Usage ReportSgNBSECONDARY RAT DATA USAGE REPORTVolume counted on the NR leg, for charging. Relayed by the MeNB to the MME in S1AP.No. This is the only mechanism by which the core learns how much data went over NR.

Table 16. Every SgNB-initiated row has a REFUSE or REJECT in it. The SgNB in EN-DC has no authority over the UE at all, and a persistent stream of refused SGNB MODIFICATION REQUIRED messages is a coordination problem between the two vendors' RRM policies rather than a fault in either.

Two operational points. First, an LTE handover is the commonest cause of SCG loss in a live network -- and it is not a failure. When the MeNB hands the UE to another eNB, the SCG is released unless the target eNB has an X2 to the same SgNB and the source includes the EN-DC information in its handover preparation. Many deployments simply release and re-add, which costs the whole 612 ms budget of §19.1 on every LTE handover. If your NR attach rate looks high and your NR dwell time looks low, count LTE handovers before looking at NR coverage.

Second, an inactivity-driven SgNB release is normal and is often mistaken for instability. A UE with no NR traffic for a few seconds is consuming SgNB scheduling resource, PSCell CSI reporting and UE battery for nothing, so most vendors release the SCG on an inactivity timer and re-add on the next B1 report or the next buffer build-up. The trace looks like flapping. It is policy.

15. SCG Failure, and Why It Is Silent

When the NR leg breaks, the UE does not declare radio link failure and does not re-establish. It sends one LTE RRC message on the surviving MCG -- SCGFailureInformationNR -- and carries on. TS 36.331 cl. 5.6.13 That asymmetry is deliberate, it is the reason NSA is robust, and it is also the reason NSA problems go unnoticed for months.

Figure 10. Three causes, one message, one outcome for the user: nothing. Branch C is the one that repeats deterministically for a given UE model in a given cell, and it is the one most often misdiagnosed as coverage.
failureTypeWhat actually happenedDetected byLikely causeWhat it points at
t310-ExpiryNR T310 ran out on the PSCell: N310 consecutive out-of-sync indications and no N311 in-sync run before expiry.The UE's NR radio link monitoring on the PSCell.Genuine NR coverage loss, a blocked FR1 path, or an SSB beam the UE moved out of.Real radio. Correlate with NR RSRP at the moment of failure. This is the only branch that is honestly a coverage problem. Companion 16 RLM and RLF.
randomAccessProblemCFRA at the PSCell exhausted preambleTransMax without a RAR.The UE's NR MAC.PSCell uplink coverage worse than its downlink; wrong CFRA resource; the SgNB not accepting the preamble; a beam mismatch between the reported SSB and the reserved RACH occasion.Uplink, or configuration. Compare NR downlink RSRP at the failure against the CFRA attempt count -- a strong downlink with exhausted preambles is a configuration or an uplink-power problem, not coverage.
rlc-MaxNumRetxAn SCG RLC entity hit its maximum retransmission count.The UE's NR RLC.Sustained uplink or downlink errors on an established leg -- often the tail end of a coverage problem that T310 would have caught a moment later.Radio, but check maxRetxThreshold first: an aggressive value turns ordinary marginal coverage into a failure.
scg-ChangeFailureT304 for the SCG expired during a PSCell change or an SgNB change.The UE's NR RRC, on T304 expiry.The target PSCell was not reachable in time: too aggressive a change threshold, a stale measurement, or a target cell that was barred or down.Mobility configuration. Distinguish from randomAccessProblem by whether an SCG already existed -- a change failure means it did.
scg-reconfigFailureThe UE could not apply the NR configuration it was given. The container did not parse, or it asked for something outside the UE's capabilities.The UE's NR RRC, at decode or apply time -- before any NR transmission.A capability the SgNB assumed and the UE does not have; a feature combination the UE rejects; a genuine encoding bug at one of the three container boundaries of §8.Configuration, always. It repeats for every UE of that model in that cell, and it is deterministic. Group SCG failures by device model -- if one model dominates, it is this.

Table 17. The failureType enumeration in FailureReportSCG-NR-r15; srb3-IntegrityFailure also exists but only where SRB3 has been configured, which is rare in EN-DC. Only the first three rows are radio problems.

The message carries more than the failure type. measResultFreqListNR-r15 gives the MeNB the UE's current view of the NR frequencies and cells it can see, so the MeNB can decide immediately whether to release the SgNB or change to a different PSCell rather than having to reconfigure measurements and wait for a new B1 report. measResultSCG-FailureMRDC-r15 is an octet string containing an NR MeasResultSCG-Failure, which is -- inevitably -- another NR ASN.1 container inside an LTE message.

💡
THE SILENCE IS THE PROBLEM

An SCG failure does not drop the call. The MCG is untouched: SRB1 is up, the LTE DRBs are running, the voice bearer never left the MeNB. The UE reports, the MeNB suspends SCG transmission, reconfigures the split bearers back to MCG bearers with LTE PDCP, and either releases the SgNB or points the UE at a different PSCell.

The user sees throughput fall from 1.9 Gbit/s to 183 Mbit/s. On most traffic, that is invisible.

Which is exactly why SCG failure has to be counted explicitly. It will not show up in drop-call statistics, accessibility KPIs, or retainability KPIs, because by every one of those measures nothing happened. A network can lose its entire NR layer for a week and every traditional KPI will be green.

The counters that matter: SCG addition attempts against successes, SCG failures by failureType, and NR dwell time per connection. The third is the most revealing and the least often collected.

16. Timers and Parameters Reference

Timer / counterWhere configuredRangeTypicalStarted byExpiry action
T304 (SCG)NR reconfigurationWithSync.t304 inside the SCG's spCellConfigms50, ms100, ms150, ms200, ms500, ms1000, ms2000, ms10000ms1000 for addition, ms200-ms500 for PSCell changeApplying reconfigurationWithSync for the SCGSCG failure with scg-ChangeFailure. Not re-establishment.
T310 (SCG)NR rlf-TimersAndConstants inside the SCG's spCellConfigms0, ms50, ms100, ms200, ms500, ms1000, ms2000, ms4000, ms6000ms1000N310 consecutive out-of-sync indications on the PSCellSCG failure with t310-Expiry.
N310 / N311 (SCG)NR rlf-TimersAndConstantsN310: n1..n20. N311: n1..n10N310 n10, N311 n1Layer 1 in-sync / out-of-sync indications for the PSCellN310 starts T310; N311 stops it.
T310 / T311 (MCG)LTE ue-TimersAndConstants, TS 36.331T310: ms0..ms2000. T311: ms1000..ms30000T310 ms1000LTE radio link monitoringLTE radio link failure, re-establishment, and loss of the whole connection including the SCG. This is the one that hurts.
timeToTrigger (B1)LTE reportConfigInterRATms0, ms40, ms64, ms80, ms100, ms128, ms160, ms256, ms320, ms480, ms512, ms640, ms1024, ms1280, ms2560, ms5120ms160-ms320The B1 entering condition becoming trueThe MeasurementReport is sent. Reset if the entering condition ceases (see §5.3 and figure 10).
t-Reordering (NR PDCP)NR PDCP-Config in the DRBms0..ms3000 in a long enumerationms100-ms220 for a split bearerA PDCP gap detected with a later SN already receivedDeliver what is held and move the reordering window past the gap. Too short causes loss on a split bearer with asymmetric legs.
SCG inactivity timerVendor-specific, not 3GPPn/a2-10 sNo NR traffic on the SCGSGNB RELEASE REQUIRED or SGNB RELEASE REQUEST. The commonest cause of apparent NR flapping.
preambleTransMax (SCG)NR rach-ConfigGeneric inside reconfigurationWithSyncn3, n4, n5, n6, n7, n8, n10, n20, n50, n100, n200n10 for CFRA at a PSCellEach unanswered preambleSCG failure with randomAccessProblem.

Table 18. Only the MCG row causes a call drop. Every SCG timer in this table expires into a single reported message and a return to LTE service, which is the whole design.

ParameterASN.1 locationRangeTypicalEffect if wrong
dcnrNAS UE network capability, TS 24.3011 bit10: no EN-DC is ever offered, silently. §4.1.
restrictDCNRNAS EPS network feature support, TS 24.3011 bit01: the UE will not use EN-DC even if capable. §4.2.
b1-ThresholdNR-r15LTE reportConfigInterRAT.eventB1-NR-r15RSRP-RangeNR 0..127, value n = -157 + n dBm56-66 (-101 to -91 dBm)Too high: NR is never added where it would help. Too low: NR is added where it is useless, costing battery and PSCell churn.
offsetFreq-r15LTE measObjectNR-r15-15..15 dB0 or -2 dBA per-frequency thumb on the B1 scale. Negative makes addition less eager.
smtc periodicityAndOffsetLTE measObjectNR-r15.rs-ConfigSSB-r15sf5, sf10, sf20, sf40, sf80, sf160sf20Misaligned with the SgNB's actual SSB burst and the UE detects nothing, forever. Companion 21 Measurement Gaps and SMTC.
subcarrierSpacingSSB-r15LTE measObjectNR-r15.rs-ConfigSSB-r15kHz15, kHz30, kHz120, kHz240kHz30 for n78Wrong numerology: no SSB detection at all, which looks exactly like no coverage.
sk-Counter-r15LTE RRCConnectionReconfiguration-v1510-IEs0..65535increments per additionMismatch: SCG active, PDCP delivering nothing, no error anywhere. §12.
p-MaxEUTRA-r15LTE nr-Config-r15.setup-30..33 dBm20-21 dBmToo high with p-NR-FR1: the UE scales down unpredictably. Too low: the LTE uplink loses coverage for no gain. §13.
p-NR-FR1NR physicalCellGroupConfig-30..33 dBm20-23 dBmAs above, from the other side of the container boundary.
ul-DataSplitThresholdNR PDCP-Config.moreThanOneRLCb0, b100, b200, ... b4096000, infinityb1600-b12800Too high: the second uplink leg is never used. infinity: never used at all. §11.2.
primaryPathNR PDCP-Config.moreThanOneRLCcellGroup 0 (MCG) or 1 (SCG), plus a logical channelSCGSet to MCG on an SCG-anchored bearer and every small uplink transfer takes an X2 hop. §11.2.

Table 19. Eleven parameters spread across NAS, LTE RRC and NR RRC, in three specifications, authored by three different nodes. Nothing validates them against each other.

17. The NSA Failure Taxonomy

Ten failure modes, ordered by how early they occur in the chain. The ordering is the diagnostic method: work down the list, and stop at the first one that matches, because a failure early in the chain makes everything after it unobservable.

FailureWho detects itWhat the UE doesWhat the network doesWhat it looks like in a log
1. dcnr not set by the UENobody. It is not a failure condition.Nothing. It never expects NR.Never configures a measObjectNR. Correct behaviour.Attach Request with DCNR = 0. No measObjectNR in any measConfig, no B1 report, no X2AP activity. The absence is total and starts at the attach.
2. restrictDCnR set by the MMEThe UE, on reading the Attach Accept.Nothing. It will not accept an SCG even if offered.The MeNB also receives NR Restriction in EPS as Secondary RAT in the Handover Restriction List and skips EN-DC for this UE.DCNR = 1 in the Attach Request, restrictDCNR = 1 in the Attach Accept. Identical radio-side symptoms to failure 1 -- the only way to tell them apart is to decode both NAS messages.
3. No EN-DC band combination for the deployed pairThe MeNB, on parsing UE-MRDC-Capability.Nothing. It answered the enquiry honestly.No measObjectNR configured for this UE. Some vendors log a capability-mismatch reason; many log nothing.UECapabilityInformation present with an eutra-nr container, and no BandCombination whose bandList holds both B3 and n78. Check appliedFreqBandListFilter first -- a filtered enquiry produces the same picture (§5.2).
4. B1 never triggersNobody. Silence is indistinguishable from no coverage.Measures diligently and reports nothing.Waits. Forever.measObjectNR and reportConfigInterRAT both present in the measConfig, and no MeasurementReport for that measId. Four distinct causes: threshold too high, wrong ARFCN, SSB outside the SMTC, wrong SSB subcarrier spacing. Check the SMTC against the SgNB's actual SSB periodicity and offset before touching the threshold.
5. X2 not set up, or not EN-DC capableThe MeNB, when it tries to send the addition.Nothing. It reported and heard nothing back.Discards the addition decision. May blacklist the neighbour relation for a while.A B1 report is present and no SGNB ADDITION REQUEST follows. This is the cleanest signature in the whole taxonomy: report in, nothing out. Check the X2 association state and whether the peer advertised NR served cells.
6. SGNB ADDITION REQUEST REJECTThe SgNB, and it says so explicitly.Nothing. It is unaware the attempt happened.The MeNB may retry, try another candidate, or give up per policy.The reject message with a Cause. Common values and their meaning: radio-resources-not-available = genuine SgNB congestion; no-radio-resources-available-in-target-cell = the chosen PSCell specifically; ue-max-integrity-protected-data-rate-reason or a capability cause = the container asked for something unsupportable; transport-resource-unavailable = the SgNB has no S1-U or X2-U path.
7. Container rejected at a boundary (§8)The MeNB (outer levels) or the UE (inner level).Sends SCGFailureInformationNR, failure type scg-reconfigFailure, if it reached the UE.Releases the SgNB and usually retries once, with the same result.The addition acknowledge arrives, the LTE reconfiguration goes out, and the response is an SCG failure rather than a ReconfigurationComplete -- or a complete followed immediately by a failure. Deterministic per UE model. Group your SCG failures by device.
8. PSCell CFRA failure / T304 expiryThe UE's NR MAC or RRC.Sends SCGFailureInformationNR, failure type randomAccessProblem or scg-ChangeFailure.Releases or changes the SgNB using the measResultFreqListNR in the report.LTE ReconfigurationComplete present, then an SCG failure a few hundred milliseconds later. Read the NR RSRP in the report: strong downlink plus exhausted preambles means uplink power or a wrong CFRA resource, not coverage (§15).
9. sk-counter or key mismatchNobody. PDCP discards silently.Nothing to report -- from RRC's point of view everything succeeded.Nothing. It sees an active SCG.SCG active, NR PHY throughput non-zero, NR PDCP delivered volume zero, no failure message anywhere. The only positively identifying symptom in NSA that has no error message attached to it (§12).
10. Uplink power starvationNobody, directly. It shows up as degraded performance.Scales its transmit power to stay within its power class, by an implementation-specific rule.Keeps scheduling grants the UE cannot fill.NR uplink grant utilisation low with good NR downlink; LTE uplink worse with NR attached than without; behaviour differs by device model in the same cell. Sum p-MaxEUTRA-r15 and p-NR-FR1 and compare against 23 dBm (§13).

Table 20. Failures 1 to 5 produce no error message of any kind, and failures 1, 2 and 3 are not failures at all from the network's point of view. That is five of ten diagnosed purely by noticing what is missing -- which is why §22's checklist is ordered the way it is.

💡
BUILD A FUNNEL, NOT AN ALARM

Notice the shape of this table. Only rows 6 and 8 generate anything a conventional alarm or counter would catch, and row 8 is the only one that increments an NR failure counter. Rows 1 to 5 and row 9 are all diagnosed by the absence of a message that should have been there.

That is the practical consequence of NSA's architecture: because NR is additive and non-essential, its failures are non-events. Build your NSA monitoring around funnel counting -- attaches with DCNR set, of those how many got a measObjectNR, of those how many produced a B1 report, of those how many produced an addition request, of those how many reached SCG active -- and the stage where the funnel narrows tells you which row of this table you are in before you open a single trace.

18. ASN.1 Structures

Four abridged structures, two from TS 36.331 and two from TS 38.331, chosen because between them they define every container boundary in §8. All are abridged with ... and with OPTIONAL fields dropped where they are irrelevant to EN-DC; the field names, types and ranges shown are as specified.

18.1 The LTE carrier: RRCConnectionReconfiguration-v1510-IEs

-- TS 36.331. The Rel-15 extension that turns an ordinary LTE
-- reconfiguration into an EN-DC one. Abridged.

RRCConnectionReconfiguration-v1510-IEs ::= SEQUENCE {
    nr-Config-r15                       CHOICE {
        release                             NULL,
        setup                               SEQUENCE {
            endc-ReleaseAndAdd-r15              BOOLEAN,
            nr-SecondaryCellGroupConfig-r15     OCTET STRING   OPTIONAL,
                 -- contains an NR RRCReconfiguration, TS 38.331
            p-MaxEUTRA-r15                      P-Max          OPTIONAL
        }
    }                                                          OPTIONAL,
    sk-Counter-r15                      INTEGER (0..65535)      OPTIONAL,
    nr-RadioBearerConfig1-r15           OCTET STRING            OPTIONAL,
                 -- contains an NR RadioBearerConfig, TS 38.331
    nr-RadioBearerConfig2-r15           OCTET STRING            OPTIONAL,
    tdm-PatternConfig-r15               SEQUENCE {
        subframeAssignment-r15              SubframeAssignment-r15,
        harq-Offset-r15                     INTEGER (0..9)
    }                                                           OPTIONAL,
    nonCriticalExtension                ...
}

-- Three OCTET STRINGs, three separate NR ASN.1 payloads, and one
-- INTEGER that the MeNB authors itself. Note that nr-Config-r15 is a
-- CHOICE: the entire difference between adding an SCG and tearing one
-- down is which alternative is encoded.

Listing 3. An LTE-only decoder shows you this structure correctly and then three opaque byte counts. Those bytes are the NR configuration (§8).

18.2 The LTE report: SCGFailureInformationNR-r15

-- TS 36.331 cl. 6.2.2. Sent on SRB1 over the MCG, which is the whole
-- point: the leg that failed is not the leg the report travels on.

SCGFailureInformationNR-r15 ::= SEQUENCE {
    criticalExtensions                  CHOICE {
        c1                                  CHOICE {
            scgFailureInformationNR-r15         SCGFailureInformationNR-r15-IEs,
            spare3 NULL, spare2 NULL, spare1 NULL
        },
        criticalExtensionsFuture            SEQUENCE {}
    }
}

SCGFailureInformationNR-r15-IEs ::= SEQUENCE {
    failureReportSCG-NR-r15             FailureReportSCG-NR-r15  OPTIONAL,
    nonCriticalExtension                SEQUENCE {}              OPTIONAL
}

FailureReportSCG-NR-r15 ::= SEQUENCE {
    failureType-r15                     ENUMERATED {
        t310-Expiry, randomAccessProblem, rlc-MaxNumRetx,
        scg-ChangeFailure, scg-reconfigFailure,
        srb3-IntegrityFailure, spare2, spare1
    },
    measResultFreqListNR-r15            MeasResultFreqListFailNR-r15 OPTIONAL,
    measResultSCG-r15                   OCTET STRING             OPTIONAL,
                 -- contains an NR MeasResultSCG-Failure, TS 38.331
    ...
}

-- One enumerated value is the entire diagnosis the network receives.
-- Everything else is measurement data to help it choose what to do next.

Listing 4. measResultFreqListNR-r15 is what lets the MeNB change PSCell immediately rather than reconfiguring measurements and waiting for another B1 cycle -- worth several hundred milliseconds of NR outage on every recovery.

18.3 The NR inter-node message: CG-Config

-- TS 38.331 cl. 11.2.2. Never transmitted on any air interface.
-- Exists so two network nodes can exchange NR configuration in NR
-- ASN.1 across an X2AP or XnAP container. Abridged.

CG-Config ::= SEQUENCE {
    criticalExtensions                  CHOICE {
        c1                                  CHOICE {
            cg-Config                           CG-Config-IEs,
            spare3 NULL, spare2 NULL, spare1 NULL
        },
        criticalExtensionsFuture            SEQUENCE {}
    }
}

CG-Config-IEs ::= SEQUENCE {
    scg-CellGroupConfig       OCTET STRING (CONTAINING RRCReconfiguration)
                                                                 OPTIONAL,
    scg-RB-Config             OCTET STRING (CONTAINING RadioBearerConfig)
                                                                 OPTIONAL,
    configRestrictModReq      ConfigRestrictModReqSCG            OPTIONAL,
    drx-InfoSCG               DRX-Info                           OPTIONAL,
    candidateCellInfoListSN   OCTET STRING (CONTAINING MeasResultList2NR)
                                                                 OPTIONAL,
    measConfigSN              MeasConfigSN                       OPTIONAL,
    selectedBandCombination   BandCombinationInfoSN              OPTIONAL,
    fr-InfoListSCG            FR-InfoList                        OPTIONAL,
    candidateServingFreqListNR CandidateServingFreqListNR         OPTIONAL,
    nonCriticalExtension      CG-Config-v1540-IEs                OPTIONAL
}

-- 'OCTET STRING (CONTAINING X)' is real ASN.1 and it is the notation
-- to look for. It tells a decoder exactly what the bytes are, and a
-- decoder that honours it will unwrap all three levels for you.

Listing 5. CG-ConfigInfo, the message travelling the other way in MeNB to SgNB Container, has the same shape: capability and measurement information, plus sourceConfigSCG and scgFailureInfo for the modification and recovery cases.

18.4 The NR payload: where reconfigurationWithSync sits

-- TS 38.331 cl. 6.2.2 and 6.3.2. The path from the octet string the
-- UE receives to the field that makes it perform random access.
-- Heavily abridged: only the EN-DC-relevant branch is shown.

RRCReconfiguration-IEs ::= SEQUENCE {
    radioBearerConfig         RadioBearerConfig                  OPTIONAL,
    secondaryCellGroup        OCTET STRING (CONTAINING CellGroupConfig)
                                                                 OPTIONAL,
    measConfig                MeasConfig                         OPTIONAL,
    ...
}

CellGroupConfig ::= SEQUENCE {
    cellGroupId               CellGroupId,          -- 1 for the SCG
    rlc-BearerToAddModList    SEQUENCE (SIZE(1..maxLC-ID)) OF RLC-BearerConfig
                                                                 OPTIONAL,
    mac-CellGroupConfig       MAC-CellGroupConfig                OPTIONAL,
    physicalCellGroupConfig   PhysicalCellGroupConfig            OPTIONAL,
                 -- p-NR-FR1 lives here (section 13)
    spCellConfig              SpCellConfig                       OPTIONAL,
    sCellToAddModList         SEQUENCE (SIZE(1..maxNrofSCells)) OF SCellConfig
                                                                 OPTIONAL,
    ...
}

SpCellConfig ::= SEQUENCE {
    servCellIndex             ServCellIndex                      OPTIONAL,
    reconfigurationWithSync   ReconfigurationWithSync            OPTIONAL,
    rlf-TimersAndConstants    SetupRelease { RLF-TimersAndConstants }
                                                                 OPTIONAL,
    rlmInSyncOutOfSyncThreshold ENUMERATED {n1}                  OPTIONAL,
    spCellConfigDedicated     ServingCellConfig                  OPTIONAL,
    ...
}

ReconfigurationWithSync ::= SEQUENCE {
    spCellConfigCommon        ServingCellConfigCommon            OPTIONAL,
                 -- the PSCell: physCellId, ssb frequency, TDD pattern
    newUE-Identity            RNTI-Value,   -- the SCG C-RNTI, handed over
    t304                      ENUMERATED {ms50, ms100, ms150, ms200,
                                          ms500, ms1000, ms2000, ms10000},
    rach-ConfigDedicated      CHOICE {
        uplink                    RACH-ConfigDedicated,
        supplementaryUplink       RACH-ConfigDedicated
    }                                                            OPTIONAL,
    ...
}

-- Note secondaryCellGroup is ITSELF an OCTET STRING inside the NR
-- RRCReconfiguration. So the full path from X2AP to t304 crosses FOUR
-- encoding boundaries, not three. rach-ConfigDedicated is the CFRA
-- resource of section 9.2, and newUE-Identity is why there is no MSG3.

Listing 6. newUE-Identity is the detail that makes PSCell access contention-free in the strongest sense: the C-RNTI is assigned in the configuration, so there is nothing to resolve and no MSG4 to wait for.

19. Worked Arithmetic

Three calculations. The scenario throughout: PLMN 001-01, an LTE anchor on band 3 at 20 MHz FDD with 2x2 MIMO, an NR carrier on n78 at 100 MHz TDD with 30 kHz subcarrier spacing, 4x4 MIMO and a DDDSU slot pattern, and 4 ms of one-way X2 transport. Substitute your own numbers; the structure is the point.

19.1 From Attach Accept to the first NR byte

Figure 11. The LTE leg is serving the user for the entire 700 ms. Nothing in this budget is an outage -- it is purely the delay before an improvement arrives.
💡
TIME TO FIRST NR BYTE

Step by step, from the NAS Attach Accept at t = 0.

Attach Complete, then the MeNB deciding to enquire about capabilities: 40 ms.

UECapabilityEnquiry and UECapabilityInformation, one LTE RRC round trip with a multi-kilobyte response segmented over several TTIs: 30 ms.

MeNB intersects the band combinations, builds and sends the measConfig: 30 ms.

UE retunes to n78, searches for SSBs inside the 20 ms SMTC, detects PCI 502 SSB 1, runs L3 filtering to a stable value: 100 ms.

timeToTrigger = ms320, entering condition held continuously: 320 ms. Running total at the MeasurementReport: 520 ms.

MeNB resolves PCI to a neighbour, checks the X2 association, decides: 5 ms.

X2AP addition: MeNB builds CG-ConfigInfo 4 ms; X2 to the SgNB 4 ms; SgNB admission control, PSCell selection, CFRA reservation and CG-Config encoding 20 ms; X2 back 4 ms; MeNB extracts the container, adds sk-Counter-r15, builds the LTE RRC message 8 ms. 40 ms.

Air-interface reconfiguration: eNB schedules and transmits on SRB1 with RLC acknowledgement 5 ms; UE decodes the LTE message 4 ms; UE decodes the nested NR RRCReconfiguration, derives S-K_gNB, establishes NR PDCP, MAC and RLC 20 ms; UE retunes and acquires PSCell SSB timing 6 ms. 35 ms.

PSCell CFRA: wait for the next RACH occasion 4 ms average; preamble 1 ms; ra-ResponseWindow and RAR decode 6 ms; apply the timing advance 1 ms. 12 ms.

Total = 40 + 30 + 30 + 100 + 320 + 5 + 40 + 35 + 12 = 612 ms from Attach Accept to the first NR PDSCH.

Reading the result. The two steps engineers instinctively optimise -- the X2AP exchange and the air-interface reconfiguration, plus the RACH -- total 87 ms, or 14% of the budget. timeToTrigger alone is 320 ms, or 52%. The SSB search is another 100 ms. Tuning transport or node processing here buys almost nothing; tuning timeToTrigger and the SMTC buys almost everything.

And the honest caveat. 612 ms of no NR is 612 ms of ordinary LTE service. Whether it matters depends entirely on how often it recurs -- which is why the LTE handover behaviour in §14 matters so much more than this number does. A UE that pays this budget once per connection will never notice; a UE that pays it after every LTE handover spends a large fraction of its life without NR.

19.2 What EN-DC actually adds: the aggregate throughput

The downlink figure is the one on every marketing slide, so it is worth deriving rather than quoting. The NR half uses the TS 38.306 clause 4.1.2 formula; the LTE half is a resource-element count, because LTE has no equivalent closed form.

💡
AGGREGATE THROUGHPUT, DERIVED

LTE downlink, band 3, 20 MHz FDD, 2 layers, 256QAM.

100 PRB x 12 subcarriers = 1200 subcarriers; 14 OFDM symbols per 1 ms subframe gives 16 800 resource elements per subframe per antenna port.

Subtract control and reference overhead: 2 symbols of PDCCH/PCFICH/PHICH = 2400 RE; cell-specific reference signals outside the control region = 800 RE; PSS, SSS, PBCH and SIB averaged over time = 300 RE.

Usable = 16 800 - 2400 - 800 - 300 = 13 300 RE per subframe.

13 300 x 8 bits (256QAM) x 0.86 (code rate) x 2 layers = 183 008 bits per ms = 183 Mbit/s.

NR downlink, n78, 100 MHz TDD, 30 kHz SCS, 4 layers, 256QAM.

At 30 kHz, 100 MHz gives N_PRB = 273 and a slot of 14 symbols every 0.5 ms, so 2000 slots per second.

Bits per fully-downlink slot = v x Q x R_max x N_PRB x 12 x 14 x (1 - OH) = 4 x 8 x (948/1024) x 273 x 12 x 14 x 0.86.

4 x 8 x 0.925781 = 29.625; x 273 = 8087.6; x 12 = 97 051; x 14 = 1 358 717; x 0.86 = 1 168 497 bits per DL slot (OH = 0.14 for FR1 downlink).

DDDSU over five slots = 2.5 ms: three full downlink slots plus a special slot with 10 downlink symbols of 14. Downlink slot-equivalents = 3 + 10/14 = 3.714.

3.714 x 1 168 497 = 4 340 132 bits per 2.5 ms; x 400 = 1736 Mbit/s.

Aggregate downlink = 183 + 1736 = 1919 Mbit/s, a factor of 1919/183 = 10.5 over LTE alone.

LTE uplink, 20 MHz FDD, 1 layer, 16QAM.

PUCCH takes 4 PRB at each band edge, leaving 92 PRB for PUSCH. DMRS occupies 2 of the 14 SC-FDMA symbols, leaving 12.

92 x 12 x 12 = 13 248 RE per subframe; x 4 bits x 0.93 x 1 layer = 49 283 bits per ms = 49 Mbit/s.

NR uplink, n78, 1 layer, 64QAM.

Bits per fully-uplink slot = 1 x 6 x 0.925781 x 273 x 12 x 14 x 0.92 (OH = 0.08 for FR1 uplink) = 234 380 bits.

DDDSU gives one full uplink slot plus 2 uplink symbols in the special slot = 1 + 2/14 = 1.143 uplink slot-equivalents per 2.5 ms.

1.143 x 234 380 = 267 806 bits per 2.5 ms; x 400 = 107 Mbit/s.

Aggregate uplink = 49 + 107 = 156 Mbit/s, a factor of 156/49 = 3.2.

Reading the result. Downlink multiplies by 10.5 and uplink by 3.2, and the asymmetry has three causes stacked on top of each other: the DDDSU pattern gives the uplink one slot in five while the downlink gets nearly four; the uplink runs one layer against the downlink's four; and the uplink modulation is lower because uplink SNR is lower.

And the 3.2 is the optimistic figure. It assumes both transmitters active simultaneously, which requires dynamicPowerSharingENDC and a power budget that accommodates both (§13). Under single-uplink operation the two uplinks share time instead of adding, and the aggregate falls back toward the larger of the two rather than their sum.

19.3 A B1 evaluation with real values

💡
B1 WITH THE DIP THAT COSTS 400 ms

Configuration. b1-ThresholdNR-r15 = nr-RSRP 61; offsetFreq-r15 = -2 dB; hysteresis = 4, i.e. 2 dB; timeToTrigger = ms320.

Threshold in dBm. RSRP-RangeNR value n maps to -157 + n dBm, so 61 gives Thresh = -96 dBm TS 38.133 cl. 10.1.6.

Entering level. B1-1 is Mn + Ofn - Hys > Thresh, so Mn > -96 + 2 + 2 = -92 dBm.

Leaving level. B1-2 is Mn + Ofn + Hys < Thresh, so Mn < -96 + 2 - 2 = -96 dBm.

Now walk the measured trace of figure 10. At t = 400 ms the L3-filtered RSRP of PCI 502 reaches -91 dBm. Check: -91 - 2 - 2 = -95, and -95 > -96, so B1-1 is satisfied. timeToTrigger starts and would expire at 720 ms.

At t = 600 ms the filtered value dips to -93 dBm. Check: -93 - 2 - 2 = -97, and -97 is not greater than -96. B1-1 is no longer satisfied, so timeToTrigger is reset -- 200 ms of waiting discarded.

Note carefully that the leaving condition was never met: -93 is 3 dB above the -96 dBm leaving level. The 4 dB hysteresis band did nothing, because a cell not yet in cellsTriggeredList is governed by the entering inequality alone TS 36.331 cl. 5.5.4.1.

At t = 800 ms the value returns to -91 dBm, B1-1 is satisfied again, and timeToTrigger runs to completion. The MeasurementReport is sent at t = 1120 ms.

Cost of the dip = 1120 - 720 = 400 ms of NR that the UE could have had, caused by a 2 dB fluctuation well inside normal SSB RSRP variation at the edge of an FR1 cell.

Reading the result. With timeToTrigger = ms640 instead, a second dip anywhere in the next 640 ms would reset it again, and on a trace with this much variation the report may never be sent at all -- the classic good NR coverage, no NR attach complaint.

The fix is not always a shorter timeToTrigger, which trades stability for churn. Widening the L3 filter coefficient smooths the input instead, and costs response time rather than stability. Which of the two to reach for depends on whether your problem is a UE that never attaches NR or a UE that attaches and immediately loses it.

20. Illustrative Message Traces

🔍
ABOUT THESE TRACES

Illustrative trace. Field names and encodings follow 3GPP; the values are constructed for this document and are not a capture from any deployed or lab network. IP addresses are taken from the RFC 5737 documentation ranges and the PLMN is the reserved test PLMN 001-01, so nothing here can be mistaken for operator data.

One UE, one successful NSA attach, throughout -- then one failure. LTE anchor: EARFCN 1650 (band 3), PCI 118, ECGI 001-01-0x0A1B2C01, LTE C-RNTI 0x3D5A. NR: n78, SSB ARFCN 632628, PCI 502, gNB-ID 0x0C4E71, SCG C-RNTI 0x7B14. S1AP identities: MME UE S1AP ID 0x0031B7A0, eNB UE S1AP ID 0x00003F91. X2AP identities: MeNB UE X2AP ID 0x0A31, SgNB UE X2AP ID 0x000015C2. EPS bearer 5 (QCI 9) begins as LTE DRB 1 and continues as NR DRB 2; EPS bearer 6 (QCI 1, voice) stays on the MeNB throughout.

20.1 NAS Attach Accept, with restrictDCNR clear

[S1AP / NAS] Attach Accept, MME -> MeNB -> UE
09:41:07.284  [S1AP-RX] assoc=MME 192.0.2.101:36412  stream 2
                        DOWNLINK NAS TRANSPORT
  mME-UE-S1AP-ID .................. 0x0031B7A0
  eNB-UE-S1AP-ID .................. 0x00003F91
  nAS-PDU ......................... (94 bytes)

  -- EMM: Attach Accept (message type 0x42)
  EPS attach result ............... 0x02  (combined EPS/IMSI attach)
  T3412 value ..................... 54 min
  TAI list ........................ plmn 001-01, tac 0x00A2
  ESM message container ........... Activate default EPS bearer
                                    context request, EPS bearer id 5
    EPS QoS  qci ................... 9
    PDN address  IPv4 .............. 198.51.100.77
  GUTI ............................ 001-01-0x1A-0x02-0x4C0921F3
  EPS network feature support ..... 0x1140
    IMS-VoPS ....................... 1   -- voice over PS supported
    EMC-BS ......................... 0
    ESRPS .......................... 0
    CS-LCS ......................... 00
    EPC-LCS ........................ 0
    restrictDCNR ................... 0   <-- EN-DC PERMITTED
                                       -- 1 here and nothing in the rest
                                       -- of this document would happen

09:41:07.284  [RRM]  UE context: dcnr=1 (Attach Request), restrictDCNR=0
09:41:07.284  [RRM]  EN-DC candidate -> schedule UECapabilityEnquiry

Listing 7. Two bits, in two different NAS messages, forty milliseconds apart. The RRM lines are the eNB reconciling them; that reconciliation is the whole of §4 and the top two rows of §17.

20.2 UE-MRDC-Capability, one band combination

[LTE-RRC] UECapabilityInformation, eutra-nr container unwrapped
09:41:07.352  [LTE-RRC-RX] SRB1  UECapabilityInformation  C-RNTI 0x3D5A
  ue-CapabilityRAT-ContainerList
    [0] rat-Type = eutra      ueCapabilityRAT-Container (412 bytes)
    [1] rat-Type = eutra-nr   ueCapabilityRAT-Container (1867 bytes)
    [2] rat-Type = nr         ueCapabilityRAT-Container (3104 bytes)

  -- container [1] decoded with the TS 38.331 schema as UE-MRDC-Capability
  UE-MRDC-Capability
    rf-ParametersMRDC
      appliedFreqBandListFilter
        [0] bandEUTRA ..... 3
        [1] bandNR ........ 78
                            -- ALWAYS read this first. Combinations for
                            -- any other band are absent by request,
                            -- not by incapability.
      supportedBandCombinationList
        [0] BandCombination
              bandList
                [0] eutra  bandEUTRA 3
                           ca-BandwidthClassDL-EUTRA .. a
                           ca-BandwidthClassUL-EUTRA .. a
                [1] nr     bandNR 78
                           ca-BandwidthClassDL-NR ..... a
                           ca-BandwidthClassUL-NR ..... a
              featureSetCombination ...... 2
              supportedBandwidthCombinationSet .. '1'B
              powerClass-v1530 ........... pc2      -- 26 dBm
              mrdc-Parameters
                dynamicPowerSharingENDC .. supported
                singleUL-Transmission .... (absent)
                tdm-Pattern .............. (absent)
                ul-SharingEUTRA-NR ....... (absent)   -- inter-band pair
                simultaneousRxTxInterBandENDC .. supported

09:41:07.354  [RRM]  B3 + n78 present, class a/a, feature set 2
09:41:07.354  [RRM]  EN-DC feasible -> configure measObjectNR

Listing 8. dynamicPowerSharingENDC present and singleUL-Transmission absent is the good case for uplink (§13). powerClass-v1530 = pc2 gives 3 dB over the default -- and note it is a property of this combination, not of the device.

20.3 The B1 MeasurementReport

[LTE-RRC] measObjectNR configuration, then the B1 report
09:41:07.702  [LTE-RRC-TX] SRB1  RRCConnectionReconfiguration
  measConfig
    measObjectToAddModList
      [0] measObjectId 3   measObjectNR-r15
            carrierFreq-r15 .............. 632628      -- n78, 3550 MHz
            rs-ConfigSSB-r15
              measTimingConfig-r15
                periodicityAndOffset ..... sf20  offset 0
                duration ................. sf5
              subcarrierSpacingSSB-r15 ... kHz30
            offsetFreq-r15 ............... -2          -- dB
    reportConfigToAddModList
      [0] reportConfigId 4   reportConfigInterRAT
            triggerType  event  eventId  eventB1-NR-r15
              b1-ThresholdNR-r15  nr-RSRP-r15 .. 61    -- -96 dBm
            hysteresis ................... 4           -- 2 dB
            timeToTrigger ................ ms320
            reportQuantityCellNR-r15  rsrp true rsrq false sinr false
            maxReportCells ............... 4
    measIdToAddModList
      [0] measId 4   measObjectId 3   reportConfigId 4

09:41:08.014  [UE-L3]  measId 4: PCI 502 SSB 1 filtered RSRP -91 dBm
                       -91 + (-2) - 2 = -95  >  -96  -> B1-1 satisfied
09:41:08.014  [UE-L3]  timeToTrigger ms320 started

09:41:08.334  [LTE-RRC-RX] SRB1  MeasurementReport  C-RNTI 0x3D5A
  measResults
    measId ......................... 4
    measResultPCell
      rsrpResult ................... 48        -- -92 dBm, LTE anchor
      rsrqResult ................... 26
    measResultNeighCells  measResultListNR-r15
      [0] pci-r15 .................. 502
          measResultCell-r15
            rsrpResult-r15 ......... 66        -- -157 + 66 = -91 dBm
          measResultRS-Index-List-r15
            [0] ssb-Index-r15 ...... 1
                rsrpResult-r15 ..... 66
            [1] ssb-Index-r15 ...... 2
                rsrpResult-r15 ..... 59        -- -98 dBm, 7 dB worse

09:41:08.334  [RRM]  B1 for PCI 502 -> SgNB addition to gNB-ID 0x0C4E71

Listing 9. The per-SSB list is what the SgNB uses to choose a beam for the CFRA resource. SSB 1 is 7 dB better than SSB 2 here, so the choice is easy; where two beams are within 1 dB, a UE that moves during the addition can arrive on the wrong one and fail with randomAccessProblem (§15).

20.4 X2AP SGNB ADDITION REQUEST

[X2AP] SGNB ADDITION REQUEST, MeNB -> SgNB
09:41:08.343  [X2AP-TX] assoc=SgNB 203.0.113.31:36422  stream 1
                        SGNB ADDITION REQUEST
  initiatingMessage  procedureCode = id-sgNBAdditionPreparation
                     criticality = reject
  MeNB-UE-X2AP-ID ................. 0x0A31
  UE-SecurityCapabilities  (NR)
    encryptionAlgorithms .......... 'NEA1,NEA2,NEA3'  (bitmap 1110 0000..)
    integrityProtectionAlgorithms . 'NIA1,NIA2,NIA3'
  SgNBSecurityKey ................. <256 bits>
                                    -- S-K_gNB, already derived by the
                                    -- MeNB from K_eNB and sk-counter 1.
                                    -- The SgNB never sees either input.
  SgNBUEAggregateMaximumBitRate
    uEaggregateMaximumBitRateDL ... 2000000000        -- bit/s
    uEaggregateMaximumBitRateUL ... 200000000
  SelectedPLMN .................... 001-01
  E-RABs-ToBeAdded-List
    [0] e-RAB-ID .................. 5
        en-DC-ResourceConfiguration
          pDCPatSN ................ present
          mCGresources ............ present
          sCGresources ............ present
                                    -- SN-terminated split bearer, i.e.
                                    -- option 3x with an LTE leg (section 11)
        sgNB-terminated
          e-RAB-Level-QoS-Parameters
            qCI ................... 9
            allocationRetentionPriority  priorityLevel 8
          s1-UL-GTPtunnelEndpoint   198.51.100.20 : TEID 0x00007A31
                                    -- the S-GW's uplink endpoint, so the
                                    -- SgNB can send uplink data straight
                                    -- to the core
  MeNBtoSgNBContainer ............. (OCTET STRING, 3204 bytes)
    CG-ConfigInfo
      ue-CapabilityInfo ........... (2971 bytes)
                                    -- UE-CapabilityRAT-ContainerList,
                                    -- i.e. the containers from 20.2
      candidateCellInfoListMN
        [0] ssbFrequency 632628  physCellId 502  measResultCell rsrp 66
      mcg-RB-Config ............... (61 bytes)
      configRestrictInfo
        maxMeasFreqsSCG ........... 4

09:41:08.347  [X2AP] procedure timer started, MeNB-UE-X2AP-ID 0x0A31

Listing 10. e-RAB-ID 5 has no NR DRB identity in it, and could not: the SgNB has not chosen one yet. The binding between EPS bearer 5 and NR DRB 2 is made in the acknowledge, inside scg-RB-Config (§11.1).

20.5 The LTE reconfiguration, unwrapped three levels deep

[X2AP + LTE-RRC + NR-RRC] the same octets at four nesting levels
09:41:08.383  [X2AP-RX] SGNB ADDITION REQUEST ACKNOWLEDGE   (40 ms later)
  MeNB-UE-X2AP-ID ................. 0x0A31
  SgNB-UE-X2AP-ID ................. 0x000015C2
  E-RABs-Admitted-ToBeAdded-List
    [0] e-RAB-ID 5   sgNB-terminated
          s1-DL-GTPtunnelEndpoint . 203.0.113.31 : TEID 0x0001D4A1
                                    -- goes to the MME in 20.6
          dL-Forwarding-GTPtunnelEndpoint  203.0.113.31 : TEID 0x0001D4A2
  SgNBtoMeNBContainer ............. (OCTET STRING, 431 bytes)

-- LEVEL 1: SgNBtoMeNBContainer decoded as NR CG-Config (TS 38.331 11.2)
    CG-Config  cg-Config
      scg-CellGroupConfig ......... (OCTET STRING, 312 bytes)
      scg-RB-Config ............... (OCTET STRING, 68 bytes)
      selectedBandCombination ..... bandCombinationIndex 0
      fr-InfoListSCG  [0] servCellIndex 1  fr-Type fr1

09:41:08.391  [LTE-RRC-TX] SRB1  RRCConnectionReconfiguration  C-RNTI 0x3D5A
  radioResourceConfigDedicated
    drb-ToReleaseList ............. [ 1 ]
                                    -- LTE DRB 1 goes away; the same EPS
                                    -- bearer comes back as NR DRB 2
  -- RRCConnectionReconfiguration-v1510-IEs
  nr-Config-r15  setup
    endc-ReleaseAndAdd-r15 ........ false
    nr-SecondaryCellGroupConfig-r15  (OCTET STRING, 312 bytes)
                                    -- byte-identical to scg-CellGroupConfig
    p-MaxEUTRA-r15 ................ 21          -- dBm
  sk-Counter-r15 .................. 1
  nr-RadioBearerConfig1-r15 ....... (OCTET STRING, 68 bytes)
                                    -- byte-identical to scg-RB-Config

-- LEVEL 2: nr-SecondaryCellGroupConfig-r15 as an NR RRCReconfiguration
    RRCReconfiguration  rrcReconfiguration
      secondaryCellGroup .......... (OCTET STRING, 288 bytes)

-- LEVEL 3: secondaryCellGroup as an NR CellGroupConfig
      CellGroupConfig
        cellGroupId ............... 1
        rlc-BearerToAddModList
          [0] logicalChannelIdentity 4  servedRadioBearer drb-Identity 2
        physicalCellGroupConfig
          p-NR-FR1 ................ 23          -- dBm; 21 + 23 EXCEEDS
                                    -- 23 dBm total, so a class 3 UE would
                                    -- scale down. This UE is pc2 (20.2).
        spCellConfig
          reconfigurationWithSync
            spCellConfigCommon
              physCellId .......... 502
              ssbSubcarrierSpacing  kHz30
              tdd-UL-DL-ConfigurationCommon  DDDSU, 2.5 ms periodicity
            newUE-Identity ........ 0x7B14      -- the SCG C-RNTI
            t304 ................. ms1000
            rach-ConfigDedicated  uplink
              cfra  occasions ..... ssb-perRACH-Occasion one
                    ra-PreambleIndex 58
              ra-ssb-OccasionMaskIndex .. 1

-- LEVEL 3b: nr-RadioBearerConfig1-r15 as an NR RadioBearerConfig
      RadioBearerConfig
        drb-ToAddModList
          [0] drb-Identity ........ 2
              cnAssociation  eps-BearerIdentity 5    <-- the binding
              pdcp-Config
                drb  pdcp-SN-SizeUL len18bits  pdcp-SN-SizeDL len18bits
                     t-Reordering ms220
                moreThanOneRLC
                  primaryPath  cellGroup 1  logicalChannel 4
                  ul-DataSplitThreshold .. b1600
        securityConfig
          securityAlgorithmConfig  cipheringAlgorithm nea2
          keyToUse ................ secondary

Listing 11. One transmitted message, four decode operations. Note p-MaxEUTRA-r15 21 plus p-NR-FR1 23: authored by two different nodes in two different ASN.1 modules, and their sum is 26 dBm, which only a power class 2 UE can deliver (§13). keyToUse = secondary is the field that says use S-K_gNB.

20.6 Path switch, then the SCG goes active

[NR-MAC / S1AP / GTP-U] CFRA, path switch, first NR data
09:41:08.426  [LTE-RRC-RX] SRB1  RRCConnectionReconfigurationComplete
  scg-ConfigResponseNR-r15 ........ (OCTET STRING, 6 bytes)
                                    -- an NR RRCReconfigurationComplete
09:41:08.428  [X2AP-TX] SGNB RECONFIGURATION COMPLETE
  ResponseInformation  configuration-successfully-applied

09:41:08.430  [NR-MAC]  PSCell PCI 502: CFRA preamble 58, SSB 1, RO #3
09:41:08.437  [NR-MAC]  RAR received: TA 31, UL grant, C-RNTI 0x7B14
09:41:08.437  [NR-RRC]  T304 (SCG) stopped. SCG ACTIVE.
                        -- no MSG3, no contention resolution: the C-RNTI
                        -- arrived in the configuration (section 9.2)

09:41:08.441  [S1AP-TX] E-RAB MODIFICATION INDICATION
  mME-UE-S1AP-ID 0x0031B7A0   eNB-UE-S1AP-ID 0x00003F91
  E-RABToBeModifiedListBearerModInd
    [0] e-RAB-ID 5
        dL-GTP-TunnelEndpoint ..... 203.0.113.31 : TEID 0x0001D4A1
09:41:08.469  [S1AP-RX] E-RAB MODIFICATION CONFIRM
  E-RABModifyListBearerModConf  [0] e-RAB-ID 5
09:41:08.472  [GTP-U-RX] End Marker on old S1-U TEID 0x00004C11 (MeNB)
09:41:08.473  [GTP-U-TX] End Marker forwarded on X2-U to SgNB

09:41:08.478  [NR-PHY]  first PDSCH to C-RNTI 0x7B14, MCS 24, 4 layers
09:41:08.492  [PDCP]    DRB 2: NR leg 96%, LTE leg 4% of delivered volume

Listing 12. Thirty-six milliseconds from the LTE reconfiguration to the first NR PDSCH, of which the path switch accounts for 28 ms and runs in parallel with the CFRA rather than blocking it. The 4% on the LTE leg is the split bearer doing exactly what it should.

20.7 A failure case: scg-reconfigFailure

[LTE-RRC] scg-reconfigFailure, and the silent fallback
-- Same cell, a different UE model, thirty seconds later. Everything
-- succeeds until the UE tries to apply the NR container.

09:41:38.902  [X2AP-RX] SGNB ADDITION REQUEST ACKNOWLEDGE
  SgNB-UE-X2AP-ID ................. 0x000015D0
  E-RABs-Admitted-ToBeAdded-List  [0] e-RAB-ID 5
  SgNBtoMeNBContainer ............. (OCTET STRING, 447 bytes)
                                    -- 16 bytes larger than 20.5

09:41:38.910  [LTE-RRC-TX] SRB1  RRCConnectionReconfiguration
  nr-Config-r15  setup  nr-SecondaryCellGroupConfig-r15  (328 bytes)
  sk-Counter-r15 .................. 4

09:41:38.948  [LTE-RRC-RX] SRB1  SCGFailureInformationNR-r15
  failureReportSCG-NR-r15
    failureType-r15 ............... scg-reconfigFailure
                                    -- 38 ms after transmission, and
                                    -- BEFORE any NR transmission at all:
                                    -- the UE never reached the PSCell
    measResultFreqListNR-r15
      [0] carrierFreq 632628
          measResultCellList  [0] pci 502  rsrpResult 71   -- -86 dBm
                                    -- 5 dB BETTER than the successful
                                    -- case in 20.3. Not coverage.
    measResultSCG-r15 ............. (OCTET STRING, 24 bytes)

09:41:38.951  [RRM]  SCG failure, scg-reconfigFailure -> release SgNB
09:41:38.952  [X2AP-TX] SGNB RELEASE REQUEST  Cause = radioNetwork
09:41:38.958  [LTE-RRC-TX] RRCConnectionReconfiguration
  nr-Config-r15 ................... release
  radioResourceConfigDedicated  drb-ToAddModList [ 1 ]
                                    -- EPS bearer 5 back to LTE DRB 1,
                                    -- LTE PDCP, MCG only. User unaffected.

09:41:38.958  [KPI]  session retained, throughput 1919 -> 183 Mbit/s
                     no drop, no re-establishment, no alarm raised

Listing 13. The three diagnostic tells, in order: the failure arrived before any NR transmission, the reported RSRP is better than in the successful case, and the container was 16 bytes larger. Group these by device model and by container length and the cause -- a feature the SgNB configured and this UE model rejects -- names itself. The last two lines are why nobody notices.

21. Release Deltas: Rel-15 to Rel-18

ReleaseChange affecting EN-DCWhy it matters when reading a trace
Rel-15EN-DC itself: the option 3 family, X2AP SgNB Addition, Modification, Change and Release; nr-Config-r15, sk-Counter-r15, nr-RadioBearerConfig1-r15 and nr-SecondaryCellGroupConfig-r15 in TS 36.331; MeasObjectNR-r15 and eventB1-NR-r15; SCGFailureInformationNR-r15; CG-Config and CG-ConfigInfo in TS 38.331; DCNR and restrictDCNR in TS 24.301.The baseline, and effectively the whole of this document. If a field here has an -r15 suffix, this is why.
Rel-15 lateSGNB Addition Trigger Indication; split SRB support; tdm-PatternConfig-r15 for single-uplink operation; SECONDARY RAT DATA USAGE REPORT for NR volume charging.Two Rel-15 implementations can differ on these. Populated Criticality Diagnostics on a working addition is usually one peer skipping a late-Rel-15 IE.
Rel-16NR-DC and other MR-DC variants over a 5GC mature, which is where the MN/SN-terminated terminology becomes the primary naming; efficient secondary-cell activation; PDCP duplication with up to four legs; conditional PSCell addition and change groundwork.Vendor documents start using MN/SN-terminated names for EN-DC bearers too. Same bearers, different words -- see the second column of the table in §11.
Rel-16Uplink enhancements for EN-DC power sharing, and clarified UE behaviour when p-MaxEUTRA and p-NR-FR1 conflict.Devices from different release vintages behave differently in the over-configured power case of §13. Check the release before blaming the device.
Rel-17Conditional PSCell addition and change (CPAC) is specified for MR-DC -- the UE is given a prepared PSCell configuration and executes it itself on a measurement condition, rather than waiting for a reconfiguration.One preparation can produce zero or several executions, so the one-addition-one-PSCell assumption breaks. Mostly deployed on NR-DC rather than EN-DC. Companion 25 Conditional Handover and DAPS for the equivalent handover mechanism.
Rel-17 / Rel-18Essentially no new EN-DC functionality. Effort moves to SA: NR-DC, network slicing, RedCap, NTN, L1/L2-triggered mobility, energy saving. EN-DC receives maintenance corrections only.EN-DC is frozen while SA advances. A Rel-18 device on an NSA network runs a Rel-15 feature set for its dual connectivity. Do not expect a newer device or a newer software load to fix an EN-DC behaviour -- the specification it implements has not changed.

Table 21. Rel-15 is where everything is. That is unusual for a 5G topic and it is the single most useful thing to know about NSA's trajectory.

🔄
Release delta

The freeze has a practical corollary for anyone maintaining an NSA network. Because the specification is stable, an EN-DC problem that reproduces is almost always a configuration or an interoperability problem rather than a specification ambiguity, and it will still be there in three years. That is good news for debugging -- the target does not move -- and bad news for waiting it out.

It also means the migration path matters more than the tuning. Every operator running EN-DC is running it as a transitional architecture, and the effort spent perfecting a B1 threshold is effort not spent on the SA cutover described in companion 01 Registration Process.

22. Reading NSA in Logs: A Checklist

  1. Decode the two NAS bits before anything else. DCNR in the Attach Request's UE network capability, and restrictDCNR in the Attach Accept's EPS network feature support. If either is wrong, the network is behaving correctly and there is no NR fault to find. This step takes one minute and eliminates the two most common causes (§4, §17 rows 1-2).
  2. Establish which option you are on. Look at the addition acknowledge: an S1 downlink tunnel endpoint at the SgNB means option 3x, an X2-U endpoint with an unchanged S1-U means option 3. This decides whether an S1 trace will show you anything at all (§3, §10).
  3. Read appliedFreqBandListFilter before the band combination list. A combination missing because the enquiry filtered it out looks identical to a combination the UE cannot support, and the fix is at opposite ends of the network (§5.2).
  4. Confirm a measObjectNR was actually configured for this UE. Its absence, with both NAS bits correct, means the MeNB rejected the capability -- so go back to step 3. Its presence moves you to the measurement problem.
  5. Check the SMTC against the SgNB's real SSB configuration. periodicityAndOffset, duration and subcarrierSpacingSSB-r15 versus what the en-gNB actually transmits. This is the commonest cause of B1 never triggers, and it produces perfect silence with a perfectly healthy NR cell (§5.3, §17 row 4).
  6. When a B1 report is present and no SGNB ADDITION REQUEST follows, look at X2, not at radio. Report in, nothing out is the cleanest signature in NSA. Check the association state and whether the peer advertised NR served cells at X2 Setup (§17 row 5).
  7. Diff the requested E-RAB list against the admitted list on every addition. Partial admission is a successful procedure that leaves some traffic on LTE, and it is recorded as a success everywhere. Two lines of script (§6.1).
  8. Unwrap the containers. SgNB to MeNB Container as a CG-Config, then scg-CellGroupConfig as an RRCReconfiguration, then secondaryCellGroup as a CellGroupConfig. If your tool shows you an octet string, extract it and decode it separately -- it is a self-contained UPER message (§8).
  9. Compare p-MaxEUTRA-r15 and p-NR-FR1, and add them up. They come from two nodes in two ASN.1 modules and nothing checks them against each other or against the UE's power class. Their sum exceeding 23 dBm on a class 3 device explains a whole family of uplink complaints (§13).
  10. Check primaryPath and ul-DataSplitThreshold before investigating uplink latency. A primary path on the MCG for an SN-terminated bearer adds an X2 hop to every small uplink transfer, and nothing reports it (§11.2).
  11. Group SCG failures by failureType and then by device model. t310-Expiry, randomAccessProblem and rlc-MaxNumRetx are radio; scg-ChangeFailure is mobility configuration; scg-reconfigFailure is always configuration and will be dominated by one or two device models (§15).
  12. On a randomAccessProblem, read the RSRP in the same report. A strong NR downlink with exhausted preambles is uplink power or a wrong CFRA resource, not coverage -- and the two get opposite fixes (§15, §17 row 8).
  13. Suspect the key when the SCG is active and PDCP delivers nothing. Non-zero NR PHY throughput with zero PDCP delivered volume and no error message anywhere is the sk-counter signature, and it is the only failure in NSA with no report attached to it (§12, §17 row 9).
  14. Count LTE handovers before investigating NR dwell time. Most SCG loss in a live network is an LTE handover releasing the SgNB, which is policy rather than failure -- and it costs the full 612 ms addition budget every time (§14, §19.1).
  15. Build the funnel and watch where it narrows. Attaches with DCNR set, then those given a measObjectNR, then those producing a B1 report, then those producing an addition request, then those reaching SCG active. The narrowing stage names the failure row before you open a trace, and no conventional KPI will tell you any of it (§17).

23. Glossary

TermExpansionWhat it means in this document
EN-DCE-UTRA-NR Dual ConnectivityThe radio mechanism behind NSA: an LTE master node and an NR secondary node serving one UE, with an EPC core. The specific MR-DC variant defined for option 3.
NSANon-StandaloneUsed loosely for EN-DC as deployed. Strictly, any architecture where NR depends on another RAT's control plane.
MeNBMaster eNBThe LTE node. Owns RRC, the S1-MME association, mobility and all measurement configuration. Every decision in this document is ultimately its.
SgNB / en-gNBSecondary gNB / E-UTRA-connected gNBThe NR node. en-gNB is the formal node type: a gNB with an S1 interface instead of an NG interface. It is not the same node type as a gNB.
MCG / SCGMaster / Secondary Cell GroupThe set of serving cells belonging to the MeNB and to the SgNB respectively. The SCG's primary cell is the PSCell.
PSCellPrimary Secondary CellThe SCG's anchor cell: the one the UE performs random access at, monitors for radio link failure, and sends PUCCH on. PCI 502 throughout the examples.
Option 3 / 3a / 3xArchitecture option 3 and its variantsEN-DC with an EPC. The variants differ only in where the S1-U terminates: MeNB, per-bearer, or SgNB. 3x is the deployed default.
MN- / SN-terminatedMaster- / Secondary-node-terminatedThe release-independent naming for a bearer's PDCP location. MN-terminated equals MeNB-anchored; SN-terminated equals SgNB-anchored.
CG-Config / CG-ConfigInfoCell Group ConfigurationNR RRC inter-node messages, never transmitted on air, used to carry NR configuration between the SgNB and the MeNB inside an X2AP octet string.
S-K_gNBSecondary node key for the gNBThe 256-bit key the SgNB's AS keys descend from, derived by the MeNB from K_eNB and the sk-counter. Not related to any 5G key.
sk-counterSecondary key counterA 16-bit freshness input the MeNB maintains and signals as sk-Counter-r15. The only freshness mechanism for the SCG's keys.
DCNRDual Connectivity with NRA one-bit UE capability in the EPS UE network capability IE. Gate one for the whole procedure.
restrictDCNRRestriction on DCNRA one-bit network restriction in the EPS network feature support IE of the Attach Accept. Gate two.
Event B1Inter-RAT neighbour becomes better than thresholdThe LTE measurement event that triggers SgNB addition. An absolute threshold on the NR cell, with no comparison against the serving LTE cell.
CFRAContention-Free Random AccessRandom access with a dedicated preamble reserved for one UE. Used at the PSCell, which is why there is no MSG3 and no contention resolution.
T304 (SCG)-The NR timer supervising random access at the PSCell after reconfigurationWithSync. Expiry means SCG failure, never re-establishment.
Split bearer-One bearer, one PDCP entity, two RLC entities in two nodes. The UE reorders both legs in a single NR PDCP reordering window.
ul-DataSplitThreshold-The pending-volume threshold below which the UE uses only the primary path for uplink. Why small uplink transfers never use the second leg.
E-RABE-UTRAN Radio Access BearerThe EPC's unit of bearer, identified by an EPS bearer identity. The unit X2AP and S1AP negotiate in; DRBs are the radio-side realisation and may be renumbered.

24. References

  • 3GPP TS 37.340 -- Multi-connectivity; Overall description; Stage 2. The primary reference for this document. Clause 4.1 (architecture options and the option 3 family), clause 4.2.2 (bearer types: MCG, SCG, split, and the MN/SN-terminated naming), clause 4.3 (control-plane and user-plane architecture), clause 7 (the secondary node addition, modification, change and release procedures, MN-initiated and SN-initiated), clause 10 (measurement and mobility handling in MR-DC).
  • 3GPP TS 36.331 -- E-UTRA RRC protocol specification. Clause 5.3.3 (RRC connection establishment), clause 5.3.5 (RRC connection reconfiguration, including the EN-DC-specific handling of nr-Config-r15), clause 5.5.4.1 and 5.5.4.7 (measurement event evaluation and event B1), clause 5.6.3 (UE capability transfer), clause 5.6.13 (SCG failure information for NR), clause 6.2.2 (RRCConnectionReconfiguration-v1510-IEs, SCGFailureInformationNR-r15, MeasObjectNR-r15, ReportConfigInterRAT).
  • 3GPP TS 36.423 -- X2 Application Protocol (X2AP). Clause 8.4 (the EN-DC-specific procedures: SgNB Addition Preparation, SgNB Reconfiguration Completion, MeNB- and SgNB-initiated SgNB Modification, SgNB Release, SgNB Change, Secondary RAT Data Usage Report), clause 9.1.4 (the message definitions for all of the above), clause 9.2 (IE definitions including SgNB Security Key, E-RABs To Be Added List, the inter-node containers and Cause).
  • 3GPP TS 38.331 -- NR RRC protocol specification. Clause 5.3.5 (RRC reconfiguration and reconfigurationWithSync), clause 6.2.2 (RRCReconfiguration, RadioBearerConfig), clause 6.3.2 (CellGroupConfig, SpCellConfig, ReconfigurationWithSync, PhysicalCellGroupConfig with p-NR-FR1, PDCP-Config with moreThanOneRLC and ul-DataSplitThreshold), clause 6.3.3 (UE-MRDC-Capability, BandCombination, MRDC-Parameters), clause 11.2 (the inter-node messages CG-Config and CG-ConfigInfo).
  • 3GPP TS 38.300 -- NR overall description. Clause 4.3 (the NG-RAN and E-UTRAN interworking architecture, including the en-gNB node type), and the multi-connectivity overview that points at TS 37.340.
  • 3GPP TS 36.413 -- S1 Application Protocol (S1AP). Clause 8.2.4A (E-RAB Modification Indication, the procedure that performs the option 3x path switch), clause 9.2.1.22 (Handover Restriction List including NR Restriction in EPS as Secondary RAT), and the Initial Context Setup procedure that carries the NR UE security capabilities.
  • 3GPP TS 24.301 -- NAS protocol for EPS. Clause 9.9.3.34 (UE network capability, containing the DCNR bit), clause 9.9.3.12A (EPS network feature support, containing restrictDCNR), clause 5.5.1 (the attach procedure).
  • 3GPP TS 33.401 -- 3GPP System Architecture Evolution: Security architecture. Clause 6.1 and 7 (EPS AKA and the K_ASME / K_eNB hierarchy), Annex A.15 (the S-K_gNB derivation function), Annex E (security for dual connectivity, including sk-counter handling and refresh rules for EN-DC).
  • 3GPP TS 33.501 -- Security architecture and procedures for 5G System. Cited here only for contrast: it is the hierarchy NSA does not use. Clause 6.2 (the 5G key hierarchy) and clause 6.10.2 (secondary node key handling in NR-DC, which is structurally the same sk-counter mechanism with a 5G root).
  • 3GPP TS 38.306 -- NR UE radio access capabilities. Clause 4.1.2 (the peak data rate formula used in §19.2) and the feature-set framework that featureSetCombination indexes into.
  • 3GPP TS 38.133 -- NR requirements for support of radio resource management. Clause 10.1.6 (the SS-RSRP measurement report mapping used to convert b1-ThresholdNR and rsrpResult to dBm).
  • 3GPP TS 38.323 -- NR PDCP specification. Clause 5.2.1 (the uplink data split rule and ul-DataSplitThreshold), clause 5.2.2 (reordering and t-Reordering) -- the behaviour that makes a split bearer possible.
  • 3GPP TS 36.323 -- E-UTRA PDCP specification. Cited for contrast in §11.1: what LTE PDCP does and does not provide.
  • 3GPP TS 29.281 -- GPRS Tunnelling Protocol User Plane (GTPv1-U). Clause 5.1 (header format) and the End Marker used in the option 3x path switch.
  • RFC 5737 -- IPv4 Address Blocks Reserved for Documentation. The source of every IP address in §20.

Companion documents in this set

  • 01 Registration Process -- the SA counterpart, and the single most useful companion to this document. Everything §1 contrasts NSA against is described there in full: the AMF, NGAP, 5G NAS, the SUCI and the 5G-GUTI. Read the two together.
  • 29 Carrier Aggregation -- the CA mechanics EN-DC is built on top of. Bandwidth classes, featureSetCombination, cross-carrier scheduling and the difference between aggregating carriers within a cell group and aggregating cell groups across nodes.
  • 26 UE Capability -- UECapabilityEnquiry, the RAT containers, band combination filtering and appliedFreqBandListFilter. §5.1 and §5.2 depend on it, and so does the third row of the failure taxonomy.
  • 20 Measurements and Events -- the measurement framework event B1 sits inside: measObject, reportConfig, measId, L3 filtering, and the full event catalogue.
  • 21 Measurement Gaps and SMTC -- how the UE measures an NR carrier it is not connected to, and the SMTC configuration that is the commonest cause of a B1 report that never arrives.
  • 03 Random Access -- the CFRA procedure at the PSCell in §9.2, in full, including preambleTransMax, the RAR contents and the SSB-to-RACH occasion mapping.
  • 04 Timing Advance -- why the SCG needs its own timing advance and its own timeAlignmentTimer despite the UE already being aligned to LTE.
  • 16 RLM and RLF -- radio link monitoring, N310, N311, T310, and the contrast between an MCG radio link failure (visible, disruptive) and an SCG failure (silent) that §15 turns on.
  • 27 AS Security Mode -- the AS key hierarchy and the derivation machinery. §12 is the EN-DC-specific branch of it, and the differences are best seen from there.
  • 22 Handover Overview and 23 Xn Handover -- reconfigurationWithSync, T304, and the transparent-container principle that §8's three-level nesting is an unusually severe instance of.
  • 11 DRX -- MCG and SCG DRX alignment, the drx-InfoSCG field the SgNB sends back in CG-Config, and what misalignment costs in UE battery.
  • 15 RRC Procedures -- reconfiguration and re-establishment, and the reason an SCG failure invokes neither.