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 main 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.
The code is 100% open source, top to bottom. No binary blobs whatsoever. Every aspect of the code and hardware can be inspected and/or modified. The work is woefully underfunded, please help if you can.
A new release based on Linux 3.10 is pending. The betas are getting better and better - see the CeroWrt 310 Release Notes and mailing list for more details.
We now discourage new installs of the prior 3.7 stable release. In particular if you are using IPv6, PLEASE use a current beta of CeroWrt instead due to Bug #441
Our plan is to produce a stable build that can be used as both a production router, and as a platform for further research into algorithms for solving state of the art problems in networking. The CeroWrt 3.10 series of builds include the following features and capabilities
- Linux 3.10.36 kernel. Most of the fixes for bufferbloat are being implemented in this 3.10 kernel, so we are tracking these developments carefully. http://kernel.org
- We have included a version of the CoDel algorithm from Kathie Nicols and Van Jacobson, along with Eric Dumazet's flow queueing fq_codel. These in turn rely on the Byte Queue Limits for line rate networks and on htb for the SQM QoS system. These replace earlier Active Queue Management fixes for bufferbloat including: Stochastic Fair Queueing-Random Early Drop (SFQRED), and other queue disciplines.
- There are also two newer versions of fq_codel under test, as well as an implementation of the current ns2 model of codel itself.
- IPv6 support. Another major goal of CeroWrt is to make IPv6 networking in the home as simple as IPv4.
- Babel mesh routing protocol with source sensitive routing. RA, bgp, rip, ripng, and ospf are also supported via the Quagga optional package.
- DNSSEC - Secure extensions to the DNS system.
- OpenWrt features. Because we track the OpenWrt code base carefully, we incorporate most of the capabilities of that distribution. We actively push our changes/enhancements back toward the OpenWrt trunk. http://openwrt.org
- An attractive web GUI for configuration - LuCI
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/
IRC: Find us on IRC on chat.freenode.net, #bufferbloat channel
Assorted Bufferbloat Videos
Try the Software¶
The current Linux 3.10.36-4 build is almost beta quality. We believe it solves much of the bufferbloat problem, and deserves wider testing. Lots of people are using these builds as a second router in their homes. Many are using it as their production router.
Download the current CeroWrt 3.10.36 build: http://snapon.lab.bufferbloat.net/~cero2/cerowrt/wndr/3.10.36-4
To minimize the effects of hardware dependencies, we have chosen the Netgear WNDR3700v2 or WNDR3800 as the sole hardware for the experiments. Note: The WNDR3700v3 and v4 models that have recently appeared on the market do not work with CeroWrt; purchase the WNDR3800 if you want to be future-proof.
The open source support for these two models is extensive, they have a capable processor with 16MB of flash and 64MB of RAM, they support a USB flash stick, they are inexpensive (around $100). The WNDR3800 has more RAM (128MB instead of 64), but either of these models will be fine for these experiments. While the WNDR3800 became scarce for a while, it is now widely available: search for "WNDR3800" on amazon.com, frys.com, ebay.com, etc.
There are ubnt builds available as well, but specialized for a specific deployment scenario. Ask if you want them.
Otherwise all of openwrt and dd-wrt support fq_codel now in their QoS systems, so you can adopt one of the 150+ platforms supported there and see what happens.... YMMV, but please report here:
The documents below describe the older Linux 3.7 builds.
- Installation Guide
- CeroWrt 3.7 Release Notes
- Flashing Instructions
- Automated Configuration of CeroWrt
- Frequently Asked Questions
- How is CeroWrt different from OpenWrt?
Tech Notes for CeroWrt¶
The following give detailed descriptions of CeroWrt's operation.
- Setting up AQM
- Default interface naming scheme
- Default network numbering scheme
- Changing IP, DNS, and SSID
- Monitoring CeroWrt with SNMP and NetFlow
- Using Bonjour, mDNS, or ZeroConf with CeroWrt
- Getting an IPv6 address via Hurricane Electric Tunnelbroker.net
- Building CeroWrt on your own machine (tested for CeroWrt 3.3, not with CeroWrt 3.7)
- Setting QoS If You Can't Use CoDel
The Historical Documents page links to many documents that describe the history and earlier releases of the project.