Re: [Taps] New Version Notification for draft-trammell-post-sockets-00.txt

Brian Trammell <ietf@trammell.ch> Wed, 09 November 2016 15:15 UTC

Return-Path: <ietf@trammell.ch>
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 12F52129525 for <taps@ietfa.amsl.com>; Wed, 9 Nov 2016 07:15:45 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -3.399
X-Spam-Level:
X-Spam-Status: No, score=-3.399 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-1.497, SPF_HELO_PASS=-0.001, 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 5ASMZ4YXHkst for <taps@ietfa.amsl.com>; Wed, 9 Nov 2016 07:15:43 -0800 (PST)
Received: from trammell.ch (trammell.ch [5.148.172.66]) by ietfa.amsl.com (Postfix) with ESMTP id C14D812955D for <taps@ietf.org>; Wed, 9 Nov 2016 07:15:41 -0800 (PST)
Received: from [10.0.27.103] (dynamic-94-247-222-033.catv.glattnet.ch [94.247.222.33]) by trammell.ch (Postfix) with ESMTPSA id 014011A0106; Wed, 9 Nov 2016 16:15:09 +0100 (CET)
Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\))
Content-Type: multipart/signed; boundary="Apple-Mail=_CA7E6F33-2B01-444F-9699-A6C57BC16AE7"; protocol="application/pgp-signature"; micalg="pgp-sha512"
X-Pgp-Agent: GPGMail
From: Brian Trammell <ietf@trammell.ch>
In-Reply-To: <99C4947A-1B5B-411F-841B-08D7CE63878B@ifi.uio.no>
Date: Wed, 09 Nov 2016 16:15:08 +0100
Message-Id: <94B1277E-1243-4804-81AD-02251518B8E0@trammell.ch>
References: <147756225934.18900.10951893813111037167.idtracker@ietfa.amsl.com> <61285C6A-6A02-4A45-9B00-F88ACF40F412@trammell.ch> <39A21561-156C-444C-830D-087D818B7441@ifi.uio.no> <4CCC5329-A48B-46D5-8EB7-D53EC7E9265E@trammell.ch> <99C4947A-1B5B-411F-841B-08D7CE63878B@ifi.uio.no>
To: Michael Welzl <michawe@ifi.uio.no>
X-Mailer: Apple Mail (2.3124)
Archived-At: <https://mailarchive.ietf.org/arch/msg/taps/U6AEy8tmuB9mOQpbuotiHLBXwls>
Cc: "taps@ietf.org" <taps@ietf.org>
Subject: Re: [Taps] New Version Notification for draft-trammell-post-sockets-00.txt
X-BeenThere: taps@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Discussions on Transport Services <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: Wed, 09 Nov 2016 15:15:45 -0000

hi Michael,

(snipping some history...)

>> (2) Alternately, a Post implementation more tightly integrated with a TAPS one could raise errors on attempts to use contracts not supported by the underlying transport. This requires more application logic support, though, and negates one of the advantages we see of this approach: write once, use any transport.
> 
> The approach we ended up taking in NEAT (to be presented) is to always choose between "required" or "desired".
> "Required" means the API fails and gets back to you; "desired" means you get a fall-back as you describe here. This yields the flexibility that TAPS wants to achieve, yet allows applications to be in control of the things they really must control.

That's a good distinction to make. This, of course, doesn't solve the problem of needing a framing to make this work, as noted below.

>>> I mean, draft-mcquistin-taps-low-latency-services-00.txt even explicitly says "The next phase, enabled both by the use of transport services and their separation from transport protocols, is to define novel transport services based on the needs of applications."
>>> I'd say this is clearly *not* what the charter says. When TAPS started, lots of folks wanted this, but TAPS would have never seen the light of day if we had put that in the charter. Now maybe it's time to be more forward-looking?
>> 
>> Post doesn't say this *explicitly*, but I think you've noticed that it's kind of assumed. Yes, I do think it's time to be forward-looking. Where that looking forward happens is a different question: it could happen in TAPS, or in its own WG or RG. In any case, it definitely needs to happen hand in hand with TAPS, as it's an effort that can provide more diversity in ways to implement services and features.
> 
> So here's a question. To implement e.g. Post with TCP, one could also provide a layer on top of TCP that offers the suggested API and at least takes care of message delineation (and then that layer could use other protocols instead of TCP too). This would need to be there on both ends of a connection.
> I mean, AFAIK, as Minion developed, it was at some point suggested to not insert a delimiter in TCP as part of TCP's functionality, but to simply use delimiters coming from app-layer protocols. I.e., when that protocol has a delimiter, why use another one?
> 
> If that's what we need, then all of a sudden, we're not discussing a forward-looking wish-list anymore, but a way to implement a TAPS system. I'd think that would be a better direction than just creating a wish list for new protocols... but both could be done, I guess.

So I'm not sure I understand what you're suggesting here... are you saying that there'd be some application-layer callback to determine where the framing is on the receive side? Yeah, that might work. (If that's not what you're saying... well, it might work anyway :) )

>> Again, two approaches I can see to make this happen, neither of which is very good IMO:
>> 
>> (1) Define a framing layer (or choose an existing one; for maximum layer confusion, how about websockets? ;) ) to run over vanilla TCP; in this case, Post is less of an API than a flexible transport layer, since it can't be used to connect to endpoints not running Post.
>> 
>> (2) When running on vanilla TCP, only open_stream() works on an association. Same drawbacks as in (2) above.
>> 
>> Maybe try 1 with a fallback to 2, but then you'd need a negotiation protocol running at both ends, rather than a sensing layer that can work at each endpoint independently as in TAPS.
> 
> Sorry for inventing the same as you in my answer above  :-)   it seems we completely agree here. I also agree that both (1) and (2) would be possible solutions.
> Interesting idea about the fallback - indeed, wouldn't trying (1) with a fallback to (2) be ideal?!

Yes, except that there the application has to know about the fallback, and has to work with streams, which changes its logic. And it'd be nice if we could avoid that. But if there were a way to piggyback on application-layer framing, that might make this less awkward.

I think we're on to something. In any case, it definitely answers the first question we had (do we want to talk about this further in a TAPS context?)

Cheers,

Brian