Re: [Taps] Artart early review of draft-ietf-taps-interface-13

Michael Welzl <michawe@ifi.uio.no> Tue, 21 September 2021 11:16 UTC

Return-Path: <michawe@ifi.uio.no>
X-Original-To: taps@ietfa.amsl.com
Delivered-To: taps@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 021B63A10D9; Tue, 21 Sep 2021 04:16:19 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham 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 JRuLOxdEpLIa; Tue, 21 Sep 2021 04:16:14 -0700 (PDT)
Received: from mail-out04.uio.no (mail-out04.uio.no [129.240.10.76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id EEFBC3A10D7; Tue, 21 Sep 2021 04:16:08 -0700 (PDT)
Received: from mail-mx10.uio.no ([129.240.10.27]) by mail-out04.uio.no with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from <michawe@ifi.uio.no>) id 1mSdkm-006q24-DA; Tue, 21 Sep 2021 13:16:00 +0200
Received: from boomerang.ifi.uio.no ([129.240.68.135]) by mail-mx10.uio.no with esmtpsa (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) user michawe (Exim 4.94.2) (envelope-from <michawe@ifi.uio.no>) id 1mSdkk-0007IK-Mw; Tue, 21 Sep 2021 13:16:00 +0200
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\))
From: Michael Welzl <michawe@ifi.uio.no>
In-Reply-To: <163191223519.9482.8670238243564452665@ietfa.amsl.com>
Date: Tue, 21 Sep 2021 13:15:57 +0200
Cc: art@ietf.org, draft-ietf-taps-interface.all@ietf.org, taps@ietf.org
Content-Transfer-Encoding: quoted-printable
Message-Id: <5B6FB4A8-86F1-42E5-B064-90CB993D8447@ifi.uio.no>
References: <163191223519.9482.8670238243564452665@ietfa.amsl.com>
To: Robert Sparks <rjsparks@nostrum.com>
X-Mailer: Apple Mail (2.3445.9.1)
X-UiO-SPF-Received: Received-SPF: neutral (mail-mx10.uio.no: 129.240.68.135 is neither permitted nor denied by domain of ifi.uio.no) client-ip=129.240.68.135; envelope-from=michawe@ifi.uio.no; helo=boomerang.ifi.uio.no;
X-UiO-Spam-info: not spam, SpamAssassin (score=-5.0, required=5.0, autolearn=disabled, UIO_MAIL_IS_INTERNAL=-5)
X-UiO-Scanned: A59C7020E342D03C1B2CEFB58F52489BAB8CD341
Archived-At: <https://mailarchive.ietf.org/arch/msg/taps/PNefp1uKQpPzovHAt0TTZZtW97o>
Subject: Re: [Taps] Artart early review of draft-ietf-taps-interface-13
X-BeenThere: taps@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "IETF Transport Services \(TAPS\) Working Group" <taps.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/taps>, <mailto:taps-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/taps/>
List-Post: <mailto:taps@ietf.org>
List-Help: <mailto:taps-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/taps>, <mailto:taps-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 21 Sep 2021 11:16:19 -0000

> On 17 Sep 2021, at 22:57, Robert Sparks via Datatracker <noreply@ietf.org> wrote:
> 
> Reviewer: Robert Sparks
> Review result: On the Right Track
> 
> This is an art-art early review of draft-ietf-taps-interface
> 
> This document reads fairly well. I have some structural concerns (see the early
> review of the architecture document). In particular I think this document
> contains the actual definition of the architecture and some of that is
> inferential.
> 
> There are several places where the language in this document, once published as
> an RFC, will not age well. Search for occurrences of the word "modern" and
> consider writing less to motivate and more to define. Reconsider the use of
> terms like "traditional".
> 
> Reconsider words like "atop" and "underneath" when talking about interface
> boundaries. (Also, I don't know what it means to be atop an architecture.)
> 
> I cringe at systems that define Integers to be integers and some other
> enumerated things ("special values"). Is it necessary to define things this
> way? I understand it's currently typical to have this behavior in the APIs of
> the protocols this system is attempting to abstract, but is it impossible to
> stop propagating that kind of type confusion? This API could move the things
> special values are being used for into separate arguments for example.
> 
> The definition of Numeric in 1.1 is circular.
> 
> The concept of cloning is used in the overview without introduction. I've
> suggested an earlier discussion of it in the architecture document, which would
> help, but even in this document, there should be an introduction or forward
> reference.
> 
> As you can tell, I don't think the documents do what the first sentence of the
> API summary claims. This document would not lose anything if you deleted the
> sentence.
> 
> At the end of the API summary, there's a paragraph that looks like a "Structure
> of this document" discussion - should it be in a different place? The list in
> the paragraph is odd - why is Section 8, for instance, not in the list?
> 
> Consider showing an explicit context in the Send in the example in 3.1.1 - it
> would make the reader guess less to wait to introduce implicit contexts later.
> 
> In the text version of the document, the last paragraph before 3.1.3 has some
> markup (~~~) that has leaked through.
> 
> 3.1.3 has a comment that's too long for the text version
> 
> The first sentence-paragraph of section 4 is complex. Please break it apart.
> 
> At the discussion of Transport Property Names at 4.1, I think you need to be
> more specific than "alphanumeric". Explicitly list what characters are allowed.
> 
> The "reformatted where necessary" part of the requirement in the last paragraph
> of 4.1 makes the MUST NOT almost impossible to conform to. I think I understand
> what the paragraph is trying to say, but the current formulation leaves the
> reader guessing. I think you are trying to say "Avoid using any of the terms
> listed as keywords in the protocol numbers registry as any part of a vendor or
> implementation-specific property name".
> 
> Do you really mean "host" at "(endpoints) SHOULD represent the same host" in
> section 6, or do you mean something more like service, given that an endpoint
> may configured with a DNS name?
> 
> I think there's a need for more discussion and clarity around the restriction
> that "An Endpoint cannot have multiple identifiers of a same type set." Why
> not? You effectively are letting the endpoint have (potentially) multiple IP
> addresses when you create it with an identifier that is a DNS name. This feels
> like an artificial, inconsistent, restriction given the rest of the document
> (look at the 3rd paragraph of 6.1).
> 
> Would there be any benefit of having something like "WithServiceName" to
> qualify a specifier for use with NAPTR/SRV? Or is the thinking that the
> resolution of the thing handed down through WithHostname is restricted to
> A/AAAA?
> 
> Why does the API have both the ability to say LocalSpecifier.WithInterface and
> to set interface requirements on TransportProperties? Why not just keep the
> latter and remove the former?
> 
> I would really like to see an example of how an application that relies on ICE
> learns about new candidates as they are discovered - the callback pattern is
> not clear to me yet.
> 
> There are several places where the document says "Changes to a <foo> after
> func() has been called do not have any connection on existing <bar>s". This
> feels like an opportunity for more clarity about what a <foo> really is. The
> document uses the word Object, and maybe there's an assumption that there's a
> shared understanding of what the properties of an Object are. Being explicit
> with something like "An Object is a collection of properties that
> implementations of the API read and use..." to avoid the "here's a chunk of
> memory that can get passed into the API that it can operate on, and expect the
> caller to see the effects of the operation" interpretation. I _think_ what the
> current text is trying to say is that the user of the API should assume the
> implementation of the API made its own private copy of the Object at the point
> of the given func() call and that it will not see any changes to the copy the
> user has at any later point. But then there's some text that looks like "Once a
> <foo> has been used with a func(), it is invalid to modify any of its
> properties." So...
> 
> I'll have to read the document yet another time, perhaps, but after the few
> times I went through it for this review, I'm still not clear on how/whether
> connections are grouped because of actions from the remote end(s). If so, how
> does the user learn about the grouping? Does it have to poll
> Connection.GroupedConnections() every time its told of a new Connection?
> 
> In section 8's third paragraph, the MUST NOT is not a good use of 2119/8174.
> Are you trying to say protocol specific property _names_ must not be reused
> across different protocols?
> 
> At the last bullet before section 8.1, are you RFC7556 being pointed to as an
> example way one might derive properties? If so, adjust the language to make it
> clear that its an example.
> 
> In 8.1.1 the second sentence is convoluted. Is there a way to restate it
> without as many nots, nons, an different zeros?
> 
> At 8.1.2 you say lower values have higher priorities for connPrio. But later,
> at msgPrio, higher values have higher priority, and in the examples where you
> speak of the interaction of connPrio and msgPrio, you imply that higher means
> higher for _both_ properties. Please check for consistency and clarify.
> 
> Is the "scope" used for message contexts (9.1.1) ever anything but a framer? If
> not, could this section just say framer?
> 
> At the discussion of Send Events, I worry that the API is closing a door on
> allowing the api to channel information about what's happening because of a
> Send that may be available from future transports. Maybe such things would be
> communicated as events from Connection instead (like Connection->SoftError),
> even if they happened to be Send specific?


I added this as a set of issues in github, where we can also discuss whether/how to resolve these:

https://github.com/ietf-tapswg/api-drafts/issues

Michael