Inconsistent/Low speed of tunnel's single thread
Posted: Tue Nov 25, 2025 11:21 am
Hi everyone
Is there any guide/recommendations on improving vpn tunnel's single thread throughput? I need to connect two LANs with a tunnel that are ~500km away from one another.
On the remote site I've tried both Windows and Linux to host as server. Server is configured to have local bridge only(two bridges in case of Linux. one with physical eth0 and one tap interface), securenat disabled. DHCP/routing is done by separate router.
On the client side I've also tried both Win and Lin. Clients route all traffic through tunnel using remote network as gateway into the WAN.
Remote network is behind CGNAT so the connection is established via vpnazure relay, UDP acceleration is on and active in all cases.
The tunnel itself is stable, ping is ~50-60ms, mDNS is working. But the issue is the speed. More specifically is the speed of single thread.
The applications that can run multiple connection inside the tunnel can reach server's upload limit with no problem - 100mbit, but the single thread throughput is very unstable, ranging between 30-50mbit with occasional lows down to 10-15mbit. What's strange is only the downstream seems to be affected. Upload is always ok. Sometimes download even goes below upload. So any instance of openspeedtest, mutli thread downloader or torrent, etc works at 100mbit , but everything else is limited to the speed of one thread.
Worth noting that Softether native speedtest tool doesn't seem to be affected by the number of tcp threads, maybe because the connection is UDP based?
Issue is reproducible with both direct connection and via Cascade, with both Raspberry and Core i7 on both side. Tried changing router on the remote side - no uplift at all.
So, if we leave the ISP throttling out of the equation, what can possible be done in this situation to improve speed of single thread? Is there any fundamentals that I'm missing?
Thanks
Server config
Threads: 2
Threads: 8
Threads: 32
Is there any guide/recommendations on improving vpn tunnel's single thread throughput? I need to connect two LANs with a tunnel that are ~500km away from one another.
On the remote site I've tried both Windows and Linux to host as server. Server is configured to have local bridge only(two bridges in case of Linux. one with physical eth0 and one tap interface), securenat disabled. DHCP/routing is done by separate router.
On the client side I've also tried both Win and Lin. Clients route all traffic through tunnel using remote network as gateway into the WAN.
Remote network is behind CGNAT so the connection is established via vpnazure relay, UDP acceleration is on and active in all cases.
The tunnel itself is stable, ping is ~50-60ms, mDNS is working. But the issue is the speed. More specifically is the speed of single thread.
The applications that can run multiple connection inside the tunnel can reach server's upload limit with no problem - 100mbit, but the single thread throughput is very unstable, ranging between 30-50mbit with occasional lows down to 10-15mbit. What's strange is only the downstream seems to be affected. Upload is always ok. Sometimes download even goes below upload. So any instance of openspeedtest, mutli thread downloader or torrent, etc works at 100mbit , but everything else is limited to the speed of one thread.
Worth noting that Softether native speedtest tool doesn't seem to be affected by the number of tcp threads, maybe because the connection is UDP based?
Issue is reproducible with both direct connection and via Cascade, with both Raspberry and Core i7 on both side. Tried changing router on the remote side - no uplift at all.
So, if we leave the ISP throttling out of the equation, what can possible be done in this situation to improve speed of single thread? Is there any fundamentals that I'm missing?
Thanks
Server config
Code: Select all
Linux
4.44
AES_NI Supported No
SE Lightweight Kernel-mode Ethernet Driver is Active No
W10
4.44
AES_NI Supported Yes
SE Lightweight Kernel-mode Ethernet Driver is Active Yes
Logs off
Keep-alive off
Local Bridge On
SecureNAT off
bool Tls_Disable1_0 false
bool Tls_Disable1_1 false
bool Tls_Disable1_2 false
bool Tls_Disable1_3 false
TLS_AES_256_GCM_SHA384
UDP Accel on
Bridge/Router No
Monitor No
Half Duplex No
QoS YesCode: Select all
VPN Tools>trafficclient 192.168.100.100 /span:30 /numtcp:2
TrafficClient command - Run Network Traffic Speed Test Tool in Client Mode
Starting the client program...
-------------------------------------------------------
Network Traffic Speed Test Tool Client Setting Parameters
Destination Host Name 192.168.100.100
Destination TCP Port Number 9821
Number of TCP Connections to Establish 2
Data Transfer Direction Full (Server < -- > Client)
Data Transmission Time 30.0 seconds
Data Correction for Ethernet Frames Yes
Measurement of Total Speed of Relay Device Input Output No
-------------------------------------------------------
The connection to server 192.168.100.100 (port 9821) will start. 2 TCP connections will be connected.
TCP connection number 1 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 2 has been connected.
Data transfer direction: Upload (Client to Server)
All connections were established and so data transfer started.
Measurement Start Time: 2025-11-25 (Tue) 08:30:49
Scheduled Finish Time: 2025-11-25 (Tue) 08:31:19
Measuring in progress. Please wait...
(Do not use any other applications while measuring is in progress.)
Because 30.0 seconds or more have passed, the data communication will end.
The client program has beens terminated.
Network Traffic Speed Test Tool
Item Name | Normal View|Simplified View
------------------------------------------------------+-----------------+---------------
Time Span for Measurement | 00:00:30.000|
Data Correction for Ethernet Frames | Yes|
Communication Data Volume in Download Direction |230,761,571 Bytes| 230.76 MBytes
Communication Data Volume in Upload Direction |170,637,862 Bytes| 170.64 MBytes
Total Communication Data Volume |401,399,433 Bytes| 401.40 MBytes
Relay Device Input Output Total Throughput Computation| No|
Average Throughput in Download Direction | 61,536,418 bps| 61.54 Mbps
Average Throughput in Upload Direction | 45,503,429 bps| 45.50 Mbps
Total Average Throughput | 107,039,847 bps| 107.04 Mbps
The command completed successfully.Code: Select all
VPN Tools>trafficclient 192.168.100.100 /span:30 /numtcp:8
TrafficClient command - Run Network Traffic Speed Test Tool in Client Mode
Starting the client program...
-------------------------------------------------------
Network Traffic Speed Test Tool Client Setting Parameters
Destination Host Name 192.168.100.100
Destination TCP Port Number 9821
Number of TCP Connections to Establish 8
Data Transfer Direction Full (Server < -- > Client)
Data Transmission Time 30.0 seconds
Data Correction for Ethernet Frames Yes
Measurement of Total Speed of Relay Device Input Output No
-------------------------------------------------------
The connection to server 192.168.100.100 (port 9821) will start. 8 TCP connections will be connected.
TCP connection number 1 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 2 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 3 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 4 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 5 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 6 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 7 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 8 has been connected.
Data transfer direction: Upload (Client to Server)
All connections were established and so data transfer started.
Measurement Start Time: 2025-11-25 (Tue) 08:35:45
Scheduled Finish Time: 2025-11-25 (Tue) 08:36:15
Measuring in progress. Please wait...
(Do not use any other applications while measuring is in progress.)
Because 30.0 seconds or more have passed, the data communication will end.
The client program has beens terminated.
Network Traffic Speed Test Tool
Item Name | Normal View|Simplified View
------------------------------------------------------+-----------------+---------------
Time Span for Measurement | 00:00:30.001|
Data Correction for Ethernet Frames | Yes|
Communication Data Volume in Download Direction |212,414,067 Bytes| 212.41 MBytes
Communication Data Volume in Upload Direction |172,031,305 Bytes| 172.03 MBytes
Total Communication Data Volume |384,445,372 Bytes| 384.45 MBytes
Relay Device Input Output Total Throughput Computation| No|
Average Throughput in Download Direction | 56,641,863 bps| 56.64 Mbps
Average Throughput in Upload Direction | 45,873,485 bps| 45.87 Mbps
Total Average Throughput | 102,515,348 bps| 102.52 Mbps
The command completed successfully.Code: Select all
VPN Tools>trafficclient 192.168.100.100 /span:30 /numtcp:32
TrafficClient command - Run Network Traffic Speed Test Tool in Client Mode
Starting the client program...
-------------------------------------------------------
Network Traffic Speed Test Tool Client Setting Parameters
Destination Host Name 192.168.100.100
Destination TCP Port Number 9821
Number of TCP Connections to Establish 32
Data Transfer Direction Full (Server < -- > Client)
Data Transmission Time 30.0 seconds
Data Correction for Ethernet Frames Yes
Measurement of Total Speed of Relay Device Input Output No
-------------------------------------------------------
The connection to server 192.168.100.100 (port 9821) will start. 32 TCP connections will be connected.
TCP connection number 1 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 2 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 3 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 4 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 5 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 6 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 7 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 8 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 9 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 10 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 11 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 12 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 13 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 14 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 15 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 16 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 17 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 18 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 19 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 20 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 21 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 22 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 23 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 24 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 25 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 26 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 27 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 28 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 29 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 30 has been connected.
Data transfer direction: Upload (Client to Server)
TCP connection number 31 has been connected.
Data transfer direction: Download (Server to Client)
TCP connection number 32 has been connected.
Data transfer direction: Upload (Client to Server)
All connections were established and so data transfer started.
Measurement Start Time: 2025-11-25 (Tue) 08:33:59
Scheduled Finish Time: 2025-11-25 (Tue) 08:34:29
Measuring in progress. Please wait...
(Do not use any other applications while measuring is in progress.)
Because 30.0 seconds or more have passed, the data communication will end.
The client program has beens terminated.
Network Traffic Speed Test Tool
Item Name | Normal View|Simplified View
------------------------------------------------------+-----------------+---------------
Time Span for Measurement | 00:00:30.005|
Data Correction for Ethernet Frames | Yes|
Communication Data Volume in Download Direction |250,359,952 Bytes| 250.36 MBytes
Communication Data Volume in Upload Direction |173,681,797 Bytes| 173.68 MBytes
Total Communication Data Volume |424,041,749 Bytes| 424.04 MBytes
Relay Device Input Output Total Throughput Computation| No|
Average Throughput in Download Direction | 66,751,528 bps| 66.75 Mbps
Average Throughput in Upload Direction | 46,307,427 bps| 46.31 Mbps
Total Average Throughput | 113,058,955 bps| 113.06 Mbps
The command completed successfully.