Overview of the CeroWrt Project¶
Bufferbloat is a huge drag on Internet performance created, ironically, by previous attempts to make it work better. Eric Raymond wrote this one-sentence summary of the problem: "Bloated buffers lead to network-crippling latency spikes." You can read more about this problem at the top-level Bufferbloat site.
CeroWrt is a project built upon the OpenWrt firmware to resolve these endemic problems in home networking today, and to push the state of the art of edge networks and routers forward. Projects include proper IPv6 support, tighter integration with DNSSEC, and most importantly, reducing bufferbloat in both the wired and wireless components of the stack.
To minimize the effects of hardware dependencies, we have chosen the Netgear WNDR3700v2 or WNDR3800 as the sole hardware for the experiments. The open source support for it is extensive, it has a capable processor with 16MB of flash and 64MB of RAM, it supports a USB flash stick, they are inexpensive (around $120-130). The WNDR3800 has more RAM (128MB instead of 64), but either of these models will be fine for these experiments. The WNDR3700v3 model that has recently appeared on the market does not work with CeroWrt; purchase the WNDR3800 if you want to be future-proof.
Roadmap¶
At this time, we have created a minimal, functioning build as a platform for experimentation. In parallel, several other developments have occurred:
- Everything we've worked on is now in the Linux 3.3 kernel.
- We have been submitting patches back to OpenWrt for inclusion in their mainline source tree.
Dave Täht has been experimenting with a number of algorithms to reduce the amount of unnecessary (and harmful) buffering within the router. His notebook on github (below) lists his recent experiments. These test processes provide objective evidence of the improvements (or lack of improvements) of the various algorithms and implementations. There are two goals:
- Short-term, we would like to produce a stable release with the best of the current (February 2012) algorithms that can be deployed widely as means of testing both the robustness of the code, and a measure of the improvements in the "real world".
- Longer term, we want to continue developing the CeroWrt platform to test out additional algorithms. The knowledge we acquire will be a base for pushing these changes back into the Linux kernel, into other home routers, even the core of the Internet.
News¶
See the News page for details.
Sources of Information about the project:¶
Glossary for Bufferbloat Topics: Glossary
General Bufferbloat list: https://lists.bufferbloat.net/listinfo/bloat
CeroWrt-devel list: https://lists.bufferbloat.net/listinfo/cerowrt-devel
CeroWrt-Commits list: https://lists.bufferbloat.net/pipermail/cerowrt-commits/
Lab Notebook in Github: https://github.com/dtaht/deBloat
IRC: Find us on IRC on chat.freenode.net, #bufferbloat channel
Try the Software:¶
The current software is being used for experimentation on the algorithms. A few brave souls are also using it as a second router in their homes. At this stage, we do not recommend it as your production router.
The current builds are stable, and the bql-smoketest builds provide some improvement to the buffer bloat problem, and provides a good platform for testing various algorithms. The rc6 build is older, but in wider use. We have not received any reports of crashes from rc6 so feel free to try in less experimental situations.
The documents below are correct for the current (early 2012) builds.
CeroWrt Releases¶
Early 2012 release¶
The bql-smoketest builds provide a good improvement to the buffer bloat problem.
bql-smoketests: http://huchra.bufferbloat.net/~cero1/bql-smoketests/
Documents:
- READ THIS FIRST
- Flashing Instructions
- Installation Guide
- FAQ
- Default interface naming scheme
- Default network numbering scheme
- Changing IP, DNS, and SSID
- Monitoring CeroWrt with SNMP and NetFlow
Miscellaneous¶
The remaining documents are incomplete:
Building CeroWrt on your own machine
Packages developed during Bismark boot camp¶
Test Labs¶
BloatLab 1 (isc.org)
OCEAN CITY¶
About the OCEAN CITY release. In the latter half of 2011, we had hoped to release a build with grand goals. This release was to be named OCEAN CITY. But reality set in, and it became obvious that we could not meet these goals. The rc6 build is the culmination of the Ocean City release. Download the stable release: http://huchra.bufferbloat.net/~cero1/cerowrt-wndr3700-1.0rc6/
Any remaining references to an Ocean City on these pages are being changed to align with the more important goals set out above. The OCEAN CITY page lists obsolete information.