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

Brian Trammell <> Thu, 22 May 2014 16:38 UTC

Return-Path: <>
Received: from localhost ( []) by (Postfix) with ESMTP id BF5CF1A020A for <>; Thu, 22 May 2014 09:38:16 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.902
X-Spam-Status: No, score=-1.902 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id idVZQv4_WYk9 for <>; Thu, 22 May 2014 09:38:14 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 679CB1A01ED for <>; Thu, 22 May 2014 09:38:14 -0700 (PDT)
Received: from [IPv6:2001:67c:10ec:2a49:8000::8] (unknown [IPv6:2001:67c:10ec:2a49:8000::8]) by (Postfix) with ESMTPSA id 996CA1A098A; Thu, 22 May 2014 18:38:12 +0200 (CEST)
Content-Type: multipart/signed; boundary="Apple-Mail=_30A1E204-4CEC-4277-BD93-E2F92083A6EB"; protocol="application/pgp-signature"; micalg="pgp-sha512"
Mime-Version: 1.0 (Mac OS X Mail 7.2 \(1874\))
From: Brian Trammell <>
In-Reply-To: <>
Date: Thu, 22 May 2014 18:38:10 +0200
Message-Id: <>
References: <> <> <> <> <> <> <>
To: Michael Welzl <>
X-Mailer: Apple Mail (2.1874)
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: Thu, 22 May 2014 16:38:16 -0000

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.

>>  (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.

>>> 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'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...).