Paul Koning wrote:
Paul Koning wrote:
...
The way this works is that there are two multicast addresses used on
Ethernet segments. (Well, three later on, a separate one for all L2
routers.) One is "all routers", one is "all endnodes". Routers
listen
to the first, endnodes to the second. Hellos are sent to "all
routers"
so ONLY routers hear hellos. Both endnodes and routers send hellos
(different types). So routers build a list of all the nodes on each
interface. The routers on an Ethernet pick one to be the designated
router, and only that router sends a hello to "all endnodes".
That's
how endnodes know the DR.
Not really.
end-nodes send endnode-hello messages to ab:00:00:03:00:00
l1 routers send router-hello messages to ab:00:00:03:00:00
l2 routers send router-hello messages to ab:00:00:03:00:00,
ab:00:00:04:00:00 and 09:00:2b:02:00:00 (exactly which of these last
two
addresses are sent to seems to differ from node to node, and I haven't
figured out exactly how yet).
That fits what I said. Ab:00:00:03:00:00 is "all routers". So the
hellos sent to that address are received by routers but not by endnodes.
Ab:00:00:04:00:00 is "all endnodes". The hello that goes to that
address is from the designated router. In your example I guess that was
an L2 router but that's just a coincidence. And there will only be one
router (L1 or L2) sending to that address, the designated router.
Ah. I was sampling from a too short time. Eventually I received a router hello message on
ab:00:00:04:00:00 from an L1 router as well.
Ok. I was making the wrong assumptions because of this. Now you made me read the spec
instead, which was good. Thanks. :-)
09:00:2b:02:00:00 was a later addition. It's not in the routing 2.0.0
spec, it would be in the 2.1.0 spec if we could find one. That would be
the "all L2 routers" address. The idea for adding that address was to
allow L2 routing messages to be sent to that address instead of the "all
routers" address, so L2 route updates would not bother L1 routers.
Makes sense.
...
So, obviously, routers and endnodes both send, and listen to the same
messages.
No, you're making an incorrect assumption. The multicast addresses you
send to, and the ones you listen to, are not necessarily the same. In
IP, yes (ARPs go to broadcast and everyone listens to that). Not so in
DECnet. End nodes listen to all-endnodes and send to all-routers.
Routers listen to all-routers and send to all-routers and (if DR) to
all-endnodes.
Yes. I made the wrong assumption. Looked at too little data.
DECnet very deliberately used multicast rather than broadcast because
control packets are of interest only to some of the nodes, so by using a
specific multicast address, you can enable that if you need to hear the
traffic and disable it if you don't.
Which is a good thing.
In fact, it's clear that the existence of broadcast is a design error
(and so is the fact that ARP uses it). Broadcast is defined as "traffic
that everyone wants to hear" and there IS no such traffic. For example,
you don't want to hear ARPs unless you speak IP, so clearly those should
have used an "All IP nodes" multicast address.
Yep. Not to mention some protocols designed be people using PC machines running DOS...
Johnny