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)
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.
pipeclone will be installed system-wide.
Note: installation requires superuser rights.
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>
now everything that will occur on stdin of the sender will appear on the stdout of the receiver.
for more details run
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
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:
________ ________ | | | | |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
host names and commands according to the topology:
- on server: ensure SSH server is running on port 22
- on ss-relay:
dexor tunnel --port 4436 rmdt://cs-relay:4453 tcp://server:22
- on cs-relay:
dexor tunnel --port 4453 tcp://:2202 rmdt://ss-relay:4436
- 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>
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
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.
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
- 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.
tracepathutility. MTU size for
pipeclonemay 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.
In case of any questions or issues, please contact email@example.com
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