I run an ICMPv6 protocol and I have made a capture using wireshark.
In the capture I have some Multicast Listener Report Message v2. Some of the
has the source ip, the ipv6 link local address, but some of them has :: as the
source address? Please can you tell me why Multicast Listener Report Messages v2
with the :: source address are sent?
RFC 3810 section 5.2.13 explains this:
An MLDv2 Report MUST be sent with a valid IPv6 link-local source address, or the unspecified address (::), if the sending interface has not acquired a valid link-local address yet. Sending reports with the unspecified address is allowed to support the use of IP multicast in the Neighbor Discovery Protocol [RFC2461]. For stateless autoconfiguration, as defined in [RFC2462], a node is required to join several IPv6 multicast groups, in order to perform Duplicate Address Detection (DAD). Prior to DAD, the only address the reporting node has for the sending interface is a tentative one, which cannot be used for communication. Thus, the unspecified address must be used.
This is different behavior than MLDv1. RFC 3590 section 3 explains the rationale for the change in more depth.
In [RFC 2710], Section 3 requires that all MLD messages be sent with a valid link-local IPv6 source address. However, a node in the process of performing duplicate address detection for its link-local (LL) address will not have one available to use as a source address. For this reason, this document allows the unspecified address to be used as a source address for MLD messages being used during duplicate address detection.
The discrepancies in the rules defined in [RFC 2710] and [RFC 2462] has led to implementation issues. Several IPv6 implementations skip sending MLD Report messages during duplicate address detection because they have no valid link-local address. This leads to operational problems when a node is attached to switches that perform MLD snooping. In this scenario, duplicate address detection (DAD) will complete successfully and collisions can occur once the address is put into use because switches may not have forwarded the DAD messages to all nodes on the link as required. This document fixes this problem by specifying that MLD reports are to be sent using an unspecified source address prior to DAD being started in order to ensure that messages sent to LL multicast addresses (e.g., including MLD) are forwarded to all appropriate nodes as required.
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.