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.