From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-bk0-f43.google.com (mail-bk0-f43.google.com [209.85.214.43]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id D45D321F0C0; Tue, 15 May 2012 23:31:52 -0700 (PDT) Received: by bkty5 with SMTP id y5so647123bkt.16 for ; Tue, 15 May 2012 23:31:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=subject:from:to:cc:in-reply-to:references:content-type:date :message-id:mime-version:x-mailer:content-transfer-encoding; bh=ThrSfYcymLZpsmQQ/NMTImnb7j4fnMg2GoKJrk6bvE8=; b=FW2KUNkE1I9IKkdWvfPPM21rdOglXvvQGwPJ+UEfzqP6k05FvAiHFf8ztzNHxz4oT2 7mpCbv+iLTf6VvC7DwU5ACA9XzI1rkXO3X8Vi7sWXxBQCe0w0CunZwiGHx8v8okmdFvf luZv7EG6xVR7CiCJ4/ti1lSfRJphSHgZASLqjy375raY9M+KPR1689MIpqj9MGxA+IZj miLH+4ZhY2oxqthNbT23mLsfZTB1iaQvK7ud2soWoYLDG5IDXkVPwgxeBMCzb6P1HII/ jncNBH8+HlpggKNh1S8POB/qBgyruaspGDyPap5ROA4fcJ2054HHr6KwX16mrNDoRDQa WdRA== Received: by 10.204.13.78 with SMTP id b14mr684279bka.32.1337149910453; Tue, 15 May 2012 23:31:50 -0700 (PDT) Received: from [172.28.91.41] ([74.125.122.49]) by mx.google.com with ESMTPS id z14sm2340485bky.15.2012.05.15.23.31.47 (version=SSLv3 cipher=OTHER); Tue, 15 May 2012 23:31:48 -0700 (PDT) From: Eric Dumazet To: Dave Taht In-Reply-To: References: <4FA9FDC0.9010600@superduper.net> Content-Type: text/plain; charset="UTF-8" Date: Wed, 16 May 2012 08:31:46 +0200 Message-ID: <1337149906.8512.1141.camel@edumazet-glaptop> Mime-Version: 1.0 X-Mailer: Evolution 2.28.3 Content-Transfer-Encoding: 7bit Cc: codel@lists.bufferbloat.net, Kevin Gross , bloat Subject: Re: [Codel] [Bloat] The challenge X-BeenThere: codel@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: CoDel AQM discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 May 2012 06:31:53 -0000 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.