This article explains why your offsite sync processes are not progressing at a rate on par with the average bandwidth of your external connection. It is generally understood that, if the upload speed of a connection is 50 Mbps, the upload rate to our offsite servers should reflect this. However, there are other factors which play a part in the overall travel time from one site to another. Let's begin with the definitions of both Bandwidth and Throughput.
Definitions and Foundation
This article requires a general knowledge of the following topics:
- TCP window size (buffer)
- Round Trip Time
- Bandwidth: The advertised rate of data transfer measured in bits per second.
- Throughput: The average rate of successful data transfer over a communication channel.
In a nutshell, bandwidth is the rate of transfer for a connection, and throughput is the theoretical average rate of travel for data for a given instance. When calculating Throughput, the value can never be higher than the bandwidth; it can only be less than or equal to.
There are a couple of factors to take into consideration when dealing with theoretical Throughput:
- TCP window size
- Round Trip Time (RTT)
For Datto devices, physical and virtual, TCP window size is fixed at 64 Kb (65535 bytes), so this will be a static value in all throughput calculations. The RTT can be determined by pinging a destination to test against.
ping server1492.dattobackup.com PING server1492.dattobackup.com (18.104.22.168) 56(84) bytes of data. 64 bytes from 22.214.171.124: icmp_seq=3 ttl=51 time=9.86 ms 64 bytes from 126.96.36.199: icmp_seq=4 ttl=51 time=9.84 ms 64 bytes from 188.8.131.52: icmp_seq=5 ttl=51 time=9.76 ms 64 bytes from 184.108.40.206: icmp_seq=6 ttl=51 time=9.76 ms
While you can average out the RTT values for as many pings as you like (the average for this ping sequence is 9.805), selecting an RTT value that looks to be common among the others in your ping test would suffice.
Once we have our RTT average/value, we can carry out our calculation to get our throughput. Keep in mind that we will want to plug in our TCP window size in bytes, and our RTT in seconds, for this calculation.
65535/0.009805 = 6683834.778174401 bytes
6683834.778174401/1048576 = 6.37MBps
Upon converting to MB and rounding up, we see that the Throughput between sites would be 6.37MBps.
How This Applies To Offsite Syncing
When it comes to offsite data transfer with our backup solution, throughput speeds heavily rely on the Round Trip Time values. The lower the RTT value, the less time the data has to travel, the quicker the offsite data gets to our data center. Bandwidth, regardless of the upload rate, has a smaller impact on the overall Throughput, especially if the RTT is high. Let's look at an example where we have a very high upload rate and high RTT value.
TCP window size = 64kB,Tx = 100Mbps, RTT = 705ms 65535/.705 = 92957.446808511 bytes Converted to MBps: 0.08865112953997707 Converted to Mbps: 0.74365957446808794717
In this example, because the time it takes for data to travel in this network circuit is substantial in length, the maximum rate for the throughput is only 0.74 Mbps. That's under 1 percent of the total bandwidth being used.
Should the throughput be detrimental to the point where your offsite chains will never catch up on time, Datto Technical Support can intervene and make changes to the Datto device to dynamically size TCP windows if necessary.