<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?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="info" docName="draft-liu-msr6-use-cases-01" ipr="trust200902">
  <front>
    <title abbrev="draft-liu-msr6-use-cases-01">MSR6(Multicast Source Routing
    over IPv6) Use Cases</title>

    <author fullname="Yisong Liu" initials="Y." surname="Liu">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <phone/>

        <facsimile/>

        <email>liuyisong@chinamobile.com</email>

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

    <author fullname="Feng Yang" initials="F." surname="Yang">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <phone/>

        <facsimile/>

        <email>yangfeng@chinamobile.com</email>

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

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

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

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

    <author fullname="Xueru Zhang" initials="X." surname="Zhang">
      <organization>China Unicom</organization>

      <address>
        <email>zhangxr49@chinaunicom.cn</email>

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

    <author fullname="Xuesong Geng" initials="X." surname="Geng">
      <organization>Huawei</organization>

      <address>
        <email>gengxuesong@huawei.com</email>

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

    <author fullname="Zhenbin  Li" initials="Z." surname="Li">
      <organization>Huawei</organization>

      <address>
        <email>lizhenbin@huawei.com</email>

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

    <date day="11" month="July" year="2022"/>

    <abstract>
      <t>MSR6 (Multicast Source Routing over IPv6) defines multicast
      replication as a Layer 3 function. It reuses existing IPv6 headers,
      functions, and capabilities to forward packets through non-multicast
      nodes, and adds no flow state at intermediate network nodes.</t>

      <t>This document introduces the use cases for MSR6.</t>
    </abstract>

    <note title="Requirements Language">
      <t>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 <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>MSR6 (Multicast Source Routing over IPv6) defines multicast
      replication as a Layer 3 function. It reuses existing IPv6 headers,
      functions, and capabilities to forward packets through non-multicast
      nodes, and adds no flow state at intermediate network nodes ([<xref
      target="I-D.cheng-spring-ipv6-msr-design-consideration"/>]).</t>

      <t>MSR6 encodes a set of destination nodes or a multicast tree in an
      IPv6 header, which supports both BE(Best Effort) forwarding based on
      SPF(Shortest Path First) and TE(Traffic Engineering) forwarding based on
      explicit path.</t>

      <t>MSR6 focuses on use cases with 1 or several following
      characteristics: <list style="symbols">
          <t>Large network scale with Numerous multicast service;</t>

          <t>IPsec to guarantee security when multicast transmitting through
          Internet;</t>

          <t>Host Initiated or overlay Multicast Transport.</t>
        </list></t>

      <t>These characteristics also corresponds to MSR6 deployment modes
      introduced in <xref
      target="I-D.cheng-spring-ipv6-msr-design-consideration"/>, including
      P2MP Multicast Tunnel, Multicast Overlay Network and Host-Initiated
      Multicast.</t>

      <t>This document describes diverse use cases the MSR6 technology may be
      Used in different deployment modes.</t>
    </section>

    <section title="MSR6 in DCN">
      <t>There are applications in data center with point-to-multipoint
      communication patterns that would benefit from network multicast
      service, without which, these applications, when migrating to public
      clouds, will use server based packet replication techniques. This leads
      to CPU load inflation and prevents tenants from sustaining high
      throughputs and low latencies for multicast workloads.</t>

      <t>At the same time, An increasing number of organizations are adopting
      IPv6 in their clouds, driven by the public IPv4 space exhaustion,
      private IPv4 scarcity, especially within large-scale networks, and the
      need to provide connectivity to IPv6-only clients.</t>

      <t>Similar as the case in DCN, MSR6 could also be used in other large
      scale network, like nationwide inter-AS network or large metro network.
      For example OTT live streaming could be conveyed in a nationwide network
      with multiple multicast source distributed in different areas.</t>

      <section title="Use of MSR6 TE">
        <t>The following figure shows an example of a data center network with
        dual-homes hosts for reliability. There are about 10k swtiches, 9k of
        which are leaves, and 100k adjacencies.</t>

        <t><figure>
            <artwork><![CDATA[
  +-------+   +---------------+       +----------------+    +--------+
  | DC-GW +---+      CORE1    |       |      CORE2     | ...|  COREn |    
  +---+---+   ++------+--+--+-+       ++-+--+----+-----+    +--------+
      |        |      |  |  |          | |  |    |         
 +----+----+   |      |  |  +-------------------------+    
 |  Server |   |   +-------------------+ |  |    |    |    
 |(source1)|   |   |  |  |               |  |    |    |    
 +---------+   |   |  |  |      +--------+  |    |    |    
               |   |  |  |      |           |    |    |    
               |   |  +----------------+    |    |    |    
               |   |     |      |      |    |    |    |    
              ++---+-+   +------+    +-+----+   ++----++    +------+
              |SPINE1|   |SPINE2|    |SPINE3|   |SPINE4| ...|SPINEn|   
              ++----++   ++---+-+    +-+--+-+   ++----++    +------+  
               |    |     |   |        |  |      |    |    
               |    +-------+ |        |  +--------+  |    
               |          | | |        |         | |  |    
               |  +-------+ | |        |  +------+ |  |    
               |  |         | |        |  |        |  |    
              ++--+-+      ++-+--+    ++--+-+     ++--+-+    +-----+         
              |LEAF1|      |LEAF2|    |LEAF3|     |LEAF4| ...|LEAFn|     
              +-----+      +-----+    +-----+     +-----+    +-----+
                |            |          |           |          |
            +- - - -+    +- - - -+  +- - - -+  +- - - -+   +- - - -+
            | Server|    | Server|  |Server3|  |Server4|...| Server|
            +- - - -+    +- - - -+  +- - - -+  +- - - -+   +- - - -+
                            
]]></artwork>
          </figure></t>

        <t>For multicast application in DCN, multicast source could be inside
        DCN or outside DCN.</t>

        <t>For example, a multicast stream could be from source1 to service 3
        and server 4. The multicast tree is from DC-Gateway to LEAF3 and
        LEAF4, which could be presented as:</t>

        <t>DC-GW(ingress
        node)--&gt;CORE1----&gt;SPINE3--[replicate]---&gt;LEAF3(leaf)+LEAF4(leaf)</t>

        <t>MSR6 could be used in Data Center Network(DCN) to provide scalable
        multicast solution. Only the nodes/adjacencies in the multicast tree
        are encoded in the packet with segment/bitstring, which decouples from
        network size and number of services.</t>
      </section>

      <section title="Use of MSR6 BE">
        <t>As illustrated in the following figure, a data-center may contain:
        a network fabric configured in unicast-only mode, hosts running as
        virtual machines (VMs) managed by tenants, central replicators (C-R)
        for providing MSR6 packet delivery service among the hosts of a
        tenant.</t>

        <t><figure>
            <artwork><![CDATA[
       +----+   +----+   +----+
       |C-R1|   |C-R2|   |C-Rn| ====>Central-Replicator
       +-+--+   +-+--+   +-+--+ 
         |        |        |    
   +-----+--------+--------+-----+
   | Spine +Leaf +vSwitch Fabric |
   |       (Unicast Only)        |
   +--+--+--+--+--+--+--+--+--+--+
      |  |  |  |  |  |  |  |    
      h1 |  h3 h4 |  h6 |  h8   ====>Tenant-1
         |        |     |       
         h2       h5    h7      ====>Tenant-2
]]></artwork>
          </figure></t>

        <t>Take tenant-1 for example. The host h1 can send multicast flow
        using MSR6 packets to C-R1, the MSR6 packets include one or more of
        the destination hosts h3/h4/h6/h8 encoding in the MSR6 header. An MSR6
        packet may be sent to C-R1 where it is replicated and sends to the
        desired destination hosts. An MSR6 packet may be sent to C-R1 where it
        is replicated and sends to the part of the destination hosts, and
        another copy to C-R2 for replication and delivery to the left
        destination hosts.</t>

        <t>A Tenant may have a dedicated set of C-Rs for its own use, or a
        Tenant may use a shared C-Rs for its replication requirement among
        VMs.</t>
      </section>
    </section>

    <section title="MSR6 in SD-WAN">
      <section title="SD-WAN over Public Internet">
        <t>SD-WAN can be deployed based on public Internet, where the underlay
        network is providing nothing else but a simple service normally called
        "Best Effort" unicast. In this case, security is one of the
        fundamental requiremnt in SD-WAN network. Multicast services for
        SD-WAN also request encryption. The following figure shows an example
        of SD-WAN multicast.</t>

        <t><figure>
            <artwork><![CDATA[
 IPv6 Network    +-----+       +-----+
                 | CPE1|       | CPE2|
                 +-----+       +-----+
                         **********                                
                     ****          ****                            
                   **     Internet     **                                                                          
                     ****          ****                            
                         **********        
           +-----+   +-----+       +-----+   +-----+          
           | CPE3|   | CPE4|  ...  |CPE98|   |CPE99|
           +-----+   +-----+       +-----+   +-----+ 
               **********              |       |
          ****          ****          +---------+                  
         **     Internet     **       |  Server |                                                                   
          ****          ****          | (source)|                  
              **********              +---------+    
         +-----+   +-----+              
         | CPE5|   | CPE6|              
         +-----+   +-----+              
            |         |
       +- - - - - - - - - -+   
       | Server (Receiver) |
       +- - - - - - - - - -+   
    
]]></artwork>
          </figure></t>

        <t>A multicast case in SD-WAN is from CE99 to CE3, CE5 and CE6. The
        multicast tree could presented as:</t>

        <t>CE99(ingress
        node)--&gt;CPE2--[replicate]--&gt;CE3(leaf)+CE4--[replicate]---&gt;CE5(leaf)+CE6(leaf)</t>

        <t>For MSR6, which is designed based on native IPv6, it is allowed to
        reuse IPv6 Authentication header and Encapsulating Security Payload
        header.</t>

        <t>As shown in the following figure, MSR6 header, as an IPv6 extension
        header, will not be encrypted during the P2MP transmission. So there
        is no encryption and decryption between each replication nodes and its
        downstream nodes. Encryption and decryption only happens respectively
        on the MSR6 Ingress Node and MSR6 Egress node, which could increase
        packet processing efficiency in the intermediate nodes.</t>

        <t><figure>
            <artwork><![CDATA[
     +--------------------------------+
     |          IPv6 Header           |
     +--------------------------------+
     |   IPv6 EH (MSR6 EH or Options) | 
     +--------------------------------+
     |       IPSec Header (ESP)       |
     +--------------------------------+
     |            Payload             |
     +--------------------------------+]]></artwork>
          </figure></t>
      </section>

      <section title="SD-WAN over Service-Provider Network">
        <t>Another typical deployment mode of SD-WAN is based on a Service
        provider(SP) network, where the underlay network is a managed
        network.</t>

        <t>As illustrated in the following figure, the MSR6 packet delivery
        service can enable the underlay network to provide a new service to
        SD-WAN.</t>

        <t><figure>
            <artwork><![CDATA[
               +-----------------------------------------------------+
              /                   (S,G)pkt                          /
             /                [E2]------->[h2]                     /
            /                  :                                  /
           /    (S,G)pkt       :          (S,G)pkt               /
          / [h1]------->[E1]   :      [E3]------->[h3]          /   
         /               :     :        :                      /     
        /                :     :        :       (S,G)pkt      /
       /                 :     :        :   [E4]------->[h4] /  WAN 
      /                  :     :        :     :             / Overlay  
     +-------------------:-----:--------:-----:------------+  
                         :     :        :     :
                    |    :     :        :     :   |
                    |    :     :        :     :  /|\
       (MSR6 packet)|    :     :        :     : / | \
                  \ | /  :     :        :     :   |(MSR6 packet)
                   \|/   :     :        : ....:   |
                    |    :     :        : :       |
                         :     :        : :        
                  +------:-----:--------:-:----------+
                 /       :    [B2]      : :         /
                /        :     |        : :        /
               /        [B1]    \       [B4]      /
              /            \     |      /        / 
             /              \    |     /        / 
            /                +--[B3]--+        /   SP
           /                                  / Underlay
          +----------------------------------+    
]]></artwork>
          </figure></t>

        <t>SD-WAN Edge E1 encapsulate the received (S,G) packet into an MSR6
        header, transforming the packet an MSR6 packet, and send to Service
        provider backbone router B1. According to the MSR6 routing and
        forwarding table that has pre-built for the SD-WAN, the underlay
        network delivery the received MSR6 packet to E2/E3/E4. E2/E3/E4 then
        decapsulates the outer MSR6 header, obtains the original (S,G) packet,
        and forward to h2/h3/h4.</t>
      </section>
    </section>

    <section title="Host-initiated Multicast">
      <t>There are some enterprise cases where the hosts and network device
      are managed and maintained in the same domain. MSR6 could be used to
      simplify multicast deployment without control plane protocol for
      multicast joining and leaving. The host could send/receive MSR6 packet
      and the network could replicate the packet based on MSR6 header.</t>

      <section title="Multicast for Surveillance Camera Data Transmission">
        <t>In automated factory, surveillance cameras are usually deployed to
        ensure security. Data from these surveillance cameras is transmitted
        to different sites for analysis, processing and storage.</t>

        <t>As illustrated in the following figure, the MSR6 packet delivery
        service can be used in an Industry Environment.</t>

        <t><figure>
            <artwork><![CDATA[

           +----+        +----+        +----+
   [C1]----+    |        |    +--------+ R4 +----{H1: Storage&Archive}
           | R1 +--------+    |        +----+
   [C2]----+    |        |    |        +----+
           +----+        | R3 +--------+ R5 +----{H2: AI}
                         |    |        +----+
           +----+        |    |        +----+
   [Cn]----+ R2 +--------+    +--------+ R6 +----[H3: Live Monitor]
           +----+        +----+        +----+
   
    C1/C2/Cn: Camera
    R1/R2/R3/R4/R5/R6: Router
    H1/H2/H3: Host of Applications to process the camera video. 
]]></artwork>
          </figure></t>

        <t>With the MSR6 packet delivery service supported by the network, the
        cameras can send the packet to a few applications directly by using
        MSR6 packets to encode the desired destination hosts of
        applications.</t>
      </section>

      <section title="Multicast for Audio and Video Conferencing">
        <t>Multicast can save bandwidth for audio and video conferencing in
        large enterprises. Selective Forwarding Units (SFU) <xref
        target="I-D.ietf-avtcore-rtp-topologies-update"/>, is associated
        centralized unit for scalable video coding and simulcasting, which
        could be used in audio and video conferences.</t>

        <t>MSR6 could provide multicast among SFUs as illustrated in the
        following figure. In practice, these SFUs may be open
        Real-Time-Communication(RTC) gateways, either private RTC
        implementation or open RTC like WebRTC, to support WAN scope
        meeting.</t>

        <t><figure>
            <artwork><![CDATA[
 
         {SFU1}                          {SFU2} 
           |                               |  
   C1a----[R1]-----[BR1]-------[BR2]------[R2]------C2a
          /           \         / \         
   C1b---+             \       /   \   {SFU3}
                        \     /     \    |
                         \   /       +--[R3]------C3a
                          [BR3]
                            \        {SFU4}
                             \         |
                              +-------[R4]------C4a

   C1x/C2a/C3a/C4a: WebRTC Client;
   R1/R2/R3/R4: Router;
   BR1/BR2/BR3: Backbone Router;
   SFU1/SFU2/SFU3/SFU4: Selective Forwarding Unit (WebRTC Gateway);
   
]]></artwork>
          </figure></t>

        <t>When SFU1 receives a RTC flow packet from C1a, the next step is to
        forward it to one or more of SFU2, SFU3 and SFU4, depending on the RTC
        session established by them. The SFU1 can send the packet using MSR6
        packets with the destination hosts SFU2/SFU3/SFU4 encoding in the MSR6
        header. The enterprise WAN, including the edge routers R1/R2/R3 and
        backbone routers BR1/BR2/BR3 get the MSR6 packet multicast to its
        final destinations.</t>

        <t>Using the socket API as defined in <xref target="RFC3493"/> and
        <xref target="RFC3542"/>, it has been testd that this could work on a
        host operation system. Following is an illustration of code that can
        enable a socket to send and receive an IPv6 packet with a Destination
        Options Header.</t>

        <t><figure>
            <artwork><![CDATA[
  //Code for the Sending Procedure (SFU1).
  sock_fd = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
  setsockopt(sock_fd, IPPROTO_IPV6, IPV6_DSTOPTS, (void *)extbuf, len);
      
  //Code for the Receiving Procedure (SFU2)
  sock_fd = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
  setsockopt(sock_fd, IPPROTO_IPV6, IPV6_RECVDSTOPTS, &on, sizeof(on));
]]></artwork>
          </figure></t>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document makes no request of IANA.</t>
    </section>

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

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>TBD</t>
    </section>
  </middle>

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

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

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

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

      <?rfc include="reference.I-D.ietf-avtcore-rtp-topologies-update"?>

      <?rfc include='reference.I-D.cheng-spring-ipv6-msr-design-consideration'?>
    </references>
  </back>
</rfc>
