Cut-Through Forwarding necessary on dd-wrt and tomato for throughput higer than 300Mbit
Short: dd-wrt does not yet support Cut-Through Forwarding (CTF). Tomato does. If your internet connection is faster than 250Mbit, use Tomato and CTF.
It all started when I decided to upgrade my router at home. Since my setup is a bit different than most other people's, I wanted a couple of routers that I could tweak in any way I liked. Therefore I wanted to find a fast router, which also work with dd-wrt or Tomato. I want to connect my home in Zürich with my vacation home in Sweden through openvpn as two subnets, so that I can stream music and video from my NAS in Switzerland to my TV in Sweden. I also have a couple of Raspberry Pi's in the basement of my vacation home in Sweden, which I want to access directly over my home network.
If you don't see the beauty of this already, this blog post is not for you. =)
First I opted for the Linksys WRT1900AC, which I thought was intended to be the new open flagship for home grown router firmware. I was wrong. I gave up on the dd-wrt installation on this router, but kept on looking around for something else. Not that I couldn't get my environment running the way I wanted with the Linksys. It is not a bad router, it is actually quite good. It just did not meet my expectations regarding dd-wrt.
After talking to a couple of friends of mine, I decided to give the Netgear R8000 a go. It had dd-wrt support (according to some websites), and looked impressive by the specs. I was too early. The first release of dd-wrt on the Netgear R8000 had just been released, and it was far from stable. Also, in my setup (where I put it between my computer and my internal network), I did not at all get the throughput I had expected. When copying a large file from my NAS, I got only ca 30 MB per second transfer rate, even when I was physically connected per ethernet cable. I reverted to the default firmware from Netgear, tested again, and... I could transfer the same file at almost 1Gbit per second.
I stumbled across a forum post, where someone complained about his LAN-WAN being throttled by his router at 300Mbit, in a setup where he had 1Gbit connection to the internet over a Netgear R8000 running dd-wrt (the forum where I read it have upgraded their software and all old posts seems to be gone, so I cannot reference this). At first, I thought that it was something I would not have to worry about until I get a much faster connection than I have now. But then, I just could not let go of it I thought that it was due to the new firmware; that somehow the drivers were not yet complete, or whatever.
So I did what any person in my situation would do. I solved the problem by throwing money at it. I bought a Netgear R7000. I was wrong. Again. The R7000 had the exact same issue. Since the highest priority was to replace an old router in Sweden and it was time to go there, I just had no time to investigate further. I accepted the fact, and brought the R7000 with me and set it up with dd-wrt (v24-sp2 (03/31/15) std (SVN revision 26622)).
When I got home I looked around even more, talked to some people about my experience with dd-wrt. Two of my friends recommended the ASUS RT-AC68U, and to put Tomato on it. Since a customer of mine needed a new router for his home office, I decided to order two.
With this extensive collection of wifi-routers it was time to get going. First I had some troubles getting the Tomato firmware onto the router, which I could resolve by using tftp[see 1]. In the end I opted for the AdvancedTomato firmware, mainly since I found the look and feel of the GUI appealing. I ended up with the 2.7 128 release. First I could not get the router to work at all. No web GUI, even though I could ping the router. Just by pure luck I figured out that I could connect to it per ssh. Then I found some weird entires related to httpd in /var/log/messages. In depair I tried to erase NVRAM and reboot, which worked for me, by issuing the command "nvram erase" from the command line when connected to the router.
- ssh firstname.lastname@example.org (password: admin)
- nvram erase
Not that any of this made my life any better. Close to 1Gbit transfer speed when running the default stock firmware from ASUS, and I had really poor performance when running the AdvancedTomato firmware. The average was around 30-35MByte per second with peaks a bit higher. Still not happy.
A very old forum discussion got me on track to figure this out, http://www.dd-wrt.com/phpBB2/viewtopic.php?p=544534. At least it wouldn't hurt to try it. I turned on Cut-Through Forwarding, and volia! Problem solved!
And now, when I copy files from my NAS, I get the expected throughput.
There is of course a long discussion on firmware to use. There are differences between dd-wrt, Tomato, AdvancedTomato, and other open firmwares. As of now, dd-wrt does not offer the Cut-Through forwarding, crippling the throughput somewhat for people with very fast internet connections. Tomato and AdvancedTomato are built around closed-source Broadcom drivers, hence not as open as dd-wrt, but offer the CTF functionality. In the end it is your choice, and at the moment not too many people actually have an internet connection that is faster than 250Mbit.
- Linksys WRT1900AC
- Netgear R7000
- Netgear R8000
- ASUS RT-AC68U
- Uploading firmware to ASUS RT-AC86U from a Mac OSX, https://chrishardie.com/2013/02/asus-router-firmware-windows-mac-linux/
- AdvancedTomato, https://advancedtomato.com
- The forum entry that got me on the right track. http://www.dd-wrt.com/phpBB2/viewtopic.php?p=544534