Measurement Gaps & SMTC in 5G NR
How the UE is given gaps to measure other frequencies — gap patterns (MGRP/MGL), per-UE vs per-FR gaps, and the SSB Measurement Timing Configuration (SMTC) window.
A UE tuned to its serving carrier cannot receive a different carrier at the same time. Every inter-frequency and inter-RAT measurement therefore has to be bought with serving-cell airtime: the network schedules a measurement gap, during which the UE stops transmitting and receiving entirely, retunes, measures, and comes back. This document covers gap patterns and the standardised pattern table, gapOffset arithmetic, per-UE versus per-FR gaps, gap sharing between measurement purposes, what a gap costs in throughput and latency, the interaction with DRX and with configured grants, SMTC in depth, the three-way alignment between the neighbour's SSB burst, the SMTC window and the gap that has to hold before anything at all is measured, CSI-RS-based measurement timing, and the Rel-17 gap enhancements that make all of this cheaper.
Contents
- 01Why a Gap Has to Exist
- 02When No Gap Is Needed, and the Exception
- 03Anatomy of a Gap Pattern
- 04The Standardised Gap Patterns
- 05Per-UE and Per-FR Gaps
- 06MeasGapConfig and the Coexistence Rules
- 07What the UE Gives Up During a Gap
- 08Gap Sharing and the Scaling Factor
- 09Gaps and DRX
- 10SMTC: Telling the UE When to Look
- 11smtc1, smtc2 and Per-Cell Overrides
- 12The Three-Way Overlap
- 13CSI-RS Based Measurement and Its Timing
- 14Rel-17 Gap Enhancements
- 15Failure Modes and What Each One Means
- 16Configuration Reference (ASN.1)
- 17Illustrative Message Traces
- 18Release Deltas: Rel-15 to Rel-18
- 19Reading Gaps and SMTC in Logs: A Checklist
- 20Glossary
- 21References
1. Why a Gap Has to Exist
A receiver is tuned to a centre frequency and a bandwidth. A UE camped on a carrier at 3.55 GHz with a 100 MHz bandwidth part is, in hardware terms, a filter and a set of ADCs pointed at that band. Ask it to measure a neighbour at 1.85 GHz and there is no clever protocol trick available: the local oscillator has to move, and while it is moving and while it is pointed elsewhere, the serving carrier is not being received at all. Uplink is worse -- transmitting on the serving carrier while receiving on another is a filtering problem no handset solves for an arbitrary pair of bands.
So NR does the honest thing and schedules the outage. A measurement gap is a periodic, network-configured interval during which the UE is not expected to transmit or receive anything on the serving cells, and is free to retune, measure a different frequency or a different RAT, and retune back TS 38.133 cl. 9.1.2. The scheduler knows the gap pattern, so it simply does not schedule into it. Nothing is lost to collision; the cost is paid in advance, as capacity.
| Measurement | Retuning needed? | Gap needed? | Why |
|---|---|---|---|
| Intra-frequency neighbour, SSB inside the active DL BWP | No | No | The samples are already arriving. The UE just has to look at the right symbols. |
| Intra-frequency neighbour, SSB outside the active DL BWP | Yes | Yes | The BWP does not cover the SSB, so the UE must retune even though the frequency is nominally the same (§2). |
| Inter-frequency NR neighbour | Yes | Yes | Different centre frequency. This is the ordinary case. |
| Inter-RAT E-UTRA neighbour | Yes | Yes | Different frequency and a different synchronisation structure to acquire. |
| Deactivated SCell on another carrier | Yes | Yes | Governed additionally by measCycleSCell; see the companion 20 Measurements and Events document. |
| CSI-RS on the serving carrier inside the active BWP | No | No | Same argument as intra-frequency SSB (§13). |
| PRS for positioning on another frequency layer | Yes | Yes | Rel-16 added longer gap lengths specifically for this. |
Table 1. What needs a gap and what does not. The second row is the one that catches people, because the frequency looks identical in the configuration.
A gap is not a measurement opportunity by itself. It is permission to look away. Whether anything is actually measured depends on whether the neighbour happens to be transmitting SSBs at that moment, which is what SMTC exists to arrange (§10-12). A correctly configured gap pointed at the wrong moment measures noise, and reports nothing, and generates no error.
2. When No Gap Is Needed, and the Exception
Intra-frequency measurement is free, and that single fact shapes NR network design: intra-frequency mobility can be configured aggressively with fast filters and short timeToTrigger, while inter-frequency mobility is rationed. The reason it is free is that the neighbour's SSB arrives in the same receive chain the UE is already using for the serving cell -- the UE only has to know which symbols to demodulate, which is exactly what the SMTC tells it.
measObject. Note that the intra-frequency branch can still land on gap required, which is the only path in this figure that looks like a contradiction and is not.The exception is bandwidth parts. The active DL BWP is not the whole carrier; it can be a narrow slice placed anywhere in it, with its own subcarrier spacing. If the SSB the UE has to measure does not fall inside the active DL BWP, or the SSB's subcarrier spacing differs from the active BWP's, then the receiver is not configured to demodulate it and a gap becomes necessary for what the configuration calls an intra-frequency measurement TS 38.133 cl. 9.1.2.
This is a dynamic condition. A UE can be measuring an intra-frequency neighbour perfectly well, get moved to a narrow BWP for power saving or to a different numerology for a latency-sensitive service, and stop measuring -- with no measurement configuration change and no error. The symptom is an A3 that worked and then stopped working after an unrelated bwp-Id change, on a UE that was never given a gap because why would an intra-frequency measurement need one. Check the active BWP against ssbFrequency before you check anything else.
Two further cases produce gap-free measurement in practice. A UE with genuinely independent receive chains per frequency range can measure FR2 while receiving FR1, which is what per-FR gaps formalise (§5). And from Rel-17, network-controlled small gaps let the UE take an interruption measured in symbols rather than milliseconds, for cases where the retuning is cheap (§14).
3. Anatomy of a Gap Pattern
| Parameter | ASN.1 values | Meaning | Consequence of the choice |
|---|---|---|---|
mgl | ms1dot5, ms3, ms3dot5, ms4, ms5dot5, ms6 | Measurement Gap Length -- how long each gap lasts | Must cover retuning out, the SMTC window, and retuning back. Too short and only part of the SSB burst is captured. |
mgrp | ms20, ms40, ms80, ms160 | Measurement Gap Repetition Period -- how often a gap recurs | Sets the effective sampling interval for every gap-assisted measurement. Halving it doubles both freshness and cost. |
gapOffset | INTEGER (0..159), constrained to be less than mgrp | Where in the repetition period the gap starts, in subframes | The single most consequential field: it decides whether the gap lands on the neighbour's SSB burst or 3 ms after it (§12). |
mgta | ms0, ms0dot25, ms0dot5 | Measurement Gap Timing Advance -- the gap starts this much earlier than the nominal position | Pays for RF retuning so the UE is already tuned away when the measurement window opens. Commonly 0.25 ms for FR1 and 0.5 ms for FR2. |
refServCellIndicator | pCell, pSCell, mcg-FR2 | Which serving cell's timing gapOffset is measured against | Only matters when serving cells are not frame-aligned. Get it wrong in asynchronous CA and every gap is displaced. |
Table 2. The four fields of a gap pattern plus the reference indicator TS 38.331 `GapConfig`. mgl and mgrp together select a standardised pattern (§4); gapOffset and mgta position it.
3.1 Where a gap actually falls
The gap position is derived from the SFN and subframe of the reference serving cell, not from any timer the UE starts TS 38.133 cl. 9.1.2:
T = MGRP / 10 (repetition period, in radio frames) gap occurs in frames where: SFN mod T = FLOOR(gapOffset / 10) gap starts at subframe: gapOffset mod 10 gap actually begins: mgta earlier than that subframe boundary gap ends: MGL later than the nominal start
Pattern 1: mgl ms6, mgrp ms80, gapOffset 17, mgta ms0dot5.
T = 80 / 10 = 8 frames
SFN mod 8 = FLOOR(17 / 10) = 1 -> SFN 1, 9, 17, 25, ...
subframe = 17 mod 10 = 7
So the gap nominally runs from SFN 1 subframe 7 for 6 ms, i.e.
SFN 1: subframes 7, 8, 9
SFN 2: subframes 0, 1, 2
and the UE actually stops transmitting 0.5 ms earlier, at SFN 1 subframe 6.5. The gap straddles the frame boundary, which is normal and is why a gap cannot be reasoned about as some subframes of a frame.
Next occurrence: SFN 9 subframe 7. Interval: 8 frames = 80 ms = MGRP.
gapOffset is encoded as INTEGER (0..159) regardless of mgrp, but values at or above mgrp are not valid. An offset of 90 with mgrp ms80 has no defined meaning; different implementations will do different things with it, none of them what you wanted. When reading a trace, check gapOffset < mgrp before you trust any of the arithmetic that follows.
4. The Standardised Gap Patterns
mgl and mgrp are not freely combinable in practice: TS 38.133 tabulates the legal combinations as numbered gap patterns, and UE capability signalling is expressed in terms of those numbers. The pattern id is what appears in vendor documentation and in most log formats, so it is worth being able to convert in both directions.
| Pattern | MGL (ms) | MGRP (ms) | Duty cycle | Pattern | MGL (ms) | MGRP (ms) | Duty cycle |
|---|---|---|---|---|---|---|---|
| 0 | 6 | 40 | 15.0% | 12 | 5.5 | 20 | 27.5% |
| 1 | 6 | 80 | 7.5% | 13 | 5.5 | 40 | 13.8% |
| 2 | 3 | 40 | 7.5% | 14 | 5.5 | 80 | 6.9% |
| 3 | 3 | 80 | 3.75% | 15 | 5.5 | 160 | 3.4% |
| 4 | 6 | 20 | 30.0% | 16 | 3.5 | 20 | 17.5% |
| 5 | 6 | 160 | 3.75% | 17 | 3.5 | 40 | 8.75% |
| 6 | 4 | 20 | 20.0% | 18 | 3.5 | 80 | 4.4% |
| 7 | 4 | 40 | 10.0% | 19 | 3.5 | 160 | 2.2% |
| 8 | 4 | 80 | 5.0% | 20 | 1.5 | 20 | 7.5% |
| 9 | 4 | 160 | 2.5% | 21 | 1.5 | 40 | 3.75% |
| 10 | 3 | 20 | 15.0% | 22 | 1.5 | 80 | 1.875% |
| 11 | 3 | 160 | 1.875% | 23 | 1.5 | 160 | 0.94% |
Table 3. Gap patterns 0-23 TS 38.133 Table 9.1.2-1, printed as two halves side by side. Duty cycle is MGL/MGRP and is computed here, not tabulated in the spec. Patterns 0-11 are the general set; the shorter-MGL patterns 12-23 are specified for FR2 measurement, where the SSB burst is short and retuning is cheaper.
A 100 Mbps downlink, three gap patterns:
pattern 4 (6 / 20) duty cycle 6/20 = 30.0% -> ~70 Mbps
pattern 0 (6 / 40) duty cycle 6/40 = 15.0% -> ~85 Mbps
pattern 1 (6 / 80) duty cycle 6/80 = 7.5% -> ~92.5 Mbps
Second-order costs, on top of the duty cycle:
- one CSI report and one SRS transmission lost per gap if their occasions fall inside it, so link adaptation runs on stale CQI for the first slots after every gap;
- any HARQ retransmission whose slot fell in the gap waits a further HARQ RTT, which shows up as tail latency, not as throughput;
- with pattern 4 the UE is unavailable for 6 ms out of every 20 ms, which is comparable to a TCP RTT on a good network -- the effect on a single TCP flow is worse than 30%.
The honest planning rule: budget the duty cycle, then assume the user-visible loss is somewhat larger than it.
Pattern 4 (30%) exists for a reason -- fast inter-frequency identification during a mobility emergency -- and is a terrible steady state. A common design is to configure no gaps at all until an A2 event fires on the serving cell, then install a short-MGRP pattern, then release it on A1. That way the 15-30% cost is paid only by UEs that are actually in trouble. See the companion 20 Measurements and Events document for the A1/A2 arming pair.
5. Per-UE and Per-FR Gaps
The original model was one gap pattern for the whole UE: when the gap arrives, everything stops. That is correct for a UE with one receive chain, and needlessly expensive for a UE with separate FR1 and FR2 front ends, where retuning the FR2 chain to measure another FR2 carrier need not disturb the FR1 serving cell at all.
| gapUE | gapFR1 | gapFR2 | |
|---|---|---|---|
| Applies to | Every serving cell of the UE, both frequency ranges | Measurements and serving cells in FR1 only | Measurements and serving cells in FR2 only |
| ASN.1 position | Extension group of MeasGapConfig | Extension group of MeasGapConfig | The root of MeasGapConfig -- it came first |
| May coexist with | Nothing else | gapFR2 | gapFR1 |
| Requires UE capability | No -- the baseline | independentGapConfig | independentGapConfig |
| Typical use | FR1-only UEs; any UE where the network does not know or trust the capability | FR1 inter-frequency and inter-RAT measurement in an FR1+FR2 UE | FR2 inter-frequency measurement without disturbing the FR1 anchor |
| Gap patterns available | 0-11 generally; 12-23 for FR2 measurement | 0-11 | 0-23 |
Table 4. The three gap scopes. The rule that matters operationally: gapUE is exclusive of the other two, and per-FR gaps need the UE to have said it can do them.
gapFR2 sits in the root of the MeasGapConfig SEQUENCE while gapFR1 and gapUE sit in an extension group added later. This is pure ASN.1 archaeology, but it has a practical consequence: an older decoder, or one built against an early schema, will show you gapFR2 and silently skip the extension group, so a UE configured with gapUE can look like a UE with no gaps at all. If the gap behaviour in a trace does not match the decoded configuration, suspect the decoder's schema version before you suspect the UE.
For a UE in NR-DC or EN-DC the picture gains a second dimension: the gap may be configured by the master node and has to be honoured by both cell groups, and refServCellIndicator says whose frame timing the gapOffset refers to. The companion 26 UE Capability document covers where independentGapConfig and the per-band-combination gap capabilities are reported.
6. MeasGapConfig and the Coexistence Rules
Gaps are configured inside measConfig, alongside the measurement objects that need them -- which is convenient, because the two have to be designed together, and dangerous, because a delta reconfiguration that touches one can disturb the other. Each of the three gap fields is a SetupRelease, so the network sets up, modifies or releases them independently.
mgl index 5 is 6 ms, and there is no field anywhere that says pattern 1.gapUEmust not be configured together withgapFR1orgapFR2. Per-UE and per-FR gaps are alternatives, not layers.gapFR1andgapFR2may be configured together, and then apply independently to their own frequency ranges.- Per-FR gaps require the UE to have reported
independentGapConfig. Configuring them regardless is a specification violation whose observable effect is UE-dependent. - Releasing a gap does not release the
measIds that needed it. ThosemeasIds simply stop producing results, silently -- exactly the failure described in the companion 20 Measurements and Events document.
Because measGapConfig travels in the same measConfig as the measurement objects, a reconfiguration written to change gaps will very often also carry a reportConfigToAddModList for unrelated tidiness reasons -- and modifying a reportConfig resets the trigger state of every measId bound to it TS 38.331 cl. 5.5.2.8. Gap changes therefore have a reputation for also resetting mobility state. It is not the gap change doing it.
7. What the UE Gives Up During a Gap
Inside a measurement gap the UE is not expected to transmit or receive anything on the serving cells the gap applies to. Not deprioritised -- absent. Everything in the following table is simply not there for the duration.
| What stops | Direction | Immediate effect | Second-order effect |
|---|---|---|---|
| PDCCH monitoring | DL | No scheduling decisions can be delivered | Grants queue up behind the gap; with DRX this can cost a whole cycle (§9) |
| PDSCH reception | DL | No downlink data | Any HARQ process whose retransmission opportunity fell in the gap waits a further RTT |
| PUSCH transmission | UL | No uplink data, including RLC status PDUs | RLC and TCP acknowledgements bunch up; the effect on a single flow exceeds the duty cycle |
| PUCCH: HARQ-ACK, SR | UL | No feedback, no scheduling requests | A scheduling request that would have gone in the gap is delayed to the next SR occasion |
| SRS transmission | UL | Sounding occasions in the gap are dropped | Uplink beamforming and MCS selection run on older channel knowledge |
| CSI reporting | UL | Reports configured in the gap are not sent | Downlink link adaptation uses stale CQI for the first slots after the gap -- often visible as a brief MCS dip |
| Configured grants / SPS | Both | Occasions inside the gap are dropped, not deferred | For VoNR with a 20 ms configured grant and a 20 ms MGRP, the same talk-spurt packet is lost every cycle |
| PRACH transmission | UL | No preamble may be sent in a gap | A random access attempt whose occasion is in the gap is postponed; see the companion 03 Random Access document |
Table 5. The full cost of a gap. The configured-grant row is the one that produces user-visible complaints fastest.
The configured-grant interaction is the classic one. A VoNR UE with a 20 ms configured uplink grant and gap pattern 4 (MGL 6, MGRP 20) can lose the same grant occasion on every single cycle if the two periodicities align badly -- a permanent 100% loss on that occasion rather than a 30% average. Because both periodicities are exact, the collision either never happens or always happens. Symptom: one direction of a voice call with steady, periodic frame loss that disappears the moment gaps are released. Fix by moving gapOffset, not by changing MGL.
8. Gap Sharing and the Scaling Factor
One gap pattern usually has to serve several purposes at once: gap-assisted intra-frequency measurement, two or three inter-frequency NR carriers, an inter-RAT carrier, sometimes positioning. They cannot all use the same 6 ms. measGapSharingConfig tells the UE how to divide the gap occasions TS 38.133 cl. 9.1.9.
| Scheme | Share to gap-assisted intra-frequency | Remainder goes to | When to use it |
|---|---|---|---|
scheme00 | Equal splitting between the two groups | Inter-frequency and inter-RAT, sharing the rest equally | The neutral default |
scheme01 | The smallest share | Mostly inter-frequency and inter-RAT | The serving frequency is well understood and the UE needs to find another layer quickly |
scheme10 | An even share | Inter-frequency and inter-RAT | Balanced |
scheme11 | The largest share | Little left for inter-frequency and inter-RAT | Intra-frequency measurement itself needs gaps -- e.g. the SSB is outside the active BWP (§2) -- and intra-frequency mobility is the priority |
Table 6. MeasGapSharingScheme values. The exact percentage for each scheme is tabulated in TS 38.133 cl. 9.1.9.2 and depends on whether gap-assisted intra-frequency measurement is needed at all; the design point is that the network fixes the split rather than leaving it to the UE. Like the gaps themselves, sharing can be per-UE or per-FR.
8.1 The carrier-specific scaling factor
Sharing has a formal consequence in the RRM requirements. The time the UE is allowed to take to identify and to measure a cell on a given carrier is scaled by a carrier-specific scaling factor, which grows with the number of carriers competing for the same gaps TS 38.133 cl. 9.1.5. Add a fourth inter-frequency carrier to a configuration and you have not just diluted the gap allocation, you have relaxed what the UE is required to achieve on the other three.
Gap pattern 1 (MGL 6, MGRP 80), four purposes sharing it as in the figure, SMTC period 20 ms on the inter-frequency carrier.
Gap occasions per second: 1000 / 80 = 12.5
Occasions for the NR carrier: 12.5 x 2/8 = 3.1 per second
-> one 6 ms look every 320 ms
Inside each 6 ms look, with mgta 0.5 ms of retuning at each end, about 5 ms is usable, which covers one SMTC window of duration sf5 or shorter -- but only if that window falls inside the gap (§12).
So: at best one SSB burst sampled every 320 ms on that carrier. If the requirement is 5 samples to declare a new cell identified, identification takes at least
5 x 320 ms = 1.6 s
and layer-3 filtering plus timeToTrigger come after that. This is why inter-frequency handover decisions are inherently seconds-scale, and why an inter-frequency A5 with timeToTrigger ms80 is a fiction: the samples are 320 ms apart.
9. Gaps and DRX
DRX and gaps are two independent mechanisms that both remove the UE from the air, configured by different parts of the network for different reasons, and they do not coordinate themselves. DRX timers keep running during a gap: drx-onDurationTimer and drx-InactivityTimer are unaffected, so a PDCCH occasion that falls inside a gap is not postponed, it is lost. See the companion 11 DRX document for the timer machinery.
gapOffset 0 the gap consumes 6 of the 10 ms of onDuration every cycle; with gapOffset 30 it falls in the off period and costs nothing but airtime.| Interaction | What happens | What to do about it |
|---|---|---|
Gap overlaps onDuration | The UE misses those PDCCH monitoring occasions. If the whole onDuration is inside the gap, downlink data waits a full DRX cycle. | Choose gapOffset so the gap sits in the DRX off period. Both periodicities come from {20, 40, 80, 160} ms, so a non-colliding offset almost always exists. |
| MGRP equal to the DRX cycle | The collision, or the absence of one, is permanent -- it either never happens or happens every cycle. | This is the good case: pick the offset once and it stays correct. |
| MGRP not a divisor or multiple of the DRX cycle | The gap walks across the onDuration, colliding periodically. | Align the two periodicities if latency matters. |
| Long DRX cycle, measurement during DRX | TS 38.133 relaxes measurement requirements when a long DRX cycle is configured -- the UE is permitted to measure less often. | Do not expect gap-rate sampling from a UE in a long DRX cycle; the measurement period scales with the cycle. |
| Gap overlaps the DRX off period | No interaction at all. This is what you want. | Nothing. |
Table 7. Gap and DRX interactions. Only the first row costs latency, and it is entirely avoidable through gapOffset.
A gap that eats onDuration is invisible in every capacity metric and very visible to a user. Throughput is unchanged -- the duty cycle is the same wherever the gap sits -- but the time from downlink packet arrives at the gNB to UE reads the PDCCH gains up to a full DRX cycle whenever the packet lands in the wrong place. Symptom: bimodal ping times with a spacing equal to the DRX cycle, on a UE that has gaps configured. Compare gapOffset against drx-StartOffset before anything else.
10. SMTC: Telling the UE When to Look
SSBs are not continuous. A cell transmits a burst of SS/PBCH blocks -- up to 8 in FR1, up to 64 in FR2, all inside a 5 ms half-frame -- and then transmits nothing on those resources until the burst repeats, typically 20 ms later. A UE searching blindly for a neighbour's SSB would spend most of its receive time looking at silence. The SSB Measurement Timing Configuration is the network telling the UE where the silence is not.
| Field | Values | What it sets | Notes |
|---|---|---|---|
periodicityAndOffset | CHOICE sf5 (0..4), sf10 (0..9), sf20 (0..19), sf40 (0..39), sf80 (0..79), sf160 (0..159) | Both the window periodicity and its offset, in subframes | The offset range is bounded by the periodicity, which is why the two are one CHOICE rather than two fields |
duration | sf1, sf2, sf3, sf4, sf5 | How long the window stays open, in subframes | Must cover the neighbour's whole burst. FR2 bursts with 64 beams need the full sf5 |
Table 8. SSB-MTC TS 38.331. Two fields, and between them they decide whether a neighbour is measurable at all.
The window recurs on the same arithmetic as the gap:
window occurs in frames where: SFN mod (periodicity / 10) =
FLOOR(offset / 10)
window starts at subframe: offset mod 10
window length: duration subframes
-- for sf5, the window recurs every 5 subframes and the offset is
0..4 within that, so the frame arithmetic degeneratesThe SMTC is a statement about the neighbour's transmissions, expressed in the serving cell's frame timing. That only works if the two cells are frame-synchronised -- which in a TDD network they are, by necessity, and which is also the assumption behind deriveSSB-IndexFromCell. In an asynchronous deployment the SMTC has to absorb the timing difference in its offset, and the window usually has to be widened to cover the uncertainty. An SMTC copied verbatim from a synchronised cluster into an unsynchronised one measures nothing.
| SSB periodicity on air | SMTC periodicity | Result |
|---|---|---|
| 20 ms (typical serving-cell default) | sf20 | Every burst falls in a window. Ideal. |
| 20 ms | sf40 | Every other burst is missed. Halves the sample rate, saves UE power. Legitimate. |
| 20 ms | sf10 or sf5 | Windows open when nothing is transmitted. Wasted receive time, no extra samples. |
| 40 ms (some deployments) | sf20 | Half the windows are empty; the UE measures noise in those and, depending on implementation, may report nothing at all. |
| 160 ms (rare, power-saving) | sf20 | Seven of eight windows empty. Measurement becomes unreliable. |
Table 9. SMTC periodicity against the neighbour's actual SSB periodicity. Note that only the actual periodicity matters, and it is not visible anywhere in the UE's configuration -- the network has to know it.
11. smtc1, smtc2 and Per-Cell Overrides
MeasObjectNR carries more than one SMTC because one carrier can hold cells with different SSB periodicities. smtc1 is the primary window and applies to every cell on the carrier. smtc2 is a periodicity override for a listed set of PCIs.
| smtc1 | smtc2 | smtc3 (Rel-16) | |
|---|---|---|---|
| Type | SSB-MTC | SSB-MTC2 | SSB-MTC3 list |
| Scope | Every cell in the measObject | Only the PCIs in its pci-List (up to 64) | Additional windows, primarily for NR-U and IAB deployments |
| Carries periodicity | Yes: sf5..sf160 | Yes: sf5..sf80 | Yes |
| Carries offset | Yes | No | Yes |
| Carries duration | Yes | No | Yes |
| Practical meaning | The default window for the carrier | Same offset and duration as smtc1, but this periodicity for these cells | Extra windows for cells whose SSBs are not where smtc1 says |
Table 10. The SMTC family. smtc2 inheriting smtc1's offset and duration is the detail that produces surprises.
smtc2 has no offset and no duration -- it takes both from smtc1 and changes only the periodicity TS 38.331 `SSB-MTC2`. So a network that wants a shorter window for a subset of cells cannot express that in smtc2, and an engineer who writes smtc2 believing it is a complete, independent SMTC will get windows at smtc1's offset with smtc2's period. If those cells transmit at a different offset, the windows land on silence. Symptom: a specific group of PCIs -- exactly the ones in the pci-List -- never reported, while the rest of the carrier works.
Two further fields in MeasObjectNR shape what happens inside the window. ssb-ToMeasure is a bitmap of the SS/PBCH block indices worth measuring -- useful when a neighbour uses only some of its beams, because the UE can stop processing the rest. ssb-PositionQCL-Common declares which SSB positions are quasi-co-located, and deriveSSB-IndexFromCell says whether the UE may assume the neighbour's SSB timing is aligned with the serving cell's, which is what lets it derive an SSB index without decoding the PBCH.
12. The Three-Way Overlap
This is the section to read first if a neighbour is missing from every report. Three independent periodic things must overlap before a single sample exists:
- The neighbour's SSB burst -- owned by the neighbour cell's configuration, invisible to the UE, and known to the network only through planning data.
- The SMTC window -- owned by the
measObjectin this UE'smeasConfig. - The measurement gap -- owned by
measGapConfig, and only required when the measurement needs retuning (§2).
gapOffset moved by 3 ms. Every element is individually legal and correct; the intersection is empty, permanently, and nothing reports an error.Alignment check with real numbers. SSB burst on air: SFN mod 2 = 0, subframes 0-1 (20 ms periodicity, 2 ms burst).
Case A -- passes.
smtc1 sf20 : 0, duration sf2
-> window at SFN mod 2 = 0, subframes 0..1 [matches burst]
gap mgl ms6, mgrp ms80, gapOffset 0, T = 8
-> gap at SFN mod 8 = 0, subframes 0..5
Windows at SFN 0, 2, 4, 6, 8, ... gaps at SFN 0, 8, 16, ...
Overlap at SFN 0, 8, 16 -> one sample every 80 ms. The windows at SFN 2, 4, 6 have no gap and are unusable.
Case B -- fails.
Same SSB, same smtc1. gapOffset 3 instead of 0.
-> SFN mod 8 = FLOOR(3/10) = 0, subframe = 3 mod 10 = 3
-> gap at SFN 0 subframes 3..8
Window closes at the end of subframe 1. Gap opens at subframe 3.
Overlap: none. Ever. The gap is legal, the SMTC is correct, the neighbour is transmitting, and the UE measures nothing for the whole life of the connection.
Margin available in Case A: the window occupies subframes 0-1 of a gap that runs 0-5, so gapOffset could be 0 (used), and offsets 1 and 2 would still catch part of the window. Offset 3 and beyond catch none of it. The tolerance is two subframes.
This is the most common measurement misconfiguration in NR, and it is the hardest to see, because there is no counter for the gap did not coincide with the window. Every element passes inspection individually. Build the habit of doing the arithmetic in this callout for every inter-frequency measObject you meet: compute the window's subframes, compute the gap's subframes, and check that one contains the other. It takes a minute and it is the single highest-yield check in this document.
One further subtlety: the usable part of the gap is shorter than MGL. The UE spends mgta retuning at the start and a comparable interval retuning back at the end, so a 6 ms gap yields roughly 5 ms of measurement, and a 1.5 ms gap yields well under 1 ms. An SMTC of duration sf5 cannot be captured inside a 1.5 ms gap at all, however perfectly the offsets are aligned -- which makes mgl and duration a pair that must be chosen together.
13. CSI-RS Based Measurement and Its Timing
SSB-based measurement is coarse in time -- one burst every 20 ms -- and coarse in space, since an SSB beam is deliberately wide. CSI-RS-based mobility measurement exists for the cases where that is not enough: finer beams, more frequent samples, and a measurement that lives on the same resources used for beam management. The price is configuration coupling, because the UE must be told the neighbour's CSI-RS configuration in detail, which means the network has to know it.
| Field | Purpose | Notes |
|---|---|---|
refFreqCSI-RS | Reference point (an ARFCN) for the CSI-RS resources in this object | Required in the measObject before any rsType csi-rs event works |
csi-rs-ResourceConfigMobility | The container: subcarrier spacing, reference serving cell, and a list of per-cell CSI-RS configurations | One entry per neighbour PCI |
csi-rs-CellMobility | Per-cell: physCellId, measurement bandwidth (nrofPRBs, startPRB), density, and the resource list | Bandwidth may be narrower than the carrier, which is part of why CSI-RS measurement can be cheaper |
csi-rs-Resource-Mobility | Per resource: csi-RS-Index, slotConfig (ms4, ms5, ms10, ms20, ms40), frequencyDomainAllocation, firstOFDMSymbolInTimeDomain, sequenceGenerationConfig | slotConfig is the CSI-RS periodicity -- the analogue of the SSB periodicity |
associatedSSB | Which SSB this CSI-RS resource is quasi-co-located with | Lets the UE reuse the SSB's timing and spatial assumptions instead of searching |
absThreshCSI-RS-Consolidation, nrofCSI-RS-ResourcesToAverage | The CSI-RS equivalents of the SSB consolidation parameters | See the companion 20 Measurements and Events document, §5 |
Table 11. CSI-RS mobility configuration, abridged. There is no SMTC for CSI-RS: the timing comes from slotConfig per resource, plus the QCL relationship to an SSB.
CSI-RS measurement follows the same gap rule as SSB measurement: no gap is needed while the resources are inside the active BWP and use the active numerology, and a gap is needed otherwise. What changes is the timing configuration -- slotConfig replaces the SMTC -- so a CSI-RS-based inter-frequency measurement needs its own alignment check between slotConfig and the gap, with exactly the arithmetic of §12 and none of the same field names.
14. Rel-17 Gap Enhancements
By Rel-17 the cost of gaps had become a limiting factor: a UE cannot measure a fifth carrier without either raising the duty cycle or diluting everything else, and pattern 4's 30% is unusable in a throughput-sensitive deployment. Rel-17 attacks the problem from four directions.
| Enhancement | What it does | Why it helps | Cost |
|---|---|---|---|
| Multiple concurrent gap patterns | Several gap patterns active at once, each identified by a measGapId, each with its own type, priority and sharing | A short, frequent pattern for the carrier that needs freshness and a long, rare one for the rest, instead of one compromise pattern | More configuration state; the UE has to arbitrate overlapping gaps by priority |
| Pre-configured gaps | The network configures gap patterns in advance and activates or deactivates them without a full reconfiguration | Removes the RRC round trip from A2 fires to gaps are running, which is exactly the latency that makes arming-based designs sluggish | Both sides must keep the pre-configuration in step |
| Network-controlled small gaps (NCSG) | A short interruption around the measurement rather than a full gap, with the interruption length signalled | For UEs whose retuning is fast, the outage can be a fraction of a millisecond instead of 6 ms | Capability-dependent, and the UE still interrupts -- just briefly |
| Explicit pre-MG and post-MG interruption | The interruption before and after the gap proper is defined and signalled rather than absorbed into mgta | The scheduler knows exactly which slots are unusable instead of guessing | Slightly larger nominal outage, better predictability |
Table 12. Rel-17 measurement gap enhancements. All four are UE-capability gated; see the companion 26 UE Capability document.
The strategic point behind all four: the duty cycle is not really the quantity that hurts. What hurts is a long contiguous outage in a network that is otherwise scheduling every slot. Rel-17 trades one 6 ms hole for several much smaller ones with the same total, which the scheduler, HARQ and TCP all tolerate far better. Expect log formats to show gap identities and gap priorities from Rel-17 onwards, and expect a single UE to have more than one gap pattern running.
15. Failure Modes and What Each One Means
| Failure | Detected by | What happens | Diagnostic pointer |
|---|---|---|---|
| Gap and SMTC window never overlap | Nobody | Nothing is ever measured on that carrier | Do the §12 arithmetic. The most common fault in this document, and completely silent. |
No gap configured for an inter-frequency measObject | Nobody | That measId produces no results | Check measGapConfig exists at all before investigating thresholds. |
| SMTC offset does not match the neighbour's actual SSB timing | Nobody | The UE measures noise inside its window | Compare against the neighbour's own ssb-PositionsInBurst and SSB periodicity from planning data -- it is not visible in the UE's configuration. |
smtc2 written as if it had its own offset and duration | Nobody | Windows for the listed PCIs land at smtc1's offset | Exactly the PCIs in pci-List are missing from reports; the rest of the carrier is fine (§11). |
| Active DL BWP no longer contains the SSB | Nobody | Intra-frequency measurement stops, with no gap available to rescue it | Correlate the last successful measurement with the most recent BWP switch (§2). |
mgl too short for the SMTC duration plus retuning | Nobody | Only part of the SSB burst is captured; fewer beams are measured, so cell quality is understated | MGL 1.5 or 3 ms with duration sf4/sf5. Recompute usable time as MGL - 2 x retuning. |
Gap collides with onDuration | The user | Lost PDCCH occasions; downlink latency gains up to a DRX cycle | Compare gapOffset with drx-StartOffset and drx-onDurationTimer (§9). |
| Gap collides with a configured grant or SPS occasion | The user | That occasion is dropped every cycle, permanently, if the periodicities align | Periodic, structured loss in one direction that vanishes when gaps are released (§7). |
gapUE configured alongside gapFR1 or gapFR2 | UE RRC | Invalid configuration; behaviour is implementation-dependent | Decode the whole MeasGapConfig including the extension group before concluding which gaps exist. |
Per-FR gaps configured without independentGapConfig | Nobody, until behaviour diverges | The UE is not required to support them | Cross-check against the UE capability exchange. |
| Too many carriers sharing one pattern | Nobody | The scaling factor stretches every measurement period; events fire late or never | Count the carriers competing for gaps, then compute the per-carrier opportunity rate as in §8.1. |
gapOffset >= mgrp | Nobody reliably | Undefined placement | A cheap sanity check that catches copy-paste errors between patterns of different MGRP. |
Wrong refServCellIndicator in asynchronous CA | Nobody | Every gap is displaced by the inter-cell timing difference | Only bites where serving cells are not frame-aligned, and then it bites everything at once. |
| Duty cycle simply too high | The capacity team | Throughput loss proportional to MGL/MGRP, plus second-order effects | Check whether the pattern is still installed on UEs that no longer need it -- a gap armed by A2 and never released by A1. |
Table 13. Gap and SMTC failure modes. As with the measurement framework itself, almost nothing here is detected or reported: the UE cannot tell the difference between nothing to measure and never looked.
Notice the pattern in the Detected by column. Gaps and SMTC sit between two subsystems that each assume the other is correct: the measurement framework assumes samples arrive, and the scheduler assumes the gap it was told about is the gap that is useful. Neither validates the other. This is why the checklist in §19 is arithmetic rather than log-reading.
16. Configuration Reference (ASN.1)
MeasGapConfig ::= SEQUENCE {
gapFR2 SetupRelease { GapConfig } OPTIONAL,
...,
[[ gapFR1 SetupRelease { GapConfig } OPTIONAL,
gapUE SetupRelease { GapConfig } OPTIONAL ]]
-- Rel-17 adds a list-based form with per-gap identities,
-- types, priorities and pre-configuration indications
}
GapConfig ::= SEQUENCE {
gapOffset INTEGER (0..159),
mgl ENUMERATED {ms1dot5, ms3, ms3dot5, ms4, ms5dot5, ms6},
mgrp ENUMERATED {ms20, ms40, ms80, ms160},
mgta ENUMERATED {ms0, ms0dot25, ms0dot5},
...,
[[ refServCellIndicator ENUMERATED {pCell, pSCell, mcg-FR2}
OPTIONAL ]],
[[ refFR2ServCellAsyncCA-r16 ServCellIndex OPTIONAL,
mgl-r16 ENUMERATED {ms10, ms20} OPTIONAL ]]
}
MeasGapSharingConfig ::= SEQUENCE {
gapSharingFR2 SetupRelease { MeasGapSharingScheme } OPTIONAL,
...,
[[ gapSharingFR1 SetupRelease { MeasGapSharingScheme } OPTIONAL,
gapSharingUE SetupRelease { MeasGapSharingScheme } OPTIONAL ]]
}
MeasGapSharingScheme ::= ENUMERATED {scheme00, scheme01,
scheme10, scheme11}Listing 1. MeasGapConfig and gap sharing, abridged from TS 38.331. The asymmetry -- gapFR2 in the root, gapFR1 and gapUE in an extension group -- is real and is worth knowing when reading a decode.
SSB-MTC ::= SEQUENCE {
periodicityAndOffset CHOICE {
sf5 INTEGER (0..4),
sf10 INTEGER (0..9),
sf20 INTEGER (0..19),
sf40 INTEGER (0..39),
sf80 INTEGER (0..79),
sf160 INTEGER (0..159)
},
duration ENUMERATED {sf1, sf2, sf3, sf4, sf5}
}
SSB-MTC2 ::= SEQUENCE {
pci-List SEQUENCE (SIZE (1..maxNrofPCIsPerSMTC)) OF PhysCellId
OPTIONAL,
periodicity ENUMERATED {sf5, sf10, sf20, sf40, sf80}
-- no offset, no duration: both are inherited from smtc1
}
SSB-ConfigMobility ::= SEQUENCE {
ssb-ToMeasure SetupRelease { SSB-ToMeasure } OPTIONAL,
deriveSSB-IndexFromCell BOOLEAN,
ssb-PositionQCL-Common SSB-PositionQCL-Relation OPTIONAL,
...
}
CSI-RS-Resource-Mobility ::= SEQUENCE {
csi-RS-Index CSI-RS-Index,
slotConfig CHOICE {
ms4 INTEGER (0..31),
ms5 INTEGER (0..39),
ms10 INTEGER (0..79),
ms20 INTEGER (0..159),
ms40 INTEGER (0..319)
},
associatedSSB SEQUENCE {
ssb-Index SSB-Index,
isQuasiColocated BOOLEAN
} OPTIONAL,
frequencyDomainAllocation CHOICE { row1 BIT STRING (SIZE (4)),
row2 BIT STRING (SIZE (12)) },
firstOFDMSymbolInTimeDomain INTEGER (0..13),
sequenceGenerationConfig INTEGER (0..1023),
...
}Listing 2. SMTC, the SSB mobility configuration, and the CSI-RS timing that replaces SMTC for CSI-RS-based measurement. Abridged; maxNrofPCIsPerSMTC is 64.
17. Illustrative Message 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.
One scenario throughout: a UE with C-RNTI 0x4A17 on PCell PCI 188, serving carrier ssbFrequency 632628 in FR1, measuring an inter-frequency NR carrier at 646656 and an E-UTRA carrier at 1850.
17.1 Gaps and gap sharing being configured
09:41:12.204 [RRC-DL] RRCReconfiguration (SRB1, transaction 2)
measConfig
measGapConfig
gapFR1 setup
gapOffset ...................... 17 -- SFN mod 8 = 1, sf 7
mgl ............................ ms6
mgrp ........................... ms80 -- gap pattern 1
mgta ........................... ms0dot25 -- FR1 retuning
refServCellIndicator ........... pCell
measGapSharingConfig
gapSharingFR1 setup ............ scheme00 -- equal splitting
-- duty cycle 6/80 = 7.5%
-- gaps at SFN 1, 9, 17, 25, ... subframe 7, running into the next
-- frame's subframe 2; UE stops 0.25 ms early, at sf 6.75
09:41:12.241 [RRC-UL] RRCReconfigurationComplete
09:41:12.310 [MAC-SCHED] gap pattern active: next gap SFN 9 sf 7Listing 3. A per-FR1 gap with equal gap sharing. Note that nothing here names pattern 1 -- the pattern id is inferred from the MGL/MGRP pair.
17.2 The SMTC configuration the gap has to match
09:41:12.204 [RRC-DL] RRCReconfiguration (same message)
measConfig
measObjectToAddModList
MeasObjectToAddMod measObjectId 2
measObjectNR
ssbFrequency ................... 646656 -- inter-frequency
ssbSubcarrierSpacing ........... kHz30
smtc1
periodicityAndOffset sf20 .... 0 -- SFN mod 2 = 0, sf 0
duration ...................... sf2 -- 2 ms window
smtc2
pci-List ...................... 512, 513, 514
periodicity ................... sf40 -- these three only
referenceSignalConfig
ssb-ConfigMobility
ssb-ToMeasure shortBitmap ... 0xF0 -- SSB #0..#3 only
deriveSSB-IndexFromCell ...... TRUE -- cells are sync'd
absThreshSS-BlocksConsolidation rsrp 67
nrofSS-BlocksToAverage ......... 4
quantityConfigIndex ............ 2
-- smtc2 gives PCI 512/513/514 a 40 ms window periodicity, at the
-- SAME offset (0) and duration (sf2) as smtc1 -- those two fields
-- do not exist in SSB-MTC2Listing 4. smtc1 for the carrier and an smtc2 periodicity override for three PCIs. Cross-check this against the gap in 17.1 before believing either.
17.3 The alignment check, failing and then fixed
-- Configuration as installed above:
smtc1 window : SFN mod 2 = 0, subframes 0..1
gapFR1 : SFN mod 8 = 1, subframes 7..9 + next frame 0..2
09:41:52.000 [UE-MEAS] measId 3 (measObjectId 2) results present
-- gap occurs SFN 1 sf 7 .. SFN 2 sf 2
-- window occurs SFN 2 sf 0 .. sf 1
-- overlap: SFN 2 subframes 0..1 -> one sample per 80 ms
-- the windows at SFN 0, 4, 6, 8 have no gap: unusable
-- Now the same carrier after an unrelated edit set gapOffset 23:
09:47:04.118 [RRC-DL] RRCReconfiguration measGapConfig gapFR1 setup
gapOffset ..... 23 -- SFN mod 8 = 2, subframe 3
09:47:44.000 [UE-MEAS] measId 3 no results
09:48:24.000 [UE-MEAS] measId 3 no results
09:49:04.000 [UE-MEAS] measId 3 no results
-- gap : SFN 2 subframes 3..8
-- window : SFN 2 subframes 0..1 (closed 2 ms earlier)
-- overlap: NONE, and none in any later frame either
-- no error, no counter, no indication of any kind
09:52:10.006 [RRC-DL] RRCReconfiguration gapOffset 20 -- SFN mod 8 = 2
-- subframe 0
09:52:10.910 [UE-MEAS] measId 3 PCI 513 ssb-Index 1 rsrp 74
09:52:10.910 [UE-MEAS] measId 3 PCI 513 cell rsrp 72 -- -85 dBmListing 5. The same carrier working, silently broken by a three-subframe offset change, and working again. The three no results lines are the only symptom either side ever sees.
17.4 A gap colliding with DRX onDuration
10:02:00.000 [RRC-DL] RRCReconfiguration
drx-Config drx-LongCycleStartOffset ms80 : 0 -- cycle 80 ms
drx-onDurationTimer ...... ms10
measGapConfig gapFR1 setup gapOffset 0 mgl ms6 mgrp ms80
10:02:00.400 [MAC] DRX onDuration start SFN 40 sf 0
10:02:00.400 [MAC] measurement gap start SFN 40 sf 0 (6 ms)
10:02:00.400 [MAC] PDCCH monitoring suspended: in measurement gap
10:02:00.406 [MAC] gap end; PDCCH monitoring resumes, 4 ms of
onDuration remaining
10:02:00.410 [MAC] onDuration expired, no PDCCH received
10:02:00.412 [SCHED] DL data arrived for C-RNTI 0x4A17 -- UE asleep
10:02:00.480 [MAC] DRX onDuration start SFN 48 sf 0
10:02:00.486 [MAC] gap end; PDCCH DCI 1_1 delivered
-- 68 ms of added latency for one packet, from a gap that costs the
-- same 7.5% of airtime wherever it sits. gapOffset 30 would place
-- the gap at SFN 43 sf 0, in the DRX off period, at no cost.Listing 6. Duty cycle unchanged, latency ruined. This is the cheapest gap-related fix available to a network.
18. Release Deltas: Rel-15 to Rel-18
| Release | Change | Why it matters when reading gaps |
|---|---|---|
| Rel-15 | The gap framework: patterns 0-23, GapConfig, per-UE and per-FR gaps, gap sharing, SMTC (smtc1, smtc2) | Everything in §3-12 is Rel-15. Note that gapFR1 and gapUE live in an extension group, so early decoders may not show them (§5). |
| Rel-16 | Longer gap lengths (10 and 20 ms) for positioning-reference-signal measurement; refFR2ServCellAsyncCA for asynchronous CA | A gap much longer than 6 ms in a trace is a positioning gap, not a mobility gap, and its cost profile is completely different. |
| Rel-16 | smtc3 list for NR-U and IAB deployments, where SSB positions are less regular | A third SMTC in a measObject is not a misconfiguration; it belongs to unlicensed or relay operation. |
| Rel-17 | Multiple concurrent gap patterns with measGapId, gap type, priority and per-gap sharing | A UE can have more than one gap pattern running, so the gap pattern is no longer a well-formed phrase. Expect gap identities in logs. |
| Rel-17 | Pre-configured measurement gaps, activated and deactivated without full reconfiguration | Gaps can start and stop without an RRCReconfiguration carrying a measGapConfig -- so the absence of that message no longer means the gap state is unchanged. |
| Rel-17 | Network-controlled small gaps with signalled interruption lengths, and explicit pre-MG / post-MG interruption | The outage can be much shorter than any MGL in the pattern table, and the interruption around a gap becomes an explicit, schedulable quantity. |
| Rel-17 | MUSIM gaps -- gaps for a multi-SIM UE to attend to its other network | A gap-like outage that has nothing to do with measurement at all. Do not read it as a measurement gap. |
| Rel-17 | RedCap: reduced-capability UEs with relaxed measurement requirements and narrower bandwidth | The BWP-versus-SSB question of §2 becomes routine rather than exceptional, because RedCap bandwidths are small. |
| Rel-18 | Further NCSG and concurrent-gap refinements; LTM (L1/L2-triggered mobility) shifting some measurement below RRC | Cell switching driven by L1 measurement may not involve gaps or reports in the way this document describes. |
Table 14. Gap and SMTC changes by release. Everything from Rel-17 onward is capability-gated -- see the companion 26 UE Capability document.
19. Reading Gaps and SMTC in Logs: A Checklist
- Decide whether a gap is even required. Compare the
measObject'sssbFrequencyagainst the serving carrier, and -- if they match -- against the active DL BWP and its subcarrier spacing (§2). An intra-frequency measurement can need a gap. - Confirm a gap exists, in the right scope. Decode the whole
MeasGapConfig, extension group included.gapFR2alone in a decode may mean the decoder stopped early, not that only FR2 has gaps. - Compute where the gap falls. T = MGRP/10; SFN mod T = floor(
gapOffset/10); subframe =gapOffsetmod 10 (§3.1). Write down the actual subframes, including the ones in the following frame. - Compute where the SMTC window falls, with the same arithmetic on
periodicityAndOffset, and its length fromduration. - Intersect the two. If the window is not inside the gap, stop: you have found the fault, and nothing further in the measurement configuration matters (§12).
- Check the neighbour's real SSB periodicity against the SMTC periodicity. This is planning data, not UE configuration -- the UE has no way to tell you the window was empty.
- Check
smtc2. If the missing cells are exactly the PCIs in apci-List, the offset inheritance in §11 is the likely cause. - Subtract the retuning. Usable measurement time is roughly MGL minus twice the retuning interval. Compare it against
duration: a 1.5 ms gap cannot capture an sf5 window. - Count the carriers sharing the pattern, then divide: gaps per second x share = looks per second for the carrier you care about (§8.1). Compare that against the
timeToTriggerconfigured for events on it. - Line the gap up against DRX and against any configured grant. Compare
gapOffsetwithdrx-StartOffsetand with the SPS or configured-grant periodicity (§7, §9). Both collisions are silent in capacity metrics and loud to the user. - Ask whether the gap should still be there. Gaps armed by an A2 event and never released by A1 are a common source of unexplained, permanent throughput loss on a subset of UEs.
20. Glossary
| Term | Expansion | Meaning in this document |
|---|---|---|
| MGL | Measurement Gap Length | How long one gap lasts: 1.5, 3, 3.5, 4, 5.5 or 6 ms (10 or 20 ms for Rel-16 positioning gaps). |
| MGRP | Measurement Gap Repetition Period | How often a gap recurs: 20, 40, 80 or 160 ms. Sets the effective sampling interval. |
| MGTA | Measurement Gap Timing Advance | How much earlier than its nominal position the gap begins, to pay for RF retuning: 0, 0.25 or 0.5 ms. |
gapOffset | -- | Subframe offset within the repetition period. Decides the SFN and subframe of every gap (§3.1). |
| Gap pattern | -- | A numbered (MGL, MGRP) combination from TS 38.133 Table 9.1.2-1. Capabilities are expressed in pattern ids. |
| Duty cycle | -- | MGL / MGRP. The first-order fraction of serving-cell airtime given up. |
| Per-UE gap | gapUE | One gap pattern interrupting every serving cell of the UE. |
| Per-FR gap | gapFR1 / gapFR2 | A gap pattern confined to one frequency range, so the other range keeps running. Needs independentGapConfig. |
| Gap sharing | measGapSharingConfig | How gap occasions are divided between gap-assisted intra-frequency, inter-frequency and inter-RAT measurement. |
| CSSF | Carrier-specific scaling factor | The factor by which measurement requirements are relaxed when several carriers share the same gaps TS 38.133 cl. 9.1.5. |
| SMTC | SSB Measurement Timing Configuration | The periodic window in which the UE looks for a carrier's SSBs. smtc1 for the carrier, smtc2 as a periodicity override for listed PCIs. |
| SSB burst | SS/PBCH block burst set | Up to 8 (FR1) or 64 (FR2) SSBs inside a 5 ms half-frame, repeating at the cell's SSB periodicity. |
| NCSG | Network-Controlled Small Gap | Rel-17 short interruption used instead of a full gap where retuning is fast. |
| Pre-MG / post-MG interruption | -- | The unusable interval immediately before and after the gap proper, made explicit in Rel-17. |
measCycleSCell | -- | How often a deactivated SCell's carrier is measured; interacts with gap availability. |
21. References
- 3GPP TS 38.133 -- Requirements for support of radio resource management. Clause 9.1 (measurement gaps): 9.1.2 (gap patterns, the pattern table and gap placement), 9.1.5 (carrier-specific scaling factor), 9.1.9 (measurement gap sharing). Clause 9.2-9.3 (measurement capability, cell identification and measurement periods), clause 10.1 (reporting mappings).
- 3GPP TS 38.331 -- NR RRC protocol specification. IEs
MeasGapConfig,GapConfig,MeasGapSharingConfig,MeasGapSharingScheme,SSB-MTC,SSB-MTC2,SSB-ConfigMobility,CSI-RS-ResourceConfigMobility,CSI-RS-Resource-Mobility; clause 5.5 for the measurement configuration these sit inside. - 3GPP TS 38.213 -- Physical layer procedures for control. Clause 4.1 (cell search and SSB timing), clause 11 (UE behaviour with respect to measurement gaps and BWP operation).
- 3GPP TS 38.211 -- Physical channels and modulation. Clause 7.4.3 (SS/PBCH block structure and the candidate SSB positions inside a half-frame).
- 3GPP TS 38.300 -- NR overall description. Clause 9.2.4 (measurements), for where gaps sit in the mobility architecture.
- 3GPP TS 38.306 -- UE radio access capabilities, for
independentGapConfigand the per-band-combination gap capabilities.
Companion documents in this set
- 20 Measurements and Events -- the framework these gaps serve:
measConfig, the A/B events, and why a missing sample becomes a missing handover. Read it alongside this one. - 02 Radio Frame Structure -- SFN, half-frames, subframes and the SSB burst positions that all of the arithmetic here is expressed in.
- 11 DRX -- the other mechanism that takes the UE off the air, and the timers that keep running through a gap (§9).
- 22 Handover Overview and 25 Conditional HO and DAPS -- what the measurements bought with these gaps are ultimately for.
- 26 UE Capability --
independentGapConfig, supported gap patterns, and the Rel-17 enhancement capabilities. - 08 Scheduling -- the scheduler's view of a gap: slots that simply cannot be allocated.
- 03 Random Access -- what happens to a PRACH occasion that falls inside a gap.
- 17 System Information -- where a cell's own SSB periodicity and position information is broadcast, which is what an SMTC has to match.