Transfer Acceleration

Background

On the internet today there are two main protocols that are used: TCP and UDP.

TCP is the workhorse of the Internet. This protocol has reliability mechanisms built into it, meaning that the sender will automatically re-transmit a TCP package to the receiver if it got somehow lost on the way. When a recipient receives a TCP package an ACK (Acknowledge) message is sent to the sender, so that the sender knows that this package was delivered correctly. This relatively simple mechanism makes the TCP protocol very reliable and easy to use for developers. Sending these ACK messages to the sender can seriously limit performance (since the sender must wait for the ACK of package1 before sending package2) – so many improvements to this protocol have been made throughout the years. Some of the most important characteristics of a modern TCP implementation is:

  • Scalable Window Size enables the sender to send multiple packages at a time and wait for multiple ACK’s at the same time. The data that is sent but not yet ACKed is often referred to Data In Flight – the sender has a limit of how much data it can have in flight, meaning that the sender does not send data to the receiver any faster than the receiver can receive it.

  • Bandwidth throttling essentially enables a 10 mbit client to communicate with a 1000 mbit server without being totally overwhelmed with traffic from the server. In TCP it is based on the idea that there should only be a certain number of data in flight at any given time.

  • Selective ACKs enable the recipient to receive and ACK packages in any order. If package1 got lost then it does not hinder package2 to be sent and ACKed before resending package1.

Firewalls, Routers and Switches are heavily optimized for TCP traffic - making it the natural choice for most tasks done on the internet today. Web browsers, Email clients, Facebook, Instagram, Snapchat, Stock tickers, Spotify, Slack and FTP Clients are some of the applications which typically use TCP.

There is a drawback though. When sending TCP traffic over a large geographical distance the performance drops significantly. The reason for this is that the traffic (and ACKs) must travel through a lot more routers and network infrastructure in order to get to the recipient – and this takes time.

The time it takes is often referred to as latency. If you are browsing a website hosted in the same country the latency is sometimes as low as 10 milliseconds. When you are browsing a website that is hosted on another continent then you’ll immediately see that the pages take long to load due to increased latency.

The latency problem of TCP becomes extremely apparent when transferring files across continents. Both the sender and the recipient might be on amazing 1000/1000 megabit connections – but they get only 10 megabit effective network bandwidth when transferring files due to latency that prevents them from communicating effectively when using TCP.

UDP is the sibling of TCP. The main difference is that a UDP package is never ACK’ed. The sender has no idea if the UDP package made it to the recipient – it is not a reliable protocol at all. But it is blazing fast, since there is no ACK’ing. UDP is a great at video calls and online games. In these cases, it does not matter if a few UDP packages are dropped. The UDP packages are continuously sent – so you won’t even notice it in the video stream. Same with online games – you’ll get a new UDP package with the latest updates within a few milliseconds. Loosing a few UDP packages every now and then isn’t a problem. It’s more important to transfer data quickly with the lowest latency possible.

UDP initially might seem like a horrible choice for file transfer. The total lack of reliability would mean corrupt files all over the place because of dropped UDP packages. The lack of bandwidth throttling would lead to clients being flooded with traffic and essentially going offline. For UDP to be useful for transferring files it needs to be reliable the same way TCP is. For a start the dropped packages need to be resent and bandwidth throttling must be possible. Security needs to be addressed as well.

Filemail UDP Acceleration Protocol (UAP)

The Filemail UDP Acceleration Protocol (UAP) is a custom-made file transfer protocol built on top of UDP that offers blazing fast transfer speeds even in high latency environments. It easily outperforms all TCP based protocols such as HTTP and FTP – especially when sending files across large geographical distances where the latency creeps above 50 ms.

Benchmarks

Benchmarks show that Filemail UDP is sometimes up to 200 times faster than FTP, HTTP and other transfer methods based on TCP.

Effective transfer bandwidth when transferring files from Europe to Australia across 21 network hops. Both ends are connected on a 1000/1000 mbit connection.

Filemail UAP is built from bottom up with one goal in mind: transferring files extremely fast from A to B in the most secure and most reliable way possible. Below are some of the characteristic of this revolutionizing protocol.

Unofficial comparisons to UDP-based transfer solutions by IBM Aspera and Signiant show that Filemail is faster in pretty much all cases. Some of the performance differences might be due to Filemail utilizing hardware acceleration as well – by specifically using the AES-NI instruction set. Also the protocols of IBM Aspera and Signiant uses a separate TCP channel (SSH) in order to do bandwidth throttling, ACK’ing etc. Filemail UAP does not rely on the slower TCP protocol – it uses UDP for transferring data, ACK’ing, bandwidth throttling and encryption.

Security

All UDP data traffic is protected by AES Galois/Counter Mode (AES-GCM) encryption. This is the gold standard within encryption as of today and it ensures that the data being transferred can’t be intercepted by a third party. Each transfer session has a separate key, the key is exchanged between client and server using Rivest-Shamir-Adleman (RSA) encryption.

Hardware accelerated encryption

Filemail UAP utilizes the AES-NI instruction set introduced by AMD and Intel a few years back. This instruction set enables Filemail UAP to use dedicated hardware components for encryption and decryption of data. This makes a huge difference when it comes to transfer speeds. AES-NI is supported on operating systems such as Microsoft Windows, macOS, Linux, iOS and Android. Hardware manufacturers such as Intel, AMD, ARM, VIA, Atmel, Samsung, Qualcomm, NXP and Broadcom supports it as well.

Software and hardware requirements

Filemail UAP is written in low level C++ and can run on virtually all devices and operating systems. Binary releases are currently available for Windows, macOS and Linux. Filemail Desktop is our flagship transfer tool that utilizes UAP. Console applications are also available. The Filemail UAP has been heavily optimized and has an extremely low memory footprint of only a few megabytes, while still maximizing bandwidth throughput. It also typically uses less than 5% CPU when sending files at max speed.

Bi-directional transfer acceleration

Filemail UAP is used both when uploading and downloading files with Filemail Desktop. This means that you AND your customers and business partners can take advantage of this technology.

Getting started with Filemail UAP

Filemail UAP is integrated into our Filemail Desktop application and it’s enabled automatically when sending and downloading files. Filemail Desktop is free to use and does not require a login. Transfer acceleration to the people.