Re: [aqm] TCP ACK Suppression

Joe Touch <> Fri, 09 October 2015 17:14 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id C51AA1B48C8 for <>; Fri, 9 Oct 2015 10:14:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -8.91
X-Spam-Status: No, score=-8.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, GB_I_LETTER=-2, RCVD_IN_DNSWL_HI=-5, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id TGpNKVk0wjJy for <>; Fri, 9 Oct 2015 10:14:11 -0700 (PDT)
Received: from ( []) (using TLSv1 with cipher ECDHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 805411B48CC for <>; Fri, 9 Oct 2015 10:14:11 -0700 (PDT)
Received: from [] ( []) (authenticated bits=0) by (8.13.8/8.13.8) with ESMTP id t99HDOHa013431 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Fri, 9 Oct 2015 10:13:25 -0700 (PDT)
To: Yuchung Cheng <>, David Lang <>
References: <> <> <> <> <> <> <> <> <> <> <> <> <> <>
From: Joe Touch <>
X-Enigmail-Draft-Status: N1110
Message-ID: <>
Date: Fri, 9 Oct 2015 10:13:24 -0700
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0
MIME-Version: 1.0
In-Reply-To: <>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-ISI-4-43-8-MailScanner: Found to be clean
Archived-At: <>
Cc: "LAUTENSCHLAEGER, Wolfram \(Wolfram\)" <>, Christian Huitema <>, Greg White <>, "" <>,
Subject: Re: [aqm] TCP ACK Suppression
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "Discussion list for active queue management and flow isolation." <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 09 Oct 2015 17:14:16 -0000

On 10/9/2015 10:04 AM, Yuchung Cheng wrote:
>     That definitely contradicts the TCP specs. So it is very much in
>     "don't go there" territory...
> By 'not going there' you are crippling people's networks for the sake of
> following a spec. Rather than following the letter of the old spec, we
> should be looking at the reasons for it, and reasons to make exceptions.
> There is a long history of introducing new things that break the old way
> of doing things, from breaking "classful" network routing to Anycast,
> there are lots of things that "broke" the old way of doing things.

There's a useful less on here:

Van Jacobson, in an unpublished appendix to his Sigcomm 1988 paper on
congestion control, discussed how TCP should restart after idle, and
that this would require a "time since last sent" timer. A footnote to
that text noted that there was already a "time since last received"
timer, and that - 'since TCP traffic is typically symmetric', it would
be reasonable to use that timer for slow-start restart after idle.

A few years later, when developing HTTP, Tim Berners-Lee said that he
didn't want to use FTP for file transfers because it would open two
connections for one file from one location (one for control, one for the
file). He said that was heavyweight, and that (paraphrasing), 'most of
the time, we'll only get one file from a location'. So we ended up with TCP.

When the web became more sophisticated, users wanted many files from one
server for each page visited (images, formatting, etc.). What we ended
up with was burst after idle for HTTP traffic.

I.e., there are a lot of things there for a reason. Yes, nothing is
immutable, but simply claiming "I need it now" and "nobody has
complained" isn't considered a reasonable way to deploy changes in the wild.