← Back to team overview

rohc team mailing list archive

Fw: Linux kernel support

 


Hi
    I am Msc (ICT) student in final year at University of Agder , Norway.  I am doing thesis work on ROHC based Linux router (vyatta). My task is to analyze the ROHC performance for one hop/multihops Adhoc nodes. I have linux based routers with ROHC implemented.

For a real scenario testbed  i have added Netem queue at the compressor outgoing interface and add loss, delay etc parameters. In this case i observed the behavior at de-compressor end.

Observation: 
1. Beyond 46% loss (netem root queue), de-compressor send error recovery compressed message to compressor and then compressor send full header.
2. When de-compressor missed 30 or more then 30 packets then it send error recovery request to compressor.

Questions
1. How much loss (percentage) for which ROHC is robust.?
2. Sometime compressor sends full header at packet loss instant without error recovery request  from de-compressor.


Specification:

   *Linux 3.0.32
   * ROHC library >> 1.4.0
   * MGEN for UDP traffic source
   * Wireshark for packet capture

Please comment and support.

Thanks & Regards

Faraz



----- Forwarded Message -----
From: Didier Barvaux <didier.barvaux@xxxxxxxxxxxxxxxxxxxx>
To: rohc@xxxxxxxxxxxxxxxxxxx 
Sent: Thursday, March 21, 2013 10:09 AM
Subject: [Rohc] 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)

_______________________________________________
Mailing list: https://launchpad.net/~rohc
Post to     : rohc@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~rohc
More help   : https://help.launchpad.net/ListHelp

Follow ups

References