User Tools

Site Tools


iprohc-overview

======== IP/ROHC tunnel ======== This page presents the IP/ROHC tunnel application. Instructions for [[iprohc-install|installing]] or [[iprohc-run|running]] the application are given on dedicated pages. ===== Origins ===== The tunnel application was designed and developed by [[http://www.viveris.fr/|Viveris Technologies]]. 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. [[http://www.viveris.fr/|Viveris Technologies]] proposes the knowledge and expertise gained on the [[summary#rohc_library|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-protocol|ROHC mechanisms]] in their application or infrastructure. The IP/ROHC application is published under the [[https://github.com/didier-barvaux/iprohc/blob/master/COPYING|GPL version 2 (or later) license]]. The IP/ROHC application is developed in a [[https://github.com/didier-barvaux/iprohc|dedicated GitHub project]]. ===== Features ===== The application compresses the IP packets that it receives on a [[wp>TUN/TAP|TUN interface]] with the [[summary#rohc_library|ROHC library]]. Then it encapsulates the ROHC packets in IP packets (to avoid the [[wp>User Datagram Protocol|UDP]] overhead). Because of that it is named IP/ROHC (iprohc in code). In addition, frame packing is implemented: several ROHC packets are put together in one single IP header to reduce the tunnel overhead even more. IP encapsulation means less overhead, but it also means that [[wp>Network address translation|NAT gateways]] won't handle it well in many cases. ===== 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. {{ :wiki:iprohc:iprohc_clients_server.png | one server handles several clients }} The client and the server establish two communication channels between them: the control channel that uses [[wp>Transmission Control Protocol|TCP]] for reliability, and the data channel that uses raw IP 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 [[wp>Transport Layer Security|TLS]]. {{ :wiki:iprohc:iprohc_channels.png | client and server use two channels }} Both the client and the server uses [[wp>TUN/TAP|TUN interface]] to fake network interfaces. {{ :wiki:iprohc:iprohc_tun.png | client and server use a TUN interface}} ===== Supported platforms ===== The application was tested under [[wp>Linux]], and more especially [[https://www.debian.org/intro/about#what|Debian]], [[http://wiki.centos.org/Manuals/ReleaseNotes/CentOS5.10|CentOS 5]], [[https://www.archlinux.org/|Arch]], and [[https://gentoo.org/|Gentoo]]. It should however work on every [[wp>Linux]] distributions. If not, [[https://bugs.launchpad.net/rohc|check for open bugs]], [[https://bugs.launchpad.net/rohc/+filebug|report a bug]] and/or [[https://rohc-lib.org/support/mailing-list/|send a patch]]. The application requires [[http://pyyaml.org/wiki/LibYAML|libyaml]], [[http://gnutls.org/|gnutls]], and [[summary#rohc_library|ROHC]]. A RPM spec and a [[https://github.com/didier-barvaux/iprohc/tree/master/contrib/packaging/debian|Debian package]] are available in the [[https://github.com/didier-barvaux/iprohc/tree/master/|source tree]]. For more details, please refer to the instructions for [[iprohc-install|installing]] the IP/ROHC tunnel. FIXME make the RPM spec public and update the link

iprohc-overview.txt · Last modified: 2018/04/23 13:51 by didier