Re: [Taps] Publication has been requested for draft-ietf-taps-minset-04

Spencer Dawkins at IETF <spencerdawkins.ietf@gmail.com> Fri, 03 August 2018 22:45 UTC

Return-Path: <spencerdawkins.ietf@gmail.com>
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 87A8D130DD3; Fri, 3 Aug 2018 15:45:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.998
X-Spam-Level:
X-Spam-Status: No, score=-1.998 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=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 sYtSA-pf88pN; Fri, 3 Aug 2018 15:45:44 -0700 (PDT)
Received: from mail-yw1-xc2c.google.com (mail-yw1-xc2c.google.com [IPv6:2607:f8b0:4864:20::c2c]) (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 21F7613107E; Fri, 3 Aug 2018 15:45:44 -0700 (PDT)
Received: by mail-yw1-xc2c.google.com with SMTP id z143-v6so1560518ywa.7; Fri, 03 Aug 2018 15:45:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=DK7ZR0lOzV7TzHscgfc1u64RCoJLU44OESHrTwQWRtU=; b=urmYtuZNxLzzFhJzDZ8gLeFbnzUKCAveueEjne/Com5p/wZfGIT2K9JTTAlkitZtO3 vy7zYfbFIaSyqj/yykZJifeYSejIYJXBXALRJpSTFlClxdVTt3JCZuIKEQ/4fcUauORk 4PxJgnt+lFTHmODdH+K0himuBYrr1AunfiKF50iiDH/PEipOho2PPVWvsuD3DyKaOD1B eu3r0+WLWe3JcCFOYqkY30WvQRjZG1lRCdM3vssnCSqWp45aY5Y4LON6bjL+yRirxkZK P/oHBcr/LnJHeNdiddu4h8SF/iDwwRpbB9xa9OvY5OJVRbrBy8GheIltIMthVNgpWdrG zCZA==
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=DK7ZR0lOzV7TzHscgfc1u64RCoJLU44OESHrTwQWRtU=; b=FIm+AHLoGqq3LcMHTNPzYUDKPEook86ehp1ctc2OVlK9rYKp6BTHkPBUKLbA1mr3hn Dr/2+hZXKuWc0kL3kVmwiNm5aJs1KkYtXhZSWjSvpkr6N0PfLgpzbMqzWggVeeGNmIap MCz59yuG6u5v8oxL6xPdLcDkYE/XyJDPPtDlBpkdwy1mXNi7D+Q4H/LPloqnWSqi/DnA pZd61XFTyctvu0RpZ9E7DlQDUm5W22i0a+UzcqW/cfQpm1UQ4guWn2oT1IESnCxFerQr dOh9pDird1dISUiWsrHLi90N3YpFh8scIFnZYj1H22iUbetT7ApT5yBL5ZvI/2rbhC2H fkWQ==
X-Gm-Message-State: AOUpUlGCHYa6voWLpR327RsRnk/hGCWkHJjeEmBTweqkyqJmL4EwvzOY +ZTOfNSsVtu6RiSprp/6owO+pjMAE6PrxhvgEEXcfjNQ
X-Google-Smtp-Source: AAOMgpcM2+AyWBENv/KhzijrWfcZMWpDaQ+7HNIzkHV2dcxxF7+0l/8OIjzwlLsH8ycTNLkbRJl6NJItLs1PxoB1UW8=
X-Received: by 2002:a0d:edc2:: with SMTP id w185-v6mr3048678ywe.467.1533336342881; Fri, 03 Aug 2018 15:45:42 -0700 (PDT)
MIME-Version: 1.0
References: <153202988904.10474.9175892480215474965.idtracker@ietfa.amsl.com>
In-Reply-To: <153202988904.10474.9175892480215474965.idtracker@ietfa.amsl.com>
From: Spencer Dawkins at IETF <spencerdawkins.ietf@gmail.com>
Date: Fri, 03 Aug 2018 17:45:29 -0500
Message-ID: <CAKKJt-dtcfTGBKmAvGdoRCav50WfBfhPRiWZAmJZgY2=tj3KCQ@mail.gmail.com>
To: draft-ietf-taps-minset@ietf.org
Cc: taps-chairs@ietf.org, theresa@inet.tu-berlin.de, taps WG <taps@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000009ecf505728fb03f"
Archived-At: <https://mailarchive.ietf.org/arch/msg/taps/iM3J-q6Syr2VgakyjvQbOoV9SkA>
Subject: Re: [Taps] Publication has been requested for draft-ietf-taps-minset-04
X-BeenThere: taps@ietf.org
X-Mailman-Version: 2.1.27
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: Fri, 03 Aug 2018 22:45:48 -0000

Dear TAPsters,

I've completed my AD review for this document, and have two high-level
responses:

   - This looks good, and
   - I only have 8 pages of comments ...

Please look these over, and ask for explanations if you need them. When we
work through my comments, I'll request Last Call.

And thanks for your work to date.

Spencer

I'm looking at this text

   Because the considered
   transport protocols conjointly cover a wide range of transport
   features, there is reason to hope that the resulting set (and the
   reasoning that led to it) will also apply to many aspects of other
   transport protocols.

and wondering whether it's accurate to say "many aspects of other transport
protocols that may be in use today, or may be designed in the future"?

Part of my question is wrapped up in discussions about whether QUIC is a
one-off new transport protocol, or whether QUIC is the first example of a
new generation of transport protocols that are now worth designing because
we know how to deploy them.

This text

   For example, it does not help an
   application that talks to a library which offers its own
   communication interface if only the underlying Berkeley Sockets API
   is extended to offer "unordered message delivery", but the library
   only exposes an ordered bytestream.

read oddly to me - I think the first "only" could be removed, unless I'm
missing your point, but please take a look at that sentence for clarity.

This text

   This "minimal set" can be implemented one-sided over TCP (or UDP, if
   certain limitations are put in place).  This means that a sender-side
   transport system can talk to a standard TCP (or UDP) receiver, and a
   receiver-side transport system can talk to a standard TCP (or UDP)
   sender.

was a bit difficult for me to read, and seems to mix explaining what
"one-sided" means with the explanation that "one-sided" also applies to
UDP, if certain limitations are put in place. I wonder if it is accurate to
say

   This "minimal set" can be implemented "one-sided" over TCP.  This means
   that a sender-side transport system can talk to a standard TCP receiver,
   and a receiver-side transport system can talk to a standard TCP sender.
   If certain limitations are put in place, the "minimal set" can also be
   implemented "one-sided" over UDP.

Is "ungrouped communication" in

   For ungrouped connections, early configuration is necessary because
   it allows the transport system to know which protocols it should try
   to use.

a well-understood term? I can guess at the meaning, but I'd be guessing,
and RFCs 8095 and 8304 don't define or use either term.(Further down, I
also see "grouped communications", and I'm guessing what that means, too,
and Section 3.2.1 is even called "Connection groups", but doesn't clearly
define what that means)

I don't disagree with

  Note that this decision tree is not optimal for all cases.  For
   example, if an application wants to use "Specify checksum coverage
   used by the sender", which is only offered by UDP-Lite, and
   "Configure priority or weight for a scheduler", which is only offered
   by SCTP, the above decision tree will always choose UDP-Lite, making
   it impossible to use SCTP's schedulers with priorities between
   grouped connections.  The transport system must know which choice is
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   more important for the application in order to make the best
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   decision.  We caution implementers to be aware of the full set of
   trade-offs, for which we recommend consulting the list in
   Appendix A.2.1 when deciding how to initialize a connection.

but I'm not sure how a general-purpose transport system will know which
choice is more important for any arbitrary application. I see the Is this
advice transport system implementers can act on?

This isn't a big deal, but

  This also means that the active opening side is assumed to be the
   first side sending data.

seems really reasonable for the vast majority of (client-server)
applications, but I wonder if peer-to-peer applications will trip over a
problem here ("I open a connection to you, but you already had data queued
for me since we last connected and you sent it immediately" could be a
scenario for SMTP or DTN, I guess). But I'll let you folks think about that.

This is a nit, but

  o  A buffer limit (in bytes); when the sender has less then the
                                                         ^^^^ than

In this text,

  o  Reliability: this parameter is used to convey a choice of: fully
      reliable (!UDP), unreliable without congestion control, unreliable
      (!UDP), partially reliable (see [RFC3758] and [RFC7496] for
      details on how to specify partial reliability) (!UDP).

it took me some re-reading to figure out that "unreliable (!UDP)" meant
something besides JUST "unreliable" (because UDP is "unreliable without
congestion control"). Could this be clearer? I wonder about "unreliable
with congestion control (!UDP)", but I'm guessing that this is the
distinction you're making.

This text in 7.  Security Considerations

   Authentication, confidentiality protection, and integrity protection
   are identified as transport features by [RFC8095].  As currently
   deployed in the Internet, these features are generally provided by a
   protocol or layer on top of the transport protocol; no current full-
   featured standards-track transport protocol provides all of these
   transport features on its own.  Therefore, these transport features
   are not considered in this document, with the exception of native
   authentication capabilities of TCP and SCTP for which the security
   considerations in [RFC5925] and [RFC4895] apply.  The minimum
   security requirements for a transport system are discussed in a
   separate document [I-D.ietf-taps-transport-security].

confuses me, because I think at least two things are in play. First, I
think the point you're probably making is that the underlying transport
protocols remain unmodified, so the security considerations for each of
those protocols apply unchanged, and this document isn't doing anything to
create new security considerations. So, modulo SECDIR and SEC AD comments,
I think that's all you need to say.

Second, you guys are the experts, but I think a reference to
[I-D.ietf-taps-transport-security] isn't actually needed for this document,
because that document surveys security protocols, rather than specifying
minimum security requirements. That document might someday discuss the
minimum security requirements, in the way this document discusses the
minimum set of transport services, but at least in
https://tools.ietf.org/html/draft-ietf-taps-transport-security-02 that
document is much more comparable to RFCs 8095 and 8304 than to this
document.

In Informative References, I see

  [RFC7305]  Lear, E., Ed., "Report from the IAB Workshop on Internet
              Technology Adoption and Transition (ITAT)", RFC 7305,
              DOI 10.17487/RFC7305, July 2014,
              <https://www.rfc-editor.org/info/rfc7305>.

which is awesome (I wish more IETF people referred to IAB workshop
reports), but the only place I see it referred to is in A.3.1.  Sending
Messages, Receiving Bytes:

   For example, if an application requests to transfer fixed-size
   messages of 100 bytes with partial reliability, this needs the
   receiving application to be prepared to accept data in chunks of 100
   bytes.  If, then, some of these 100-byte messages are missing (e.g.,
   if SCTP with Configurable Reliability is used), this is the expected
   application behavior.  With TCP, no messages would be missing, but
   this is also correct for the application, and the possible
   retransmission delay is acceptable within the best effort service
   model [RFC7305].  Still, the receiving application would separate the
   byte stream into 100-byte chunks.


I was at that workshop, and it was pretty wide-ranging, so you might want
to provide a section number with this reference to give an inquiring reader
a chance of finding what you're referring to (I'm guessing the section
number is 3.5, but I'm guessing).

Just so you know - I did notice that Appendix A is two thirds of the page
count for this document, and I agree that the material belongs in an
appendix, and I think it's important for you to "show your work", in case
anyone ever needs to update the minimal set in the future. So, I support
what you're doing there.

You folks know what you actually did, but I'm hoping that

  2.  Reduction: a shorter list of transport features is derived from
       the categorization in the first step.  This removes all transport
       features that do not require application-specific knowledge or
       cannot be implemented with TCP or UDP.

was actually "cannot be implemented with TCP, SCTP, or UDP". Was that an
omission in this text, or do we need to chat?

This text,

Appendix A.  Deriving the minimal set

   We approach the construction of a minimal set of transport features
   in the following way:

   1.  Categorization: the superset of transport features from [RFC8303]
       is presented, and transport features are categorized for later
       reduction.
   2.  Reduction: a shorter list of transport features is derived from
       the categorization in the first step.  This removes all transport
       features that do not require application-specific knowledge or
       cannot be implemented with TCP or UDP.
   3.  Discussion: the resulting list shows a number of peculiarities
       that are discussed, to provide a basis for constructing the
       minimal set.
   4.  Construction: Based on the reduced set and the discussion of the
       transport features therein, a minimal set is constructed.

   The first three steps as well as the underlying rationale for
   constructing the minimal set are described in this appendix.  The
   minimal set itself is described in Section 3.

would have been clearer to me, if each step was labeled with the part of
the document where this work appears (so, step 1 would be labeled "Section
A.1", etc.), rather than providing the pointers at the end of the list. I
couldn't tell whether you meant that these were the steps you took in the
working group, or whether this was the organization of this appendix (plus
Section 3), until I got to the paragraph at the end.

Does

  Finally, some transport features are aggregated and/or slightly
   changed in the description below.  These transport features are
   marked as "ADDED".  The corresponding transport features are
   automatable, and they are listed immediately below the "ADDED"
   transport feature.

mean "aggregated and/or slightly change from [RFC8303]"?

I have the same question with

  In this description, transport services are presented following the
   nomenclature "CATEGORY.[SUBCATEGORY].SERVICENAME.PROTOCOL",
   equivalent to "pass 2" in [RFC8303].  We also sketch how some of the
   transport features can be implemented by a transport system.  For all
   transport features that are categorized as "functional" or
   "optimizing", and for which no matching TCP and/or UDP primitive
   exists in "pass 2" of [RFC8303], a brief discussion on how to
   implement them over TCP and/or UDP is included.

as I did above - is SCTP intentionally omitted from this paragraph?

(Somewhere about here, I started thinking about "automated" - I didn't see
a clear definition of this in the document. I think I understand what you
mean at a hand-waving level, but you might consider adding a definition
earlier in the document, so that's clearer without relying on context
clues.

I'm not going to list them off, but starting in Section A.1.1.  CONNECTION
Related Transport Features, I'm seeing a lot of analysis that includes some
transport protocols and doesn't include others. I'm comparing

  o  Indicate (and/or obtain upon completion) an Adaptation Layer via
      an adaptation code point
      Protocols: SCTP
      Functional because it allows to send extra data for the sake of
      identifying an adaptation layer, which by itself is application-
      specific.
      Implementation: via a parameter in CONNECT.SCTP.
      Implementation over TCP: not possible.
      Implementation over UDP: not possible.

which includes TCP, SCTP, and UDP, to something like

  o  Hand over a message to reliably transfer during connection
      establishment
      Protocols: SCTP
      Functional because this can only work if the message is limited in
      size, making it closely tied to properties of the data that an
      application sends or expects to receive.
      Implementation: via a parameter in CONNECT.SCTP.
      Implementation over UDP: not possible.

which does not mention TCP. There are a bunch of examples with this kind of
omission. Is it worth showing a complete set of "Implementation over
$Transport: not possible"s for each feature?

If this next is too much trouble, do the right thing, but I notice that

  o  Change timeout for aborting connection (using retransmit limit or
      time value)
      Protocols: TCP, SCTP
      Functional because this is closely related to potentially assumed
      reliable data delivery.
      Implementation: via CHANGE_TIMEOUT.TCP or CHANGE_TIMEOUT.SCTP.
      Implementation over UDP: not possible (UDP is unreliable and there
      is no connection timeout).

includes a parenthetical explanation of why a function is not possible to
implement on a specific transport protocol, but most "not possible" entries
don't have such an explanation. I mention this now, both because it might
reduce the number of conversations with reviewers and ADs that you have
starting with Last Call, and because you folks are likely the best equipped
to add these explanations now, rather than someone else trying to guess
what you were thinking later.

And, while I was thinking about that, I started thinking about entries like

     Implementation over UDP: Do nothing (this is irrelevant in case of
      UDP because there, reliable data delivery is not assumed).

and wondered how many of the "not possible" entries in the appendix might
be "do nothing". If you had parenthetical explanations for why something is
"not possible", or why an implementation might "do nothing", that would
probably sharpen the difference for the average reader …

And finally, at a high level, I don't understand why there are
"Implementation over $Protocol" lines so often that name $Protocols that
weren't listed in "Protocols:" at the beginning of each description. I have
several guesses about what that might mean, but I bet all of them are
wrong, so I have to ask.

To the details ...

Is this text

  o  Reliably transfer a message, with congestion control
      Protocols: SCTP
      Functional because this is closely tied to properties of the data
      that an application sends or expects to receive.
      Implementation: via SEND.SCTP.
      Implementation over TCP: via SEND.TCP.  With SEND.TCP, messages
      will not be identifiable by the receiver.
      Implementation over UDP: not possible.

saying

  o  Reliably transfer a message, with congestion control
...
      Implementation over TCP: via SEND.TCP.  With SEND.TCP, message
      boundaries will not be identifiable by the receiver, because TCP
      provides a stream service.
...

or something else?

I have the same question about the next one

  o  Unreliably transfer a message
      Protocols: SCTP, UDP(-Lite)
      Optimizing because only applications know about the time
      criticality of their communication, and reliably transfering a
      message is never incorrect for the receiver of a potentially
      unreliable data transfer, it is just slower.
      ADDED.  This differs from the 2 automatable transport features
      below in that it leaves the choice of congestion control open.
      Implementation: via SEND.SCTP or SEND.UDP(-Lite).
      Implementation over TCP: use SEND.TCP.  With SEND.TCP, messages
      will be sent reliably, and they will not be identifiable by the
      receiver.

("message boundaries"?)

In section A.2, I have the same "is SCTP out or in?" question, especially
around

  In the following list, we precede a transport feature with "T:" if an
   implementation over TCP is possible, "U:" if an implementation over
   UDP is possible, and "TU:" if an implementation over either TCP or
   UDP is possible.

I don't understand

A.2.1.  CONNECTION Related Transport Features

   ESTABLISHMENT:

   o  T: Hand over a message to reliably transfer (possibly multiple
      times) before connection establishment

Is this saying "possibly retransmitting multiple times to achieve
reliability", or something else?