Tsunami UDP Protocol – Installation, Setup and Limitations
Tsunami is one of several currently available UDP-based transfer protocols that were developed for high speed transfer over network paths that have a high bandwidth-delay product. Tsunami performs a file transfer by sectioning the file into numbered blocks of usually 32kB size. Communication between the client and server applications flows over a low bandwidth TCP connection. The bulk data is transferred over UDP. Most of the protocol intelligence is worked into the client code - the server simply sends out all blocks, and resends blocks that the client requests. The client specifies nearly all parameters of the transfer, such as the requested file name, target data rate, block size, target port, congestion behaviour, etc, and controls which blocks are requested from the server and when these requests are sent.
InstallationTsunami UDP installation is pretty straight forward, the current version of the source code can be found from their sourceforge website. We can CVS checkout the current version with following command
cvs -z3 -d:pserver:email@example.com:/cvsroot/tsunami-udp co -P tsunami-udp sudo apt-get install git gcc sudo apt-get install automake autoconf cd tsunami-udp ./recompile.sh sudo make install
SetupAn EC2 Instance with good or 10Gbit Ethernet network would be preferable to achieve higher transfer speed. TCP 22 and TCP/ UDP 46224 needs to be opened between server and client for communication and data transfer. On Server side start up the process with command
tsunamid --port 46224 * # (Serves all files from current directory for copy)On client side start the transfer
tsunami connect [server] get * # (copies all files served to current directory)Below are a few screen shots Maximum speed achieved 649.1Mbps CloudWatch Network utilization comparison between Tsunami UDP and SCP
- Tsunami UDP transfers only files and doesn’t do directories/ subdirectories, we need to tar them all up as one single tar file (additional storage capacity needs to be taken into consideration).
- Multi-threading is not supported.
- Multi session not supported. Client supports only one connection to the server at a time. No parallel file transfer.
- No resume or retry for file transfer.
- Does not support Native encryption.