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.
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
- Introduction to ROHC Header Compression
- What This Page Covers
- Where ROHC Sits in the PDCP Function Chain
- Supported ROHC Protocols and Profiles
- ROHC Configuration in NR PDCP
- ROHC Channel and Protocol Parameters
- Header Compression Using ROHC
- Header Decompression Using ROHC
- Interspersed ROHC Feedback in PDCP
- ROHC and DAPS Handover
- ROHC Interaction With EHC
- What This Page Does Not Cover in Detail
- References
- FAQ
- 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.
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. |
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.
| Feedback area | Main meaning |
|---|---|
| Why it is a PDCP Control PDU | Interspersed ROHC feedback is carried as a PDCP Control PDU rather than a normal Data PDU. |
| Transmit operation | The transmitting PDCP entity submits the feedback PDU to lower layers without associating a PDCP SN and without performing ciphering. |
| Receive operation | The receiving PDCP entity delivers the feedback to the ROHC protocol without performing deciphering. |
| Bearer applicability | The interspersed ROHC feedback Control PDU format is applicable to UM DRBs, AM DRBs including sidelink DRBs for unicast, UM MRBs, and AM MRBs. |
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
Generic PDCP SN, COUNT, and Control PDU field definitions
Open the PDU format page when the question shifts from ROHC behavior to field-by-field PDCP structure.
Full PDCP ciphering and integrity procedures
Use the security page when the question becomes mainly about deciphering, protection, or security context rather than ROHC itself.
Full transmit and receive procedure flow
Use the runtime page when ROHC needs to be interpreted inside the broader transmit, reordering, and delivery path.
General PDCP service map
Use the services page when the question is about where header compression sits functionally rather than how ROHC behaves.
References
- ETSI TS 138 323 V18.5.0, NR PDCP specification
- 3GPP TS 38.331 V18.5.1, NR RRC configuration context for ROHC-related PDCP settings
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.