UFTP - Encrypted UDP based FTP with multicast


UFTP is an encrypted multicast file transfer program, designed to securely, reliably, and efficiently transfer files to multiple receivers simultaneously. This is useful for distributing large files to a large number of receivers, and is especially useful for data distribution over a satellite link (with two way communication), where the inherent delay makes any TCP based communication highly inefficient. The multicast encryption scheme is based on TLS with extensions to allow multiple receivers to share a common key. UFTP also has the capability to communicate over disjoint networks separated by one or more firewalls (NAT traversal) and without full end-to-end multicast capability (multicast tunneling) through the use of a UFTP proxy server. These proxies also provide scalability by aggregating responses from a group of receivers.

UFTP is now hosted on SourceForge.

Protocol Summary

A UFTP session consists of 3 main phases: The Announce/Register phase, the File Transfer phase, and the Completion/Confirmation phase. The File Transfer phase additionally consists of the File Info phase and the Data Transfer phase for each file sent.

The Announce/Register phase sets up the multicast file transfer session and negotiates all encryption parameters. The server sends out an announcement over a public multicast address which the clients are expected to be listening on. All subsequent messages from the server go over a private multicast address specified in the announcement. Allowed clients send a registration to respond to the announcement. The server will then send either a confirmation message if encryption is disabled, or the encryption keys for the session if encryption is enabled. If the client receives the encryption keys, it sends an acknowledgment back to the server.

The File Transfer phase starts with the File Info phase for the first file to send. The server sends a message describing the file in question. Besides the name and size of the file, this message describes how the file will be broken down. A file is divided into a number of blocks, and these blocks are grouped into sections. A block is a piece of the file that is sent in a single packet, and a section is a grouping of blocks. The total number of blocks and sections is included in this message.

Continuing the File Transfer phase is the Data Transfer phase for the first file. Data packets, each of which is a block, are sent by the server at a rate specified by the user. Because UDP does not guarantee that packets will arrive in order, each block is numbered so the client can properly reassemble the file. When the server has finished sending all data packets, it sends a message to the clients indicating this.

When a client detects the end of a section or receives an end of file message from the server, and the client has detected one or more missing blocks, the client will send back a message containing a list of NAKs (negative acknowledgments). When the server receives NAKs from one or more clients, it goes back and retransmits any blocks that were NAKed, then continues on sending any untransmitted blocks. When a client has received the entire file, it sends a completion message in response to the server's end of file message. This continues until all clients have either send a completion message or have timed out after the server sent its end of file message.

The File Info phase and the Data Transfer phase are then repeated for each file to be sent during the session.

The Completion/Confirmation phase shuts down the session between the server and clients. It starts with a message from the server indication the end of the session. The clients then respond with a completion message, and the server responds to each completion with a confirmation message.


Documentation

Version 5.x

Protocol details
Server usage
Client usage
Proxy usage
Key management utility usage

Version 4.x

Protocol details
Server usage
Client usage
Proxy usage
Key management utility usage

Downloads

UFTP runs on Solaris, Linux, MacOSX/BSD, and Windows 7/8/10. Other UNIX-like operating systems should also work, possibly with minor tweaks. The source code is available in both .zip and .tar format, however the actual code is the same for both. Windows executables are also available for Windows 7 and up.

Version Release Date Source - tar Source - ZIP Windows 64-bit EXEs - ZIP
5.0.3 12/17/2023 uftp-5.0.3.tar.gz uftp_src-5.0.3.zip uftp_exe_W7_x64-5.0.3.zip
5.0.2 11/8/2023 uftp-5.0.2.tar.gz uftp_src-5.0.2.zip uftp_exe_W7_x64-5.0.2.zip
5.0.1 8/2/2022 uftp-5.0.1.tar.gz uftp_src-5.0.1.zip uftp_exe_W7_x64-5.0.1.zip
5.0 4/22/2020 uftp-5.0.tar.gz uftp_src-5.0.zip uftp_exe_W7_x64-5.0.zip

Version Release Date Source - tar Source - ZIP Windows XP EXEs - ZIP Windows 7 32-bit EXEs - ZIP Windows 7 64-bit EXEs - ZIP
4.10.2 4/5/2020 uftp-4.10.2.tar.gz uftp_src-4.10.2.zip uftp_exe_W7_i86-4.10.2.zip uftp_exe_W7_x64-4.10.2.zip
4.10.1 1/15/2020 uftp-4.10.1.tar.gz uftp_src-4.10.1.zip uftp_exe_W7_i86-4.10.1.zip uftp_exe_W7_x64-4.10.1.zip
4.10 7/10/2019 uftp-4.10.tar.gz uftp_src-4.10.zip uftp_exe_XP-4.10.zip uftp_exe_W7_i86-4.10.zip uftp_exe_W7_x64-4.10.zip
4.9.11 5/13/2019 uftp-4.9.11.tar.gz uftp_src-4.9.11.zip uftp_exe_XP-4.9.11.zip uftp_exe_W7_i86-4.9.11.zip uftp_exe_W7_x64-4.9.11.zip
4.9.10 5/9/2019 uftp-4.9.10.tar.gz uftp_src-4.9.10.zip uftp_exe_XP-4.9.10.zip uftp_exe_W7_i86-4.9.10.zip uftp_exe_W7_x64-4.9.10.zip
4.9.9 2/17/2019 uftp-4.9.9.tar.gz uftp_src-4.9.9.zip uftp_exe_XP-4.9.9.zip uftp_exe_W7_i86-4.9.9.zip uftp_exe_W7_x64-4.9.9.zip
4.9.8 8/29/2018 uftp-4.9.8.tar.gz uftp_src-4.9.8.zip uftp_exe_XP-4.9.8.zip uftp_exe_W7_i86-4.9.8.zip uftp_exe_W7_x64-4.9.8.zip
4.9.7 5/27/2018 uftp-4.9.7.tar.gz uftp_src-4.9.7.zip uftp_exe_XP-4.9.7.zip uftp_exe_W7_i86-4.9.7.zip uftp_exe_W7_x64-4.9.7.zip
4.9.6 4/17/2018 uftp-4.9.6.tar.gz uftp_src-4.9.6.zip uftp_exe_XP-4.9.6.zip uftp_exe_W7_i86-4.9.6.zip uftp_exe_W7_x64-4.9.6.zip
4.9.5 12/16/2017 uftp-4.9.5.tar.gz uftp_src-4.9.5.zip uftp_exe_XP-4.9.5.zip uftp_exe_W7_i86-4.9.5.zip uftp_exe_W7_x64-4.9.5.zip
4.9.4 10/7/2017 uftp-4.9.4.tar.gz uftp_src-4.9.4.zip uftp_exe_XP-4.9.4.zip uftp_exe_W7_i86-4.9.4.zip uftp_exe_W7_x64-4.9.4.zip
4.9.3 1/21/2017 uftp-4.9.3.tar.gz uftp_src-4.9.3.zip uftp_exe_XP-4.9.3.zip uftp_exe_W7_i86-4.9.3.zip uftp_exe_W7_x64-4.9.3.zip
4.9.2 4/3/2016 uftp-4.9.2.tar.gz uftp_src-4.9.2.zip uftp_exe_XP-4.9.2.zip uftp_exe_W7-4.9.2.zip
4.9.1 3/15/2016 uftp-4.9.1.tar.gz uftp_src-4.9.1.zip uftp_exe_XP-4.9.1.zip uftp_exe_W7-4.9.1.zip
4.9 2/28/2016 uftp-4.9.tar.gz uftp_src-4.9.zip uftp_exe_XP-4.9.zip uftp_exe_W7-4.9.zip
4.8.1 2/4/2016 uftp-4.8.1.tar uftp_src-4.8.1.zip uftp_exe_XP-4.8.1.zip uftp_exe_W7-4.8.1.zip
4.8 1/5/2016 uftp-4.8.tar uftp_src-4.8.zip uftp_exe_XP-4.8.zip uftp_exe_W7-4.8.zip
4.7 5/16/2015 uftp-4.7.tar uftp_src-4.7.zip uftp_exe_XP-4.7.zip uftp_exe_W7-4.7.zip
4.6.1 3/15/2015 uftp-4.6.1.tar uftp_src-4.6.1.zip uftp_exe_XP-4.6.1.zip uftp_exe_W7-4.6.1.zip
4.6 12/30/2014 uftp-4.6.tar uftp_src-4.6.zip uftp_exe_XP-4.6.zip uftp_exe_W7-4.6.zip
4.5.1 9/14/2014 uftp-4.5.1.tar uftp_src-4.5.1.zip uftp_exe_XP-4.5.1.zip uftp_exe_W7-4.5.1.zip
4.5 8/26/2014 uftp-4.5.tar uftp_src-4.5.zip uftp_exe_XP-4.5.zip uftp_exe_W7-4.5.zip
4.4 7/22/2014 uftp-4.4.tar uftp_src-4.4.zip uftp_exe_XP-4.4.zip uftp_exe_W7-4.4.zip
4.3.1 7/3/2014 uftp-4.3.1.tar uftp_src-4.3.1.zip uftp_exe_XP-4.3.1.zip uftp_exe_W7-4.3.1.zip
4.3 5/27/2014 uftp-4.3.tar uftp_src-4.3.zip uftp_exe_XP-4.3.zip uftp_exe_W7-4.3.zip
4.2 5/12/2014 uftp-4.2.tar uftp_src-4.2.zip uftp_exe_XP-4.2.zip uftp_exe_W7-4.2.zip
4.1.5 3/1/2014 uftp-4.1.5.tar uftp_src-4.1.5.zip uftp_exe_XP-4.1.5.zip uftp_exe_W7-4.1.5.zip
4.1.4 12/5/2013 uftp-4.1.4.tar uftp_src-4.1.4.zip uftp_exe_XP-4.1.4.zip uftp_exe_W7-4.1.4.zip
3.7.3 12/5/2013 uftp-3.7.3.tar uftp_src-3.7.3.zip uftp_exe-3.7.3.zip
4.1.3 10/13/2013 uftp-4.1.3.tar uftp_src-4.1.3.zip uftp_exe_XP-4.1.3.zip uftp_exe_W7-4.1.3.zip
4.1.2 8/20/2013 uftp-4.1.2.tar uftp_src-4.1.2.zip uftp_exe_XP-4.1.2.zip uftp_exe_W7-4.1.2.zip
4.1.1 8/8/2013 uftp-4.1.1.tar uftp_src-4.1.1.zip uftp_exe_XP-4.1.1.zip uftp_exe_W7-4.1.1.zip
4.1 7/30/2013 uftp-4.1.tar uftp_src-4.1.zip uftp_exe_XP-4.1.zip uftp_exe_W7-4.1.zip
4.0 4/27/2013 uftp-4.0.tar uftp_src-4.0.zip uftp_exe_XP-4.0.zip uftp_exe_W7-4.0.zip
3.7.2 3/17/2013 uftp-3.7.2.tar uftp_src-3.7.2.zip uftp_exe-3.7.2.zip
3.7.1 10/21/2012 uftp-3.7.1.tar uftp_src-3.7.1.zip uftp_exe-3.7.1.zip
3.7 6/28/2012 uftp-3.7.tar uftp_src-3.7.zip uftp_exe-3.7.zip
3.6.1 12/12/2011 uftp-3.6.1.tar uftp_src-3.6.1.zip uftp_exe-3.6.1.zip
3.6 12/3/2011 uftp-3.6.tar uftp_src-3.6.zip uftp_exe-3.6.zip
3.5.1 7/10/2011 uftp-3.5.1.tar uftp_src-3.5.1.zip uftp_exe-3.5.1.zip
3.5 6/17/2011 uftp-3.5.tar uftp_src-3.5.zip uftp_exe-3.5.zip
3.4.3 4/23/2011 uftp-3.4.3.tar uftp_src-3.4.3.zip uftp_exe-3.4.3.zip
3.4.2 3/29/2011 uftp-3.4.2.tar uftp_src-3.4.2.zip uftp_exe-3.4.2.zip
3.4.1 2/21/2011 uftp-3.4.1.tar uftp_src-3.4.1.zip uftp_exe-3.4.1.zip
3.4 12/18/2010 uftp-3.4.tar uftp_src-3.4.zip uftp_exe-3.4.zip
3.3.3 11/26/2010 uftp-3.3.3.tar uftp_src-3.3.3.zip uftp_exe-3.3.3.zip
3.3.2 10/13/2010 uftp-3.3.2.tar uftp_src-3.3.2.zip uftp_exe-3.3.2.zip
3.3.1 7/18/2010 uftp-3.3.1.tar uftp_src-3.3.1.zip uftp_exe-3.3.1.zip
3.3 7/8/2010 uftp-3.3.tar uftp_src-3.3.zip uftp_exe-3.3.zip
3.2.1 6/16/2010 uftp-3.2.1.tar uftp_src-3.2.1.zip uftp_exe-3.2.1.zip
3.2 5/30/2010 uftp-3.2.tar uftp_src-3.2.zip uftp_exe-3.2.zip
3.1 4/6/2010 uftp-3.1.tar uftp_src-3.1.zip uftp_exe-3.1.zip
3.0 3/11/2010 uftp-3.0.tar uftp_src-3.0.zip uftp_exe-3.0.zip
2.10.3 1/21/2010 uftp-2.10.3.tar uftp_src-2.10.3.zip uftp_exe-2.10.3.zip
2.10.2 11/3/2009 uftp-2.10.2.tar uftp_src-2.10.2.zip uftp_exe-2.10.2.zip

For the change history of UFTP, see the Changes.txt file.

All files are also available on the SourceForge files page

Upgrading

Version 5.x clients and proxies are backward compatible with 4.x servers. See the ReadMe.txt for more information.

Wireshark dissector

There is also a UFTP dissector available for Wireshark. Originally it was made available as an external plugin, but is now built into Wireshark 2.2 and later. See the dissector documentation for more details.


UFTP is licensed under the GNU General Public License (GPL). Commercial licenses are also available if needed.

If you have any questions or comments regarding UFTP (including bug reports), wish to be notified of updates, or if you wish to discuss commercial licensing or support, you can email the developer, Dennis Bush. You can also post to the discussion group. If you've found UFTP to be useful to you, please leave a review.

If you wish to make a donation, you may do so via PayPal by clicking the button below.
This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)
This product includes cryptographic software written by Eric Young (eay@cryptsoft.com)

Last update: December 17, 2023