Source-Specific Multicast for IP
Extracted elements (26)
IANA SSM address ranges (232.0.0.1-255 and FF3x::4000:0001-7FFF:FFFF) are reserved for services requiring a well-known SSM destination address. Outside this range, IANA SHALL NOT allocate SSM addresses to particular entities, preserving the ability for hosts to autonomously self-allocate from a large flat space.
Random rather than sequential SSM address allocation is required because the IP-to-MAC mapping on Ethernet does not include the source address. Sequential allocation would cause many channels to share the same link-layer multicast address, delivering traffic for one channel to unintended subscribers.
SSM eliminates the need for shared trees and Rendezvous Points (as used in PIM-SM for ASM), because the sender identity is always known. The router mechanisms for SSM are largely a subset of those used for ASM, reducing protocol complexity.
A host compliant with this document sends ONLY source-specific host reports for addresses in the SSM range. ASM-only hosts cannot reliably receive SSM channel traffic, and routers will not set up SSM forwarding state in response to ASM (*,G) join requests.
For IPv6 SSM, allocation should occur within FF3x::/96 but systems should treat all of FF3x::/32 as SSM addresses to maintain compatibility with possible future uses of the network prefix field where a non-zero prefix might be allowed.
A host that supports the SSM service model MUST implement the host portion of IGMPv3 (RFC 3376) for IPv4 and MLDv2 (RFC 3810) for IPv6, and MUST conform to the IGMPv3/MLDv2 behavior described in RFC 4604.
A router MUST treat ALL IANA-allocated SSM addresses with source-specific semantics to achieve the full benefit of SSM and comply with this specification.
A router that receives a non-source-specific (*,G) request for data in the SSM address range MUST NOT use the request to establish forwarding state and MUST NOT propagate the request to neighboring routers. A router MAY log an error.
A router that receives an IP datagram with a source-specific destination address MUST silently drop it unless a neighboring host or router has communicated a desire to receive packets from that specific source and destination.
A router that supports the SSM service model MUST implement the PIM-SSM subset of PIM-SM and MUST implement the router portion of IGMPv3 for IPv4 and MLDv2 for IPv6.
An incoming datagram destined to an SSM address MUST be delivered by the IP module to all sockets that have subscribed with matching source address, destination address, and arriving interface, and MUST NOT be delivered to other sockets.
Host operating systems SHOULD provide a way for a host to determine both the source and destination address to which a datagram was sent, to allow disambiguation when a socket is subscribed to multiple channels.
Routers MUST ignore non-source-specific host reports (e.g., IGMPv1, IGMPv2, or MLDv1) for SSM destination addresses. Failure to do so would violate the SSM service model promised to the sender.
The IP module MUST filter packets received from the link layer before delivering them to the socket layer, because on shared-medium networks (e.g., Ethernet) all packets to destination G are delivered to any host subscribed to any channel (S,G) regardless of S.
When allocating SSM addresses dynamically, a host or host operating system MUST NOT allocate sequentially starting at the first allowed address; random allocation is RECOMMENDED to avoid link-layer address collisions on shared-medium networks.
When the host knows the SSM address range, the host's operating system SHOULD return an error to an application that makes a non-source-specific request to receive multicast sent to an SSM destination address.
With PIM-SSM, the implementation MUST (at least) support the ability to use the unicast topology database to select a loop-free forwarding path for the explicit join from receiver toward source.
IPv4 SSM destination addresses occupy the 232/8 range (232.0.0.0 to 232.255.255.255). IPv6 SSM addresses use the prefix FF3x::/32, with practical allocation within FF3x::/96 due to the requirement that P=1, T=1, and plen=0.
Source-Specific Multicast (SSM) is identified by the (S,G) pair: a unicast source address S combined with an SSM destination address G. A datagram is delivered only to sockets that have specifically requested reception of datagrams from source S to address G.
The IP module interface is extended with Subscribe(socket, source-address, group-address, interface) and Unsubscribe(socket, source-address, group-address, interface) operations. These replace the ASM join/leave model for SSM channels.
IANA allocates IPv4 SSM addresses in the range 232.0.0.1 through 232.0.0.255, and IPv6 SSM addresses in FF3x::4000:0001 through FF3x::7FFF:FFFF, allocated according to IETF Consensus. 232.0.0.0 and FF3x::4000:0000 are reserved as null values and must not be allocated.
A host can mount a denial-of-service attack by requesting a large number of SSM subscriptions, creating router state, generating control traffic, and potentially attracting unwanted data traffic. Routers MAY limit subscription rates or total subscriptions per interface.
Administrative scoping should not be relied upon as a security measure for SSM. No administratively scoped address range is defined for IPv4 SSM, and for IPv6, scope boundaries are not consistently enforced by all deployed routers.
IPsec AH and ESP can be used to secure SSM traffic using a multicast-capable IPsec implementation. For legacy RFC 2401 IPsec, two senders using the same SSM destination address and SPI will collide in the SAD, potentially preventing simultaneous reception of IPsec-protected traffic from both sources.
SSM does not prevent source address spoofing; an attacker can forge a source address to inject packets onto a channel. Applications requiring strong authentication MUST NOT assume all packets on a channel were sent by the requested source without higher-layer authentication such as IPsec AH.
SSM routers SHOULD by default disallow source routing (both Loose and Strict, RFC 791) to an SSM destination address, as source routing combined with source address spoofing can allow an attacker to inject packets onto an SSM channel.