# CoDel and Queue Limits

Registered by LPC Submitter

Networking Topics
1. CoDel and FQ CoDel
2. Byte Queue Limits revisited

=== CoDel and FQ CoDel ===
Kathleen Nichols & Van Jacobson made a major work in the to help the bufferbloat problem that got some attraction these past years after Jim Gettys and Dave Taht communications. Here are the [result of this work](http://queue.acm.org/detail.cfm?id=2209336).

Idea of Codel saying that buffers or large Queues are not bad per se (as BufferBloat could imply) Its the way Queues are handled that is critical. AQM are quite complex to deploy because RED (the most known AQM) is hard to tune and has some flaws.

CoDel intent is to use the delay of packets in queue as the main input, and not the Queue length (in Bytes or Packets) It is designed to be a "No knob" AQM for routers. Its implementation uses a fairly simple algo intended for silicon integration. Since Kathleen and Van ideas were very close of the various ideas I had last year to improve linux AQM, I co-implemented Codel for linux
(with Dave Taht). I also implemented fq_codel, which is SFQRED replacement, using Fair Queueing and CoDel managed per flow queue. I'll present various experimental results.

Eric is currently working for Google. He is a linux networking guy, who did some work in packet schedulers lately: SFQ improvements, and CoDel / fq_codel implementations.

=== Byte Queue Limits revisited ===
Byte queue limits (BQL) is an algorithm to manage sizes of queues in network cards based on bytes, not on packets. The algorithm tries to estimate how many bytes the card is able to transmit, sizes the queue accordingly and accommodates to changing load. Properly sized (shorter) queues push queuing to upper layers of the stack, the queuing disciplines (qdisc), which reduces the time between a packet is scheduled for transmission and when it hits the wire. This reduces latency and allows better scheduling decisions in software.

BQL is here for a year and it seems to work well given the lack of major complains. In this talk we are going to present experimental data on how BQL actually behaves and what are the effects of BQL buffer management for the rest of the stack. We are going to show that BQL does not need any knobs to selects a good size of the queues. We are also going to discuss and explain some limitations of the algorithm and some corner cases of its deployment due to its dependency on outer events that pace its execution.

Tomas is a PhD candidate at the Free University in Amsterdam in the Minix group of prof. Andy Tanenbaum and is exploring how to take advantage of multicore processors for designing reliable systems. He has been working on intrusion detection, filesystems and L4 microkernel. He is currently an intern in the Linux networking team at Google.

## Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

(?)

### Work Items

This blueprint contains Public information
Everyone can see this information.