rohc 1.6.0

Major objectives for release 1.6.0:
 - the TCP profile (delayed to 1.7.0 because not stable enough),
 - a Linux kernel module.

Milestone information

Project:
rohc
Series:
rohc-1.6.x
Version:
1.6.0
Released:
 
Registrant:
Didier Barvaux
Release registered:
Active:
No. Drivers cannot target bugs and blueprints to this milestone.  

Download RDF metadata

Activities

Assigned to you:
No blueprints or bugs assigned to you.
Assignees:
36 Didier Barvaux
Blueprints:
1 Implemented
Bugs:
2 Invalid, 33 Fix Released

Download files for this release

After you've downloaded a file, you can verify its authenticity using its MD5 sum or signature. (How do I verify a download?)

File Description Downloads
download icon rohc-1.6.0.tar.bz2 (md5, sig) Source code for ROHC library 1.6.0 365
last downloaded 10 weeks ago
download icon rohc-tests-1.6.0.tar.bz2 (md5, sig) Test captures for ROHC library 1.6.0 180
last downloaded 9 weeks ago
download icon rohc-doc-1.6.0.tar.bz2 (md5, sig) API documentation for ROHC library 1.6.0 2,826
last downloaded 8 weeks ago
Total downloads: 3,371

Release notes 

The 1.6.0 release adds support for:
 - ROHC constant IP-ID,
 - ROHC segment,
 - improved handling of TS, TS_STRIDE, TS_OFFSET and TS_SCALED values,
 - improved RTP stream detection,
 - new trace framework,
 - Linux kernel,
 - OpenBSD,
 - Mingw64,
 - CYGWIN,
 - build with GCC 4.8, Clang 3.2, and TCC,
 - two new tools: a fuzzer and a sniffer.

There are also 33 bugs fixed.

Changelog 

View the full changelog

Compatibility:
    - Version 1.6.0 is not compatible with versions < 1.6.0 because of several
      fixes related to IETF RFCs that change the format of ROHC packets.
    - The library API is mainly compatible with earlier versions: some private
      entities that were made public by mistake are not public anymore. It
      might break some programs that were using them by mistake.

License/Authors:
    - Mikhail Gruzdev, Thales Communications, and Viveris Technologies for
      Linux kernel support.
    - Audric Schiltknecht and Julien Bernard from Viveris Technologies for
      constant IP-ID support, the new RTP profile detection mechanism, and
      the new trace framework.
    - Yura for the ROHC fuzzer.
    - Raman Gupta for ROHC-over-Ethernet tunnel support.

Acknowledgments for bug reports and/or bug fixes:
    Audric Schiltknecht, FWX, Elisabeth, Julien Bernard, Raman Gupta,
    Viveris Technologies, Yura.

Main changes:
    - ROHC protocol:
       - Support for constant IP-ID as specified by §3.3 of RFC 3843.
       - Support for ROHC segment as specified by §5.2.5 of RFC 3095.
       - Improve handling of TS, TS_STRIDE, TS_OFFSET and TS_SCALED values.
       - Protect STATIC-NACK feedback with CRC. CRC is required if changing
         operation mode.
       - Several compression/decompression bugs (see below).
    - Library API/usage:
       - Improve RTP profile detection with a new user callback or with new
         API functions to add/remove/reset UDP ports dedicated to RTP traffic.
       - Add new trace framework with user-defined callbacks.
    - Portability:
       - Support for Linux kernel.
       - Support for OpenBSD (tested on 5.3 thanks to Audric Schiltknecht).
       - Support for mingw64.
       - Support for CYGWIN.
       - Support for GCC 4.8, Clang 3.2, and TCC.
       - RPM spec file for CentOS 5/6, Fedora 17/18 and RHEL 5.

API changes:
    - Add rohc_compress2(), rohc_comp_get_segment() and return code
      ROHC_NEED_SEGMENT to handle ROHC segments.
    - Update rohc_decompress() to return ROHC_NON_FINAL_SEGMENT to handle ROHC
      segments.
    - rohc_compress() is deprecated by rohc_compress2().
    - Add rohc_comp_set_rtp_detection_cb() to define the user-defined RTP
      detection callback.
    - Add rohc_comp_add_rtp_port(), rohc_comp_remove_rtp_port(), and
      rohc_comp_reset_rtp_ports() to manage the UDP ports dedicated to RTP
      streams.
    - Add rohc_comp_set_traces_cb() and rohc_decomp_set_traces_cb() to manage
      library traces with user-defined callbacks.
    - Add rohc_feedback_remove_locked() (remove feedbacks once transmitted),
      rohc_feedback_unlock() (restore feedbacks if transmission failed).
    - Add rohc_comp_get_last_packet_info2() to get compression statistics.
    - rohc_comp_get_last_packet_info() is deprecated by
      rohc_comp_get_last_packet_info2().
    - Add rohc_decomp_get_last_packet_info() to get decompression statistics.
    - Add functions rohc_comp_get_general_info(), rohc_comp_get_mrru(),
      rohc_comp_get_max_cid() and rohc_comp_get_cid_type() to replace
      functions rohc_c_info(), rohc_c_statistics() and rohc_c_context() that
      are now deprecated.
    - Add rohc_comp_force_contexts_reinit() to re-initialize compression
      contexts.
    - Remove nonnull as function attribute for public API.
    - public header cleanup: move some private definitions from rohc.h to
      private headers.
    - public header cleanup: move all private decompressor definitions from
      rohc_decomp.h to rohc_decomp_internals.h

Build system:
    - Append bzr revision number to library version if built from bzr.
    - Split --enable-rohc-apps into several different options (see below).
    - Add --disable-deprecated-api to disable deprecated code (testing only).
    - Change the behavior of the --enable-rohc-debug configure option:
      Old behavior: --enable-rohc-debug={1,2,3} configured as build time the
                    level of debug of the library.
      New behavior: --enable-rohc-debug={yes,no} configures only extra debug
                    for the library.
      Debug traces are managed by the new trace framework. Extra debug traces
      that may reduce the library performances are only enabled if
      --enable-rohc-debug or --enable-rohc-debug=yes are specified. The extra
      debug traces are off by default.
    - Use CPPFLAGS for -I options instead of CFLAGS.
    - Do not override CFLAGS, CPPFLAGS, and LDFLAGS in configure.
    - Support out-of-sources builds.
    - Support Clang 3.2.
    - Support GCC 4.8.

Q&A:
    - Add const keywords in several function prototypes.
    - Fix warnings emitted by the static code analyzer of the Clang compiler.
    - Improve the robustness of the compressor API.
    - Improve test coverage.
    - Improve API documentation.
    - Move all private definitions out from public headers.
    - Define many private functions as static in UDP and UDP-Lite profiles.

Performances:
    - Simplify the rohc_f_32bits() function.
    - Introduce a context key to quickly match packets and contexts.
    - Stop search for the compression context if all used contexts were
      already checked.
    - Create all compression contexts at init instead of at runtime.
    - Dump compressed and uncompressed packets only in extra debug mode.
    - Avoid using zfree() when free() is enough.

Applications:
    General:
      - Split --enable-rohc-apps into several different options:
        --enable-app-fuzzer --enable-app-performance
        --enable-app-sniffer --enable-app-tunnel
    ROHC-over-UDP tunnel:
      - Handle decompression.
      - Handle small/large CIDs and MAX_CID.
      - Add ROHC-over-Ethernet support (Raman Gupta).
      - Avoid using internal information from the library.
      - Fix the usage description.
    ROHC sniffer:
      - New tool that permits to easily test the library on a real network
        without affecting it. The program sniffs IP packets from a given
        network interface, and tests the ROHC library with them. The packets
        are compressed, then decompressed, and finally compared with the
        original IP packets.
    ROHC fuzzer:
      - New tool that checks the robustness of the ROHC decompressor with
        random ROHC packets. Contributed by Yura.
    Performances test:
      - Increase test duration for CPU frequency.

Bug fixes:
    Bug #799206: Build ROHC library with tcc
    Bug #804565: Measure test coverage
    Bug #813128: Build fails with CYGWIN on Windows
    Bug #1038637: RTP profile: RTP header with extension flag set not
                  correctly handled
    Bug #1050980: Add fuzz testing
    Bug #1051619: Check library build and tests on OpenBSD
    Bug #1069411: Support Linux kernel
    Bug #1071413: Tests build failure related to pcap.h
    Bug #1080035: Decompression failure with simultaneous TS_STRIDE changes
                  and packet loss
    Bug #1080055: Decompression failure caused by RTP stream with lost packet
                  but irregular IP-ID
    Bug #1083294: Crash while decompressing RTP stream with large TS jump and
                  UOR-2 disambiguation
    Bug #1087682: decompressor: zero-length packet causes a crash
    Bug #1087683: decompressor: compressed list with 8-bit XI fields (PS=1)
                  cause a crash
    Bug #1087979: Test failure on FreeBSD 7
    Bug #1088004: Decompression failure of specific IPv4 stream with changing
                  RND
    Bug #1089106: Compressor asserts because of non-RTP traffic with 14 SN
                  bits to transmit
    Bug #1090069: Decompressor: crash caused by malformed (too short) IR and
                  IR-DYN packets
    Bug #1092660: Problem with RTP streams with Padding bit set
    Bug #1093836: Decompressor crash because of lossy RTP stream with SN
                  wraparound
    Bug #1093846: Possible decompressor crash with malformed extension header
                  list
    Bug #1094452: Decompressor contexts incorrectly preserved if MAX_CID is
                  changed
    Bug #1094710: Build failure on CentOS 6
    Bug #1094712: Tests fail to build on FreeBSD 7.4
    Bug #1096358: Decompression fails if IPv6 extensions list is not present
                  anymore
    Bug #1096586: Tests use an unsupported option for Valgrind <= 3.6.0
    Bug #1105935: Malformed uncompressed packets may crash the ROHC compressor
    Bug #1105963: Uncompressed profile: Normal packet cannot be used for
                  non-IPv4/v6 packets
    Bug #1115091: Crash when decompressing list types 1/2/3 if no reference
                  list was already set
    Bug #1166618: UOR-2 extension options for IPv6
    Bug #1178441: Malformed IP packet used in code example
    Bug #1181829: decompressor crash with truncated UOR-2 packets of the RTP
                  profile

1 blueprint and 35 bugs targeted

Blueprint Priority Assignee Delivery
Module for Linux kernel Module for Linux kernel 2 Low Didier Barvaux  11 Implemented
Bug report Importance Assignee Status
1094460 #1094460 configure option --disable-rohc-debug does not work as expected 1 Undecided Didier Barvaux  3 Invalid
1157536 #1157536 WLSB encoding incorrect 1 Undecided Didier Barvaux  3 Invalid
1087682 #1087682 decompressor: zero-length packet causes a crash 2 Critical Didier Barvaux  10 Fix Released
1087683 #1087683 decompressor: compressed list with 8-bit XI fields (PS=1) cause a crash 2 Critical Didier Barvaux  10 Fix Released
1090069 #1090069 Decompressor: crash caused by malformed (too short) IR and IR-DYN packets 2 Critical Didier Barvaux  10 Fix Released
1093846 #1093846 Possible decompressor crash with malformed extension header list 2 Critical Didier Barvaux  10 Fix Released
1105935 #1105935 Malformed uncompressed packets may crash the ROHC compressor 2 Critical Didier Barvaux  10 Fix Released
1115091 #1115091 Crash when decompressing list types 1/2/3 if no reference list was already set 2 Critical Didier Barvaux  10 Fix Released
1181829 #1181829 decompressor crash with truncated UOR-2 packets of the RTP profile 2 Critical Didier Barvaux  10 Fix Released
1080035 #1080035 Decompression failure with simultaneous TS_STRIDE changes and packet loss 3 High Didier Barvaux  10 Fix Released
1080055 #1080055 Decompression failure caused by RTP stream with lost packet but irregular IP-ID 3 High Didier Barvaux  10 Fix Released
1083294 #1083294 Crash while decompressing RTP stream with large TS jump and UOR-2 disambiguation 3 High Didier Barvaux  10 Fix Released
1093836 #1093836 Decompressor crash because of lossy RTP stream with SN wraparound 3 High Didier Barvaux  10 Fix Released
1094452 #1094452 Decompressor contexts incorrectly preserved if MAX_CID is changed 3 High Didier Barvaux  10 Fix Released
1105963 #1105963 Uncompressed profile: Normal packet cannot be used for non-IPv4/v6 packets 3 High Didier Barvaux  10 Fix Released
1166618 #1166618 UOR-2 extension options for IPv6 3 High Didier Barvaux  10 Fix Released
1038637 #1038637 RTP profile: RTP header with extension flag set not correctly handled 4 Medium Didier Barvaux  10 Fix Released
1051619 #1051619 Check library build and tests on OpenBSD 4 Medium Didier Barvaux  10 Fix Released
1071413 #1071413 Tests build failure related to pcap.h 4 Medium Didier Barvaux  10 Fix Released
1088004 #1088004 Decompression failure of specific IPv4 stream with changing RND 4 Medium Didier Barvaux  10 Fix Released
1089106 #1089106 Compressor asserts because of non-RTP traffic with 14 SN bits to transmit 4 Medium Didier Barvaux  10 Fix Released
1092660 #1092660 Problem with RTP streams with Padding bit set 4 Medium Didier Barvaux  10 Fix Released
1094710 #1094710 Build failure on CentOS 6 4 Medium Didier Barvaux  10 Fix Released
1094712 #1094712 Tests fail to build on FreeBSD 7.4 4 Medium Didier Barvaux  10 Fix Released
1096358 #1096358 Decompression fails if IPv6 extensions list is not present anymore 4 Medium Didier Barvaux  10 Fix Released
1087979 #1087979 Test failure on FreeBSD 7 5 Low Didier Barvaux  10 Fix Released
1096586 #1096586 Tests use an unsupported option for Valgrind <= 3.6.0 5 Low Didier Barvaux  10 Fix Released
1178398 #1178398 Build failure on CentOS 5 5 Low Didier Barvaux  10 Fix Released
1178441 #1178441 Malformed IP packet used in code example 5 Low Didier Barvaux  10 Fix Released
799206 #799206 Build ROHC library with tcc 6 Wishlist Didier Barvaux  10 Fix Released
801565 #801565 Run a static analyzer on code 6 Wishlist Didier Barvaux  10 Fix Released
804565 #804565 Measure test coverage 6 Wishlist Didier Barvaux  10 Fix Released
813128 #813128 Build fails with CYGWIN on Windows 6 Wishlist Didier Barvaux  10 Fix Released
1050980 #1050980 Add fuzz testing 6 Wishlist Didier Barvaux  10 Fix Released
1069411 #1069411 Support Linux kernel 6 Wishlist Didier Barvaux  10 Fix Released
This milestone contains Public information
Everyone can see this information.