Currently I'm trying to learn (common) things about IPv6 and started with the address format and the address scopes. Finally I reached the multicast part where my problem with the definiton of the possible flags occured.
The RFC 3306 defines in section 4 the purpose of the p-bit flag (if set to 1) as follows:

P = 1 indicates a multicast address that is assigned based on the network prefix.

The problem is that I don't understand what this means and how it does affect the behaviour of the multicast.
Furthermore I don't understand what unicast network prefix is and what you could specify in the network prefix field.
Finally I'm not sure how the plen field works but this is maybe related to the previous described problem (Does a 40 as plen value mean that all 64 bits of the network prefix field are part of the network address? In this case the plen value would correspond to the CIDR notation)

1 Answer 1


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.

  • Because I'm really new to network engineering at all (only some basic knowledge about some common things), I must clarify two things: First of all does globally-unique unicast prefix mean the network part of an IPv6 address (so the first 64 bits)? And secondly (if the previous is correct) how do you calculate the amount of available addesses? Does a longer prefix not lead to more available multicast addresses? Or am I thinking of the wrong part to be embedded?
    – Daniel
    Nov 17, 2019 at 17:08
  • A mask or mask length (CIDR notation) tells you which part of an IP address is the network. The combination of network and mask length is called a prefix. IPv6 networks are normally a standard /64 (64 bits for the network, leaving 64 bits for the hosts). A shorter prefix means that you can have more /64 networks (/48 means that there are 65,536 /64 networks because 64 - 48 = 16 and 2^16 = 65,536). Globally-unique means that it is assigned by a global authority for the exclusive use of a company. Fewer network bits (shorter prefix) means more host bits, thus more host addresses.
    – Ron Maupin
    Nov 17, 2019 at 17:15
  • So if the ip address of my network is 2001:0db8:85a3::/48 how would a corresponding multicast would look like? Does the address would look like this ff3x:00yy:zzzz:zzzz:zzzz:zzzz:gggg:gggg where x means a valid scope, g a valid group id, y would correspond to 48 in hex (30) because the prefix has a 48 bit length and z to 2001:0db8:85a3 because this was the to me assigned prefix by e.g. my ISP? So the multicast would look like this: ff3x:0030:2001:0db8:85a3:0000:gggg:gggg
    – Daniel
    Nov 17, 2019 at 17:47
  • First, if you are assigned a /48 prefix, you would use IPv6 prefix delegation to assign /64 networks from the /48 prefix. You could use the /48 prefix for the multicast, but more likely use one or more of the /64 prefixes, unless you are sourcing the multicast from multiple networks, then you may want to use the /48 prefix, but you seem to have the general idea. In any case, you cannot multicast on the Internet, but you can use tunnels to multicast between sites across the Internet, or direct connections between companies.
    – Ron Maupin
    Nov 17, 2019 at 17:55
  • @DanielSimon, this really only applies if you need a globally-unique multicast address. You can always have other multicast addresses that you use that are not globally-unique.
    – Ron Maupin
    Nov 17, 2019 at 17:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.