SSM addresses are unicast prefix based address with prefix length field and prefix field set to 0. Therefore, SSM multicast addresses are derived from FF3x::/96 prefix.

As for SSM, there is no collision in IPv6 since the SSM range is well defined, and channels (S1,G) and (S2,G) are different (note that in IPv4, the SSM range is not entirely fixed, and a "Multicast Router Discovery SSM Range Option" has been defined, so an SSM address could possibly, by misconfiguration, collide with an ASM address). Therefore allocation of IPv6 SSM addresses is a purely local (host) problem. Obviously, there is a need for a per host mechanism (in the OS), to allocate automatically an SSM address (more or less similar to allocating TCP or UDP port numbers on the caller side). There is one constraint due to the mapping to multicast Ethernet addresses: the allocation should try to have an equal probability to select the last 32 bits. Random selection should be enough, since a collision at the Ethernet multicast address level is not very serious. This allocation procedure could have a similar API to RFC 2771 [RFC2771]. The OS has to remember which SSM addresses have been allocated, and probably for how long. This is because SSM may have to be advertised for a long time, and the application (source) (and the OS) may reboot many times during the life of the SSM channel.
