Re: [Taps] Review of draft-trammell-taps-post-sockets-03

Michael Welzl <michawe@ifi.uio.no> Sat, 11 November 2017 02:37 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 2DDDA124B0A for <taps@ietfa.amsl.com>; Fri, 10 Nov 2017 18:37:01 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.201
X-Spam-Level:
X-Spam-Status: No, score=-4.201 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-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 zw06su9SKghs for <taps@ietfa.amsl.com>; Fri, 10 Nov 2017 18:36:56 -0800 (PST)
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 298C41200C1 for <taps@ietf.org>; Fri, 10 Nov 2017 18:36:56 -0800 (PST)
Received: from mail-mx03.uio.no ([129.240.10.15]) by mail-out01.uio.no with esmtp (Exim 4.82_1-5b7a7c0-XX) (envelope-from <michawe@ifi.uio.no>) id 1eDLfC-0000xj-I3; Sat, 11 Nov 2017 03:36:54 +0100
Received: from [66.96.215.225] (helo=[10.0.0.203]) by mail-mx03.uio.no with esmtpsa (TLSv1.2:DHE-RSA-AES256-GCM-SHA384:256) user michawe (Exim 4.82_1-5b7a7c0-XX) (envelope-from <michawe@ifi.uio.no>) id 1eDLfB-000Fw9-L9; Sat, 11 Nov 2017 03:36:54 +0100
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
From: Michael Welzl <michawe@ifi.uio.no>
In-Reply-To: <A19AC4F5-1A56-4F9B-A5C2-3643CD57FBC1@apple.com>
Date: Sat, 11 Nov 2017 10:36:48 +0800
Cc: "taps@ietf.org" <taps@ietf.org>
Content-Transfer-Encoding: quoted-printable
Message-Id: <7F6D4FB0-3D41-4E06-BD11-54D897FA5345@ifi.uio.no>
References: <CF0546DA-422B-4AA3-A593-1BC133AD730D@ifi.uio.no> <A19AC4F5-1A56-4F9B-A5C2-3643CD57FBC1@apple.com>
To: Tommy Pauly <tpauly@apple.com>
X-Mailer: Apple Mail (2.3273)
X-UiO-SPF-Received: Received-SPF: neutral (mail-mx03.uio.no: 66.96.215.225 is neither permitted nor denied by domain of ifi.uio.no) client-ip=66.96.215.225; envelope-from=michawe@ifi.uio.no; helo=[10.0.0.203];
X-UiO-Spam-info: not spam, SpamAssassin (score=-5.0, required=5.0, autolearn=disabled, UIO_MAIL_IS_INTERNAL=-5, uiobl=NO, uiouri=NO)
X-UiO-Scanned: A0674091AB7EC61986D7D40CFF519B82CB8D171F
Archived-At: <https://mailarchive.ietf.org/arch/msg/taps/VYne9VWJw8CX1DOTAZResG4RNpY>
Subject: Re: [Taps] Review of draft-trammell-taps-post-sockets-03
X-BeenThere: taps@ietf.org
X-Mailman-Version: 2.1.22
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: Sat, 11 Nov 2017 02:37:01 -0000

> On Nov 11, 2017, at 10:06 AM, Tommy Pauly <tpauly@apple.com> wrote:
> 
> Hi Michael,
> 
> Just a couple initial notes that may help:
> 
> - The version diff you should look at is between -01 and -03. -02 is the same as -03, but had a typo.
> 
> - You've mentioned previously that you thought that Post requires both peers to use that API. That is absolutely not the case in any way. Having implemented Post myself, I am only communicating to "legacy" servers that know nothing about Post. I think this fundamental understanding needs to be cleared up before coming to any conclusions. We can discuss during the WG.

Oh?!  That would be fantastic!!  But I stumbled over a number of things that require a system on the other side, or they just couldn’t happen (like the “carrier forking” notification I quoted below - but there were more). If you say you can talk to a “legacy” server that knows nothing about Post, WHAT does that server speak? Legacy which protocol?  Maybe it’s just a matter of me thinking TCP, and you thinking TLS… dunno! Tell me   :)


> - The point of the API is to give the shape of the application interaction, which is why you find it general. I believe that many of the protocol-specific options like you mention (disabling Nagle, retransmissions, etc) don't belong to this main abstract API draft, but to a different document that goes into how to configure options that can be used for setups like TCP/UDP. Again, in my implementation of Post, all of these options exist as part of the Configuration object mentioned in the draft. However, as I'll discuss in the WG, I believe that the general shape of the API needs to be defined to be more-forward looking than just what we've specified with the minset for TCP/UDP/SCTP. Essentially, these become a set of Configuration options that can be used, but as transport protocols continue to evolve (and when we need more protocol-specific options), we need to be able to expand. Certain aspects of the minset, like the connection state management, are of course general and common enough to be part of the highest level of API description.

It’s clear to me that we want a higher abstraction level than what the list from minset has - e.g., rather than a DSCP value, it would be better to specify general requirements (low latency or such) for a carrier. Rather than saying “disable Nagle”, we could also say “ low latency, even if it comes at the cost of some overhead” - we do such things in the NEAT API too. You’re focused on the interaction with the application (e.g. callback-based instead of traditional socket-style) - which is fine, but I think doesn’t have much to do with the actual protocol choice.

As for being more forward-looking, I wonder what the new transport features are that we’re missing out on (things that apps really see). I follow QUIC from a slightly too large distance (I simply run out of cycles there :(  ), but so far I’m not sure there’s anything we’d be missing  (but that’s maybe also because I’m not an HTTP/2 expert either). Except security of course, but there the argument is perhaps that it’s enough to consider falling back to TLS?

As for how you represent Nagle etc. in your code, that sounds good to me, but I see an issue in that so much transport functionality is simply not covered by the draft. E.g., the packet sizes / fragmentation thing is important too … yes that’s lower level stuff, but UDP-based applications will only get inefficient if they don’t get this information exposed, which risks having app programmers move to the old ways again IMO.

So, the general design approach of post-sockets is IMO fine, but what I’m missing is a long section with the nitty-gritty details on how such a system would really be implemented (not the happy eyeballing bit, this is fine to be elsewhere - but “how would this work with current protocols”). If I was to implement it from the current draft, I’d have a ton of question marks - e.g. the draft convinced me that there must be a system on both sides (this issue is also not discussed in the draft).

Cheers,
Michael