IPsec/Benchmarks
Inspired by the WireGuard benchmarks[1], let's add a few of our own here. Our test setup are two VirtualBox VMs on the same host, both configured to use virtio-net as their network device, running at 1 Gbps.
Plain
sid0# iperf3 -fM -c ubuntu0
Connecting to host ubuntu0, port 5201
[ 5] local 192.168.56.130 port 35904 connected to 192.168.56.144 port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 899 MBytes 898 MBytes/sec 7789 185 KBytes
[ 5] 1.00-2.00 sec 952 MBytes 952 MBytes/sec 9227 209 KBytes
[ 5] 2.00-3.00 sec 860 MBytes 860 MBytes/sec 5685 433 KBytes
[ 5] 3.00-4.00 sec 534 MBytes 534 MBytes/sec 6067 204 KBytes
[ 5] 4.00-5.00 sec 862 MBytes 863 MBytes/sec 7912 218 KBytes
[ 5] 5.00-6.00 sec 882 MBytes 882 MBytes/sec 10276 431 KBytes
[ 5] 6.00-7.00 sec 948 MBytes 947 MBytes/sec 8709 191 KBytes
[ 5] 7.00-8.00 sec 966 MBytes 966 MBytes/sec 8648 188 KBytes
[ 5] 8.00-9.00 sec 934 MBytes 934 MBytes/sec 8985 465 KBytes
[ 5] 9.00-10.00 sec 945 MBytes 945 MBytes/sec 12339 184 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 8.58 GBytes 878 MBytes/sec 85637 sender
[ 5] 0.00-10.00 sec 8.57 GBytes 878 MBytes/sec receiver
iperf Done.
Hm, what's with the retries number there?
ipsec-tools
setkey
Just with the SPD loaded:
sid0# iperf3 -fM -c ubuntu0 Connecting to host ubuntu0, port 5201 [ 5] local 192.168.56.130 port 42070 connected to 192.168.56.144 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.01 sec 31.8 MBytes 31.4 MBytes/sec 0 325 KBytes [ 5] 1.01-2.03 sec 33.5 MBytes 33.1 MBytes/sec 0 360 KBytes [ 5] 2.03-3.04 sec 33.0 MBytes 32.7 MBytes/sec 0 453 KBytes [ 5] 3.04-4.03 sec 31.8 MBytes 32.0 MBytes/sec 0 549 KBytes [ 5] 4.03-5.04 sec 32.5 MBytes 32.3 MBytes/sec 0 549 KBytes [ 5] 5.04-6.03 sec 31.2 MBytes 31.4 MBytes/sec 0 549 KBytes [ 5] 6.03-7.03 sec 32.9 MBytes 32.8 MBytes/sec 0 682 KBytes [ 5] 7.03-8.01 sec 31.2 MBytes 31.8 MBytes/sec 0 682 KBytes [ 5] 8.01-9.02 sec 31.2 MBytes 31.2 MBytes/sec 0 751 KBytes [ 5] 9.02-10.03 sec 32.5 MBytes 32.2 MBytes/sec 0 751 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.03 sec 322 MBytes 32.1 MBytes/sec 0 sender [ 5] 0.00-10.03 sec 322 MBytes 32.1 MBytes/sec receiver iperf Done.
racoon
With racoon enabled:
sid0# iperf3 -fM -c 172.16.2.1 Connecting to host 172.16.2.1, port 5201 [ 5] local 172.16.1.1 port 53618 connected to 172.16.2.1 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.01 sec 31.2 MBytes 30.8 MBytes/sec 0 287 KBytes [ 5] 1.01-2.04 sec 30.7 MBytes 29.8 MBytes/sec 0 317 KBytes [ 5] 2.04-3.00 sec 29.2 MBytes 30.4 MBytes/sec 0 471 KBytes [ 5] 3.00-4.01 sec 31.2 MBytes 31.1 MBytes/sec 0 534 KBytes [ 5] 4.01-5.04 sec 30.0 MBytes 29.0 MBytes/sec 0 561 KBytes [ 5] 5.04-6.00 sec 27.5 MBytes 28.6 MBytes/sec 0 662 KBytes [ 5] 6.00-7.03 sec 31.2 MBytes 30.3 MBytes/sec 0 662 KBytes [ 5] 7.03-8.01 sec 28.8 MBytes 29.3 MBytes/sec 0 820 KBytes [ 5] 8.01-9.01 sec 29.7 MBytes 29.8 MBytes/sec 0 927 KBytes [ 5] 9.01-10.01 sec 30.0 MBytes 30.2 MBytes/sec 157 649 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.01 sec 300 MBytes 29.9 MBytes/sec 157 sender [ 5] 0.00-10.01 sec 300 MBytes 29.9 MBytes/sec receiver iperf Done.
iproute2
With only iproute2 used for configuration:
sid0# iperf3 -fM -c 172.16.2.1 Connecting to host 172.16.2.1, port 5201 [ 5] local 172.16.1.1 port 57128 connected to 172.16.2.1 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.01 sec 35.6 MBytes 35.4 MBytes/sec 0 216 KBytes [ 5] 1.01-2.02 sec 37.0 MBytes 36.5 MBytes/sec 0 317 KBytes [ 5] 2.02-3.01 sec 35.7 MBytes 36.1 MBytes/sec 0 389 KBytes [ 5] 3.01-4.01 sec 36.0 MBytes 35.9 MBytes/sec 0 408 KBytes [ 5] 4.01-5.02 sec 31.2 MBytes 30.9 MBytes/sec 0 483 KBytes [ 5] 5.02-6.01 sec 35.0 MBytes 35.4 MBytes/sec 0 483 KBytes [ 5] 6.01-7.03 sec 33.2 MBytes 32.7 MBytes/sec 24 421 KBytes [ 5] 7.03-8.02 sec 33.2 MBytes 33.7 MBytes/sec 0 448 KBytes [ 5] 8.02-9.01 sec 32.5 MBytes 32.8 MBytes/sec 0 486 KBytes [ 5] 9.01-10.00 sec 33.5 MBytes 33.6 MBytes/sec 0 491 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 343 MBytes 34.3 MBytes/sec 24 sender [ 5] 0.00-10.00 sec 343 MBytes 34.3 MBytes/sec receiver iperf Done.
Performance can be increased somewhat when using AES in CTR mode[2] instead:
sid0# iperf3 -fM -c 172.16.2.1 Connecting to host 172.16.2.1, port 5201 [ 5] local 172.16.1.1 port 57238 connected to 172.16.2.1 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.03 sec 41.5 MBytes 40.3 MBytes/sec 0 377 KBytes [ 5] 1.03-2.02 sec 41.5 MBytes 41.8 MBytes/sec 0 633 KBytes [ 5] 2.02-3.01 sec 41.2 MBytes 41.8 MBytes/sec 0 633 KBytes [ 5] 3.01-4.03 sec 41.1 MBytes 40.4 MBytes/sec 0 689 KBytes [ 5] 4.03-5.02 sec 42.5 MBytes 42.9 MBytes/sec 0 689 KBytes [ 5] 5.02-6.01 sec 38.8 MBytes 39.1 MBytes/sec 29 485 KBytes [ 5] 6.01-7.01 sec 40.0 MBytes 40.1 MBytes/sec 0 485 KBytes [ 5] 7.01-8.03 sec 39.6 MBytes 38.5 MBytes/sec 26 431 KBytes [ 5] 8.03-9.00 sec 38.8 MBytes 40.0 MBytes/sec 0 471 KBytes [ 5] 9.00-10.03 sec 38.8 MBytes 37.8 MBytes/sec 0 471 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.03 sec 404 MBytes 40.3 MBytes/sec 55 sender [ 5] 0.00-10.03 sec 404 MBytes 40.3 MBytes/sec receiver iperf Done.
Libreswan
A simple Libreswan VPN, with standard ciphers being used:
000 "test": IKE algorithm newest: AES_CBC_256-HMAC_SHA2_256-MODP2048 000 "test": ESP algorithm newest: AES_CBC_128-HMAC_SHA1_96; pfsgroup=<Phase1>
sid0# iperf3 -fM -c ubuntu0 Connecting to host ubuntu0, port 5201 [ 5] local 192.168.56.130 port 35976 connected to 192.168.56.144 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 81.0 MBytes 80.7 MBytes/sec 0 287 KBytes [ 5] 1.00-2.00 sec 81.5 MBytes 81.6 MBytes/sec 42 250 KBytes [ 5] 2.00-3.01 sec 84.8 MBytes 84.5 MBytes/sec 0 311 KBytes [ 5] 3.01-4.01 sec 83.9 MBytes 83.2 MBytes/sec 28 260 KBytes [ 5] 4.01-5.00 sec 82.7 MBytes 83.7 MBytes/sec 0 288 KBytes [ 5] 5.00-6.00 sec 84.9 MBytes 84.7 MBytes/sec 0 307 KBytes [ 5] 6.00-7.02 sec 87.5 MBytes 86.4 MBytes/sec 14 244 KBytes [ 5] 7.02-8.00 sec 83.1 MBytes 84.6 MBytes/sec 0 275 KBytes [ 5] 8.00-9.00 sec 83.0 MBytes 82.8 MBytes/sec 0 299 KBytes [ 5] 9.00-10.01 sec 84.8 MBytes 84.5 MBytes/sec 11 222 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.01 sec 837 MBytes 83.7 MBytes/sec 95 sender [ 5] 0.00-10.01 sec 837 MBytes 83.7 MBytes/sec receiver iperf Done.
We can increase performance with a different cipher set:
000 "test": IKE algorithms: AES_GCM_16_256-HMAC_SHA2_256-MODP2048 000 "test": IKEv2 algorithm newest: AES_GCM_16_256-HMAC_SHA2_256-MODP2048 000 "test": ESP algorithm newest: AES_GCM_16_256-NONE; pfsgroup=<Phase1>
sid0# iperf3 -fM -c ubuntu0 Connecting to host ubuntu0, port 5201 [ 5] local 192.168.56.130 port 35990 connected to 192.168.56.144 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 154 MBytes 154 MBytes/sec 34 264 KBytes [ 5] 1.00-2.00 sec 153 MBytes 153 MBytes/sec 61 216 KBytes [ 5] 2.00-3.00 sec 148 MBytes 148 MBytes/sec 40 264 KBytes [ 5] 3.00-4.00 sec 152 MBytes 152 MBytes/sec 60 257 KBytes [ 5] 4.00-5.01 sec 151 MBytes 149 MBytes/sec 38 244 KBytes [ 5] 5.01-6.00 sec 145 MBytes 147 MBytes/sec 70 285 KBytes [ 5] 6.00-7.00 sec 151 MBytes 150 MBytes/sec 44 267 KBytes [ 5] 7.00-8.01 sec 156 MBytes 154 MBytes/sec 49 294 KBytes [ 5] 8.01-9.00 sec 148 MBytes 149 MBytes/sec 41 314 KBytes [ 5] 9.00-10.01 sec 157 MBytes 156 MBytes/sec 25 240 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.01 sec 1.48 GBytes 151 MBytes/sec 462 sender [ 5] 0.00-10.01 sec 1.48 GBytes 151 MBytes/sec receiver iperf Done.
strongSwan
A simple strongSwan host-to-host VPN, with standard ciphers being used:
test[1]: IKE proposal: AES_CBC_128/HMAC_SHA2_256_128/PRF_AES128_XCBC/ECP_256 test{2}: AES_CBC_128/HMAC_SHA2_256_128, 1312215 bytes_i (40352 pkts, 3s ago), 600088093 bytes_o (419598 pkts, 13s ago), rekeying in 43 minutes
sid0# iperf3 -fM -c ubuntu0 Connecting to host ubuntu0, port 5201 [ 5] local 192.168.56.130 port 36040 connected to 192.168.56.144 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.01 sec 49.1 MBytes 48.4 MBytes/sec 0 662 KBytes [ 5] 1.01-2.02 sec 54.6 MBytes 54.3 MBytes/sec 171 342 KBytes [ 5] 2.02-3.03 sec 54.2 MBytes 53.9 MBytes/sec 27 286 KBytes [ 5] 3.03-4.01 sec 55.3 MBytes 56.2 MBytes/sec 0 313 KBytes [ 5] 4.01-5.02 sec 54.6 MBytes 54.1 MBytes/sec 16 270 KBytes [ 5] 5.02-6.01 sec 54.8 MBytes 55.3 MBytes/sec 0 297 KBytes [ 5] 6.01-7.01 sec 53.5 MBytes 53.4 MBytes/sec 7 269 KBytes [ 5] 7.01-8.01 sec 54.5 MBytes 54.5 MBytes/sec 0 291 KBytes [ 5] 8.01-9.00 sec 51.8 MBytes 52.5 MBytes/sec 25 246 KBytes [ 5] 9.00-10.02 sec 57.8 MBytes 56.6 MBytes/sec 0 313 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.02 sec 540 MBytes 53.9 MBytes/sec 246 sender [ 5] 0.00-10.02 sec 540 MBytes 53.9 MBytes/sec receiver iperf Done.
With a more modern cipher being used, speed is doubled:
test[1]: IKE proposal: AES_GCM_16_128/PRF_HMAC_SHA2_256/ECP_256 test{2}: AES_GCM_16_128, 1388034 bytes_i (40358 pkts, 78s ago), 1351933570 bytes_o (935419 pkts, 88s ago), rekeying in 43 minutes
sid0# iperf3 -fM -c ubuntu0 Connecting to host ubuntu0, port 5201 [ 5] local 192.168.56.130 port 36046 connected to 192.168.56.144 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 129 MBytes 129 MBytes/sec 202 251 KBytes [ 5] 1.00-2.00 sec 130 MBytes 130 MBytes/sec 20 329 KBytes [ 5] 2.00-3.00 sec 141 MBytes 141 MBytes/sec 55 249 KBytes [ 5] 3.00-4.00 sec 124 MBytes 124 MBytes/sec 29 296 KBytes [ 5] 4.00-5.00 sec 123 MBytes 124 MBytes/sec 45 265 KBytes [ 5] 5.00-6.00 sec 103 MBytes 103 MBytes/sec 9 287 KBytes [ 5] 6.00-7.00 sec 131 MBytes 130 MBytes/sec 57 294 KBytes [ 5] 7.00-8.01 sec 120 MBytes 120 MBytes/sec 55 293 KBytes [ 5] 8.01-9.00 sec 131 MBytes 131 MBytes/sec 13 211 KBytes [ 5] 9.00-10.00 sec 130 MBytes 130 MBytes/sec 40 264 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 1.23 GBytes 126 MBytes/sec 525 sender [ 5] 0.00-10.00 sec 1.23 GBytes 126 MBytes/sec receiver iperf Done.
WireGuard
Using WireGuard for a host-to-host VPN:
sid0# iperf3 -fM -c 172.16.2.1 Connecting to host 172.16.2.1, port 5201 [ 5] local 172.16.1.1 port 57434 connected to 172.16.2.1 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 141 MBytes 141 MBytes/sec 82 290 KBytes [ 5] 1.00-2.00 sec 139 MBytes 139 MBytes/sec 89 281 KBytes [ 5] 2.00-3.00 sec 141 MBytes 141 MBytes/sec 70 385 KBytes [ 5] 3.00-4.00 sec 144 MBytes 144 MBytes/sec 46 322 KBytes [ 5] 4.00-5.00 sec 130 MBytes 130 MBytes/sec 10 405 KBytes [ 5] 5.00-6.00 sec 136 MBytes 136 MBytes/sec 119 256 KBytes [ 5] 6.00-7.00 sec 117 MBytes 117 MBytes/sec 38 281 KBytes [ 5] 7.00-8.00 sec 128 MBytes 128 MBytes/sec 80 367 KBytes [ 5] 8.00-9.00 sec 137 MBytes 137 MBytes/sec 71 335 KBytes [ 5] 9.00-10.00 sec 135 MBytes 135 MBytes/sec 31 310 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 1.32 GBytes 135 MBytes/sec 636 sender [ 5] 0.00-10.00 sec 1.31 GBytes 135 MBytes/sec receiver iperf Done.
...Can this be tuned somehow?
OpenVPN
A simple OpenVPN host-to-host tunnel using static keys, where only CBC ciphers are supported:
sid0# iperf3 -fM -c 172.16.0.2 Connecting to host 172.16.0.2, port 5201 [ 5] local 172.16.0.1 port 49230 connected to 172.16.0.2 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 25.7 MBytes 25.7 MBytes/sec 11 115 KBytes [ 5] 1.00-2.00 sec 25.8 MBytes 25.8 MBytes/sec 25 80.3 KBytes [ 5] 2.00-3.00 sec 22.7 MBytes 22.7 MBytes/sec 10 120 KBytes [ 5] 3.00-4.00 sec 23.5 MBytes 23.5 MBytes/sec 19 79.0 KBytes [ 5] 4.00-5.00 sec 22.4 MBytes 22.4 MBytes/sec 13 94.5 KBytes [ 5] 5.00-6.00 sec 22.6 MBytes 22.6 MBytes/sec 12 82.9 KBytes [ 5] 6.00-7.00 sec 22.2 MBytes 22.2 MBytes/sec 27 84.2 KBytes [ 5] 7.00-8.00 sec 23.4 MBytes 23.4 MBytes/sec 15 106 KBytes [ 5] 8.00-9.00 sec 22.9 MBytes 22.9 MBytes/sec 21 98.4 KBytes [ 5] 9.00-10.00 sec 22.4 MBytes 22.4 MBytes/sec 16 82.9 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 234 MBytes 23.4 MBytes/sec 169 sender [ 5] 0.00-10.00 sec 234 MBytes 23.4 MBytes/sec receiver iperf Done.
When using TLS, faster GCM ciphers can be used and performance is doubled:
sid0# iperf3 -fM -c 172.16.0.2 Connecting to host 172.16.0.2, port 5201 [ 5] local 172.16.0.1 port 49294 connected to 172.16.0.2 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 50.8 MBytes 50.8 MBytes/sec 110 67.2 KBytes [ 5] 1.00-2.00 sec 50.3 MBytes 50.3 MBytes/sec 153 84.3 KBytes [ 5] 2.00-3.00 sec 49.8 MBytes 49.8 MBytes/sec 125 77.7 KBytes [ 5] 3.00-4.00 sec 51.0 MBytes 51.0 MBytes/sec 156 83.0 KBytes [ 5] 4.00-5.00 sec 45.9 MBytes 45.9 MBytes/sec 103 111 KBytes [ 5] 5.00-6.00 sec 46.1 MBytes 46.1 MBytes/sec 69 77.7 KBytes [ 5] 6.00-7.00 sec 48.0 MBytes 48.1 MBytes/sec 106 112 KBytes [ 5] 7.00-8.00 sec 49.1 MBytes 49.1 MBytes/sec 121 96.2 KBytes [ 5] 8.00-9.00 sec 46.3 MBytes 46.3 MBytes/sec 78 109 KBytes [ 5] 9.00-10.00 sec 38.9 MBytes 38.9 MBytes/sec 38 100 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 476 MBytes 47.6 MBytes/sec 1059 sender [ 5] 0.00-10.00 sec 476 MBytes 47.6 MBytes/sec receiver iperf Done.
SSH
A simple SSH based host-to-host tunnel:
# iperf3 -fM -c 10.0.0.20 Connecting to host 10.0.0.20, port 5201 [ 5] local 10.0.0.10 port 45868 connected to 10.0.0.20 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 22.6 MBytes 22.6 MBytes/sec 12 607 KBytes [ 5] 1.00-2.00 sec 32.5 MBytes 32.5 MBytes/sec 0 694 KBytes [ 5] 2.00-3.00 sec 31.2 MBytes 31.2 MBytes/sec 9 535 KBytes [ 5] 3.00-4.00 sec 35.0 MBytes 35.0 MBytes/sec 0 578 KBytes [ 5] 4.00-5.00 sec 36.2 MBytes 36.2 MBytes/sec 0 625 KBytes [ 5] 5.00-6.00 sec 35.0 MBytes 35.0 MBytes/sec 0 666 KBytes [ 5] 6.00-7.00 sec 36.2 MBytes 36.3 MBytes/sec 0 708 KBytes [ 5] 7.00-8.00 sec 31.2 MBytes 31.2 MBytes/sec 12 551 KBytes [ 5] 8.00-9.00 sec 30.0 MBytes 30.0 MBytes/sec 0 618 KBytes [ 5] 9.00-10.00 sec 31.2 MBytes 31.3 MBytes/sec 0 663 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 321 MBytes 32.1 MBytes/sec 33 sender [ 5] 0.00-10.00 sec 318 MBytes 31.8 MBytes/sec receiver iperf Done.
With different parameters the connection speed can be somewhat increased:
$ ssh -oCiphers=aes128-ctr -oMACs=hmac-sha1 -oKexAlgorithms=diffie-hellman-group14-sha1 [...]
# iperf3 -fM -c 10.0.0.20 Connecting to host 10.0.0.20, port 5201 [ 5] local 10.0.0.10 port 45886 connected to 10.0.0.20 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 24.8 MBytes 24.8 MBytes/sec 57 563 KBytes [ 5] 1.00-2.00 sec 32.5 MBytes 32.5 MBytes/sec 0 642 KBytes [ 5] 2.00-3.00 sec 33.8 MBytes 33.8 MBytes/sec 0 700 KBytes [ 5] 3.00-4.00 sec 36.2 MBytes 36.2 MBytes/sec 9 525 KBytes [ 5] 4.00-5.00 sec 40.0 MBytes 40.0 MBytes/sec 0 581 KBytes [ 5] 5.00-6.00 sec 41.2 MBytes 41.2 MBytes/sec 0 632 KBytes [ 5] 6.00-7.00 sec 38.8 MBytes 38.8 MBytes/sec 0 679 KBytes [ 5] 7.00-8.00 sec 38.8 MBytes 38.8 MBytes/sec 1 526 KBytes [ 5] 8.00-9.00 sec 35.0 MBytes 35.0 MBytes/sec 0 594 KBytes [ 5] 9.00-10.00 sec 33.8 MBytes 33.8 MBytes/sec 0 642 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 355 MBytes 35.5 MBytes/sec 67 sender [ 5] 0.00-10.00 sec 352 MBytes 35.2 MBytes/sec receiver iperf Done.
sshuttle
A simple sshuttle based host-to-host tunnel:
$ iperf3 -fM -c 10.0.0.20 Connecting to host 10.0.0.20, port 5201 [ 4] local 10.0.0.10 port 56050 connected to 10.0.0.20 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 22.1 MBytes 22.1 MBytes/sec 0 3.44 MBytes [ 4] 1.00-2.00 sec 16.0 MBytes 16.0 MBytes/sec 0 3.44 MBytes [ 4] 2.00-3.00 sec 15.8 MBytes 15.8 MBytes/sec 0 3.44 MBytes [ 4] 3.00-4.00 sec 13.6 MBytes 13.6 MBytes/sec 0 3.44 MBytes [ 4] 4.00-5.00 sec 15.0 MBytes 15.0 MBytes/sec 0 3.44 MBytes [ 4] 5.00-6.00 sec 15.0 MBytes 15.0 MBytes/sec 0 3.44 MBytes [ 4] 6.00-7.00 sec 14.4 MBytes 14.4 MBytes/sec 0 3.44 MBytes [ 4] 7.00-8.00 sec 15.2 MBytes 15.2 MBytes/sec 0 3.44 MBytes [ 4] 8.00-9.00 sec 13.6 MBytes 13.6 MBytes/sec 0 3.44 MBytes [ 4] 9.00-10.00 sec 12.4 MBytes 12.4 MBytes/sec 0 3.44 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 153 MBytes 15.3 MBytes/sec 0 sender [ 4] 0.00-10.00 sec 145 MBytes 14.5 MBytes/sec receiver iperf Done.
Different SSH parameters do not seem to change the results:
$ sshuttle -v -e "ssh -oCiphers=aes128-ctr -oMACs=hmac-sha1 -oKexAlgorithms=diffie-hellman-group14-sha1" -r dummy@10.0.0.20 0.0.0.0/0
$ iperf3 -fM -c 10.0.0.20 Connecting to host 10.0.0.20, port 5201 [ 4] local 10.0.0.10 port 56050 connected to 10.0.0.20 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 25.0 MBytes 25.0 MBytes/sec 0 939 KBytes [ 4] 1.00-2.00 sec 14.0 MBytes 14.0 MBytes/sec 0 939 KBytes [ 4] 2.00-3.00 sec 14.0 MBytes 14.0 MBytes/sec 0 939 KBytes [ 4] 3.00-4.00 sec 14.5 MBytes 14.5 MBytes/sec 1 939 KBytes [ 4] 4.00-5.00 sec 12.5 MBytes 12.5 MBytes/sec 0 939 KBytes [ 4] 5.00-6.00 sec 13.0 MBytes 13.0 MBytes/sec 0 939 KBytes [ 4] 6.00-7.00 sec 10.1 MBytes 10.1 MBytes/sec 0 939 KBytes [ 4] 7.00-8.00 sec 15.8 MBytes 15.8 MBytes/sec 0 939 KBytes [ 4] 8.00-9.00 sec 15.4 MBytes 15.4 MBytes/sec 0 939 KBytes [ 4] 9.00-10.00 sec 12.8 MBytes 12.8 MBytes/sec 0 939 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 147 MBytes 14.7 MBytes/sec 1 sender [ 4] 0.00-10.00 sec 139 MBytes 13.9 MBytes/sec receiver iperf Done.