RFC 3569

An Overview of Source-Specific Multicast (SSM)

πŸ“… published July 2003, from ietf

RFC 3569: An Overview of Source-Specific Multicast (SSM) πŸ¦‹

Okay bestie, so this one is the RFC for Source-Specific Multicast (SSM), and it's giving overview πŸ’… It was written by S. Bhattacharyya, Ed. from Sprint and published in July 2003. Its category is Informational, which means it's a friendly intro doc and not a standard 🫢 It doesn't obsolete or update any other RFCs (nothing is listed in its title block). Its number is 3569 and the network working group is the Network Working Group 🌸


Status of this Memo ✨

This memo gives info to the Internet community. It doesn't specify an Internet standard of any kind. Distribution of this memo is unlimited πŸŽ€

Copyright (C) The Internet Society (2003). All Rights Reserved. 🌈

Abstract 🧚

So the purpose of this doc is to give you an overview of Source-Specific Multicast (SSM) and the stuff you'd run into when deploying it πŸ’– It talks about how the SSM service model tackles the challenges of inter-domain multicast deployment, the changes routing protocols and applications need in order to deploy SSM, and the interoperability issues with the current multicast service models πŸ”₯

1. Introduction ✨

Okay so this document gives an overview of the Source-Specific Multicast (SSM) service and how you deploy it using the PIM-SM and IGMP/MLD protocols πŸ’… The network layer service that SSM gives you is a "channel", and it's identified by an SSM destination IP address (G) plus a source IP address S. IANA has reserved an IPv4 address range for SSM, and IPv6 already has an SSM destination address range πŸ¦‹

A source S sends IP datagrams to an SSM destination address G. Receivers get those datagrams by subscribing to the channel (Source, Group), aka (S,G) 🫢 Channel subscription is supported by version 3 of IGMP for IPv4 and version 2 of MLD for IPv6. The interdomain tree that forwards IP multicast datagrams is rooted at the source S, and it's built using PIM Sparse Mode [9] 🌸

This doc is not meant to be a standard for Source-Specific Multicast (SSM). It's more like an intro for anyone who wants to deploy SSM services and wants to know why it's worth it πŸ’– It explains how SSM solves a bunch of the problems people hit when deploying inter-domain multicast. It also lays out the changes to protocols and applications, both at end-hosts and routers, that you need to support SSM, with pointers to the more detailed docs where that makes sense 🧚 Interoperability with the multicast service model defined in RFC 1112 is discussed too πŸ’œ

This memo is a product of the Source-Specific Multicast (SSM) Working Group of the Internet Engineering Task Force ✨

The keywords "MUST"", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as defined in BCP 14, RFC 2119 [28] πŸ”₯

2. Terminology πŸŽ€

This section defines some terms that get used in the rest of the doc, so let's get into it πŸ’…

Any-Source Multicast (ASM): This is the IP multicast service model defined in RFC 1112 [25] πŸ¦‹ An IP datagram is sent to a "host group", which is a set of zero or more end-hosts (or routers) identified by one IP destination address (224.0.0.0 through 239.255.255.255 for IPv4). End-hosts can join and leave the group any time, and there's no restriction on where they are or how many there are. This model also supports groups with arbitrarily many senders. Any end-host (or router) can transmit to a host group, even if it isn't a member of that group. It's giving chaos but make it organized πŸ’€

Source-Specific Multicast (SSM): This is the multicast service model defined in [5] 🧚 An IP datagram is sent by a source S to an SSM destination address G, and receivers can get that datagram by subscribing to the channel (S,G). SSM gives host applications a "channel" abstraction, where each channel has exactly one source and any number of receivers πŸ’– SSM is derived from earlier work in EXPRESS [1] ✨ The address range 232/8 has been assigned by IANA for SSM service in IPv4. For IPv6, the range FF3x::/96 is defined for SSM services [21] πŸ‘‘

Source-Filtered Multicast (SFM): This is a variant of the ASM service model, and it uses the same address range as ASM (224.0.0.0-239.255.255.255) 🌈 It extends ASM like this: each "upper layer protocol module" can now request data sent to a host group G from only a specific set of sources, or it can request data sent to host group G from all BUT a specific set of sources 🫢 Source filtering is supported by version 3 of the Internet Group Management Protocol (or IGMPv3) [3] for IPv4, and version 2 of the Multicast Listener Discovery (or MLDv2) [22] protocol for IPv6. From here on we'll call these two protocols "SFM-capable" πŸ’… Earlier versions of these protocols (IGMPv1/IGMPv2 and MLDv1) don't support source-filtering, and they're called "non-SFM-capable" πŸ™ˆ Note that while SFM is a different model from ASM from a receiver standpoint, there's no distinction between the two for a sender πŸ¦‹

Okay so for the purpose of this document, we treat the scoped multicast model of [12] as a variant of ASM. That's because it doesn't explicitly restrict the number of sources, it only requires that they be located within the scope zone of the group 🌸

3. The IGMP/PIM-SM/MSDP/MBGP Protocol Suite for ASM πŸ’–

Right now, all multicast-capable networks support the ASM service model 🧚 One of the most common multicast protocol suites for supporting ASM is IGMP version 2 [2], PIM-SM [8,9], MSDP [13] and MBGP [26]. IGMPv2 is the most commonly used protocol for hosts to specify membership in a multicast group, and nearly all multicast routers support (at least) IGMPv2 ✨ For IPv6, MLDv1 [21] is the commonly used protocol πŸ‘‘

Even though there are protocols like PIM-DM [10], CBT [24,11], DVMRP [6], etc. for building a multicast tree among all receivers and sources in the same administrative domain, PIM-SM [8,9] is the most widely used one πŸ”₯ PIM-SM builds a spanning multicast tree rooted at a core rendezvous point (RP) for all group members within a single administrative domain. A 'first-hop' router next to a multicast source sends that source's traffic to the RP for its domain πŸ’… The RP forwards the data down the shared spanning tree to all interested receivers in the domain. PIM-SM also lets receivers switch to a source-based shortest path tree πŸ¦‹

Right now, multicast end-hosts with SFM capabilities aren't widely available πŸ™ˆ So a client can only specify interest in an entire host group, and it gets data sent from any source to that group πŸ’€

Inter-domain multicast service (where sources and receivers are in different domains) needs extra protocols, and MSDP [13] and MBGP [26] are the most commonly used ones 🫢 An RP uses MSDP to announce multicast sources to RPs in other domains. When an RP finds a source in a different domain that's sending data to a multicast group with interested receivers in its own domain, it joins the shortest-path source-based tree rooted at that source. Then it redistributes the data it received to all interested receivers through the intra-domain shared tree rooted at itself πŸ’–

MBGP defines extensions to BGP to support advertising reachability info for multicast routes 🌈 This lets an autonomous system (AS) support incongruent unicast and multicast routing topologies, so it can implement separate routing policies for each 🧚

However, the last-hop routers of interested receivers may eventually switch to a shortest-path tree rooted at the source that's sending the data ✨

4. Problems with Current Architecture πŸ”₯

Okay so there are several deployment problems tied to the current multicast architecture πŸ’…

A) Address Allocation 🌸

Address allocation is one of the core deployment challenges posed by the ASM service model πŸ’€ The current multicast architecture doesn't provide a deployable solution to stop address collisions among multiple applications. This is way less serious for IPv6 than for IPv4, since the multicast address space is much larger πŸ¦‹ A static address allocation scheme, GLOP [17], has been proposed as an interim solution for IPv4. But GLOP addresses are allocated per registered AS, which isn't enough when the number of sources is more than the AS numbers available for mapping πŸ™ˆ RFC 3138 expands on RFC 2770 so routing registries can assign multicast addresses from the GLOP space that corresponds to the RFC 1930 private AS space [27]. This space is called the EGLOP (Extended GLOP) address space 🧚 Longer-term solutions, like the Multicast Address Allocation Architecture [14], are generally seen as too complex for widespread deployment, given how dynamic multicast address allocation is πŸ‘‘

B) Lack of Access Control 🫢

In the ASM service model, a receiver can't specify which specific sources it wants to receive from when it joins a group 😭 A receiver gets forwarded data sent to a host group by any source. Even when a source is allocated a multicast group address to transmit on, it has no way to enforce that no other source uses the same address πŸ”₯ This is still true for IPv6, even though address collisions are less likely there because the address space is much larger πŸ’–

C) Inefficient Handling of Well-Known Sources 🌈

When the address of the source is well known before the receiver joins the group, and the shortest forwarding path is the preferred forwarding mode, shared tree mechanisms aren't necessary 🧚

5. Source Specific Multicast (SSM): Benefits and Requirements ✨

okay so, the Source Specific Multicast (SSM) service model defines a "channel" as an (S,G) pair, where S is a source address and G is an SSM destination address πŸ’–. Channel subscriptions get described with an SFM-capable group management protocol, like IGMPv3 or MLDv2. And only source-based forwarding trees are needed to build it 🌸. Lowkey so clean.

The SSM service model fixes all of the deployment problems we just went over πŸ’…

A) Address Allocation: SSM defines channels on a per-source basis, so the channel (S1,G) is totally distinct from the channel (S2,G), where S1 and S2 are source addresses and G is an SSM destination address. This dodges the whole global allocation headache for SSM destination addresses, and each source is independently responsible for sorting out address collisions for the channels it creates πŸ¦‹.

B) Access Control: SSM gives us an elegant answer to the access control problem πŸ‘‘. When a receiver subscribes to an (S,G) channel, it only receives data sent by the source S. Meanwhile, any host can transmit to an ASM host group πŸ’€. Also, when a sender picks a channel (S,G) to transmit on, it is automatically ensured that no other sender will be transmitting on that same channel (except in the case of malicious acts such as address spoofing). So it's way harder to "spam" an SSM channel than an ASM multicast group πŸ™ˆ.

C) Handling of well-known sources: SSM only requires source-based forwarding trees, which means we don't need a shared tree infrastructure at all 🌈. This implies that neither the RP-based shared tree infrastructure of PIM-SM nor the MSDP protocol is required. So the complexity of the multicast routing infrastructure for SSM is low, which makes it viable for immediate deployment πŸš€. Note that there is no difference in how MBGP is used for ASM and SSM.


6. SSM Framework 🧚

Figure 1 shows the elements in an end-to-end implementation framework for SSM, and honestly it's giving diagram realness πŸŽ€

      --------------------------------------------------------------
       IANA assigned 232/8 for IPv4             ADDRESS ALLOCATION
            FF3x::/96 for IPv6
      --------------------------------------------------------------
                   |
                   v
          +--------------+ session directory/web page
          | source,group |                      SESSION DESCRIPTION
      --------------------------------------------------------------
                 ^ |
           Query | | (S,G)
                 | v
        +-----------------+ host
        |   SSM-aware app |                     CHANNEL DISCOVERY
      --------------------------------------------------------------
        |   SSM-aware app |                   SSM-AWARE APPLICATION
      --------------------------------------------------------------
        |   IGMPv3/MLDv2  |              IGMPv3/MLDv2 HOST REPORTING
        +-----------------+
                  |(source specific host report)
      --------------------------------------------------------------
                  v
        +-----------------+  Querier Router
        |   IGMPv3/MLDv2  |                         QUERIER
      --------------------------------------------------------------
          |   PIM-SSM  |                        PIM-SSM ROUTING
          +------------+     Designated Router
                  |
                  | (S,G) Join only
                  v
            +-----------+  Backbone Router
            |  PIM-SSM  |
            +-----------+
                  |
                  | (S,G) Join only
                  V

        Figure 1: SSM Framework: elements in end-to-end model

We now discuss the framework elements in detail πŸ¦‹

6.1. Address Allocation

For IPv4, IANA has assigned the address range 232/8 for SSM πŸ’–. To make sure SSM works globally in 232/8, including in networks where routers run non-SFM-capable protocols, operational policies are being proposed [9]. These recommend that routers should not send SSM traffic to parts of the network that do not have channel subscribers.

Note that IGMPv3/MLDv2 does not limit (S,G) joins to only the 232/8 range. However, SSM service, as defined in [5], is only available in this address range for IPv4 πŸ™ƒ.

In the case of IPv6, [23] has defined an extension to the addressing architecture to allow for unicast prefix-based multicast addresses. See RFC 3306 for details ✨.

6.2. Session Description and Channel Discovery

An SSM receiver application must know both the SSM destination address G and the source address S before subscribing to a channel 🎯. Channel discovery is the responsibility of applications. This information can be made available in a number of ways, including via web pages, sessions announcement applications, etc. This is similar to what is used for ASM applications, where a multicast session needs to be announced so that potential subscribers can know of the multicast group address, encoding schemes used, etc. In fact, the only additional piece of information that needs to be announced is the source address for the channel being advertised. However, the exact mechanisms for doing this is outside the scope of this framework document 🌸.

6.3. SSM-Aware Applications

There are two main issues in making multicast applications "SSM-aware" 🧠:

  • An application that wants to receive an SSM session must first discover the channel address in use.
  • A receiving application must be able to specify both a source address and a destination address to the network layer protocol module on the end-host.

Specific API requirements are identified in [16]. [16] describes a recommended application programming interface for a host operating system to support the SFM service model. Although it is intended for SFM, a subset of this interface is sufficient for supporting SSM πŸ’….

6.4. IGMPv3/MLDv2 Host Reporting and Querier

In order to use SSM service, an end-host must be able to specify a channel address, which consists of a source's unicast address and an SSM destination address πŸŽ€. IGMP version 2 [3] and MLD version 1 [19] allow an end-host to specify only a destination multicast address. The ability to specify an SSM channel address c is provided by IGMP version 3 [3] and MLD version 2 [20]. These protocols support "source filtering", i.e., the ability of an end-system to express interest in receiving data packets sent only by SPECIFIC sources, or from ALL BUT some specific sources. In fact, IGMPv3 provides a superset of the capabilities required to realize the SSM service model πŸ‘‘.

A detailed discussion of the use of IGMPv3 in the SSM destination address range is provided in [4] πŸ“š.

The Multicast Listener Discovery (MLD) protocol is used by an IPv6 router to discover the presence of multicast listeners on its directly attached links, and to discover the multicast addresses that are of interest to those neighboring nodes. MLD version 1 is derived from IGMPv2 and does not provide the source filtering capability required for the SSM service model. MLD version 2 is derived from, and provides the same support for source-filtering as, IGMPv3. Thus IGMPv3 (or MLDv2 for IPv6) provides a host with the ability to request the network for an SSM channel subscription πŸ¦‹.

6.5. PIM-SSM Routing

[9] provides guidelines for how a PIM-SM implementation should handle source-specific host reports as required by SSM. Earlier versions of the PIM protocol specifications did not describe how to do this πŸ™„.

The router requirements for operation in the SSM range are detailed in [5]. These rules are primarily concerned with preventing ASM-style behaviour in the SSM address range. In order to comply with [5], several changes to the PIM-SM protocol are required, as described in [9]. The most important changes in PIM-SM required for compliance with [5] are:

🚨 These are the non-negotiable rules, bestie. Read them twice.
  • When a DR receives an (S,G) join request with the address G in the SSM address range, it MUST initiate a (S,G) join, and NEVER a (*,G) join.
  • Backbone routers (i.e., routers that do not have directly attached hosts) MUST NOT propagate (*,G) joins for group addresses in the SSM address range.
  • Rendezvous Points (RPs) MUST NOT accept PIM Register messages or (*,G) Join messages in the SSM address range.

Note that only a small subset of the full PIM-SM protocol functionality is needed to support the SSM service model. This subset is explicitly documented in [9] 🌈.

7. Interoperability with Existing Multicast Service Models 🀝

Interoperability with ASM is one of the most important issues in moving to SSM deployment, since both models are expected to be used at least in the foreseeable future πŸ’œ. SSM is the ONLY service model for the SSM address range, and the correct protocol behaviour for this range is specified in [5]. The ASM service model will be offered for the non-SSM address range, where receivers can issue (*,G) join requests to receive multicast data. A receiver is also allowed to issue an (S,G) join request in the non-SSM address range. However, in that case there is no guarantee that it will receive service according to the SSM model πŸ™ƒ.

Another interoperability issue concerns the MSDP protocol, which is used between PIM-SM rendezvous points (RPs) to discover multicast sources across multiple domains. MSDP is not needed for SSM, but it is needed if ASM is supported. [9] specifies operational recommendations to help ensure that MSDP does not interfere with the ability of a network to support the SSM service model. Specifically, [9] states that RPs must not accept, originate or forward MSDP SA messages for the SSM address range πŸ›‘.

8. Security Considerations πŸ”

SSM does not introduce new security considerations for IP multicast. It can help in preventing denial-of-service attacks resulting from unwanted sources transmitting data to a multicast channel (S, G). However, no guarantee is provided.

⚠️ Gurl, "helps" is not "guarantees." SSM is a tool, not a bodyguard. Don't skip your own security work just because it's SSM 😭

9. Acknowledgments 🫢

We would like to thank Gene Bowen, Ed Kress, Bryan Lyles, Timothy Roscoe, Hugh Holbrook, Isidor Kouvelas, Tony Speakman and Nidhi Bhaskar for participating in lengthy discussions and design work on SSM, and for providing feedback on this document. Thanks are also due to Mujahid Khan, Ted Seely, Tom Pusateri, Bill Fenner, Kevin Almeroth, Brian Levine, Brad Cain, Hugh LaMaster and Pekka Savola for their valuable insights and continuing support πŸ’–.

10. References πŸ“š

10.1. Informative References πŸ“šβœ¨

Okay bestie, here are the receipts πŸ§ΎπŸ’– Every source the spec points to, with all the details, so you can go read them if you're curious.

[1]  Holbrook, H. and D.R. Cheriton, "IP Multicast Channels: EXPRESS
     Support for Large-scale Single-Source Applications", In
     Proceedings of SIGCOMM 1999.

[2]  Fenner, W., "Internet Group Management Protocol, Version 2", RFC
     2236, November 1997.

[3]  Cain, B., Deering, S., Kouvelas, I. and A. Thyagarajan,
     "Internet Group Management Protocol, Version 3.", RFC 3376,
     October 2002.

[4]  Holbrook, H. and B. Cain, "Using IGMPv3 and MLDv2 for
     Source-Specific Multicast", Work In Progress.

[5]  Holbrook, H. and B. Cain, "Source-Specific Multicast for IP",
     Work in Progress.

[6]  Deering, S. and D. Cheriton,"Multicast Routing in Datagram
     Networks and Extended LANs", ACM Transactions on Computer
     Systems, 8(2):85-110, May 1990.

[7]  Deering, S. et al., "PIM Architecture for Wide-Area Multicast
     Routing", IEEE/ACM Transaction on Networking, pages 153-162,
     April 1996.

[8]  Estrin, D., Farinacci, D., Helmy, A., Thaler, D., Deering, S.,
     Handley, M., Jacobson, V., Liu, C., Sharma, P. and L. Wei,
     "Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol
     Specification", RFC 2362, June 1998.

[9]  Fenner, B., Handley, M., Holbrook, H. and I. Kouvelas, "Protocol
     Independent Multicast - Sparse Mode (PIM-SM): Protocol
     Specification (Revised)", Work In Progress.

[10] Adams, A., Nicholas, J. and W. Siadek, "Protocol Independent
     Multicast - Dense Mode (PIM-DM): Protocol Specification
     (Revised)", Work In Progress.

[11] Ballardie, A., "Core-Based Trees (CBT) Multicast Routing
     Architecture", RFC 2201, September 1997.

[12] Meyer, D., "Adminstratively Scoped IP Multicast", BCP 23, RFC
     2365, July 1998.

[13] Farinacci, D. et al., "Multicast Source Discovery Protocol",
     Work In Progress.

[14] Thaler, D., Handley, M. and D. Estrin, "The Internet Multicast
     Address Allocation Architecture", RFC 2908, September 2000.

[15] Diot, C., Levine, B., Lyles, B., Kassem, H. and D. Balensiefen,
     "Deployment Issues for the IP Multicast Service and
     Architecture", In IEEE Networks Magazine's Special Issue on
     Multicast, January, 2000.

[16] Thaler, D., Fenner B. and B. Quinn, "Socket Interface Extensions
     for Multicast Source Filters", Work in Progress.

[17] Meyer, D. and P. Lothberg, "GLOP Addressing in 233/8", BCP 53,
     RFC 3180, September 2001.

[18] Levine, B. et al., "Consideration of Receiver Interest for IP
     Multicast Delivery", In Proceedings of IEEE Infocom, March 2000.

[19] Deering, S., Fenner, W. and B. Haberman, "Multicast Listener
     Discovery for IPv6", RFC 2710, October 1999.

[20] Vida, R. et. al., "Multicast Listener Discovery Version 2(MLDv2)
     for IPv6", Work In Progress.

[21] Haberman, B. and D. Thaler, "Unicast-Prefix-Based IPv6 Multicast
     Addresses", RFC 3306, August 1992.

[22] Kent, S. and R. Atkinson, "Security Architecture for the
     Internet Protocol", RFC 2401, November 1998.

[23] Haberman, B., "Allocation Guidelines for IPv6 Multicast
     Addresses", RFC 3307, August 2002.

[24] Ballardie, A., "Core-Based Trees (CBT Version 2) Multicast
     Routing -- Protocol Specification", RFC 2189, September 2001.

[25] Deering, S., "Host Extensions for IP Multicasting", STD 5, RFC
     1112, August 1989.

[26] Bates, T., Rekhter, Y., Chandra, R. and D. Katz, "Multiprotocol
     Extensions for BGP-4", RFC 2858, June 2000.

[27] Meyer, D., "Extended Assignments in 233/8", RFC 3138, June 2001.

10.2. Normative References 🫢

Just one must-read in this bunch πŸ‘€

[28] Bradner, S., "Key words for use in RFCs to Indicate Requirement
     Levels", BCP 14, RFC 2119, March 1997.

11. Contributors 🌸

Shoutout to the squad who helped make this happen πŸ’…βœ¨ Here's who they are and how to reach them.

Christophe Diot
Intel
EMail: christophe.diot@intel.com

Leonard Giuliano
Juniper Networks
EMail: lenny@juniper.net

Greg Shepherd
Procket Networks
EMail: shep@procket.com

Robert Rockell
Sprint
EMail: rrockell@sprint.net

David Meyer
Sprint
EMail: dmm@1-4-5.net

John Meylor
Cisco Systems
EMail: jmeylor@cisco.com

Brian Haberman
Caspian Networks
EMail: bkhabs@nc.rr.com

12. Editor's Address πŸŽ€

And this is the editor who kept the whole thing together 🧚

Supratik Bhattacharyya
Sprint

EMail: supratik@sprintlabs.com

The legal bit, kept word for word so nothing gets lost in translation πŸ™ˆ

Copyright (C) The Internet Society (2003).  All Rights Reserved.

This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works.  However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.

The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assignees.

This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Acknowledgement πŸ¦‹

Funding for the RFC Editor function is currently provided by the Internet Society. πŸ’–

πŸ“¦ where this page comes from