Re: [nbs] NBS and TCP connection identification

Jan M <> Thu, 14 October 2010 17:46 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 0EEA93A6B8E for <>; Thu, 14 Oct 2010 10:46:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.299
X-Spam-Status: No, score=-2.299 tagged_above=-999 required=5 tests=[AWL=-0.301, BAYES_00=-2.599, HTML_MESSAGE=0.001, J_CHICKENPOX_23=0.6]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id I0PyW2Cr2xUt for <>; Thu, 14 Oct 2010 10:46:13 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id C36183A6B8D for <>; Thu, 14 Oct 2010 10:46:12 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 8ADC3314D4A3; Thu, 14 Oct 2010 17:47:28 +0000 (UTC)
Received: from [IPv6:::1] (unknown [IPv6:2001:1bc8:101:f200::25]) by (Postfix) with ESMTP id F1FB1314D491; Thu, 14 Oct 2010 17:47:27 +0000 (UTC)
Mime-Version: 1.0 (Apple Message framework v1081)
Content-Type: multipart/alternative; boundary=Apple-Mail-38--466398822
From: Jan M <>
In-Reply-To: <1287070131.2253.92.camel@bit>
Date: Thu, 14 Oct 2010 20:47:26 +0300
Message-Id: <>
References: <> <> <> <1285067950.2068.59.camel@bit> <> <> <> <> <> <> <> <> <> <1287070131.2253.92.camel@bit>
To: Javier Ubillos <>
X-Mailer: Apple Mail (2.1081)
X-Virus-Scanned: ClamAV using ClamSMTP
Cc: Christian Vogt <>, "" <>
Subject: Re: [nbs] NBS and TCP connection identification
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: Thu, 14 Oct 2010 17:46:15 -0000


See the question at the bottom....

On Oct 14, 2010, at 6:28 PM, Javier Ubillos wrote:

> On Thu, 2010-10-14 at 08:45 +0300, Jan M wrote:
>> Hi Christian,
>> On Oct 13, 2010, at 9:19 PM, Christian Vogt wrote:
>>>> If there was a host at certain IP A (obtained via DHCP) with synthesized name A when the next host (different) gets the same IP A from DHCP will it have the same name A?  What should the peer be able to determine from this name and how will it know that it is different or same instance as the previous?
>>> Yes, if DHCP hands out the same IP address to different hosts sequentially, and if those hosts are both legacy, the hosts' synthesized names will look the same.  But this is in line with the semantics of a synthesized name:  A synthesized name refers to the host that used the encoded IP address at the time of session initiation.  By implication, synthesized names are good only throughout a session -- for session identification across address changes.  Synthesized names cannot be used to re-identify a host across sessions.
>>> Does this make sense?
>> Actually I don't see how this could work for either session identification. If the host initiates the session with RFC1918 address behind the NAT then the peer sees synthesized name and client thinks it is Now it tries to use this name on the other interface it has and it sends to the peer "Hi, I'm I would like to add V.X.Y.Z. address to the existing session" but the peer has only session so it wont be able to identify the session or am I missing something? So I guess you need some network support to resolve that the name of the session is actually not
>> Additionally the session identification comes even more complex when you have multiple hosts behind the as not all can identify themselves as or how do you plan to avoid situation where multiple hosts are saying that "Hi I'm and I would like to add address to address on port 80" so how would the peer know which session to associate new address as the source port is probably not usable as you can't count on it to be same all session to be added?
> Consider the synthesized name an arbitrary label. Completely irrelevant
> for the communication.
> Assume that host A is behind a NAT,
> and assume that we're talking TCP.
> Host A has  |  Host B has
> IP(A)       |  IP(B)
> Port(A)     |  Port(B)
> Name(A)     |  Name(B)
> When Host A sends a packet to B, and only receives Bs address in a
> literal manner, the packet on the network is still sent to
> IP(B):TcpPort(B). The names Name(A) & Name(B) are added in an extension
> header, but for the network, it is considered payload only.
> When it arrives at Host B, Name(A) will be used as a sessionlabel with
> no particular semantics. The label will never be derived to an IP, hence
> there is no risk that the IP changes owner. This is all managed by
> name-based sockets (e.g. by the shim6 extension).
> Conversely, when the reply from Host B to A is sent, it follows normal
> IP+NAT protocol. The names are, from a network perspective, just
> payload.
> What _could_ be an issue to be solved, is what happens when labels
> collide. But I don't think this will be a major problem, as long as each
> socket is well isolated from other sockets.

Are you saying that the labels wouldn't be derived from the addresses? Earlier Christian said that they would? If not then how do you generate the label and ensure that it is unique enough? Is the label a hash of something or what are the semantics? 

Is the plan to generate this session label also in the case where the peer has a FQDN or not? If not then again I guess that would mean that you have two different ways of naming sockets depending whether the FQDN was know or not when the socket was bound?