IPv6 has no broadcast. What does it use instead, and why is that better?
Show the answer
Say this first
Multicast. Anything that went to everyone in IPv4 goes to a specific group in IPv6: all nodes ff02::1,
all routers ff02::2, and for address resolution the solicited-node group of the target. The gain is that
a host's network card filters multicast in hardware, so only the few hosts that joined the group spend CPU
on the packet. An ARP broadcast interrupts every host in the VLAN.
Go deeper
What replaced each broadcast use
| IPv4 broadcast use | IPv6 replacement |
|---|---|
| ARP request | NS to the solicited-node group ff02::1:ffXX:XXXX |
| DHCP discover | DHCPv6 Solicit to ff02::1:2 |
| Router discovery | RS to ff02::2, RA to ff02::1 |
| Directed broadcast | gone |
The real saving
A solicited-node group is built from the last 24 bits of the address, so on a normal LAN only one or two
hosts are in each group. The NIC is told which multicast MACs (33:33:ff:xx:xx:xx) to accept and drops
the rest without bothering the operating system.
What does not change
A switch without MLD snooping still floods multicast to every port in the VLAN, the same way it floods a broadcast. The bandwidth on the wire is similar. The saving is in host CPU and in not waking up devices that do not care.
They will ask next
Is ff02::1 just broadcast under another name?
In reach, nearly. The difference is that very little uses it: periodic RAs and unsolicited NAs. A handy trick is
ping ff02::1%eth0on Linux, which makes every IPv6 node on the link answer, a quick way to see who is there.Did removing broadcast kill directed-broadcast attacks like Smurf?
Largely. There is no subnet broadcast to amplify, and RFC 4443 says nodes must not send ICMPv6 errors in reply to packets sent to multicast, with only a couple of exceptions (Packet Too Big and some Parameter Problem cases).
Traps
- Saying anycast replaced broadcast. Multicast did.
- Claiming IPv6 multicast saves bandwidth on every switch. Only with MLD snooping.