RMDT tunnel using pipeclone

This document describes the installation process of pipeclone on the RPM-based operating system (tested on CentOS) and guides the first steps of its usage as a socket stream tunnel.

Minimal System Requirements

  • CPU multi-core, at the best case at least four cores. This is a soft requirement; however, the performance of data transmission strictly depends on CPU frequency and the ability to use multiple cores
  • RAM: 4GB of free RAM is required to achieve higher performance.
  • System Architecture: Linux x64
  • By default following ports must be allowed for inbound connections on the firewall:
    • UDP: 2312 (for data transmission)

Installation guide

To install the software:

tar -xf pipeclone-bundle.tgz
cd pipeclone-bundle
./install-rpm.sh

This is it! Now you have pipeclone installed on your system.

Note: pipeclone will be installed system-wide.

Note: installation requires superuser rights.

Quick start

pipeclone quick run

First of all, make sure that the software has been installed on all hosts, which planned to be involved in data transmission.

Now we are ready to perform the first run.

to run pipeclone in netcat mode, it is necessary to run:

on receiving side: pipeclone -l :<RMDT port>
and on sender side: pipeclone -s <receiver hostname>:<RMDT port>

for example:

receiver: pipeclone :2312
sender: pipeclone receiverHost:2312

now everything that will occur on stdin of the sender will appear on the stdout of the receiver.

for more details run pipeclone --help

dexor tunel quick run

dexor tunnel <LOCAL> <REMOTE>

To connect SSH over RMDT tunnel:

  • Server-side relay (SS-relay): dexor tunnel rmdt://cs-relay tcp://server:22
  • Client-side relay (CS-relay): dexor tunnel tcp://:2202 rmdt://ss-relay
  • Client : ssh -p 2202 cs-relay

the last command will establish ssh session to the server if ssh server on this host is installed and up.

read section tunnel based on pipeclone for detailed information.

tunnel based on pipeclone

as RMDT provides an ability to send data in one direction, we use a combination of two pipeclones to establish bidirectional communication for traffic acceleration over WAN.

If to build the combination of pipeclones, to tunnel e.g. ssh, per hand it will look like:

Topology

 ________                            ________
|        |                          |        |  
|cs-relay| --------RMDT-----------> |ss-relay|
|        | <-------RMDT-----------  |        |  
|________|                          |________|
     |                                   |  
     |                                   |
_____|____                          _____|____   
|        |                          |        |
| Client |                          | Server |
|________|                          |________|      
  • on server-side relay run: dexor tunnel rmdt://<cs-relay> tcp://<server>:22
  • on client-side relay run: dexor tunnel tcp://0.0.0.0:<port> rmdt://<ss-relay>
  • on client run ssh -p <port> <cs-relay>

NOTE: ensure SSH is running on Server host

an example:

host names and commands according to the topology:

  1. on server: ensure SSH server is running on port 22
  2. on ss-relay: dexor tunnel --port 4436 rmdt://cs-relay:4453 tcp://server:22
  3. on cs-relay: dexor tunnel --port 4453 tcp://:2202 rmdt://ss-relay:4436
  4. on client: ssh -p 2202 relay2.net

note that for this run cs-relay must have TCP port 2202 opened

if the commands ran in the mentioned order, SSH session must be established.

a quick notation to Dexor’s RMDT tunnel:

dexor tunnel <LOCAL> <REMOTE>

where

  • LOCAL Listening socket, RMDT, TCP or UDP;
    Example: rmdt://remote.host:8989, tcp://:8080, udp://0.0.0.0:53

  • REMOTE Remote address to connect to RMDT, TCP or UDP;
    Example: tcp://localhost:22, rmdt://remote.host.net, udp://remote.net:8009

use dexor tunnel --help to see detailed description.

note that by default UDP socket 2312 will be used for RMDT communication

What exactly will be installed

The installation script will install three packages:

  • rmdt – a library, pipeclone and script to run tunnel
  • nmap – provides ncat utility used by tunnel
  • codemeter – a third party software protection module. You may want to download it by yourself, or learn more about it.

How does it work

Reliable Multi-Destination Transport (RMDT) protocol, which is used in pipeclone is UDP based. The protocol implemented as a user software, and therefore does not require any kernel modifications and can be easily installed on nearly every distribution of Linux.

From a network point of view, the data traffic, produced by pipeclone, is a simple stream of UDP datagrams. The entire logic, which ensures the reliability of data, congestion control, etc., is covered by the software.

Performance tips

There are many different aspects, which may improve the performance of data transmission. Here are some of them:

  • Depending on RTT between communication hosts, it may be necessary to increase the RMDT buffer size. The default size is 500MBytes. The value may be changed in $HOME/.dexor/pipeclone.ini
  • Best performance (beyond 10 Gbps) may be achieved if the network allows using Jumbo Frames. It is always better to use the maximum possible MTU size of connection for data transmission. MTU may be identified using e.g. tracepath utility. MTU size for pipeclone may be set in $HOME/.dexor/pipeclone.ini. The Default value is 1500 Bytes.
  • Extend queue size of your NIC from 1000 to, e.g. 3000
  • Extend receive and send buffers of system connections:
sysctl -w net.core.rmem_max=8388608;
sysctl -w net.core.wmem_max=8388608
  • Network performance sometimes is not the bottleneck of file transmission. To be able to send data with a certain rate, make sure that the sender’s storage can read on such a rate, and the receiver’s storage can write on such a rate.

Trial version limitation

This trial version does not perform any encryption of data.

The trial version will become unusable in 30 days from the first run.

Support

In case of any questions or issues, please contact support@dexor.io

Copyright notation

Copyright © 2019, Dexor S&M GmbH. All rights reserved.

We in Dexor believe that information in this document is accurate as of its publication date. We will keep the right to change this information without notice.

The information in this document is provided “as is”. Dexor S&M GmbH makes no warranties of any kind. Dexor S&M GmbH assumes no liability for damages, caused by errors or inaccuracies, or errors resulting from the use of the document, or resulting from the application described herein.

The information in this document is the property of Dexor S&M GmbH. It may not be used, reproduced, or disclosed without the written approval of Dexor S&M GmbH.


version of document: 1.0.3

publication date: 17.10.2019