IPv6 multicast address for all nodes on network

ipv6multicast

I've got a basic network with 3 nodes (VM's).

One node publishes an event, the other nodes listen for it and print something when received. It used to work one-on-one (so node gives event to each other node seperately), but I'd like to implement multicasting.

As a quick experiment, I want to do a basic 'broadcast' on the network, but I've been unable to figure out the correct IPv6 address. Using the IPv4 broadcast address works, both nodes print something then So the address of node 1 is: inet addr:192.168.56.101 Bcast:192.168.56.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fef7:30a7/64 Scope:Link

Node 2: inet addr:192.168.56.102 Bcast:192.168.56.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe56:a2f7/64 Scope:Link

Node 3: inet addr:192.168.56.103 Bcast:192.168.56.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe82:ae4a/64 Scope:Link

So IPv6 doesn't have broadcast and instead uses multicast. These multicast addresses always start with ff. Then you've got the flag, which is 0 by default for assigned mlc and 1 for transient. And then the scope. Wanting to do a basic broadcast equivalent, I tried ff01::1 which should reach all nodes and ff01::2 for all routers. But that doesn't work. I've also tried ff02, ff05 and ff0e. I'm misunderstanding something here, what is the correct multicast/broadcast ipv6 address to reach node 2 and node 3 when node 1 publishes an event?

EDIT:

After some experimentation, I've discovered I can't even ping the inet6 addresses, but I can the ipv4 addresses! Any clue whats going on?

Best Answer

The right address to multicast to all nodes on a link is ff02::1%<interface>. You probably forgot the interface ID, which is required for link-scoped addresses.

For example:

# ping6 ff02::1%br0
PING ff02::1%br0(ff02::1) 56 data bytes
64 bytes from fe80::6e62:6dff:fed1:dfad: icmp_seq=1 ttl=64 time=0.052 ms
64 bytes from fe80::5054:ff:fede:b69c: icmp_seq=1 ttl=64 time=0.455 ms (DUP!)
64 bytes from fe80::5054:ff:fe90:de19: icmp_seq=1 ttl=64 time=0.650 ms (DUP!)
64 bytes from fe80::6e62:6dff:fed1:dfad: icmp_seq=2 ttl=64 time=0.046 ms
64 bytes from fe80::5054:ff:fe90:de19: icmp_seq=2 ttl=64 time=0.203 ms (DUP!)
64 bytes from fe80::5054:ff:fede:b69c: icmp_seq=2 ttl=64 time=0.241 ms (DUP!)
64 bytes from fe80::6e62:6dff:fed1:dfad: icmp_seq=3 ttl=64 time=0.064 ms
64 bytes from fe80::5054:ff:fe90:de19: icmp_seq=3 ttl=64 time=0.237 ms (DUP!)
64 bytes from fe80::5054:ff:fede:b69c: icmp_seq=3 ttl=64 time=0.254 ms (DUP!)
^C
--- ff02::1%br0 ping statistics ---
3 packets transmitted, 3 received, +6 duplicates, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.046/0.244/0.650/0.189 ms

Addresses in ff01::/16 are for interface-local multicast, which is only really useful to multicast to the local host.

References: RFC 4291

Related Question