With IPv4, a big multicast problem was how to get a globally unique multicast address. That is because there are relatively few IPv4 multicast addresses based on the size of IPv4 addresses. With IPv4, there is a range of IPv4 multicast addresses set aside for globally-unique allocation, and they are based on a 16-bit AS number, meaning you can uniquely have 256 multicast addresses for your AS. This, of course, falls apart based on the new 32-bit AS numbers.
IPv6 has a much, much larger address space. To solve the globally-unique multicast address problem, if you own a globally-unique unicast prefix, then you automatically own globally-unique multicast addresses based on your globally-unique IPv6 prefix.
Setting the p
flag to 1
and including your globally-unique prefix length and prefix gives you at least 4,294,967,296
(based on a /64
prefix) different, globally-unique IPv6 multicast addresses. You have 65,536
times that many globally-unique IPv6 multicast addresses with a /48
prefix. Many companies get assigned even shorter prefixes with many more globally-unique IPv6 multicast addresses.
Because you cannot use multicast on the public Internet, you may ask why do you need globally-unique multicast addresses. The answer is that companies connect to each other all the time, either direct connections or through tunnels. This has caused some problems with IPv4. For example, companies often use the same IPv4 Private addresses, and that forces them to use NAT to be able to directly communicate, and that is far less than ideal. IPv6 solved that problem with ULA that gives each company a set of local addresses that have a high probability of being unique. If the companies need to use multicast between them, then the IPv4 globally unique multicast was rather limiting with only 256 different multicast addresses. IPv6 multicast solves that problem.