Re: [Taps] Eric Rescorla's No Objection on draft-ietf-taps-minset-08: (with COMMENT)

Michael Welzl <michawe@ifi.uio.no> Thu, 13 September 2018 18:01 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 E3EA1130E4C; Thu, 13 Sep 2018 11:01:39 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.199
X-Spam-Level:
X-Spam-Status: No, score=-4.199 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, 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 4-NAIqOzfa1U; Thu, 13 Sep 2018 11:01:35 -0700 (PDT)
Received: from mail-out01.uio.no (mail-out01.uio.no [IPv6:2001:700:100:10::50]) (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 553ED130EF9; Thu, 13 Sep 2018 11:01:35 -0700 (PDT)
Received: from mail-mx01.uio.no ([129.240.10.26]) by mail-out01.uio.no with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91) (envelope-from <michawe@ifi.uio.no>) id 1g0Vvp-0006PM-05; Thu, 13 Sep 2018 20:01:33 +0200
Received: from 58.116.34.95.customer.cdi.no ([95.34.116.58] helo=[10.0.0.7]) by mail-mx01.uio.no with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) user michawe (Exim 4.91) (envelope-from <michawe@ifi.uio.no>) id 1g0Vvm-0004lG-GS; Thu, 13 Sep 2018 20:01:32 +0200
From: Michael Welzl <michawe@ifi.uio.no>
Message-Id: <63AEF680-16FB-4BED-BAD1-3796B8B01D6F@ifi.uio.no>
Content-Type: multipart/alternative; boundary="Apple-Mail=_7FE0525E-FDFF-4D04-B820-713364E35CE2"
Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
Date: Thu, 13 Sep 2018 20:02:11 +0200
In-Reply-To: <CABcZeBP7+2v=e-1BxWvU0-JJ4-3dgLn=C1H9QMmHJ2fE3U1KZw@mail.gmail.com>
Cc: draft-ietf-taps-minset@ietf.org, taps-chairs@ietf.org, The IESG <iesg@ietf.org>, theresa@inet.tu-berlin.de, "taps@ietf.org" <taps@ietf.org>
To: Eric Rescorla <ekr@rtfm.com>
References: <153681690194.9412.2624965951701043464.idtracker@ietfa.amsl.com> <EB9548E6-D68F-4F98-A5C1-301A59568E05@ifi.uio.no> <CABcZeBP7+2v=e-1BxWvU0-JJ4-3dgLn=C1H9QMmHJ2fE3U1KZw@mail.gmail.com>
X-Mailer: Apple Mail (2.3273)
X-UiO-SPF-Received: Received-SPF: neutral (mail-mx01.uio.no: 95.34.116.58 is neither permitted nor denied by domain of ifi.uio.no) client-ip=95.34.116.58; envelope-from=michawe@ifi.uio.no; helo=[10.0.0.7];
X-UiO-Spam-info: not spam, SpamAssassin (score=-5.0, required=5.0, autolearn=disabled, HTML_MESSAGE=0.001, TVD_RCVD_IP=0.001, UIO_MAIL_IS_INTERNAL=-5, uiobl=NO, uiouri=NO)
X-UiO-Scanned: F3556DCEACC698AAABA7A84E83306F89C2F8E11F
Archived-At: <https://mailarchive.ietf.org/arch/msg/taps/ko1W9xjAtPDNeAr7_5b51S6gCQo>
Subject: Re: [Taps] Eric Rescorla's No Objection on draft-ietf-taps-minset-08: (with COMMENT)
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: Thu, 13 Sep 2018 18:01:40 -0000

Hi,


> > COMMENTS
> > S 1.
> >     of libraries to use this transport feature without exposing it, based
> >     on knowledge about the applications -- but this is not the general
> >     case).  In most situations, in the interest of being as flexible and
> >     efficient as possible, the best choice will be for a library to
> >     expose at least all of the transport features that are recommended as
> >     a "minimal set" here.
> > 
> > What is the bar for the requirements here. I.e., do you believe that
> > all of these can be implemented with a standard sockets API.
> 
> I don't fully get this - it CAN be implemented atop the standard
> socket API (cf. https://github.com/NEAT-project/neat <https://github.com/NEAT-project/neat>), if that's
> what you're asking?
> 
> How do you implement limits on retransmission rates with standard sockets?

It’s an SCTP feature (limiting the number of retransmissions is a part of its partial reliability, specified as one way of doing it in RFC 3758); when you fall back to TCP, you do nothing.

In terms of the document, the following text in appendix A.1 says it:

   o  Configurable Message Reliability
      Protocols: SCTP
(..)
      Implementation over TCP: By using SEND.TCP and ignoring this
      configuration: based on the assumption of the best-effort service
      model, unnecessarily delivering data does not violate application
      expectations.  Moreover, it is not possible to associate the
      requested reliability to a "message" in TCP anyway.
      Implementation over UDP: not possible (UDP is unreliable).


If that seems disappointing: the goal of this document was to describe what can be done while being protocol-independent and allowing to fall back to TCP, or even UDP in some cases. The minute you write code that checks if configuring retransmission limits is possible, you need to implement an exception for the TCP case. I’m not saying this is bad design at all, it just wasn’t the goal of the minset. This doesn’t mean that a TAPS system needs to be limited in this way - it’s just the minimum you can expect from it.


> > S 3.
> > 
> >     Based on the categorization, reduction, and discussion in Appendix A,
> >     this section describes a minimal set of transport features that end
> >     systems should offer.  The described transport system can be
> >     implemented over TCP.  Elements of the system that are not marked
> >     with "!UDP" can also be implemented over UDP.
> > 
> > Does this mean over native UDP with no other session protocol. Because
> > you can have TCP over UDP.
> 
> Native; we added a disclaimer about this at the end of the introduction.
> 
> 
> 
> > S 3.2.
> >     multiplexed as streams on a single SCTP association when SCTP may not
> >     be available).  The transport system must therefore ensure that
> >     group- versus non-group-configurations are handled correctly in some
> >     way (e.g., by applying the configuration to all grouped connections
> >     even when they are not multiplexed, or informing the application
> >     about grouping success or failure).
> > 
> > How do you group connections in TCP? Or is this text saying it
> > doesn't?
> 
> The text doesn't make any assumption about this being possible with
> anything but SCTP. This being said, I can't resist offering an answer
> (but that's out of scope of minset):
> https://ieeexplore.ieee.org/document/8406887/ <https://ieeexplore.ieee.org/document/8406887/>
> 
> This is behind a paywall, but it appears to just be about congestion control, so perhaps there is some confusion about "grouping". I had read that as application visible grouping. Is that not what you mean?

Sorry for the link problem; it IS application visible grouping, with prioritization. There’s also this draft:
https://tools.ietf.org/html/draft-welzl-tcp-ccc <https://tools.ietf.org/html/draft-welzl-tcp-ccc>
and we have FreeBSD code doing this. Safiqul has various material here: http://safiquli.at.ifi.uio.no/tcp-ccc/ <http://safiquli.at.ifi.uio.no/tcp-ccc/>

I think we're diverging from the minset discussion, so I’ll stop here - but if this really interests you, tell me: I’d be very happy to discuss it further and send you the paper. I’d love for someone to use this!
Since you mentioned TCP over UDP before - that’s actually one of the things we implemented, to ensure that flows traverse the same path.


> > S 7.2.
> > 
> >     o  Disable MPTCP
> >        Protocols: MPTCP
> >        Automatable because the usage of multiple paths to communicate to
> >        the same end host relates to knowledge about the network, not the
> >        application.
> > 
> > I don't think I understand how this is automatable. Is the theory that
> > the host auto-negotiates MPTCP? But what if the app doesn't want it no
> > matter what.
> 
> Then the application wants more than what this design of strictly
> "application-specific knowledge" is giving it. That's the trade-off here -
> there may be many reasons for applications to want things beyond this
> document, but if we weren't strict about these limitations, this would
> have hardly become a "minimal set".
> 
> That's reasonable, but it seems like a somewhat confusing definition.

What is it that’s confusingly defined? “application-specific knowledge”? “Automatable"? Happy to fix if you tell me what.

Cheers,
Michael