Home / 5G / Protocols / PDCP / ROHC Header Compression

ROHC Header Compression in NR PDCP

In NR PDCP, Robust Header Compression (ROHC) is the header-compression method used for IP traffic when configured by upper layers. This page is the PDCP-facing ROHC reference for supported profiles, ROHC channel parameters, compression and decompression flow, DAPS behavior, and interspersed ROHC feedback.

Use it to check where ROHC applies, which bearer types can use it, how the ROHC channel is configured, how ROHC compressed packets relate to PDCP SN and COUNT, how decompression is sequenced relative to PDCP deciphering, and how interspersed ROHC feedback is transported in PDCP Control PDUs.

ROHC page Profiles and config Compression flow Feedback and DAPS ROHC and EHC

Quick facts

Technology 5G NR
Topic ROHC configuration, compression, decompression, feedback, and DAPS handling in PDCP
Main spec areas TS 38.323 sections 5.7, 6.2.3.2, and 5.12.7
ROHC scope Configured header compression for PDCP entities carrying user-plane data
Feedback scope Interspersed ROHC feedback carried as PDCP Control PDU without PDCP SN association
DAPS scope Source-cell versus target-cell ROHC handling with one compressor and up to two decompressor instances
Key parameters MAX_CID, LARGE_CIDS, PROFILES, FEEDBACK_FOR, and MRRU

Contents

  1. Introduction to ROHC Header Compression
  2. What This Page Covers
  3. Where ROHC Sits in the PDCP Function Chain
  4. Supported ROHC Protocols and Profiles
  5. ROHC Configuration in NR PDCP
  6. ROHC Channel and Protocol Parameters
  7. Header Compression Using ROHC
  8. Header Decompression Using ROHC
  9. Interspersed ROHC Feedback in PDCP
  10. ROHC and DAPS Handover
  11. ROHC Interaction With EHC
  12. What This Page Does Not Cover in Detail
  13. References
  14. FAQ
  15. Related PDCP Pages

Introduction to ROHC Header Compression

ROHC belongs to the PDCP user-plane header-compression view. It is not the full ROHC algorithm reference from the RFCs. Instead, this page keeps the focus on how ROHC appears inside PDCP: how it is configured, where it sits in the transmit and receive chain, how it relates to PDCP SN and COUNT, and how feedback is carried in PDCP Control PDUs.

This is the page to open when the question is “how does ROHC behave inside PDCP?” rather than “how does the full RFC algorithm work internally?” For Control PDU field structure, continue into PDU formats, SN, COUNT, and parameters.

What This Page Covers

Area Main meaning
Supported ROHC profiles Which profile identifiers are supported from the PDCP point of view.
ROHC configuration in PDCP Which PDCP entities can use ROHC and how ROHC instances are scoped.
ROHC channel parameters How the ROHC channel model works and what the key ROHC parameters mean.
Compression and decompression flow How ROHC fits into the PDCP transmit and receive chains.
Interspersed ROHC feedback How feedback is carried in PDCP Control PDUs and how it is handled operationally.
DAPS and EHC interaction How ROHC changes under DAPS and when ROHC and EHC are both configured.

Where ROHC Sits in the PDCP Function Chain

From the PDCP point of view, header compression is a transmit-side PDCP function and header decompression is the corresponding receive-side function. That means ROHC should be read in the same chain as ciphering and deciphering, PDCP header handling, and delivery toward upper layers.

The DAPS case adds a useful complication: PDCP may need separate source-cell and target-cell ROHC handling, which is why DAPS appears again later as its own focused section.

Transmit side Header compression inside PDCP Receive side Deciphering then header decompression

Supported ROHC Protocols and Profiles

The PDCP specification references the ROHC framework and names the supported ROHC profile identifiers, but it does not become the full implementation guide for the ROHC framework itself. For this page, the useful reference view is simply which profile identifiers exist and what protocol family each one represents.

Profile identifier Profile meaning Reading note
0x0000 No compression Reserved non-compression profile inside the ROHC framework context.
0x0001 RTP/UDP/IP Classic RTP over UDP over IP compression profile.
0x0002 UDP/IP UDP over IP profile without RTP-specific assumptions.
0x0003 ESP/IP ESP over IP profile.
0x0004 IP IP-only profile.
0x0006 TCP/IP TCP over IP profile.
0x0101 RTP/UDP/IP Additional supported RTP/UDP/IP profile identifier.
0x0102 UDP/IP Additional supported UDP/IP profile identifier.
0x0103 ESP/IP Additional supported ESP/IP profile identifier.
0x0104 IP Additional supported IP-only profile identifier.

ROHC Configuration in NR PDCP

ROHC is an upper-layer configured PDCP behavior, mainly for user-plane PDCP entities. In practice, that means the reader should identify whether the PDCP entity belongs to a DRB, an MRB, or a sidelink DRB carrying IP SDUs, and then check whether ROHC was configured for that entity.

In traces and decoded configuration, this usually appears under RRCReconfiguration or the wider RRC configuration view rather than inside a PDCP PDU itself.

Configuration case Main meaning Reading note
DRBs and MRBs PDCP entities associated with DRBs and MRBs can be configured by upper layers to use ROHC. The page should be read as PDCP behavior, not as a full RRC decoder.
User-plane PDCP entities Each PDCP entity carrying user-plane data may be configured to use ROHC. ROHC is not a general all-bearer PDCP default.
Sidelink DRBs for IP SDUs Sidelink DRBs can be configured to use ROHC for IP SDUs. This matters only for IP SDU cases, not generic sidelink payloads.
Non-DAPS case At most one compressor and one decompressor are used for the PDCP entity. This is the normal one-direction-per-side reading.
DAPS bearer case At most one compressor and up to two decompressor instances are used. This is the main ROHC-specific DAPS difference.
Upper-layer hooks Configuration names such as maxCID, profiles, and sl-RoHC-Profiles come from upper layers. Use the RRC page when you need the configuration source rather than the PDCP behavior.

Example

A compact RRCReconfiguration dump is the clearest way to show how ROHC is configured by upper layers. The exact ASN.1 tree depends on the full bearer setup, but the ROHC-related knobs appear in the pdcp-Config branch rather than in PDCP runtime signaling.

RRCReconfiguration
  radioBearerConfig
    drb-ToAddModList
      DRB-ToAddMod
        drb-Identity = 4
        cnAssociation = sdap-Config
        pdcp-Config
          pdcp-SN-SizeUL = len18bits
          pdcp-SN-SizeDL = len18bits
          rohc
            maxCID = 15
            profiles = {
              profile0x0001,   -- RTP/UDP/IP
              profile0x0002,   -- UDP/IP
              profile0x0006    -- TCP/IP
            }
        reorderingTimer = ms50
        discardTimer = ms150
    securityConfig
      keyToUse = master

Read that dump as: this DRB is configured to use ROHC, the allowed ROHC context space is limited by maxCID, the supported ROHC profiles are named explicitly, and the same PDCP entity also carries its PDCP SN, reordering, discard, and security-side context from the surrounding RRC configuration.

ROHC Channel and Protocol Parameters

The ROHC channel model is one of the most important things to anchor early: the ROHC channel is unidirectional. From there, the key parameters are MAX_CID, LARGE_CIDS, and PROFILES, plus two useful boundary notes: FEEDBACK_FOR is not used directly here, and MRRU is not used because ROHC segmentation is not used.

Parameter Configured or inferred Source Meaning in PDCP context Notes
ROHC channel model Defined by behavior PDCP procedure context ROHC channel is unidirectional. If rohc is configured, one channel exists for downlink and one for uplink.
uplinkOnlyROHC Configured behavior Upper layers Only one ROHC channel exists for uplink. This changes the number of channels, not the ROHC fundamentals.
MAX_CID Configured Upper layers Mandatory ROHC context-space size parameter. One CID value is always reserved for uncompressed flows.
LARGE_CIDS Inferred Derived from MAX_CID Becomes TRUE when MAX_CID is greater than 15. Not configured directly.
PROFILES Configured Upper layers Mandatory configured set of supported ROHC profiles. This determines which profile identifiers the PDCP entity can use.
FEEDBACK_FOR Conceptual only here ROHC framework concept Exists conceptually but is not used directly in this specification. Treat it as a boundary note, not an active PDCP tuning knob.
MRRU Not used ROHC framework concept ROHC segmentation is not used here. That is why MRRU is not used in this PDCP treatment.

Header Compression Using ROHC

On the transmit side, ROHC can produce two kinds of output: ROHC compressed packets that are associated with one PDCP SDU, and interspersed ROHC feedback that is not associated with a PDCP SDU. This distinction matters because the compressed-packet path keeps the same PDCP SN and COUNT as the related PDCP SDU, while the feedback path does not use a PDCP SN association.

Compression item Main meaning
ROHC compressed packets Each ROHC compressed packet is associated with one PDCP SDU.
Interspersed ROHC feedback Standalone packets not associated with a PDCP SDU are interspersed ROHC feedback.
PDCP SN and COUNT relationship A ROHC compressed packet uses the same PDCP SN and COUNT as the related PDCP SDU.
SDAP scope note ROHC is not applicable to the SDAP header or SDAP Control PDU if they are included in the PDCP SDU.
DAPS transmit choice For DAPS bearers, ROHC compression uses the source-cell or target-cell ROHC protocol depending on the cell used for transmission.
PDCP SDU ROHC compressed packet Interspersed feedback Same PDCP SN and COUNT No PDCP SN association

Header Decompression Using ROHC

On receive, the key ordering point is simple: ROHC decompression is applied after deciphering. That makes ROHC a receive-side step inside the wider PDCP receive chain, not a separate path detached from PDCP security handling.

Decompression item Main meaning
Receive-chain position ROHC decompression is applied in the PDCP receive path after deciphering.
Security relationship ROHC decompression should be read after PDCP deciphering rather than before it.
SDAP scope note ROHC decompression is not applicable to the SDAP header or SDAP Control PDU if present.
DAPS receive choice For DAPS bearers, decompression uses the source-cell or target-cell ROHC protocol depending on from which cell the PDCP SDU is received.

Interspersed ROHC Feedback in PDCP

Interspersed ROHC feedback is the most important Control-PDU-side ROHC topic. The feedback is carried as a PDCP Control PDU, submitted without PDCP SN association and without ciphering, then delivered on reception without deciphering.

If you need the field layout behind that behavior, continue into the PDCP format page. This page stays on the procedure meaning rather than duplicating the field map.

ROHC and DAPS Handover

DAPS is worth reading separately because ROHC behavior changes with the source-cell versus target-cell split. The transmit-side compressor selection follows the uplink data-switching point, while the receive side may keep up to two decompressor instances.

DAPS ROHC item Main meaning
Source-cell handling before uplink data switching Before uplink data switching, DAPS bearer compression uses the source-cell ROHC protocol.
Target-cell handling after uplink data switching After uplink data switching, DAPS bearer compression uses the target-cell ROHC protocol.
Compressor-instance view DAPS still uses at most one compressor instance at a time from the transmit-side perspective.
Decompressor-instance view DAPS can use up to two decompressor instances on the receive side.
Downlink target-cell IR-state note For downlink, the target-cell ROHC protocol should maintain IR state in U-mode or O-mode during DAPS handover before source-cell release.

ROHC Interaction With EHC

When ROHC and EHC are both configured, the useful PDCP-side rule is short: the ROHC header is located after the EHC header in the PDCP Data PDU. For non-IP Ethernet packets, the EHC compressor or decompressor bypasses the ROHC compressor or decompressor.

This page keeps that interaction compact because the dedicated EHC page is not yet part of the site. For now, treat this section as the boundary note for simultaneous ROHC and EHC configuration.

What This Page Does Not Cover in Detail

References

FAQ

What is ROHC in NR PDCP?

ROHC in NR PDCP is the configured header-compression method used for IP traffic in user-plane PDCP entities when enabled by upper layers.

Which NR PDCP entities can use ROHC?

PDCP entities carrying user-plane data can use ROHC, including configured DRB and MRB cases, plus sidelink DRB cases for IP SDUs.

What ROHC profiles are supported?

The supported profile identifiers include no-compression, RTP/UDP/IP, UDP/IP, ESP/IP, IP, and TCP/IP profile identifiers listed in the PDCP specification.

Is the ROHC channel unidirectional?

Yes. The ROHC channel is unidirectional. When rohc is configured there is one channel for downlink and one for uplink, while uplinkOnlyROHC creates only one uplink channel.

Are interspersed ROHC feedback packets ciphered?

No. Interspersed ROHC feedback is sent as a PDCP Control PDU without PDCP SN association and without ciphering, and it is received without deciphering.

How does ROHC behave for DAPS bearers?

For DAPS bearers, ROHC uses source-cell or target-cell configuration depending on the transmission or reception side and the uplink data-switching state.

What happens when ROHC and EHC are both configured?

When ROHC and EHC are both configured, the ROHC header sits after the EHC header in the PDCP Data PDU, and non-IP Ethernet packets bypass the ROHC compressor and decompressor.