Summary

  • RFC 3408 let R-mode replace one specific ROHC packet, R-0, with a No-Header Packet only when an assisting layer could supply the missing packet-type and sequence evidence.
  • The saving was conditional: once sequence reconstruction became unsafe, header-free transmission had to stop until a later acknowledged update crossed the recorded break.

The economic pressure was oddly granular. On older radio interfaces, adding a single-octet ROHC header could push a voice packet into the next fixed packet size. RFC 3243 therefore framed zero-byte compression not as a universal efficiency technique but as a response for applications and links whose sizes happened to align. RFC 3242 supplied the U- and O-mode profile. RFC 3408 extended it to reliable R-mode.

“Zero byte” described the compressed header on the radio path, not the amount of protocol work. The omitted header had identified the packet and carried sequencing information. RFC 3242 required an assisting layer below ROHC to distinguish a No-Header Packet from a packet with a ROHC header, preserve the ordering assumption and report each relevant loss. Removing a field relocated its evidentiary duties.

RFC 3408 narrowed the operation further. Only an R-0 packet could become an NHP. At the receiver, the RTP sequence number was reconstructed from the last secure reference plus an offset. The standard deliberately left the offset mechanism to a link-specific implementation document. A system might count non-updating packets and explicit loss indications, or derive the offset from a maintained relationship between link timing and RTP sequence. Either way, the missing number had to come from somewhere observable.

That dependency created an explicit unsafe state. The compressor might still permit NHP while the assisting layer could no longer guarantee that the receiver would infer the right sequence. The assisting layer then recorded the relevant RTP number as SN_break and stopped emitting NHP. It could resume only after its ordinary safety rule became true again and the latest acknowledged sequence, SN_ACKed, had advanced beyond the break.

This was stricter than waiting for time to pass. R-mode relied on acknowledgements rather than the optimistic repetition used by U- and O-mode. A passive wait for the next context update could be long. RFC 3408 therefore recommended an optional request from the assisting layer to the compressor, asking that the next packet update context. If that request was lost between separately located components, the loss delayed renewed compression efficiency; it did not authorize a guessed restart.

The context boundary was carefully preserved. An NHP and its loss indications did not update compressor or decompressor context in R-mode. R-0 itself carried no CRC, so the CRC-replacement problem created by U/O-mode header removal did not arise. Periodic R-0-CRC packets at six-bit sequence wrap already provided context checking. The missing byte did not abolish secure references; it made their separation more visible.

Even feedback placement could close the zero-byte path. RFC 3408 discouraged interspersed feedback packets for ACKs because they interrupted RTP sequence continuity and temporarily disabled NHP transmission. An apparently harmless control-path choice changed whether the data path could safely omit its header.

The security consequence was mainly availability. An intruder able to inject bogus Context Check Packets with random CRC values could trigger false failures, context invalidation, feedback and refresh. The attack did not need to forge a voice packet's meaning; it could destroy the efficiency that justified the profile.

Later ROHC framework and ROHCv2 documents reorganized the wider architecture, while the IANA profile registry preserved the identifiers. None supplies a deployment outcome for RFC 3408. The historical contribution is the accounting rule: bytes disappear only when their functions reappear as obligations with owners, signals and recovery boundaries.

Sources