Re: [nbs] Synthesized names as session-labels - "Was: Re: I-D Action:draft-ubillos-name-based-sockets-03.txt"

Rémi Després <> Wed, 20 October 2010 14:00 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id CE9C23A69AF for <>; Wed, 20 Oct 2010 07:00:04 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.135
X-Spam-Status: No, score=-1.135 tagged_above=-999 required=5 tests=[AWL=0.214, BAYES_00=-2.599, HELO_EQ_FR=0.35, J_CHICKENPOX_24=0.6, MIME_8BIT_HEADER=0.3]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 2mK7OSMAX29j for <>; Wed, 20 Oct 2010 07:00:03 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 430013A69A2 for <>; Wed, 20 Oct 2010 07:00:03 -0700 (PDT)
Received: from (localhost []) by (SMTP Server) with ESMTP id D9882700009A; Wed, 20 Oct 2010 16:01:35 +0200 (CEST)
Received: from [] ( []) by (SMTP Server) with ESMTP id 500957000085; Wed, 20 Oct 2010 16:01:35 +0200 (CEST)
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: text/plain; charset=iso-8859-1
From: =?iso-8859-1?Q?R=E9mi_Despr=E9s?= <>
In-Reply-To: <1287582270.2189.328.camel@bit>
Date: Wed, 20 Oct 2010 16:01:34 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <>
References: <> <> <1287493383.2189.89.camel@bit> <> <1287497726.2189.113.camel@bit> <1287582270.2189.328.camel@bit>
To: Javier Ubillos <>
X-Mailer: Apple Mail (2.1081)
Subject: Re: [nbs] Synthesized names as session-labels - "Was: Re: I-D Action:draft-ubillos-name-based-sockets-03.txt"
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Name based sockets discussion list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 20 Oct 2010 14:00:04 -0000


What about a face to face discussion in Beijing, with the few people expressing interest for an NBS approach?
(On an issue like this one, I find it difficult to converge by e-mail. At this point, it is still too complex.)

Le 20 oct. 2010 à 15:44, Javier Ubillos a écrit :

> Rémi and Jan.
> About the whole "synthesized ip" issue.
> I have thought about it a lot and I'm curious as what you think about
> the methods along the following lines of thought.
> The reason I like the synthesized addresses at all is that it's easy to
> derive from something innate to the host. You don't need any
> pre-negotiation and it _might_ be better than a randomly generated
> nonce.
> However, two issues have made me rethink a bit:
> * When working with TCP, two names on the same host cannot share IP:Port
> pairs. The remote host, if it is not upgraded, wouldn't be able to
> distinguish the two flows. There for, a host needs some book-keeping
> mechanism to keep the 4-tuples unique.
> * Locally, we need the session-identifier to be unique as well to be
> able to keep the separate sessions distinct, but also manageable so that
> sessions who wish to multi-home/multi-path are able to find and re-use
> the correct session label.
> So, in other words:
> We need to be able to keep a record of which sessions use which
> srcIP:dstIP:srcIP:dstIP pairs (or whichever identifier a particular
> protocol uses)
> What needs to be solved is:
> * How to name unnamed nodes
> * How to generate sensible session-labels
>   * To be able to separate sessions
>   * And still allow to aggregate "sub-sessions" (e.g. a multi-path
> sessions)
> Personally, I think "sub-sessions" are a non-issue, as in the multi-path
> TCP case, we can still run standard TCP-sockets as each sub-socket to
> the master-socket which will need a session-label.
> A thought I'm playing with is to use a combination of a synthesized
> names and SRV-record syntax. 
> This is an incomplete solution, let me show by an example:
> Host A communicates with Host B.
> Host A has IP(A) and wants to talk TCP/HTTP to B.
> So, it generates 
> src name: _<sourceport>._tcp.<IP(A)>
> dst name: _http._tcp.<IP(B)>
> src IP: IP(A)
> dst IP: IP(B)
> src Port: _<sourceport>
> dst Port: 80
> This way, when spawning new sockets, one can by just looking at the
> local name, avoid ip:port conflicts.
> However, this breaks in the mobility case, where this generated name no
> longer has a relation to the ip:port pairs used.
> Do any of you have any good suggestions on how to achieve the goal?
> Perhaps an overlap in session-labels is not a problem at all (maybe we
> can separate sockets at an application level, where no two applications
> may interfere with each others sockets...
> Do you guys have any good ideas/suggestions?
> // Javier
> On Tue, 2010-10-19 at 16:15 +0200, Javier Ubillos wrote:
>> On Tue, 2010-10-19 at 16:03 +0200, Rémi Després wrote:
>>> Le 19 oct. 2010 à 15:03, Javier Ubillos a écrit :
>>>>>> ...
>>>>>>  o  Using one of the hosts interfaces addresses as a name.
>>>>> Why would I want to use this?
>>>> Another thing I should be more explicit about.
>>>> This is a construct for when a host does not have a name associated with
>>>> it. Then a name can be synthesized for it.
>>> Since translations from addresses to names are generally time consuming, and not necessarily as up to date as those from names to addresses, this should, as  minimum, be an option that applications would have to request.
>> The whole reverse-resolution/ infrastructure is not very broadly
>> deployed.
>> The way I see it, it's comparable with a nonce, but which _might_
>> contain some valuable extra information (the IP the communication was
>> started with).
>> Also, -> name could very well generate multiple answers. How do
>> you know which one is right.
>> In other words, this is not a huge deal, the intention is to _maybe_
>> provide something that _might_ be more informative than an arbitrary
>> label.
>> If too many finds that it is just confusing and an eye-sore, we'll have
>> to reconsider that possibility.
>> // Javier