Subject: RE: site local addresses (was Re: Fw: Welcome to the InterNAT...)

From: "Christian Huitema" <[email-masked]>
Date: Thu, 27 Mar 2003 08:36:22 -0800

> This is so typical of the modern IETF -- 102 people were persuaded
> by handwaving arguments that "something bad might happen" if a new
> and useful technique were deployed, and they are being allowed to
> overwhelm the 20 who were willing to dig in and find and solve any
> real problems.

Well Matt, this may happen in various groups, but the IPv6 WG has been
actively debating this issue since Atlanta. I object to the
characterization of the discussion as an exchange of handwaves.

> How many of your 22 speakers had implementation and deployment
> experience to report?

From looking at the names, I would say at least 18. 

I suggest that this discussion resumes on the IPv6 mail list after the
minutes are published.

-- Christian Huitema

---

From: "J. Noel Chiappa" <[email-masked]>
Date: Thu, 27 Mar 2003 13:03:42 -0500

> From: "Louis A. Mamakos" <[email-masked]>

    > The Internet architecture never gave the end system some mechanism to
    > help it make this binding decision when trying to communicate with
    > non-local peers.
    > ...
    > There was no protocol to ask the network "which of address should I
    > use to talk to this remote end system?"

Ah, memory lane! I proposed a related mechanism - chosing the address to
use for a *destination* host with multiple addresses - at IETF #1! It used
an ICMP message with the list of potential destination addresses, sent to
any first-hop router.

Actually, I proposed adding three different mechanisms: the one to select
the best destination address, one to find routers (which we now have), and
one to debug routes (I wasn't clever enough to figure out the TTL trick
used by trace-route).

There is a reason why we don't have the third - and it's related to why
doing it for the case of multiple source addresses is something we don't
have either.

It seems easy enough to have such a mechanism for destination addresses in
a mono-metric routing architecture - you just send the list of potential
destination addresses to a first-hop router, which just says "which
destination is closer". Since by definition such a list can be ordered by
the metric, it's a no-brainer, right?

Wrong.

If you have multiple first-hop routers, depending on which of your
first-hop routers you pick, you may get back a different answer. You really
have to ask each of your potential first-hop routers "how far is it to
whichever of these destinations is the closest", and then compare the
answers you get back to find the shortest one.

However, if two routers are connected to two different AS's, that means in
that case that the answers you get back (particularly back in the EGP
days), are probably not directly comparable. Since most routers running BGP
now use a fairly complex set of rules (operating on fairly complex route
"descriptions") to select which route to prefer, it's not trivial to
compare what each router thinks is the "best".

As a theoretical aside, it gets even harder in any multi-metric routing
architecture (which I expect the Internet is not too far from having - it's
already appearing locally with things like QOSPF). I will leave why as an
exercise to the reader.

Selecting which *source* address to use to get to a given destination
address, in a host which has multiple real interfaces, is also potentially
tricky. You basically have to talk to the first-hop router on *each*
interface, give them the destination, and say "how far are you from that"?
Then you collate the answers you get back, and order them.

Again, the problem is that if the two interfaces are connected to two
different AS's, the answers you get back are likely not directly
comparable.

You can't say to one router "here are my addresses and the destination,
which is best", because that router doesn't know that the world looks like
from the other potential router.

So in many cases you wind up having to basically flip a coin.

Whether you'd get enough benefit from what's a fairly complex mechanism
(talk to multiple boxes, collate the responses you get back from them), one
which isn't always guaranteed to work, to make it worth it is probably the
reason this has never been done.

If we had a more unified routing architecture, this would be easier, but we
don't.

	Noel