[nbs] A name-oriented API: What should it look like? How should it behave?
Javier Ubillos <email@example.com> Wed, 01 December 2010 09:18 UTC
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id E17603A6CD4 for <firstname.lastname@example.org>; Wed, 1 Dec 2010 01:18:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[AWL=-0.150, BAYES_00=-2.599, HELO_EQ_SE=0.35, MIME_8BIT_HEADER=0.3]
Received: from mail.ietf.org ([18.104.22.168]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id v5LsFERnzudc for <email@example.com>; Wed, 1 Dec 2010 01:18:46 -0800 (PST)
Received: from letter.sics.se (letter.sics.se [22.214.171.124]) by core3.amsl.com (Postfix) with ESMTP id 6B0DF3A69DA for <firstname.lastname@example.org>; Wed, 1 Dec 2010 01:18:46 -0800 (PST)
Received: from [126.96.36.199] (bit.sics.se [188.8.131.52]) (Authenticated sender: email@example.com) by letter.sics.se (Postfix) with ESMTPSA id 3AED140005; Wed, 1 Dec 2010 10:19:58 +0100 (CET)
From: Javier Ubillos <firstname.lastname@example.org>
To: Name-based Sockets List nbs <email@example.com>, Christian Vogt <firstname.lastname@example.org>, Stefan =?ISO-8859-1?Q?G=F6tz?= <email@example.com>, Denis Martin <firstname.lastname@example.org>, Helge Backhaus <email@example.com>, Bengt Ahlgren <firstname.lastname@example.org>, Stuart Cheshire <email@example.com>, Dave Thaler <firstname.lastname@example.org>, Erik Nordmark <email@example.com>, Miika Komu <firstname.lastname@example.org>, Tobias Heer <email@example.com>, Saleem Bhatti <firstname.lastname@example.org>, Mingwei Xu <email@example.com>, Zhongxing Ming <firstname.lastname@example.org>
Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="=-DfKn4KjrTrYsGwBkil5B"
Date: Wed, 01 Dec 2010 10:19:45 +0100
X-Mailer: Evolution 2.28.3
Subject: [nbs] A name-oriented API: What should it look like? How should it behave?
List-Id: Name based sockets discussion list <nbs.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/nbs>, <mailto:email@example.com?subject=unsubscribe>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nbs>, <mailto:firstname.lastname@example.org?subject=subscribe>
X-List-Received-Date: Wed, 01 Dec 2010 09:18:48 -0000
Hello everyone. At the name-based sockets BoF (IETF79 November 8th) there was a clear interest in defining an (abstract) API. http://www.ietf.org/proceedings/79/minutes/nbs.txt I wanted to get that discussion started, and I'd like to emphasize that, at this stage, everything is an open question. Here's a starting draft in which I intend to capture these discussions. http://www.ietf.org/id/draft-Ubillos-name-based-api-00.txt I have tried to synthesize, the feedback during the BoF and the chats afterwards. Thank you Erik Nordmark, Saleem Bhatti, Mika Komu, Tobias Heer, David Thaler, Randall Stewart, Stuart Cheshire and everyone who have argued with me and given me feedback. I greatly appreciate it! Today we are already seeing name-oriented APIs in all kinds of application frameworks, they are very popular. However, they tend to only leverage app-protocol functionality. Also, as the service used defines the application-protocol used, bi-lateral support is implied by the used service. This limits the functionality used to application-protocol functionality. The objective is to make it easier for applications to make use of networking solutions. To achieve this *I* believe we need to: API wise: * Provide an API in parallel to the socket() calls. * This API should take "names" in different formats. * Ability to select resolution system for names * The API should be able to receive information about which functions the application wants (e.g. multi-homing) * The API should be able to provide information * About which functions are available. * If the remote peer supports the requested features (if bi-lateral support is needed.) * About relevant changes (e.g. if the set of locators has changed) Behavior wise: * When a recipient receives a connection, the receiving socket/application receives a simple, unauthenticated session handle. * If the application needs more information, it calls some part of the API and is obviously prepared to pay whatever performance cost the function requires. * Possible (and optional!) features are: * Name exchange * Authenticity * (you name it...) * Making the name-exchange an optional part (and not an integral part) means that it can be done on-demand. Whenever the user or some thing else requested by the user requires it. I believe this also means that we need to have some functionality which checks for bi-lateral support, and is able to exchange information about what functions the respective peer wishes to use. The name-based sockets implementation and draft(s) are attempts to capture this (however, still incomplete when it comes to API questions). http://tools.ietf.org/html/draft-ubillos-name-based-sockets-03 http://tools.ietf.org/html/draft-xu-name-shim6-00 // Javier
- [nbs] A name-oriented API: What should it look li… Javier Ubillos