Re: [tcpm] [EXTERNAL] Re: Last Call:<draft-ietf-tcpm-rack-13.txt>(TheRACK-TLPlossdetectionalgorithmforTCP) toProposed Standard

Markku Kojo <kojo@cs.helsinki.fi> Fri, 18 December 2020 21:56 UTC

Return-Path: <kojo@cs.helsinki.fi>
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 3166C3A0990; Fri, 18 Dec 2020 13:56:34 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level:
X-Spam-Status: No, score=-1.999 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cs.helsinki.fi
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 lufW1k_RFvfo; Fri, 18 Dec 2020 13:56:32 -0800 (PST)
Received: from script.cs.helsinki.fi (script.cs.helsinki.fi [128.214.11.1]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 757453A09C1; Fri, 18 Dec 2020 13:56:29 -0800 (PST)
X-DKIM: Courier DKIM Filter v0.50+pk-2017-10-25 mail.cs.helsinki.fi Fri, 18 Dec 2020 23:56:27 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.helsinki.fi; h=date:from:to:cc:subject:in-reply-to:message-id:references :mime-version:content-type; s=dkim20130528; bh=Mw6JreVndLi1/m5xE KS1VjUVIHl0TBMC4+3rWLc8AgY=; b=UQjLC8PqCHqhMv7a2Dx7cOMTI6wHQBEjL ortAdfRKziY/tN3TYxGwNKnYStZcJYxmmDS8KehTHEXo3I4rrENYAecDTo5qpCA0 S/niG2tIVTA+ZSME6roqcMMTSpvBCYbUHbCHaf3eNlMtn0L9FaRxVFNRUJMfBvig CJGrO1G6+g=
Received: from hp8x-60 (85-76-102-128-nat.elisa-mobile.fi [85.76.102.128]) (AUTH: PLAIN kojo, TLS: TLSv1/SSLv3,256bits,AES256-GCM-SHA384) by mail.cs.helsinki.fi with ESMTPSA; Fri, 18 Dec 2020 23:56:27 +0200 id 00000000005A0170.000000005FDD258B.000006B8
Date: Fri, 18 Dec 2020 23:56:26 +0200
From: Markku Kojo <kojo@cs.helsinki.fi>
To: Neal Cardwell <ncardwell@google.com>
cc: Yuchung Cheng <ycheng@google.com>, Praveen Balasubramanian <pravb@microsoft.com>, "martin.h.duke@gmail.com" <martin.h.duke@gmail.com>, "tcpm@ietf.org" <tcpm@ietf.org>, "draft-ietf-tcpm-rack@ietf.org" <draft-ietf-tcpm-rack@ietf.org>, "tuexen@fh-muenster.de" <tuexen@fh-muenster.de>, "draft-ietf-tcpm-rack.all@ietf.org" <draft-ietf-tcpm-rack.all@ietf.org>, "last-call@ietf.org" <last-call@ietf.org>, "tcpm-chairs@ietf.org" <tcpm-chairs@ietf.org>
In-Reply-To: <CADVnQymggow5WHQ4c8yZqRWuetTniN3jD9GK7dpEMMkYvFw7pw@mail.gmail.com>
Message-ID: <alpine.DEB.2.21.2012182334490.27827@hp8x-60.cs.helsinki.fi>
References: <160557473030.20071.3820294165818082636@ietfa.amsl.com> <CADVnQykrm1ORm7N+8L0iEyqtJ2rQ1dr1xg+EmYcWQE9nmDX_mA@mail.gmail.com> <alpine.DEB.2.21.2012141505360.5844@hp8x-60.cs.helsinki.fi> <CAM4esxT9hNqX4Zo+9tMRu9MNEfwuUwebaBFcitj1pCZx_NkqHA@mail.gmail.com> <alpine.DEB.2.21.2012160256380.5844@hp8x-60.cs.helsinki.fi> <CAM4esxRDrFZAYBS4exaQFFj6Djwe6KHrzMEtGvOhscpoxk3RQA@mail.gmail.com> <alpine.DEB.2.21.2012162339560.5844@hp8x-60.cs.helsinki.fi> <CAM4esxRQjuzo4u9oUN2CDC1vbeFxmSarjBLqpboatjWouiL37Q@mail.gmail.com> <CAM4esxQ67K9kcaWwNot2DfJpCe8ShOngXogxKU=KXZJGn+pbXg@mail.gmail.com> <alpine.DEB.2.21.2012171019160.5844@hp8x-60.cs.helsinki.fi> <CAM4esxTvTjvVk5hE0z5UnLBdKv04UC+daRBxsnnZ1qJTa=gSgw@mail.gmail.com> <CY1PR00MB0172182657354535DF24E790B6C49@CY1PR00MB0172.namprd00.prod.outlook.com> <CAK6E8=c8sjfzgfYadHsTk1LvFCJs_EcMjR-kpcj+krkaytEE8g@mail.gmail.com> <CADVnQymggow5WHQ4c8yZqRWuetTniN3jD9GK7dpEMMkYvFw7pw@mail.gmail.com>
User-Agent: Alpine 2.21 (DEB 202 2017-01-01)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=_script-1751-1608328587-0001-2"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/Xy-9skPEV_Pk11i5hI_9zULmmuU>
X-Mailman-Approved-At: Sat, 19 Dec 2020 09:24:09 -0800
Subject: Re: [tcpm] [EXTERNAL] Re: Last Call:<draft-ietf-tcpm-rack-13.txt>(TheRACK-TLPlossdetectionalgorithmforTCP) toProposed Standard
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: Fri, 18 Dec 2020 21:56:34 -0000

Hi Neal,

On Thu, 17 Dec 2020, Neal Cardwell wrote:

> On Thu, Dec 17, 2020 at 2:36 PM Yuchung Cheng <ycheng@google.com> wrote:
>       How about
>  
> "9.3.  Interaction with congestion control
> 
> RACK-TLP intentionally decouples loss detection ... 
> As mentioned in Figure 1 caption, RFC5681 mandates a principle that
> Loss in two successive windows of data, or the loss of a
> retransmission, should be taken as two indications of congestion, and
> therefore reacted separately. However implementation of RFC6675 pipe
> algorithm may not directly account for this newly detected congestion
> events properly. PRR [RFCxxxx] is RECOMMENDED for the specificcongestion control
> actions taken upon the losses detected by RACK-TLP"
> 
> To Makku's request for "what's the justification to enter fast recovery". Consider this
> example w/o RACK-TLP
> 
> T0: Send 100 segments but application-limited. All are lost.
> T-2RTT: app writes so another 3 segments are sent. Made to the destination and
> triggered 3 DUPACKs
> T-3RTT: 3 DUPACK arrives. start fast recovery and subsequent cc reactions to burst ~50
> packets with Reno 
> 
> In this case any ACK occured before RTO is (generally) considered clock-acked, and
> how I understand Van's initial design.  This behavior existed decades before RACK-TLP.
> RACK-TLP essentially changes the "3-segments by app" to "1-segment by tcp". 
> 
> 
> To amplify Yuchung's nice example, and try to restate it in more general terms:
> 
> As far as I'm aware, TLP probes do not introduce materially new congestion control behaviors,
> beyond what can happen with [RFC5681] and [RFC6675].

Please see my previous reply. No new congestion control behaviors if I 
understand what you mean by that but there are more scenarios in which 
loss of a full window is detected without RTO.

> This is because a TLP probe serves much the same probing function that an application write()
> could have served, if the application had been so lucky as to time its write at the
> appropriate time (i.e. delay the write() of the last segment in the flight to be 2*SRTT after
> the preceding segment).
> 
> Thus, for any scenario that one constructs where a TLP probe initiates a fast recovery
> episode, it is possible to construct, for a TCP implementation implementing just [RFC5681]
> and [RFC6675], an application write() pattern where the on-the-wire behavior is nearly
> identical to the TLP-initiated recovery.

Except when the sender is  congestion window limited. Receive window 
limited is another case where application cannot write new data that 
would get transmitted but a TLP probe could send the highest-sequence 
segment?

The draft is a bit unclear on this but I believe this was the intent 
(draft says: "If such a segment is not available, ..." but in receive 
window limited case such a new segment would be available but it cannot 
be transmitted)

> For folks concerned about a scenario with FlightSize of 100 segments, and a sender entering
> fast recovery and blasting 50 segments, the same behavior could happen with the existing RFCs
> [RFC5681] and [RFC6675], which allow that. And implementers who are worried about such bursts
> (a very reasonable thing to be worried about) should probably be implementing pacing and PRR,
> or something like that. But that was already true before RACK-TLP.

I would rather say it is a bug in RFC6675. Nobody paid sufficient 
attention to such a scenario.

Yes, PRR handles it fine, practically directing the sender to slow start 
and start ack clock by limiting the number segments sent per incoming 
Ack. Pure pacing over one RTT would not be enough in my opinion because it 
still sends too many segments per RTT.

Best regards,

/Markku

> best,
> neal
> 
> 
>