Linux kernel support available

Written for rohc by Didier Barvaux on 2013-04-02

We are proud to announce that the ROHC library has now support for the Linux kernel!

=== Features ===

The Linux kernel [1] support comes with 2 kernel modules:
 1/ one module to export the ROHC library to the Linux kernel,
 2/ one module to use the ROHC library and test it in the Linux kernel.

The first module is named rohc.ko. It does nothing except exporting the API of the ROHC library in kernel land. The hard work was not on this module itself, but in the library source code to make it builds fine for the Linux kernel.

The second module is a test module. It is therefore named rohc_test.ko. The 2nd module depends on the first one for ROHC features. This module can run all the non-regression tests of the ROHC library in the Linux kernel.

=== Software architecture ===

The test module creates 2 ROHC compressor/decompressor couples. It also provides 4 entry points per couple in /proc to communicate between the kernel and the user space.

Writing one IP packet on the /proc/rohc_comp1_in file makes the kernel compress the packet with compressor #1 and write the resulting compressed packet on the /proc/rohc_comp1_out file. Writing one ROHC packet on the /proc/rohc_decomp2_in file makes the kernel decompress the packet with decompressor #2 and write the resulting decompressed packet on the /proc/rohc_decomp2_out file.

A userspace application is provided to run all the non-regression tests of the ROHC library in the Linux kernel. The userspace application reads packets from the PCAP captures, sends them to the kernel module through the /proc/xxx file, then waits for the result on the associated /proc/xxx file.

The 2 kernel modules are located in the 'linux' subdir:
  ./linux/kmod.c
  ./linux/kmod_test.c

The userspace application is located in:
  ./test/non_regression/test_non_regression_kernel.c

=== Supported platforms ===

The Linux module was tested with Fedora 18 (kernel 3.6.x), and Gentoo (kernel 3.5.x). It should however work on every Linux distributions. If not, report a bug and/or send a patch.

As one might expect, the Linux module does not work for the OSes of the BSD family and Windows ;-)

=== Code location ===

The Linux kernel support is not part of any ROHC release yet. It will be shipped with the close 1.6.0 release. In the meantime, you may get it from the Bazaar repository [2].

=== License ===

The code is published under the GPL version 2 or later (GPLv2+).

=== Credits ===

The first module was written by Mikhail Gruzdev, Thales Communications [3], and Viveris Technologies [4]. The second module was written only by Thales Communications and Viveris Technologies.

The code property on the first module is shared among several people/entities, because the work was done twice. This work was done by Viveris Technologies for Thales Communications in a private fork several months ago (along with the 2nd module for testing). The first module was written again later as a separate work by Mikhail Gruzdev. Mikhail kindly published his work on the ROHC mailing list. Thales Communications and Viveris Technologies agreed to publish their private work, so the result is a merge of everything.

Kudos to Mikhail Gruzdev for his work and patch!

Thales Communications [3] is part of Thales, a global technology leader for the Defense & Security and the Aerospace & Transport markets.

Viveris Technologies [4] is a French company working in the IT field. The company provides to the ROHC project the skills of its engineering teams in the telecommunications, network and Linux fields. Viveris Technologies proposes the knowledge and expertise gained on the ROHC library to companies and people that are interested in network header compression, but do not have the skills or the time to integrate the ROHC mechanisms in their application or infrastructure.

[1] Linux kernel: http://kernel.org/
[2] ROHC main branch:
    https://code.launchpad.net/~didier-barvaux/rohc/main
[3] Thales Communications: http://www.thalescomminc.com/
[4] Viveris Technologies: http://www.viveris.fr/ (sorry, in French only)

Read all announcements