<?xml version="1.0" encoding="US-ASCII"?>
<!-- edited with XMLSPY v5 rel. 3 U (http://www.xmlspy.com)
     by Daniel M Kohn (private) -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
]>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std"
     docName="draft-li-pim-igmp-mld-extension-source-management-02"
     ipr="trust200902">
  <front>
    <title>IGMP/MLD Extension for Multicast Source Management</title>

    <author fullname="Huanan Li" initials="H" surname="Li">
      <organization>China Telecom</organization>

      <address>
        <postal>
          <street>Beiqijia Town, Changping District</street>

          <city>Beijing</city>

          <region>Beijing</region>

          <code>102209</code>

          <country>China</country>
        </postal>

        <email>lihn6@foxmail.com</email>
      </address>
    </author>

    <author fullname="Aijun Wang" initials="A" surname="Wang">
      <organization abbrev="">China Telecom</organization>

      <address>
        <postal>
          <street>Beiqijia Town, Changping District</street>

          <city>Beijing</city>

          <region>Beijing</region>

          <code>102209</code>

          <country>China</country>
        </postal>

        <email>wangaj3@chinatelecom.cn</email>
      </address>
    </author>

    <author fullname="Stig Venaas" initials="S" surname="Venaas">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>Tasman Drive</street>

          <city>San Jose</city>

          <region>CA</region>

          <code>95134</code>

          <country>USA</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>stig@cisco.com</email>

        <uri/>
      </address>
    </author>

    <date day="7" month="November" year="2021"/>

    <area>RTG Area</area>

    <workgroup>PIM Working Group</workgroup>

    <keyword>RFC</keyword>

    <abstract>
      <t>This document describes extensions to Internet Group Management
      Protocol (IGMP) and Multicast Listener Discover (MLD) protocols for
      supporting interaction between multicast sources and routers,
      accomplishing multicast source management.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>Among protocols for Internet Protocol (IP) multicast, there is no
      protocol specification for the source registration so far. The current
      protocol focuses more on data control. This document specifies some new
      messages to extend IGMPv3 <xref target="RFC3376"/> and MLDv2 <xref
      target="RFC3810"/> for exchanging source registration information and
      data transmission control information between sources and routers.</t>

      <t>In addition, combined with the multicast management process based on
      SDN architecture described in <xref target="I-D.li-pce-based-bier"/>,
      the transmission of multicast source data can be effectively controlled,
      enhancing the security and controllability of the multicast service.</t>
    </section>

    <section title="Conventions used in this document">
      <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>
    </section>

    <section title="Terminology">
      <t>The following terms are used in this document:</t>

      <t><list style="symbols">
          <t>BIER: Bit Index Explicit Replication</t>

          <t>ICMPv6: Internet Control Message Protocol version 6</t>

          <t>IGMP: Internet Group Management Protocol</t>

          <t>IP: Internet Protocol</t>

          <t>MDN: Multicast Data Notification</t>

          <t>MLD: Multicast Listener Discover</t>

          <t>MRS: Multicast Receiver Statistics</t>

          <t>MSR: Multicast Source Registration</t>

          <t>PCE: Path Computation Element</t>

          <t>RP: Rendezvous Point</t>

          <t>SDN: Software&ensp;Defined&ensp;Network</t>
        </list></t>
    </section>

    <section title="Overview of Multicast Source Management">
      <t>Multicast source management includes multicast source registration
      and authorization, multicast data transmission and termination, and
      receiver information statistics. Currently, multicast source management
      is mainly used in Source Specific Multicast (SSM) scenario. If multicast
      source management is to be applied to Any-Source Multicast (ASM)
      scenarios, other mechanisms are needed. ASM scenario is not discussed in
      this document.</t>

      <t>This document specifies IGMP and MLD protocol extensions for
      multicast source management, including Multicast Source Registration
      (MSR) described in <xref target="MSR"/>, Multicast Data Notification
      (MDN) described in <xref target="MDN"/> and Multicast Receiver
      Statistics (MRS) described in <xref target="MRS"/>.</t>

      <section anchor="stage1"
               title="Multicast Source Registration and Authorization">
        <t>Source systems send Multicast Source Registration messages to
        routers informing them that there are multicast sources available to
        provide services. The Multicast Source Registration message must
        contain the multicast source address, service start time and validity
        period of the request. In some scenarios, The Multicast Source
        Registration message also needs to contain credential for controlling
        multicast source access.</t>

        <t>After receiving the registration message from the source system and
        authenticating, the routers send Multicast Source Registration
        messages with valid registration status response to the source systems
        and inform the source systems that the requests are approved. The
        routers will trigger a timer and maintain the registration status for
        the source systems until the timer expires.</t>

        <t>In contrast, the source systems can also send Multicast Source
        Registration messages to routers to withdraw the registration
        requests. Then the routers will revoke the registration status and
        reply to the source systems.</t>

        <t>The source systems need periodically send registration messages to
        the routers to inform the router that the multicast source is alive.
        Then routers will refresh the timer of the registration status. If
        routers receive multicast data from multicast sources, they will
        refresh the timer. During data delivery, the source systems does not
        have to send registration messages periodically.</t>

        <t>When the timer expires or the registration validity period expires,
        the router will release the registration status and send a Multicast
        Source Registration message with invalid registration status to the
        source system to inform it.</t>
      </section>

      <section title="Multicast Data Transmission and Termination">
        <t>Within the service validity of registration, when the first
        receiver joins a multicast group with SSM address and requests to
        receive data from a specific multicast source, the first hop router
        will send Multicast Data Notification message carrying multicast group
        address to inform the source system that the source can send data to
        this multicast group.</t>

        <t>For a specific (S, G) tuple, when the last receiver leaves the
        multicast group, the first hop router will send Multicast Data
        Notification message carrying multicast group address to inform the
        source system that the source should stop sending data to this
        multicast group.</t>
      </section>

      <section title="Receiver Information Statistics">
        <t>For certain scenarios, a first hop router can learn receiver
        statistics for a specific (S, G) tuple. For example, in SDN scenario,
        the receiver statistics of each egress router can be centrally managed
        by the controller. The controller then aggregates these statistics and
        informs the first-hop router.</t>

        <t>In this case, if the first hop router has sent Multicast Data
        Notification message to the source system to inform the source system
        sending data, the first-hop router should periodically send Multicast
        Receiver Statistics messages to the source system synchronizing the
        receiver statistics. In this way, the source system can perform
        analysis based on the receiver statistics, facilitating further
        optimization and scaling.</t>
      </section>
    </section>

    <section title="Message Formats">
      <t>There are three types of IGMP and MLD messages associated with
      multicast source advertisement described in this document.</t>

      <section anchor="MSR" title="Multicast Source Registration Message">
        <t>MSR message is sent by multicast source to request multicast data
        transmission service activation or by router responding to the request
        from the multicast source.</t>

        <t>MSR message has the following format:</t>

        <t><figure>
            <artwork><![CDATA[ 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = TBD1,2 |       |E|I|R|A|           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Credential Len        |            Reserved           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                    Multicast Source Address                   ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Start Timestamp (64 bits)                   |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Duration (32 bits)                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                           Credential                          ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                           Extension                           ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                   Figure 1: MSR Message Format                  

]]></artwork>
          </figure></t>

        <t>Type (8 bits): IGMP and MLD messages types, they need to be
        registered by the IANA.</t>

        <t>E(E-bit): E-bit set to 1 to indicate that extension is present in
        the message. E-bit set to 0 to indicate that extension is not present
        in the message. The E-bit MUST be set to 1 to indicate that the
        extension is present. Otherwise, it MUST be 0.</t>

        <t>I (Identity flag, 1 bit): The I flag set to 1 indicates that the
        message is sent by multicast source. The I flag set to 0 indicates
        that the message is sent by router.</t>

        <t>R (Request flag, 1 bit): The R flag set to 1 indicates the request
        to activate transmission service. The R flag set to 0 indicates
        revocation of the request.</t>

        <t>A (Authentication flag, 1 bit): The A flag set to 1 indicates
        success of request. The A flag set to 0 indicates failure of request
        or revocation of the request.</t>

        <t>Checksum (16 bits): The Checksum is the 16-bit one's complement of
        the one's complement sum of the whole IGMP or MLD message (the entire
        IP payload). For computing the checksum, the Checksum field is set to
        zero. When receiving packets, the checksum MUST be verified before
        processing a message.</t>

        <t>Multicast Source Address (Variable length): contains IPv4 or IPv6
        address of the multicast source requested. If the MSR Message is used
        in IGMP, the length of the address is 32 bits. If the MSR Message is
        used in MLD, the length of the address is 128 bits.</t>

        <t>Start Timestamp (8 bytes): indicates the start time when the
        multicast source can provide data services. Before this time, the
        multicast source cannot send data to multicast groups.</t>

        <t>Duration (1 byte): indicates the maximum duration that the
        multicast source can provide data services in a valid registration
        request.</t>

        <t>Credential (Variable length): is used for authorization of
        multicast sources.</t>

        <t>Extension: It is defined and described in <xref
        target="I-D.ietf-pim-igmp-mld-extension"/>.It may contain a variable
        number of TLVs for flexible extension.</t>
      </section>

      <section anchor="MDN" title="Multicast Data Notification Message">
        <t>MDN message is sent by router to notify multicast source to start
        or stop sending multicast packets. For different (S, G) tuples, the
        router needs to send multiple MDN messages.</t>

        <t>MDN message has the following format:</t>

        <t><figure>
            <artwork><![CDATA[ 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = TBD3,4 |   Reserved  |C|           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                    Multicast Group Address                    ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                   Figure 2: MDN Message Format                  

]]></artwork>
          </figure></t>

        <t>Type (8 bits): IGMP and MLD messages types, they need to be
        registered by the IANA.</t>

        <t>C (Control flag, 1 bit): The C flag set to 1 indicates starting
        sending multicast packets. The C flag set to 0 indicates stopping
        sending multicast packets.</t>

        <t>Checksum (16 bits): The Checksum is the 16-bit one's complement of
        the one's complement sum of the whole IGMP/MLD message (the entire IP
        payload). For computing the checksum, the Checksum field is set to
        zero. When receiving packets, the checksum MUST be verified before
        processing a message.</t>

        <t>Multicast Group Address (Variable length): contains IPv4 or IPv6
        address of the multicast group requested. If the MDN message is used
        in IGMP, the length of the address is 32 bits. If the MDN message is
        used in MLD, the length of the address is 128 bits.</t>
      </section>

      <section anchor="MRS" title="Multicast Receiver Statistics Message">
        <t>MRS message is sent by router to multicast source to synchronize
        receiver statistics of a group. For different (S, G) tuples, the
        router needs to send multiple MRS messages.</t>

        <t>MRS message has the following format:</t>

        <t><figure>
            <artwork><![CDATA[ 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = TBD5,6 |    Reserved   |           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                    Multicast Group Address                    ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Number of Receivers                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                   Figure 3: MRS Message Format   

]]></artwork>
          </figure></t>

        <t>Type (8 bits): IGMP and MLD messages types, they need to be
        registered by the IANA.</t>

        <t>Checksum (16 bits): The Checksum is the 16-bit one's complement of
        the one's complement sum of the whole IGMP/MLD message (the entire IP
        payload). For computing the checksum, the Checksum field is set to
        zero. When receiving packets, the checksum MUST be verified before
        processing a message.</t>

        <t>Multicast Group Address (Variable length): contains IPv4 or IPv6
        address of the multicast group requested. If the MRS message is used
        in IGMP, the length of the address is 32 bits. If the MRS message is
        used in MLD, the length of the address is 128 bits.</t>

        <t>Number of Receivers (32 bits): indicates the number of receivers
        for a particular (S,G) tuple.</t>
      </section>
    </section>

    <section title="Use Case">
      <section title="Multicast Source Management for PCE based BIER">
        <t>This section briefly describes procedures of multicast source
        management through a simple example of Path Computation Element(PCE)
        based Bit Index Explicit Replication(BIER) described in extended in
        <xref target="I-D.li-pce-based-bier"/>.</t>

        <t>The specific implementation process is as follows:</t>

        <t><figure>
            <artwork><![CDATA[                         +------------------+
                 +-------+    Controller    +-------+
                 |       +--------^---------+       |
                 |                                  |
                 |                                  |  
              S2 | S3/7       +--------+            |  S6
                 |    --------+   R3   +--------    | 
                 |   /        +--------+        \   |  
                 |  /                            \  |    
+------+  S1/9  +--+  S11  +--+          +--+     +--+  S5 +--------+
|Source|--------|R1+-------+R5+----------+R6+-----+R7|-----|Receiver|  
+------+ S4/8/10+--+       +--+          +--+     +--+     +--------+
                 |                                  |   
                 |         +--+          +--+       |  
                 +---------+R2+----------+R4+-------+ 
                           +--+          +--+
 Figure 4: Topology of multicast source management for PCE based BIER ]]></artwork>
          </figure></t>

        <t>For PCE based BIER, the transmission of multicast source
        registration and authorization and receiver information statistics
        depends on the PCRpt message and PCUpd message, defined in <xref
        target="RFC8231"/> and extended in <xref
        target="I-D.li-pce-based-bier"/>, between the router and the
        controller.</t>

        <t>S1, S4, S8 and S10 in the figure are multicast source advertisement
        related processes. S1 is the process by which multicast sources send
        messages and data to router. S4, S8 and S10 are the process by which
        router send messages to multicast sources. The other steps are beyond
        the scope of this document.</t>

        <t>Step 1(S1): Source sends IGMP or MLD MSR message to R1 requesting
        to activate the multicast data transmission service.</t>

        <t>Step 2(S2): R1 sends multicast information registration to
        controller via PCRpt message.</t>

        <t>Step 3(S3): The controller sends PCUpd message to the R1, carrying
        authentication result.</t>

        <t>Step 4(S4): R1 sends authentication result to the source via IGMP
        or MLD MSR message. Source will conduct subsequent processing based on
        the authentication result, such as reapplying after the failure of
        authentication.</t>

        <t>Step 5(S5): Receivers send IGMP or MLD messages to R7 requesting to
        join or leave a multicast group.</t>

        <t>Step 6(S6): R7 converts the IGMP or MLD messages of receivers into
        PCRpt message and send it to the controller.</t>

        <t>Step 7(S7): The controller sends PCUpd message to R1 to start or
        stop forwarding, carrying BitString.</t>

        <t>Step 8(S8): R1 sends IGMP or MLD MDN message to the source to
        notify the source sending multicast packets to the specific multicast
        group.</t>

        <t>Step 9(S9): Source sends multicast data to R1.</t>

        <t>Step 10(S10): R1 sends IGMP or MLD MSR messages with multicast
        receivers' statistics to the source periodically.</t>
      </section>
    </section>

    <section title="Deployment Considerations">
      <t/>
    </section>

    <section title="Security Considerations">
      <t/>
    </section>

    <section title="IANA Considerations">
      <t/>

      <section title="IGMP Type Numbers">
        <t>IANA is requested to allocate a new code point within registry
        "IGMP Type Numbers" under "Internet Group Management Protocol (IGMP)
        Type Numbers" as follows:</t>

        <t><figure>
            <artwork><![CDATA[ Type Number               Message Name          
-------------     -----------------------------  
    TBD1           Multicast Source Activation 
    TBD3           Multicast Data Notification 
    TBD5          Multicast Receiver Statistics       ]]></artwork>
          </figure></t>
      </section>

      <section title="ICMPv6 Parameters">
        <t>IANA is requested to allocate a new code point within registry
        "ICMPv6 "type" Numbers" under "Internet Control Message Protocol
        version 6 (ICMPv6) Parameters" as follows:</t>

        <t><figure>
            <artwork><![CDATA[ Type Number               Message Name          
-------------     -----------------------------  
    TBD2           Multicast Source Activation 
    TBD4           Multicast Data Notification 
    TBD6          Multicast Receiver Statistics     ]]></artwork>
          </figure></t>
      </section>
    </section>

    <section title="Contributor">
      <t/>
    </section>

    <section title="Acknowledgement">
      <t/>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include="reference.RFC.3376"?>

      <?rfc include="reference.RFC.3810"?>

      <?rfc include="reference.RFC.4601"?>

      <?rfc include="reference.RFC.8174"?>

      <?rfc include="reference.RFC.8231"?>

      <?rfc include="reference.I-D.li-pce-based-bier"?>

      <?rfc include="reference.I-D.ietf-pim-igmp-mld-extension"?>

      <?rfc ?>
    </references>
  </back>
</rfc>
