Re: [tcpm] More motivating scenarios for tcpm-ack-pull
Jon Crowcroft <jon.crowcroft@cl.cam.ac.uk> Mon, 18 November 2019 07:21 UTC
Return-Path: <crowcroft@gmail.com>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 2ACBD1208D6 for <tcpm@ietfa.amsl.com>; Sun, 17 Nov 2019 23:21:18 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.406
X-Spam-Level:
X-Spam-Status: No, score=-1.406 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, FREEMAIL_FORGED_FROMDOMAIN=0.244, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.249, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=no autolearn_force=no
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 KE1pRKYruxHn for <tcpm@ietfa.amsl.com>; Sun, 17 Nov 2019 23:21:16 -0800 (PST)
Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C42FB1208BB for <tcpm@ietf.org>; Sun, 17 Nov 2019 23:21:15 -0800 (PST)
Received: by mail-wm1-f65.google.com with SMTP id j18so15186723wmk.1 for <tcpm@ietf.org>; Sun, 17 Nov 2019 23:21:15 -0800 (PST)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=oVsWvRLrNz7qmmiDtPSmF+UqXiNtyVR7OT2o3lU6xEU=; b=AhtmAIDzRlCi9kXg4lbCim8kcV86FXaYb9kmGbWXKENUwip0L8GWrZr7uR9OZuVltE 6s5Hdw+qEYOQ/i+tuI+absCs77JnyU8LToJe4U+prSTHOD7NHIheza8FCsBskjxrZiuJ FtAcmlHTaMCwLwedLeFof2PeVhAgJcN/QscwGoPhQ2Wt8QgNoU3Nzun+XwjImE1UWNzl XnH5Zi+m+TgppoBT5e2sQz8FaIHupE5J3XC7GLy5dmCFC6jjcxJv5u4T1yGK5ihMiDK9 JCOeMKLCAttq60/GfKlyvj8g5oOHZ3vV9ymERfNzs/NowPwGtW4xyHvXRD3KqeswC5nl Fepg==
X-Gm-Message-State: APjAAAWZ0ieln5aRkgjsiOywVfuNXbsPWtedS5PcpI5/SFDRDg7KIhvm TiLn/Bd1H5Vtl8s3Oiuff+9ad+kzu/P61+tOVsI=
X-Google-Smtp-Source: APXvYqy5qPF1vUfCivyxiayCmwGdpGfxJ1qrMxL+yXz8/9peIvCxyrw8h5jbMuwcukhe1g/Pa7UlmRXe0y1gLMMSON8=
X-Received: by 2002:a7b:c747:: with SMTP id w7mr28973037wmk.62.1574061674122; Sun, 17 Nov 2019 23:21:14 -0800 (PST)
MIME-Version: 1.0
References: <3326ed99-b077-592b-7913-aeb2286912c4@bobbriscoe.net> <13486113479ebcb344247daedda10467.squirrel@webmail.entel.upc.edu>
In-Reply-To: <13486113479ebcb344247daedda10467.squirrel@webmail.entel.upc.edu>
From: Jon Crowcroft <jon.crowcroft@cl.cam.ac.uk>
Date: Mon, 18 Nov 2019 08:21:02 +0100
Message-ID: <CAEeTejJC4KLbjLNWmVxPXwDtrC=rjrcOsVnwjEym2uEhJZq7cw@mail.gmail.com>
To: Carles Gomez Montenegro <carlesgo@entel.upc.edu>
Cc: ietf@bobbriscoe.net, tcpm IETF list <tcpm@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000f0d5e7059799caaf"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/khpg9N4ugW4zbGMP7KOePOcbeGM>
Subject: Re: [tcpm] More motivating scenarios for tcpm-ack-pull
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpm/>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 18 Nov 2019 07:21:18 -0000
Mark Handley said a lot of the middlebox corner case avoidance stuff is in the tcpmp RFC...have got time to look just yet... On Mon, 18 Nov 2019, 04:46 Carles Gomez Montenegro, <carlesgo@entel.upc.edu> wrote: > Hi Bob, > > Once again, thanks a lot for all the very useful feedback! > > Please find below some inline responses. > > > Carles, Jon, (re-sending, this time without accidentally omitting tcpm, > > also see couple of addenda tagged [Bob adds:]) > > > > I'm generally supportive of a mechanism to suppress delayed ACKs from > > the receiver (in any transport protocol including TCP). So thank you. > > > > You might want to borrow at least some of the text for additional > > motivating scenarios for such a facility from the first two posts on a > > thread for a similar facility in QuiC: > > https://github.com/quicwg/base-drafts/issues/1978 > > > > Also pasted at the end. > > > > Some is not relevant to your specific ack-pull scheme, 'cos it's > > proposing a more general facility in QUIC for the sender to the receiver > > alters its ACK ratio. (theoretically there are more bits available in > > QUIC, but this particular request has been put on hold while someone > > goes and finds them ;) > > Thanks a lot. This is indeed very useful! > > As you explain, the more general facility for QUIC allows to suppress > Delayed ACKs and also allows to modify the ACK ratio in a more general > way. > > Regarding the Delayed ACK suppression discussion, the additional > motivation is definitely important. > > > Another motivating example (rather niche) > > > > Coincidentally, Just this morning I published a tech report that had to > > use the hack of overlapping a byte from the previous segment to force a > > quick ack: > > TCP Prague Fall-back on Detection of a Classic ECN AQM > > <https://arxiv.org/pdf/1911.00710.pdf#page9> (the link takes you to Fig > > 2, which illustrates the hack) > > I'd rather not have to do these sorts of hacks - it really messes with > > the segmentation code. > > This is very useful feedback as well, and a nice coincidence! > > Regarding the hack, sending an old byte may be even worse when there is > not a next data segment readily available for sending, which would lead to > sending a whole packet just to carry an old byte. > > > Middlebox traversal of bit 6 > > > > I recall that someone did a study of traversal of each of the reserved > > flags (Marcelo Bagnulo maybe?). I don't think it was that good [Bob > > adds: I mean traversal - not the study!]. > > A good search engine might find it ;) > > I wasn't able to find the study, but this is an important consideration. > > One might think that if new functionality is defined and standardized, > related middlebox traversal of it should improve over time. Perhaps that > might be optimistic... > > > More alternative approaches: > > > > 1/ At one stage, we tried to include a bit for Delayed Ack control in > > another protocol called Accurate ECN. We were persuaded to take it out, > > because it was mission creep (outside the scope of the protocol we were > > working on): > > > https://tools.ietf.org/html/draft-kuehlewind-tcpm-accurate-ecn-03#appendix-B.4 > > I was unaware of this, thanks! > > This is actually very aligned with what we are proposing... > > > 2/ Have you considered using the Urgent Pointer in a novel way? I.e. a > > non-zero Urgent Pointer field, even tho the URG flag is zero. > > [Bob adds:] From memory, traversal was pretty good - much better than > > bits 4-6. But I think Windows treated it as a potential attack. I > > believe Fernando Gont did a study on how 'invalid' TCP header fields are > > handled. > > > > You could assign, say, 3 bits of the urgent pointer for a variable > > ack_exp that is log base 2 of the ack ratio the sender would like. Then > > the sender can request the receiver uses ack_ratio` = 2^ack_exp, as in > > the QUIC proposal below, > > With ack_exp = 0, you get ack_ratio = 2^0 = 1, which has the same effect > > as ack-pull. But you also have a more general facility for high speed > > machines to widen out the ack ratio. > > > > If this works, you could open up a registry for the other 13 bits. So > > instead of using up a precious bit, you generate 13 more ;) > > Nice! :) > > Actually, we had not considered such an idea. > > In your proposal above, if a segment has the URG flag set to 1, would then > the 3 ack_exp bits still be used as ack_exp bits, thus reducing the size > of the urgent pointer in practice to 13 bits? > > > See: > > https://tools.ietf.org/agenda/90/slides/slides-90-tcpm-10.pdf#page=5 > > > > I think there were problems with some implementations and middleboxes > > (bound to be). I've checked the minutes of the IETF meeting where that > > slide was presented > > <https://www.ietf.org/proceedings/90/minutes/minutes-90-tcpm>, but > > there's no push-back in there. I suggest you delve back into the > > archives of the tcpm mailing list around the time of that meeting to > > find out if there were any show-stoppers. > > Thanks for the pointers! > > Sure, we'll check the tcpm mailing list archive. > > Cheers, > > Carles > > > > Cheers > > > > > > > > Bob > > > > > > Paste from QUIC thread: > > > /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ > > > > > > > > Problem/goals: > > > > 1. Getting up to speed fast without inducing much queue is one of the > > main areas where latency reductions are needed (for short and long > > flows). The sender needs frequent ACKing during this phase in many > > approaches (hystart, etc). A Linux TCP receiver starts with > > ack_ratio 1 and uses heuristics to identify the end of the sender's > > slow-start (or a re-start after idle). This has ossified a certain > > slow-start behaviour into all TCP senders (whether Linux or not). We > > are trying to new sender behaviours (paced chirping being an > > example), but we need a way for the sender to suppress delayed ACKs. > > 2. At the other end of the scale, for long-running flows, many current > > CC approaches (e.g. BBR) use pacing not ACK-clocking so they can use > > very few ACKs per RTT. And fewer means less cache ejections for GRO. > > But the receiver doesn't know what CC the sender is using, so it > > doesn't know how many or few is too many or too few. > > 3. Some middleboxes and the majority of link technologies (e.g. DOCSIS, > > LTE, Satellite) thin TCP ACKs when they detect the upstream is > > filled with TCP ACK stream(s), which are unresponsive. Otherwise the > > ACKs constrain downstream throughput (and any upstream data either > > in the flow itself, or in others). We don't want these links to > > attempt to guess which are the QUIC ACKs and try to thin them. QUIC > > can and should do this itself. QUIC has all the machinery for the > > sender CC to detect ACK congestion, but not the protocol to tell the > > receiver to do the thinning. This protocol addition would provide a > > sufficient hook for hosts to unilaterally add this to their CC > > behaviour. > > > > > > Some scenarios where the sender's preferred ack_ratio changes > > through the connection: > > > > 1. > > > > A sender CC that wants the receiver to turn off DelAcks during > > flow-start (e.g. it's using hybrid slow-start as in Cubic and wants > > to get delay measurements more frequently) sets ack_exp=0 during > > flow-start (ack_ratio=1), then increases ack_exp during congestion > > avoidance. If it goes idle, then re-starts, it would set ack_exp=0 > > again. > > > > Note on heuristics: A Linux TCP receiver currently uses a heuristic > > to determine when the sender has exited slow-start. However, > > heuristics -> ossification. A Linux receiver's heuristic only works > > with the current pattern of slow-start. In TCP, when we tried to > > improve the pattern on the sender (paced chirping), the heuristic on > > the receiver killed us. > > > > 2. > > > > Imagine a paced sender has hardware generic receive offload (GRO), > > so for a long-running flow it doesn't want a high rate of QUIC ACKs > > that are opaque to GRO. Let's say it would prefer at least 8 ACKs > > per RTT. Again, it starts with ack_exp=0, but in congestion > > avoidance it would use: > > > > ack_ratio <= cwnd_in_packets/8 > > > > Upshot: By remote controlling the receiver, the server offloads nearly > > all the ACKs from large downloads, but still focuses its ACK-receiving > > resources on getting each client up to speed. > > > > Note that calculation of ack_ratio lends itself to fast integer > > arithmetic. > > > > > > > > > > > > > > > > Bob > > > > > > -- > > ________________________________________________________________ > > Bob Briscoehttp://bobbriscoe.net/ > > > > > > >
- [tcpm] More motivating scenarios for tcpm-ack-pull Bob Briscoe
- Re: [tcpm] More motivating scenarios for tcpm-ack… Jon Crowcroft
- Re: [tcpm] More motivating scenarios for tcpm-ack… Bob Briscoe
- Re: [tcpm] More motivating scenarios for tcpm-ack… Carles Gomez Montenegro
- Re: [tcpm] More motivating scenarios for tcpm-ack… Jon Crowcroft
- Re: [tcpm] More motivating scenarios for tcpm-ack… Scheffenegger, Richard
- Re: [tcpm] More motivating scenarios for tcpm-ack… Carles Gomez Montenegro
- Re: [tcpm] More motivating scenarios for tcpm-ack… Jeremy Harris
- Re: [tcpm] More motivating scenarios for tcpm-ack… Gorry Fairhurst
- Re: [tcpm] More motivating scenarios for tcpm-ack… Jonathan Morton
- Re: [tcpm] More motivating scenarios for tcpm-ack… Scheffenegger, Richard
- Re: [tcpm] More motivating scenarios for tcpm-ack… Bob Briscoe
- Re: [tcpm] More motivating scenarios for tcpm-ack… Bob Briscoe
- Re: [tcpm] More motivating scenarios for tcpm-ack… Carles Gomez Montenegro
- Re: [tcpm] More motivating scenarios for tcpm-ack… Carles Gomez Montenegro
- Re: [tcpm] More motivating scenarios for tcpm-ack… Bob Briscoe
- Re: [tcpm] More motivating scenarios for tcpm-ack… Jonathan Morton
- [tcpm] Sender control of Delayed ACKs (was Re: Mo… Carles Gomez Montenegro
- Re: [tcpm] More motivating scenarios for tcpm-ack… Carles Gomez Montenegro
- Re: [tcpm] Sender control of Delayed ACKs (was Re… Bob Briscoe
- Re: [tcpm] Sender control of Delayed ACKs (was Re… Rahul Arvind Jadhav
- Re: [tcpm] Sender control of Delayed ACKs (was Re… Bob Briscoe
- Re: [tcpm] Sender control of Delayed ACKs (was Re… Carles Gomez Montenegro