Replication performance over wan

Hi, I’m using truenas scale as a homelaber.
For offsite backup I use the truenas zfs replication with quite low throughput (similar to this thread) of 2,x MiB/s, which I would like to increase.

The two machines are connected via tailscale (because CGNAT on both ends). The source WAN connection has 500Mbit/s upload, the target has 100Mbit/s nominal download speed, speed tests usually measure around 80Mbit/s. Replication load on the network is only around 22Mbit/s. Tailscale ping is 30ms, CPU and drives are mostly idle on both systems during replication, no core shows exceptional load. Memory is still >16GB free.

What, to my amateur eyes, seems to be the culprit is that iperf3 measures quickly degrading network speed when using only one stream, ending up at around 20-30Mbit/s after a little while. As soon as the number of streams is increased to 4, 80Mbit/s are maintained.

Since I have no influence over the ISPs network equipment, is there anything I can do to increase speed? How do I exclude that the problem lies with one of the routers? I’ve had a router of the same making as the one on the target system (Fritzbox 7530AX) fail after it was no longer able to switch more than 50Mbit/s for some weeks. However, the percentage of repeated packages during replication is below .1% and I do not have physical access to the target system or its network.

ChatGPT said that zfs replication does not support multiple streams. Is that so? I heard that truenas 26.04 uses a newer zfs version than 25.10 (which I am using) which is supposed to increase replication speed. Could a system upgrade to 26.04 benefit my situation as well?

Thank you!

TrueNAS 26 is currently on Beta 3. You can switch the Update train in the GUI and update if you are willing to take the risk on using it before a full release. If you update your pool features, you will not be able to roll back to an earlier version. I don’t know if there are updated pool features between 25 & 26 but it is worth warning about.

tailscale + zfs replication capping around 20mbit while iperf looks fine usually means the send side is chatting a lot for small records. for me keeping compression off when the dataset is already compressed and testing one large dataset alone helps more than jumping to a beta train.

Not sure iperf is fine. One stream is only good for a couple of seconds. For more reliable speed it needs to run in parallel.

One Stream

iperf3 -c 100.126.xxx.xxx -R -t 20
Connecting to host , port 5201
Reverse mode, remote host  is sending
[  5] local  port 37584 connected to  port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  7.46 MBytes  62.6 Mbits/sec                  
[  5]   1.00-2.00   sec  5.27 MBytes  44.2 Mbits/sec                  
[  5]   2.00-3.00   sec  3.45 MBytes  29.0 Mbits/sec                  
[  5]   3.00-4.00   sec  2.60 MBytes  21.8 Mbits/sec                  
[  5]   4.00-5.00   sec  1.89 MBytes  15.9 Mbits/sec                  
[  5]   5.00-6.00   sec  1.98 MBytes  16.6 Mbits/sec                  
[  5]   6.00-7.00   sec  1.53 MBytes  12.8 Mbits/sec                  
[  5]   7.00-8.00   sec  1.46 MBytes  12.3 Mbits/sec                  
[  5]   8.00-9.00   sec  2.03 MBytes  17.0 Mbits/sec                  
[  5]   9.00-10.00  sec  1.93 MBytes  16.2 Mbits/sec                  
[  5]  10.00-11.00  sec  2.28 MBytes  19.1 Mbits/sec                  
[  5]  11.00-12.00  sec  1.75 MBytes  14.7 Mbits/sec                  
[  5]  12.00-13.00  sec  2.05 MBytes  17.2 Mbits/sec                  
[  5]  13.00-14.00  sec  1.48 MBytes  12.4 Mbits/sec                  
[  5]  14.00-15.00  sec  1.48 MBytes  12.4 Mbits/sec                  
[  5]  15.00-16.00  sec  1.99 MBytes  16.7 Mbits/sec                  
[  5]  16.00-17.00  sec  2.01 MBytes  16.8 Mbits/sec                  
[  5]  17.00-18.00  sec  1.39 MBytes  11.7 Mbits/sec                  
[  5]  18.00-19.00  sec  1.24 MBytes  10.4 Mbits/sec                  
[  5]  19.00-20.00  sec  1.77 MBytes  14.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-20.03  sec  48.8 MBytes  20.4 Mbits/sec   37             sender
[  5]   0.00-20.00  sec  47.0 MBytes  19.7 Mbits/sec                  receiver

Six streams in parallel

iperf3 -c 100.126.xxx.xxx -R -P 6 -t 20
Connecting to host , port 5201
Reverse mode, remote host  is sending
[  5] local  port 32850 connected to  port 5201
[  7] local  port 32852 connected to  port 5201
[  9] local  port 32854 connected to  port 5201
[ 11] local  port 32862 connected to  port 5201
[ 13] local  port 32876 connected to  port 5201
[ 15] local  port 32892 connected to  port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  1.82 MBytes  15.2 Mbits/sec                  
[  7]   0.00-1.00   sec  2.34 MBytes  19.6 Mbits/sec                  
[  9]   0.00-1.00   sec  1.31 MBytes  11.0 Mbits/sec                  
[ 11]   0.00-1.00   sec  1.33 MBytes  11.2 Mbits/sec                  
[ 13]   0.00-1.00   sec   965 KBytes  7.91 Mbits/sec                  
[ 15]   0.00-1.00   sec  1.31 MBytes  11.0 Mbits/sec                  
[SUM]   0.00-1.00   sec  9.05 MBytes  75.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]   1.00-2.00   sec  1.41 MBytes  11.9 Mbits/sec                  
[  7]   1.00-2.00   sec  2.67 MBytes  22.4 Mbits/sec                  
[  9]   1.00-2.00   sec  1.51 MBytes  12.7 Mbits/sec                  
[ 11]   1.00-2.00   sec  1.27 MBytes  10.7 Mbits/sec                  
[ 13]   1.00-2.00   sec   985 KBytes  8.07 Mbits/sec                  
[ 15]   1.00-2.00   sec  1.46 MBytes  12.3 Mbits/sec                  
[SUM]   1.00-2.00   sec  9.30 MBytes  78.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]   2.00-3.00   sec  1.40 MBytes  11.7 Mbits/sec                  
[  7]   2.00-3.00   sec  2.40 MBytes  20.1 Mbits/sec                  
[  9]   2.00-3.00   sec  1.39 MBytes  11.7 Mbits/sec                  
[ 11]   2.00-3.00   sec  1.26 MBytes  10.5 Mbits/sec                  
[ 13]   2.00-3.00   sec  1.06 MBytes  8.88 Mbits/sec                  
[ 15]   2.00-3.00   sec  1.39 MBytes  11.7 Mbits/sec                  
[SUM]   2.00-3.00   sec  8.90 MBytes  74.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]   3.00-4.00   sec  1.34 MBytes  11.2 Mbits/sec                  
[  7]   3.00-4.00   sec  2.52 MBytes  21.1 Mbits/sec                  
[  9]   3.00-4.00   sec  1.47 MBytes  12.3 Mbits/sec                  
[ 11]   3.00-4.00   sec   910 KBytes  7.46 Mbits/sec                  
[ 13]   3.00-4.00   sec  1.08 MBytes  9.08 Mbits/sec                  
[ 15]   3.00-4.00   sec  1.57 MBytes  13.2 Mbits/sec                  
[SUM]   3.00-4.00   sec  8.86 MBytes  74.4 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]   4.00-5.00   sec  1.41 MBytes  11.8 Mbits/sec                  
[  7]   4.00-5.00   sec  2.75 MBytes  23.1 Mbits/sec                  
[  9]   4.00-5.00   sec   993 KBytes  8.13 Mbits/sec                  
[ 11]   4.00-5.00   sec  1.11 MBytes  9.27 Mbits/sec                  
[ 13]   4.00-5.00   sec  1.01 MBytes  8.48 Mbits/sec                  
[ 15]   4.00-5.00   sec  1.86 MBytes  15.6 Mbits/sec                  
[SUM]   4.00-5.00   sec  9.11 MBytes  76.4 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]   5.00-6.00   sec  1.25 MBytes  10.5 Mbits/sec                  
[  7]   5.00-6.00   sec  2.46 MBytes  20.6 Mbits/sec                  
[  9]   5.00-6.00   sec  1.11 MBytes  9.35 Mbits/sec                  
[ 11]   5.00-6.00   sec  1.37 MBytes  11.5 Mbits/sec                  
[ 13]   5.00-6.00   sec   932 KBytes  7.63 Mbits/sec                  
[ 15]   5.00-6.00   sec  1.63 MBytes  13.6 Mbits/sec                  
[SUM]   5.00-6.00   sec  8.73 MBytes  73.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]   6.00-7.00   sec  1.26 MBytes  10.5 Mbits/sec                  
[  7]   6.00-7.00   sec  2.09 MBytes  17.5 Mbits/sec                  
[  9]   6.00-7.00   sec  1.17 MBytes  9.80 Mbits/sec                  
[ 11]   6.00-7.00   sec  1.36 MBytes  11.4 Mbits/sec                  
[ 13]   6.00-7.00   sec  1.31 MBytes  11.0 Mbits/sec                  
[ 15]   6.00-7.00   sec  1.54 MBytes  13.0 Mbits/sec                  
[SUM]   6.00-7.00   sec  8.73 MBytes  73.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]   7.00-8.00   sec  1.06 MBytes  8.85 Mbits/sec                  
[  7]   7.00-8.00   sec  2.04 MBytes  17.1 Mbits/sec                  
[  9]   7.00-8.00   sec  1.14 MBytes  9.53 Mbits/sec                  
[ 11]   7.00-8.00   sec  1.40 MBytes  11.8 Mbits/sec                  
[ 13]   7.00-8.00   sec  1.85 MBytes  15.5 Mbits/sec                  
[ 15]   7.00-8.00   sec  1.26 MBytes  10.6 Mbits/sec                  
[SUM]   7.00-8.00   sec  8.74 MBytes  73.3 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]   8.00-9.00   sec  1.26 MBytes  10.6 Mbits/sec                  
[  7]   8.00-9.00   sec  1.67 MBytes  14.0 Mbits/sec                  
[  9]   8.00-9.00   sec  1.03 MBytes  8.65 Mbits/sec                  
[ 11]   8.00-9.00   sec  1.31 MBytes  11.0 Mbits/sec                  
[ 13]   8.00-9.00   sec  2.10 MBytes  17.6 Mbits/sec                  
[ 15]   8.00-9.00   sec   979 KBytes  8.02 Mbits/sec                  
[SUM]   8.00-9.00   sec  8.33 MBytes  69.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]   9.00-10.00  sec  1.26 MBytes  10.6 Mbits/sec                  
[  7]   9.00-10.00  sec  1.77 MBytes  14.8 Mbits/sec                  
[  9]   9.00-10.00  sec  1.27 MBytes  10.7 Mbits/sec                  
[ 11]   9.00-10.00  sec  1.38 MBytes  11.6 Mbits/sec                  
[ 13]   9.00-10.00  sec  2.29 MBytes  19.2 Mbits/sec                  
[ 15]   9.00-10.00  sec  1.08 MBytes  9.09 Mbits/sec                  
[SUM]   9.00-10.00  sec  9.06 MBytes  76.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  10.00-11.00  sec  1.34 MBytes  11.2 Mbits/sec                  
[  7]  10.00-11.00  sec  1.62 MBytes  13.6 Mbits/sec                  
[  9]  10.00-11.00  sec  1.58 MBytes  13.3 Mbits/sec                  
[ 11]  10.00-11.00  sec  1.34 MBytes  11.3 Mbits/sec                  
[ 13]  10.00-11.00  sec  2.49 MBytes  20.9 Mbits/sec                  
[ 15]  10.00-11.00  sec   819 KBytes  6.71 Mbits/sec                  
[SUM]  10.00-11.00  sec  9.18 MBytes  77.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  11.00-12.00  sec  1.36 MBytes  11.4 Mbits/sec                  
[  7]  11.00-12.00  sec  1.71 MBytes  14.3 Mbits/sec                  
[  9]  11.00-12.00  sec  1.42 MBytes  11.9 Mbits/sec                  
[ 11]  11.00-12.00  sec  1.06 MBytes  8.87 Mbits/sec                  
[ 13]  11.00-12.00  sec  1.97 MBytes  16.6 Mbits/sec                  
[ 15]  11.00-12.00  sec  1.06 MBytes  8.92 Mbits/sec                  
[SUM]  11.00-12.00  sec  8.58 MBytes  72.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  12.00-13.00  sec  1.01 MBytes  8.47 Mbits/sec                  
[  7]  12.00-13.00  sec  1.53 MBytes  12.8 Mbits/sec                  
[  9]  12.00-13.00  sec  1.79 MBytes  15.0 Mbits/sec                  
[ 11]  12.00-13.00  sec  1.46 MBytes  12.3 Mbits/sec                  
[ 13]  12.00-13.00  sec  1.41 MBytes  11.8 Mbits/sec                  
[ 15]  12.00-13.00  sec  1.18 MBytes  9.93 Mbits/sec                  
[SUM]  12.00-13.00  sec  8.38 MBytes  70.3 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  13.00-14.00  sec  1.00 MBytes  8.39 Mbits/sec                  
[  7]  13.00-14.00  sec  1.18 MBytes  9.87 Mbits/sec                  
[  9]  13.00-14.00  sec  2.06 MBytes  17.3 Mbits/sec                  
[ 11]  13.00-14.00  sec  1.78 MBytes  15.0 Mbits/sec                  
[ 13]  13.00-14.00  sec  1.27 MBytes  10.6 Mbits/sec                  
[ 15]  13.00-14.00  sec  1.01 MBytes  8.51 Mbits/sec                  
[SUM]  13.00-14.00  sec  8.31 MBytes  69.7 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  14.00-15.00  sec  1.05 MBytes  8.82 Mbits/sec                  
[  7]  14.00-15.00  sec  1.32 MBytes  11.1 Mbits/sec                  
[  9]  14.00-15.00  sec  1.92 MBytes  16.1 Mbits/sec                  
[ 11]  14.00-15.00  sec  1.28 MBytes  10.8 Mbits/sec                  
[ 13]  14.00-15.00  sec  1.60 MBytes  13.4 Mbits/sec                  
[ 15]  14.00-15.00  sec  1.36 MBytes  11.4 Mbits/sec                  
[SUM]  14.00-15.00  sec  8.53 MBytes  71.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  15.00-16.00  sec   895 KBytes  7.33 Mbits/sec                  
[  7]  15.00-16.00  sec  1.17 MBytes  9.82 Mbits/sec                  
[  9]  15.00-16.00  sec  1.48 MBytes  12.5 Mbits/sec                  
[ 11]  15.00-16.00  sec  1.40 MBytes  11.8 Mbits/sec                  
[ 13]  15.00-16.00  sec  1.62 MBytes  13.6 Mbits/sec                  
[ 15]  15.00-16.00  sec  1.64 MBytes  13.7 Mbits/sec                  
[SUM]  15.00-16.00  sec  8.19 MBytes  68.7 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  16.00-17.00  sec  1.08 MBytes  9.02 Mbits/sec                  
[  7]  16.00-17.00  sec  1.23 MBytes  10.3 Mbits/sec                  
[  9]  16.00-17.00  sec  1.59 MBytes  13.3 Mbits/sec                  
[ 11]  16.00-17.00  sec  1.48 MBytes  12.5 Mbits/sec                  
[ 13]  16.00-17.00  sec  1.83 MBytes  15.4 Mbits/sec                  
[ 15]  16.00-17.00  sec  1.61 MBytes  13.5 Mbits/sec                  
[SUM]  16.00-17.00  sec  8.82 MBytes  74.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  17.00-18.00  sec  1.39 MBytes  11.7 Mbits/sec                  
[  7]  17.00-18.00  sec   976 KBytes  8.00 Mbits/sec                  
[  9]  17.00-18.00  sec  1.60 MBytes  13.4 Mbits/sec                  
[ 11]  17.00-18.00  sec  1.18 MBytes  9.89 Mbits/sec                  
[ 13]  17.00-18.00  sec  1.82 MBytes  15.3 Mbits/sec                  
[ 15]  17.00-18.00  sec  1.14 MBytes  9.59 Mbits/sec                  
[SUM]  17.00-18.00  sec  8.09 MBytes  67.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  18.00-19.00  sec  1.61 MBytes  13.5 Mbits/sec                  
[  7]  18.00-19.00  sec  1.11 MBytes  9.32 Mbits/sec                  
[  9]  18.00-19.00  sec  1.70 MBytes  14.3 Mbits/sec                  
[ 11]  18.00-19.00  sec  1.27 MBytes  10.7 Mbits/sec                  
[ 13]  18.00-19.00  sec  1.14 MBytes  9.57 Mbits/sec                  
[ 15]  18.00-19.00  sec  1.00 MBytes  8.41 Mbits/sec                  
[SUM]  18.00-19.00  sec  7.84 MBytes  65.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  19.00-20.00  sec  1.12 MBytes  9.41 Mbits/sec                  
[  7]  19.00-20.00  sec  1.25 MBytes  10.5 Mbits/sec                  
[  9]  19.00-20.00  sec  1.93 MBytes  16.2 Mbits/sec                  
[ 11]  19.00-20.00  sec  1.28 MBytes  10.7 Mbits/sec                  
[ 13]  19.00-20.00  sec  1.12 MBytes  9.37 Mbits/sec                  
[ 15]  19.00-20.00  sec  1.34 MBytes  11.2 Mbits/sec                  
[SUM]  19.00-20.00  sec  8.03 MBytes  67.3 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-20.03  sec  26.0 MBytes  10.9 Mbits/sec   72             sender
[  5]   0.00-20.00  sec  25.3 MBytes  10.6 Mbits/sec                  receiver
[  7]   0.00-20.03  sec  36.5 MBytes  15.3 Mbits/sec   82             sender
[  7]   0.00-20.00  sec  35.8 MBytes  15.0 Mbits/sec                  receiver
[  9]   0.00-20.03  sec  29.8 MBytes  12.5 Mbits/sec   25             sender
[  9]   0.00-20.00  sec  29.4 MBytes  12.4 Mbits/sec                  receiver
[ 11]   0.00-20.03  sec  26.6 MBytes  11.1 Mbits/sec   34             sender
[ 11]   0.00-20.00  sec  26.2 MBytes  11.0 Mbits/sec                  receiver
[ 13]   0.00-20.03  sec  30.1 MBytes  12.6 Mbits/sec   32             sender
[ 13]   0.00-20.00  sec  29.8 MBytes  12.5 Mbits/sec                  receiver
[ 15]   0.00-20.03  sec  26.7 MBytes  11.2 Mbits/sec   30             sender
[ 15]   0.00-20.00  sec  26.2 MBytes  11.0 Mbits/sec                  receiver
[SUM]   0.00-20.03  sec   176 MBytes  73.6 Mbits/sec  275             sender
[SUM]   0.00-20.00  sec   173 MBytes  72.5 Mbits/sec                  receiver

iperf Done.

yeah that iperf pattern (one stream spikes then dies, needs parallel) is the same shape as the replication ceiling.

tailscale single-stream over cgnat often behaves like that even when the wan numbers look big on paper. try iperf3 -P 4 both ways and compare to a direct non-tailscale path if you can. if only the tailscale path is weak, the zfs send is just stuck behind that.

on the nas side keep an eye on whether the dataset has a ton of small files/records. one fat zvol or a dataset with big sequential files will look way healthier than a tree of tiny stuff at the same wan rate.

Now iperf results get weird: My PC can upload to WAN much faster than the truenas system in the same LAN.

  • my PC to truenas server (same LAN): 6Gbit both directions
  • my PC to iperf testserver (wan1): 330Mbit download, 180Mbit upload
  • my PC to iperf testserver -P 4 flag: 570Mbit download, 480Mbit upload
  • truenas server to iperf testserver (wan1): 330Mbit download, but only <50Mbit upload
  • truenas server to iperf testserver -P 4 flag: 650Mbit download, but only 120Mbit upload
  • truenas2 backup target to iperf testserver (wan2): 25Mbit upload, 85Mbit download

For this test run, tailscale was stopped. ping to iperf test server is the same from both systems, as is the number of hops.

Why can my desktop PC upload to the iperf test server with 3-4 times the speed of the truenas system? Both computers are literally connected to the same switch.