I have been performing extensive testing of the wireless performance of the stock TP-LINK firmware vs LEDE.
Test hardware: TP-LINK Archer C7 v2, UK model. MacBook Pro Retina 2013, 3x3 802.11ac capable, maximum 1300Mbps connection rate. Windows 7 on the PC.
PC wired via gigabit Ethernet to the router, with an Intel NIC. Connecting at 1Gbps.
MacBook Pro is ~45m from the router. Straight line, no obstructions, slightly elevated. MacBook Pro is on a stable surface. Aimed to connect at 1300Mbps for both tests.
iperf 2. is running in server mode on the MacBook Pro. jperf 2.0.2 is run on the Windows client, in client mode. iperf2 on the MacBook Pro is setup as follows: iperf -s -w 1MB. jperf is setup on the Windows client as follows: iperf.exe -c 192.168.0.103 -P 1 -i 1 -p 5001 -w 1.0M -f m -t 10.
A 10 second test was performed, with a window size of 1MB over TCP. This was repeated 5 times and an average taken. This set of tests was repeated twice, to compare LEDE and the stock TP-LINK firmware. The only changes between the sets of tests were the firmware, the network SSID, the IP addresses of the clients and the region. The TP-LINK firmware forces a DE region but as I am in the UK I chose GB for LEDE. As the two regions are EU-based, the wireless power laws are the same. Encryption and the wireless channels - crucially - were kept the same.
TP-LINK stock firmware (3.15.1 Build 160616 Rel.44182n):
The five tests:
bin/iperf.exe -c 192.168.0.103 -P 1 -i 1 -p 5001 -w 1.0M -f m -t 10
------------------------------------------------------------
Client connecting to 192.168.0.103, TCP port 5001
TCP window size: 1.00 MByte
------------------------------------------------------------
[164] local 192.168.0.101 port 52134 connected with 192.168.0.103 port 5001
[ ID] Interval Transfer Bandwidth
[164] 0.0- 1.0 sec 71.0 MBytes 596 Mbits/sec
[164] 1.0- 2.0 sec 78.0 MBytes 654 Mbits/sec
[164] 2.0- 3.0 sec 80.8 MBytes 678 Mbits/sec
[164] 3.0- 4.0 sec 85.6 MBytes 718 Mbits/sec
[164] 4.0- 5.0 sec 87.4 MBytes 733 Mbits/sec
[164] 5.0- 6.0 sec 88.3 MBytes 741 Mbits/sec
[164] 6.0- 7.0 sec 89.4 MBytes 750 Mbits/sec
[164] 7.0- 8.0 sec 89.1 MBytes 748 Mbits/sec
[164] 8.0- 9.0 sec 89.4 MBytes 750 Mbits/sec
[164] 9.0-10.0 sec 89.5 MBytes 751 Mbits/sec
[164] 0.0-10.0 sec 849 MBytes 711 Mbits/sec
Done.
bin/iperf.exe -c 192.168.0.103 -P 1 -i 1 -p 5001 -w 1.0M -f m -t 10
------------------------------------------------------------
Client connecting to 192.168.0.103, TCP port 5001
TCP window size: 1.00 MByte
------------------------------------------------------------
[164] local 192.168.0.101 port 52135 connected with 192.168.0.103 port 5001
[ ID] Interval Transfer Bandwidth
[164] 0.0- 1.0 sec 89.4 MBytes 750 Mbits/sec
[164] 1.0- 2.0 sec 89.6 MBytes 752 Mbits/sec
[164] 2.0- 3.0 sec 89.1 MBytes 748 Mbits/sec
[164] 3.0- 4.0 sec 89.1 MBytes 747 Mbits/sec
[164] 4.0- 5.0 sec 88.9 MBytes 746 Mbits/sec
[164] 5.0- 6.0 sec 89.1 MBytes 748 Mbits/sec
[164] 6.0- 7.0 sec 88.7 MBytes 744 Mbits/sec
[164] 7.0- 8.0 sec 90.0 MBytes 755 Mbits/sec
[164] 8.0- 9.0 sec 89.8 MBytes 753 Mbits/sec
[164] 9.0-10.0 sec 89.9 MBytes 754 Mbits/sec
[164] 0.0-10.0 sec 894 MBytes 749 Mbits/sec
Done.
bin/iperf.exe -c 192.168.0.103 -P 1 -i 1 -p 5001 -w 1.0M -f m -t 10
------------------------------------------------------------
Client connecting to 192.168.0.103, TCP port 5001
TCP window size: 1.00 MByte
------------------------------------------------------------
[164] local 192.168.0.101 port 52137 connected with 192.168.0.103 port 5001
[ ID] Interval Transfer Bandwidth
[164] 0.0- 1.0 sec 88.2 MBytes 740 Mbits/sec
[164] 1.0- 2.0 sec 90.4 MBytes 758 Mbits/sec
[164] 2.0- 3.0 sec 88.0 MBytes 738 Mbits/sec
[164] 3.0- 4.0 sec 89.0 MBytes 747 Mbits/sec
[164] 4.0- 5.0 sec 88.7 MBytes 744 Mbits/sec
[164] 5.0- 6.0 sec 38.2 MBytes 321 Mbits/sec
[164] 6.0- 7.0 sec 70.6 MBytes 592 Mbits/sec
[164] 7.0- 8.0 sec 77.7 MBytes 652 Mbits/sec
[164] 8.0- 9.0 sec 80.8 MBytes 678 Mbits/sec
[164] 9.0-10.0 sec 85.6 MBytes 718 Mbits/sec
[164] 0.0-10.0 sec 797 MBytes 667 Mbits/sec
Done.
bin/iperf.exe -c 192.168.0.103 -P 1 -i 1 -p 5001 -w 1.0M -f m -t 10
------------------------------------------------------------
Client connecting to 192.168.0.103, TCP port 5001
TCP window size: 1.00 MByte
------------------------------------------------------------
[164] local 192.168.0.101 port 52138 connected with 192.168.0.103 port 5001
[ ID] Interval Transfer Bandwidth
[164] 0.0- 1.0 sec 88.6 MBytes 743 Mbits/sec
[164] 1.0- 2.0 sec 89.3 MBytes 749 Mbits/sec
[164] 2.0- 3.0 sec 87.7 MBytes 736 Mbits/sec
[164] 3.0- 4.0 sec 81.5 MBytes 683 Mbits/sec
Done.
bin/iperf.exe -c 192.168.0.103 -P 1 -i 1 -p 5001 -w 1.0M -f m -t 10
Done.
bin/iperf.exe -c 192.168.0.103 -P 1 -i 1 -p 5001 -w 1.0M -f m -t 10
Iperf thread stopped [CAUSE=Stream Closed]
bin/iperf.exe -c 192.168.0.103 -P 1 -i 1 -p 5001 -w 1.0M -f m -t 10
------------------------------------------------------------
Client connecting to 192.168.0.103, TCP port 5001
TCP window size: 1.00 MByte
------------------------------------------------------------
[164] local 192.168.0.101 port 52144 connected with 192.168.0.103 port 5001
[ ID] Interval Transfer Bandwidth
[164] 0.0- 1.0 sec 24.4 MBytes 204 Mbits/sec
[164] 1.0- 2.0 sec 78.9 MBytes 662 Mbits/sec
[164] 2.0- 3.0 sec 82.7 MBytes 694 Mbits/sec
[164] 3.0- 4.0 sec 86.3 MBytes 724 Mbits/sec
[164] 4.0- 5.0 sec 87.1 MBytes 730 Mbits/sec
[164] 5.0- 6.0 sec 87.7 MBytes 735 Mbits/sec
[164] 6.0- 7.0 sec 90.0 MBytes 755 Mbits/sec
[164] 7.0- 8.0 sec 88.2 MBytes 740 Mbits/sec
[164] 8.0- 9.0 sec 90.0 MBytes 755 Mbits/sec
[164] 9.0-10.0 sec 89.5 MBytes 750 Mbits/sec
[164] 0.0-10.0 sec 805 MBytes 674 Mbits/sec
Done.
bin/iperf.exe -c 192.168.0.103 -P 1 -i 1 -p 5001 -w 1.0M -f m -t 10
------------------------------------------------------------
Client connecting to 192.168.0.103, TCP port 5001
TCP window size: 1.00 MByte
------------------------------------------------------------
[164] local 192.168.0.101 port 52145 connected with 192.168.0.103 port 5001
[ ID] Interval Transfer Bandwidth
[164] 0.0- 1.0 sec 87.4 MBytes 733 Mbits/sec
[164] 1.0- 2.0 sec 89.7 MBytes 752 Mbits/sec
[164] 2.0- 3.0 sec 89.4 MBytes 750 Mbits/sec
[164] 3.0- 4.0 sec 90.0 MBytes 755 Mbits/sec
[164] 4.0- 5.0 sec 65.9 MBytes 553 Mbits/sec
[164] 5.0- 6.0 sec 13.2 MBytes 111 Mbits/sec
[164] 6.0- 7.0 sec 16.1 MBytes 135 Mbits/sec
[164] 7.0- 8.0 sec 17.2 MBytes 145 Mbits/sec
[164] 8.0- 9.0 sec 44.6 MBytes 374 Mbits/sec
[164] 9.0-10.0 sec 76.0 MBytes 638 Mbits/sec
[164] 0.0-10.0 sec 590 MBytes 494 Mbits/sec
Done.
Note: the MacBook Pro went to sleep during test 4 and so it had to be repeated. I don't believe the effect of this is statistically significant, however.
The average was: 795.6 Mbits/sec.
LEDE 17.01.2 (LEDE Reboot 17.01.2 r3435-65eec8bd5f / LuCI lede-17.01 branch (git-17.152.82987-7f6fc16)):
The first thing of note is the MacBook Pro in the same position coud only connect at 1170Mbps as opposed to the 1300Mbps on the stock TP-LINK firmware. The MacBook Pro wasn't moved and the router's antenna position nor physical position were changed, either. No other environmental changes were made.
The results:
bin/iperf.exe -c 192.168.1.102 -P 1 -i 1 -p 5001 -w 1.0M -f m -t 10
------------------------------------------------------------
Client connecting to 192.168.1.102, TCP port 5001
TCP window size: 1.00 MByte
------------------------------------------------------------
[332] local 192.168.1.135 port 52695 connected with 192.168.1.102 port 5001
[ ID] Interval Transfer Bandwidth
[332] 0.0- 1.0 sec 68.7 MBytes 576 Mbits/sec
[332] 1.0- 2.0 sec 28.9 MBytes 242 Mbits/sec
[332] 2.0- 3.0 sec 12.2 MBytes 102 Mbits/sec
[332] 3.0- 4.0 sec 6.55 MBytes 55.0 Mbits/sec
[332] 4.0- 5.0 sec 12.1 MBytes 102 Mbits/sec
[332] 5.0- 6.0 sec 59.8 MBytes 502 Mbits/sec
[332] 6.0- 7.0 sec 70.3 MBytes 589 Mbits/sec
[332] 7.0- 8.0 sec 51.7 MBytes 434 Mbits/sec
[332] 8.0- 9.0 sec 56.1 MBytes 471 Mbits/sec
[332] 9.0-10.0 sec 67.9 MBytes 570 Mbits/sec
[332] 0.0-10.0 sec 434 MBytes 364 Mbits/sec
Done.
bin/iperf.exe -c 192.168.1.102 -P 1 -i 1 -p 5001 -w 1.0M -f m -t 10
------------------------------------------------------------
Client connecting to 192.168.1.102, TCP port 5001
TCP window size: 1.00 MByte
------------------------------------------------------------
[332] local 192.168.1.135 port 52701 connected with 192.168.1.102 port 5001
[ ID] Interval Transfer Bandwidth
[332] 0.0- 1.0 sec 10.0 MBytes 84.3 Mbits/sec
[332] 1.0- 2.0 sec 52.3 MBytes 439 Mbits/sec
[332] 2.0- 3.0 sec 69.8 MBytes 585 Mbits/sec
[332] 3.0- 4.0 sec 66.9 MBytes 561 Mbits/sec
[332] 4.0- 5.0 sec 49.3 MBytes 414 Mbits/sec
[332] 5.0- 6.0 sec 66.9 MBytes 562 Mbits/sec
[332] 6.0- 7.0 sec 67.6 MBytes 567 Mbits/sec
[332] 7.0- 8.0 sec 28.4 MBytes 238 Mbits/sec
[332] 8.0- 9.0 sec 12.4 MBytes 104 Mbits/sec
[332] 9.0-10.0 sec 12.9 MBytes 108 Mbits/sec
[332] 0.0-10.2 sec 437 MBytes 357 Mbits/sec
Done.
bin/iperf.exe -c 192.168.1.102 -P 1 -i 1 -p 5001 -w 1.0M -f m -t 10
------------------------------------------------------------
Client connecting to 192.168.1.102, TCP port 5001
TCP window size: 1.00 MByte
------------------------------------------------------------
[324] local 192.168.1.135 port 52709 connected with 192.168.1.102 port 5001
[ ID] Interval Transfer Bandwidth
[324] 0.0- 1.0 sec 52.6 MBytes 441 Mbits/sec
[324] 1.0- 2.0 sec 60.5 MBytes 507 Mbits/sec
[324] 2.0- 3.0 sec 63.0 MBytes 529 Mbits/sec
[324] 3.0- 4.0 sec 33.7 MBytes 282 Mbits/sec
[324] 4.0- 5.0 sec 16.0 MBytes 134 Mbits/sec
[324] 5.0- 6.0 sec 11.8 MBytes 98.8 Mbits/sec
[324] 6.0- 7.0 sec 15.8 MBytes 132 Mbits/sec
[324] 7.0- 8.0 sec 58.8 MBytes 493 Mbits/sec
[324] 8.0- 9.0 sec 69.2 MBytes 581 Mbits/sec
[324] 9.0-10.0 sec 66.4 MBytes 557 Mbits/sec
[324] 0.0-10.0 sec 448 MBytes 375 Mbits/sec
Done.
bin/iperf.exe -c 192.168.1.102 -P 1 -i 1 -p 5001 -w 1.0M -f m -t 10
------------------------------------------------------------
Client connecting to 192.168.1.102, TCP port 5001
TCP window size: 1.00 MByte
------------------------------------------------------------
[324] local 192.168.1.135 port 52718 connected with 192.168.1.102 port 5001
[ ID] Interval Transfer Bandwidth
[324] 0.0- 1.0 sec 66.4 MBytes 557 Mbits/sec
[324] 1.0- 2.0 sec 48.6 MBytes 408 Mbits/sec
[324] 2.0- 3.0 sec 68.3 MBytes 573 Mbits/sec
[324] 3.0- 4.0 sec 45.6 MBytes 383 Mbits/sec
[324] 4.0- 5.0 sec 7.48 MBytes 62.7 Mbits/sec
[324] 5.0- 6.0 sec 10.6 MBytes 89.3 Mbits/sec
[324] 6.0- 7.0 sec 11.7 MBytes 98.4 Mbits/sec
[324] 7.0- 8.0 sec 42.2 MBytes 354 Mbits/sec
[324] 8.0- 9.0 sec 69.7 MBytes 585 Mbits/sec
[324] 9.0-10.0 sec 68.7 MBytes 576 Mbits/sec
[324] 0.0-10.0 sec 439 MBytes 368 Mbits/sec
Done.
bin/iperf.exe -c 192.168.1.102 -P 1 -i 1 -p 5001 -w 1.0M -f m -t 10
------------------------------------------------------------
Client connecting to 192.168.1.102, TCP port 5001
TCP window size: 1.00 MByte
------------------------------------------------------------
[332] local 192.168.1.135 port 52725 connected with 192.168.1.102 port 5001
[ ID] Interval Transfer Bandwidth
[332] 0.0- 1.0 sec 31.3 MBytes 263 Mbits/sec
[332] 1.0- 2.0 sec 13.5 MBytes 113 Mbits/sec
[332] 2.0- 3.0 sec 13.6 MBytes 114 Mbits/sec
[332] 3.0- 4.0 sec 9.80 MBytes 82.2 Mbits/sec
[332] 4.0- 5.0 sec 54.3 MBytes 455 Mbits/sec
[332] 5.0- 6.0 sec 50.6 MBytes 425 Mbits/sec
[332] 6.0- 7.0 sec 0.01 MBytes 0.07 Mbits/sec
[332] 7.0- 8.0 sec 17.4 MBytes 146 Mbits/sec
[332] 8.0- 9.0 sec 56.9 MBytes 477 Mbits/sec
[332] 9.0-10.0 sec 60.1 MBytes 504 Mbits/sec
[332] 0.0-10.0 sec 307 MBytes 258 Mbits/sec
Done.
The average was: 344.5 Mbits/sec.
A huge difference is thus shown between the two firmware. The lower connection rate may have impacted the LEDE results slightly but I don't believe it can be responsible for over twice a difference in throughput.
I have researched this issue and I note others have commented on it previously on the OpenWRT forums. What I would like to know is the reason for these differences and whether there are plans to address it? I would be curious to hear from others with other router models to see if it impacts them too.