From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wg0-x232.google.com (mail-wg0-x232.google.com [IPv6:2a00:1450:400c:c00::232]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id 8CD8821F4F6 for ; Sat, 11 Apr 2015 01:11:43 -0700 (PDT) Received: by wgin8 with SMTP id n8so36891534wgi.0 for ; Sat, 11 Apr 2015 01:11:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=YCZd6YrhQsTXbqfv9dP49X1bGz+BSwalGdukF3SY9HY=; b=n28NY01u4DsELwFiSytEejbtbkVc/VmKLZ2YHLMFhxuStHKqRKAiqRP4PyYWoCBbsq kKyvX7QRJ9Tu4UqiPJviSshG7s2KTy3lBp4kYAwGNWXc7STB+CdaIxU5Se2x45opQL8y nbJERkuLH9YuHnWATE7QOl8Bvw7SKosC9qMySlXyM67+NXzO/a+9vjwqPbG4G+bwqbO+ JXpYgHcZfNc5FF1WFnuradPASYoZ04rtHtDqm2PdG1ZvYvshn42J2nvk/M3y9+ZsARu9 JOYhTErezaX0oll5NqLVOmixQbTcQEgyCUiuNXy3bGByD1xUJLBOqTeL/BLRPfioA1/K 7fKQ== MIME-Version: 1.0 X-Received: by 10.180.81.70 with SMTP id y6mr4267653wix.47.1428739901358; Sat, 11 Apr 2015 01:11:41 -0700 (PDT) Received: by 10.28.3.84 with HTTP; Sat, 11 Apr 2015 01:11:41 -0700 (PDT) In-Reply-To: References: Date: Sat, 11 Apr 2015 13:41:41 +0530 Message-ID: From: sahil grover To: Jonathan Morton Content-Type: multipart/alternative; boundary=f46d044282704c063b05136e6e30 Cc: codel@lists.bufferbloat.net Subject: Re: [Codel] SfqCodel 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: Sat, 11 Apr 2015 08:12:12 -0000 --f46d044282704c063b05136e6e30 Content-Type: text/plain; charset=UTF-8 thanks for your help as always. On Sat, Apr 11, 2015 at 2:25 AM, Jonathan Morton wrote: > SFQ is quite simple in essence. It performs flow isolation, allowing > packets from different flows to bypass each other. > > A flow is defined as packets possessing a common 5-tuple of source > address, destination address, protocol (TCP, UDP, ICMP etc), source port > and destination port. > > Ideally, Fair Queuing would perfectly separate all flows into queues, then > service each of them equally and fairly in turn, for some measure of > equality and fairness. This would provide ideal flow isolation. > > SFQ is not quite this ideal model. The 5-tuple is converted into a hash > value which is used directly to index into a fixed list of queues; thus > hash collisions can occur which mix traffic from multiple flows in the same > queue. It also services queues in a strict round-robin, delivering one > packet per cycle, regardless of the relative sizes of these packets. These > are compromises intended to minimise CPU overhead and implementation > complexity. (They made sense at the time when SFQ was cutting edge, which > was a long time ago.) > > Fq_codel as implemented in Linux is not the same as sfq_codel as > implemented in ns2. Instead of using SFQ to provide flow isolation, it uses > DRR++, which provides bytewise fairness and a priority boost to sparse > flows. Recent work has also found a way to significantly reduce the hash > collision problem without imposing much additional overhead, and this has > been incorporated into cake. > > - Jonathan Morton > --f46d044282704c063b05136e6e30 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
thanks for your help as always.

On Sat, Apr 11, 2015 at 2:25 AM, Jonat= han Morton <chromatix99@gmail.com> wrote:

SFQ is quite simple in essence. It perfo= rms flow isolation, allowing packets from different flows to bypass each ot= her.

A flow is defined as packets possessing a common 5-tuple of = source address, destination address, protocol (TCP, UDP, ICMP etc), source = port and destination port.

Ideally, Fair Queuing would perfectly separate all flows int= o queues, then service each of them equally and fairly in turn, for some me= asure of equality and fairness. This would provide ideal flow isolation.

SFQ is not quite this ideal model. The 5-tuple is converted = into a hash value which is used directly to index into a fixed list of queu= es; thus hash collisions can occur which mix traffic from multiple flows in= the same queue. It also services queues in a strict round-robin, deliverin= g one packet per cycle, regardless of the relative sizes of these packets. = These are compromises intended to minimise CPU overhead and implementation = complexity. (They made sense at the time when SFQ was cutting edge, which w= as a long time ago.)

Fq_codel as implemented in Linux is not the same as sfq_code= l as implemented in ns2. Instead of using SFQ to provide flow isolation, it= uses DRR++, which provides bytewise fairness and a priority boost to spars= e flows. Recent work has also found a way to significantly reduce the hash = collision problem without imposing much additional overhead, and this has b= een incorporated into cake.

- Jonathan Morton


--f46d044282704c063b05136e6e30--