General list for discussing Bufferbloat
 help / color / mirror / Atom feed
From: Eric Dumazet <eric.dumazet@gmail.com>
To: Dave Taht <dave.taht@gmail.com>
Cc: codel@lists.bufferbloat.net, bloat <bloat@lists.bufferbloat.net>
Subject: Re: [Bloat] [Codel]  The challenge
Date: Wed, 16 May 2012 08:31:46 +0200	[thread overview]
Message-ID: <1337149906.8512.1141.camel@edumazet-glaptop> (raw)
In-Reply-To: <CAA93jw6mzUaQ5-Lq1ca_QF_yoS35_OtNZPOATHMukc=w=C+qEw@mail.gmail.com>

On Tue, 2012-05-15 at 23:09 -0700, Dave Taht wrote:

> I would certainly like more folk to analyse fq_codel, particularly in
> the context of TCP mice and what we call ANTs these days. It seems to
> be really excellent, but I too haven't had much time to look at it,
> yet. It certainly does an even better job than codel of allowing
> sparse streams through in my own testing, and I run it by default on
> my laptops, wireless gear, routers and desktop at present. Under heavy
> load things like cerowrt and ssh and other stuff like mosh, remain
> incredibly responsive.

fq_codel is like SFQ but has following new features :

1) More modern code :
  - Less hardcoded limits
    The only one remaining is the 65536 max flows limit, a linux qdisc
limit. (uses u32 splitted in 16:16 for class ids)
  - Easy to add new params in future (nested attributes)

2) head drops. Give to TCP chance to react faster to congestions.

3) Codel included (instead of pfifo)

4) New flows have priority against old ones : Their first quantum (or
first packet will be sent _before_ packets of old flows)

5) More efficient code (less cache misses in high end configurations)

But if traffic consist of transient flows (one packet per flow, think of
DDOS), your interactive traffic will suffer, there is no magic
inside ;) 

Definition of a new flow :

A) enqueue() time : Packet is classified and map to an empty flow X (a
flow that is not in a list (new or old)
   Flow added at tail of 'new_flows' list. Initialize flow X quantum to
1514 (or configured quantum for fq_codel)

B) dequeue() time. Packet dequeued. flow moved to tail of 'old flows'
list (if flow quantum exhausted)

C) if all flows present in 'old_flows' list are examined by dequeue(),
we notice empty flows and they are removed from list.

If a packet comes for flow X :
 - If flow X still in a old/new queue, we let X in the list, and only
add packet to the current list of packet for flow X.





  reply	other threads:[~2012-05-16  6:31 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-09  1:04 [Bloat] " Dave Taht
2012-05-09  2:02 ` Kevin Gross
2012-05-09  5:16 ` Simon Barber
2012-05-09  5:40   ` Eric Dumazet
2012-05-09  5:41     ` Dave Taht
2012-05-09  7:32       ` [Bloat] [codel] some numbers on dual 10Gb links Eric Dumazet
2012-05-09 13:04   ` [Bloat] The challenge Kevin Gross
2012-05-16  5:55     ` Jonathan Morton
2012-05-16  6:09       ` Eric Dumazet
2012-05-16  7:05         ` [Bloat] Exploring the potential of codel, fq_codel, and qfq dave taht
2012-05-16  7:20           ` Dave Taht
2012-05-16  7:42             ` Eric Dumazet
2012-05-16  7:46             ` Eric Dumazet
2012-05-16  8:17               ` Eric Dumazet
2012-05-16  9:02                 ` Jonathan Morton
2012-05-16  9:14                   ` Eric Dumazet
2012-05-16  9:31                     ` Jonathan Morton
2012-05-16  9:37                       ` Eric Dumazet
2012-05-16  9:59                         ` Jonathan Morton
2012-05-16 10:10                           ` Eric Dumazet
2012-05-16 13:58                 ` Eric Dumazet
2012-05-16 17:40               ` [Bloat] [Codel] " Rick Jones
2012-05-16 17:53                 ` Eric Dumazet
2012-05-16 17:33             ` Rick Jones
2012-05-16 17:48               ` Eric Dumazet
2012-05-16  6:09       ` [Bloat] The challenge Dave Taht
2012-05-16  6:31         ` Eric Dumazet [this message]
2012-05-16  8:15           ` [Bloat] [Codel] " Jonathan Morton
2012-05-09 19:10   ` [Bloat] " Roger Jørgensen
2012-05-09 19:15     ` Dave Taht
2012-05-09 19:28       ` Dave Taht
2012-05-09 20:02     ` Simon Barber
2012-05-09 20:06   ` Fred Baker
2012-05-09 21:47     ` Jim Gettys
2012-05-09 23:58       ` [Bloat] [Codel] " Eric Dumazet
2012-05-10  0:02         ` Steinar H. Gunderson
2012-05-10  0:08           ` Eric Dumazet
2012-05-10  0:08         ` Steinar H. Gunderson
2012-05-10  0:16           ` Eric Dumazet
2012-05-10  9:19             ` Steinar H. Gunderson
2012-05-10  9:27               ` Eric Dumazet
2012-05-10  9:38                 ` Steinar H. Gunderson
2012-05-10  2:34 ` [Bloat] " Jonathan Morton
2012-05-10  2:37   ` Dave Taht
2012-05-10  6:35     ` David Woodhouse
2012-05-10  6:54       ` Jonathan Morton
2012-05-10  7:02         ` David Woodhouse
2012-05-10 14:25           ` Justin McCann
2012-05-10 14:42             ` David Woodhouse
2012-05-10 15:34               ` Neil Davies
2012-05-10 21:20               ` [Bloat] [Codel] " Jim Gettys
2012-05-14  7:27           ` [Bloat] " Jonathan Morton
2012-05-14  7:34             ` [Bloat] [Codel] " Eric Dumazet
2012-05-14 13:55             ` [Bloat] " David Woodhouse
2012-05-18 20:56               ` [Bloat] Linux-able modems Jonathan Morton
2012-05-18 21:36                 ` Dave Taht
2012-05-18 22:34                   ` Dave Taht

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://lists.bufferbloat.net/postorius/lists/bloat.lists.bufferbloat.net/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1337149906.8512.1141.camel@edumazet-glaptop \
    --to=eric.dumazet@gmail.com \
    --cc=bloat@lists.bufferbloat.net \
    --cc=codel@lists.bufferbloat.net \
    --cc=dave.taht@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox