Saturday, June 12, 2021

Bandwidth benchmark: Direct / SSH / ZeroTier / ZeroTier self-hosted / TailScale

Context

First post on Reddit, not sure to make it the right way.

I am not a member of any of the companies cited in this post, I am simply publishing the results of a quick test that I carried out on a personal basis.

It is a bandwidth comparison between a direct Internet connection, an SSH tunnel, ZeroTier, self-hosted ZeroTier and TailScale between my personal laptop and a remote server.

Test computer

Laptop:

  • Ubuntu 21.04
  • Ethernet conneciton: 1 Gbps

Speedtest measure:

  • Ping: 9 ms
  • Download: 904 Mbps
  • Upload: 157 Mbps

Test server

AWS instance :

  • t3.large instance
  • Ubuntu 20.04
  • Network burst bandwidth according to AWS: 5 Gbps

Speedtest measure:

  • Ping: 1.22 ms
  • Download: 4751 Mbps
  • Upload: 4772 Mbps

Measuring tool

Basic usage of iPerf3, other tests should be done to obtain more significant and complete measurements, do not hesitate to send your proposals and contributions.

iPerf3 command line used on the server side:

iperf3 -s 

iPerf3 command line used on the client side, 8 threads:

iperf3 -c <ip-address> -P 8 

The tests were run several times for each measurement to ensure that the results were not exceptional.

Direct access

Opening of the iPerf port, directly accessible from the Internet (unsecured connection). Results:

[ ID] Interval Transfer Bitrate [ 5] 0.00-10.03 sec 59.8 MBytes 50.1 Mbits/sec receiver [ 8] 0.00-10.03 sec 69.5 MBytes 58.2 Mbits/sec receiver [ 10] 0.00-10.03 sec 76.1 MBytes 63.7 Mbits/sec receiver [ 12] 0.00-10.03 sec 43.2 MBytes 36.1 Mbits/sec receiver [ 14] 0.00-10.03 sec 53.4 MBytes 44.7 Mbits/sec receiver [ 16] 0.00-10.03 sec 54.5 MBytes 45.6 Mbits/sec receiver [ 18] 0.00-10.03 sec 63.8 MBytes 53.4 Mbits/sec receiver [ 20] 0.00-10.03 sec 45.0 MBytes 37.7 Mbits/sec receiver [SUM] 0.00-10.03 sec 465 MBytes 389 Mbits/sec receiver 

SSH Tunnel mode

SSH tunnel established as follows:

ssh <login>@<ip-address> -L 15201:localhost:5201 

Results:

[ ID] Interval Transfer Bitrate [ 5] 0.00-10.18 sec 37.0 MBytes 30.5 Mbits/sec receiver [ 8] 0.00-10.18 sec 37.0 MBytes 30.5 Mbits/sec receiver [ 10] 0.00-10.18 sec 37.0 MBytes 30.5 Mbits/sec receiver [ 12] 0.00-10.18 sec 37.0 MBytes 30.5 Mbits/sec receiver [ 14] 0.00-10.18 sec 37.0 MBytes 30.5 Mbits/sec receiver [ 16] 0.00-10.18 sec 37.0 MBytes 30.5 Mbits/sec receiver [ 18] 0.00-10.18 sec 37.0 MBytes 30.5 Mbits/sec receiver [ 20] 0.00-10.18 sec 37.0 MBytes 30.5 Mbits/sec receiver [SUM] 0.00-10.18 sec 296 MBytes 244 Mbits/sec receiver 

ZeroTier

ZeroTier installation and access via the ZeroTier IP. Results:

[ ID] Interval Transfer Bitrate [ 5] 0.00-10.02 sec 12.6 MBytes 10.5 Mbits/sec receiver [ 8] 0.00-10.02 sec 12.7 MBytes 10.7 Mbits/sec receiver [ 10] 0.00-10.02 sec 13.1 MBytes 11.0 Mbits/sec receiver [ 12] 0.00-10.02 sec 12.5 MBytes 10.4 Mbits/sec receiver [ 14] 0.00-10.02 sec 11.8 MBytes 9.86 Mbits/sec receiver [ 16] 0.00-10.02 sec 11.4 MBytes 9.58 Mbits/sec receiver [ 18] 0.00-10.02 sec 13.1 MBytes 10.9 Mbits/sec receiver [ 20] 0.00-10.02 sec 13.8 MBytes 11.6 Mbits/sec receiver [SUM] 0.00-10.02 sec 101 MBytes 84.6 Mbits/sec receiver 

Self-hosted ZeroTier

ZeroTier is installed on a basic OVHCloud Sandbox VPS using a version of the controller and the ztncui interface, launched via Docker (GitHub available). Results:

[ ID] Interval Transfer Bitrate [ 5] 0.00-10.02 sec 41.9 MBytes 35.1 Mbits/sec receiver [ 8] 0.00-10.02 sec 41.2 MBytes 34.5 Mbits/sec receiver [ 10] 0.00-10.02 sec 36.7 MBytes 30.7 Mbits/sec receiver [ 12] 0.00-10.02 sec 40.0 MBytes 33.5 Mbits/sec receiver [ 14] 0.00-10.02 sec 37.8 MBytes 31.7 Mbits/sec receiver [ 16] 0.00-10.02 sec 41.9 MBytes 35.1 Mbits/sec receiver [ 18] 0.00-10.02 sec 38.2 MBytes 32.0 Mbits/sec receiver [ 20] 0.00-10.02 sec 40.3 MBytes 33.7 Mbits/sec receiver [SUM] 0.00-10.02 sec 318 MBytes 266 Mbits/sec receiver 

TailScale

Removing the ZeroTier client before testing TailScale. Installation of the TailScale client and access via its IP. Results:

[ ID] Interval Transfer Bitrate [ 5] 0.00-10.03 sec 42.5 MBytes 35.5 Mbits/sec receiver [ 8] 0.00-10.03 sec 64.3 MBytes 53.8 Mbits/sec receiver [ 10] 0.00-10.03 sec 43.6 MBytes 36.5 Mbits/sec receiver [ 12] 0.00-10.03 sec 71.6 MBytes 59.9 Mbits/sec receiver [ 14] 0.00-10.03 sec 51.6 MBytes 43.1 Mbits/sec receiver [ 16] 0.00-10.03 sec 49.9 MBytes 41.7 Mbits/sec receiver [ 18] 0.00-10.03 sec 65.6 MBytes 54.9 Mbits/sec receiver [ 20] 0.00-10.03 sec 47.9 MBytes 40.1 Mbits/sec receiver [SUM] 0.00-10.03 sec 437 MBytes 366 Mbits/sec receiver 

Comments

The ZeroTier measure is surprisingly low. The tests were done several times to validate the measurement, it did not change the result. It will probably be necessary to try again later.

ZeroTier via its managed and free offer is very complete in terms of management functionality, network splitting, etc... It is probably the most complete of this comparative at the moment.

The self-hosted version of ZeroTier with its own interface meets the basic need and works very well. However, you need to be willing to manage an additional server, which can be a barrier for some.

On the TailScale side, the free version allows you to easily connect different machines, and by relying on WireGuard and NAT magic, offers good performance. If you want to use different networks and accounts as it can be the case for ZeroTier in a native way, TailScale will not allow you to do it easily for the moment but the question is asked (here for example).

This short performance comparison is not complete and deserves more measurement and competitors, feel free to make your proposals.



No comments:

Post a Comment