IPv6 solicited-node multicast somtimes seems to confuse those new to IPv6 in the beginning. I think this is because it seems so foreign and new. In this post, we will explore exactly what IPv6's solicited-node multicast is and the rules of creating such an address as told to us by RFC 4291.
However, before we start on what's new and different, let's look at what solicited-node multicast has in common with IPv4 and IPv6 constructs that we already know.
In this blog post, we looked at IPv6 link-local scope multicast addresses. One of the examples was FF02::A. This address is for all devices on a wire that want to "talk" EIGRP with one another.
Focusing specifically on FF02::A and how routers join it, we can see and say three things:
- Local: FF02::A is local to the wire.
- Join: Each device "joins" FF02::A by just "deciding to listen" to the IPv6 link-local scope multicast address FF02::A. Then, by extension, it listens to the corresponding MAC address for that multicast IPv6 address (33:33:00:00:00:0A).
- Common interest: As we can see, these varying groups have something in common that they would all like to hear about. For FF02::A, the common interest -- the "connection" among the devices joining that group -- is that they all want to listen to or participate in EIGRP.
Guess what? Solicited-node multicast has all those things, too.
- Solicited-node multicast is also local to the wire.
- Each device joins a solicited-node multicast group address by just "deciding to listen" to the IPv6 solicited-node multicast address and then to the corresponding MAC address for that multicast IPv6 group.
- Devices that join a specific solicited-node multicast address share a common interest
Let's do these introductions properly. As RFC 4291 section 2.7.1 states:
Solicited-node multicast address are computed as a function of a node's unicast and anycast addresses. A solicited-node multicast address is formed by taking the low-order 24 bits of an address (unicast or anycast) and appending those bits to the prefix FF02:0:0:0:0:1:FF00::/104 resulting in a multicast address in the range
For example, the solicited-node multicast address corresponding to the IPv6 address 4037::01:800:200E:8C6C is FF02::1:FF0E:8C6C. IPv6 addresses that differ only in the high-order bits (e.g., due to multiple high-order prefixes associated with different aggregations) will map to the same solicited-node address, thereby reducing the number of multicast addresses a node must join.
A node is required to compute and join (on the appropriate interface) the associated solicited-node multicast addresses for all unicast and anycast addresses that have been configured for the node's interfaces (manually or automatically).
So, what did we just read? Let's break this down. Here's RouterA with one IPv6 address.
As we can see, RouterA has one IPv6 unicast address defined, link-local FE80::1. According to what we read above from RFC, 4291 RouterA is "required to compute and join" on interface gig1/0/1 "the associated solicited-node multicast address."
So we must compute first and then join.
"A solicited-node multicast address is formed by taking the low-order 24 bits of an address (unicast or anycast) and appending those bits to the prefix FF02:0:0:0:0:1:FF00::/104 resulting in a multicast address."
The compute is two steps -- simple enough.
- Low-order 24 bits for the IPv6 link-local unicast address FE80::1 is ::1. That was easy.
- Append::1 to FF02:0:0:0:0:1:FF00::/104, and we get FF02:0:0:0:0:1:FF00:1 or FF02::1:FF00:1.
RouterA is now supposed to "join" this IPv6 solicited-node multicast group (FF02::1:FF00:1) on the corresponding interface gig1/0/1. As we can see below, RouterA does join the associated IPv6 solicited-node multicast group (FF02::1:FF00:1) for IPv6 unicast address FE80::1.
As we can see, RouterA now has 2 IPv6 unicast addresses:
- IPv6 link-local address FE80::1
- IPv6 global address 2001:DB8::AB:1
Remember that, according to what we read above from RFC 4291, RouterA is "required to compute and join" on interface gig1/0/1 "the associated solicited-node multicast addresses for all unicast and anycast addresses that have been configured."
Since RouterA has already computed and joined the associated IPv6 solicited-node multicast group (FF02::1:FF00:1) for IPv6 unicast address FE80::1, we just have to compute and join for the newly added IPv6 global unicast address, 2001:DB8::AB:1.
So we must compute first and then join.
- Low-order 24 bits for the IPv6 link-local unicast address 2001:DB8::AB:1 is ::AB:1.
- Append::AB:1 to FF02:0:0:0:0:1:FF00::/104, and we get FF02:0:0:0:0:1:FFAB:1 or FF02::1:FFAB:1.
RouterA is now supposed to join this IPv6 solicited-node multicast group (FF02::1:FFAB:1) on the corresponding interface gig1/0/1. As we can see below, RouterA has now joined both IPv6 solicited-node multicast addresses.
Of course, an obvious question here is why we need a device to compute and join the IPv6 solicited-node multicast address for each and every IPv6 unicast and anycast on an interface? Simply put, it is the basis for Neighbor Discovery (RFC 4861).
In my next post, we will revisit RouterA and RouterB and see an example of how a solicited-node multicast address is used.
We welcome your comments on this topic on our social media channels, or [contact us directly] with questions about the site.
IPv6 multicast communication is similar to IPv4 multicast communication. IPv6 devices can join and listen for multicast traffic on an IPv6 multicast address. A IPv6 multicast address identifies multiple interfaces. In IPv6 multicast type of communication, IPv6 datagram packets addressed to an IPv6 multicast address are delivered to all interfaces that are identified by the address.
IPv6 devices can join or leave a multicast group at any time and IPv6 nodes can join and listen to multiple IPv6 multicast addresses at the same time.
Following image shows the IPv6 multicast address format.
• For IPv6 multicast addresses, the first eight bits are reserved as 1111 1111. Thus, the prefix of an IPv6 multicast address is ff00::/8. Similar to IPv6 Link Local addresses, it is easy to identify an IPv6 multicast address, because IPv6 multicast addresses have left most hexadecimal digits as "FF"
• After the leftmost 8 bits which are reserved as "1111 1111", the next four bits are known as flags. Only 3 of the 4 flag bits in the flags field are defined currently. The most significant bit in the 4 bits flags field is reserved for future use. The remaining three flags are known as R, P and T.
|4 Bits inside flags field||Flag name||When "0" set||When "1" set|
|0 (Most Significant Bit)||Currently not in use||Currently not in use||Currently not in use|
|1||R (Rendezvous)||When R flag set to 0, the multicast rendezvous point is not embedded with multicast address||When R flag set to 1, the multicast rendezvous point is embedded with multicast address|
|2||P (Prefix)||When P flag set to 0, the multicast address is not based on network prefix||When P flag set to 1, the multicast address based on network prefix|
|3 (Least Significant Bit)||T (Transient)|| When T flag set to 0, the multicast address is a permanently assigned (well-known) multicast IPv6 address||When T flag set to 1, the multicast address is a transient (Dynamically assigned) multicast address|
• After the leftmost 8 bits which are reserved as "1111 1111", and the next four flag bits, the next four bits are defined as the Scope bits. Scope bits (4 bits) are used to indicate the scope of delivery of IPv6 multicast traffic.
The following table lists the values possible currently for the scope field.
|0||Reserved||Currently not in use|
|1||Interface-local scope||The Interface-local scope is limited for a local single interface only. Useful only for loopback delivery of multicasts within a node.|
|2||Link-local scope||Link-local scope is defined for the local link. The traffic with the multicast address of FF02::2 is limited to local link scope. An IPv6 router will never forward the multicast traffic destined to FF02::2 beyond the local link.|
|3||Subnet-local scope||Subnet-local scope ranges subnets on multiple links.|
|4||Admin-local scope||Administratively configured scope. Definition states that "the smallest scope that must be administratively configured".|
|5||Site-local scope||The scope of Site-local multicast addresses are within the local physical network. For example, a small branch office. Site-local Multicast packets will not cross the IPv6 border router at the site.|
|8||Organization-local scope||The scope of Organization-local addresses are within different sites inside an organization. Organization-Local Multicast packets will not cross the organization's IPv6 border router to reach the IPv6 iInternet|
|E||Global scope||Scope is the Global IPv6 internet|
|F||Reserved||Currently not in use|
• The next 112 bits Group ID is used to identify the multicast group within the given scope (either permanent or transient).
Most important Link-local scope IPv6 multicast addresses are listed below.
|Important IPv6 Link-local scope Multicast Addresses||Description|
|FF02::1||All Nodes IPv6 multicast address. All IPv6 nodes in same link will listen to FF02::1 IPv6 multicast address.|
|FF02::2||All Routers IPv6 multicast address. All IPv6 routers on the same link will listen to FF02::2 IPv6 multicast address.|
|FF02::4||The all-Distance Vector Multicast Routing Protocol (DVMRP) routers address. Used to reach all DVMRP multicast routers on the same link.|
|FF02::5||OSPF IPv6 multicast address. (Remember, in IPv4, OSPF multicast address was 220.127.116.11)|
|FF02::6||OSPFv3 Designated Router's and Non-Designated Router's IPv6 multicast address. (Remember, in IPv4, OSPF Designated Router's (DR) and Non-Designated Router's (NDR) multicast address was 18.104.22.168). Only DR and BDR listen to FF02::6 multicast IPv6 address.|
|FF02::9||RIPng IPv6 multicast address. (Remember, in IPv4, RIPv2 multicast address was 22.214.171.124)|
|FF02::A||EIGRP IPv6 multicast address. (Remember in IPv4, EIGRP multicast address was 126.96.36.199. A is the hexadecimal equivalant of decimal 10)|
|FF02::D||All PIM Routers|
|FF02::16||All MLDv2-capable routers|
|FF02::1:2||DHCPv6 Servers and DHCPv6 Relay Agents|
|FF02::1:FF00:0000/104||Solicited-Node IPv6 Multicast address|