>
Home5G NRRRC — Radio Resource ControlMeasurement Gaps & SMTC
🗂️ RRC — Radio Resource ControlAdvanced

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.

📚 3GPP-basedTS 38.331TS 38.133

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
  1. 01Why a Gap Has to Exist
  2. 02When No Gap Is Needed, and the Exception
  3. 03Anatomy of a Gap Pattern
  4. 04The Standardised Gap Patterns
  5. 05Per-UE and Per-FR Gaps
  6. 06MeasGapConfig and the Coexistence Rules
  7. 07What the UE Gives Up During a Gap
  8. 08Gap Sharing and the Scaling Factor
  9. 09Gaps and DRX
  10. 10SMTC: Telling the UE When to Look
  11. 11smtc1, smtc2 and Per-Cell Overrides
  12. 12The Three-Way Overlap
  13. 13CSI-RS Based Measurement and Its Timing
  14. 14Rel-17 Gap Enhancements
  15. 15Failure Modes and What Each One Means
  16. 16Configuration Reference (ASN.1)
  17. 17Illustrative Message Traces
  18. 18Release Deltas: Rel-15 to Rel-18
  19. 19Reading Gaps and SMTC in Logs: A Checklist
  20. 20Glossary
  21. 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.

MeasurementRetuning needed?Gap needed?Why
Intra-frequency neighbour, SSB inside the active DL BWPNoNoThe samples are already arriving. The UE just has to look at the right symbols.
Intra-frequency neighbour, SSB outside the active DL BWPYesYesThe BWP does not cover the SSB, so the UE must retune even though the frequency is nominally the same (§2).
Inter-frequency NR neighbourYesYesDifferent centre frequency. This is the ordinary case.
Inter-RAT E-UTRA neighbourYesYesDifferent frequency and a different synchronisation structure to acquire.
Deactivated SCell on another carrierYesYesGoverned additionally by measCycleSCell; see the companion 20 Measurements and Events document.
CSI-RS on the serving carrier inside the active BWPNoNoSame argument as intra-frequency SSB (§13).
PRS for positioning on another frequency layerYesYesRel-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.

💡
Key point

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.

Figure 1. The decision the network makes for every 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.

⚠️
Common pitfall

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

ParameterASN.1 valuesMeaningConsequence of the choice
mglms1dot5, ms3, ms3dot5, ms4, ms5dot5, ms6Measurement Gap Length -- how long each gap lastsMust cover retuning out, the SMTC window, and retuning back. Too short and only part of the SSB burst is captured.
mgrpms20, ms40, ms80, ms160Measurement Gap Repetition Period -- how often a gap recursSets the effective sampling interval for every gap-assisted measurement. Halving it doubles both freshness and cost.
gapOffsetINTEGER (0..159), constrained to be less than mgrpWhere in the repetition period the gap starts, in subframesThe single most consequential field: it decides whether the gap lands on the neighbour's SSB burst or 3 ms after it (§12).
mgtams0, ms0dot25, ms0dot5Measurement Gap Timing Advance -- the gap starts this much earlier than the nominal positionPays 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.
refServCellIndicatorpCell, pSCell, mcg-FR2Which serving cell's timing gapOffset is measured againstOnly 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.

Figure 2. Gap pattern 0 against 120 ms of serving-cell activity. Three gaps, 18 ms of the 120 ms unavailable, and one SRS transmission lost per gap.

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:

Gap placement, 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
🧮
Worked calculation

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.

📘
Spec detail

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.

PatternMGL (ms)MGRP (ms)Duty cyclePatternMGL (ms)MGRP (ms)Duty cycle
064015.0%125.52027.5%
16807.5%135.54013.8%
23407.5%145.5806.9%
33803.75%155.51603.4%
462030.0%163.52017.5%
561603.75%173.5408.75%
642020.0%183.5804.4%
744010.0%193.51602.2%
84805.0%201.5207.5%
941602.5%211.5403.75%
1032015.0%221.5801.875%
1131601.875%231.51600.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.

Figure 3. The same table as a cost curve. The choice between pattern 4 and pattern 22 is a factor of sixteen in capacity given up, and a factor of four in how often a neighbour is sampled.
🧮
Worked calculation

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.

💡
Key point

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.

gapUEgapFR1gapFR2
Applies toEvery serving cell of the UE, both frequency rangesMeasurements and serving cells in FR1 onlyMeasurements and serving cells in FR2 only
ASN.1 positionExtension group of MeasGapConfigExtension group of MeasGapConfigThe root of MeasGapConfig -- it came first
May coexist withNothing elsegapFR2gapFR1
Requires UE capabilityNo -- the baselineindependentGapConfigindependentGapConfig
Typical useFR1-only UEs; any UE where the network does not know or trust the capabilityFR1 inter-frequency and inter-RAT measurement in an FR1+FR2 UEFR2 inter-frequency measurement without disturbing the FR1 anchor
Gap patterns available0-11 generally; 12-23 for FR2 measurement0-110-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.

🔍
What you see in logs

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.

Figure 4. A whole gap pattern is sixteen bits. The enumerated indices are what matters when reading a raw decode: mgl index 5 is 6 ms, and there is no field anywhere that says pattern 1.
  • gapUE must not be configured together with gapFR1 or gapFR2. Per-UE and per-FR gaps are alternatives, not layers.
  • gapFR1 and gapFR2 may 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. Those measIds simply stop producing results, silently -- exactly the failure described in the companion 20 Measurements and Events document.
⚠️
Common pitfall

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 stopsDirectionImmediate effectSecond-order effect
PDCCH monitoringDLNo scheduling decisions can be deliveredGrants queue up behind the gap; with DRX this can cost a whole cycle (§9)
PDSCH receptionDLNo downlink dataAny HARQ process whose retransmission opportunity fell in the gap waits a further RTT
PUSCH transmissionULNo uplink data, including RLC status PDUsRLC and TCP acknowledgements bunch up; the effect on a single flow exceeds the duty cycle
PUCCH: HARQ-ACK, SRULNo feedback, no scheduling requestsA scheduling request that would have gone in the gap is delayed to the next SR occasion
SRS transmissionULSounding occasions in the gap are droppedUplink beamforming and MCS selection run on older channel knowledge
CSI reportingULReports configured in the gap are not sentDownlink link adaptation uses stale CQI for the first slots after the gap -- often visible as a brief MCS dip
Configured grants / SPSBothOccasions inside the gap are dropped, not deferredFor VoNR with a 20 ms configured grant and a 20 ms MGRP, the same talk-spurt packet is lost every cycle
PRACH transmissionULNo preamble may be sent in a gapA 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.

⚠️
Common pitfall

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.

Figure 5. Eight consecutive gap occasions divided four ways. Each individual purpose gets a fraction of an already sparse resource, which is why inter-frequency measurement times are specified in seconds.
SchemeShare to gap-assisted intra-frequencyRemainder goes toWhen to use it
scheme00Equal splitting between the two groupsInter-frequency and inter-RAT, sharing the rest equallyThe neutral default
scheme01The smallest shareMostly inter-frequency and inter-RATThe serving frequency is well understood and the UE needs to find another layer quickly
scheme10An even shareInter-frequency and inter-RATBalanced
scheme11The largest shareLittle left for inter-frequency and inter-RATIntra-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.

🧮
Worked calculation

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.

Figure 6. Two gap configurations with identical duty cycle. With 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.
InteractionWhat happensWhat to do about it
Gap overlaps onDurationThe 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 cycleThe 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 cycleThe gap walks across the onDuration, colliding periodically.Align the two periodicities if latency matters.
Long DRX cycle, measurement during DRXTS 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 periodNo 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.

🔍
What you see in logs

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.

FieldValuesWhat it setsNotes
periodicityAndOffsetCHOICE 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 subframesThe offset range is bounded by the periodicity, which is why the two are one CHOICE rather than two fields
durationsf1, sf2, sf3, sf4, sf5How long the window stays open, in subframesMust 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:

SMTC window placement
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 degenerates
💡
Key point

The 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 airSMTC periodicityResult
20 ms (typical serving-cell default)sf20Every burst falls in a window. Ideal.
20 mssf40Every other burst is missed. Halves the sample rate, saves UE power. Legitimate.
20 mssf10 or sf5Windows open when nothing is transmitted. Wasted receive time, no extra samples.
40 ms (some deployments)sf20Half the windows are empty; the UE measures noise in those and, depending on implementation, may report nothing at all.
160 ms (rare, power-saving)sf20Seven 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.

smtc1smtc2smtc3 (Rel-16)
TypeSSB-MTCSSB-MTC2SSB-MTC3 list
ScopeEvery cell in the measObjectOnly the PCIs in its pci-List (up to 64)Additional windows, primarily for NR-U and IAB deployments
Carries periodicityYes: sf5..sf160Yes: sf5..sf80Yes
Carries offsetYesNoYes
Carries durationYesNoYes
Practical meaningThe default window for the carrierSame offset and duration as smtc1, but this periodicity for these cellsExtra 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.

⚠️
Common pitfall

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:

  1. 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.
  2. The SMTC window -- owned by the measObject in this UE's measConfig.
  3. The measurement gap -- owned by measGapConfig, and only required when the measurement needs retuning (§2).
Figure 7. Correctly aligned. Note that alignment does not mean every burst is sampled: the gap is the scarcest of the three, so MGRP sets the sample rate no matter how often the SSB or the window recurs.
Figure 8. The same three periodicities with gapOffset moved by 3 ms. Every element is individually legal and correct; the intersection is empty, permanently, and nothing reports an error.
🧮
Worked calculation

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.

⚠️
Common pitfall

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.

FieldPurposeNotes
refFreqCSI-RSReference point (an ARFCN) for the CSI-RS resources in this objectRequired in the measObject before any rsType csi-rs event works
csi-rs-ResourceConfigMobilityThe container: subcarrier spacing, reference serving cell, and a list of per-cell CSI-RS configurationsOne entry per neighbour PCI
csi-rs-CellMobilityPer-cell: physCellId, measurement bandwidth (nrofPRBs, startPRB), density, and the resource listBandwidth may be narrower than the carrier, which is part of why CSI-RS measurement can be cheaper
csi-rs-Resource-MobilityPer resource: csi-RS-Index, slotConfig (ms4, ms5, ms10, ms20, ms40), frequencyDomainAllocation, firstOFDMSymbolInTimeDomain, sequenceGenerationConfigslotConfig is the CSI-RS periodicity -- the analogue of the SSB periodicity
associatedSSBWhich SSB this CSI-RS resource is quasi-co-located withLets the UE reuse the SSB's timing and spatial assumptions instead of searching
absThreshCSI-RS-Consolidation, nrofCSI-RS-ResourcesToAverageThe CSI-RS equivalents of the SSB consolidation parametersSee 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.

📘
Spec detail

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.

EnhancementWhat it doesWhy it helpsCost
Multiple concurrent gap patternsSeveral gap patterns active at once, each identified by a measGapId, each with its own type, priority and sharingA short, frequent pattern for the carrier that needs freshness and a long, rare one for the rest, instead of one compromise patternMore configuration state; the UE has to arbitrate overlapping gaps by priority
Pre-configured gapsThe network configures gap patterns in advance and activates or deactivates them without a full reconfigurationRemoves the RRC round trip from A2 fires to gaps are running, which is exactly the latency that makes arming-based designs sluggishBoth 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 signalledFor UEs whose retuning is fast, the outage can be a fraction of a millisecond instead of 6 msCapability-dependent, and the UE still interrupts -- just briefly
Explicit pre-MG and post-MG interruptionThe interruption before and after the gap proper is defined and signalled rather than absorbed into mgtaThe scheduler knows exactly which slots are unusable instead of guessingSlightly 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.

🔄
Release delta

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

FailureDetected byWhat happensDiagnostic pointer
Gap and SMTC window never overlapNobodyNothing is ever measured on that carrierDo the §12 arithmetic. The most common fault in this document, and completely silent.
No gap configured for an inter-frequency measObjectNobodyThat measId produces no resultsCheck measGapConfig exists at all before investigating thresholds.
SMTC offset does not match the neighbour's actual SSB timingNobodyThe UE measures noise inside its windowCompare 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 durationNobodyWindows for the listed PCIs land at smtc1's offsetExactly the PCIs in pci-List are missing from reports; the rest of the carrier is fine (§11).
Active DL BWP no longer contains the SSBNobodyIntra-frequency measurement stops, with no gap available to rescue itCorrelate the last successful measurement with the most recent BWP switch (§2).
mgl too short for the SMTC duration plus retuningNobodyOnly part of the SSB burst is captured; fewer beams are measured, so cell quality is understatedMGL 1.5 or 3 ms with duration sf4/sf5. Recompute usable time as MGL - 2 x retuning.
Gap collides with onDurationThe userLost PDCCH occasions; downlink latency gains up to a DRX cycleCompare gapOffset with drx-StartOffset and drx-onDurationTimer (§9).
Gap collides with a configured grant or SPS occasionThe userThat occasion is dropped every cycle, permanently, if the periodicities alignPeriodic, structured loss in one direction that vanishes when gaps are released (§7).
gapUE configured alongside gapFR1 or gapFR2UE RRCInvalid configuration; behaviour is implementation-dependentDecode the whole MeasGapConfig including the extension group before concluding which gaps exist.
Per-FR gaps configured without independentGapConfigNobody, until behaviour divergesThe UE is not required to support themCross-check against the UE capability exchange.
Too many carriers sharing one patternNobodyThe scaling factor stretches every measurement period; events fire late or neverCount the carriers competing for gaps, then compute the per-carrier opportunity rate as in §8.1.
gapOffset >= mgrpNobody reliablyUndefined placementA cheap sanity check that catches copy-paste errors between patterns of different MGRP.
Wrong refServCellIndicator in asynchronous CANobodyEvery gap is displaced by the inter-cell timing differenceOnly bites where serving cells are not frame-aligned, and then it bites everything at once.
Duty cycle simply too highThe capacity teamThroughput loss proportional to MGL/MGRP, plus second-order effectsCheck 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.

💡
Key point

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

🔍
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.

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

[RRC] measGapConfig and measGapSharingConfig
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 7

Listing 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

[RRC] smtc1 and smtc2 in MeasObjectNR
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-MTC2

Listing 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

[MEAS] gap and SMTC alignment
-- 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 dBm

Listing 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

[MAC] gap versus 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

ReleaseChangeWhy it matters when reading gaps
Rel-15The 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-16Longer gap lengths (10 and 20 ms) for positioning-reference-signal measurement; refFR2ServCellAsyncCA for asynchronous CAA 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-16smtc3 list for NR-U and IAB deployments, where SSB positions are less regularA third SMTC in a measObject is not a misconfiguration; it belongs to unlicensed or relay operation.
Rel-17Multiple concurrent gap patterns with measGapId, gap type, priority and per-gap sharingA 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-17Pre-configured measurement gaps, activated and deactivated without full reconfigurationGaps 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-17Network-controlled small gaps with signalled interruption lengths, and explicit pre-MG / post-MG interruptionThe outage can be much shorter than any MGL in the pattern table, and the interruption around a gap becomes an explicit, schedulable quantity.
Rel-17MUSIM gaps -- gaps for a multi-SIM UE to attend to its other networkA gap-like outage that has nothing to do with measurement at all. Do not read it as a measurement gap.
Rel-17RedCap: reduced-capability UEs with relaxed measurement requirements and narrower bandwidthThe BWP-versus-SSB question of §2 becomes routine rather than exceptional, because RedCap bandwidths are small.
Rel-18Further NCSG and concurrent-gap refinements; LTM (L1/L2-triggered mobility) shifting some measurement below RRCCell 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

  1. Decide whether a gap is even required. Compare the measObject's ssbFrequency against 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.
  2. Confirm a gap exists, in the right scope. Decode the whole MeasGapConfig, extension group included. gapFR2 alone in a decode may mean the decoder stopped early, not that only FR2 has gaps.
  3. Compute where the gap falls. T = MGRP/10; SFN mod T = floor(gapOffset/10); subframe = gapOffset mod 10 (§3.1). Write down the actual subframes, including the ones in the following frame.
  4. Compute where the SMTC window falls, with the same arithmetic on periodicityAndOffset, and its length from duration.
  5. 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).
  6. 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.
  7. Check smtc2. If the missing cells are exactly the PCIs in a pci-List, the offset inheritance in §11 is the likely cause.
  8. 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.
  9. 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 timeToTrigger configured for events on it.
  10. Line the gap up against DRX and against any configured grant. Compare gapOffset with drx-StartOffset and with the SPS or configured-grant periodicity (§7, §9). Both collisions are silent in capacity metrics and loud to the user.
  11. 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

TermExpansionMeaning in this document
MGLMeasurement Gap LengthHow long one gap lasts: 1.5, 3, 3.5, 4, 5.5 or 6 ms (10 or 20 ms for Rel-16 positioning gaps).
MGRPMeasurement Gap Repetition PeriodHow often a gap recurs: 20, 40, 80 or 160 ms. Sets the effective sampling interval.
MGTAMeasurement Gap Timing AdvanceHow 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 gapgapUEOne gap pattern interrupting every serving cell of the UE.
Per-FR gapgapFR1 / gapFR2A gap pattern confined to one frequency range, so the other range keeps running. Needs independentGapConfig.
Gap sharingmeasGapSharingConfigHow gap occasions are divided between gap-assisted intra-frequency, inter-frequency and inter-RAT measurement.
CSSFCarrier-specific scaling factorThe factor by which measurement requirements are relaxed when several carriers share the same gaps TS 38.133 cl. 9.1.5.
SMTCSSB Measurement Timing ConfigurationThe 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 burstSS/PBCH block burst setUp to 8 (FR1) or 64 (FR2) SSBs inside a 5 ms half-frame, repeating at the cell's SSB periodicity.
NCSGNetwork-Controlled Small GapRel-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 independentGapConfig and 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.