High Quality JMS Messaging.

Introduction

Concerning SwiftMQ router networks, often certain computers are connected via routing connections, but there is no further possibility to connect with these computers e.g. by Telnet without opening firewalls. Why not using the existing routing connection for it? The Portmapper Extension Swiftlet serves exactly this purpose. It enables offering TCP Ports to arbitrary accessible computers within a SwiftMQ router network and the configuration of listeners on arbitrary other SwiftMQ routers of the network. Through this it gets possible to switch arbitrary transparent TCP connections via the SwiftMQ router network. This is called port mapping.

The TCP data streams are conducted within the SwiftMQ router network via internal queue streams and based on JMS Messages. No intervention into the data stream takes place. Thus, a mapping of FTP and SSH connections is not possible. However, Telnet, JDBC (e. g. Oracle and Sybase TCP listener) as well as all other transparent TCP connections are possible.

Example: Telnet Connection

The following router network is given, router1 on host1 and router2 on host2, linked through a firewall and a HTTP Proxy. A SSL routing connection exists between both of them. Beyond, no connection between the two hosts is possible.

To access from host1 to host2 via Telnet the Portmapper Extension Swiftlet has to be installed on router2 and a so-called port provider needs to be configured which offers Port 23 of host1 at the queue telnet@router2:

Install the Portmapper Extension Swiftlet also on router1 and configure a port listener on any free Port (here 17001). Now define telnet@router2 as connection queue:

Therewith a portmapping is created. Now, if a connection is made by Telnet to port 17001 on host1, you will obtain a transparent connection to Telnet port 23 of host2.

The portmapping is not restricted to one connection but you may define arbitrary port provider and port listener and may so produce arbitrary connections.

Example: JDBC Connections

Let us assume you operate multiple websites, www1.acme.com and www2.acme.com. Both are separate server, each with a Sybase database. Both databases are a copy of the main database, located at a server 'backend' (behind the firewall) within your company. If one webserver fails, the system automatically switches onto the other one. The replication between the main database and the webserver databases is made by SwiftMQ via JMS. That is, you have one router network with 3 routers (www1, www2 and backend):

For security reasons, the Sybase databases each have a TCP listener defined at www1.acme.com and www2.acme.com on localhost:7001. With this, there is no possibility to connect with the database from the outside. The backend server is located within the protected area and therefore has a TCP listener at backend:7001, which is to say, you may connect here from other hosts within your network. Now, you wish to administer all 3 databases via Sybase Central, a graphic administrations tool, from an NT box within your company network. For this, install the Portmapper Extension Swiftlet onto the SwiftMQ routers www1, www2 and backend. Define a port provider at www1 which offers the port 7001 on localhost at the queue sybase@www1:

Please do the same at www2, but offer the port at queue sybase@www2:

Define respectively one port listener at the server 'backend' and map these e.g. at 13101 (sybase@www1) and 13102 (sybase@www2):

Now, you may define 3 database server within Sybase Central and you may connect them to the server 'backend' at port 7001 (backend database), 13101 (www1 database) and 13102 (www2 database). That's it. Now, you may administer all 3 databases centrally via the SwiftMQ router network.