Hardware NAT For LEDE

Please update and try again. I found and fixed the bug you were describing, along with another issue.


On it, will edit this post with the results.
Thanks for your work already!

Clean build on the latest patches still yields ERR_CONNECTION_RESET on my scenario.

This is just a very initial test with a BT HH5a (using its internal VDSL2 modem with vectoring and PPPoE) and kernel 4.14/ flowoffload (r6313-c5b06da56), but the results are pretty nice.

http://www.dslreports.com/speedtest jumps from 73.3/ 37.8 MBit/s to 84.3/ 37.3 MBit/s, overall and quality evaluations improve slightly (from A to A+, bufferbloat=A, neither adblock nor sqm are enabled).
Downloading a single (623 MB) large file gets significantly faster "623,00M 11,2MB/s in 64s" vs. "623,00M 4,86MB/s in 98s".

Adding irqbalance to the mix (no manual optimizations, just invoking irqbalance) improves the dslreports speedtest to 97.4/ 37.6 MBit/s, that is -within the margin of error- even slightly better than using a combination of an external Draytek Vigor 130 and a ZyXEL NBG6817. The results seem to have a slightly higher variance (it does still get pushed quite a bit) with the BT HH5a (with irqbalance and flowoffload) compared to my normal setup (vigor 130, nbg6817), but they're pretty comparable.

@Plonk34 I think you were interested in figures about the BT HH5a recently.


Could you please make two tcpdumps on the router (one on the WAN interface, one on the LAN interface) that capture the issue?

I also had a BT HH5a and did some tests: my Internet speed also got a boost!

The first test is with kernel 4.9.x and the two latest with:

  • Linux 4.14.20
  • Flowoffload activated
  • irqbalance (also no manual optimisations, just --oneshot)
  • 5GHz AC WiFi (looks like there is a problem with wired network with lantiq and 4.14, look at the third result).


I've even seen 150Mb/s upload peaks!

With speed test results are similar: 131/72

Thanks a lot for this!


I have some issues with Flow Offload. When i run "conntrack -L", show a very high flows entries with states LAST_ACK, FIN_WAIT and TIME_WAIT and high numbers of flows too > 1000.

Please try the latest version from my staging tree, which includes this change:

Ok, as soon as I finish building the new image and try to comment on the results.

Thank you.

With this commit I had a huge drop in performance, to the point that many times the connection stops.

I found and fixed some more bugs in the code. Please try the latest version from my staging tree.

Hi @nbd

How to using your staging tree & roll back to master ?

I think it should work like this:

git fetch git://git.openwrt.org/openwrt/staging/nbd.git
git checkout -b nbd FETCH_HEAD

This will create a local branch 'nbd' with the state of my tree.
To switch back to master, you simply run
git checkout master

To delete the local branch, run:
git branch -D nbd

Thanks @nbd

Your tutor worked.

I maked a build with your staging tree, still problem same as davidzodelin.

Test on ER3 octeon soc.

Hi.. could you upload an image for home hub 5 a or a quick how to compile please?

Im a bit new to compiling lede/openwrt but i can use linux and git

git clone git://git.openwrt.org/openwrt/staging/nbd.git nbd
cd nbd
./scripts/feeds update -a
./scripts/feeds install -a
make menuconfig
make defconfig

Also firewall3 now support flowoffload rule https://git.openwrt.org/?p=project/firewall3.git;a=commit;h=c1a295a500f0d113bacc5455af6444eb18cb482f .

Excellent thanks.. am i right on thinking that with this tree the home hub 5 has more than 60mbs throughput over the vdsl?

Yes, this will allow 100 MBit/s, with peaks up to 115-120 MBit/s and only few drops below.

Please try the latest version

ok im trying to compile your tree but i get
scripts/feeds install -a
Makefile:17: *** ERROR: The path to the OpenWrt directory must not include any spaces. Stop.

am i being a complete spoon ? im assuming i need the openwrt source then nbd tree is a directory inside that ?

Looks to be all the requisite bits have been pushed to master, so I think you can just do a current pull/build of that rather than the staging tree.