Unicast, anycast, multicast
IPv6 packets can be sent, depending on the intended purpose, in a variety of ways:
- unicast: used for 1-to-1 communication; it sends the packet to a specific node. (Certain unicast addresses within the IPv6 address space are reserved. See the previous post for details.)
- anycast: used for 1-to-1-of-many communication; it sends the packet to multiple nodes but only intended to the closest on its route.
- multicast: used for 1-to-many communication; it sends the packet to multiple nodes.
We’re not covering anycast in detail at this moment, but we can — do let us know if that’s something of interest to you!
IPv6 multicast works by nodes* joining multicast groups by sending Multicast Listener Discovery (MLD) report messages.
(*Little terminology from IETF: node is an interface enabled for IPv6. Router is any node that forwards IPv6 packets that are not expressly addressed to it. Host is any node that’s not a router.)
Multicast groups aren’t constrained by local or global (network) geography. Whether the host is on the local network or on the internet, as long as it’s signaling to join a multicast group, it can receive multicast packets sent to that group.
Any host can be a sender, whether it’s part of the multicast group or not. Only hosts part of the multicast group are receivers. Hosts can join or leave multicast groups dynamically at any time.
IPv6 multicast addresses: FF00::/8
All IPv6 multicast addresses share the prefix of FF00::/8.
- The first octet is FF (1111 1111). This way you can tell at a glance if an IPv6 address is intended for multicast or not.
- The second octet defines:
- the lifetime (0 for permanent multicast; 1 for temporary)
- and scope (1 for node, 2 for link, 5 for site, 8 for organization, and E for global scope).
The multicast address ends with the interface ID.
Well-known IPv6 multicast addresses
Many IPv6 multicast addresses are well-known to software implementing IPv6, to simplify common routing needs.
|ff02::5||all OSPF (Open Shortest Path First) routers|
|ff02::6||all OSPF DRs (OSPF Designated Routers)|
|ff02::9||all RIP (Routing Information Protocol) routers|
|ff02::a||all EIGRP (Enhanced Interior Gateway Routing Protocol) routers|
|ff02::d||all PIM (Protocol Independent Multicast) routers|
|ff02::f||UPNP (Universal Plug and Play) devices|
|ff02::11||all homenet nodes|
|ff02::12||VRRP (Virtual Router Redundancy Protocol)|
|ff02::16||all MLDv2-capable routers|
|ff02::1a||all RPL (Routing Protocol for Low-Power and Lossy Networks) routers (used in Internet of Things (IoT) devices)|
|ff02::fb||multicast DNS IPv6|
|ff02::101||network time (NTP)|
|ff02::1:2||all DHCP agents|
|ff02::1:3||LLMNR (Link-Local Multicast Name Resolution)|
|ff02:0:0:0:0:1:ff00::/104||solicited node address|
|ff02:0:0:0:0:1-2:ff00::/104||node information query|
|ff05::1:3||all DHCP server (site)|
|ff05::101||all NTP server (site)|
(Did we or did we not promise a veritable smorgasbord of acronyms?)
More IPv6 coming up!
Next time we’ll be taking a look at IPv4-IPv6 tunneling and the particularities of migrating from IPv4 to IPv6.
After that, we have one last post to cover the remaining sections on our cheat-sheet, including useful Linux commands.
As always, do let us know if there’s a particular part of IPv6 (whether covered in here or not) you’d like to know more about!