Re: [Udp35] TAPS BOF and moving the transport API forward

Michael Welzl <> Fri, 23 May 2014 08:34 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id 2F46A1A0123 for <>; Fri, 23 May 2014 01:34:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.55
X-Spam-Status: No, score=-2.55 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RP_MATCHES_RCVD=-0.651] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id E71xuXaDAsgj for <>; Fri, 23 May 2014 01:34:31 -0700 (PDT)
Received: from ( [IPv6:2001:700:100:10::15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id B5CDA1A0108 for <>; Fri, 23 May 2014 01:34:30 -0700 (PDT)
Received: from ([]) by with esmtp (Exim 4.80.1) (envelope-from <>) id 1Wnkvq-0002H4-8r; Fri, 23 May 2014 10:34:26 +0200
Received: from ([]) by with esmtpsa (TLSv1:AES128-SHA:128) user michawe (Exim 4.80.1) (envelope-from <>) id 1Wnkvo-0000R3-Ki; Fri, 23 May 2014 10:34:26 +0200
Mime-Version: 1.0 (Apple Message framework v1283)
Content-Type: multipart/alternative; boundary="Apple-Mail=_76F7ACC1-06B0-4F07-A861-3FC724EEC3EF"
From: Michael Welzl <>
In-Reply-To: <>
Date: Fri, 23 May 2014 10:34:23 +0200
Message-Id: <>
References: <> <> <> <> <> <> <> <>
To: Brian Trammell <>
X-Mailer: Apple Mail (2.1283)
X-UiO-Ratelimit-Test: rcpts/h 10 msgs/h 4 sum rcpts/h 12 sum msgs/h 5 total rcpts 16681 max rcpts/h 44 ratelimit 0
X-UiO-Spam-info: not spam, SpamAssassin (score=-6.0, required=5.0, autolearn=disabled, HTML_MESSAGE=0.001, RP_MATCHES_RCVD=-1.051, UIO_MAIL_IS_INTERNAL=-5, uiobl=NO, uiouri=NO)
X-UiO-Scanned: D1432769B201FF90B85C29A4ABA2F99BC2F7C8EB
X-UiO-SPAM-Test: remote_host: spam_score: -59 maxlevel 80 minaction 2 bait 0 mail/h: 4 total 5435 max/h 16 blacklist 0 greylist 0 ratelimit 0
Cc: Gorry Fairhurst <>, Martin Stiemerling <>, Spencer Dawkins <>,
Subject: Re: [Udp35] TAPS BOF and moving the transport API forward
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Life beyond UDP <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 23 May 2014 08:34:34 -0000

On 22. mai 2014, at 18:38, Brian Trammell wrote:

> On 22 May 2014, at 16:13, Michael Welzl <> wrote:
>> On 22. mai 2014, at 14:05, Brian Trammell wrote:
>>> hi Michael,
>>> (copying the udp35 list)
>>> On 22 May 2014, at 12:56, Michael Welzl <> wrote:
>>>> Hi,
>>>> Here's a suggestion. I'm cc'ing the mailing list because in case you disagree this isn't helpful - after all I'm missing context of what happened at your retreat. But I do have a suspicion that we're all on the same page here, so I'll try a simple suggestion:
>>>> When I first approached the IETF, my take was to go bottom-up: define the services of existing IETF transports, create a protocol-independent socket API from that. Not because I think that this is what the long-term solution should be, but because I think this is needed as a starting point.
>>> I see the starting point differently, though also bottom-up:
>>> (1) define the dimensions of transport services...
>>> (1a) provided by existing IETF transports, and/or
>>> (1b) required by existing applications (e.g., there's a gap in RTCWEB here plugged by SCTP/DTLS)
>>> (2) determine other combinations of these transport service dimensions that make sense (e.g. Minion occupies another spot in this space) 
>>> (3) make recommendations for combining these dimensions in user-space transport protocols (in a way that leads to interoperable implementations of these; this is the "mix-ins" idea); this requires us to
>> "mix-ins" => do you have a pointer? Sorry if you presented it at an IETF and I forgot about that.
> Nope, not yet; the idea is still not quite fully-formed. Essentially, instead of providing an implementation of an API that has various knobs for various features (the SCTP approach), we provide a set of standards/implementations that each implement a small set of choices for dimensions as a coherent whole, which are all designed to play nicely with each other. This is sort of a "userspace transport construction kit" as opposed to a layer which selects an existing transport.

That sounds very similar to this:

>>> (3a) define a standard method for implementing user-space transport protocols that is deployable on the present Internet, preferably in a way that does not explicitly escalate the middlebox arms race.
>>> (4) (possibly) make recommendations for the interface that implementations of (3) should provide to applications.
>> I'm not sure I buy the need and/or feasibility of 3a, but I'm also not sure we need to agree about this, at this point in time. Probably it's enough if we agree on the starting points  :-)
> Yep. (3a) is also something which is can be done almost completely independently of the rest, so will probably be a separate thread within the "udp35" work.

ACK, let's stop discussing it for now to keep this discussion focused.

>>>> At the Vancouver bar BOF, I was surprised that folks wanted more: support of higher-level APIs, not just being bound to current RFC-defined transports, etc. This is good, but it does create a larger space of work, and is potentially a much longer-term story, which is why I didn't think we could go there in the first place.
>>>> => would it now perhaps be the right time to split this into:
>>> It seems to me that splitting the effort in to "things we can/should do now" and "things we are not sure about" is a very good idea. I have some detail-level disagreements with where to draw the line, I think.
>>>> 1) an IETF TAPS WG that does a *socket* API extension only, based on an analysis of given transports, and a recommended way of implementing this (happy eyeballing ++ )
>>> It seems like (1) and (2) above mostly overlap between the way we've been looking at this in udp35 and the path TAPS has taken; this intersection could be the scope for a WG-forming BoF or a direct WG formation, after a bit more discussion to nail down the differences.
>> I agree (although my proposal for a starting point was even narrower; I'm fine with broader, whatever works...)
> I think (2) may simply be a set of recommendations in the document describing (1); we need to acknowledge that the dimensions of transport services are not orthogonal.

I agree - I wasn't so concerned about (2) though, I actually meant that we might not even have to do (1b) yet. Perhaps, as long as we stick with *existing* applications, as you wrote, that could be fine - but how to draw the line? We're talking about using a future API, so we ARE talking about a change to the app. Then again, for an intermediate first step, I think the more futuristic fancy use cases set us on a track that leaves TSV territory and may be a much longer term activity, a broader (but also more interesting!) story (consider the breadth of and for example).

>>> I'm concerned (as in the previous message) that doing this in a TSV area WG will keep us from getting good cross-area participation, so another possibility is forming an IAB program around this activity.
>>> In any case (1) should definitely continue moving forward regardless of venue.
>> ... and (1a) doesn't have the cross-area participation problem, it can be done in TSV.
> I'm still not 100% convinced but this is not a point we need to settle right now. :)
>>> I'm not convinced building (4) makes a lot of sense without (3a). But discussing that further is what this list is for. :)
>> I agree. Can you elaborate on (3): why, what? I'm not sure I'm with you here...
> (see above, hope that's useful)
>>>> 2) an IRTF activity of some sort that is a home for:
>>>> - how to map higher-level APIs onto a lower socket API
>>>> - how to define more general services ("give me low latency instead of high bandwidth")
>>> I'm not sure what's different between these two points and "socket API extensions only" in the TAPS WG scope above?
>> Sorry for not making it clear enough: with "socket API extensions only" I meant something that's low-level, i.e. no mapping onto higher-level APIs, no general services, but exposing the things that transport currently do, at the abstraction level at which they do it, without exposing the protocol. Exactly the exercise we did in:
>> => I think this is the stuff we really need to do no matter what, it's your (1a). It's not enough to solve the problem we want to solve, but we won't get anywhere without having done that.
> Got it. Yep. Agreed.
>>>> - what services could/should be defined, based on use cases, which aren't yet available
>>> This third point covers my point 1b/2, and I think is also necessary to do earlier rather than later...
>> I'm fine with doing these things early - but pretty much anything beyond your (1a) (plus signaling, as you suggest - see the second email, coming..) will make things more complicated community-wise as this then goes across areas. (1a) is a much simpler case.
> The only question remaining in my mind about this work item, then, is whether or not it makes sense to separate 1a (a "supply side" survey of existing services) from 1b (which would be an expansion beyond what's already been done...).

I like the "supply side" phrasing! Indeed that's what 1a is. I think the separation from 1b makes sense to get started, unless we can define rules that place clear limits on 1b.

(one such rule that limits applications to what they are today could be: "only consider what's already being offered by existing higher-level APIs" => and, lo and behold, you're back at the TAPS charter  ;-)   ).