Uplink Data Switching and UDC in NR PDCP
In NR PDCP, uplink data switching and uplink data compression (UDC) are separate but related topics. Uplink data switching defines how a DAPS bearer moves pending uplink traffic from the source-cell path to the target-cell path. UDC defines how selected uplink user-plane PDCP SDUs on DRBs are compressed, how the UDC header is added, how feedback is handled, and how buffer synchronization is maintained.
Use this page to check DAPS-triggered uplink data switching, UDC configuration, UDC header placement, UDC packets, feedback PDUs, pre-defined dictionaries, and checksum-driven resynchronization. It stays centered on the PDCP procedure view, then links out to PDU formats, SN, and COUNT, security ordering, and the ROHC and EHC companion pages when needed.
Quick facts
| Technology | 5G NR |
|---|---|
| Topic | DAPS uplink data switching and uplink data compression (UDC) in PDCP |
| Main spec areas | TS 38.323 sections 5.13, 5.14, 6.2.3.4, and Annex B |
| Switching scope | Uplink data switching for DAPS bearers, with distinct AM DRB and UM DRB handling |
| UDC scope | DRB-oriented uplink data compression with one-byte UDC header and feedback Control PDU |
| Key config | bufferSize and optional pre-defined dictionary from upper layers |
| Key runtime rule | A UDC packet keeps the same PDCP SN and COUNT as the related PDCP SDU |
Contents
- Introduction to Uplink Data Switching and UDC
- What This Page Covers
- Where These Functions Sit in PDCP
- Uplink Data Switching
- Uplink Data Switching Example
- UDC Protocol
- Configuration of UDC
- Configuration Examples
- UDC Header
- UDC Packet and Header Examples
- Uplink Data Compression
- Compression Flow Example
- PDCP Control PDU for UDC Feedback
- UDC Feedback Example
- Pre-defined Dictionary Handling
- Dictionary Example
- UDC Buffer Reset Procedure
- UDC Checksum Error Handling
- Buffer Reset and Checksum Example
- Annex B Packet Reference
- What Should Stay Off This Page
- References
- FAQ
- Related PDCP Pages
Introduction to Uplink Data Switching and UDC
These two topics sit together well because both are uplink-side PDCP behaviors that affect how already-known PDCP SDUs are treated before or while they move toward lower layers. Uplink data switching is the DAPS-bearer path-move procedure. UDC is the DRB-oriented compression procedure that adds a UDC header, manages a compression buffer, and exchanges feedback.
This is the page to open when the question is “what happened to pending uplink PDCP traffic?” rather than only “what does this header field mean?” For field-level decoding, continue into the PDU format page.
What This Page Covers
| Area | Main meaning |
|---|---|
| Uplink data switching for DAPS bearers | How pending uplink traffic moves from the source-cell path to the target-cell path. |
| UDC protocol and DEFLATE basis | How uplink data compression is defined from the PDCP point of view. |
| DRB-level UDC configuration | Which DRBs can use UDC and how the compression buffer is initialized. |
| UDC header and packet structure | What the one-byte UDC header means and how UDC packets are shaped. |
| UDC feedback Control PDU | How UDC feedback is carried and handled in PDCP. |
| Dictionary, reset, and checksum handling | How UDC maintains buffer synchronization and recovers from mismatch. |
Where These Functions Sit in PDCP
Uplink data switching is a DAPS transmit-side procedure. UDC is a user-plane compression function. They belong together here because they both affect uplink processing before lower-layer submission, and both need to be read together with header compression, ciphering, and integrity ordering.
Uplink Data Switching
Uplink data switching is defined for DAPS bearers. The reader should separate the AM DRB and UM DRB cases, because the switching starting point is different. In both cases, pending uplink work is redirected toward the target-cell RLC entity while preserving the already associated COUNT values.
| Switching item | Main meaning |
|---|---|
| When switching is triggered | Uplink data switching starts when upper layers request it for a DAPS bearer. |
| Bearer scope | This procedure is defined for DAPS bearers. |
| AM DRB case | PDCP resumes from the first PDCP SDU whose corresponding PDCP Data PDU is not yet confirmed by the source-cell RLC entity. |
| UM DRB case | PDCP switches the pending PDCP SDUs already processed but not yet submitted to lower layers. |
| COUNT reuse | Already-associated PDCP SDUs keep the COUNT already associated with them. |
| Security and header treatment | Header compression, integrity protection, and ciphering are applied using the already-associated COUNT values before submission to the target-cell RLC entity. |
Uplink Data Switching Example
Example 1: AM DRB on a DAPS bearer
Initial condition
- UE has a DAPS bearer
- source-cell path is active
- some PDCP SDUs already have PDCP SN and COUNT
- delivery of some PDCP Data PDUs is not yet confirmed by the source-cell RLC entity
Trigger
- upper layers request uplink data switching
Illustrative PDCP behavior
- find the first PDCP SDU whose corresponding PDCP Data PDU is not yet confirmed by source-cell RLC
- retransmit or transmit all already-associated PDCP SDUs in ascending COUNT order toward the target-cell RLC entity
- apply header compression
- apply integrity protection and ciphering using the COUNT already associated with each PDCP SDU
- submit the resulting PDCP Data PDUs to lower layers Example 2: UM DRB on a DAPS bearer
Initial condition
- UE has a DAPS bearer using UM DRB
- some PDCP SDUs have been processed by PDCP but not yet submitted to lower layers
Trigger
- upper layers request uplink data switching
Illustrative PDCP behavior
- transmit the pending PDCP SDUs in ascending COUNT order toward the target-cell RLC entity
- apply header compression
- apply integrity protection and ciphering using the COUNT already associated with each PDCP SDU
- submit the resulting PDCP Data PDUs to lower layers UDC Protocol
UDC is the uplink data-compression topic on this page. It is based on DEFLATE with static Huffman coding and uses a small PDCP-facing packet model built around a 1-byte UDC header.
| UDC protocol item | Main meaning |
|---|---|
| DEFLATE basis | UDC is based on DEFLATE. |
| Static Huffman coding | UDC uses static Huffman coding in this PDCP context. |
| Byte alignment behavior | The UDC packet and header view should be read with byte-aligned PDCP treatment in mind. |
| Z_SYNC_FLUSH note | The procedure uses a bounded compression output behavior aligned with PDCP packetization. |
| Uplink-only reading | This page stays on uplink data compression, not a generic bidirectional compression model. |
Configuration of UDC
UDC is configured for DRBs by upper layers. The main things to check are the configured bufferSize and whether a pre-defined dictionary is present.
| Configuration case | Main meaning | Reading note |
|---|---|---|
| DRB applicability | UDC is configured for DRBs by upper layers. | This page keeps the focus on DRB-oriented UDC behavior. |
| Upper-layer configuration reference | The UDC controls such as bufferSize and optional pre-defined dictionary come from upper layers. | Treat this page as PDCP behavior, not a full RRC configuration decoder. |
| bufferSize configuration | bufferSize defines the compression-buffer context maintained by UDC. | This is one of the main operational settings to inspect. |
| Without pre-defined dictionary | The compression buffer is initialized to all zeros. | This is the baseline case. |
| With pre-defined dictionary | The compression buffer is first reset to all zeros and then the configured dictionary is prefixed into it. | The dictionary changes the starting compression context. |
Configuration Examples
Example 1: DRB with UDC enabled
bearerType: DRB
userPlaneData: true
uplinkDataCompression:
protocol: UDC
bufferSize: <configured by upper layers>
preDefinedDictionary: none
result:
- compression buffer is set to all zeros
- UDC compression function is applied to PDCP SDUs from upper layers on this DRB Example 2: DRB with UDC and pre-defined dictionary
bearerType: DRB
userPlaneData: true
uplinkDataCompression:
protocol: UDC
bufferSize: <configured by upper layers>
preDefinedDictionary: <configured by upper layers>
result:
- compression buffer is first reset to all zeros
- configured dictionary is then prefixed into the compression buffer Example 3: Editorial note
These are illustrative configuration patterns only. Keep actual ASN.1 and RRC field rendering on a separate configuration-reference page if needed.
UDC Header
The UDC header is the compact PDCP-side marker that tells the peer whether the payload is compressed, whether reset signaling is present, and which checksum information should be interpreted. It also shows where the UDC data starts relative to the PDCP header and optional SDAP header.
| Header field or role | Main meaning |
|---|---|
| One-byte UDC header | The UDC header is 1 byte long. |
| Compressed versus uncompressed indication | The header indicates whether the UDC payload is compressed or not. |
| Reset bit | The header carries reset signaling for buffer resynchronization. |
| Checksum bits | The header carries checksum-related signaling used for buffer mismatch detection. |
| Location relative to SDAP | The UDC header sits after the SDAP header if SDAP is configured. |
| Mismatch-detection role | The header helps the peer side detect buffer desynchronization. |
UDC Packet and Header Examples
Example 1: UDC packet with uncompressed payload
Illustrative UDC packet
[ UDC Header ][ original PDCP SDU payload ]
Header interpretation
- FU = 0
- payload is not compressed by UDC
- packet still belongs to one PDCP SDU Example 2: UDC packet with compressed payload
Illustrative UDC packet
[ UDC Header ][ DEFLATE-compressed data block ]
Header interpretation
- FU = 1
- payload is compressed by UDC
- checksum and reset signaling may be relevant Example 3: Header placement with SDAP
Illustrative PDCP Data PDU ordering
[ PDCP header ][ SDAP header if configured ][ UDC header ][ UDC data block ] Uplink Data Compression
The main reading rule is straightforward: one UDC packet is associated with one PDCP SDU, and that UDC packet keeps the same PDCP SN and COUNT as the related PDCP SDU. UDC is not applied to the SDAP header or SDAP Control PDU.
| Compression rule | Main meaning |
|---|---|
| One UDC packet per PDCP SDU | Each UDC packet is associated with one PDCP SDU. |
| Same PDCP SN and COUNT | The UDC packet keeps the same PDCP SN and COUNT as the related PDCP SDU. |
| Not applicable to SDAP header | UDC is not applied to the SDAP header if SDAP is configured. |
| Not applicable to SDAP Control PDU | UDC is not applied to the SDAP Control PDU. |
Compression Flow Example
Example 1: UDC compression path
PDCP SDU received from upper layers
→ UDC compression function checks buffer and dictionary context
→ UDC header is added
→ UDC data block is generated
→ resulting UDC packet keeps the same PDCP SN and COUNT as the related PDCP SDU
→ PDCP Data PDU is submitted to lower layers Example 2: Non-compressed UDC packet
PDCP SDU received from upper layers
→ UDC decides not to compress this packet
→ UDC header still indicates non-compressed packet
→ original payload is carried as the UDC data block PDCP Control PDU for UDC Feedback
UDC feedback is carried in a PDCP Control PDU applicable to AM DRBs. The useful receive-side rule is simple: the PDCP entity delivers the feedback directly to the UDC protocol without performing deciphering or integrity verification.
| Feedback area | Main meaning |
|---|---|
| When UDC feedback is used | UDC feedback is used when the receiver needs to inform the peer UDC side. |
| Receive-side handling | On reception, the PDCP entity delivers the UDC feedback directly to the UDC protocol. |
| No deciphering | The receiving PDCP entity does not perform deciphering on the UDC feedback Control PDU. |
| No integrity verification | The receiving PDCP entity does not perform integrity verification on the UDC feedback Control PDU. |
| Format | UDC feedback is carried in a PDCP Control PDU format defined for this purpose. |
| Bearer applicability | The UDC feedback Control PDU format is applicable to AM DRBs. |
UDC Feedback Example
Example feedback path
Step 1: A PDCP Control PDU carrying one UDC feedback item is received from lower layers.
Step 2: The receiving PDCP entity does not perform deciphering.
Step 3: The receiving PDCP entity does not perform integrity verification.
Step 4: The receiving PDCP entity delivers the UDC feedback directly to the UDC protocol. Mini format example
Illustrative PDCP Control PDU
[ D/C ][ PDU Type ][ FE ][ R ][ R ][ R ] Pre-defined Dictionary Handling
The dictionary view is about how the compression buffer is initialized and how that starting context evolves over time. The key things to check are which dictionary is configured, whether the dictionary fits inside the buffer, and how FIFO behavior eventually moves old dictionary content out.
| Dictionary item | Main meaning |
|---|---|
| Standard SIP/SDP dictionary | UDC can use the standard SIP/SDP pre-defined dictionary. |
| Operator-defined dictionary | UDC can use an operator-defined pre-defined dictionary. |
| One dictionary at most | At most one pre-defined dictionary is used for the compression buffer. |
| Tail insertion | The configured dictionary is inserted into the tail of the compression buffer. |
| FIFO behavior | As new uncompressed data enters, FIFO behavior eventually pushes older dictionary content out. |
| Large-dictionary case | If the dictionary is larger than the compression buffer, only the tail of the dictionary is inserted. |
Dictionary Example
Example 1: SIP/SDP dictionary case
Illustrative behavior
- UDC is configured with the standard SIP/SDP dictionary
- the dictionary is inserted into the tail of the compression buffer
- as more uncompressed data is processed, FIFO behavior eventually pushes the dictionary content out Example 2: Dictionary larger than buffer
Illustrative behavior
- configured dictionary size > compression buffer size
- only the tail of the dictionary is inserted into the compression buffer UDC Buffer Reset Procedure
Buffer reset is the controlled way to recover from compression and decompression buffer mismatch. The main point is that synchronization has to be restored explicitly, and after reset the first compressed PDU marks that new synchronized starting point.
| Reset item | Main meaning |
|---|---|
| Why synchronization matters | Compression and decompression buffers must stay synchronized for UDC to work correctly. |
| Reset trigger | UDC buffer reset is triggered when desynchronization is detected. |
| Reset-to-zero behavior | The compression buffer is reset to all zeros during reset handling. |
| First compressed PDU after reset | After reset, the FR field in the first compressed PDU is set to 1. |
UDC Checksum Error Handling
Checksum error handling is the main signal that the compression and decompression buffers have moved out of synchronization. That indication leads into the UDC buffer reset procedure.
| Checksum item | Main meaning |
|---|---|
| Checksum error meaning | A checksum error indicates that compression and decompression buffers are out of synchronization. |
| Out-of-synchronization indication | The mismatch is indicated through UDC checksum error handling. |
| Checksum-error notification | A UDC checksum error notification Control PDU is used to signal the mismatch. |
| Resulting action | The checksum mismatch triggers the UDC buffer reset procedure to resynchronize the peers. |
Buffer Reset and Checksum Example
Initial condition
- compression buffer and decompression buffer become unsynchronized
Detection
- UDC checksum error notification indicates mismatch
Illustrative behavior
- UE triggers UDC buffer reset procedure
- compression buffer is reset to all zeros
- after reset, the FR field in the first compressed PDU is set to 1 Annex B Packet Reference
Annex B is the supporting detail for the UDC packet and header model. Use it for the UDC header, UDC data block, FU, FR, and checksum bit details. This page keeps Annex B as supporting detail rather than making it the main backbone.
What Should Stay Off This Page
Generic PDCP SN and COUNT detail
Open the PDU format page when the question shifts from switching or UDC behavior to general PDCP field decoding.
Full ciphering and integrity procedure logic
Use the security page when the ordering around deciphering and integrity becomes the main topic rather than UDC itself.
ROHC procedure detail
Use the ROHC page when the question moves from UDC into the IP-oriented header-compression procedure family.
EHC procedure detail
Use the EHC page when the question moves into the Ethernet-oriented header-compression procedure family.
References
- ETSI TS 138 323 V18.5.0, NR PDCP specification
- 3GPP TS 38.331 V18.5.1, NR RRC configuration context for DAPS and UDC-related PDCP settings
FAQ
What is uplink data switching in NR PDCP?
Uplink data switching is the DAPS-bearer PDCP procedure that moves pending uplink traffic from the source-cell path to the target-cell path.
Which bearers use uplink data switching?
Uplink data switching is defined for DAPS bearers.
Which bearers can use UDC?
UDC is configured for DRBs by upper layers in this PDCP context.
What is bufferSize in UDC configuration?
bufferSize is the upper-layer configured size of the UDC compression buffer context.
Where is the UDC header placed in a PDCP Data PDU?
The UDC header is placed after the SDAP header if SDAP is configured.
Does a UDC packet keep the same PDCP SN and COUNT as the original PDCP SDU?
Yes. A UDC packet keeps the same PDCP SN and COUNT as the related PDCP SDU.
How is UDC feedback carried in PDCP?
UDC feedback is carried in a PDCP Control PDU applicable to AM DRBs.
What happens when a UDC checksum error is detected?
A checksum error indicates buffer desynchronization and triggers the UDC buffer reset procedure.