Re: [Taps] TCP components

Michael Welzl <michawe@ifi.uio.no> Fri, 19 June 2015 11:18 UTC

Return-Path: <michawe@ifi.uio.no>
X-Original-To: taps@ietfa.amsl.com
Delivered-To: taps@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D58111A895C for <taps@ietfa.amsl.com>; Fri, 19 Jun 2015 04:18:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level:
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
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 Idatj0ziyeQL for <taps@ietfa.amsl.com>; Fri, 19 Jun 2015 04:18:38 -0700 (PDT)
Received: from mail-out4.uio.no (mail-out4.uio.no [IPv6:2001:700:100:10::15]) (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 445181A890E for <taps@ietf.org>; Fri, 19 Jun 2015 04:18:38 -0700 (PDT)
Received: from mail-mx6.uio.no ([129.240.10.40]) by mail-out4.uio.no with esmtp (Exim 4.80.1) (envelope-from <michawe@ifi.uio.no>) id 1Z5uJg-0001yO-3w; Fri, 19 Jun 2015 13:18:36 +0200
Received: from boomerang.ifi.uio.no ([129.240.68.135]) by mail-mx6.uio.no with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) user michawe (Exim 4.80.1) (envelope-from <michawe@ifi.uio.no>) id 1Z5uJf-0007OD-7Q; Fri, 19 Jun 2015 13:18:36 +0200
Content-Type: text/plain; charset="windows-1252"
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Michael Welzl <michawe@ifi.uio.no>
In-Reply-To: <6F42B0B2-9349-4639-8695-814D9C797F01@trammell.ch>
Date: Fri, 19 Jun 2015 13:18:34 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <C282D01B-6DCE-40CE-B7EF-2B8A2B2BCDD8@ifi.uio.no>
References: <5579768E.5060402@tik.ee.ethz.ch> <A3EF3A19-0E37-42E6-8D17-94164EBA7FDD@ifi.uio.no> <154FD7B7-9A01-43EC-927D-B9D71F1BC38D@tik.ee.ethz.ch> <57DC7DAB-7054-41BE-8515-626353782BBC@ifi.uio.no> <8377C788-96BC-4F70-ADDD-B3E07AC814A0@trammell.ch> <DF226C37-7132-4348-A466-A4DDE1180F85@ifi.uio.no> <6F42B0B2-9349-4639-8695-814D9C797F01@trammell.ch>
To: Brian Trammell <ietf@trammell.ch>
X-Mailer: Apple Mail (2.2098)
X-UiO-SPF-Received:
X-UiO-Ratelimit-Test: rcpts/h 5 msgs/h 2 sum rcpts/h 10 sum msgs/h 3 total rcpts 30269 max rcpts/h 54 ratelimit 0
X-UiO-Spam-info: not spam, SpamAssassin (score=-6.1, required=5.0, autolearn=disabled, RP_MATCHES_RCVD=-1.052, UIO_MAIL_IS_INTERNAL=-5, uiobl=NO, uiouri=NO)
X-UiO-Scanned: 78FD6E9ABDE8A6DF3733D619543EEBE58D984141
X-UiO-SPAM-Test: remote_host: 129.240.68.135 spam_score: -60 maxlevel 80 minaction 2 bait 0 mail/h: 2 total 7347 max/h 17 blacklist 0 greylist 0 ratelimit 0
Archived-At: <http://mailarchive.ietf.org/arch/msg/taps/tiGo0u0pFi85DeNLcG3KQBRZ_IU>
Cc: Mirja Kühlewind <mirja.kuehlewind@tik.ee.ethz.ch>, "taps@ietf.org" <taps@ietf.org>
Subject: Re: [Taps] TCP components
X-BeenThere: taps@ietf.org
X-Mailman-Version: 2.1.15
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: <http://www.ietf.org/mail-archive/web/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: Fri, 19 Jun 2015 11:18:41 -0000

> On 19 Jun 2015, at 12:07, Brian Trammell <ietf@trammell.ch> wrote:
> 
> hi Michael,
> 
> A few replies inline.
> 
>> On 18 Jun 2015, at 15:54, Michael Welzl <michawe@ifi.uio.no> wrote:
>> 
>> 
>>> On 17 Jun 2015, at 12:13, Brian Trammell <ietf@trammell.ch> wrote:
>>> 
>>> hi Michael, all,
>>> 
>>> A couple of random points inline at various levels of quotation...
>>> 
>>>> On 17 Jun 2015, at 10:44, Michael Welzl <michawe@ifi.uio.no> wrote:
>>>> 
>>>>>> 
>>>>>> I agree that the list below is closer to what I think a "component" should be ... but looking at it, is it not even clearer now that components are not what TAPS is after? To me this list now contains lots and lots of details that are irrelevant to the service provided to the application.
>>> 
>>> That's part of the point we're trying to address here. The realization we had here is that components *don't* necessarily map to feature, and it's not clear that we can simply ignore those components that don't map, since they may have impact on the interfaces/features it is possible to (reasonably) implement atop those protocols.
>>> 
>>>>>> Not harmful to list but pretty useless?!
>>> 
>>> Let's start with TCP as probably the most difficult example (indeed, that's why we worked out this "new" arrangement of components for TCP first). A completely clean and unambiguous decomposition of TCP into its features -- what, I agree, we're after in the end -- is not *really* possible, because the protocols as defined and implemented weren't really composed of discrete features. The evolution of loss-based congestion control, for instance, was predicated on the particular loss signals that were available at the time it was first defined. The error detection mechanism likewise relies on the fact that reliability is provided by retransmission. One could say that given the parallel evolution of computing power that all these choices made by TCP were the only obvious ones at the time. But it's precisely the co-evolution of reliability and congestion control that makes gluing FEC to TCP so fraught with peril. That's an important point to capture IMO.
>>> 
>>> I expect that the same exercise for SCTP will show a simpler mapping between components and features, since it *was* designed as a composition of features.
>> 
>> I expect that too, but I still don't understand the point of the component list above. I mean, yes, you may be able to map and say "we need components X Y Z to provide features A and B" but how does this help TAPS?
> 
> So as I see it, "features" are the TAPS view of the world of the future -- the set of things that transport protocols can do, and that a better interface can give you access to. "Components" are the view of the world of the present -- what the current definitions *and deployed implementations* of transport protocols can do, and what each of those features imply.
> 
> There are a few ways you can implement the TAPS API. The one we chose to pursue in the WG (or at least I thought we had) is that the TAPS API takes (1) information from the application about its requirements in terms of features and parameters on those features (if available), (2) information from the path about which transport protocols and options are usable on the path, and the selects a transport protocol, and acts as glue between the API and the underlying protocol.
> 
> In this approach, it is IMO important to catalog the protocol components (and the interactions among them) since the mappings between components and features might not be clean. This might not be the document to do that in. But we wanted to do the exercise to see what the outcome looked like.

I see. Well I don't have a problem with that, I was just suggesting that this is probably not the path of easy agreement.


> <snip>
> 
>>>>> However, you could go for a even more generic approach and only look at the implementation and as a first step figure where are any knobs that in principle could be configurable and then afterwards discuss all of these very specific knobs. I though about this approach and think it would be an interest exercise and potentially the right way to go. But I also think that the overhead would be super large and I don’t think it would give us much more than we have right now. So we the current approach we might need to expect some arbitrariness…
>>>> 
>>>> I lean towards this other one, of beginning with the knobs,
>>> 
>>> ... understanding that interface definitions aren't just about which knobs (and indicators) the API provides, but also the interaction patterns it enables, and that these interaction patterns can also be made inefficient or even impractical by the details of the protocol in question. (It's always *possible* to implement object transfer over streams, or time domain transfer over objects, or to translate asynchonous events into a synchronous API. That the Web and video thereon "work" is proof of that. You can run the whole Internet over DNS, if you want to. It would not work as well as the one we have today. :) )
>> 
>> Yes, I agree, and I hope that this won't really bite us... or what's your plan for addressing this problem?
> 
> In this document, I don't think we need to do anything. If we take an API-centric view, we simply need to note the interaction pattern supported by each API. In the services and interfaces documents, I think we need to explicitly address which interaction patterns we want to support.

That makes sense to me.

Cheers,
Michael