Tony Hain wrote:
Margaret Wasserman wrote:
Of course, in the case of site-local addresses, you don't
know for sure that you reached the _correct_ peer, unless you
know for sure that the node you want to reach is in your
site.
Since the address block is ambiguous, routing will assure that if you
reach a node it is the correct one.
That's backwards: Since the address block is ambiguous, routing *cannot*
assure that if you reach a node it is the correct one. Nobody can,
because we equate addresses with identities.
Consider a peer-to-peer conferencing session, with three participants
A, B, and C. A and B are at the same site; C is at a separate site;
both sites use the same range of site-local addresses. Each has two
addresses, AG, BG, CG and AL, BL, CL (Global and Local). A initiates
the session by connecting to B and C (assume for the moment that this is
not a problem). B and C provide A with their addresses; to complete the
mesh, A tells B to connect to C at CG or CL. Now, B isn't going to
connect to *both*, so it'll have some heuristic to pick one. Suppose it
picks CL (*). But, whoops, B's site has some host D, with DL==CL. So B
winds up connecting to the wrong host, and doesn't realize it.
(*) Not an unreasonable supposition. If the app is looking at the
addresses, it might well notice that CL is on a locally attached subnet,
and use that. Or the app might connect to both in parallel
(non-blocking connect()), and use the address it reaches first, as a
first cut at discovering the most efficient path (that's what I did when
I implemented this some time back). Being on the same network, D will
probably respond before C.
--
/============================================================\
|John Stracke |jstracke(_at_)centive(_dot_)com |
|Principal Engineer|http://www.centive.com |
|Centive |My opinions are my own. |
|============================================================|
|"God does not play games with His loyal servants." "Whoo-ee,|
|where have you *been*?" --_Good Omens_ |
\============================================================/