RFC 4604

Using Internet Group Management Protocol Version 3 (IGMPv3) and Multicast Listener Discovery Protocol Version 2 (MLDv2) for Source-Specific Multicast

๐Ÿ“… published August 2006, from ietf

RFC 4604: Using IGMPv3 and MLDv2 for Source-Specific Multicast ๐Ÿ’–

okay bestie, this is Part 1 of 2 ๐ŸŽ€ RFC 4604 is a Standards Track doc from August 2006, published in the Network Working Group. The authors are H. Holbrook (Arastra, Inc.), B. Cain (Acopia Networks), and B. Haberman (JHU APL). It updates RFC 3376 and RFC 3810 (the spec's header lists those two), and it doesn't obsolete anything ๐Ÿฆ‹ Its whole job is to tell IGMPv3 and MLDv2 how to play nicely with source-specific multicast. Let's go ๐Ÿ’…


Status of This Memo ๐Ÿ“œ

this one is an Internet standards track protocol spec for the Internet community, and it's basically inviting everyone to discuss and suggest improvements ๐Ÿ’ฌ for where the protocol stands on the standardization ladder, check the current edition of the "Internet Official Protocol Standards" (STD 1) ๐Ÿ“š and yes, distribution is totally unlimited โœจ

Copyright (C) The Internet Society (2006).

Abstract ๐ŸŒธ

okay so IGMPv3 and MLDv2 are the protocols that let a host tell its neighboring routers that it wants to receive multicast traffic. IGMPv3 handles IPv4 and MLDv2 handles IPv6 ๐Ÿงš then there's source-specific multicast (SSM), where a receiver has to name both the source's network-layer address and the multicast destination address to get the traffic. no vibes-only subscriptions here ๐Ÿ˜ค

This doc defines what an "SSM-aware" router and host is ๐Ÿ‘‘ and it tidies up IGMPv3 and MLDv2 behavior on those devices so SSM works. in some spots it's just clarifying, and in some spots it actually changes the behavior ๐Ÿ”ฅ it updates the IGMPv3 and MLDv2 specs too.

1. Introduction โœจ

so IGMP (which has [RFC1112, IGMPv2, IGMPv3] as its receipts ๐Ÿ“Ž) lets an IPv4 host share its IP multicast group membership with its neighboring routers. IGMP version 3 (IGMPv3) [IGMPv3] is the glow-up that lets a host pick or filter traffic from individual sources inside a multicast group ๐Ÿ’…

MLD ([RFC2710, MLDv2]) does the same kind of thing for IPv6 hosts ๐ŸŒˆ MLD version 2 (MLDv2) brings the same "source filtering" trick that IGMPv3 has, but for IPv6.

Since these do the same job, we're gonna call them the "Group Management Protocol", or "GMP", when we're talking about both ๐Ÿซถ and the "Source Filtering GMP", or "SFGMP", means IGMPv3 and MLDv2 together.

SSM only needs small tweaks to SFGMP on both hosts and routers ๐Ÿฆ‹ [SSM] lays out the general requirements that any system implementing the SSM service model has to follow, and this document is the specific version of those rules for IGMPv3 and MLDv2 ๐Ÿ’– so it adds changes to the host and router sides of IGMPv3 and MLDv2 for SSM, plus a bunch of clarifications for when they're used with SSM addresses. And yep, it updates the IGMPv3 and MLDv2 specs too ๐ŸŽ€

1.1. Terminology ๐Ÿงš

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].

so to make it obvious which parts change the existing protocol specs ([RFC2710, MLDv2, IGMPv3]), instead of just clarifying them, any protocol modification gets the tag "MODIFICATION" ๐Ÿท๏ธ watch for it, it's everywhere ๐Ÿ‘€

2. Host Requirements for Source-Specific Multicast ๐Ÿ’œ

this section defines what an "SSM-aware" host is, then walks through the API requirements and the SFGMP protocol requirements for one ๐ŸŒธ real talk, SSM can be used by any host that supports source filtering APIs and whose operating system supports the right SFGMP ๐Ÿ™Œ the SFGMP changes in this section make SSM work better on an SSM-aware host, but they aren't strict prerequisites for using SSM. no pressure ๐Ÿ˜Œ

The 232/8 IPv4 range (232/8) is what IANA currently allocates for SSM [IANA-ALLOCATION] ๐ŸŒˆ in IPv6, the FF3x::/32 range (where 'x' is a valid IPv6 multicast scope value) is reserved for SSM semantics [RFC3306], though right now SSM allocations are restricted to FF3x::/96 ๐Ÿซง ([SSM] has the deeper dive on this, go read it if you're curious ๐Ÿค“). A host that knows the SSM address range and can apply SSM semantics to it is called an "SSM-aware" host โœจ

A host or router can be set up to apply SSM semantics to addresses outside the IANA-allocated range ๐Ÿ“ the GMP module on a host or router SHOULD have a configuration option to set the SSM address range(s). If that configuration option exists, it MUST default to the IANA-allocated SSM range ๐Ÿ’… the way you set this option MUST at least allow manual configuration. Protocol mechanisms to set this option may be defined in the future ๐Ÿ”ฎ

2.1. API Requirements ๐Ÿ’ป

If the host IP module of an SSM-aware host gets a non-source-specific request to receive multicast traffic sent to an SSM destination address, it SHOULD return an error to the application, as specified in [MSFAPI] (MODIFICATION) ๐Ÿšจ

on a non-SSM-aware host, an app using the wrong API (like join(G), or IPMulticastListen(G,EXCLUDE(S1)) for IGMPv3, or IPv6MulticastListen(G,EXCLUDE(S2)) for MLDv2) to ask for packets sent to an SSM address won't get the service ๐Ÿ’€ the reason is that an SSM-aware router (following the rules of this document) will refuse to process the request, and the app gets no signal at all except that the traffic never shows up ๐Ÿ˜ญ

2.2. GMP Requirements ๐Ÿ“‹

this section defines how the SFGMP protocol module behaves on an SSM-aware host, including two modifications to the protocols described in [IGMPv3, MLDv2] ๐Ÿ’– it also has a bunch of clarifications on how protocol operations work. It documents what an SSM-aware host does when sending and receiving these GMP message types:

  • IGMPv1/v2 and MLDv1 Reports (2.2.1)
  • IGMPv3 and MLDv2 Reports (2.2.2)
  • IGMPv1 Queries, IGMPv2 and MLDv1 General Queries (2.2.3)
  • IGMPv2 Leave and MLDv1 Done (2.2.4)
  • IGMPv2 and MLDv1 Group Specific Query (2.2.5)
  • IGMPv3 and MLDv2 Group Specific Query (2.2.6)
  • IGMPv3 and MLDv2 Group-and-Source Specific Query (2.2.7)

2.2.1. IGMPv1/v2 and MLDv1 Reports ๐ŸŒท

an SSM-aware host that's following [IGMPv3, MLDv2] could send an IGMPv1, IGMPv2, or MLDv1 report for an SSM address while it's in "older-version compatibility mode." This is an exceptional (error) situation ๐Ÿ™ˆ it means the router(s) can't provide the SFGMP support SSM needs. An error gets logged when the host enters compatibility mode for an SSM address (more on that below). In this case, traffic sent to a channel (S,G) probably won't reach a receiving host that asked for channel (S,G) ๐Ÿ˜ฌ

[IGMPv3] and [MLDv2] say a host MAY let an older-version report suppress its own IGMPv3 or MLDv2 Membership Record ๐Ÿซฃ an SSM-aware host, though, MUST NOT let its report get suppressed in this situation (MODIFICATION) ๐Ÿ›ก๏ธ suppressing reports here would give an attacker a way to deny SSM service to other hosts on the link. Not cute. ๐Ÿ’€

2.2.2. IGMPv3 and MLDv2 Reports ๐Ÿ“ฃ

a host implementation may report more than one SSM channel in a single report, either by putting multiple sources in one group record or by putting multiple group records in the message ๐ŸŽ€

A Group Record for a source-specific destination address may (under normal operation) be any of these types:

  • MODE_IS_INCLUDE as part of a Current-State Record
  • ALLOW_NEW_SOURCES as part of a State-Change Record
  • BLOCK_OLD_SOURCES as part of a State-Change Record

a report may include both SSM destination addresses and non-source-specific, i.e., Any-Source Multicast (ASM) destination addresses, in the same message ๐ŸŒˆ

Also, a CHANGE_TO_INCLUDE_MODE record may be sent by a host in some cases, for example when the SSM address range gets changed through configuration โš™๏ธ a router should process a record like that according to the normal SFGMP rules.

An SSM-aware host SHOULD NOT send any of these record types for an SSM address ๐Ÿšซ

  • MODE_IS_EXCLUDE as part of a Current-State Record
  • CHANGE_TO_EXCLUDE_MODE as part of a Filter-Mode-Change Record

this is a MODIFICATION to [IGMPv3, MLDv2] that restricts its use for SSM destination addresses ๐Ÿท๏ธ the reason is that EXCLUDE mode doesn't apply to SSM addresses, so an SSM-aware router will ignore MODE_IS_EXCLUDE and CHANGE_TO_EXCLUDE_MODE requests in the SSM range, as described below ๐Ÿ™…โ€โ™€๏ธ

2.2.3. IGMPv1 Queries, IGMPv2 and MLDv1 General Queries ๐Ÿงšโ€โ™€๏ธ

if an IGMPv1 Query, or an IGMPv2 or MLDv1 General Query, comes in, the SFGMP protocol specs require the host to go back to the older (IGMPv1, IGMPv2, or MLDv1) mode on that interface ๐Ÿ”™ when that happens, the host stops reporting source-specific subscriptions on that interface and starts using IGMPv1, IGMPv2, or MLDv1 to report interest in all SSM destination addresses, without a source address attached. So the router stops applying SSM semantics to that multicast group address ๐Ÿ˜ตโ€๐Ÿ’ซ

A router following this document would never generate an IGMPv1, IGMPv2, or MLDv1 query for an address in the SSM range ๐Ÿ™…โ€โ™€๏ธ so this only happens if the router isn't SSM-aware, or if the host and the router disagree about the SSM address range (for example, if they have inconsistent manual configurations) ๐ŸŒ€

A host SHOULD log an error if it receives an IGMPv1, IGMPv2, or MLDv1 query for an SSM address (MODIFICATION) ๐Ÿšจ

to fix this problem, it must be administratively assured that every router on a given shared-medium network is compliant with this document and agrees on the SSM address range ๐Ÿ” very important, bestie ๐Ÿ’–

2.2.4. IGMPv2 Leave and MLDv1 Done ๐Ÿ‘‹

IGMP Leave and MLD Done messages aren't processed by hosts ๐Ÿ™ƒ IGMPv2 Leave and MLDv1 Done messages should not be sent for an SSM address, unless the sending host has reverted to older-version compatibility mode, with all the caveats described above โš ๏ธ

2.2.5. IGMPv2 and MLDv1 Group Specific Query ๐ŸŒธ

if a host gets an IGMPv2 or MLDv1 Group Specific Query for an address in any configured source-specific range, it should process the query normally, as per [IGMPv3, MLDv2], even if the queried group is a source-specific destination address ๐Ÿง sending a query like that most likely means either the router isn't compliant with this document, or it isn't configured with the same SSM address range(s) as the receiving host ๐Ÿค” a host SHOULD log an error in this case (MODIFICATION) ๐Ÿ“

2.2.6. IGMPv3 and MLDv2 Group-Specific Query โœจ

okay so if an SSM-aware host gets an SFGMP Group-Specific Query for an SSM address, it must respond with a report if the group matches the source-specific destination address of any of its subscribed source-specific channels, as specified in [IGMPv3, MLDv2]. ๐Ÿ’…

the reasoning is lowkey funny ๐Ÿ™ˆ because in the current SFGMP specs a router has no real reason to send one. BUT the meaning of this query is totally well-defined in this range, so future implementations might have a reason to send one. be liberal in what you accept ๐Ÿซถ

2.2.7. IGMPv3 and MLDv2 Group-and-Source-Specific Query ๐Ÿ”ฅ

an SFGMP router usually uses a Group-and-Source-Specific Query to check on an SSM channel that a host asked to leave through a BLOCK_OLD_SOURCES record. a host must respond to a Group-and-Source-Specific Query whose group and source match any channel the host is subscribed to, as required by [IGMPv3, MLDv2]. using an SSM address doesn't change this at all, it's giving consistency โœจ

a host must also be able to process a query that lists multiple sources per group, again as required by [IGMPv3, MLDv2]. using an SSM address doesn't modify how the SFGMPs work here either ๐Ÿ’–

3. Router Requirements for Source-Specific Multicast ๐Ÿ‘‘

routers must be aware of the SSM address range so they can provide the SSM service model. a router that knows the SSM address range and can apply SSM semantics to it, the way this section describes, is called an "SSM-aware" router ๐Ÿฆ‹. an SSM-aware router MAY have a configuration option that applies SSM semantics to addresses outside the IANA-allocated range. but if that option exists, it MUST default to the IANA-allocated range ๐ŸŒธ.

this section covers how routers handle these SFGMP message types for source-specific destination addresses:

  • IGMPv3 and MLDv2 Reports (3.1)
  • IGMPv3 and MLDv2 General Query (3.2)
  • IGMPv3 and MLDv2 Group-Specific Query (3.3)
  • IGMPv3 and MLDv2 Group-and-Source Specific Query (3.4)
  • IGMPv1/v2 and MLDv1 Reports (3.5)
  • IGMPv1/v2 and MLDv1 Queries (3.6)
  • IGMPv2 Leave and MLDv1 Done (3.7)

3.1. IGMPv3 and MLDv2 Reports ๐Ÿ“ฃ

SFGMP Reports are how hosts report source-specific subscriptions in the SSM range. a router SHOULD ignore a group record of either of these types if it refers to an SSM destination address:

  • MODE_IS_EXCLUDE Current-State Record
  • CHANGE_TO_EXCLUDE_MODE Filter-Mode-Change Record

a router MAY choose to log an error in either case. it MUST process any other group records in the same report ๐Ÿ™Œ. these behaviors are MODIFICATIONS to [IGMPv3, MLDv2]. the point is to stop non-source-specific semantics from being applied to SSM addresses, and to avoid falling back to older-version compatibility mode ๐Ÿ›ก๏ธ.

a CHANGE_TO_INCLUDE_MODE Filter-Mode-Change Record is processed under the normal SFGMP rules. Section 2.2.2 describes a legit scenario where this can happen ๐Ÿง .

3.2. IGMPv3 and MLDv2 General Queries ๐ŸŒˆ

an SSM router sends periodic SFGMP General Queries the way the IGMPv3 and MLDv2 specs say to. nothing changes for SSM here, no notes ๐Ÿ™‚.

3.3. IGMPv3 and MLDv2 Group-Specific Queries ๐Ÿงš

SFGMP routers that support source-specific multicast may send group-specific queries for addresses in the source-specific range. this spec doesn't explicitly forbid that message. still, when this was written, a router that follows [IGMPv3, MLDv2] wouldn't send one ๐Ÿคทโ€โ™€๏ธ.

3.4. IGMPv3 and MLDv2 Group-and-Source-Specific Queries ๐Ÿ”

SFGMP Group-and-Source-Specific Queries are used when a receiver has said it no longer wants traffic from a particular (S,G) pair. the router uses them to find out whether any directly-attached hosts still care about that (S,G) pair. they're also used inside the source-specific range when a router gets a BLOCK_OLD_SOURCES Record for one or more source-specific groups. these queries are sent normally, per [IGMPv3, MLDv2] ๐Ÿ“ฌ.

3.5. IGMPv1/v2 and MLDv1 Reports ๐Ÿšซ

an IGMPv1/v2 or MLDv1 report for an address in the source-specific range could come from a non-SSM-aware host ๐Ÿ‘€. a router SHOULD ignore all of these reports, and it SHOULD NOT use them to set up IP forwarding state. this is a MODIFICATION to [IGMPv3, MLDv2]. a router MAY log an error if it gets one of these reports (also a MODIFICATION) ๐Ÿ’€.

3.6. IGMPv1/v2 and MLDv1 Queries ๐Ÿ—ณ๏ธ

an SFGMP router that loses the querier election to a lower-version router must log an error, as specified by [IGMPv3, MLDv2] ๐Ÿ“.

3.7. IGMPv2 Leave and MLDv1 Done ๐Ÿ‘‹

an IGMPv2 Leave or MLDv1 Done message may be sent by a non-SSM-aware host. a router SHOULD ignore all of these messages in the source-specific address range, and it MAY log an error (MODIFICATION) ๐Ÿซ .

4. Security Considerations ๐Ÿ”

the specific protocol changes in this doc aren't known to create any security concerns beyond the ones already there when IGMPv3 or MLDv2 is used with ASM-style multicast. for a deep dive on SSM-specific security issues, check out [SSM] ๐Ÿ“š.

it's really important that a router does not accept non-source-specific reception requests for an SSM destination address ๐Ÿšจ. the rules in [IGMPv3] and [MLDv2] tell a router to fall back to earlier-version compatibility mode for the group when it gets a membership report like that. if the router did that here, an IGMPv3-capable host could be blocked from getting SSM service for that destination address. that gives an attacker a way to deny SSM service to other hosts on the same link ๐Ÿ˜ฑ๐Ÿ˜ญ.

5. Acknowledgements ๐ŸŽ€

the authors want to thank Vince Laviano, Nidhi Bhaskar, Steve Deering, Toerless Eckert, and Pekka Savola for their input and careful review ๐Ÿซถ๐Ÿ’•.

6. Normative References ๐Ÿ“–

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

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

[MSFAPI]     Thaler, D., Fenner, B., and B. Quinn, "Socket Interface
             Extensions for Multicast Source Filters", RFC 3678,
             January 2004.

[RFC1112]    Deering, S., "Host extensions for IP multicasting", STD
             5, RFC 1112, August 1989.

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

[SSM]        Holbrook, H. and B. Cain, "Source-Specific Multicast for
             IP", RFC 4607, August 2006.

[MLDv2]      Vida, R. and L. Costa, "Multicast Listener Discovery
             Version 2 (MLDv2) for IPv6", RFC 3810, June 2004.

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

8. Informative References ๐Ÿ“š

[IANA-ALLOC] Internet Assigned Numbers Authority,
             http://www.iana.org/assignments/multicast-addresses.

[RFC3306]    Haberman, B. and D. Thaler, "Unicast-Prefix-based IPv6
             Multicast Addresses", RFC 3306, August 2002.

Authors' Addresses ๐Ÿ—‚๏ธ

Hugh Holbrook
Arastra, Inc.
P.O. Box 10905
Palo Alto, CA 94303

Phone: +1 650 331-1620
EMail: holbrook@arastra.com


Brad Cain
Acopia Networks

EMail: bcain99@gmail.com


Brian Haberman
Johns Hopkins University Applied Physics Lab
11100 Johns Hopkins Road
Laurel, MD  20723-6099

EMail: brian@innovationslab.net

Copyright (C) The Internet Society (2006).

this document is subject to the rights, licenses and restrictions in BCP 78. except as set out there, the authors keep all their rights. this document and the info in it are provided "AS IS", and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED. that includes, but isn't limited to, any warranty that using the info won't infringe any rights, and any implied warranties of merchantability or fitness for a particular purpose ๐Ÿ™…โ€โ™€๏ธ.

Intellectual Property ๐Ÿงพ

the IETF takes no position on the validity or scope of any Intellectual Property Rights or other rights that might be claimed to apply to the technology in this document, or on whether any license under those rights might or might not be available. it also doesn't claim to have made any independent effort to find those rights. info on how rights work for RFC documents is in BCP 78 and BCP 79 ๐Ÿ“‘.

copies of IPR disclosures made to the IETF Secretariat, and any assurances of licenses to be made available, or the results of an attempt to get a general license or permission for implementers or users to use those proprietary rights, can be found in the IETF online IPR repository at http://www.ietf.org/ipr ๐Ÿ”—.

the IETF invites anyone to bring to its attention any copyrights, patents, patent applications, or other proprietary rights that may cover technology needed to implement this standard. send that info to the IETF at ietf-ipr@ietf.org ๐Ÿ“ฌ.

Acknowledgement ๐ŸŒท

Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA) ๐Ÿ’–.

๐Ÿ“ฆ where this page comes from