 RFC 4601 [49], but multicast routing protocols are not included in this book) to ensure that multicast packets related to multicast addresses that nodes listen to are delivered to the router, and furthermore on the link nodes are attached to. The major difference between MLD and Multicast Listener Discovery version 2 (MLDv2) is that the latter allows nodes to specify from which source addresses they want ('include mode'), or do not want ('exclude mode'), to receive multicast traffic. However, as the 'include' and 'exclude' are not that commonly used, a lightweight MLDv2 has been defined in RFC 5790 [50] that supports the most commonly needed feature subset of the full MLDv2. The MLD protocol makes use of three distinct messages. These messages are specified to work on top of ICMPv6 and are part of ICMPv6 message types as listed in Table 3.2. Introduction to IPv6 Multicast Listener Query: A router in a network uses this query to find out for which multicast addresses the link has listeners. This message is further split into general query and multicast-address-specific query, which allow querying of all addresses that nodes are listening and for specifically finding out if a link has listeners for a particular address. Multicast Listener Report: The nodes on a link utilize this report - both unsolicited and solicited as responses to queries - to indicate which multicast addresses they are listening. Multicast Listener Done: A node that ceases to listen to a multicast address issues this done to indicate it to a router. Once there are no listeners for an address on a link, the router can use the multicast routing protocol it uses to stop receiving multicast traffic destined for the multicast address. A node does not need to use MLD for joining 'All Nodes Multicast Address', as listening for that address is always mandatory. Multicast Addresses IPv6 multicast addresses are allocated by following the guidelines of RFC 3307 'Allocation Guidelines for IPv6 Multicast Addresses' [51]. Special purpose address blocks are 