From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 068CB3B29D for ; Wed, 6 May 2020 15:13:20 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1588792400; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=oM5J7uSgxHkkGqIGf4jNxVl7eaaXvDKyoK/tqDiUqiw=; b=OQXDC9IG6H3J3YXuA/CKivOHQlBsvIkHA3XOI28y3YnKa7I1GiX4LKepaLFYyFruZmOx9H k68w76CuF75wGUt9gRkWQOhfyMx9RL7KDnayyaqZjq1erohkO3CF0HnP5OLqbhwwWqn/aM KNBWf2b56BQ4N5IP0wypW59Niq9M3CE= Received: from mail-lf1-f72.google.com (mail-lf1-f72.google.com [209.85.167.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-342-1RV0tUDSNUSCxPTdYiyTmw-1; Wed, 06 May 2020 15:13:18 -0400 X-MC-Unique: 1RV0tUDSNUSCxPTdYiyTmw-1 Received: by mail-lf1-f72.google.com with SMTP id q8so1189918lfp.23 for ; Wed, 06 May 2020 12:13:18 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:in-reply-to:references:date :message-id:mime-version:content-transfer-encoding; bh=oM5J7uSgxHkkGqIGf4jNxVl7eaaXvDKyoK/tqDiUqiw=; b=s/IXHz08UtcJ8Ia5n+/o8rUppr/oYjNYrG5LmAFO0INryGnaFqIJ6a/QDPWNEpr7mE FAXE35GJ/WEC00RVw73/vshHInBhI6UlYeYVHKVyDN9H/C9diHAEFXFsUDe/QRZoVVNQ 9KjVr2rAhsSNPt3Ps9Pj9ieoCmJldCQu1ttULufDUitvTvDlVPhAHla3jfQDoCcCEzJG yhBrUIpyNInyHAY/IJRP+JGJFP2NkiAlBjIMNchiUgItl7NHBz80Vz4tFg1qVe3A5QO/ mUFVt68si3A0Z9/tjH6aeSi8T1ePGO6Nqe0LNYnaf+XU2AsYg7+h8mjidghWojdS4olF 2+xA== X-Gm-Message-State: AGi0Pubnvi5GKfJzSM8+dDQvTX8mLLIn/YtJ90dB4rx7/nTw//0GMbhR SIzYDR/umb6WN5d9VceZRiqbqCrG4PhQ6V2fBWvOsMl/dbwxOEXAOoc+WzJbOsLkRRJWCbdZF+F L2grDXGADC4nnRO+kxT3/8Q== X-Received: by 2002:a19:ad45:: with SMTP id s5mr6332444lfd.106.1588792397249; Wed, 06 May 2020 12:13:17 -0700 (PDT) X-Google-Smtp-Source: APiQypKBPeKIHId8N8OyPp4yEWIdN3ijSSPVzuZYSIWiNqMdhO+vr69Aot5QLUoYoF6dJovNWYWtxw== X-Received: by 2002:a19:ad45:: with SMTP id s5mr6332427lfd.106.1588792397005; Wed, 06 May 2020 12:13:17 -0700 (PDT) Received: from alrua-x1.borgediget.toke.dk ([2a0c:4d80:42:443::2]) by smtp.gmail.com with ESMTPSA id m132sm2226453lfa.94.2020.05.06.12.13.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 May 2020 12:13:16 -0700 (PDT) Received: by alrua-x1.borgediget.toke.dk (Postfix, from userid 1000) id B8B871804E9; Wed, 6 May 2020 21:13:15 +0200 (CEST) From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= To: Jonathan Morton , Avakash bhat Cc: cake@lists.bufferbloat.net, "Mohit P. Tahiliani" , Vybhav Pai , Deepak K , Shrinidhi Varna In-Reply-To: References: X-Clacks-Overhead: GNU Terry Pratchett Date: Wed, 06 May 2020 21:13:15 +0200 Message-ID: <87wo5okhbo.fsf@toke.dk> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Cake] Query on ACK X-BeenThere: cake@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: Cake - FQ_codel the next generation List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 May 2020 19:13:21 -0000 Jonathan Morton writes: >> On 6 May, 2020, at 9:43 pm, Avakash bhat wrote: >>=20 >> We are trying to implement the ACK filtering module of CAKE in ns-3 (Net= work Simulator). > > Ah yes. Sorry I didn't respond to the introduction earlier - we were rig= ht in the middle of preparing for an IETF virtual meeting. The debris is s= till falling from orbit=E2=80=A6 > >> We had a question on the working of ack filtering.=20 >> If an incoming ack which can replace an eligible ack in the queue is abo= ut to be enqueued, do we replace the ack in the queue with the incoming ack= =20 >> or do we enqueue the ack to the tail of the queue and remove the eligibl= e ack from the queue? > > That sounds like an implementation detail. But what we do in Cake is > to simply enqueue all the packets, and deal with everything > complicated on dequeue. The ACK filter is run on enqueue, actually :) > At that point, we check whether the two packets at the head of the > queue are acks for the same flow, and if so, we further check whether > the information in the first packet is redundant given the presence of > the second packet. If there is information in the first packet that is > not also provided by the second packet, the first packet is delivered. > Otherwise the first packet is dropped, and the second packet moves to > the head of the queue. This process may repeat several times if there > are several consecutive, redundant acks in the queue. > > The important part is the set of rules determining whether the ack is > redundant. Yes, indeed. Please feel free to go through cake_ack_filter() in sch_cake.c and make sure you get all those edge cases in your eligibility check... -Toke