OpenWrt 18.06.0 + TCP BBR

Hi,

It's posible to implement TCP BBR in OpenWRT 18.06.0 without building an own version?

Thanks,

Since 18.06.0 is running a newer kernel than 4.9 it should be possible.
It seems easy enough to test it on OpenWRT following these instructions (I didn't try these myself): https://www.techrepublic.com/article/how-to-enable-tcp-bbr-to-improve-network-speed-on-linux/

(instead of nano, you can use vi, the rest should be the same)

Hi @Specimen ,

I think the method mentioned in your link is only valid for Ubuntu (no vi/nano/sysctl commands, I mean linux-generic-hwe-16.04 package). Maybe I'm wrong, but the only way to implement BBR in OpenWRT is building it at your own.

If someone could confirm it, should be nice.

Thanks for your answer @Specimen

I would go back a few steps and ask myself the question why I wanted to use TCP BBR in the first place. It is not made for routers but for servers.

No, it's not specific to Ubuntu, it's specific to Linux. :wink:

You can obviously ignore the apt update part because that is the only Ubuntu specific part and because in OpenWRT the kernel version is already BBR compatible.

Vi and sysctl are present in OpenWRT console, and running sysctl net.ipv4.tcp_available_congestion_control on OpenWRT will give you the same output (net.ipv4.tcp_available_congestion_control = cubic reno).

/etc/sysctl.conf is also present in OpenWRT.

To conclude, the relevant part of the article is editing that file, the only reason why it wouldn't work is if the kernel was compiled with BBR taken out which I think it's unlikely.

Hope that helps.

1 Like

Don't think BBR was ever built by default, see PR868 for example

1 Like

My router is running server services (as IPSEC Server).

After reviewing the imagebuilder options and the PR cited, I now think that not only BBR is not present in the current binary builds you don't even have the option yet to build it into the kernel or as add as a kernel module.

But BBR seems quite interesting even for dealing with bufferbloat as you can see here: http://blog.cerowrt.org/post/bbrs_basic_beauty/

So, not just for servers, seems quite promising for basic home wifi routers.

1 Like

Maybe gets in conflict with 'software flow offloading' option?

You have to, at least, build the module by yourself

It's for file/video servers. Just use a correctly configured Cake from the Bufferbloat guys.

It's not only for file/video servers.
Take a look here: https://medium.com/google-cloud/tcp-bbr-magic-dust-for-network-performance-57a5f1ccf437

I'm using cake, but I would like to check how is TCP BBR working.

Totally orthogonal :wink: As the article states, you will only see effects if your router initiates actual data transmissions (be that serving data, web pages, or terminating a VPN link). For receiving data the servers need to support BBR and that is outside our control. BBR certainly seems nice especially since Google does not stand still and a major upgrade incorporating all that was learned from BBR v1is being created.I would just caution that BBR (unless rolled out universally*) is not really going to make sqm/cake moot.

Best Regards

*) I am kidding, even rolling out BBR universally is still not going to fix over-buffering of CPEs and head-end devices, so AQM@home still seems advisable.

1 Like

Do not underestimate the power of Google and his tons of money!! :joy: :joy: :joy:

So BBR doesn't "step on" cake's toes, so to speak, or vice versa? As in shouldn't be a negative impact when running concurrently?

I'd do A/B testing, but currently the job is leaving me with next to no free time, and as usual my only test platform is the home router/AP with friendly family members sharpening the pitchforks if things get too "interesting"...

I believe so, BBR explicitly tries to detect the presence of non-latency inceasing AQMs like cake and behave accordingly. Now whether that works sufficiently well, I do not know, and I note that google is working on BBRv2 to make it a nicer netizen when sharing links with other non-BBR-flows, so maybe it is not yet time for BBR everywhere.

I feel your pain, I am in a similar boat

1 Like

BBRv1 can be very unfair, even to itself. The post of mine you cite is very old, and I have tons of later data that I guess I should organize and publish. fq_codel works just fine against it, but tends to drop a lot of packets before bbrv1 notices.

I would support openwrt gaining the ability to add it as a package post 4.14, however. Better more folk get experience with it. Hopefully bbrv2 will be better.

3 Likes

Has there been any further development and testing regarding this topic? Is there any current plans to implement this in OpenWRT?

@vstokesjr
BBR is available in snapshots, you can install via:
opkg update ; opkg install kmod-tcp-bbr

then edit /etc/sysctl.conf, and add the following:

net.core.default_qdisc=fq_codel
net.ipv4.tcp_congestion_control=bbr
2 Likes

Thank you!
Has anyone seen any network performance improvements on their router when enabling BBR?