← Back to team overview

rohc team mailing list archive

Linux kernel support

 

Hi all,


I'm proud to announce to you 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.


Regards,

Didier Barvaux, on behalf of Viveris Technologies


[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)


Follow ups