On 28/02/2011, at 10:30 AM, Les Mikesell wrote:
On 2/27/11 12:50 PM, John R Pierce wrote:
On 02/27/11 9:16 AM, Les Mikesell wrote:
Is there any difference in efficiency in how well the NIC hardware filters the assigned addresses?
Yes, as mentioned below, the NIC is given a list of Ethernet MAC addresses. Some [old, cheap] cards had a very small filter list [occassionally just a single entry], so the NIC would have to pass up pretty much any multicast so the next-layer (IP) could decide if it was wanted or not. This shouldn't be an issue today, unless you're using very old or very cheap cards.
NIC's work in MAC addresses, not IP.
Sort-of. Most NICs know enough about IPv4 multicast to at least help filter unwanted addresses without bothering the CPU.
Not quite. NICs have a list of Ethernet multicast MAC addresses that it can be assigned to pass on up the stack. These Ethernet multicast MAC addresses are determined from the IPv6 or IPv4 multicast address, but this is a kernel/driver issue, the NIC still does't have to know anything about IP.
Although, there certainly are NICs which know about higher-level protocols (TCP-offload engine), but that's a separate issue.
Ethernet _switches_, on the other hand, really need to know enough about IPv4/6 multicast in order to figure out which switch ports it should forward multicast traffic to (otherwise it floods, and we end up with the same traffic flow as broadcast). In IPv4, the switch needs to implement what is commonly called IGMP snooping. IGMP being the IPv4 protocol client devices use for subscribing to multicast groups. In IPv6, IGMP is instead part of ICMPv6 called Multicast Listener Discovery (typically version 2), and the switch feature to look for is called MLD[v2] snooping.
Hope this helps to clear up any misunderstanding. Cameron