← Back to team overview

rohc team mailing list archive

Version 2.2.0 published with ROHCv2 profiles


Hello all,

The major version 2.2.0 of the ROHC library was just released.

This release introduces the ROHCv2 IP-only, IP/ESP and IP/UDP profiles.

== About the ROHC library ==

The ROHC library provides an easy and robust way for applications to
reduce their bandwidth usage on network links with limited capacity or
expensive costs. Headers of network packets are compressed with the
ROHC protocol and algorithms.

The ROHC protocol is very efficient for compressing VoIP streams that
use RTP as transport protocol. ROHC is also suitable for compressing
IP-only (IPv4 or IPv6) flows, UDP flows and many others.

The library is published as Opensource under the license GNU LGPL
version 2.1 or later.

See https://rohc-lib.org/ and
https://rohc-lib.org/presentation/rohc-protocol/ for more details.

== Release notes & changelogs ==

The 2.2.0 release includes:
* support for the ROHCv2 IP-only, IP/ESP and IP/UDP profiles,
* interoperability: improve conformance to ROHC standards:
   * RFC3095: correctly handle the IR D flag of IP-only, UDP, ESP, and
     UDP-Lite profiles
   * RFC3843: add support for Static Chain Termination
* preliminary Wireshark dissector in Lua
* bug fixes:
  * TCP profile: do not skip MSN 65535 at compressor
  * Robustness of decompressor for TCP profile:
      * Context Replication: check whether base context does exist
        before using it 
      * avoid assertion at decompressor with malformed TCP options:
         * length of TCP options is not a multiple of 32-bit words
         * large TCP options > 40 bytes
      * handle length-changing generic TCP options
   * kernel:
      * fix 64-bit division
      * fix nonnull warnings
      * fix test application/script for Linux kernel module
   * sniffer:
      * handle packet timing so that context re-use works correctly
      * detect layer-3 protocol from Ethernet protocol type
* Q&A:
   * fix compilation error when using gcc-7 
   * decrease code complexity
   * fix some spelling mistakes detected by codespell

== Compatibility with previous releases ==

From a ROHC protocol point of view, the 2.2.0 release is not compatible
with previous releases if you use one of the ROHCv1 IP-only, ESP,
UDP-Lite or UDP profiles. This is due to interoperability fixes (see
changelog). In general, mixing major versions for compressor and
decompressor is not recommended.

The library API is compatible with versions 2.0.x and 2.1.x. Some
headers/types/functions were however added or modified for ROHCv2.
See the migration guide [1] for more details.

[1] migration guide:

== Acknowledgements ==

Many thanks to people that reported/fixed bugs:
* Developing Solutions for helping Viveris Technologies adding the
  ROHCv2 profiles.
* Selvaganesan Murugesan and Developing Solutions for the D flag
  conformance problem.
* Developing Solutions for the lack of the Static Chain Termination
  feature for conformance and interoperability.
* Mikhail Gruzdev for Linux kernel fixes.
* Bi-Ruei Chiu for GCC-7 fixes.
* AFL fuzzer software for the TCP robustness fixes.

== Download ==

The source archive is available for download [2]. A sha256 checksum and
a GPG signature are provided, be sure to check them [3].

[2] download files:
[3] check files:

== Installation instructions & API documentation ==

The instructions to install the library and use it are available [4].
The API documentation is available in HTML [5] and man pages [6].

[4] Tutorial: https://rohc-lib.org/presentation/getting-started/
[5] API documentation (HTML):
[6] API documentation (man pages):

== Feedback ==

Any feedback on the 2.2.0 release will be appreciated. You may use the
mailing list to ask questions [7] and the bug tracker to report
problems [8].

[7] mailing list: https://rohc-lib.org/support/mailing-list/
[8] bug tracker: https://rohc-lib.org/developer/bugtracker/

Didier Barvaux

Follow ups