Re: [tcpm] Genart last call review of draft-ietf-tcpm-rto-consider-14

Stewart Bryant <stewart.bryant@gmail.com> Mon, 08 June 2020 12:58 UTC

Return-Path: <stewart.bryant@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 771E33A0A68; Mon, 8 Jun 2020 05:58:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 eGzjCnDulBWt; Mon, 8 Jun 2020 05:58:11 -0700 (PDT)
Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) (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 7B6793A095B; Mon, 8 Jun 2020 05:58:11 -0700 (PDT)
Received: by mail-wm1-x32a.google.com with SMTP id d128so16412273wmc.1; Mon, 08 Jun 2020 05:58:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=CIhg9wlK3UoaRsXV0THdqPusnTOKhHo1qOcB3T12de4=; b=WSLc8s+tHxXAa0R5NpIpijLx8mwIWGW+sGzLqi7Vix/vZwSt38a/AhzvM5qENWua/t 9fXQ7/QOUzMcjd00afCrpQcTDTkyA6/DJxV2/IgBuzUZW3WJjFzBMgZh7wRz3gVuwqkY X1m8fPF9fZPOuakOxYYv+zsTWNkKp352UZaxIPkue0Nve6FldeVyejwUGHV8H8eZzFyJ ecEjrZxP10L/RFtCspfDCj43ssR4H55cUW+16DfMJTNY58U3gTpjAoBCiLTHOhFU+ypp 0HVbq+EtgvXtDjdrRJCwR2MA04dk/p551FbRhdMUy2J/lBQDT9z+Kzr+5k79DbhPSOGl Y+zQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=CIhg9wlK3UoaRsXV0THdqPusnTOKhHo1qOcB3T12de4=; b=AIVmAZMuxEiFlUNUeAvKqIzvU56UQTHoBKFeyVq1ilJeQl1HZirhyWJDfLE0SvQoZl SuJOEp0IEMrcyczWbonbrw1x6mzMwm4Nt3NTjsE3cwsFTF75pHGLEmg9kElYh3l0vY7I wv/OBzWj5nwoF7OJe9SF4CgAq2rH8n7z53VK+u4JKzxMeQHb3ONPZUwX8dIox2Z+XGIA 2Yn0BFzCbswVjO8Sg5u55p9NU4qIEBOAsp89+EB5o3BKfJXK0lo/olByEECXoT8mmJbd pJZuHGjSXi6TcnszVbza4b3YfW47itECl4Qih2BJwvxW0VshbPNzjv+RQI4mVHme9771 bF3A==
X-Gm-Message-State: AOAM533o+8C22DQxAuZGS5KkRt9f+yyCVXPwtpYPy1u60subQL43juyN 2QX+A0atrdwlVs+nEsQS7nI=
X-Google-Smtp-Source: ABdhPJzh8aKKyMa0vOCIH2YOVgZT7hG+qNNM5Sv3VUTEeAw1UsihYlNeJq6DIbpRg41zXOty84WpQw==
X-Received: by 2002:a1c:4954:: with SMTP id w81mr16743627wma.86.1591621089755; Mon, 08 Jun 2020 05:58:09 -0700 (PDT)
Received: from [192.168.178.46] ([62.3.64.16]) by smtp.gmail.com with ESMTPSA id r11sm24183383wre.25.2020.06.08.05.58.08 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 08 Jun 2020 05:58:09 -0700 (PDT)
From: Stewart Bryant <stewart.bryant@gmail.com>
Message-Id: <4E00DBE9-BB42-427D-B6C4-D61669C896F2@gmail.com>
Content-Type: multipart/alternative; boundary="Apple-Mail=_EB96F57B-1C31-491A-A8A7-65C14810D05D"
Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\))
Date: Mon, 08 Jun 2020 13:57:37 +0100
In-Reply-To: <4f52479e-1184-9277-66e5-6278eda95e0b@erg.abdn.ac.uk>
Cc: Stewart Bryant <stewart.bryant@gmail.com>, Mark Allman <mallman@icir.org>, Last Call <last-call@ietf.org>, "gen-art@ietf.org Review Team" <gen-art@ietf.org>, tcpm <tcpm@ietf.org>, draft-ietf-tcpm-rto-consider.all@ietf.org
To: Gorry Fairhurst <gorry@erg.abdn.ac.uk>
References: <159083802039.5596.14695350463305243689@ietfa.amsl.com> <FE0FA7D5-176D-4111-95DA-BD5424A24FE2@icir.org> <4f52479e-1184-9277-66e5-6278eda95e0b@erg.abdn.ac.uk>
X-Mailer: Apple Mail (2.3608.80.23.2.2)
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/szQv6yQHqfRZcGmYUU6j9OzXTi4>
Subject: Re: [tcpm] Genart last call review of draft-ietf-tcpm-rto-consider-14
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, 08 Jun 2020 12:58:15 -0000


> On 6 Jun 2020, at 08:19, Gorry Fairhurst <gorry@erg.abdn.ac.uk> wrote:
> 
> Please see below.
> 
> On 05/06/2020 17:43, Mark Allman wrote:
>> Hi Stewart!
>> 
>> Thanks for the feedback.  Sorry for the long RTT.  I had a recent
>> deadline and am now trying to dig out.
>> 
>>> Major issues:
>>> 
>>> As far as I can see this text only applies to exchanges between
>>> applications and network support applications such as
>>> DNS. I.e. this is targeted at layer 4 and above. Given the
>>> religious nature of BCPs in the eyes of some reviewers, and to
>>> prevent endless explanations by those that design routing
>>> protocols, OAM and other lower layer sub-system I think there
>>> needs to a scoping text in block capitals at the at the very start
>>> of the documnet.
>> I am not entirely sure what you're suggesting here.  Per note to
>> Tom, I am going to add a few words to the intro.  Maybe that will
>> help.  I think it's unlikely I'll use block capitals! :-)
>> 
>>> =========
>>> 
>>>       - The requirements in this document may not be appropriate in all
>>>         cases and, therefore, inconsistent deviations may be necessary
>>>         (hence the "SHOULD" in the last bullet).  However,
>>>         inconsistencies MUST be (a) explained and (b) gather consensus.
>>> 
>>> SB> That can be quite an onerous obligation  and provide scope for
>>> SB> endless argument when reviewers are not domain experts in the
>>> SB> protocol being designed.
>> This was added because another reviewer thought it was for sure
>> necessary.
>> 
>> I guess I don't understand why you'd call this 'an onerous
>> obligation' since presumably you'd do it anyway without this
>> document.  Are we ramming things through without consensus?  If not
>> (my assumption), (b) is no sweat.  Are we ramming things through
>> without thought?  If not (my assumption), (a) is straightforward and
>> hopefully is being done anyway.  In other words, I don't understand
>> the complaint here because if you don't want to use the guidelines
>> then that is fine, but in going through the standard process to
>> define a loss detector you'll end up meeting this bullet.  Even if
>> this document doesn't get published or didn't exist our documents
>> should still be meeting this bullet.
>> 
>>> =======
>>> 
>>>           While there are a bevy of uses for timers in protocols---from
>>>           rate-based pacing to connection failure detection and
>>>           beyond---these are outside the scope of this document.
>>> 
>>> SB> I am not sure what that means for the applicability of this
>>> SB> document.
>> This was added at some point along the way because someone thought
>> something like rate-based pacing could be covered by the guidelines
>> and the intent is to say it is not.  I have zero love for this bit
>> and would happily remove it, but am loathe to do so because the old
>> comment will then come back.
> I think Mark is correct, there are many transport uses of timers, and calling out a small number of other uses was important to scope this withing the transport discussions, even if it just says "timers also do other stuff".

If the scope of this is explicitly transport and above I have no issues.

If it has a greater scope the scope of study and recommendations really needs to increase accordingly.

>>> =========
>>> 
>>>     (1) As we note above, loss detection happens when a sender does not
>>>         receive delivery confirmation within an some expected period of
>>>         time.  In the absence of any knowledge about the latency of a
>>>         path, the initial RTO MUST be conservatively set to no less than
>>>         1 second.
>>> 
>>> SB> This issue may be addressed by the scoping text, but 1s is no
>>> SB> use when you are trying to detect sub 50ms of packet loss in
>>> SB> the infrastructure.
>> We have to start somewhere when we know nothing.
>> 
>> I think in my thread with Tom we hit upon this notion that the
>> document is really about sort of arbitrary, unknown and therefore
>> presumed unreliable networks.  I am going to add some words to this
>> effect.  Does this help?
>> 
>> Again, for specific environments where things are more nailed down
>> and known, deviations are fine and explicitly OK.  But, as a general
>> default I think saying "when you don't know anything < 50msec is
>> cool" is unlikely to be appropriate.  Well, no, I think it would be
>> quite inappropriate, actually.
> This is I think a natural discussion based on a different perspective. The 1 second initial starting value for a transport path has been there for a long time, and transport reviewers will frequently quote this be it for transport:  SCTP, TCP, or for UDP-based apps (BCP: 145 Sect 3.1.1). I'd expect this is about the assumed starting position for an Internet path.
> 
> True if we're talking about a link between adjacent peers, this is something very different. 
> 

We do multi-hop OAM in RTG to hold the infrastructure together.

Again, my point is that if the scope is L4 and above I have no issue, but the scope seems to be wider.


>>> =============
>>> 
>>>     (3) Each time the RTO is used to detect a loss, the value of the RTO
>>>         MUST be exponentially backed off such that the next firing
>>>         requires a longer interval.  The backoff SHOULD be removed after
>>>         either (a) the subsequent successful transmission of
>>>         non-retransmitted data, or (b) an RTO passes without detecting
>>>         additional losses.  The former will generally be quicker.  The
>>>         latter covers cases where loss is detected, but not repaired.
>>> 
>>>         A maximum value MAY be placed on the RTO.  The maximum RTO MUST
>>>         NOT be less than 60 seconds (as specified in [RFC6298]).
>>> 
>>>         This ensures network safety.
>>> 
>>> SB> This does not work in OAM applications.
>> Well, OK, get consensus to do something different---which is
>> completely fine.  I think retransmission timers have shown
>> themselves to be crucial for preventing collapse and, again, as a
>> default I think this is our best advice.
>> 
> It should be applicable for OAM applications that use a path across the Internet that can change, and certainly could be bad advice for controlled environment. It's actually not new, BCP: 145 also speaks of backoff.

A common standard rule in OAM type situation is three fast packets and then back-off.


>>> Minor issues:
>>> 
>>>  "By waiting long enough that we are unambiguously
>>>   certain a packet has been lost we cannot repair losses in a timely
>>>   manner and we risk prolonging network congestion."
>>> 
>>> I have a concern here that the emphasis is on classical
>>> operation. We are beginning to see application to run over the
>>> network where the timely delivery of a packet is critical for
>>> correct operation of even SoL. As a BCP the text needs to
>>> recognise that the scope and purpose of IP is changing and that
>>> classical learning and rules derived from them may not apply.
>>> 
>>> Also if not ruled out of scope earlier we need to be clear at this
>>> point that things like BFD have different considerations.
> Isn't BFD is a link protocol between adjacent systems?

No, not always, you can have multiple-hop BFD.

This is infrastructure and not user data and there is a school of though that in data planes where
The same data path is used for both control and user data, the user data is sacrificial to maintaining
The infrastructure. The reason that you do backoff in these cases is not to avoid congestion but
Instead to avoid overloading the control peer, i.e. the route processor in the peer router.


- Stewart
>> I am going to suggest we revisit this after I hack out a little
>> extra text for the intro.  You can see if that helps.
>> 
>>> ==========
>>> 
>>>       "- This document does not update or obsolete any existing RFC.
>>>         These previous specifications---while generally consistent with
>>>         the requirements in this document---reflect community consensus
>>>         and this document does not change that consensus."
>>> 
>>> I think it needs to be clear that adherence to this RFC is not
>>> required for minor updates and extensions to existing RFCs. Having
>>> seen minor routing extension held up by security concerns related
>>> to underlying protocols rather than the extension itself there is
>>> a lot of sensitivity on this point in some quarters of the IETF.
>> Um.  Do you have suggested words?  I am not much of a protocol
>> lawyers (thankfully!), but I am not really conjuring the case you're
>> concerned about.  Something like ...
>> 
>>   (1) RFC XXXX was published 10 years ago and violates
>>       rto-consider.
>>   (2) We want to do a XXXXbis.
>>   (3) The bis has to then explain why it's cool to violate
>>       rto-consider.
>> 
>> .... ?
>> 
>> I would say if XXXX has a loss detector that had consensus and has
>> been in use for a while it'd be pretty easy to get consensus for
>> XXXXbis that we can still use it as it has worked fine.
>> 
>>> It might be useful to make it clear that there are some
>>> applications that would prefer no data to late data.
>> This document is about loss detection, not what one does after
>> detecting.  So, we do say ...
>> 
>>     However, as discussed above, the detected loss need not be
>>     repaired
>> 
>> I am happy to re-enforce this point.  Text suggestions welcome.
>> 
>>> Nits/editorial comments:
>>> 
>>> The terminology section confuses ID-nits - I think it should be a
>>> section in its own right later in the document.
>> Yeah- id-nits as it is run when submitting doesn't flag this.  It
>> was flagged by someone else in LC.  Because I am old school it's
>> hard to renumber everything and so I was just leaving this for the
>> rfc-ed to do something reasonable here.
>> 
>>> The following nits issues need looking at
>>> 
>>>   == Missing Reference: 'RFC5681' is mentioned on line 377, but not defined
>>> 
>>>   == Unused Reference: 'RFC3940' is defined on line 515, but no explicit
>>>      reference was found in the text
>>> 
>>>   == Unused Reference: 'RFC4340' is defined on line 519, but no explicit
>>>      reference was found in the text
>>> 
>>>   == Unused Reference: 'RFC6582' is defined on line 540, but no explicit
>>>      reference was found in the text
>> I will fix all these.  Again, I was trusting the id-nits when I
>> submitted and these were not flagged (or, if they were it wasn't in
>> a way that foisted them on my screen).  But, they're easy fixes, so
>> thanks!
>> 
>> allman
>> 
>> 
>> _______________________________________________
>> tcpm mailing list
>> tcpm@ietf.org <mailto:tcpm@ietf.org>
>> https://www.ietf.org/mailman/listinfo/tcpm <https://www.ietf.org/mailman/listinfo/tcpm>