Subject: Re: TCPng/ multiple addresses per node

From: Iljitsch van Beijnum <[email-masked]>
Date: Tue, 29 Apr 2003 18:38:33 +0200

Alain,

>  In the goold old IPv4 word, locators & identificators are the same 
> thing.
>  This is, as many people pointed out, the root cause for a lot of the
>  hard problems we see today, such as multi-homing & mobility.

>  We have made the problem even harder in IPv6 by adding more sementic
>  to specific addresses:

[...]

>  ...and we made it even more complex now in the early days of 
> coexistence
>  of IPv4 and IPv6,

[...]

>  There is a proposal to create an API to enable the
>  application creating the socket to specify some of the
>  properties that it desires/requires. This is a step in the right
>  direction, but I'm not convinced this can go far enough.
>  So I fully support this idea of lifting the ban on TCPng
>  (or any transport layer for that matter) to de-couple
>  the abstraction needed by applications to the one required
>  by the network. This is in fact introducing some of the semantic
>  of a session layer between the application and the network.
>  Can this be done at the transport layer in the form of TCPng
>  or does this require and actual additional session layer?
>  I'm not sure at this point in time.

The question isn't whether we can, but whether we should. Creating an 
additional layer has the advantage that more transport protocols than 
just TCP can take advantage of it, and it saves us from turning TCP 
upside down.

This new layer would be responsible for discovering and/or negotiating 
the right session parameters such as an identifier that the transport 
protocol knows how to handle and a set of locators. The necessity of 
having a discovery mechanism and very likely also a negotiation 
mechanism make this somewhat complex, but something like this isn't 
without precedent (see IKE).

Extending the architecture in this way allows us to do some very 
interesting things. For one thing, we get to use identifiers that 
aren't routable or not globally routable. This solves the multihoming 
problem and the renumbering problem. It could also make the transition 
between IPv4 and IPv6 easier by allowing v4 identifiers over v6 
transport or the other way around.

It also allows new security paradigms: firewalls and authentication 
servers could play a part in the negotation process so we get to clear 
a path between two endpoints based on actual knowledge about the 
communication that's about to happen rather than guess based on more or 
less accidental properties such as port numbers and IP addresses.

The IPv4 internet and by extension the IPv6 internet are quickly 
becoming a huge pile of assumptions based on assumptions based on hacks 
to avoid breaking assumptions. It would be nice if we could replace 
some of these assumptions with actual per-session facts.