From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lb0-f171.google.com (mail-lb0-f171.google.com [209.85.217.171]) (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 28A6A21F0B8; Wed, 16 May 2012 01:14:58 -0700 (PDT) Received: by lbom4 with SMTP id m4so714661lbo.16 for ; Wed, 16 May 2012 01:14:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=references:in-reply-to:mime-version:content-transfer-encoding :content-type:message-id:cc:x-mailer:from:subject:date:to; bh=SkmFFSxZr0GeBPT7RaXUa0lK9EoSERcPVc6PFUWUSzQ=; b=HrRBJbHsGoD56qsB3rt4Ty84h3wgML6EZJWo4KBHVCkeEUurHTf7LVHYnwjxqwKtnA DpCYifLvUwQWZWqx+KbnV23qynwD+hB9aGFrUUwyc8vze6+8D/JS+AtC9hGsp2gIeytj jmDeIKLx/rIxE1zijS50n7Xh7wyEQizTg+GFY85WTaLGrDRq53CIbW8K3h04VDXoXqjC kimRjLqJaIM3ZBr2Igwwub+2lfOkezkVWzqzR51mKN2usY+rBCyXbaVnYiz/nw09msuK YfAKA0J38EohS+HRa4PrXG5/h6wlGETWmUFJPglOKU0XMdbpmDXWFiqtUCTDNSlFdufL EGgg== Received: by 10.112.47.170 with SMTP id e10mr876931lbn.69.1337156096644; Wed, 16 May 2012 01:14:56 -0700 (PDT) Received: from [176.93.81.139] (176-93-81-139.bb.dnainternet.fi. [176.93.81.139]) by mx.google.com with ESMTPS id pj20sm2491035lab.13.2012.05.16.01.14.53 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 16 May 2012 01:14:56 -0700 (PDT) References: <4FA9FDC0.9010600@superduper.net> <1337149906.8512.1141.camel@edumazet-glaptop> In-Reply-To: <1337149906.8512.1141.camel@edumazet-glaptop> Mime-Version: 1.0 (iPhone Mail 8C148) Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii Message-Id: X-Mailer: iPhone Mail (8C148) From: Jonathan Morton Date: Wed, 16 May 2012 11:15:19 +0300 To: Eric Dumazet 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 08:15:00 -0000 I managed to run some quick tests this morning. Biggest factor was figuring o= ut that ECN wasn't enabled on my Mac. This makes a significant difference to= being able to observe it.=20 So far all of the nice properties of SFQ seem to be intact (so at 128K I can= still easily use SSH over a heavily loaded link), and furthermore I got to s= ee ECN marking being performed and echoed on connections to real Internet se= rvers. I think that led to zero packet loss but I need to inspect more befor= e concluding that.=20 So far, then, it seems to be working fine with no knobs set. That has to be a= first.=20 The key to knowledge is not to rely on others to teach you it.=20 On 16 May 2012, at 09:31, Eric Dumazet wrote: > On Tue, 2012-05-15 at 23:09 -0700, Dave Taht wrote: >=20 >> 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. >=20 > fq_codel is like SFQ but has following new features : >=20 > 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) >=20 > 2) head drops. Give to TCP chance to react faster to congestions. >=20 > 3) Codel included (instead of pfifo) >=20 > 4) New flows have priority against old ones : Their first quantum (or > first packet will be sent _before_ packets of old flows) >=20 > 5) More efficient code (less cache misses in high end configurations) >=20 > But if traffic consist of transient flows (one packet per flow, think of > DDOS), your interactive traffic will suffer, there is no magic > inside ;)=20 >=20 > Definition of a new flow : >=20 > 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) >=20 > B) dequeue() time. Packet dequeued. flow moved to tail of 'old flows' > list (if flow quantum exhausted) >=20 > C) if all flows present in 'old_flows' list are examined by dequeue(), > we notice empty flows and they are removed from list. >=20 > 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. >=20 >=20 >=20 >=20