>
Home5G NTNMobility & Higher LayersTimer & Window Scaling
📡 Mobility & Higher LayersAdvanced

Timer, Window & RTT Scaling in 5G NTN

How MAC/RLC/RRC timers and windows stretch for satellite RTT — Koffset-driven offsets, cell/UE-specific values, RLC/PDCP discard and t-Reassembly, and RRC T300/T310/T311.

📚 3GPP-basedTS 38.321TS 38.322TS 38.331

Almost every timer and window in the 3GPP protocol stack was sized for a terrestrial round trip — a fraction of a millisecond. Aim the link at a satellite and the round trip jumps to tens of milliseconds in LEO and over half a second in GEO (see orbits & geometry). Suddenly a legitimate response — a random-access reply, a status report, a HARQ acknowledgement — routinely arrives after the timer that was waiting for it has already fired. Left unchanged, the protocol would declare failure while the answer is still in flight. Rel-17 NR-NTN fixes this two ways: it stretches the value ranges of the affected timers and windows, and it introduces cellSpecificKoffset (K_offset) as a master scheduling offset so uplink timing relationships stay reachable. This page walks the stack layer by layer — MAC, RLC, PDCP, RRC, and up to NAS — and shows where each timer must grow.

Introduction

Timer and RTT scaling is the set of Rel-17 NR-NTN adaptations that keep the protocol stack from mistaking propagation delay for failure. It is not one feature but a pattern applied across every layer — MAC, RLC, PDCP, RRC and up into NAS — together with one new master lever, cellSpecificKoffset (K_offset), broadcast in SIB19.

It matters at every request-response exchange in the connected UE's life: random access, scheduling requests, HARQ, ARQ, connection setup, handover, radio-link-failure detection, and registration. On the ground each of these waits a sub-millisecond round trip; over a satellite each waits tens to hundreds of milliseconds. Any timer that was implicitly sized for the terrestrial case fires early on a perfectly healthy satellite link unless it is widened.

The two mechanisms are deliberately kept distinct. K_offset changes when an uplink transmission is scheduled relative to its grant, so the transmission lands in the future rather than in an already-passed slot. The extended timer ranges change how long the stack waits before declaring loss. Confusing the two is the most common conceptual error in this area, so this page separates them layer by layer and then gathers everything into two reference tables.

Why terrestrial timers break over satellite

💡

In plain words: a timer is like an egg-timer you start when you ask a question, expecting an answer before it dings. Set it for a chat across the kitchen and it works. Use the same egg-timer to talk to someone on the far side of the planet, whose reply takes half a second to arrive, and it dings every single time — not because they never answered, but because you gave them no time to. NTN either buys a longer egg-timer (extended ranges) or waits to ask until the answer can physically come back (K_offset).

A timer is a bet on how long a legitimate response can take. Size it just above the worst-case terrestrial round trip and it fires only on genuine failures. Move the same bet to a link whose round trip is a hundred or a thousand times longer and it fires constantly on successful exchanges — the response was always coming, it just had further to travel.

What

The full set of MAC, RLC, PDCP, and RRC timers and windows whose durations were implicitly tied to sub-millisecond RTT, plus the new cellSpecificKoffset that shifts uplink scheduling timing.

Why

Over an NTN RTT of tens to hundreds of milliseconds, an unscaled timer expires before the peer's reply can physically return, so the protocol falsely declares loss, contention failure, or radio-link failure on links that are working perfectly.

How

Rel-17 adds larger enumerated value ranges to the affected timers and defines K_offset — broadcast in SIB19 — to offset the uplink timing relationships so grants and their responses land in the future, not the past.

🎯

Two distinct fixes, don't conflate them: K_offset shifts the scheduling timing relationship (when an uplink transmission happens relative to the grant) so it is physically reachable across the delay. The extended timer ranges widen the windows so a legitimately delayed response is still accepted. NTN needs both.

MAC — K_offset and the access/HARQ timers

The MAC layer (TS 38.321) is where the round-trip problem bites first, because MAC drives random access and HARQ, both of which are tight request-response loops. The linchpin is cellSpecificKoffset (K_offset): it shifts the uplink scheduling timing relationships so that a grant received now points to an uplink slot far enough ahead to be reachable across the propagation delay. Without it, a grant would schedule an uplink transmission at a time that, once the delay is accounted for, has already passed. K_offset underpins both the random-access timing (see random access) and the timing-advance framework (see timing advance). A companion offset, kmac, shifts the downlink action timing for the same reason.

K_offset applies to the uplink timing relationships a UE otherwise derives from downlink control: the K2 gap from a DCI format 0_0/0_1 grant on PDCCH to the scheduled PUSCH, the gap from PDSCH to its HARQ-ACK on PUCCH, the RAR-grant-to-Msg3 timing, and the timing of aperiodic CSI and SRS. It is a cell-level value (1…1023 slots referenced to 15 kHz SCS, so up to ≈1 s), broadcast in SIB19, and it is added on top of the normal terrestrial timing gaps rather than replacing them — so a UE that already knows K2 simply adds K_offset before acting.

On top of that scheduling shift, several MAC timers and windows are given extended ranges. The random-access reply window ra-ResponseWindow and the ra-ContentionResolutionTimer must be long enough for Msg2/Msg4 to return across the link. The scheduling-request prohibit timer sr-ProhibitTimer and the BSR and PHR timers must not fire before a grant can come back. And the DRX HARQ round-trip timers drx-HARQ-RTT-TimerDL and drx-HARQ-RTT-TimerUL, together with drx-RetransmissionTimer, must be stretched so the UE does not start hunting for a retransmission before the real HARQ feedback has had time to arrive (see HARQ in NTN).

📄

Spec anchor: cellSpecificKoffset, kmac, and the scaled ra-ResponseWindow, ra-ContentionResolutionTimer, sr-ProhibitTimer, BSR/PHR timers, drx-HARQ-RTT-TimerDL/drx-HARQ-RTT-TimerUL, and drx-RetransmissionTimer are defined in TS 38.321, with the offset values broadcast via TS 38.331.

RLC and PDCP — protecting reliability over the delay

Above MAC, the ARQ and reordering timers matter more in NTN than on the ground, because when HARQ feedback is disabled or reduced (as it often is over long RTT — see HARQ in NTN), RLC Acknowledged Mode carries more of the reliability load. Its timers (TS 38.322) must be extended so ARQ does not falsely conclude that data is lost while it is merely in transit: t-Reassembly waits for a segmentation gap to fill, t-StatusProhibit paces how often status reports are sent, and t-PollRetransmit decides when an unacknowledged poll should be re-sent. Each must comfortably exceed the NTN round trip, or the transmitter will re-poll and the receiver will NACK data that was always going to arrive.

There is a second-order constraint here too: the RLC AM window itself. Because a poll and its status report take a full RTT to complete, far more PDUs sit unacknowledged in flight over a satellite than over a terrestrial cell, so the sequence-number space and the AM transmit/receive windows must be large enough that the window does not stall before a status report can advance it. Under-sized timers and an under-sized window produce the same visible symptom — throughput collapses as the transmitter waits — for different reasons.

PDCP (TS 38.323) has the same exposure at the packet level. Its discardTimer decides when a buffered SDU is dropped as too old, and t-Reordering decides how long to wait for an out-of-order packet before delivering past it. Both must be sized for the long one-way delay so that packets which are simply late — not lost — are neither discarded prematurely nor declared missing.

💡

Why this layer matters more in NTN: when HARQ is turned down, RLC AM becomes the primary retransmission mechanism. Its timers were never meant to absorb hundreds of milliseconds of RTT, so under-sizing them here turns a healthy long link into a storm of spurious retransmissions and dropped packets.

RRC and NAS — not declaring failure too early

The most visible failures are the RRC ones, because they abort a whole connection. The RRC timers (TS 38.331) that govern connection setup and radio-link failure are given extended enumerations for NTN so the UE does not give up while a message is still crossing the link. T300 guards the RRCSetupRequest — the wait for a setup response; T301 guards re-establishment; T304 guards handover completion. The radio-link-failure machinery is the subtlest: T310 runs after a run of out-of-sync indications (counted by N310), and is only stopped by enough in-sync indications (N311); T311 then bounds the re-establishment search. Over an NTN RTT, a healthy link can look momentarily out-of-sync simply because feedback is delayed, so T310/T311 (and the counters) are extended to keep a working satellite link from being torn down as a false radio-link failure. T319, guarding the resume request, is likewise widened.

The delay does not stop at the RAN. NAS and higher-layer timers on the core side must also tolerate the extra propagation — procedures like registration and their acknowledgements travel the same long path, so their guard timers need equivalent headroom (see NTN & the 5GC). The unifying picture is one master scheduling offset plus a family of widened windows.

🎯

The unifying idea: cellSpecificKoffset from SIB19 is the master offset for uplink scheduling timing; every individual timer simply gets a larger value range. One shifts when things are scheduled; the others widen how long the stack waits before crying failure.

Terrestrial vs NTN round trip against a fixed window

The clearest way to see the problem is to draw a fixed timer window and lay two round trips against it. On the ground the reply returns well inside the window. Over NTN the same reply returns long after an unscaled window would have expired — unless the window is widened and the uplink transmission is pushed out by K_offset so the exchange fits.

A fixed timer window vs terrestrial and NTN round trips terrestrial grant RTT reply NTN grant K_offset UL tx long RTT (tens–hundreds ms) reply unscaled window ends here — NTN reply not yet back window must grow to reach the NTN reply; K_offset shifts the UL tx forward
Figure 1. The same fixed window that comfortably catches a terrestrial reply expires before an NTN reply returns. NTN widens the window and inserts K_offset before the uplink transmission.
LayerTimer / windowWhy it must scale in NTN
MAC (TS 38.321)cellSpecificKoffset, kmacShift UL/DL scheduling timing so grants point to reachable slots, not past ones
MACra-ResponseWindow, ra-ContentionResolutionTimerMsg2/Msg4 return only after a full RTT; window must span it
MACsr-ProhibitTimer, BSR / PHR timersA grant cannot come back within a terrestrial-sized interval
MACdrx-HARQ-RTT-TimerDL/UL, drx-RetransmissionTimerHARQ feedback is delayed by the RTT; don't chase a retransmission too early
RLC (TS 38.322)t-Reassembly, t-StatusProhibit, t-PollRetransmitAM ARQ carries more load; must not falsely expire on in-flight data
PDCP (TS 38.323)discardTimer, t-ReorderingLate-not-lost packets must not be discarded or declared missing
RRC (TS 38.331)T300, T301, T304, T319Setup/re-establishment/handover replies cross the long link
RRCT310/N310/N311, T311Delayed feedback must not be mistaken for radio-link failure
NAS / corehigher-layer guard timersRegistration and its acks travel the same delay end to end
🔀

TN ↔ NTN: the timers themselves are the same 3GPP timers with the same names — NTN does not invent new ones, it adds larger enumerated values and one new offset. In TN, K2/PDSCH-to-HARQ gaps and every guard timer assume a <1 ms round trip, so the terrestrial enumerations top out low. In NTN the same fields gain extended ranges (and cellSpecificKoffset is layered on top of the scheduling gaps) sized for LEO tens-of-ms up to GEO ≈541 ms. A TN UE never applies K_offset at all; an NTN UE applies it to every uplink timing relationship.

Q&A Interview quickfire

Q. Why must these timers change for NTN at all?

A. They were sized for a sub-millisecond terrestrial round trip. Over an NTN RTT of tens (LEO) to hundreds (GEO) of milliseconds, an unscaled timer fires before a legitimate response can physically return, so the protocol falsely declares loss, contention failure, or radio-link failure on a link that is working. Rel-17 extends their value ranges and adds K_offset so timing relationships stay reachable.

Q. What is K_offset and where does the UE get it?

A. cellSpecificKoffset is the master uplink scheduling offset: it shifts the timing relationship between a grant and the uplink transmission it schedules so the transmission lands in the future rather than in the already-passed past. The UE reads it from SIB19. A companion kmac offsets downlink action timing.

Q. Which timers protect RLC AM when HARQ feedback is reduced?

A. t-Reassembly, t-StatusProhibit, and t-PollRetransmit in RLC (TS 38.322). With HARQ turned down, RLC AM becomes the primary retransmission mechanism, so these must exceed the NTN RTT or ARQ will spuriously re-poll and NACK data still in flight.

Q. Why extend T310 and T311?

A. T310 runs on repeated out-of-sync indications and leads to radio-link failure; T311 bounds the re-establishment search. Over an NTN RTT, delayed feedback can make a healthy link look momentarily out-of-sync, so extending them (and the N310/N311 counters) prevents a working satellite link from being torn down as a false failure.

What scales, and by how much — a reference

A layer-by-layer view of what NTN stretches and why. The master lever is cellSpecificKoffset (from SIB19); the individual timers gain larger value ranges in the Rel-17 ASN.1.

Layer / specTimer or offsetNTN change & why
MAC · TS 38.321cellSpecificKoffset (1…1023 slots @15 kHz)Master UL scheduling offset — up to ≈ 1 s, sized to cover GEO round trip (≈ 541 ms).
MAC · TS 38.321kmac (1…512)Downlink action-timing reference when common TA is not fully pre-compensated at the gNB.
MAC · TS 38.321ra-ResponseWindow, ra-ContentionResolutionTimerExtended to span the full RTT so the RAR / Msg4 are not missed (see NTN RACH).
MAC · TS 38.321drx-HARQ-RTT-TimerDL/UL, drx-RetransmissionTimerWidened so DRX does not expect (re)transmissions before the round trip elapses (see HARQ).
RLC · TS 38.322t-Reassembly, t-StatusProhibit, t-PollRetransmitMust exceed the RTT — RLC AM carries reliability when HARQ feedback is disabled.
PDCP · TS 38.323discardTimer, t-ReorderingEnlarged so packets in flight over the long delay are not discarded / falsely reordered.
RRC · TS 38.331T300, T301, T304, T310/N310/N311, T311, T319Extended enumerations so a healthy satellite link is not declared failed while a message is still in flight.

⚠ Common pitfalls / gotchas

  • Conflating K_offset with the timers. Widening ra-ResponseWindow without applying cellSpecificKoffset (or vice versa) fixes only half the problem — one makes the window long enough, the other makes the uplink land in a reachable slot. NTN needs both.
  • Forgetting the RLC AM window. Extending the RLC timers but leaving the AM transmit/receive window small still stalls throughput, because a full RTT of PDUs sits unacknowledged and the window closes before a status report can advance it.
  • Terrestrial DRX HARQ timers. Leaving drx-HARQ-RTT-TimerDL/UL at terrestrial values makes the UE wake to hunt for a retransmission before the real HARQ feedback could have arrived, burning battery and possibly triggering needless retransmissions.
  • Under-scaled T310. If out-of-sync detection is not relaxed for the NTN RTT, normal feedback delay reads as radio-link failure and a working satellite link is torn down and re-established in a loop.

Summary

NTN breaks terrestrial timers because it changes exactly one physical fact — the round trip — by two to three orders of magnitude, and almost every timer in the stack had that round trip baked into its range. Rel-17 fixes it with two clearly separated tools: cellSpecificKoffset (K_offset), the master uplink scheduling offset broadcast in SIB19 that pushes every uplink timing relationship into a reachable future slot; and a family of extended value ranges on the affected MAC, RLC, PDCP, RRC and NAS timers so a legitimately delayed reply is still accepted.

Walk it by layer and the pattern repeats: MAC widens the access windows (ra-ResponseWindow, ra-ContentionResolutionTimer) and the DRX HARQ timers; RLC widens t-Reassembly/t-StatusProhibit/t-PollRetransmit because AM carries more load when HARQ is turned down; PDCP widens discardTimer/t-Reordering; RRC widens the setup and RLF timers (T300/T301/T304/T310/T311/T319 and the N310/N311 counters); NAS widens its own guard timers end to end. The one-sentence takeaway: K_offset changes when, extended ranges change how long — and NTN needs both, at every layer.

Where the scaling connects

The offsets and widened windows on this page are consumed everywhere the link timing is tight. Follow K_offset into the timing framework, the HARQ turn-down that loads RLC, and the SIB that broadcasts the offset in the first place.