Re: [Taps] TCP components

Michael Welzl <michawe@ifi.uio.no> Thu, 18 June 2015 13:44 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 1A12E1B31C8 for <taps@ietfa.amsl.com>; Thu, 18 Jun 2015 06:44:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.61
X-Spam-Level:
X-Spam-Status: No, score=-1.61 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, MIME_8BIT_HEADER=0.3, T_RP_MATCHES_RCVD=-0.01] autolearn=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 2H7xSCncxvvK for <taps@ietfa.amsl.com>; Thu, 18 Jun 2015 06:44:03 -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 A4B9B1B31C7 for <taps@ietf.org>; Thu, 18 Jun 2015 06:44:02 -0700 (PDT)
Received: from mail-mx1.uio.no ([129.240.10.29]) by mail-out4.uio.no with esmtp (Exim 4.80.1) (envelope-from <michawe@ifi.uio.no>) id 1Z5a6e-0007BT-81; Thu, 18 Jun 2015 15:43:48 +0200
Received: from boomerang.ifi.uio.no ([129.240.68.135]) by mail-mx1.uio.no with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) user michawe (Exim 4.80) (envelope-from <michawe@ifi.uio.no>) id 1Z5a6d-0001lb-Nx; Thu, 18 Jun 2015 15:43:48 +0200
Content-Type: text/plain; charset="utf-8"
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\))
From: Michael Welzl <michawe@ifi.uio.no>
In-Reply-To: <725D4141-40AB-4E30-9409-96813C80905B@tik.ee.ethz.ch>
Date: Thu, 18 Jun 2015 15:43:44 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <33CA72C2-D0EC-43A1-B766-D34F3636961B@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> <5581B81B.4090500@isi.edu> <725D4141-40AB-4E30-9409-96813C80905B@tik.ee.ethz.ch>
To: Mirja Kühlewind <mirja.kuehlewind@tik.ee.ethz.ch>
X-Mailer: Apple Mail (2.2098)
X-UiO-SPF-Received:
X-UiO-Ratelimit-Test: rcpts/h 5 msgs/h 2 sum rcpts/h 7 sum msgs/h 4 total rcpts 30220 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.051, UIO_MAIL_IS_INTERNAL=-5, uiobl=NO, uiouri=NO)
X-UiO-Scanned: 74F6EA01134BA958F0AD1E81D283024816026866
X-UiO-SPAM-Test: remote_host: 129.240.68.135 spam_score: -60 maxlevel 80 minaction 2 bait 0 mail/h: 1 total 7335 max/h 17 blacklist 0 greylist 0 ratelimit 0
Archived-At: <http://mailarchive.ietf.org/arch/msg/taps/s37URFG4nKVXzPUoD4Dft-ZUi2c>
Cc: Brian Trammell <ietf@trammell.ch>, "taps@ietf.org" <taps@ietf.org>, Joe Touch <touch@isi.edu>
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: Thu, 18 Jun 2015 13:44:05 -0000

> On 18 Jun 2015, at 10:48, Mirja Kühlewind <mirja.kuehlewind@tik.ee.ethz.ch> wrote:
> 
> Hi Joe,
> 
> I believe the approach Michael is proposing is to look at existing APIs as a starting point; not only abstract APIs.

No, wrong. Only abstract ones from RFCs, I said this before. These things would typically have preceding IETF debate, whereas trying to cover implementations is a huge and probably meaningless endeavour (the bar may be high for adding function calls to an API on system X and low for an API on system Y).


> The assumption is that someone who implemented/designed an API, thought that it would be worth to provide a configuration possibility to the higher layer. This assumption is more true for SCTP than for TCP because there are quite a few different TCP implementation that are grown over time. Quite often a new interface was only created because a new feature was added to TCP; and to be on the safe side we allow the user to turn it off again.
> 
> That’s the reason why I prefer the approach we are/I'm taking right now (analyzing components). I think we should still describe the abstract API of RFC793 (and we do) as well as the SCTP API of RFC4960 in this document, but I personally would not and will not spend too much time analyzing other API. However, everybody who has time and is interested in this can of course provide his/her outcome as input for this document and we will happily take it and compare it to what we have so far.

But you misunderstood me. I was talking about RFCs (btw 6458, not 4960), not implementations out there.

More below, answering Joe  (hm, that rhymes ;-)  ) -


> 
> Mirja
> 
> 
>> Am 17.06.2015 um 20:10 schrieb Joe Touch <touch@isi.edu>:
>> 
>> 
>> 
>> On 6/17/2015 1:44 AM, Michael Welzl wrote:
>>> I think that this discussion with Joe maybe suffered from focusing on
>>> TCP. 
>> 
>> To be fair, TCP has a simpler abstract API.
>> 
>>> SCTP is perhaps a better starting point because it supports
>>> almost everything. 
>> 
>> IMO, that makes it very hard as a starting point, and I also think that
>> TCP's variant of an API description is much better as an example.
>> 
>> E.g., Section 10 of RFC4960 claims it defines an abstract API
>> (ULP-to_SCTP), but it begins by describing a call to initialize a data
>> structure (INITIALIZE). That's decidedly NOT an abstract API; it's a
>> generic description of an implementation issue.
>> 
>> IMO, if we don't understand the difference between the API in RFC793 vs.
>> that in RFC4960 (and why 793 is a better example), then this is going to
>> be a very bumpy road.

How abstract it is in the RFC indeed isn't my main concern here: it's to start with the interface (however abstract it is) offered to applications as described in the RFCs, as this reflects what the designers (with some level of IETF consensus) thought should be exposed.
Now, of course SCTP has more options and is more complex in its usage than TCP, but it covers a larger part of the space of services in protocols - so I thought it's a good starting point, as in: 80% done by looking at 1 protocol, check the others for the remaining 20%. Something like that.

This is just me being pragmatic and trying to have a more systematic approach to developing a list of services. I agree with Brian that some level of arbitrariness will always be there, but we must try to minimize it I think.

Cheers,
Michael