RFC 4604
Using Internet Group Management Protocol Version 3 (IGMPv3) and Multicast Listener Discovery Protocol Version 2 (MLDv2) for Source-Specific Multicast
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 Notice ๐
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_EXCLUDECurrent-State RecordCHANGE_TO_EXCLUDE_MODEFilter-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
Full Copyright Statement โ๏ธ
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
- ietf: rfc4604 2006-08
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms