Date: Tue, 3 Sep 2002 20:27:22 +0300
From: Markku Savela <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>
| ...and which totally bogus, as such switch cannot utilize the
| information in any significant way.
Huh???
Perhaps we can step back and look at what is going on here.
When we have a multicast address, it is being sent to perhaps multiple
(but usually not all) nodes on a link.
When we have a link implemented by a switch, it (often) learns what
addresses are on each port (by noting the source MAC addr) and only
sends packets to the ports where an address occurs.
Since nothing is ever sent from a multicast address, and since it can
live on multiple ports (unlike a unicast address) it wouldn't matter if
something was, the switch can't use that method to work out which ports
a packet to a multicast address should be sent to.
It then has two choices - either send the packet to everyone, which
turns it (almost) into a broadcast, which we're trying to get away
from, or create some new protocol by which nodes notify the switch of
the multicast addresses they want sent to them.
So, let's assume for now that the latter has been done, because we
don't want multicast packets sent everywhere (normally). Whenever a
node joins a multicast address, it engages in this link level protocol
so the switches can learn which multicast address goes where.
Now there's also the IP level multicast - the routers also (in general)
need to know which links multicast packets need to be sent to, so at the
IP level there's the MLD protocol by which a node informs a router that
packets for some (IP level) multicast address should be sent to it (or
really, just sent to the link where the node resides).
So, when a node joins a multicast address it needs to engage in the MLD
protocol to allow the routers to find out what is going on.
So, for every (general) multicast address, the node would have to run
two protocols, the link level one, and the IP level one, so all the right
devices know where multicast packets should get sent.
That's dumb - the two of them convey essntially the same information
(especially when viewed from the point of view of the relevant receiver,
with the other knowledge it has - the router knows which link by the
link the packet is received from, the switch knows which port by the port
the packet is received from). So, rather than use two protocols, the
switch and the router both just use the contents of one packet, and get
their information from that. You can call this a "layer violation"
if you like, but this isn't unusual, we do lots of "layer violations"
in the name of efficiency (I don't see you refusing to implement the
TCP pseudo-header for example, but that's a layer violation too...)
Now, in the special case of link local multicast, the router level (IP)
protocol isn't useful for anything - the routers know which link a link
level multicast belongs on (the link it is sent on, and nothing else),
so no IP level protocol is needed for this particular case. But the
link level protocol still is, and as the link level protocol is using
the same packet formats as the IP level protocol (the same exact content)
it still needs to get sent.
You can (if you want to) just consider this a link level protocol, with
a strange packet format - but it is required for the switches to be able
to do some kind of sane multicast filtering. And given that the
particular multicast packets are ones which usually should go nowhere,
it really is an advantage to have them filtered, rather than broadcast.
Just send the MLD packets, like the spec says.
kre
--------------------------------------------------------------------
IETF IPng Working Group Mailing List
IPng Home Page: http://playground.sun.com/ipng
FTP archive: ftp://playground.sun.com/pub/ipng
Direct all administrative requests to [EMAIL PROTECTED]
--------------------------------------------------------------------