All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
mod-tunnel: TUNNEL support for Turbulence

Introduction

mod-tunnel implements the general purpose connection proxy for BEEP. It is based on the TUNNEL profile and allows to connect to a remote BEEP peer through a box that is acting as a "proxy".

Base configuration

mod-tunnel is a module that provides TUNNEL profile (RFC3620) support for Turbulence. It provides facilities to activate the profile and to provide resolve services if received TUNNEL requests to connect to "endpoint", "profile" and other abstract BEEP connection configurations provided by the TUNNEL profile.

This module is included in the Turbulence official distribution. To enable it you must make it available in some of the directories that are used by Turbulence to load modules (see 4.1 Turbulence modules configuration). Under most cases this is done as follows:

>> cd /etc/turbulence/mod-enabled
>> ln -s ../mod-available/mod-tunnel.xml

Once included the module you must restart Turbulence. Now the mod-tunnel is activated you must configure it. This is done by updating tunnel.conf file which is usually located at /etc/turbulence/tunnel/tunnel.conf. Here is an example:

<mod-tunnel>
   <!--  location of the connection resolver file  -->
   <tunnel-resolver location="resolver.xml" type="xml" />
</mod-tunnel>

Under normal operations, a client BEEP peer requesting to create a TUNNEL to a remote BEEP listener, provides an IP address and its associated port. However, TUNNEL profile allows to provide abstract configurations such:

  1. Connect to a remote endpoint called: "my application server": <endpoint> configuration.
  2. Connect to a BEEP server running a particular BEEP profile: <profile> configuration.

Previous configuration are abstract in the sense they have to be resolved to a particular endpoint IP address and a port. This is because the resolver.xml file is provided.

The resolver.xml file includes mappings to translate these "abstract request" to particular endpoint addresses. Here is an example:

<tunnel-resolver>
   <!--  match the tunnel request trying to reach the endpoint 
       "af-kernel" which is resolved to the BEEP peer found 
       at localhost:55000  -->
   <match port="55000" 
          host="localhost" 
          endpoint="af-kernel" />
   <!--  match the tunnel request trying to reach the endpoint "af-gestor-mecaes"  -->
   <match port="55000" 
          host="localhost" 
          endpoint="af-gestor-mecaes" />
   <!--  match the request trying to reach the profile provided  -->
   <match port="55000" 
          host="localhost" 
          profile="http://fact.aspl.es/profiles/coyote_profile" />
</tunnel-resolver>