5G/NR  - Downlink Pre-emption

 

 

 

Downlink Pre-emption

A scheduler that serves eMBB and URLLC on the same carrier eventually has to overwrite an allocation it has already granted. It grants a large downlink allocation, and then an urgent packet arrives that cannot wait for the next slot. The only resources fast enough are the ones already allocated. So the gNB transmits over them and repairs the damage afterwards. I found this feature strange until I stopped reading it as a scheduling mechanism. It is not one. It is a HARQ repair mechanism, and everything below follows from that.

Executive Summary

Area

Main topics

Summary

Implication

Problem

eMBB and URLLC on one carrier

An urgent packet arrives after the scheduler has already committed the resources

The gNB transmits over an allocation it already granted

Mechanism

puncturing, and DCI format 2_1

The URLLC data replaces eMBB resource elements, and the affected UEs are told afterwards

The indication is reactive, so only the retransmission benefits

Signalling

INT-RNTI, Type3 common search space

One group-common DCI carries up to 126 bits, and each UE reads its own 14 bits

Each UE needs its own positionInDCI in that payload

Granularity

timeFrequencySet

14 bits split the reference region into 14 time parts, or into 7 time parts and 2 frequency parts

The indication names a region, and never a list of resource elements

UE behaviour

HARQ soft buffer

The UE may assume nothing was sent in the indicated parts

Without it, the first transmission poisons the combined result

Configuration

DownlinkPreemption in RRC

int-RNTI, timeFrequencySet, dci-PayloadSize, and one entry per serving cell

The feature is optional and configured per UE

Uplink twin

DCI format 2_4

Uplink cancellation stops a transmission before it starts

The uplink case is preventable, and the downlink case is not

What problem does downlink pre-emption solve ?

Start with the timing, because the timing is the whole problem. A downlink grant is decided at the start of a slot, and an eMBB PDSCH may occupy most of that slot. A URLLC packet that arrives one symbol later cannot wait for the next scheduling opportunity. Its latency budget is measured in a fraction of a millisecond.

The scheduler therefore has two choices, and only one of them is fast. It can wait, and miss the latency target. Or it can transmit the urgent data on resources that are already allocated to somebody else. The second choice is what NR calls pre-emption, and it is a deliberate collision.

An eMBB allocation with a URLLC transmission punched into it One allocation, two UEs, and only one of them knows frequency (PRBs) eMBB PDSCH allocation for this UE URLLC PDSCH for another UE time (OFDM symbols) The gNB overwrites part of the eMBB allocation with an urgent transmission. The eMBB UE was never told in advance, so it demodulates noise on those resource elements. Its log-likelihood ratios for that region are wrong, and combining them would damage the retransmission.

Figure 1. Pre-emption is not a scheduling decision that involves the eMBB UE. It is a decision taken after that UE has already been told what to expect.

Notice what the eMBB UE knows at this point, which is nothing. It was given a grant, and it demodulates the whole allocation as if the grant still held. Across the pre-empted region it recovers noise, and it has no way to tell that region from a deep fade.

  • Pre-emption is a collision by design : The gNB knowingly transmits one UE's data over another UE's allocation. Nothing is negotiated, and nothing is renegotiated.
  • The cause is latency, not capacity : A scheduler with spare resources and no deadline would never do this. It is the deadline that removes the alternatives.
  • It is always the slower service that is interrupted : eMBB tolerates a retransmission and URLLC does not. That asymmetry is what makes the trade acceptable.
  • The indication cannot prevent anything : By the time the UE can be told, the symbols have already been transmitted. The mechanism exists to limit the damage.

Why does the UE have to be told after the fact ?

This is the part I had backwards for a long time. I assumed the indication existed so the UE could decode the current transmission better. It cannot. That transport block is already lost, and no signalling recovers it. The indication exists to protect the next one.

HARQ in NR is soft combining. The UE keeps the log-likelihood ratios from a failed transmission, and it adds them to the ratios from the retransmission. Two weak copies of the same coded bits then make one strong copy. The method assumes that every stored ratio is a noisy observation of the transmitted bit.

Pre-emption breaks that assumption. Across the pre-empted region the stored ratios are not noisy observations of anything. They describe a different UE's data. They are also confident, because the interfering signal is strong rather than weak. Combining them therefore biases the decoder towards the wrong answer, and it does so with weight.

So the retransmission can fail even though it arrived cleanly. That is the failure the indication prevents. 38.213 states it as an assumption rather than as an instruction. The UE may assume that no transmission to it was present in the indicated parts. A sensible receiver then discards those ratios instead of combining them.

  • The current transport block is already lost : No signalling recovers it. The indication is about the retransmission and nothing else.
  • Confident wrong data is worse than no data : A pre-empted resource element carries a strong signal that means something else. Its log-likelihood ratio is large and it points the wrong way.
  • The spec gives an assumption, not an algorithm : 38.213 says the UE may assume nothing was sent there. What the receiver does with its soft buffer is implementation.
  • This is why the feature is optional : A UE that never combines across transmissions gains nothing from it. The gain exists only in the HARQ buffer.

How is the pre-emption indication configured ?

DownlinkPreemption is used to configure the UE to monitor PDCCH for the INT-RNTI (interruption). Four things have to be agreed before any of it works. Which RNTI to watch, how the 14 bits are laid out, how long the whole DCI is, and where inside it this UE should look.

The last one is the interesting one. DCI format 2_1 is group-common, so a single transmission serves many UEs at once. Each UE is given an offset into the shared payload, and it reads only its own 14 bits. That is what positionInDCI is for, and it is configured per serving cell.

Field

What it does

int-RNTI

the RNTI that scrambles the CRC of DCI format 2_1, shared by every UE in the group

timeFrequencySet

selects how the 14 bits divide the reference region, as set0 or set1

dci-PayloadSize

the total length of the DCI, up to 126 bits, which is 9 indications of 14 bits

int-ConfigurationPerServingCell

one entry per serving cell, each carrying a servingCellId and a positionInDCI

positionInDCI

the bit offset at which this UE's own 14 bits begin

The RRC definition is short, and it is reproduced below.

DownlinkPreemption ::=                      SEQUENCE {

    int-RNTI                                RNTI-Value,

    timeFrequencySet                        ENUMERATED {set0, set1},

    dci-PayloadSize                         INTEGER (0..maxINT-DCI-PayloadSize),

    int-ConfigurationPerServingCell         SEQUENCE (SIZE (1..maxNrofServingCells))

                                                OF INT-ConfigurationPerServingCell,

    ...

}

 

INT-ConfigurationPerServingCell ::=         SEQUENCE {

    servingCellId                           ServCellIndex,

    positionInDCI                           INTEGER (0..maxINT-DCI-PayloadSize-1)

}

Taken from TS 38.331 v17.7.0. The IE is unchanged since Rel-15, and no release up to Rel-19 has added a field to it.

The extension marker at the end matters less than it looks. A later release can add fields after it without changing anything above. So far none has. What the later releases did instead was copy the pattern into new features. Availability indication for DCI format 2_5 has positionInDCI-AI-r16. Uplink cancellation for DCI format 2_4 has its own positionInDCI-r16. Cell DTX for DCI format 2_9 has positionInDCI-cellDTX-r18. Downlink pre-emption is the Rel-15 original that all of them follow.

The DCI itself is monitored in a Type3 common search space, alongside the other group-common formats. Its size is not derived from a field list, unlike a scheduling DCI. It is configured directly, which is why dci-PayloadSize exists at all.

  • One DCI serves a group : INT-RNTI is shared. The gNB sends one transmission and every configured UE decodes the same bits.
  • positionInDCI is what makes sharing work : Without an offset per UE, a group-common payload would have no way to address anyone inside it.
  • The payload size is configured, not derived : Group-common DCIs carry no field list to compute a length from, so RRC states the length.
  • It is per serving cell : int-ConfigurationPerServingCell has one entry per cell, so a UE with carrier aggregation reads several regions from one DCI.
  • The IE has not changed since Rel-15 : Every later group-common DCI copied the same shape, and each of those carries a release-suffixed field of its own. This one never needed one.
  • Monitoring costs power : The UE has to decode an extra PDCCH candidate set on every monitoring occasion, whether or not anything was pre-empted.

How does the UE read the 14 bits ?

Fourteen bits is a very small budget for a region that may span a whole bandwidth part. The design accepts that, and gives the resolution to time rather than to frequency. You will see the indication described as telling the UE which resource elements were pre-empted. It does not. It names a part of a region, and the parts are large.

The region has to be defined before the bits mean anything. In time it is the monitoring periodicity of the search space where DCI format 2_1 is monitored. In frequency it is the active downlink bandwidth part. The 14 bits then divide that rectangle, and timeFrequencySet decides how.

How the 14 bits of a pre-emption indication are partitioned The same 14 bits, partitioned two ways timeFrequencySet = set0 timeFrequencySet = set1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 14 time parts, 1 frequency part 7 time parts, 2 frequency parts time time The reference region is the monitoring periodicity of the DCI format 2_1 search space in time, and the active downlink BWP in frequency. A bit set to 1 means the UE may assume that nothing was transmitted to it in that part.

Figure 2. The choice is between resolution in time and resolution in frequency. set0 puts all fourteen bits on time. set1 halves that resolution, and in return the UE learns which half of the band was affected.

The two options suit different deployments. A cell where URLLC traffic takes narrow allocations across the whole band gains little from frequency resolution. A cell where URLLC is confined to part of the carrier gains a great deal. The shorter the monitoring periodicity, the smaller each time part becomes, so the choice interacts with the search space configuration.

  • The reference region is not fixed : It follows the monitoring periodicity and the active bandwidth part. Change either and every bit means something different.
  • set0 gives time resolution only : Fourteen time parts and one frequency part. The UE learns when, and it assumes the whole band.
  • set1 gives some frequency resolution : Seven time parts and two frequency parts. The UE learns roughly when and which half.
  • A set bit is an assumption, not a measurement : It tells the UE it may assume nothing was sent to it there. It does not describe what was sent instead.
  • Coarse indication costs throughput : A part that is only partly pre-empted is discarded whole. Good soft information is thrown away with the bad.

What are the limits of the mechanism ?

You will see pre-emption described as a way to protect eMBB throughput. It protects it a little, and late. Every limit below has the same source. The indication arrives late, and it says little. None of them is a defect. They are the cost of a feature that has to work without changing anything the scheduler already did.

The first limit is timing. The indication refers to a region that has already been transmitted, so the first transport block cannot be recovered. The second is granularity. One bit covers a part that may be several symbols wide and half a bandwidth part tall. The third is scope. Pre-emption indication tells a UE that resources were taken, and never why, and never by whom.

There is also a limit that is easy to miss. The mechanism protects HARQ combining, so it helps only where combining happens. A transmission that is not retransmitted gains nothing. Neither does one that is retransmitted with a different redundancy version and decoded on its own.

  • It is reactive by construction : The UE cannot be warned in advance, because the gNB decides after the grant has been sent.
  • Granularity is coarse and configurable : The time part follows the monitoring periodicity, so faster monitoring gives finer parts and costs more UE power.
  • It protects the retransmission only : The benefit appears in the second decode. The first one is already lost when the indication arrives.
  • It says nothing about the cause : The UE learns that a region is unreliable. It does not learn that URLLC took it, and it does not need to.

How does it compare with uplink cancellation ?

The uplink has the same collision and a better answer. In the downlink the gNB is the transmitter, so by the time it decides to pre-empt, it can act immediately and tell the affected UE later. In the uplink the UE is the transmitter, so the gNB can reach it before it starts. That single difference is why one mechanism reports and the other prevents.

DCI format 2_1

DCI format 2_4

Direction

downlink

uplink

RNTI

INT-RNTI

CI-RNTI

Timing

after the resources were used

before the UE transmits

What the UE does

discards the affected soft information

does not start, or stops, its transmission

What it protects

the eMBB HARQ combining

the URLLC uplink transmission

Introduced in

Rel-15

Rel-16

Reading the two together makes each one clearer. Uplink cancellation costs the eMBB UE a whole transmission, and it protects the urgent one completely. Downlink pre-emption costs the eMBB UE part of a transport block, and it protects nothing at the time. Both are the best available answer given who holds the transmitter.

  • The direction decides the design : The node that transmits is the node that can act in time. In the downlink that is the gNB, and the UE is only informed.
  • One reports and one prevents : DCI 2_1 describes the past. DCI 2_4 changes the future, and its timing requirement is far tighter.
  • Both are group-common : Each uses its own RNTI and a configured position in a shared payload, for the same reason.
  • They solve one problem from two ends : A network running URLLC beside eMBB usually configures both, because the collision happens in both directions.

Reference

38.213 clause 11.2 defines the UE behaviour and the reference region. 38.212 clause 7.3.1.3.2 defines the DCI format itself. 38.331 carries the DownlinkPreemption configuration reproduced above.

[1] 3GPP TS 38.213 : NR; Physical layer procedures for control

[2] 3GPP TS 38.212 : NR; Multiplexing and channel coding

[3] 3GPP TS 38.331 : NR; Radio Resource Control (RRC) protocol specification

[4] 3GPP TS 38.214 : NR; Physical layer procedures for data