RohcCompressor Class Reference

Simu5G: RohcCompressor Class Reference
Simu5G
RohcCompressor Class Reference

#include <RohcCompressor.h>

Detailed Description

The ROHC compressor of one PDCP entity, in the unidirectional mode (U-mode, RFC 3095 5.3), which needs no feedback from the decompressor. A size model: the removed headers travel along inside the RohcHeader chunk, and the decompressor puts them back.

Every packet is compressed with the most specific of the bearer's profiles that fits it: RTP if an RTP header follows the UDP header, then UDP, TCP, and IP, which covers the IP header only. A fragment can only use the IP profile. A packet no configured profile fits goes uncompressed (profile 0x0000).

Each flow (a profile and the header fields that do not change: addresses, protocol, ports, RTP SSRC) has a context, identified by a CID. A bearer has at most 16 contexts (CIDs 0..15, the small-CID encoding): CID 0 costs nothing, the others one byte per packet. A new flow finding every CID taken takes over the least recently used context.

A context starts in the IR (initialization and refresh) state, whose packets carry the full headers plus irOverhead; after irPackets of them it moves to FO (first order), and after foPackets FO packets to SO (second order), the steady state. The compressor goes back to IR every irRefresh packets and to FO every foRefresh packets of a context, so that a decompressor that lost its context recovers. Uncompressed packets carry their headers as they are.

Not modeled: context damage after losses (decompression failures until the next refresh), the O-mode and R-mode feedback, and ROHCv2.