<?xml version="1.0" encoding="UTF-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="info" ipr="trust200902" docName="draft-mankamana-pim-multicast-over-srv6-01">
<?rfc toc="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc symrefs="yes"?>

  <!-- ***** FRONT MATTER ***** -->
  <front>
    <title abbrev="Multicast over SRv6 networks"> Multicast over SRv6 networks </title>
    
    <author initials="M" surname="Mishra" 
        fullname="Mankamana Mishra"> 
    <organization>Cisco Systems</organization>
	  <address>
		   <postal>
			 <street>821 Alder Drive,</street>

			<region>MILPITAS, CALIFORNIA 95035</region>

			<country>UNITED STATES</country>
		   </postal>

		   <phone></phone>
		   <email>mankamis@cisco.com</email>
		  </address>
    </author>
    <author initials="Z" surname="Zhang" 
        fullname="Zhaohui Zhang"> 
    <organization>Juniper Networks</organization>
	  <address>
		   <postal>
			 <street></street>

			<region></region>

			<country>UNITED STATES</country>
		   </postal>

		   <phone></phone>
		   <email>zzhang@juniper.net</email>
		  </address>
    </author>
    <author initials="H" surname="Bidgoli" 
        fullname="Hooman Bidgoli"> 
    <organization>Nokia</organization>
	  <address>
		   <postal>
			 <street></street>

			<region></region>

			<country> Canada </country>
		   </postal>

		   <phone></phone>
		   <email>hooman.bidgoli@nokia.com</email>
		  </address>
    </author>
    
        <author initials="M" surname="Busari" 
        fullname="Mudashiru Busari"> 
    <organization>Aramco</organization>
	  <address>
		   <postal>
			 <street></street>

			<region></region>

			<country> </country>
		   </postal>

		   <phone></phone>
		   <email>Mudashiru.Busari.1@Aramco.com</email>
		  </address>
    </author>
    
        <author initials="L" surname="Jalil" 
        fullname="Luay Jalil"> 
    <organization>Verizon</organization>
	  <address>
		   <postal>
			 <street></street>

			<region></region>

			<country> USA </country>
		   </postal>

		   <phone></phone>
		   <email>luay.jalil@verizon.com</email>
		  </address>
    </author>
    

 

    <date year="2026"/>    
    <area>Routing</area>
    <workgroup>Network Working Group</workgroup>
    <abstract>
        <t>
	        This document presents solutions for deploying multicast in SRv6 networks. It explores the use of the native IPv6 multicast data plane for multicast distribution. The document discusses distributed control plane mechanisms, including PIM, and its integration with IGP Flex-Algo to optimize multicast delivery. The document also addresses overlay multicast solutions for both the Global Table Multicast (GTM) and Multicast VPNs (MVPNs), utilizing IP-in-IPv6 encapsulation without requiring additional shim layers.
        </t>
    </abstract>
  </front>

  <!-- ***** MIDDLE MATTER ***** -->

  <middle>
      <section title="Introduction">
          <t>Segment Routing, as defined in <xref target="RFC8402"/>, is a source-routing paradigm that simplifies network operations and enhances scalability. Segment routing is defined for unicast.  The application of the source-route concept to Multicast is declared out-of-scope in <xref target="RFC8402"/>.
	          </t>
	          <t>
Since multicast distribution is orthogonal to segment routing, classic multicast solutions are leveraged to provide multicast services in a segment routing network. In SR-MPLS networks, operators traditionally leveraged solutions based on IPv4 or MPLS data planes for multicast distribution, as both data planes were available in these networks.
  </t>
	          <t>
However, with the advent of SRv6, network use a unifying IPv6 data plane end-to-end, replacing the need for MPLS or IPv4. While migrating the networks to SRv6, multicast services can still use the MPLS or IPv4 data planes, as ships-in-the-night. But the target is an IPv6-only SRv6 network.
  </t>
	          <t>
This document focuses on deploying multicast in IPv6-only networks and describes possible solutions. Key Topics Addressed:
   <list style="number">
	   <t> Leveraging IPv6’s native multicast capabilities for SRv6 networks. </t>
	   <t> Distributed and centralized control planes for multicast.</t>
	   <t> Overlay solutions for supporting multicast in IPv6-only networks.</t>
</list>
          </t> 




      </section>     

      <section title="Terminology">
          <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"/>  .
          </t>
          <t> 
	      <list style="number">
		      <t> PIM: Protocol Independent Multicast</t>
		      <t> PIM-SM: PIM Sparse Mode</t>
		      <t> PIM-SSM: PIM Source Specific Multicast</t>
		      <t> MVPN: Multicast Virtual Private Network</t>
		      <t> MBGP: Multi-protocol Border Gateway Protocol</t>
		      <t> IGMP: Internet Group Management Protocol</t>
		      <t> MLD: Multicast Listener Discovery</t>
		      <t> I-PMSI : Inclusive P-Multicast Service Interface</t>
		      <t> S-PMSI: Selective P-Multicast Service Interface</t>
		      <t> P(S,G) : Multicast flow (S,G) in provider network</t>
		      <t> C(S,G) : Multicast flow (S,G) in customer network</t>
		      <t> All the terminology from <xref target="RFC6514"/> is also applicable in this draft. </t>
		      </list>
		      </t>    
      </section>
      




      <section title="IPv6 Data plane">
	      <t>
		      Segment Routing over IPv6 micro-segments (SRv6 uSID) enables end-to-end service delivery across domains using the IPv6 protocol without additional shim layers or gateways. This makes the IPv6 protocol fully self-sufficient for unicast services. And its built-in multicast capabilities makes IPv6 also self-sufficient for multicast distribution.
		      </t>
		      <section title="Multicast forwarding state">
			      <t>
				      To forward multicast packets, multicast forwarding state must be set up on the nodes in the multicast distribution trees. A typical IPv6 multicast route comprises:
				      <list style="number">
					      <t> (Source Address, Group Address) or (S, G)
						      <list>
							      <t>Identifying the distribution tree </t>
							      <t>Source (S): The IPv6 address of the streaming device, which can also be * (any source) </t>
							      <t>Group (G): The multicast IPv6 group address </t>
							      </list> </t>
						  <t>
							  Incoming interface : The interface receiving the multicast packets, also known as the Reverse Path Forwarding (RPF) interface
							  </t>
						 <t>
							 Downstream interfaces : The set of interfaces where the multicast packets will be forwarded
							 </t>
					      </list>
				      </t>
			      </section>
			      
			  <section title="Route instantiation">
				  <t>
					  Like IPv6 unicast routes, IPv6 multicast routes can be instantiated dynamically through control plane protocols (e.g., PIM) or north-bound APIs. This document focuses only on PIM instantiated multicast forwarding state and complimentary document will cover north bound API route instantiation. 
					  </t>
				  </section>
      </section>
      
 <section title="Distributed Control Plane">
	 
	  <section title="PIM-SM">
		  <t>
			  Protocol Independent Multicast Sparse Mode (PIM-SM) <xref target="RFC7761"/> is the most common multicast routing protocol, supporting both Any Source Multicast (ASM) and Source-Specific Multicast (SSM).
			  </t>
		   <t>
			   PIM-SM builds multicast distribution trees by leveraging the RPF interface derived from unicast routing tables. PIM-SSM is a subset of PIM-SM that does not use the Rendezvous Points (RPs) but instead requires that receivers know the (source, group) pair and signal that explicitly.  Most current routing platforms support PIM-SM.
			   </t>
			<t>
				As its name implies, PIM is independent of the underlying unicast routing protocol and leverages the unicast routing tables to establish the multicast trees. It builds a distribution tree by joining the tree via the RPF interface, which is the interface that would be used to reach the source via unicast routing.
			</t>
			
			<t>
				For a detailed introduction to PIM-SM and PIM-SSM, refer to Sections 3 and 4.8 of <xref target="RFC7761"/>.
				</t>

      </section>
      
      
      <section title = "PIM-SM with Flex-Algo">
	      <t>
		      By default, a multicast source advertised in the IGP is reachable via the IGP shortest-path (SPT algorithm 0). Therefore, by default, the distribution tree follows the IGP shortest-path tree.
		      </t>
		  <t>
			  Flex-Algo (<xref target="RFC9350"/>, <xref target="RFC9502"/>) enables using customized algorithms to compute IGP shortest paths. When a multicast source (S1) is advertised with a specific Flex-Algo (e.g., FA128), PIM-SM builds the distribution trees rooted at S1 along the shortest paths defined by the Flex-Algo FA128. This effectively traffic-engineers the path of the multicast packets streamed by S1.
			  </t>
			  <t>
				  In an example use case, an operator uses FA128 to optimize the min-delay link metrics, providing low-delay paths. The multicast distribution trees using FA128 provide low-delay distribution, improving real-time applications like video streaming.
				  </t>

      </section>
      </section>
      


      <section title="Centralized Control plane">
	      <t>
		   Certain multicast use cases require explicit control over distribution trees, beyond what is possible with PIM combined with Flex-Algo. Very specific or complex traffic-engineered distribution trees may not be practical or possible using PIM. Dynamic distributed protocols may be undesirable in a network where strict determinism is required. Or the network operator wants to avoid the PIM protocol mechanisms (such as messages and RPF selection).
		      </t> <t>
		     In these scenarios, a centralized controller can compute and instantiate multicast forwarding entries on the routers in the distribution trees. The controller maintains the IPv6 multicast forwarding entries and updates them when needed, e.g., following a topology change. These forwarding entries are explicitly instantiated native IPv6 multicast forwarding entries. They can be statically configured by the operator like static unicast routes or explicitly instantiated by a controller via a north-bound API.
 
		   </t> <t>
			   The benefits of centralized control are that it enables complex traffic-engineered multicast trees and it removes the dependence on PIM protocol mechanisms.
			 </t> <t>
				 On the data plane this solution still uses the well-know native IPv6 multicast forwarding entries.
				</t> <t>
					The explicitly instantiated distribution trees and PIM-created trees can coexist in the network by using different multicast sources and groups for both mechanisms.     
			   
			   </t>
      </section>




      
      <section title="Virtualization and Overlay Solutions">
	      <t>
		  Legacy IPv4 multicast implementations are often difficult or impossible to migrate to IPv6. Some services require multicast (IPv4 or IPv6) within a VPN, necessitating an overlay solution. These solutions leverage the native IPv6 multicast underlay by encapsulating the overlay IP multicast packets in IPv6 using IP-in-IPv6 encapsulation without intermediate shim layers.
		      </t>
		      
		  <t>
			  The native IPv6 underlay transport distribution trees can be established using any of the mechanisms described in sections 6 and 7.
			  </t>
		<t>
			To deploy overlay IP multicast services in an IPv6-only network, existing solutions are used. There are no SRv6-specific requirements for these solutions. These solutions enable transporting overlay IP multicast (IPv4 and IPv6), in a Global Table Multicast (GTM) or MVPN context, over an IPv6-only network, encapsulated as IP-in-IPv6.
			</t>
		<t>
			As existing native IPv6 capabilities are leveraged, there are no SRv6 specific procedures for this solution.
		</t>
		
		<t>
			Specifically, the following RFCs are relevant in this context:
			<list style="number">
				<t><xref target="RFC6513"/> specifies the architecture for Multicast Virtual Private Networks (MVPNs) in MPLS/BGP IP VPN environments. While it includes MPLS in its title, it also provides significant details relevant to IP-only solutions for MVPNs. The document describes how multicast traffic is transported over VPNs, how control plane signaling establishes the multicast forwarding paths, and the encapsulation mechanisms for data plane traffic. </t>
				<t><xref target="RFC6514"/> defines the specific BGP encodings and procedures for signaling multicast routing information in MVPNs as specified in <xref target="RFC6513"/>. </t>
				<t><xref target="RFC6515"/> updates <xref target="RFC6514"/> to ensure that service providers can use either IPv4 or IPv6 addresses for internal infrastructure (e.g., PE-to-PE or PE-to-P router communication) in the context of multicast VPNs. This is particularly relevant in IPv6-only transport networks. </t>
				<t>RFC 7716 extends the MVPN procedures defined in <xref target="RFC6514"/> to support Global Table Multicast (GTM), i.e., multicast routing in the global routing table rather than within the context of VPNs. This is particularly relevant in IPv6-only networks that require IPv4 multicast services without using VPNs. </t>
				<t><xref target="RFC8950"/> addresses the challenge of advertising IPv4 NLRIs in BGP updates when the next hop is an IPv6 address. This is particularly relevant for enabling IPv4 routing in IPv6-only networks. </t>

 				</list>
 				As an example, the following solution could be used to provide an MVPN service in an SRv6 network. Note that other solutions may equally be possible.
			</t>
			<t>
				The native IPv6 multicast provider distribution trees (P-Multicast Service Interfaces (PMSIs) or P-tunnels) are build using PIM-SSM, signaling the PMSI A-D routes in MP-BGP. PIM is used to signal multicast participation between CE and PE. MP-BGP is used to signal the customer multicast routes between the MVPN PEs. The overlay customer multicast packets are transported over the network using IP-in-IPv6 encapsulation, traversing the underlay PMSI distribution trees.
				</t>
			
			
      </section>
      
      <section title="Data plane IP in IP Encapsulations">
          <t> 
	  IP in IP encapsulation is used when sending IPv4  multicast traffic though provider multicast tree. The following diagram shows the progression of the packet as it enters and leaves the service provider network.  
	
          </t>
          
                          <t>
                  <figure>
                <artwork>
	                
Packet Received                    Packet in Transit                      Packet forwarded 
at Ingress PE                      in the service                         by egress PEs
                                   provider network
                                  +---------------------+
                                  |    P-IPv6 Header    |
+-------------------+             +---------------------+              +-------------------+
|    C-IPv4 header  |             |    C-IPv4 Header    |              |     C-IPv4 header |
+-------------------+  >>>>>>>>>> +---------------------+ >>>>>>>>>>>> +-------------------+
|    C-Payload      |             |    C-Payload        |              |     C-Payload     |
+-------------------+             +---------------------+              +-------------------+

The “Next Header” field in the P-IP IPv6 Header MUST be set to 4 
   Since the C-IP header is an IPv4 header.
                </artwork>
                  </figure>
                </t>
                
                           <t>
                  <figure>
                <artwork>
	                
Packet Received                    Packet in Transit                      Packet forwarded 
at Ingress PE                      in the service                         by egress PEs
                                   provider network
                                  +---------------------+
                                  |    P-IPv6 Header    |
+-------------------+             +---------------------+              +-------------------+
|    C-IPv6 header  |             |    C-IPv6 Header    |              |     C-IPv6 header |
+-------------------+  >>>>>>>>>> +---------------------+ >>>>>>>>>>>> +-------------------+
|    C-Payload      |             |    C-Payload        |              |     C-Payload     |
+-------------------+             +---------------------+              +-------------------+

The “Next Header” field in the P-IP IPv6 Header MUST be set to 41 
   Since the C-IP header is an IPv6 header.
                </artwork>
                  </figure>
                </t>
                
      </section>
      
      
      
      <section title="IANA Considerations">
          <t> 
	         Informational draft and nothing required from IANA. 
	
          </t>
      </section>

      <section title="Security Considerations">
          <t> 
	          There is no new security issue imposed by this draft on top of <xref target="RFC8950"/>, <xref target="RFC6513"/>. <xref target="RFC6514"/>, <xref target="RFC6515"/>, <xref target="RFC7761"/>. 
          </t>
      </section>

      <section title="Acknowledgement">
          <t> 
          </t>
      </section>
            <section title="Contributors">
          <t> 
	          <list>
		          <t> Kris Michielsen </t>
		          <t> Anuj Budhiraja</t>
		          <t> Zafar Ali</t>
		          <t> Zubair Khan </t>
		          </list>
          </t>
      </section>

    
    
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>

      <references title='Normative References'>
	       <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
	        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7761.xml"/>
	        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6532.xml"/>
	        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6514.xml"/>
	        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8402.xml"/>
	        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9350.xml"/>
	        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9502.xml"/>
	        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6515.xml"/>
	        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8950.xml"/>
	        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6513.xml"/>
      </references>

  </back>
</rfc>
