In IPv4, multicast support is optional. In IPv6, multicast support is required. This section provides an overview of IPv6 multicast concepts.
In addition to unicast and anycast support, IPv6 also provides a mechanism to send and receive IPv6 multicast traffic. IPv6 multicast traffic is sent to a single destination address but is received and processed by multiple IPv6 hosts, regardless of their location on the network. Hosts listen to a specific IPv6 multicast address and receive all packets to that address. Multicast is more efficient than IPv6 unicast for one-to-many delivery of data. Instead of having multiple unicast packets sent, only one packet is sent.
The additional elements of IPv6 multicast include the following:
IPv6 multicast addresses are defined by the FP 1111 1111 (0xFF) and can have different scopes. For more information about IPv6 multicast addresses, see Chapter 3, "IPv6 Addressing."
In an IPv6 multicast-enabled network, any host can send multicast traffic to any multicast address, and any host can receive multicast traffic from any multicast address regardless of their location. To facilitate this capability, the hosts and routers of the network must support multicast traffic.
For a host to send IPv6 multicast packets, it must:
The IPv6 multicast address can be hard-coded by the application or obtained through a mechanism that allocates a unique multicast address.
The sending host must construct an IPv6 packet containing the destination IPv6 multicast address and place it on the medium. In the case of Ethernet and FDDI, the destination MAC address is created from the IPv6 multicast address as described in Chapter 3, "IPv6 Addressing."
For a host to receive IPv6 multicast packets, it must:
To determine the IPv6 multicast address to use, the application must first determine whether to create a multicast group or use an existing multicast group. To join an existing group, the application can use a hard-coded multicast address or an address derived from a universal resource locator (URL) string.
After the multicast address is determined, an application must inform IPv6 to receive multicast packets for a specified multicast address. For example, the application can use Windows Sockets functions to notify IPv6 of the multicast groups joined. If multiple applications use the same IPv6 multicast address, then IPv6 must pass a copy of the multicast packet to each application. IPv6 must track which applications use which multicast addresses, as applications join or leave multicast groups. Additionally, for a multihomed host, IPv6 must track the application membership of multicast groups for each interface.
If the network technology supports hardware-based multicasting, then the network adapter is instructed to pass up packets for a specific multicast address. In the case of shared access technologies such as Ethernet and FDDI, IPv6 instructs the network adapter to listen for and pass to higher protocol layers all frames with a multicast MAC address corresponding to the IPv6 multicast address. The IPv6 protocol included in Windows XP and the Windows .NET Server 2003 family uses an NdisRequest( ) function to instruct the network adapter to listen for and pass to higher protocol layers all frames with a specific multicast destination MAC address.
The host must inform local subnet routers that it is listening for multicast traffic at a specific multicast address. The protocol that registers multicast group information for IPv6 is MLD. The host sends an MLD Multicast Listener Report message to register membership in a specific multicast group. All multicast group membership is reported, except for the multicast group for the link-local scope all-nodes multicast address (FF02::1).
Even though an IPv6 multicast router would never forward traffic destined to a link-local scope multicast address beyond the local link, multicast group membership for link-local scope multicast addresses is still reported. This is done so that multicast-aware Layer 2 switches and bridges can properly forward IPv6 link-local multicast traffic to nodes on different LAN segments of a link.
To forward IPv6 multicast packets to only those subnets for which there are group members, an IPv6 multicast router must be able to:
For shared access technologies, such as Ethernet and FDDI, the normal listening mode for network adapters is unicast listening mode. The listening mode is the way that the network adapter analyzes the destination MAC address of incoming frames to decide to process them further. In unicast listening mode, the only frames that are considered for further processing are in a table of interesting destination MAC addresses on the network adapter. Typically, the only interesting addresses are the MAC-level broadcast address (0xFF-FF-FF-FF-FF-FF) and the unicast address of the adapter. The unicast address is also known as the MAC, physical, or hardware address.
However, for an IPv6 multicast router to receive all multicast traffic on a subnet, it must place the network adapter connected to the subnet in a special listening mode called multicast promiscuous mode. When an adapter is placed in multicast promiscuous mode, it analyzes the IEEE-defined I/G bit to determine whether the frame requires further processing. For more information on the I/G bit in IEEE 802 addresses, see Chapter 3, "IPv6 Addressing."
The values of the I/G bit are the following:
When the network adapter is placed in multicast promiscuous listening mode, any frames with the I/G bit set to 1 are passed to higher protocol layers for further processing.
Multicast promiscuous mode is different than promiscuous mode. In promiscuous mode, all frames—regardless of the destination MAC address—are passed to higher protocol layers for processing. Promiscuous mode is used by protocol analyzers, also known as network sniffers, such as the full version of Microsoft Network Monitor that is part of the Microsoft Systems Management Server.
Most network adapters support multicast promiscuous mode. A network adapter that supports promiscuous mode might not support multicast promiscuous mode. Consult your network adapter documentation or manufacturer for information about whether your network adapter supports multicast promiscuous mode. Network adapters of hosts are typically not placed in multicast promiscuous mode.
The ability to forward IPv6 multicast packets is a router capability. When multicast forwarding is enabled, IPv6 multicast packets that have a scope larger than link-local are analyzed to determine over which interfaces the packet is to be forwarded. The analysis is done by comparing the source address and destination multicast address to entries in an IPv6 multicast forwarding table. Upon receipt of an IPv6 multicast packet that has a scope larger than link-local, the Hop Limit field in the IPv6 header is decremented by 1. If the hop limit is less than 1 after decrementing, the multicast packet is silently discarded. If the hop limit is greater than 0 after decrementing, the multicast forwarding table is checked. If an entry in the multicast forwarding table is found that matches the destination IPv6 multicast address, the IPv6 multicast packet is forwarded with its new hop limit over the appropriate interfaces.
The multicast forwarding process does not distinguish between hosts on locally attached subnets who are receiving multicast traffic or hosts on a subnet that is downstream from the locally attached subnet across another router. In other words, a multicast router might forward a multicast packet on a subnet for which there are no hosts listening. The multicast packet is forwarded because another router on that subnet indicated that a host in its direction is receiving the multicast traffic.
The multicast forwarding table does not record each multicast group member or the number of multicast group members. It records only that there is at least one multicast group member for a specific multicast address.
The IPv6 protocol included in Windows XP and the Windows .NET Server 2003 family does not support IPv6 multicast forwarding.
Multicast routers receive MLD Multicast Listener Report messages from all hosts on all locally attached subnets. This information is used to track multicast group membership by placing entries in the multicast forwarding table. Because multicast routers have placed their network adapters in multicast promiscuous mode, they receive all MLD Multicast Listener Report messages sent to any multicast address.
To improve the leave latency, which is the time between when the last host on a subnet has left the group and when no more multicast traffic for that group is forwarded to that subnet, an IPv6 host that might be the last member of a group on a subnet sends an MLD Multicast Listener Done message. After sending multicast-address-specific queries to the group reported in the MLD Multicast Listener Done message and receiving no response, the IPv6 router can determine that there are no more group members on that subnet.
To compensate for the loss of MLD Multicast Listener Report and Multicast Listener Done messages, IPv6 multicast routers periodically send MLD Multicast Listener Query messages on the local subnet. A host that is still a member of a multicast group might respond to the query with an MLD Multicast Listener Report message. To keep multiple hosts on a particular subnet from sending MLD Multicast Listener Report messages for the same group, a random response timer is used on the hosts to delay the transmission of the MLD Multicast Listener Report message. If another host sends the message on that subnet before the response timer expires, a message is not sent by the other hosts on that subnet.
To create multicast-enabled IPv6 networks containing more than one router, multicast routers must communicate group membership information to each other so group members can receive IPv6 multicast traffic regardless of their location on the IPv6 network.
Multicast routers exchange host membership information by using a multicast routing protocol such as the Protocol Independent Multicast (PIM) protocol. Group membership is communicated either explicitly, by exchanging multicast address and subnet information, or implicitly, by informing upstream routers that no group members exist downstream from the source of the multicast traffic.
The goals of a multicast routing protocol include the following:
Multicast routing is more complex than unicast routing. With unicast routing, unicast traffic is forwarded to a unique destination. Unicast routes can summarize ranges of unique destinations. Unicast routes in the network are comparatively consistent and need to be updated only when the topology of the IPv6 network changes.
With multicast routing, multicast traffic is forwarded to an ambiguous group destination. Multicast addresses represent individual multicast groups, and in general, cannot be summarized in the multicast forwarding table. The location of group members is not consistent, and the multicast forwarding tables of multicast routers might need to be updated whenever a multicast group member joins or leaves a multicast group.
Just as unicast routing protocols update the unicast IPv6 routing table, multicast routing protocols update the IPv6 multicast forwarding table of a router.