← Back to team overview

rohc team mailing list archive

New IP/ROHC application! (Was: Re: Ethernet Transport app for ROHC pkts)

 

Hi Raman, hi everybody!


> >  Please share your thoughts on this with me, to take it further.
> 
> Sorry for being silent for many days. I had many tasks on other topics
> to complete...
> 
> I understand the need for a complete tunnel application using the ROHC
> protocol. That would be great!
> 
> About the organisation, I prefer a separate repository for the
> software. That way, the library and the tunnel application could be
> developed at different paces.
> 
> I'll come back with some news on this topic next week. Stay tuned.

Here are the news promised! :)


I'm proud to announce a new application. It's a tunnel application
similar the ROHC/UDP tunnel of the ROHC library, but designed for
production!


=== Origins ===

The tunnel application was designed and developed by Viveris
Technologies [2], my employer.

Viveris Technologies 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.

Kudos to Alexandre Chataignon [3] that wrote the code at Viveris, and to
my boss for publishing the code under the GPLv2+ license!


=== Features ===

The application is based on ROHC, of course. It encapsulates the ROHC
packets in IP packets (to avoid the UDP overhead). Because of that it
is named IP/ROHC (iprohc in code).

In addition, we implemented frame packing: several ROHC packets are put
together in one single IP header to reduce the tunnel overhead even
more [4].


=== Software architecture ===

The IP/ROHC application is divided into two parts: the server and the
client. The server part handles sessions with several clients
simultaneously.

The client and the server establish two communication channels between
them: the control channel that uses TCP for reliability, and the data
channel that uses UDP for efficiency.

The client establishes and closes a session on the control channel. The
client transmits compressed data on the data channel. The control
channel is authenticated and encrypted with TLS.

Both the client and the server uses TUN interfaces to fake network
interfaces.


=== Supported platforms ===

The application was tested under Linux, and more especially Debian
Squeeze, CentOS 5, Arch, and Gentoo. It should however work on every
Linux distributions. If not, report a bug and/or send a patch.

The application requires libyaml, gnutls, and ROHC. A RPM spec and a
Debian package are available in the source tree.


=== Code / development ===

The IP/ROHC application is hosted on the same project as the ROHC
library. The website, the wiki, the bugtracker, and the mailing list
will shared among the two code bases.

The code of the tunnel application is however not located within ROHC
library. There is a dedicated Bazaar repository for it [1]. This way,
the 2 applications will evolve at their own rate.

There is no release of the IP/ROHC application for the moment, however
be sure that code is ready for production: customers are using it :)


Regards,

Didier Barvaux, on behalf of Viveris Technologies


[1] IP/ROHC code: https://code.launchpad.net/~didier-barvaux/rohc/iprohc
[2] Viveris Technologies: http://www.viveris.fr/ (sorry, in French only)
[3] Alexandre Chataignon: https://launchpad.net/~xouillet
[4] IP encapsulation means less overhead, but it also means that NAT
    gateways won't handle it well in many cases.


Follow ups

References