Paul Koning wrote:
...
Level 1 routers knows where all machines in the same area are located,
and knows the most efficient way to any node within the same area.
However, it only keeps track of the closest area router, and knows
nothing about any other area.
Area routers work just like level 1 routers, but they also have an
area
routing table, so they know the most efficient path to an area router
for any area.
So, an end node only knows what machines are on the same segment, and
which is the closest level 1 router. Level 1 routers knows where all
machines are in the same area, and knows where the closest area router
is.
Area routers knows where every machine is on the local area, and also
where all area routers are.
Right... except for end nodes. Those know what *routers* exist on the
same segment. End nodes don't know (directly) about other end nodes.
To make that case efficient, end nodes have a "previous hop cache".
Whenever an end node hears from another node, it remembers the previous
hop (the last router on the path) and sends future traffic for that
destination to that router. This way it can pick any router for the
initial packets but will quickly move to the optimal one. It also
tracks directly connected endnodes in that cache, because a router that
forwards a packet onto the same segment as it arrived will leave the
"intra-Ethernet" bit in the header set, which tells the endnode that
destination is directly reachable.
The 2.0.0 (phase IV) routing spec talks about the "on Ethernet" cache
instead, and describes it in a way that makes it help only for directly
attached nodes. The "previous hop" flavor was a generalization in, I
think, 2.1.0 (Phase IV+).
Hmm, yuck. Now I'll have to try to remember some details, as well as extrapolating
some stuff.
No, as far as I can remember, the end-nodes will only remember (or know) of one level 1
router. It will pick the one with the highest priority in case there are more than one on
the local segment. That will become the designated router, and will be used for all
traffic I believe.
End-nodes will, however, just snoop hello-messages, and know about other nodes that are on
the same ethernet segment (I'm not sure if this generalizes to other mediums than
ethernet, I think the manuals only talked about ethernet). So, you can actually have an
ethernet segment with only end-nodes, and communication will actually work anyway. Even
though if you look at adjacent nodes with NCP, you'll not see any. That's the
ethernet cache unless I read things wrong here, btw.
What I find "horrible" about this is that end-nodes will (atleast in VMS) will
actually happily even talk with machines in another area, if they happen to be sitting on
the same ethernet segment (this has bitten me with my bridge and HECnet).
Now, this means that a machine that sits in one area will not
neccesarily take the shortest path to a machine in another area. In
fact, it will not neccesarily take the shortest path even to another
machine in the same area. But that's another story. :-)
??? It certainly will, where "shortest" is defined as "least path
*cost*", not necessarily fewest hops.
Sorry. Yes, you are right. I should have been more careful with my words. It was the path
cost I was thinking of. I should have said cheapest, not shortest.
Anyway, the comment is that the path might not be optimal. End nodes pick the level 1
router with the highest priority. If you have two level 1 routers, the one you didn't
communicate with might have been more optimal, but you'll never know. And the same is
true for area routers.
Johnny
Show replies by date