RObust Header Compression (ROHC): A Link-Layer Assisted Profile for IP/UDP/RTP
obsoleted by
- rfc-4362 — RObust Header Compression (ROHC): A Link-Layer Assisted Profile for IP/UDP/RTP
Extracted elements (30)
NHP can safely omit the CRC because the assisting layer already guarantees in-order delivery and provides explicit loss indication for every dropped packet, rendering the CRC's primary function (detecting long losses and corrupted sequence number LSBs) redundant. Residual bit errors also cannot damage a header that is not sent.
NHP is restricted to CID=0 because a no-header packet cannot carry a context identifier, making it impossible for the decompressor to associate an NHP with any stream other than the default context. This constraint is inherent to the zero-overhead design.
The ALWAYS_PAD parameter allows the lower layer to use ROHC padding octets as a leading sequence to distinguish RHP from NHP when the link protocol provides no dedicated packet-type field. This sacrifices RHP efficiency slightly but favors the more frequent NHP path.
The D-bit in the LLA IR packet is redefined (D=0 meaning payload discarded) rather than introducing a new packet type, minimizing protocol complexity by reusing an existing packet structure while enabling fast context initialization without consuming channel bandwidth on payload transmission.
The LLA profile's purpose is to match specific existing applications (e.g., speech vocoders) to specific existing link technologies (e.g., GERAN, CDMA2000) with minimal spectral efficiency loss—not to improve overall compression efficiency. Its additional complexity is justified only for these targeted use cases.
The LLA profile is not applicable when the UDP checksum (2 bytes) is enabled, which is always the case for IPv6/UDP. For IPv4/UDP, the sender may disable the UDP checksum to allow LLA use.
This document does not provide link-layer-specific operational information. Additional documents MUST specify how to implement the LLA profile over each link technology, accounting for specific link characteristics and defining how the optimistic approach is agreed.
A CCP MUST always be made available to the assisting layer. If the assisting layer receives CCPs with C=1, it MUST use the last CCP received (corresponding to the last non-CCP packet) whenever it chooses to send a CCP.
After an IR packet with D=0 has been processed by the decompressor, the packet MUST be discarded, as the payload was absent at the compressor side.
All documents describing LLA implementation over a specific link technology are REQUIRED to define how the optimistic approach is agreed between the compressing and decompressing sides.
An LLA compressor is not allowed to deliver NHP packets when operating in R-mode; NHP use is restricted to U/O-mode operation.
For NHP operation, the assisting layer MUST guarantee in-order delivery over the link and MUST provide a loss indication to the decompressor for each packet lost over the link, replacing the sequence number and CRC functions of normal ROHC headers.
If a decompressor receives a CSP with two non-equal CID values, the packet MUST be discarded. After a CSP has been received and processed, the packet including any data following the encapsulated compressed header MUST be discarded.
NHP packets can only be used for CID=0. If multiple packet streams are handled, the assisting layer MUST be able to indicate when packets with CID=0 have been lost on the physical link.
Periodic context verification SHOULD be performed—it is RECOMMENDED to periodically send context updating packets even when the compressor logic allows NHP packets—to catch unexpected errors including faulty implementations.
The agreed optimistic approach principles MUST be enforced not only by the compressor but also by the transmitting assisting layer. An LLA decompressor MUST use optimistic approach knowledge to detect context loss; if suspected, it MUST invalidate the context and not forward packets before resynchronization.
The assisting layer MUST provide packet type identification to allow the decompressor to distinguish NHP packets from RHP packets, since NHP carries no header type indicator of its own.
The decompressor is REQUIRED to handle a CCP with C=1 by applying the received CRC to the last decompressed packet (unless a prior loss indication was received). Upon CRC failure, the decompressor MUST take actions as specified in RFC 3095 section 5.3.2.2.3. A CCP with C=0 MUST be ignored.
The decompressor MUST receive from the assisting layer: (1) a loss indication for each packet lost over the link for CID=0, and (2) each received packet together with an indication of whether it is an NHP or not.
The RTP sequence number MUST be delivered for each packet by the compressor to the assisting layer to allow it to maintain the sequencing information needed for NHP operation.
When LARGE_PACKETS_ALLOWED is FALSE and a packet exceeds all preferred packet sizes, the ROHC segmentation scheme MUST be used and each segment MUST be padded to fit a preferred size. When TRUE, the compressor MUST deliver the larger packet as-is and MUST NOT use segmentation.
The LLA profile (profile 0x0005) extends ROHC RTP (profile 0x0001) by adding three new packet types—NHP, CSP, and CCP—and defining interfaces toward an assisting lower layer, enabling complete header elimination for most packets during optimal operation.
The No-Header Packet (NHP) is a payload-only packet with no compressed header, used when all header fields are either unchanged or follow the established change pattern. NHP can only be used for CID=0 and is not allowed in R-mode. It updates the RTP Sequence Number context.
IANA has reserved ROHC profile identifier 0x0005 for the IP/UDP/RTP link-layer assisted profile (LLA) defined in this document.
All security considerations from ROHC RTP (RFC 3095 section 7) apply. An additional threat is a denial-of-service attack where an intruder injects bogus CCP packets with random CRC values onto the link, causing spurious context invalidation, unnecessary feedback messages, and refresh packets, significantly degrading compression efficiency.
The assisting layer MAY send an NHP for RTP SN=X only if (a) an NHP was delivered by the LLA compressor AND (b) the decompressor has the means to infer sequencing for SN=X-1 AND has received either a loss indication or the packet itself for SN=X-1. This two-condition gate governs the transition from RHP transmission to header-free operation.
For the LLA profile, the D-bit of the ROHC RTP IR packet is redefined: D=0 means the dynamic chain is absent and the payload has been discarded (fast context initialization); D=1 retains the standard meaning of dynamic chain and payload present.
The Context Check Packet (CCP) has a one-octet type identifier (0xFB = 11111011) followed by a second octet containing a C-flag (bit 0) and a 7-bit CRC field. C=1 indicates a valid CRC calculated over the original uncompressed header per RFC 3095 section 5.9.2; C=0 means the CRC field is unused. CCP does not update context.
The Context Synchronization Packet (CSP) carries a one-octet packet type identifier (0xFA = 11111010) followed by a ROHC header without padding as defined in RFC 3095 section 5.7. It maintains the updating properties of the encapsulated ROHC header.
The CV-REQUEST feedback option uses Opt Type=8 and Opt Len=0 (two 4-bit fields encoded in a single octet). It is sent by the decompressor to request an RRP or CSP for context verification when only NHPs have been received for an extended period.