User Tools

Site Tools


summary

The wiki contains documentation about the ROHC library and the ROHC protocol itself.

Note: the creation of wiki accounts is disabled due to spam; if you want an account, ask for it on the project mailing list.

ROHC protocol

The RObust Header Compression (ROHC) protocol aims at reducing bandwidth usage on network links with limited capacity or expensive costs, such as mobile networks or satellite links. It defines a lossless compression scheme for network headers. It leaves the network payload unchanged.

The resources below describes the ROHC protocol in more details:

FIXME complete this section with more details on specific part of the ROHC protocol and profiles.


ROHC library

The ROHC library aims to implement the ROHC protocol as defined by the IETF in the RFC standards.

Installation

Using the library

Using existing tools and applications:

Develop your own application:

Hacking the library

Miscellaneous

Applications

This section lists some of the applications based on the ROHC library. Some are developed within the ROHC library itself because they are useful as debug tools; some are developed in external locations to allow them to evolve at their own pace.

ROHC over UDP tunnel

For versions up to 1.7.0 included ; present but deprecated in 1.7.0 ; will be removed in 2.0.0 ; use the ROHC sniffer or the IP/ROHC tunnel instead.

ROHC sniffer

For versions >= 1.6.0 of the library only

The ROHC sniffer is a lightweight application for testing the robustness of the ROHC library. The sniffer passively captures all the traffic on a network interface, compresses it, decompresses it, then compares it with the original traffic. If any of the previous steps fails, the sniffer stops and reports the problem.

In some aspect, the ROHC sniffer replaces the ROHC over UDP tunnel because it allows testing the library with real traffic without any impact on the network or on other applications:

  • If a problem occurs while using the ROHC over UDP tunnel, users will experience a degraded network experience (packet loss, packet alteration…).
  • If a problem occurs while using the ROHC sniffer, users won't experience any problem.

Additional informations:

ROHC fuzzer

For versions 1.6.x and 1.7.x of the library only. Use the AFL fuzzer instead for versions >= 2.0.0.

ROHC statistics

For versions >= 1.7.0 of the library only

The ROHC stats application makes it easy to gather some (de)compression statistics from one network flow (in PCAP format). The tool outputs statistics in CSV format with the following tab-separated fields:

  • keyword 'STAT'
  • packet number
  • context mode (numeric ID)
  • context mode (string, no whitespace)
  • context state (numeric ID)
  • context state (string, no whitespace)
  • packet type (numeric ID)
  • packet type (string, no whitespace)
  • uncompressed packet size (bytes)
  • uncompressed header size (bytes)
  • compressed packet size (bytes)
  • compressed header size (bytes)

Once the ROHC library and tools are installed, get some more help with:

 $ man rohc_stats

or:

 $ rohc_stats --help

A helper shell script is also provided to generate an HTML page with pretty graphs on it:

 $ ./rohc_stats.sh network_flow.pcap ./network_flow_stats/
 $ firefox ./network_flow_stats/index.html

Additional informations:

  • Use for testing/debug only, it was not designed for production at all.
  • Developed in the app/stats/ sub-directory of the library source code.
  • License: same as ROHC library

IP/ROHC tunnel

The IP/ROHC application a tunnel application similar the ROHC/UDP tunnel, but designed for production! It was designed and developed by Viveris Technologies.

The application compresses the IP packets that it receives on a TUN interface with the ROHC library. Then it encapsulates the ROHC packets in IP packets (to avoid the UDP overhead). Because of that it is named IP/ROHC (iprohc in code). In addition, frame packing is implemented: several ROHC packets are put together in one single IP header to reduce the tunnel overhead even more.

Additional informations:


Python binding

Maintainer resources

summary.txt · Last modified: 2016/08/27 14:49 by didier