>> "Nodes that need to join multicast groups SHOULD also implement either >> MLDv2 [RFC3810] or Lightweight MLDv2 [RFC5790]." > > Is there a short (less than one page) description of the difference > between RFCs 3810 and 5790? One that actually explains what the > implementation differences are?
To start listening a multicast session/channel, an MLDv2 host specifies either 1) multicast address or 2) source and multicast addresses. When the host specifies only multicast address, multicast packets sent from any source are forwarded to the host. This is ASM. When the host specifies source address(es) as well as multicast address, it MUST also specify the "filter mode", which is either INCLUDE or EXCLUDE. When the host wants to "receive" the multicast packets sent from the specified source(es), INCLUDE is chosen as the filter mode. When the host wants to "block" the multicast packets sent from the specified source(es), EXCLUDE is chosen as the filter mode. The former case, INCLUDE (S,G) join, is known as SSM. The latter case, noted by EXCLUDE (S,G) join, is not SSM, rather ASM with an additional function; to establish EXCLUDE (S,G) state, routers need to maintain ASM state, because the routers need to forward every source data to their downstreams "except" the excluded S. In fact, there are no major applications that require EXCLUDE (S,G) join/leave. It is only useful to filter out bogus sources in ASM communications, but if you want to block unwanted source, say Sx, you'd specify other sources to join the session such as INCLUDE ({S1,S2,S3},G) (without including Sx). According to such consideration, talking abour the host-side implementation, the LW-MLDv2 spec (5790) supports both ASM and SSM communications, but eliminates EXCLUDE (S,G) join/leave operations. In fact, implementing both INCLUDE and EXCLUDE mode operations requires complex state machine in kernel; therefore LW-MLDv2 gives the chance for simpler kernel implementation. This is very positive condition, and it is sure according to my experience of both IGMPv3 and LW-IGMPv3 host-side kernel implementations in NetBSD. (I also have implemented MLDv2 kernel but no LW-MLDv2.) IMO, it is hence advantageous especially for mobile terminals or tiny OSes. Of course, LW-MLDv2 supports interoerability with any MLD versions; it works either with MLDv1, MLDv2, or LW-MLDv2 routers. I hope this helps. Regards, -- Hitoshi Asaeda -------------------------------------------------------------------- IETF IPv6 working group mailing list ipv6@ietf.org Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6 --------------------------------------------------------------------