Re: [aqm] [tcpm] ACK Suppression

Simon Barber <simon@superduper.net> Tue, 13 October 2015 02:57 UTC

Return-Path: <simon@superduper.net>
X-Original-To: aqm@ietfa.amsl.com
Delivered-To: aqm@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 1D64B1B2F5F for <aqm@ietfa.amsl.com>; Mon, 12 Oct 2015 19:57:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.79
X-Spam-Level:
X-Spam-Status: No, score=0.79 tagged_above=-999 required=5 tests=[BAYES_50=0.8, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 9mR_Ypju5SMk for <aqm@ietfa.amsl.com>; Mon, 12 Oct 2015 19:57:25 -0700 (PDT)
Received: from masada.superduper.net (masada.superduper.net [85.119.82.91]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 22D651B2F61 for <aqm@ietf.org>; Mon, 12 Oct 2015 19:57:25 -0700 (PDT)
Received: from block9.public.monkeybrains.net ([162.217.75.161] helo=[192.168.128.6]) by masada.superduper.net with esmtpsa (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from <simon@superduper.net>) id 1ZlpmD-0006wr-0d for aqm@ietf.org; Tue, 13 Oct 2015 03:57:21 +0100
Message-ID: <561C7314.2030102@superduper.net>
Date: Mon, 12 Oct 2015 19:57:24 -0700
From: Simon Barber <simon@superduper.net>
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:31.0) Gecko/20100101 Thunderbird/31.7.0
MIME-Version: 1.0
To: aqm@ietf.org
References: <mailman.1487.1444233956.7953.aqm@ietf.org> <1444247538.3556484@apps.rackspace.com> <alpine.DEB.2.02.1510072200590.8750@uplift.swm.pp.se> <7A2801D5E40DD64A85E38DF22117852C8812629D@wdc1exchmbxp05.hq.corp.viasat.com> <06C46DC6-854F-4CDE-8C7B-745F3362FA9E@gmail.com> <alpine.DEB.2.02.1510071411400.29851@nftneq.ynat.uz> <E2035448-E688-4EF3-8BF7-02132D72D511@cisco.com> <fa0080678adcd392a8dfa237cbd77e49.squirrel@erg.abdn.ac.uk> <alpine.DEB.2.02.1510082121550.2943@nftneq.ynat.uz> <alpine.DEB.2.02.1510090827240.8750@uplift.swm.pp.se>
In-Reply-To: <alpine.DEB.2.02.1510090827240.8750@uplift.swm.pp.se>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Transfer-Encoding: 7bit
Archived-At: <http://mailarchive.ietf.org/arch/msg/aqm/dQLgEyLMGkI0-UE0MmtfkHOkTHQ>
Subject: Re: [aqm] [tcpm] ACK Suppression
X-BeenThere: aqm@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "Discussion list for active queue management and flow isolation." <aqm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/aqm>, <mailto:aqm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/aqm/>
List-Post: <mailto:aqm@ietf.org>
List-Help: <mailto:aqm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/aqm>, <mailto:aqm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 13 Oct 2015 02:57:28 -0000

The issue here is that the hosts don't know how the medium is going to 
do the clumping, so thinning the ACKs at the host may add additional delay.

 From what I understand from Greg's earlier message the cable modem must 
request uplink bandwidth in advance, so if it had to send multiple ACKs, 
it would send the first one, then request bandwidth the the additional 
ones that had arrived since the first one (please correct me if I'm 
wrong) - in this case collapsing/thinning the ACKs will reduce latency 
by one grant cycle.

WiFi is quite different - there is no need to request bandwidth in 
advance, so there is less pressure to collapse the ACKs - just send them 
all and they will be burst out when the medium becomes available.

Simon

On 10/8/2015 11:43 PM, Mikael Abrahamsson wrote:
> On Thu, 8 Oct 2015, David Lang wrote:
>
>> Ok, so it turns out that what we are talking about here is talked 
>> about explicitly in section 5.2.1 of RFC3449. It warns of increased 
>> sender burst sizes, but I really question if that's a valid concern 
>> in the cases that we are talking about here. The choice in these 
>> cases isn't to send more acks spaced out, but rather to send a lot of 
>> acks back to back in one transmit slot vs one stretch ack per 
>> transmit slot.
>
> Exactly. And in my specific case, we're talking 20kPPS of data down, 
> and 10kPPS of ACKs, over a medium that allows the modem to send a 
> bunch of packets only once every few milliseconds.
>
> So there are two alternatives:
>
> You get approx 10-60 ACKs as a "train of ACKs" within 0.3 
> milliseconds, every 1-4 milliseconds.
>
> You get 1-3 ACKs within 0.1ms, every 2-3 milliseconds. These ACKs will 
> acknowledge 16-32 packets at a time.
>
> By the nature of the beast, I'd say that this kind of medium 
> implicitly will be able to handle the "bursts" we're talking about 
> here, if you ACK 24-48kilobyte of data per ACK (when a middle box does 
> ACK Suppression to remove intermediate ACKs), it's implicit that the 
> medium designers know that they can handle a wirespeed burst of data 
> that is the result of the ACKing of these fairly large number of bytes.
>
> But again, I question the wisdom in ACKing every 2 packets when the 
> congestion window is in the hundreds of kilobytes and you're sending 
> tens of thousands of packets per second.
>
> I suggested in another part of the thread that perhaps the host itself 
> should do ACK suppression and don't send ACKs more closely together 
> than once per millisecond or 1/10th RTT, whatever is lower. Perhaps 
> the RTT value needs to be even lower, 1/25 of RTT or something.
>
> In my specific test, using once per millisecond or 1/25 of RTT would 
> cut down the number of ACKs to around 2kpps instead of the 10kpps ACKs 
> I see now, but it wouldn't cut it down to the around 500-1000 ACKs per 
> second that the DOCSIS modem is cutting it down to...
>
> I think that as bandwidths go up, there are changes to TCP that can be 
> done to make it work better, and reducing the frequency of ACKs sent 
> depending on RTT and different window sizes might be a way forward. I 
> fully believe there are cases where ACKing every 2 packets is exactly 
> the right way to go, but when you're sending 1 gigabit/s over 100ms 
> RTT and the medium itself clumps the packets together because that's 
> what it does, then these ACKs don't carry the same information anymore 
> and some of them could be optimized away (preferrably by the host 
> stack) to spare upstream bandwidth and transmit opportunities.
>