Facing download speed issue in gre tunnel

i have set up a gre tunnel between two openwrt routers and i am facing download speed issues although my upload speed is as much as server router speed. if it is problem with gre tunnel than what other protocol i could use instead. any kinds of information will be appreciated. below are the configs of the server router and client router.

Since this is all happening inside my private network, I am not concerned with encryption or security. My only priorities are:

  1. Maximum Speed: I need the highest possible throughput and lowest latency.

  2. Reliability: The connection must be very stable and reconnect automatically if a device reboots.

  3. Low CPU Load (on Client): The low-end client router should use as little CPU as possible. All the heavy lifting should be done by the x86 server.

    Server router (x86)

config interface 'gre_server'
option proto 'gre'
option peeraddr '120.10.0.137'
option mtu '1460'
option tunlink 'wan'

config interface 'gre_static'
option proto 'static'
option device '@gre_server'
option ipaddr '10.0.1.1'
option netmask '255.255.255.0'

**Client router (Netgear R7800)
**

config interface 'gre_client'
option proto 'gre'
option peeraddr '10.172.34.123'
option mtu '1460'

config interface 'gre_st_client'
option proto 'static'
option device '@gre_client'
option ipaddr '10.0.1.2'
option netmask '255.255.255.0'

[root@client:01:22 PM /] # iperf3 --bidir -c 10.0.1.1
Connecting to host 10.0.1.1, port 5201
[ 5] local 10.0.1.2 port 48920 connected to 10.0.1.1 port 5201
[ 7] local 10.0.1.2 port 48928 connected to 10.0.1.1 port 5201
[ ID][Role] Interval Transfer Bitrate Retr Cwnd
[ 5][TX-C] 0.00-1.00 sec 77.5 MBytes 649 Mbits/sec 4201 704 KBytes
[ 7][RX-C] 0.00-1.00 sec 2.38 MBytes 19.9 Mbits/sec
[ 5][TX-C] 1.00-2.00 sec 80.6 MBytes 676 Mbits/sec 3797 638 KBytes
[ 7][RX-C] 1.00-2.00 sec 2.12 MBytes 17.8 Mbits/sec
[ 5][TX-C] 2.00-3.00 sec 79.2 MBytes 665 Mbits/sec 3601 668 KBytes
[ 7][RX-C] 2.00-3.00 sec 2.62 MBytes 22.0 Mbits/sec
[ 5][TX-C] 3.00-4.00 sec 78.4 MBytes 658 Mbits/sec 4371 646 KBytes
[ 7][RX-C] 3.00-4.00 sec 2.00 MBytes 16.8 Mbits/sec
[ 5][TX-C] 4.00-5.00 sec 72.4 MBytes 607 Mbits/sec 4998 671 KBytes
[ 7][RX-C] 4.00-5.00 sec 3.00 MBytes 25.1 Mbits/sec
[ 5][TX-C] 5.00-6.00 sec 67.6 MBytes 567 Mbits/sec 5578 619 KBytes
[ 7][RX-C] 5.00-6.00 sec 2.88 MBytes 24.1 Mbits/sec
[ 5][TX-C] 6.00-7.00 sec 76.5 MBytes 642 Mbits/sec 5029 668 KBytes
[ 7][RX-C] 6.00-7.00 sec 2.25 MBytes 18.9 Mbits/sec
[ 5][TX-C] 7.00-8.00 sec 79.2 MBytes 665 Mbits/sec 3625 649 KBytes
[ 7][RX-C] 7.00-8.00 sec 2.62 MBytes 22.0 Mbits/sec
[ 5][TX-C] 8.00-9.00 sec 77.1 MBytes 647 Mbits/sec 4197 616 KBytes
[ 7][RX-C] 8.00-9.00 sec 2.25 MBytes 18.9 Mbits/sec
[ 5][TX-C] 9.00-10.00 sec 77.1 MBytes 647 Mbits/sec 4413 671 KBytes
[ 7][RX-C] 9.00-10.00 sec 2.75 MBytes 23.1 Mbits/sec


[ ID][Role] Interval Transfer Bitrate Retr
[ 5][TX-C] 0.00-10.00 sec 766 MBytes 642 Mbits/sec 43810 sender
[ 5][TX-C] 0.00-10.01 sec 764 MBytes 640 Mbits/sec receiver
[ 7][RX-C] 0.00-10.00 sec 25.1 MBytes 21.1 Mbits/sec 590 sender
[ 7][RX-C] 0.00-10.01 sec 24.9 MBytes 20.8 Mbits/sec receiver

iperf Done.
[root@client:01:23 PM /] #

[root@client:01:25 PM /] # ip route show
default dev gre4-gre_client scope link metric 1
default via 120.10.0.1 dev pppoe-wan proto static metric 2
10.0.0.0/24 dev br-lan proto kernel scope link src 10.0.0.1
10.0.1.0/24 dev gre4-gre_client proto kernel scope link src 10.0.1.2
10.172.34.123 via 120.10.0.1 dev pppoe-wan proto static metric 2
120.10.0.1 dev pppoe-wan proto kernel scope link src 120.10.0.137
[root@client:01:25 PM /] #

**After turning off gre tunnel

**
[root@client:01:26 PM /] # iperf3 --bidir -c 10.172.34.123
Connecting to host 10.172.34.123, port 5201
[ 5] local 120.10.0.137 port 53330 connected to 10.172.34.123 port 5201
[ 7] local 120.10.0.137 port 53342 connected to 10.172.34.123 port 5201
[ ID][Role] Interval Transfer Bitrate Retr Cwnd
[ 5][TX-C] 0.00-1.00 sec 36.0 MBytes 302 Mbits/sec 68 173 KBytes
[ 7][RX-C] 0.00-1.00 sec 57.5 MBytes 482 Mbits/sec
[ 5][TX-C] 1.00-2.00 sec 25.8 MBytes 216 Mbits/sec 0 273 KBytes
[ 7][RX-C] 1.00-2.00 sec 67.9 MBytes 569 Mbits/sec
[ 5][TX-C] 2.00-3.00 sec 20.8 MBytes 174 Mbits/sec 0 178 KBytes
[ 7][RX-C] 2.00-3.00 sec 72.0 MBytes 604 Mbits/sec
[ 5][TX-C] 3.00-4.00 sec 26.4 MBytes 221 Mbits/sec 0 382 KBytes
[ 7][RX-C] 3.00-4.00 sec 67.2 MBytes 564 Mbits/sec
[ 5][TX-C] 4.00-5.00 sec 30.0 MBytes 252 Mbits/sec 0 276 KBytes
[ 7][RX-C] 4.00-5.00 sec 63.2 MBytes 531 Mbits/sec
[ 5][TX-C] 5.00-6.00 sec 31.1 MBytes 261 Mbits/sec 0 519 KBytes
[ 7][RX-C] 5.00-6.00 sec 63.1 MBytes 530 Mbits/sec
[ 5][TX-C] 6.00-7.00 sec 47.2 MBytes 396 Mbits/sec 108 563 KBytes
[ 7][RX-C] 6.00-7.00 sec 45.9 MBytes 385 Mbits/sec
[ 5][TX-C] 7.00-8.00 sec 45.5 MBytes 382 Mbits/sec 211 455 KBytes
[ 7][RX-C] 7.00-8.00 sec 49.2 MBytes 413 Mbits/sec
[ 5][TX-C] 8.00-9.00 sec 41.6 MBytes 349 Mbits/sec 17 446 KBytes
[ 7][RX-C] 8.00-9.00 sec 54.5 MBytes 457 Mbits/sec
[ 5][TX-C] 9.00-10.00 sec 47.5 MBytes 398 Mbits/sec 0 5.58 KBytes
[ 7][RX-C] 9.00-10.00 sec 48.4 MBytes 406 Mbits/sec


[ ID][Role] Interval Transfer Bitrate Retr
[ 5][TX-C] 0.00-10.00 sec 352 MBytes 295 Mbits/sec 404 sender
[ 5][TX-C] 0.00-10.00 sec 349 MBytes 293 Mbits/sec receiver
[ 7][RX-C] 0.00-10.00 sec 593 MBytes 497 Mbits/sec 667 sender
[ 7][RX-C] 0.00-10.00 sec 589 MBytes 494 Mbits/sec receiver

iperf Done.
[root@client:01:29 PM /] #

Tap firewall MSS CLAMPING checkbox?

i tried but didn’t work

Is”client” same as “low end router” with “low cpu usage” ?

Bottleneck is memoru copy for encapsulation, not CPU

no this is just testing phase at present the client router is netgear r7800.

Use normal PC/Laptop forwarding via routers. Mere iperf process is huge strain on router’s slow CPU.

i have done speed test using my pc the results are quite similar not more than 150 mbps download while upload speed is similar to server router

Untag WAN port VLAN2 ? on CPU port and adjust WAN to use ethX without vlan. ath79 nic driver does not fully support hardware vlans but uses them by default.

1 Like

After setting up mikrotik as a server and openwrt as client i saw some improvements.

wan interface is connected to lan1 without any vlan and eth1 is attached to br-lan.

Could you please tell me is it server side problem or client side ?

Now you are using routers again for tests. If using routers and you have nothing better at least add -Z to iperf line to reduce memory bandwidth used....

Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button (red circle; this works best in the 'Markdown' composer view in the blue oval):

Screenshot 2025-10-20 at 8.14.14 PM

Remember to redact passwords, VPN keys, MAC addresses and any public IP addresses you may have:

ubus call system board
cat /etc/config/network
cat /etc/config/wireless
cat /etc/config/dhcp
cat /etc/config/firewall

I appreciate you. now i have switched to l2tp and i am getting around 400 mbps download and 350 mbps upload