[nbs] NBS assumptions: What can change?(was: Re: NBS and TCP connection identification)

Javier Ubillos <jav@sics.se> Tue, 05 October 2010 11:28 UTC

Return-Path: <jav@sics.se>
X-Original-To: nbs@core3.amsl.com
Delivered-To: nbs@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 1151A3A6F33 for <nbs@core3.amsl.com>; Tue, 5 Oct 2010 04:28:45 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.063
X-Spam-Level:
X-Spam-Status: No, score=-1.063 tagged_above=-999 required=5 tests=[AWL=-0.810, BAYES_00=-2.599, HELO_EQ_SE=0.35, J_CHICKENPOX_22=0.6, MIME_QP_LONG_LINE=1.396]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7N-I2IiRSow0 for <nbs@core3.amsl.com>; Tue, 5 Oct 2010 04:28:42 -0700 (PDT)
Received: from letter.sics.se (letter.sics.se [193.10.64.6]) by core3.amsl.com (Postfix) with ESMTP id CB6A53A6EF9 for <nbs@ietf.org>; Tue, 5 Oct 2010 04:28:41 -0700 (PDT)
Received: from [193.10.66.63] (bit.sics.se [193.10.66.63]) (Authenticated sender: jav@sics.se) by letter.sics.se (Postfix) with ESMTPSA id 2F13540108; Tue, 5 Oct 2010 13:29:38 +0200 (CEST)
From: Javier Ubillos <jav@sics.se>
To: Erik Nordmark <erik.nordmark@oracle.com>
In-Reply-To: <4CA60E4B.9050803@oracle.com>
References: <4C97D9A8.2050001@oracle.com> <ACE9611A-9107-46EC-ADD2-56E553DC1C3A@ericsson.com> <4C9826D0.2060703@oracle.com> <1285067950.2068.59.camel@bit> <4C98D525.1030808@oracle.com> <1285148838.2211.60.camel@bit> <4C9A38A1.9060307@oracle.com> <1285251552.2225.109.camel@bit> <4CA60E4B.9050803@oracle.com>
Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="=-0lrSF0iwY20RgpqfYqEA"
Date: Tue, 05 Oct 2010 13:29:37 +0200
Message-ID: <1286278177.2249.347.camel@bit>
Mime-Version: 1.0
X-Mailer: Evolution 2.28.3
Cc: nbs@ietf.org
Subject: [nbs] NBS assumptions: What can change?(was: Re: NBS and TCP connection identification)
X-BeenThere: nbs@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Name based sockets discussion list <nbs.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/nbs>, <mailto:nbs-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/nbs>
List-Post: <mailto:nbs@ietf.org>
List-Help: <mailto:nbs-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/nbs>, <mailto:nbs-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 05 Oct 2010 11:28:46 -0000

Sorry for the delayed answer.
I'll reply in two different e-mails.

On Fri, 2010-10-01 at 09:37 -0700, Erik Nordmark wrote:
<snip>
> > I am hesitant to solutions that infer delays in the connection setup.
> 
> Some perspective on this might be useful.
> Depending on who you ask you find that the community has thought about 
> or worked on id/locator separation for 30 years, or merely 15 years.
> 
> As we've discussed this radical change to the architecture, much of the 
> feedback is around "you can't change X", where different folks are 
> concerned about different values of X. The result is that we haven't 
> changed anything, and as a result we've made no progress.
> 
> It is pretty clear to me that if we want some form of id/locator 
> separation architecture, then some things will change. We definitely 
> have to be cognizant of this and understand the tradeoffs, but starting 
> off with "we can't change X" for any value of X isn't likely to be a 
> good approach.

I'm not saying that this way is better (we'll actually I am, but a
healthy approach is to presume that I'm wrong ;).

There are a lot of preexisting solutions to ID/Locator split.

What we do have so far however is this either splits further down in the
stack as shimming layer at the network layer of the stack (e.g. HIP), or
in the network (e.g. LISP).

What we are suggesting is a different deployment approach.

Doing stuff in the network requires that we change the network.
Doing stuff in a shimming layer is fine, but how does the application
know what it gets?
Doing stuff in a higher layer allows us to 
a. Explicitly declare what you want/assume
b. Be able to deploy the solution in the OS _or_ in user-space.

Option b here I think is what makes NBS very different.
(I'm now representing a very personal opinion, there is no consensus
about this)
We may very well have a scenario where name-based sockets are
distributed as a library, which gives preference to OS implementations.
This way, applications will for sure know what they are getting, and may
be distributed without concern about which OS-version they will be
deployed on. Historically, user-space libraries tend to gravitate
towards becoming part of the OS:es.

So, why am I hesitant to delays in the connection setup?
Because, for an ID/Loc split to be deployed, it has to make stuff
better.
E.g. logging on to g-mail, you have several of "first packets".
These are sometimes also sequential, so that one connection has to
finish before the next can start.

What I envision is something that _starts_ as a legacy communication,
and then builds up surrounding features, very much as shim6 does when it
waits for 50 packets to be exchanged before it kicks-in.

Note that this is orthogonal to name-based sockets being or not.
It is just the way I would like to see things happen.
I want it to be good _and_ deployable :)

>  From what I understand from folks at Google a significant part of the 
> "connection setup" is actually the DNS lookup, and for the case of a web 
> browser doing lots of connections there are approaches to 'prefetch' and 
> parallelize that part. Potentially similar approaches can be applied if 
> there is a need to do some validation or other exchanges in an 
> id/locator system.

Intresting.
I have so far presumed that if an application uses DNS-resolution
anyway, that name-based sockets would be equal.
Perhaps some method of pre-feeding resolutions would be nice?
E.g. where name-based sockets can provide applications with a
local /etc/hosts or dns-proxy which can be fed with good assumptions
(such as prefetches).

Optimizing this now is a bit premature, but what kind of nerds would we
be if we abstained?

// Javier