User Tools

Site Tools


======== 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 [[|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. [[|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 [[|GPL version 2 (or later) license]]. The IP/ROHC application is developed in a [[|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 [[|Debian]], [[|CentOS 5]], [[|Arch]], and [[|Gentoo]]. It should however work on every [[wp>Linux]] distributions. If not, [[|check for open bugs]], [[|report a bug]] and/or [[|send a patch]]. The application requires [[|libyaml]], [[|gnutls]], and [[summary#rohc_library|ROHC]]. A RPM spec and a [[|Debian package]] are available in the [[|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