<?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-03"
     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="16" month="May" year="2022"/>

    <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) protocol for
      supporting interaction between multi cast sources and routers,
      accomplishing multi cast 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 multi cast management process based on
      Soft Dedfined Network (SDN) architecture, such as that described in
      <xref target="I-D.li-pce-multicast"/>, the transmission of multi cast
      source data can be effectively managed, enhancing the security and
      controllability of the multi cast 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 multi cast source registration
      and authorization, multi cast data transmission and termination, and
      receiver information statistics. Currently, multi cast source management
      is mainly used in Source Specific Multicast (SSM) scenario. If multi
      cast 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 multi
      cast 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 multi cast sources available to
        provide services. The Multicast Source Registration message must
        contain the multi cast 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
        multi cast source access. Credential authentication can be performed
        on the first-hop router or on other systems. The specific
        implementation can be adjusted according to the deployment.</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 multi cast source is alive.
        Then routers will refresh the timer of the registration status. If
        routers receive multi cast data from multi cast 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 multi cast group with SSM address, the corresponding
        first hop router will send Multicast Data Notification message
        carrying multi cast group address to inform the source system that the
        source can send data to this multi cast group.</t>

        <t>For a specific (S, G) tuple, when the last receiver leaves the
        multi cast group, the first hop router will send Multicast Data
        Notification message carrying multi cast group address to inform the
        source system that the source should stop sending data to this multi
        cast 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 multi
      cast source advertisement described in this document.</t>

      <section anchor="MSR" title="Multicast Source Registration Message">
        <t>MSR message is sent by multi cast source to request multi cast data
        transmission service activation or by router responding to the request
        from the multi cast 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 multi cast 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 multi cast 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 multi
        cast source can provide data services. Before this time, the multi
        cast source cannot send data to multi cast groups.</t>

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

        <t>Credential (Variable length): is used for authorization of multi
        cast 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 multi cast source to start
        or stop sending multi cast 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 |E|C|           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                    Multicast Group Address                    ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                           Extension                           ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                   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>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>C (Control flag, 1 bit): The C flag set to 1 indicates starting
        sending multi cast packets. The C flag set to 0 indicates stopping
        sending multi cast 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 multi cast 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 multi cast 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  |E|           Checksum            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                    Multicast Group Address                    ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Number of Receivers                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                           Extension                           ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                   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>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>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 multi cast 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 Management for PCE as multicast controller">
        <t>This section briefly describes procedures of multi cast source
        management through a simple example of Path Computation Element(PCE)
        based Bit Index Explicit Replication(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 multi cast source management for PCE based BIER ]]></artwork>
          </figure></t>

        <t>For the solution of PCE based BIER, the transmission of multi cast
        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-multicast"/>, between the router and the
        controller.</t>

        <t>S1, S4, S8 and S10 in the figure are multi cast source
        advertisement related processes. S1 is the process by which multi cast
        sources send messages and data to router. S4, S8 and S10 are the
        process by which router send messages to multi cast 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 multi cast data transmission service.</t>

        <t>Step 2(S2): R1 sends multi cast 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 multi cast 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 multi cast packets to the specific multi
        cast 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 multi cast
        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-multicast"?>

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

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