[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Identifier (structure) [Was: Agenda for Vienna]



On dinsdag, mei 20, 2003, at 18:41 Europe/Amsterdam, marcelo bagnulo wrote:

Yes, that is one approach.
It might make it more difficult for transition schemes where an unmodified
IPv6 host plus some "proxy" e.g. at the site border together implement things.
In such a case I think the IPv6 host (for transition purposes) would
send packets where IP source and destination are identifiers
thus the "proxy" would not see such higher level "real" identifiers.
When a proxy is used the identifiers must take the shape of valid IPv6 unicast addresses (or possibly IPv4 addresses). Host implementations could use any identifier they like, except that this means changing the TCP and UDP checksum calculations. So IPv6 addresses will probably be the most important identifier category for some time to come, but if we do this right we finally get to disconnect the network and transport layers so we can change the network layer protocol without too much trouble the next time around.

Another issue to consider in this space is the goal to allow
applications already ported to IPv6 to continue to work when
the application uses getaddrinfo() followed by connect()/sendto().
This is at least easier to accomplish if the identifier fits in 128 bits.

Do you think that the identifier name space should be the same that the
locator address space or should be a separate one?

I mean, we could use the IPv6 address space to contain both locators and
identifiers and that any address could be used both as an identifier or
as locator.

The other option is to split the IPv6 address space and reserve a part
of it to identifiers
There are advantages to both having a separate identifier space and to being able to make each IPv6 address an identifier. Hard to say which way we should go here.

Finally, we could use a completely separate 128 bit address space
Well, I argued in favor of having different kinds of identifiers so non-IPv6 128 bit identifiers would be one type. However, adopting these has the downside that you must always implicitly or explicitly know whether you're talking about an identifier or a locator, and since current implementations don't know about this that's going to be hard. Having the option of looking at an address or looking up an address and then see if it's a locator, an identifier or possibly both makes things easier.

In another message you write:

to my understanding multiple of the above solutions are based on the
loc/id separation

That is:
- mobility
- HIP
- address agile transports
- loc/id

Are solutions based on the separation of loc/id roles. I mean all of
them use a fixed identifier for application layer and multiple locators
for routing (in this case in the end -hosts)
Careful here: not everything that uses more than one address separates the locator and identifier functions. Address agile transports simply use multiple addresses that overload the loc+id functions the same way single addresses do in TCP and UDP. MIP uses the loc+id for the home address and just the loc for the care of address. But I'd prefer to not categorize MIP as a loc/id variant because it doesn't really address this issue (as far as I know, that draft is REALLY long).

By the way, does anyone know if MIPv6 and routing optimization are supported widely yet? I seem to remember this was "mandatory" but as far as I can tell the stuff I work with doesn't support this or at least doesn't say it supports it.

HIP may in fact incorporate a locator/identifier separation but it does so much more and is by its nature not suitable as a general multihoming solution so I don't want to count it as loc/id either.

A really good approach to this issue is JNC's Endpoint and endpoint
names (can be found http://users.exis.net/~jnc/tech/endpoints.txt) for
those few of you who has not read it yet :-)
Yes, this is good stuff. The NSRG report was interesting too but a few too many open doors. Great the way they start the security considerations section on page 2, though. :-)

One comment on the endpoint thing: this brings up the interesting question whether we care about the nature of the item being identified by an identifier. Does it matter whether an identifier points to a host, a process, a service or an interface? Those have different properties, but each may act as an endpoint at some point in time.