google / netstack

IPv4 and IPv6 userland network stack
Apache License 2.0
3.09k stars 279 forks source link

Any plans for configurable congestion algorithm? (e.g. Google BBR) #7

Closed m13253 closed 6 years ago

m13253 commented 6 years ago

I am very glad to see this young project.

I would like to know, whether NetStack team plan to have configurable TCP congestion algorithm here in NetStack?

Google's BBR deals with buffer-bloated routers and has superior performance on both datacenter and consumer-grade networks. I am also currently working on some open-source userland TCP project. However I could not find any userland implementation of BBR. It would be great to see BBR in NetStack. Does the team have any plan in the future?

Additionally, a plugin system might be useful to switch between algorithms suitable for specific environment. e.g., TCP hybla works for high-latency satellite Internet. This is unimportant, just for a reminder.

Finally, thank you for creating this project for the world!

(Sorry for having posted here instead of on the Gerrit tracker, since I think it is better not to disturb the development board.)

zboya commented 6 years ago

This subject is of great interest to me.

hbhasker commented 6 years ago

BBR is still under development and it will be sometime before the RFC is stablr, that said we do have plans of adding CUBIC and make the congestion control configurable. Netstack implements NewReno but the congestion control logic is very intertwined right now and we need to refactor a bit to pull out congestion control and make it easily replaceable.

Eventually we might implement BBR as well.

m13253 commented 6 years ago

Thanks for your answer!

I'm looking forward to the bright future of NetStack!

hbhasker commented 6 years ago

FYI, an early implementation of CUBIC is now available. It may still have bugs but you should be able to try it out.