<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.2.3) -->
<?rfc comments="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-karstens-pim-multicast-snooping-optimization-02" category="std" consensus="true" submissionType="IETF" updates="3810, 4541" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="Multicast Snooping Optimizations">Multicast Snooping Optimizations</title>
    <seriesInfo name="Internet-Draft" value="draft-karstens-pim-multicast-snooping-optimization-02"/>
    <author initials="N." surname="Karstens" fullname="Nate Karstens">
      <organization abbrev="Garmin">Garmin International</organization>
      <address>
        <email>nate.karstens@garmin.com</email>
      </address>
    </author>
    <author initials="Z." surname="Zhang" fullname="Zhaohui Zhang">
      <organization>Juniper Networks</organization>
      <address>
        <email>zzhang@juniper.net</email>
      </address>
    </author>
    <author initials="L." surname="Giuliano" fullname="Lenny Giuliano">
      <organization>Juniper Networks</organization>
      <address>
        <email>lenny@juniper.net</email>
      </address>
    </author>
    <author initials="N." surname="Ashik" fullname="Naveen Ashik">
      <organization>Juniper Networks</organization>
      <address>
        <email>nashik@juniper.net</email>
      </address>
    </author>
    <author initials="J." surname="Huang" fullname="Joseph Huang">
      <organization abbrev="Garmin">Garmin International</organization>
      <address>
        <email>joseph.huang@garmin.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="10"/>
    <area>Routing</area>
    <workgroup>pim</workgroup>
    <keyword>multicast snooping</keyword>
    <abstract>
      <?line 85?>

<t>TODO: provide abstract</t>
    </abstract>
  </front>
  <middle>
    <?line 89?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Considerations for the operation of IGMP and MLD snooping switches are described in <xref target="RFC4541"/>. In the intervening years since publication, industry has gained experience with deploying this technology and have identified areas of improvement on the original document, including how traffic distribution can be optimized for certain types of networks.</t>
      <t>One area of improvement is that there appears to be a gap in the control path forwarding rules outlined in <xref section="2.1.1" sectionFormat="comma" target="RFC4541"/>. Forwarding rules are defined for switch ports attached to multicast routers and switch ports attached to hosts, but switch ports attached to other switches are not mentioned, leaving the operation of these ports open to interpretation.</t>
      <t>The authors may have purposefully limited consideration to networks with only a single switch, though this is not explicitly stated. In one sense, a network with a hierarchy of switches may be modeled as a single switch (in other words, the fact that multiple switches are being used would be transparent to any host or multicast router attached to the network). One side-effect of this approach is that it obscures how the network distributes traffic between multiple switches.</t>
      <t>This router-centric view of multicast traffic distribution is likely rooted in the nature of the IGMP and MLD protocols, whose stated purpose is to communicate group membership (that is, the fact that a host would like to receive a given stream of multicast data) to a multicast router. Two types of networks would benefit from a closer examination of how traffic is distributed between multiple switches: 1) networks that do not contain a multicast router and 2) networks that contain a multicast router, but have a significant volume of multicast data that does not need to be routed outside of the local network.</t>
      <t>The following diagram depicts an example network that can be used to illustrate the point:</t>
      <figure>
        <name>Example Network</name>
        <artwork><![CDATA[
                        /------\
                        |      |
               //=======|  S2  |=======\\
               ||       |      |       ||
               mr       \------/       ||
            /------\                /------\
            |      |                |      |
   //=======|  S1  |=======\\       |  H4  |
   ||       |      |       ||       |      |
   ||       \------/       ||       \------/
   ||          ||          ||
   ||          ||          ||
/------\    /------\    /------\
|      |    |      |    |      |
|  H1  |    |  H2  |    |  H3  |
|      |    |      |    |      |
\------/    \------/    \------/
]]></artwork>
      </figure>
      <t>S1 has designated its port connected to S2 as a multicast router port.</t>
      <t>Suppose the example network contains two multicast streams:</t>
      <ul spacing="normal">
        <li>
          <t>Stream 1 generated by H1 and consumed by H3</t>
        </li>
        <li>
          <t>Stream 2 generated by H2 and consumed by H4</t>
        </li>
      </ul>
      <t>The problem is that Stream 1 is forwarded from S1 to S2 even though there are no consumers of this data. This is due to the following data forwarding rule in <xref section="2.1.2" sectionFormat="comma" target="RFC4541"/>:</t>
      <blockquote>
        <t>Packets with a destination IP address outside 224.0.0.X which are not IGMP should be forwarded according to group-based port membership tables and must also be forwarded on router ports.</t>
      </blockquote>
      <t>While it would be tempting to ignore this rule so that Stream 1 is no longer forwarded, this would also prevent Stream 2 from reaching H4. This is because of the following IGMP forwarding rule in <xref section="2.1.1" sectionFormat="comma" target="RFC4541"/>:</t>
      <blockquote>
        <t>A snooping switch should forward IGMP Membership Reports only to those ports where multicast routers are attached.</t>
      </blockquote>
      <t>This rule prevents S2 from forwarding the Membership Report from H4 to S1, so S1 does not mark the port connected to S2 as a member of the multicast group for Stream 2.</t>
      <t><xref target="RFC4541"/> indicates that this rule is meant to prevent a host running IGMPv1 or IGMPv2 (or MLDv1) from suppressing its Membership Report for that multicast group. While it would be tempting to require all hosts on the network to run IGMPv3 (or MLDv2), this is not possible on the networks targeted for deployment of this solution.</t>
      <t>The next logical step in this direction would be to require multicast snooping switches to use some method to identify the nature of the device connected to each port (switch or host, IGMP/MLD version, etc.). This information would then be used to help control the distribution of Membership Reports.</t>
      <t>However, this document uses a different approach, choosing instead to use General Query messages to ensure membership information is distributed to all multicast snooping switches on the network. This solution is less complicated than methods that focus on Membership Reports, which reduces the likelihood for error. In addition, compatibility between different versions of IGMP and MLD are less of a concern because each protocol's Query messages are compatible with earlier versions of the protocol.</t>
      <t>Multicast snooping switches implementing this design shall use <xref target="RFC9776"/>, <xref target="RFC9777"/>, or both. Multicast routers on the network must also use these protocol versions, <xref target="RFC7761"/>, and satisfy the requirements listed in <xref target="routers"/>. Network hosts may use earlier versions of the protocols.</t>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
      <t>This document refers to IGMP snooping and MLD snooping collectively as "multicast snooping".</t>
      <t>TODO: if there are notable differences then mention something like "except where there are notable differences".</t>
      <t>IGMPv3 Membership Report messages and MLDv2 Multicast Listener Report messages are referred to collectively as Reports.</t>
      <t>The terms Any-Source Multicast and Source-Specific Multicast (see <xref target="RFC3569"/>) are respectively abbreviated ASM and SSM.</t>
      <t>TODO: do we want to define "multicast snooping switch"? Should we have an abbreviation?</t>
    </section>
    <section anchor="proxy-query-messages">
      <name>Proxy Query Messages</name>
      <t><xref section="2.1.1" sectionFormat="comma" target="RFC4541"/> describes a special-case IGMP Query message with an IPv4 source address of 0.0.0.0. It would appear that the equivalent for MLD would be a Query message with the IPv6 source address set to the unspecified address (::), but several documents prohibit this:</t>
      <ul spacing="normal">
        <li>
          <t><xref section="3" sectionFormat="comma" target="RFC2710"/> requires all MLD messages to be sent with an IPv6 link-local source address</t>
        </li>
        <li>
          <t><xref section="4" sectionFormat="comma" target="RFC3590"/> requires MLD Query messages to be sent with a valid IPv6 link-local source address</t>
        </li>
        <li>
          <t><xref section="5.1.14" sectionFormat="comma" target="RFC9777"/> requires both that MLD Query messages be sent with a valid IPv6 link-local source address and that nodes discard Query messages without a valid IPv6 link-local source address</t>
        </li>
      </ul>
      <t>Instead of working against established precedent, this document assigns a new flag in the "IGMP/MLD Query Message Flags" registry: the P (Proxy Query) flag. If an IPv6 multicast router receives a Query with the P flag set, then it SHALL NOT use that message in the querier election process described in <xref section="7.6.2" sectionFormat="comma" target="RFC9777"/>. To conserve flags and avoid duplicate functionality, this assignment is only made for MLD Query messages; the flag remains unassigned for IGMP Query messages.</t>
      <t>This document uses the term Proxy Query to refer to an IGMP Query with an IPv4 source address of 0.0.0.0 or an MLD Query with the P flag set.</t>
    </section>
    <section anchor="control-plane-operations">
      <name>Control Plane Operations</name>
      <t>Multicast snooping switches shall maintain a group-based port membership table that indicates which port(s) contain members for each tracked group. The requirements in this section are ultimately related to managing this table, using IGMP/MLD to communicate its contents to adjacent nodes, and making changes in response to IGMP/MLD messages received from adjacent nodes.</t>
      <t>Multicast snooping switches shall maintain a new Group/Port Membership Interval timer for each group and port combination in the group-based port membership table (see <xref target="group-port-membership-interval"/>).</t>
      <t>TODO: describe when the timer is set/reset and what happens when it expires</t>
      <t>Multicast snooping switches shall track a Multicast Router flag for each port. This flag indicates that a multicast router is connected through the associated port.</t>
      <t>Multicast snooping switches shall also track a Proxy Querier flag for each port. This flag indicates that the switch has received a Proxy Query message from this port, likely from another multicast snooping switch.</t>
      <t>If neither the Multicast Router or Proxy Querier flag is set for a port, then it can be inferred that the port is connected either to a host or to a switch that does not implement this design.</t>
      <section anchor="transmitting-periodic-proxy-queries">
        <name>Transmitting Periodic Proxy Queries</name>
        <t>Each multicast snooping switch on the network shall periodically send General Proxy Query messages to all active ports. On startup, or after a port transitions from an inactive state to an active state, [Startup Switch Proxy Query Count] (see <xref target="startup-switch-proxy-query-count"/>) General Proxy Query messages shall be sent with [Startup Switch Proxy Query Interval] (see <xref target="startup-switch-proxy-query-interval"/>) between each message. After this, General Proxy Query messages shall be sent with [Switch Proxy Query Interval] (see <xref target="switch-proxy-query-interval"/>) between each message.</t>
        <t>The QQIC field for each General Proxy Query message shall be set to [Startup Switch Proxy Query Interval] or [Switch Proxy Query Interval], as appropriate (see <xref section="4.1.7" sectionFormat="comma" target="RFC9776"/> or <xref section="5.1.9" sectionFormat="comma" target="RFC9777"/>).</t>
        <t>TODO: Important to send to multicast router ports because multicast router may have IRB (Integrated Routing and Bridging) connected, or be running a PIM-to-IGMP proxy.</t>
      </section>
      <section anchor="receiving-queries">
        <name>Receiving Queries</name>
        <t>Multicast snooping switches shall do the following when a General non-Proxy Query is received:</t>
        <ol spacing="normal" type="1"><li>
            <t>Set the Multicast Router flag for the port</t>
          </li>
          <li>
            <t>Reset the Multicast Router Timeout timer for the port (see <xref target="multicast-router-timeout"/>)</t>
          </li>
          <li>
            <t>Forward the Query to all other active ports</t>
          </li>
        </ol>
        <t>Multicast snooping switches shall do the following when a General Proxy Query is received:</t>
        <ol spacing="normal" type="1"><li>
            <t>Set the Proxy Querier flag for the port</t>
          </li>
          <li>
            <t>Reset the Proxy Querier Timeout timer for the port (see <xref target="proxy-querier-timeout"/>)</t>
          </li>
        </ol>
        <t>Note that Proxy Query messages are not forwarded. Forwarding non-Proxy Queries facilitates querier election and ensures that the network is aware that a multicast router is present. Accordingly, if only Proxy Query messages are received, then it can be inferred that there is no multicast router on the network.</t>
        <t>Multicast snooping switches shall respond to either type of Query by sending a Report to the port the Query was received on. This Report contains all groups in the group-based port membership table except the groups where the port the Query was received on is the only member port.</t>
        <t>TODO: we can add a table that gives an example group-based port membership table and the contents of the resulting report</t>
        <t>TODO: Does it make sense to require General Query messages be forwarded to multicast router ports, while also implying that if only Proxy Queries are received that there is no multicast router?</t>
        <t>TODO: use a term like "Querier Ports" to indicate a port that a Proxy Query is received on. Update: look for Proxy Querier flag</t>
        <t>TODO: need to handle unsolicited Rrports. That needs to be sent to Querier Ports</t>
        <t>TODO: need to handle leave and group-specific queries -- snooping switches will keep track of the ports that have group membership. When it receives a leave then it subtracts the port from membership, but only forwards the leave if there are no other ports with group membership</t>
        <t>TODO: group membership timer expiration is the same as an explicit leave</t>
        <t>TODO: if a switch receives a leave and there is only one port remaining and that port is a querier port, then send a leave to that querier port</t>
      </section>
      <section anchor="receiving-reports">
        <name>Receiving Reports</name>
        <t>TODO</t>
      </section>
      <section anchor="transmitting-reports">
        <name>Transmitting Reports</name>
        <t>TODO</t>
      </section>
      <section anchor="removing-groups-from-the-membership-table">
        <name>Removing Groups from the Membership Table</name>
        <t>TODO</t>
      </section>
    </section>
    <section anchor="data-plane-operations">
      <name>Data Plane Operations</name>
      <t>Multicast snooping switches shall follow the data forwarding rules outlined in <xref section="2.1.2" sectionFormat="comma" target="RFC4541"/>. In order to optimize traffic distribution on the network, this section contains two refinements to the recommendation to forward traffic to the multicast router port, based on whether the multicast traffic is routable or non-routable.</t>
      <t>To some extent, what constitutes a routable multicast address is subject to the overall design of the network, so multicast snooping switch vendors should allow configuration for how multicast addresses are classified.</t>
      <t>Note that the decision to forward traffic based on group-based port membership tables is independent of the decision to forward traffic to the multicast router port. In other words, traffic may still be forwarded to the multicast router port because it is a group member.</t>
      <section anchor="non-routable-multicast-traffic">
        <name>Non-Routable Multicast Traffic</name>
        <t>Multicast snooping switches shall only forward traffic to the multicast router port if the traffic is known to be routable.</t>
        <t><xref section="3" sectionFormat="comma" target="RFC4541"/> discusses challenges associated with IPv6 addresses overlapping when they are mapped to DMAC addresses. Multicast snooping switches should account for this possibility when implementing this requirement. In the event of an address collision, the recommendation is to forward the traffic and alert the network administrator of the problem.</t>
        <t>TODO: How should this alert work, is there a YANG model we should update?</t>
      </section>
      <section anchor="routers">
        <name>Routable Multicast Traffic</name>
        <t>Multicast snooping switches shall begin in a state where all routable, ASM traffic is sent to the multicast router, which will route it outside of the network. When the traffic reaches the RP, the RP determines if it is interested in the traffic. If the RP is not interested in the traffic, then it will send a PIM prune message back to the multicast router.</t>
        <t>When the multicast router receives the PIM prune message, it shall send a Report message excluding the multicast address back to the multicast snooping switch. Multicast snooping switches shall propagate the exclusion message back toward the source of the multicast stream until it reaches a switch that contains a port that is a member of that multicast group.</t>
        <t>The fact that an exclusion message was received on the multicast router port should be recorded so that the network can be properly updated in the case of future changes to group-based port membership. For example, if a multicast snooping switch stops propagating an exclusion message because it contains at least one port that is a member of the multicast group, then the switch should send an exclude message back towards the source of the multicast stream when the last port is removed from membership in the multicast group.</t>
        <t>TODO: is this a problem? we woule be preventing future refinements where an exclude message could be used to leave the have the port leave group membership</t>
        <t>Note that SSM traffic is handled differently because PIM will send a request to receive the traffic, so the recommendations in this section only apply to ASM traffic.</t>
      </section>
    </section>
    <section anchor="list-of-timers-counters-and-their-default-values">
      <name>List of Timers, Counters and Their Default Values</name>
      <t>TODO: Add a note indicating that these should be consistent with the analagous timers on a single link (like IGMPv3 section 8 or MLDv2 section 9 requires)</t>
      <section anchor="group-port-membership-interval">
        <name>Group/Port Membership Interval</name>
        <t>This interval is analagous to the Group Membership Interval in <xref section="8.4" sectionFormat="comma" target="RFC9776"/> and Multicast Address Listening Interval in <xref section="9.4" sectionFormat="comma" target="RFC9777"/>, except it denotes how long a given group/port combination should remain in the group-based port membership table.</t>
      </section>
      <section anchor="switch-proxy-query-interval">
        <name>Switch Proxy Query Interval</name>
        <t>This interval is analogous to the Query Interval in <xref section="8.2" sectionFormat="comma" target="RFC9776"/> and <xref section="9.2" sectionFormat="comma" target="RFC9777"/>, except it denotes the interval between General Proxy Queries sent by the multicast snooping switch.</t>
      </section>
      <section anchor="startup-switch-proxy-query-interval">
        <name>Startup Switch Proxy Query Interval</name>
        <t>This interval is analogous to the Startup Query Interval in <xref section="8.6" sectionFormat="comma" target="RFC9776"/> and <xref section="9.6" sectionFormat="comma" target="RFC9777"/>, except it denotes the interval between General Proxy Queries sent by the multicast snooping switch at startup.</t>
      </section>
      <section anchor="startup-switch-proxy-query-count">
        <name>Startup Switch Proxy Query Count</name>
        <t>This interval is analogous to the Startup Query Count in <xref section="8.7" sectionFormat="comma" target="RFC9776"/> and <xref section="9.7" sectionFormat="comma" target="RFC9777"/>, except it denotes the number of General Proxy Queries sent on startup, separated by the Startup Switch Proxy Query Interval.</t>
      </section>
      <section anchor="multicast-router-timeout">
        <name>Multicast Router Timeout</name>
        <t>This timeout is somewhat analogous to the Other Querier Present Timeout timer in <xref section="8.5" sectionFormat="comma" target="RFC9776"/> and <xref section="9.5" sectionFormat="comma" target="RFC9777"/>. If the timer expires, then the Multicast Router flag is cleared for the associated port.</t>
      </section>
      <section anchor="proxy-querier-timeout">
        <name>Proxy Querier Timeout</name>
        <t>This timeout is somewhat analogous to the Other Querier Present Timeout timer in <xref section="8.5" sectionFormat="comma" target="RFC9776"/> and <xref section="9.5" sectionFormat="comma" target="RFC9777"/>. If the timer expires, then the Proxy Querier flag is cleared for the associated port.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>To be added.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO: Describe assigning flag in the "IGMP/MLD Query Message Flags" registry.</t>
    </section>
  </middle>
  <back>
    <displayreference target="RFC3569" to="SSM"/>
    <displayreference target="RFC4541" to="SNOOP"/>
    <displayreference target="RFC7761" to="PIM-SM"/>
    <displayreference target="RFC9776" to="IGMPv3"/>
    <displayreference target="RFC9777" to="MLDv2"/>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3569" target="https://www.rfc-editor.org/info/rfc3569" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3569.xml">
          <front>
            <title>An Overview of Source-Specific Multicast (SSM)</title>
            <author fullname="S. Bhattacharyya" initials="S." role="editor" surname="Bhattacharyya"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>The purpose of this document is to provide an overview of Source-Specific Multicast (SSM) and issues related to its deployment. It discusses how the SSM service model addresses the challenges faced in inter-domain multicast deployment, changes needed to routing protocols and applications to deploy SSM and interoperability issues with current multicast service models. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3569"/>
          <seriesInfo name="DOI" value="10.17487/RFC3569"/>
        </reference>
        <reference anchor="RFC4541" target="https://www.rfc-editor.org/info/rfc4541" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4541.xml">
          <front>
            <title>Considerations for Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) Snooping Switches</title>
            <author fullname="M. Christensen" initials="M." surname="Christensen"/>
            <author fullname="K. Kimball" initials="K." surname="Kimball"/>
            <author fullname="F. Solensky" initials="F." surname="Solensky"/>
            <date month="May" year="2006"/>
            <abstract>
              <t>This memo describes the recommendations for Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) snooping switches. These are based on best current practices for IGMPv2, with further considerations for IGMPv3- and MLDv2-snooping. Additional areas of relevance, such as link layer topology changes and Ethernet-specific encapsulation issues, are also considered. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4541"/>
          <seriesInfo name="DOI" value="10.17487/RFC4541"/>
        </reference>
        <reference anchor="RFC7761" target="https://www.rfc-editor.org/info/rfc7761" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7761.xml">
          <front>
            <title>Protocol Independent Multicast - Sparse Mode (PIM-SM): Protocol Specification (Revised)</title>
            <author fullname="B. Fenner" initials="B." surname="Fenner"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="H. Holbrook" initials="H." surname="Holbrook"/>
            <author fullname="I. Kouvelas" initials="I." surname="Kouvelas"/>
            <author fullname="R. Parekh" initials="R." surname="Parekh"/>
            <author fullname="Z. Zhang" initials="Z." surname="Zhang"/>
            <author fullname="L. Zheng" initials="L." surname="Zheng"/>
            <date month="March" year="2016"/>
            <abstract>
              <t>This document specifies Protocol Independent Multicast - Sparse Mode (PIM-SM). PIM-SM is a multicast routing protocol that can use the underlying unicast routing information base or a separate multicast-capable routing information base. It builds unidirectional shared trees rooted at a Rendezvous Point (RP) per group, and it optionally creates shortest-path trees per source.</t>
              <t>This document obsoletes RFC 4601 by replacing it, addresses the errata filed against it, removes the optional (*,*,RP), PIM Multicast Border Router features and authentication using IPsec that lack sufficient deployment experience (see Appendix A), and moves the PIM specification to Internet Standard.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="83"/>
          <seriesInfo name="RFC" value="7761"/>
          <seriesInfo name="DOI" value="10.17487/RFC7761"/>
        </reference>
        <reference anchor="RFC9776" target="https://www.rfc-editor.org/info/rfc9776" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9776.xml">
          <front>
            <title>Internet Group Management Protocol, Version 3</title>
            <author fullname="B. Haberman" initials="B." role="editor" surname="Haberman"/>
            <date month="March" year="2025"/>
            <abstract>
              <t>The Internet Group Management Protocol (IGMP) is the protocol used by IPv4 systems to report their IP multicast group memberships to neighboring multicast routers. Version 3 of IGMP (IGMPv3) adds support for source filtering, that is, the ability for a system to report interest in receiving packets only from specific source addresses, or from all but specific source addresses, sent to a particular multicast address. That information may be used by multicast routing protocols to avoid delivering multicast packets from specific sources to networks where there are no interested receivers.</t>
              <t>This document specifies IGMPv3. It is a revised version of RFC 3376 that includes clarifications and fixes for errata, and it is backward compatible with RFC 3376.</t>
              <t>This document updates RFC 2236 and obsoletes RFC 3376.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="100"/>
          <seriesInfo name="RFC" value="9776"/>
          <seriesInfo name="DOI" value="10.17487/RFC9776"/>
        </reference>
        <reference anchor="RFC9777" target="https://www.rfc-editor.org/info/rfc9777" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9777.xml">
          <front>
            <title>Multicast Listener Discovery Version 2 (MLDv2) for IPv6</title>
            <author fullname="B. Haberman" initials="B." role="editor" surname="Haberman"/>
            <date month="March" year="2025"/>
            <abstract>
              <t>This document specifies the Multicast Listener Discovery version 2 (MLDv2) protocol. MLD is used by an IPv6 router to discover the presence of multicast listeners on directly attached links and to discover which multicast addresses are of interest to those neighboring nodes. MLDv2 is designed to be interoperable with MLDv1. MLDv2 adds the ability for a node to report interest in listening to packets with a particular multicast address only from specific source addresses or from all sources except for specific source addresses.</t>
              <t>This document updates RFC 2710 and obsoletes RFC 3810.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="101"/>
          <seriesInfo name="RFC" value="9777"/>
          <seriesInfo name="DOI" value="10.17487/RFC9777"/>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2710" target="https://www.rfc-editor.org/info/rfc2710" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2710.xml">
          <front>
            <title>Multicast Listener Discovery (MLD) for IPv6</title>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="W. Fenner" initials="W." surname="Fenner"/>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <date month="October" year="1999"/>
            <abstract>
              <t>This document specifies the protocol used by an IPv6 router to discover the presence of multicast listeners (that is, nodes wishing to receive multicast packets) on its directly attached links, and to discover specifically which multicast addresses are of interest to those neighboring nodes. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2710"/>
          <seriesInfo name="DOI" value="10.17487/RFC2710"/>
        </reference>
        <reference anchor="RFC3590" target="https://www.rfc-editor.org/info/rfc3590" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3590.xml">
          <front>
            <title>Source Address Selection for the Multicast Listener Discovery (MLD) Protocol</title>
            <author fullname="B. Haberman" initials="B." surname="Haberman"/>
            <date month="September" year="2003"/>
            <abstract>
              <t>It has come to light that there is an issue with the selection of a suitable IPv6 source address for Multicast Listener Discovery (MLD) messages when a node is performing stateless address autoconfiguration. This document is intended to clarify the rules on selecting an IPv6 address to use for MLD messages. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3590"/>
          <seriesInfo name="DOI" value="10.17487/RFC3590"/>
        </reference>
      </references>
    </references>
    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
      <name>Contributors</name>
      <t>The authors would like to recognize the following individuals for their contributions to this research:</t>
      <contact initials="D." surname="Vandewalle" fullname="David Vandewalle">
        <organization abbrev="Garmin">Garmin International</organization>
        <address>
          <email>david.vandewalle@garmin.com</email>
        </address>
      </contact>
      <contact initials="P." surname="Elizabeth" fullname="Princy Elizabeth">
        <organization>Juniper Networks</organization>
        <address>
          <email>princy@juniper.net</email>
        </address>
      </contact>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9U8aXPbRpbfVaX/0Ct/WGuLpC35irU141Fsx1bWOiIpMzsz
mQ9NoEkiAtEIGhDDON7fvu/qxkmK493aqrVTEQV293v97gsej8f7e5GNk2x+
oqpyNv5mf29/r0zK1Jyo8yotk0i7Ut1k1uawRl3mZbJMftNlYjO3v6en08Lc
77IytlGml3BoXOhZOb7ThStN5sZ5shwv/e6xk91j29g9fnoM+3UJm4+fHr8c
Hz2F//b3qhyfuRP17JujpyP1/MXzI7gKPJrbYn2iXBnv77lqukycg0Nu1zns
P3t/+x1e0JU6i3VqM3i2NoBenpyov5c2Gilni7IwMwef1kv+ENnl0mSl+wdu
TfLiRJVF5crjp09fI2q6MPpEXduqBMz391ZASbjV/t7d6kSFqyl/NTxDV+XC
Fif7e0qN8X9KJRlc5GKi/kPowk+ZYhdwp84XtgAgH3SxTDJ1lpWmyIhSOuWv
PVt4BT8zS52kJ3BkaSae+n+a04IJXBDRamPzt4n620IjwjUq8MAuqqT5BaHy
fZUluSnUhSlXtrhzLZC//Yar//Qzr5lkpuwD+zRRH5IqTXRmm/A+mSxbd755
GGCKu7bDA1KfukVy16bzvTFZ8/nDoDKNq7fD+n6iPlYdQn5vnckXzedfz9Kf
6azJAs/qcDSyWVkk06r00qb+yFuVul0YxXLo1MpWaazS5M6o0qrCRHaeJb/B
L7BmZtPUrlCjkyxO7pO40qmDpwV+mxQqgEA9x+3lInFwhjO6iBYnLXLw3d9p
OEX9GTTQrHSamv/p/WM8b3Ifztsk1Qz9qkiyaK3ep2BdpqZc7MrpnPZ1OZ3Z
Ygl43hsi7/V3b5+9ePn6hDeOT9TNzTl/jhOXp3odnsBKNFiNlReXl1fdtf4Z
rH716mVj9dXZ+bh3dP0Q1r+GDfX6sw/nV/fPOuvrh7z+Vb3+/NO7++POcnm2
vzcej4Edrix0RDS4vXx3ifSxwAbT+gZXLpM4Rh7v7z1CvhY2riJkLD55CyID
ewp2El6olM3lkbIzwlIBbxF+MKLKrZIyWhinwPiq2LgIRNDEIKLq8+d/GRPh
vnyZAEA6MEF5ujcZ7lyDXDrlgJlG5dU0BeuMoEYo3mDUi7VaaKfmOsngPPMr
oJIYXAsAFwApT+0ajyEpL020yGxq52vCcAEGRMF9sjKZJbAbHYPDOyRLpI5B
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

-->

</rfc>
