Overview of the CeroWrt Project

The CeroWrt Project is complete. The last build (3.10.50-1) was released in July 2014. The principles learned from that research project have been transferred to the Linux kernel and OpenWrt.

Note: These pages remain as a historical reference for the work that was done to complete CeroWrt, and as a record of the initial research work for codel & fq_codel. See the CeroWrt Index page for all CeroWrt documentation.

Note: The “LEDE Project” was a fork of OpenWrt in 2016. In 2018, all changes to LEDE became the new OpenWrt mainline. Any reference in this wiki to “LEDE” applies to OpenWrt as well.

Bufferbloat is the undesirable latency that comes from a router or other network equipment buffering too much data. It 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 was 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 was 100% open source, top to bottom. No binary blobs whatsoever. Every aspect of the code and hardware can be inspected and/or modified. As a project, most of the results have been pushed up into mainline linux, OpenWrt releases, many firewall and router distributions and it is beginning to appear in commercial firmware. Active research (due to lack of funding, and succeeding in the primary goals) has ceased, with the exception of ongoing work into standardization efforts, and into something even better than fq_codel, called cake, which is not ready for prime time yet.

Is your internet connection bloated?

You can find out right now using one of the Tests for Bufferbloat - or just use Waveform Bufferbloat Test.

If you find bufferbloat is present, read What Can I do about Bufferbloat.

News

CeroWrt 3.10.50-1 Works! This build has been very stable since it was released on 28 July 2014. We strongly recommend replacing all earlier builds with this build. Read the News item for the update. See the CeroWrt 3.10 Release Notes and the mailing list for more details.

Note: All the important features of the CeroWrt software are now available in mainline OpenWrt builds. You may be better served by installing one of those supported builds that are available on a much wider range of router hardware.

Roadmap

Our plan has always been 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 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 Bufferbloat Project

Try the Software

The latest CeroWrt build is solid. We believe it solves virtually all the bufferbloat problem, and deserves wider use. Lots of people are using it as their production router.

Since all development on CeroWrt stopped in July 2014, we recommend you use a supported build from OpenWrt or the LEDE Project. However, you can download the final CeroWrt 3.10.50-1 build from:

Hardware Requirements

To minimize the effects of hardware dependencies, we have chosen the Netgear WNDR3700v2 and WNDR3800 as the sole hardware for the experiments. Note: The WNDR3700v3 and v4 models 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. As of October 2015, both the target router models have become scarce. You can search for “WNDR3800” on amazon.com, frys.com, ebay.com, etc. but might be better served by looking at the OpenWrt software which is available for a wide variety of common routers.

There are ubnt builds available as well, but specialized for a specific deployment scenario. Ask if you want them.

As noted above, 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: Hardware Reports on FQ CODEL

Documents

Tech Notes for CeroWrt

The following give detailed descriptions of CeroWrt’s operation.

Older Information

The documents below describe the older Linux 3.7 and earlier builds.

The Historical Documents page links to many documents that describe the history and earlier releases of the project.

Attachments

To edit this page, submit a pull request to the Github repository.
RSS feed

Recent Updates

Oct 20, 2023 Wiki page
What Can I Do About Bufferbloat?
Dec 3, 2022 Wiki page
Codel Wiki
Jun 11, 2022 Wiki page
More about Bufferbloat
Jun 11, 2022 Wiki page
Tests for Bufferbloat
Dec 7, 2021 Wiki page
Getting SQM Running Right

Find us elsewhere

Bufferbloat Mailing Lists
#bufferbloat on Twitter
Google+ group
Archived Bufferbloat pages from the Wayback Machine

Sponsors

Comcast Research Innovation Fund
Nlnet Foundation
Shuttleworth Foundation
GoFundMe

Bufferbloat Related Projects

OpenWrt Project
Congestion Control Blog
Flent Network Test Suite
Sqm-Scripts
The Cake shaper
AQMs in BSD
IETF AQM WG
CeroWrt (where it all started)

Network Performance Related Resources


Jim Gettys' Blog - The chairman of the Fjord
Toke's Blog - Karlstad University's work on bloat
Voip Users Conference - Weekly Videoconference mostly about voip
Candelatech - A wifi testing company that "gets it".