Slow upload speed on ipv6 + tcp

I’m on 1Gbps internet connection with a Turris Omnia.
It works well except when trying to upload data with TCP on IPv6 where it only reaches 4/5 Mbps.

I tried to diagnose this with iperf3.
Inside my lan : perfect.
From turris to public server in UDP : perfect
From turris to public server in TCP in ipv4 : perfect
From turris to public server in TCP in ipv6 : slow

I tried many thing but don’t know what to do.
CPU utilization stay quite low (2-5%).

I noticed in iperf3 that “retransmissions” stays at 0 while in ipv6/tcp and “Cwnd” stays at 39KBytes wheres as in ipv4/tcp goes up and so “Cwnd”.
It looks like in ipv6, it starts slow and doesn’t even try to speed up and grow congestion window size.
But sadly that’s the farthest i can’t diagnose more.

Here are iperf3 in ipv4 :

[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 11.0 MBytes 92.3 Mbits/sec 0 1.17 MBytes
[ 5] 1.00-2.00 sec 47.2 MBytes 396 Mbits/sec 566 1.35 MBytes
[ 5] 2.00-3.00 sec 48.2 MBytes 405 Mbits/sec 427 1.37 MBytes
[ 5] 3.00-4.00 sec 46.8 MBytes 392 Mbits/sec 362 1.47 MBytes
[ 5] 4.00-5.00 sec 47.2 MBytes 396 Mbits/sec 312 1.35 MBytes
[ 5] 5.00-6.00 sec 47.4 MBytes 397 Mbits/sec 176 1.36 MBytes
[ 5] 6.00-7.00 sec 47.6 MBytes 400 Mbits/sec 105 1.36 MBytes
[ 5] 7.00-8.00 sec 47.6 MBytes 400 Mbits/sec 444 913 KBytes
[ 5] 8.00-9.00 sec 47.6 MBytes 400 Mbits/sec 220 1.45 MBytes
[ 5] 9.00-10.00 sec 47.5 MBytes 398 Mbits/sec 137 2.05 MBytes

And here in ipv6 :
[ 5] 0.00-1.00 sec 640 KBytes 5.24 Mbits/sec 0 36.3 KBytes
[ 5] 1.00-2.00 sec 512 KBytes 4.19 Mbits/sec 0 36.3 KBytes
[ 5] 2.00-3.00 sec 640 KBytes 5.24 Mbits/sec 0 36.3 KBytes
[ 5] 3.00-4.00 sec 512 KBytes 4.19 Mbits/sec 0 36.3 KBytes
[ 5] 4.00-5.00 sec 640 KBytes 5.24 Mbits/sec 0 36.3 KBytes
[ 5] 5.00-6.00 sec 384 KBytes 3.15 Mbits/sec 0 33.5 KBytes
[ 5] 6.00-7.00 sec 640 KBytes 5.24 Mbits/sec 0 36.3 KBytes
[ 5] 7.00-8.00 sec 512 KBytes 4.19 Mbits/sec 0 36.3 KBytes
[ 5] 8.00-9.00 sec 512 KBytes 4.19 Mbits/sec 0 33.5 KBytes
[ 5] 9.00-10.00 sec 640 KBytes 5.24 Mbits/sec 0 5.58 KBytes

We can see the Retransmissions stays at 0 and Cwnd doesn’t grow.

It might be a routing issue on your providers side or even further upstream.

If you do a traceroute (or even better mtr) to the public server over IPv4 and IPv6, do you see any difference?

How many hops for each?

How many milliseconds response time?

They will not be identical, but should be in the same ballpark.

With mtr you might be able to spot the bottleneck.

I have less hops in ipv6 but still a bit more latency (14ms vs 11ms in ipv4).
To the same iperf server i got 6 hops in ipv6 and 11 in ipv4.

It doesn’t seems like a routing problem from my isp. I tried iperf to the same host with ipv6/tcp and ipv6/udp and i reach 950 mbps in udp but still 5 mbps in tcp. So it follows the same path with the same hops.

Do you see similar results when you skip omnia and connect PC directly to provider’s cable? May need pppoe dialing or vlan setting, both work on Windows.

1 Like