<?xml version="1.0" encoding="US-ASCII"?>
<?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 xmlns:xi="http://www.w3.org/2001/XInclude"
     category="std" docName="draft-ietf-spring-srv6-mpls-interworking-02"
     ipr="trust200902"
     submissionType="IETF">
  <front>
    <title>SRv6 and MPLS interworking</title>

    <author fullname="Swadesh Agrawal" initials="S." role="editor" surname="Agrawal">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country/>
        </postal>

        <email>swaagraw@cisco.com</email>
      </address>
    </author>

    <author fullname="Clarence Filsfils" initials="C." surname="Filsfils">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country/>
        </postal>

        <email>cfilsfil@cisco.com</email>
      </address>
    </author>
    
    <author fullname="Daniel Voyer" initials="D." surname="Voyer">
      <organization>Bell Canada</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country>Canada</country>
        </postal>

        <email>daniel.voyer@bell.ca</email>
      </address>
    </author>

    <author fullname="Gaurav dawra" initials="G." surname="Dawra">
      <organization>LinkedIn</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

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

        <email>gdawra.ietf@gmail.com</email>
      </address>
    </author>

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

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

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

        <email>robinli314@163.com</email>
      </address>
    </author>
    
    <author fullname="Shraddha Hegde" initials="S." surname="Hegde">
      <organization>Juniper Networks</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country></country>
        </postal>

        <email>shraddha@juniper.net</email>
      </address>
    </author>

    <date year=""/>

    <area>Routing</area>

    <workgroup>SPRING</workgroup>

    <keyword>interworking</keyword>

    <keyword>Segment Routing</keyword>

    <abstract>
      <t>This document describes interworking between SRv6 and MPLS domains to provide
      end to end path. Interworking problem is generalized into various 
      interworking scenarios. These scenarios are stitched either by transport 
      interworking or service interworking. New SRv6 SID endpoint behaviors are 
      defined for the purpose. These new SRv6 SID behaviors and MPLS labels stitch 
      end to end path across different data plane.</t>

    </abstract>

    <note title="Requirements Language">
      <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>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>The incremental deployment of SRv6 into existing networks require SRv6 to
      interwork and co-exist with MPLS. This document introduces interworking 
      scenarios and building blocks for solution to interconnect them.</t>
      
      <t>This document assumes SR-MPLS-IPv4 for MPLS domain but the design equally works 
      for SR-MPLS-IPv6, LDP-IPv4/IPv6 and RSVP-TE-MPLS label binding protocols.
      </t>
      
      <section anchor="REQ" title="Requirements Language">
        <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>
      
    <section anchor="IWSCENARIOS" title="Interworking(IW) scenarios">
      <t>A multi-domain network (<xref target="REFERENCETOPOLOGY"/>) can be 
      generalized as a central domain C with many leaf domains around it. 
      Specifically, the document looks at a service flow from an ingress PE in an 
      ingress leaf domain (LI), through the C domain and up to an egress PE of 
      the egress leaf domain (LE). Each domain runs its own IGP instance. 
      Generally, a domain has a single data plane type applicable both for overlay 
      and underlay.</t>
      
      <figure anchor="REFERENCETOPOLOGY" title="Reference multi-domain 
        network topology"><artwork><![CDATA[                                       
          +-----+                +-----+  RD:V/v via 10   +-----+
   .......|S-RR1|<...............|S-RR2|<.................|S-RR3| <..
   :      +-----+                +-----+                  +-----+   :             
   :                                                                :
   :                                                                : 
+--:-------------------+----------------------+---------------------:-+
|  :      | 2 |        |        | 5 |         |         | 8 |       : |
|  :      +---+        |        +---+         |         +---+       : |
|  :                   |                      |                     : |
|  :                   |                      |                     : |
|  :                   |                      |                     : |
|----+    IGP1       +---+        IGP2      +---+      IGP3      +----|    
| 1  |               | 4 |                  | 7 |                | 10 |
|----+               +---+                  +---+                +----|
|                      |                      |                       |
|                      |                      |                       |
|                      |                      |                       |
|         +---+        |        +---+         |         +---+         |
|         | 3 |        |        | 6 |         |         | 9 |         |
+----------------------+----------------------+-----------------------+
iPE                   iBR                    eBR                     ePE

<----------LI---------><----------C----------><-----------LE---------->       
          ]]></artwork>
        </figure>
      
      <t>There are various SRv6 and MPLS interworking scenarios possible.</t>
      <t>Below scenarios cover various cascading of SRv6 and MPLS networks, e.g., 
        SR-MPLS-IPv4 &lt;-&gt; SRv6 &lt;-&gt; SR-MPLS-IPv4 &lt;-&gt; SRv6 &lt;-&gt; 
        SR-MPLS-IPv4 etc, though not all combinations are described for brevity.
      </t>
        
        <section anchor="TransportIW" title="Transport IW">
          <t>Provider Edge (PE) nodes deploy either MPLS-based <xref target="RFC4364"/> or 
          SRv6 Service SID-based <xref target="RFC9252"/> BGP services (L3VPN, EVPN, GRT) 
          through service Route Reflectors. Service endpoint (PE loopback address for MPLS 
          or locator for SRv6) signaling through border nodes and corresponding forwarding 
          state provide interworking over intermediate transport domains. 
            <list style="symbols">
       		<t>SRv6 over MPLS (6oM)
       		  <list style="symbols">
       		  <t>LI and LE domains are SRv6 data plane, C is MPLS data plane.</t>
       		  <t>L3/L2 BGP SRv6 service <xref target="RFC9252"/> extend between PEs. 
       		  The ingress PE encapsulates the service traffic in an outer IPv6 
       		  header where the SRv6 Service SID is the last segment.</t>
       		  <t>Transport IW border nodes forward SRv6 encapsulated traffic destined to 
       		  egress PE over MPLS C domain.</t>
       		  </list>
       		</t>
			<t>MPLS over SRv6 (Mo6)
			  <list style="symbols">
       		  <t>LI and LE domains are MPLS data plane, C is SRv6 data plane.</t>
       		  <t>L3/L2 BGP MPLS service (<xref target="RFC4364"/>, 
       		  <xref target="RFC7432"/>) extend between PEs.
       		  The ingress PE encapsulates the service traffic in an MPLS service label and 
       		  tunnel it through MPLS LSP to egress PE.</t>
       		  <t>Transport IW nodes forward encapsulated label stack to egress PE over 
       		  SRv6 C domain.</t>
       		  </list>
			</t>
			</list>
		  </t>
		  <t>Note: Easiest and most probable deployment is ships in the night i.e. 
		  supporting dual stack and IPv4 MPLS in each domain.</t>
		</section>
		<section  anchor="ServiceIW" title="Service IW">
		  <t>BGP L2/L3 service encapsulation interworking between SRv6 SID-based and 
		   MPLS-based PEs for service connectivity across domains of different data planes.
		   BGP L2/L3 service route encapsulation type change and corresponding 
		   forwarding state at border node provide interworking between PEs.
		
		    <list style="symbols">  	
			<t>SRv6 to MPLS(6toM): The ingress PE encapsulates the service traffic 
			in an outer IPv6 header where the destination address is the SRv6 
			Service SID<xref target="RFC9252"/>. Service traffic reaches egress PE 
			with an MPLS encapsulation where bottom most label is a service 
	        label <xref target="RFC4364"/> that PE advertised with the service prefix.
            </t>
			<t>MPLS to SRv6 (Mto6): The ingress PE encapsulates the service traffic 
			in an MPLS encapsulation where bottom most label is a service label. 
			Service traffic reaches egress PE with IPv6 encapsulation where IPv6 
			destination address is a SRv6 service SID that PE advertised with 
			the service prefix.
			</t>
		    </list>
          </t>
        </section>  
    </section>
    
   <section title="Terminology">
        <t>The following terms used within this document are defined in 
        <xref target="RFC8402"/>: Segment Routing, SR-MPLS, SRv6, SR Domain, 
        Segment ID (SID), SRv6 SID, Prefix-SID.</t>
        
        <t>Domain: Without loss of the generality, domain is assumed to be instantiated 
        by a single IGP instance or a network within IGP if there is clear 
        separation of data plane.</t>
 
        <t>Node k has a classic IPv6 loopback address Ak::1/128.</t>
         
        <t>A SID at node k with locator block B and function F is represented by B:k:F::
        </t>

      	<t>A SID list is represented as &lt;S1, S2, S3&gt; where S1 is the first SID
        to visit, S2 is the second SID to visit and S3 is the last SID to
        visit along the SR path.</t>

        <t>(SA,DA) (S3, S2, S1; SL) represents an IPv6 packet with:</t>

        <t>IPv6 header with source address SA, destination addresses DA and
        SRH as next-header</t>

        <t>SRH with SID list &lt;S1, S2, S3&gt; with SegmentsLeft = SL</t>

        <t>Note the difference between the &lt;&gt; and () symbols: &lt;S1, S2, S3&gt;
        represents a SID list where S1 is the first SID and S3 is the last
        SID to traverse.  (S3, S2, S1; SL) represents the same SID list but
        encoded in the SRH format where the rightmost SID in the SRH is the
        first SID and the leftmost SID in the SRH is the last SID.  When
        referring to an SR policy in a high-level use-case, it is simpler
        to use the &lt;S1, S2, S3&gt; notation.  When referring to an
        illustration of the detailed packet behavior, the (S3, S2, S1; SL)
        notation is more convenient.</t>
    </section>
    
    <section anchor="SRv6SIDBehavior" title="SRv6 SID behavior">
      <t>This document introduces a new SRv6 SID behaviors. These behaviors are executed
      on border node between the SRv6 and MPLS domain.</t>
      
        <section anchor="ENDDTM" title="End.DTM">
          <t>The "Endpoint with decapsulation and lookup in MPLS table" behavior.</t>
	      <t>The End.DTM SID MUST be the last segment in a SR Policy, and a SID 
	      instance is associated with an MPLS table.</t>
	      <t>When N receives a packet destined to S and S is a local End.DTM SID,
	      N does:</t>
	      <figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left != 0) {
S03.      Send an ICMP Parameter Problem to the Source Address,
          Code 0 (Erroneous header field encountered),
          Pointer set to the Segments Left field,
          interrupt packet processing and discard the packet.
S04.   }
S05.   Proceed to process the next header in the packet
S06. }
             
When processing the Upper-layer header of a packet matching a FIB
entry locally instantiated as an End.DTM SID, N does:

S01. If (Upper-Layer Header type == 137(MPLS) ) {
S02.    Remove the outer IPv6 Header with all its extension headers
S03.    Set the packet's associated FIB table to MPLS table T
S04.    Submit the packet to the MPLS FIB lookup for
        transmission according to the lookup result.
S05. } Else {
S06.    Process as per RFC8986 section 4.1.1
S07. }
             ]]></artwork>
          </figure>
             
        </section>
        
        <section anchor="ENDDTM46" title="End.DTM46">
          <t>The "Endpoint with decapsulation and lookup in MPLS table or Global IP table" 
          behavior.</t>
	      <t>The End.DTM46 SID MUST be the last segment in a SR Policy, and a SID 
	      instance is associated with the MPLS table, the Global IPv4 FIB table and 
	      the Global IPv6 FIB table. This behavior is superset of End.DTM and the procedures 
	      defined in the document using End.DTM works with End.DTM46 as well.</t>
	      <t>When N receives a packet destined to S and S is a local End.DTM46 SID,
	      N does:</t>
	      <figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left != 0) {
S03.      Send an ICMP Parameter Problem to the Source Address,
          Code 0 (Erroneous header field encountered),
          Pointer set to the Segments Left field,
          interrupt packet processing and discard the packet.
S04.   }
S05.   Proceed to process the next header in the packet
S06. }
             
When processing the Upper-layer header of a packet matching a FIB
entry locally instantiated as an End.DTM46 SID, N does:

S01. If (Upper-Layer Header type == 137(MPLS) ) {
S02.    Remove the outer IPv6 Header with all its extension headers
S03.    Set the packet's associated table to MPLS table
S04.    Submit the packet to the MPLS FIB lookup for
            transmission according to the lookup result.
S05. } Else if (Upper-Layer header type == 4(IPv4) ) {
S06.    Remove the outer IPv6 header with all its extension headers
S07.    Set the packet's associated FIB table to Global IPv4 table
S08.    Submit the packet to the IPv4 FIB lookup for
              transmission to the new destination
S09. } Else if (Upper-Layer header type == 41(IPv6) ) {
S10.    Remove the outer IPv6 header with all its extension headers
S11.    Set the packet's associated FIB table to Global IPv6 table
S12     Submit the packet to the IPv6 FIB lookup for
              transmission to the new destination
S13  } Else {
S14.    Process as per RFC8986 section 4.1.1
S15. }
             ]]></artwork>
          </figure>
             
        </section>
        
        <section anchor="ENDDXM" title="DXM behaviors">
          <t>The "Endpoint behavior with decapsulation and push of MPLS 
          label stack".</t>
          <t> 
          DXM behavior maps or translates SRv6 SID to MPLS label stack that operates 
          similar to label cross-connect functionally at border node. DXM SID MUST be 
          the last segment.</t>
          
          <t>The behavior is associated to the FEC <xref target="RFC3031"/> and determine 
          the expected Upper-layer header type in the IPv6 header. Different DXM variants
          are specified for various FECs (for example L3 IPv4, L3 IPv6, L2 service).
          </t>
          
          <section anchor="ENDDXM4" title="End.DXM4">
          <t>SRv6 SID of End.DXM4 behavior is allocated for IPv4 layer 3 VPN/EVPN service 
          label switch path such as signalled by BGP AFI=1 and SAFI=128 
          <xref target="RFC4364"/>. End.DXM4 behavior cross-connects virtual layer 3 IPv4 
          payload. Upper-Layer Header type is 4 as payload is IPv4 packet.</t>
	      
	      <t>When N receives a packet destined to S and S is a local End.DXM4 SID,
	      N does:
	      <figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left != 0) {
S03.      Send an ICMP Parameter Problem to the Source Address,
          Code 0 (Erroneous header field encountered),
          Pointer set to the Segments Left field,
          interrupt packet processing and discard the packet.
S04.   }
S05.   Proceed to process the next header in the packet
S06. }
             
When processing the Upper-layer header of a packet matching a FIB
entry locally instantiated as an End.DXM4 SID, N does:

S01. If (Upper-Layer Header type == 4(IPv4)) {
S02. Remove the outer IPv6 Header with all its extension headers
S03. Push the MPLS label stack associated with S
S04. and forward the resulting packet to next node in LSP path.
S05.  } Else {
S06.    Process as per RFC8986 section 4.1.1
S07. }
    
             ]]></artwork>
          </figure></t>
          
          </section>
          <section anchor="ENDDXM6" title="End.DXM6">
          <t>SRv6 SID of End.DXM6 behavior is allocated for IPv6 layer 3 VPN/EVPN service 
          label switch path such as signalled by BGP AFI=2 and SAFI=128 
          <xref target="RFC4364"/>. End.DXM6 behavior cross-connects virtual layer 3 IPv6 
          payload. Upper-Layer Header type is 41 as payload is IPv6 packet.</t>
          
          	      
	      <t>When N receives a packet destined to S and S is a local End.DXM6 SID,
	      N does:
	      <figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left != 0) {
S03.      Send an ICMP Parameter Problem to the Source Address,
          Code 0 (Erroneous header field encountered),
          Pointer set to the Segments Left field,
          interrupt packet processing and discard the packet.
S04.   }
S05.   Proceed to process the next header in the packet
S06. }
             
When processing the Upper-layer header of a packet matching a FIB
entry locally instantiated as an End.DXM6 SID, N does:

S01. If (Upper-Layer Header type == 41(IPv6)) {
S02. Remove the outer IPv6 Header with all its extension headers
S03. Push the MPLS label stack associated with S
S04. and forward the resulting packet to next node in LSP path.
S05.  } Else {
S06.    Process as per RFC8986 section 4.1.1
S07. }
    
             ]]></artwork>
          </figure></t>
          
          </section>
          <section anchor="ENDDXM2" title="End.DXM2">
          <t>SRv6 SID of End.DXM2 behavior is allocated for layer 2 virtual service 
          label switch path such as specified in <xref target="RFC7432"/>. End.DXM2 
          behavior cross-connects virtual layer 2 payload. Upper-Layer Header type is 
          143 as payload is Ethernet.</t>
          
          	      
	      <t>When N receives a packet destined to S and S is a local End.DXM2 SID,
	      N does:
	      <figure><artwork><![CDATA[
S01. When an SRH is processed {
S02.   If (Segments Left != 0) {
S03.      Send an ICMP Parameter Problem to the Source Address,
          Code 0 (Erroneous header field encountered),
          Pointer set to the Segments Left field,
          interrupt packet processing and discard the packet.
S04.   }
S05.   Proceed to process the next header in the packet
S06. }
             
When processing the Upper-layer header of a packet matching a FIB
entry locally instantiated as an End.DXM2 SID, N does:

S01. If (Upper-Layer Header type == 143(ethernet)) {
S02. Remove the outer IPv6 Header with all its extension headers
S03. Push the MPLS label stack associated with S
S04. and forward the resulting packet to next node in LSP path.
S05.  } Else {
S06.    Process as per RFC8986 section 4.1.1
S07. }
    
             ]]></artwork>
          </figure></t>
          
          </section>
        </section>
    </section>

    <section anchor="SRv6HeadEndbehavior" title="SRv6 Policy Headend Behaviors">
      <section title="H.Encaps.M: H.Encaps applied to MPLS label">
        <t>The H.Encaps.M behavior encapsulates MPLS Label stack
        <xref target="RFC3032"/> packet in an IPv6 header possibly with an SRH. 
        MPLS label stack and its payload together becomes the payload of 
        the new IPv6 header. The Next Header field of the IPv6 header or SRH MUST be set 
        to 137 <xref target="RFC4023"/>.</t> 
      </section>
        
      <section title="H.Encaps.M.Red: H.Encaps.Red applied to MPLS label stack">
        <t>The H.Encaps.M.Red behavior is an optimization of the H.Encaps.M 
        behavior. H.Encaps.M.Red reduces the length of the SRH by excluding 
        the first SID in the SRH of the pushed IPv6 header. The first SID is 
        only placed in the Destination Address field of the pushed IPv6 header.
        The push of the SRH MAY be omitted when the SRv6 Policy only contains 
        one segment and there is no need to use any flag, tag or TLV. In such 
        case, the Next Header field of the IPv6 header or SRH MUST be set to 137 
        <xref target="RFC4023"/>.</t>
      </section>  
    </section>
    
    <section anchor="InterconnectingBindingSIDs" title="Interconnecting Binding SIDs">
      <t>Binding Segment (BSID) is bound to an SR policy <xref target="RFC8402"/> and 
      provides domain opacity. Opacity fits well for interworking because
      an SR-MPLS BSID label can be bound to an SRv6 Policy and an SRv6 BSID can be bound to 
      an SR-MPLS Policy. Such BSIDs are called as interconnecting BSIDs and help to
      represent intermediate domain of different data plane type as a SID of ingress
      domain dataplane type in the headend policy. The IW SR-PCE solution 
      <xref target="SRPCEODN"/> leverage these BSIDs as segments of SR policy on 
      headend domain.</t>
    </section>
    
    
    <section title="Interworking Procedures">
      <t>The procedures in this section are illustrated using the reference multi-domain 
      network topology <xref target="REFERENCETOPOLOGY"/> and its description 
      <xref target="IWSCENARIOS"/>.</t> 
       
      <t>Following is assumed of data plane support at various nodes:
        <list style="symbols">
        <t>Nodes 2,3,5,6,8,9 are provider(P) nodes that need to support 
        single data plane type.</t>
        <t>Nodes 1 and 10 are PEs. They support single data plane type in overlay and 
        underlay.
        </t>
        <t>Nodes 4 and 7 are border nodes that support both the SRv6 and MPLS data plane.</t>
        </list>
      </t>
       
      <t>A VPN route is advertised via service RRs (S-RR) from an egress PE(node 10) 
      to an ingress PE (node 1).</t>
      <t>For illustrations, the SRGB range starts from 16000 and prefix SID of a node 
      is 16000 plus node number</t>
      
      <section title="Transport IW">
        <t>As described in <xref target="TransportIW"/>, transport IW requires:
          <list style="symbols"> 
          <t>For 6oM, tunnel traffic destined to SRv6 Service SID of egress PE over 
          MPLS C domain.</t>
          <t>For Mo6, tunnel MPLS encapsulated traffic destined to Loopback address of 
          egress PE over SRv6 C domain.</t> 
          </list>
        </t>
        <t>This draft enhances two well-known solutions to achieve above:
          <list style="symbols">
          <t>An SR-PCE <xref target="RFC8664"/> multi-domain On Demand Next-hop (ODN) 
          SR policy <xref target="RFC9256"/> that stitches end to end path across different 
          data plane domains using interconnecting binding SIDs. These procedures 
          can be used when overlay prefixes are signaled with a color extended community 
          <xref target="RFC9012"/>.
          </t>
          <t>BGP Inter-Domain routing procedures that advertise and propagate PE locator 
          or Loopback address across domains. During propagation, domain border node set 
          nexthop to self that result in allocation of label or SRv6 SID depending on 
          dataplane type of the domain where prefix is propagated. These procedure 
          can provide both best effort or intent aware end to end path.
          </t>
          </list>
        </t>
        
        <section anchor="SRPCEODN" title="SR-PCE multi-domain On Demand Nexthop">
          <t>This procedure provides a best-effort path as well as a path that satisfies 
          the intent (e.g. low latency), across multiple domains. Service routes 
          (VPN/EVPN) are received on ingress PE with color extended community from 
          egress PE. A Color is a 32-bit numerical value that associates an SR Policy 
          with an intent <xref target="RFC9256"/>. 
          Ingress PE does not know how to compute the traffic engineered path through 
          the multi-domain network to egress PE and requests SR-PCE for it. The SR-PCE 
          is aware of interworking requirement at border nodes as it is fed with BGP-LS 
          topological information from each domain. It programs intermediate domain 
          data plane specific policy on border nodes for the given intent and 
          represents it in end-to-end path SID list on ingress PE leveraging 
          <xref target="InterconnectingBindingSIDs"/>.</t>
          
          <t>Below sections describe 6oM and Mo6 IW with SR-PCE</t>
        
          <section title="6oM">
            <t>Service prefix (e.g. VPN or EVPN) is received on head-end (node 1)
            with color extended community (C1) from egress PE (node 10) with
            SRv6 service SID. The PCE computes (C1,10) path via node 2, 5 and 8. 
            For interworking function, it programs an SR policy at border node 4 with 
            segment list node 5 and 7 bounded to an End.BM BSID <xref target="RFC8986"/> 
            (For example, SR-PCE creates an SR-MPLS policy (C1,7) at node 4 with 
            segments &lt;16005,16007>. This policy is bound to End.BM behavior with 
            SRv6 BSID as B:4:BM-C1-7::). SR-PCE responds back to node 1 with SRv6 
            segments of requested SLA including End.BM at node 4 to traverse 
            SR-MPLS-IPv4 C domain.</t>
            
            <t>The data plane operations for the above-mentioned interworking example
            are:
              <list style="nummbers">
              <t>Node 1 performs SRv6 operation H.Encaps.Red with VPN service SID
              and SRv6 Policy (C1,10):
              <vspace blankLines="0" />
              Packet leaving node 1 IPv6 ((A:1::, B:2:E::) (B:10:DT4::, B:8:E::,
              B:4:BM-C1-7:: ; SL=3))</t>

              <t>Node 2 performs SRv6 End behavior on B:2:E:: SRv6 SID present in the DA
              <vspace blankLines="0" />
              Packet leaving node 2 IPv6 ((A:1::, B:4:BM-C1-7::) (B:10:DT4::,
              B:8:E::, B:4:BM-C1-7:: ; SL=2))</t>

              <t>Node 4(border node) performs End.BM behavior on B:4:BM-C1-7:: SRv6 SID 
              present in the DA
              <vspace blankLines="0" />
              Packet leaving node 4 MPLS (16005,16007, IPv6 Explicit NULL)((A:1::, B:8:E::)
              (B:10:DT4::, B:8:E::, B:4:BM-C1-7-:: ; SL=1)).</t>
              
              <t>Node 5 performs PHP pn 16007</t>
              
              <t>Node 7 performs native IPv6 lookup after IPv6 explicit NULL processing
              <vspace blankLines="0" />
              Packet leaving node 7 IPv6 ((A:1::, B:8:E::) (B:10:DT4::, B:8:E::,
              B:4:BM-C1-7:: ; SL=1))</t>

              <t>Node 8 performs End(PSP) behavior B:8:E:: SRv6 SID present in the DA
              <vspace blankLines="0" />
              Packet leaving node 8 IPv6 ((A:1::, B:10:DT4::))</t>

              <t>Node 10 performs End.DT4 behavior on B:10:DT4:: SRv6 SID present in 
              the DA i.e. it looks up inner IP destination in the VRF corresponding to
              B:10:DT4:: SID and forwards traffic to CE accordingly.</t>
              </list>
            </t>
          </section>
          
          <section title="Mo6">
            <t>Refer <xref target="TransportIW"/> for Mo6 scenario.
            MPLS Service prefix (e.g. VPN or EVPN) is received on head-end(node 1)
            with color extended community(C1) from egress PE(node 10) and vpn label. 
            The SR-PCE computes color-aware C1 path via node 2, 5 and 8. For interworking 
            function, it programs a SRv6 policy bound to MPLS BSID at border node 4 
            with SRv6 segment list along the required color-aware path with last segment of 
            behavior End.DTM46 <xref target="ENDDTM46"/> (For example, SR-PCE create 
            SRv6 policy (C1,7) at node 4 with segments &lt;B:5:E::,B:7:DTM46::>. 
            It is bound to MPLS BSID 24407). SR-PCE responds back to node 1 with MPLS 
            segment list including MPLS BSID of SRv6 policy at node 4 to traverse SRv6 
            core domain.</t>
          
            <t>The data plan operations for the above-mentioned interworking example
            are:
              <list style="numbers">

              <t>Node 1 performs MPLS label stack encapsulation with VPN label and 
              SR-MPLS Policy (C1,10):
              <vspace blankLines="0" />
              Packet leaving node 1 towards 2 (Note: node 2's prefix SID is not pushed 
              due to PHP): 
              MPLS packet (16004,24407,16008,16010,vpn_label)</t>
              <t>Node 2 forwards traffic towards 4 (PHP of 16004)
              <vspace blankLines="0" />
              Packet leaving node 2 
              MPLS packet (24407,16008,16010,vpn_label)</t>
            
              <t>Node 4 steers MPLS traffic into SRv6 policy bound to MPLS BSID label 
              24407
              <vspace blankLines="0" />
              Packet leaving node 4 
              IPv6(A:4::, B:5:E::) (B:7:DTM46:: ; SL=1)NH=137) MPLS((16008,16010,vpn_label)</t>
            
              <t>Node 7 performs DTM46 behavior on B:7:DTM46:: SRv6 SID present in the DA 
              i.e. remove IPv6 header and lookup label 16008 in MPLS table. 
              <vspace blankLines="0" />
              Packet leaving node 7 towards node 8(PHP of 16008)
              MPLS packet (16010,vpn_label)</t>
              <t>Node 8 forwards traffic to 10 (PHP of 16010)
              <vspace blankLines="0" />
              Packet leaving node 8
              MPLS packet (vpn_label)</t>

              <t>Node 10 pops vpn_label, looks up inner IP destination in the VRF 
              corresponding to the vpn_label and forwards to traffic to CE accordingly.</t>
              </list>
            </t>  
          </section>
        </section>
        
        <section title="BGP inter domain routing procedures">
          <t>Procedures described below build upon BGP Label Unicast (BGP-LU) 
          <xref target="I-D.ietf-mpls-seamless-mpls"/> and <xref target="RFC4798"/> that 
          advertise transport reachability of PE loopback address or SRv6 locator 
          across a multi-domain network. The procedures leverage existing SAFIs (for 
          example, BGP-LU(AFI=1 or 2 and SAFI=4) and IPv6 (AFI=2,SAFI=1)). 
          Setting nexthop to self on border node provide independence of intra domain tunnel 
          technology in different domains.
          </t>
          
          <t>The sections below describe 6oM and Mo6 IW with BGP procedures for 
          best effort paths to a locator or loopback prefix. The procedures are 
          equally applicable to intent aware paths, i.e., locator assigned for a 
          given intent, for instance from an IGP Flexible Algorithm. They are also 
          applicable to intent-aware routes recursing over intent aware intra-domain paths.
          </t>
          
          <section title="6oM">
            <t>Refer <xref target="TransportIW"/> for 6oM scenario.
            SRv6 based L3/L2 BGP services are signaled with SRv6 Service SID 
            allocated from egress PE locator prefix. Ingress PE learns the service routes 
            and need to resolve SRv6 Service SID over egress PE locator or its summary. Below
            describes propagation of locator or its summary to create end to end 
            underlay path.
              <list style="symbols">
              <t>Egress border node learns LE domain PE locator through IGP and 
              redistribute it in BGP. Alternatively, locator is advertised by egress PE in 
              the BGP IPv6 Unicast (AFI value 2 and SAFI value 1) to border nodes.</t>
              <t>Egress border node uses <xref target="RFC4798"/> 6PE procedure that 
              results in advertisement of locator as BGP-LU route with locally allocated 
              label or IPv6 Explicit NULL and nexthop set to itself to ingress border node. 
              SR-MPLS-IPv4 builds MPLS LSP path in C domain from ingress to egress border 
              node. Note: Egress border router may advertise summary prefix covering all PE 
              locators in LE domain.</t>
              <t>Ingress border node advertise route of remote locator or its 
              summary in LI domain. Below are the options to advertise route:
                <list style="symbols">
                <t>BGP IPv6 SAFI (AFI=2 and SAFI=1) distribute the route with 
                SRv6 transport SID of local End behavior in Prefix-SID attribute TLV type 5
                <xref target="RFC9252"/>. This option results in additional 
                SRv6 encapsulation at ingress PE.</t>
                <t>BGP IPv6 SAFI (AFI=2 and SAFI=1) distribute the route to each of P and 
                PE router through infrastructure route reflector. This option avoids 
                additional SRv6 transport SID encapsulation at ingress PE and forwards 
                traffic hop by hop in LI domain.</t>
                <t>Leak remote locators or their summary in LI IGP 
                (Typically on transport ABR only infrastructure prefixes are present 
                in BGP. If that is not the case, proper filters need to be configured 
                for such leaking into IGP).
                </t>
                </list>
              </t>   
              <t>Ingress PE learns remote locator or summary with or without
              SRv6 transport SID. When learnt with SRv6 transport SID, it builds the packet
              encapsulation that contains the SRv6 Service SID and SRv6 transport SID 
              in the SID list. SRv6 transport SID tunnels traffic to ingress border node 
              in LI domain (P routers like 2 and 3 does not need egress PE locator 
              reachability). When learnt without SRv6 transport SID, the packet 
              encapsulation contains the SRv6 Service SID as DA and forwarded hop by hop 
              based on remote locator IPv6 prefix lookup in LI domain.</t>
              </list>
            </t>
            <t>Example to advertise node 10 locator to node 1 with SRv6 SID encapsulation:
      <figure anchor="REFERENCETOPOLOGYSNIP" title="SNIPPET of Reference multi-domain 
        network topology"><artwork><![CDATA[                                       

|  :                   |                      |                     : |
|----+    IGP1       +---+        IGP2      +---+      IGP3      +----|    
| 1  |               | 4 |                  | 7 |                | 10 |
|----+               +---+                  +---+                +----|

+----------------------+----------------------+-----------------------+
iPE                   iBR                    eBR                     ePE

<----------LI---------><----------C----------><-----------LE---------->       
          ]]></artwork>
        </figure>
              <list style="numbers">
              <t>Routing @ node 10:
                <list style="symbols">
                <t>SIS advertises locator B:B:10::/48</t> 
                <t>BGP (AFI=1,SAFI=128) originates a VPN route RD:V/v via B:B:10::1 with 
                SRv6 Service SID B:B:10:DT4::. This route is advertised to service RR.</t>
                </list>
              </t>
              <t>Routing @ node 7:
                <list style="symbols">
                <t>ISIS redistributes B:B:10::/48 into BGP</t>
                <t>BGP advertise B:B:10::/48 in (AFI=2,SAFI=4) among border routers with 
                nexthop as node 7 and IPv6 Explicit Null label.</t>
                </list>
              </t>  
              <t>Routing @ node 4:
                <list style="symbols">
                <t>BGP learns B:B:10::/48 with next hop node 7 and outgoing label.</t>
                <t>BGP advertise B:B:10::/48 in (AFI=2,SAFI=1) with next as itself 
                B:B:4::1 and Prefix-SID attribute tlv type 5 carrying local End behavior 
                function B:B:4:END:: to node 1</t>
                </list>
              </t>  
              <t>Routing @ node 1:
                <list style="symbols">
                <t>BGP learns B:B:10::/48 with nexthop node 4 and outgoing SRv6 SID 
                B:B:4:END:: in Prefix-SID attribute TLV type 5</t>
                <t>BGP learns service prefix RD:V/v, with SRv6 service SID B:B:10:DT4::</t>
                <t>ISIS learns locator prefix B:B:4::/48 for node 4's SID reachability</t>
                </list>
              </t>
              </list>    
            </t>
            <t> Forwarding state at different nodes:</t>
            <figure><artwork><![CDATA[
@1: IPv4 VRF V/v => H.Encaps.red <B:B:4:END::, B:B:10:DT4::> 
                                         with SRH (SL=1 and NH=IPv4)
@1: IPv6 Table: B:B:4::/48 => forward via ISIS path to node 4
@4: IPv6 Table: B:B:4:END:: => PSP Processing (Update DA with B:B:10:DT4::,
                                         set IPv6.NH=IPv4, pop the SRH)
@4: IPv6 Table: B:B:10::/48 => push MPLS label stack {16007, 2 (IPv6 Explicit NULL)} 
@7: MPLS label 2 => pop and lookup inner IPv6 DA
@7: IPv6 Table B:B:10::/48 => forward via ISIS path to node 10
@10: IPv6 Table B:B:10:DT4:: => DT4 SID processing (pop the outer header 
                              and lookup the inner IPv4 DA in the VRF
              ]]></artwork>
            </figure>
          </section>
          
          <section anchor="BGPMo6" title="Mo6">
            <t>Refer <xref target="TransportIW"/> for Mo6 scenario.
            MPLS-based L3/L2 BGP service is signaled with IPv4 nexthop of egress PE 
            through Service RRs. Ingress PE needs MPLS reachability for egress PE's IPv4 
            loopback address in the LE domain to transport services.</t>
            <t>Egress PE originate route to its loopback address in BGP-LU 
            <xref target="RFC8277"/>in LE domain. Egress border node sets nexthop to 
            itself and signals MPLS-over-IP to ingress border node that results in 
            tunneling of BGP-LU LSP across SRv6 C domain.
                <list style="symbols">
                <t>There are existing BGP-LU label cross-connect on border nodes for each
                 PE loopback address.</t>
                <t>The lookup at the ingress border node are based on BGP-LU 
                label as usual</t>
                <t>Just the SR-MPLS IGP label to next hop is replaced by an 
                SRv6 encapsulation with DA = SRv6 SID associated with DTM46 behavior of 
                egress border node in C domain.</t>
                <t>Ingress border node forwarding performs RFC3107 label swap, followed by 
                H.Encaps.M operation setting DA = SRv6 SID associated with DTM46 behavior.
                </t>
                </list>
              </t>
              
              <t>Existing BGP-LU updates between border nodes need to signal 
              SRv6 SID associated with DTM46 behavior. 
              BGP procedures to signal SRv6 SID is described in 
              <xref target="I-D.sa-idr-bgp-srv6-mpls-transport-iw"/> and outside the 
              scope of this document. Below illustrate the example control plane 
              and corresponding FIB state to achieve such tunneling: 
              </t>
              <t>Control plane example
                 <list style="numbers">
                 <t>Routing @10:
                    <list style="symbols">
                    <t>SR ISIS originates IPv4 PE loopback with SR Node SID 16010</t>
                    <t>BGP AFI=1,SAFI=4 originates IPv4 loopback address with next hop 
                    node 10 and optionally label-index=10 in Label Index TLV of 
                    Prefix-SID attribute.</t>
                    <t>BGP AFI=1,SAFI=128 originates a VPN route RD:V/v via next hop node 
                    10. This route is advertised to service RR.</t>
                    </list>
                 </t>
                 <t>Routing @ 7:
                    <list style="symbols">
                    <t>ISIS IPv6 advertise its locator B:B:7::/48 in C domain</t>
                    <t>BGP learns node 10 IPv4 loopback address with label.
                    It allocates local label (based on label-index, if present) and 
                    programs BGP-LU label swap to received label and deliver it to next hop.</t>
                    <t>BGP AFI=1,SAFI=4 advertises loopback address of node 10 
                    to node 4. NLRI label is set to local label and SRv6 SID B:B:7:DTM46::
                    is carried in SRv6 SID Information Sub-TLV of 
                    "SRv6 Transport" TLV in Prefix-Sid attribute. If received, 
                    Label-Index TLV of Prefix-SID attribute is also signaled.</t>
                    </list>
                 </t>  
                 <t>Routing @ 4:
                    <list style="symbols">
                    <t>SR ISIS IPv4 originates its IPv4 loopback with prefix SID 16004
                    in LI domain.</t>
                    <t> BGP learns node 10 IPv4 loopback address from node 7 with 
                    outgoing label. It allocates local label (based on label-index, 
                    if present) and programs label swap entry to be SRv6 tunnled to BGP 
                    nexthop by performing H.Encaps.M.red operation where IPv6 header is 
                    set to SRv6 SID B:B:7:DTM46:: (received in "SRv6 transport TLV" of 
                    Prefix-Sid attribute).
                    </t>
                    <t>BGP AFI=1,SAFI=4 advertise loopback address of node 10 to 
                    node 1 with locally allocated label and nexthop to self. This results in 
                    removal of SRv6 Transport TLV in Prefix-SID attribute.</t>
                    </list>
                 </t>  
                 <t>Routing @ 1:
                    <list style="symbols">
                    <t>BGP learns IPv4 loopback address of node 10 from node 4 with 
                    outgoing label. It programs route to push outgoing label delivered to 
                    nexthop node 4.</t>
                    <t>BGP AFI=1,SAFI=128 learns service prefix RD:V/v with service label 
                    via node 10 loopback address.</t> 
                    </list>
                 </t>
                 </list>
                </t>  
              <t>Forwarding state at different nodes:</t>
                <figure><artwork><![CDATA[
@1: IPv4 VRF: V/v => out label=vpn_label, next hop=IPv4 loopback of node 10
@1: IPv4 table: IPv4 loopback of node 10 => out label=16010, next hop=node4
@1: IPv4 table: IPv4 loopback of node 4 => out label=16004, next hop=interface to node 2
@4: MPLS Table: 16010 (BGP-LU) => out label=16010, H.Encaps.M.red with DA=B:B:7:DTM46::
@4: IPv6 table: B:B:7::/48 => next hop=interface to node 5
@7: SRv6 My SID table: B:B:7:DTM46:: => decaps IPv6 header and lookup top label.
@7: MPLS table: 16010 (SR ISIS)=> out label=16010, next hop=interface to node 8
@10: MPLS table: vpn label => pop label and lookup the inner IPv4 DA in the VRF

                  ]]></artwork>
                </figure>
              <t>During migration, when MPLS data plane is still enabled in C domain, a 
              SRv6 capable ABR an select relevant encapsulation and legacy ABR 
              can continue MPLS encapsulation using label in NLRI. 
              </t>
             
              <t>If domain border node is a pure transport node without any services, 
              either End.DTM46 or End.DTM can be advertised and it is upto the 
              implementation to choose. If domain border node does have global table IPv4 
              and IPv6 (<xref target="GRTMo6"/>), then it MUST advertise 
              End.DTM46. END.DTM46 is a superset of END.DTM.
              </t>

          </section>
          
          <section anchor="GRTMo6" title="Global table services over BGP-LU transport">
          <t>Procedures as defined in <xref target="BGPMo6"/> work for global table services
          (<xref target="RFC4271"/>, <xref target="RFC2545"/>) over BGP-LU transport 
          when service endpoint is beyond border node (example node 10). 
          In scenarios where service endpoint is border node, additional SRv6 
          decapsulation behavior is required that performs service traffic 
          IP destination lookup in global IPv4 or IPv6 table.
          In such deployment, border node advertise its existing IPv4 PE loopback 
          address in BGP-LU as per <xref target="BGPMo6"/> where SRv6 SID is 
          associated with End.DTM46 behavior instead of END.DTM.</t>
          </section>
        </section>
      </section>
      
      <section title="Service IW">
        <t>As described in <xref target="ServiceIW"/> Service IW need BGP SRv6 
        based L2/L3 PE interworking with BGP MPLS based L2/L3 PE.</t>
        <t>There are a number of different ways of handling this scenario as 
        detailed below.</t>
        
        <section title="Gateway Interworking">
          <t>In Gateway Interworking role, node supports both BGP SRv6 based L2/L3 service 
          and BGP MPLS based L2/L3 service for a given service instance
          (e.g. L3 VRF, EVPN EVI). In dataplane, it terminates service encapsulation of 
          ingress PE and perform L2 MAC route or L3 IP destination lookup in 
          service instance. Lookup provide egress PE service encapsulation that is used to 
          send packet to egress PE. This is similar to inter-as option A that is 
          implemented within a single node instead of implementing on two back2back 
          ABRs/ASBRs nodes connected with VRF interface.</t>
          
          <t>
            <list style="symbols">
            <t>A border router between SRv6 domain and SR-MPLS-IPv4 domain is  
            suitable for a Gateway IW role.</t>
            <t>Transport reachability to SRv6 PE and gateway locators in SRv6 domain
            or MPLS LSP to PE/gateway IPv4 Loopbacks can be exchanged in IGP or 
            through mechanism detailed in <xref target="TransportIW"/>.</t>  
            <t>Gateway exchange BGP L2/L3 service prefix with SRv6 based Service PEs 
            via set of service RRs. This session will learn/advertise L3/L2 service 
            prefixes with SRv6 service SID in prefix SID attribute. 
            <xref target="RFC9252"/>.</t>
            <t>Gateway exchanges BGP L2/L3 service prefix with MPLS based Service 
            PEs via set of distinct service RRs. This session will learn/advertise 
            L3/L2 service prefixes with service labels <xref target="RFC4364"/> 
            <xref target="RFC7432"/>.</t>
            <t>L2/L3 prefix received from a domain is locally installed in service 
            instance and re advertised to other domain with modified service 
            encapsulation information.</t>
            <t>Prefix learned with SRv6 service SID from SRv6 PE is installed 
            in service instance with instruction to perform H.Encaps.Red. 
            It is advertised to MPLS service PE with service label. 
            When gateway receives traffic with service label from MPLS service PE, 
            it performs MAC/destination IP lookup in service instance. The lookup results in
            instruction to perform H.Encaps with DA being SRv6 Service SID learnt 
            with prefix from SRv6 PE.</t>
            <t>Prefix learned with MPLS service label from MPLS service PE is 
            installed in service instance with instruction to perform service label 
            encapsulation and send to MPLS LSP towards the nexthop. It is advertised to SRv6 
            service PE with SRv6 service SID of behavior (e.g. DT4/DT6/DT2U) 
            <xref target="RFC8986"/>. When gateway receives traffic with SRv6 Service SID 
            as DA of IPv6 header from SRv6 service PE, it performs inner destination 
            lookup in service instance after decaps of IPv6 header. The Lookup result in 
            instruction to push service label and send it over MPLS LSP towards the  
            nexthop.</t>
            </list>
            <figure title="Gateway IW">
              <artwork><![CDATA[
                                    
        +-------------------+                             +-------------------+
        |   ....|S-RR|....  |                             |  ....|S-RR|.....  |
        |   :   +----+   :  |                             |  :   +----+    :  |
        |   :            :  |                             |  :             :  |
        |----+          +-------------------------------------+          +----|
        |PE1 |          |             IW border node          |          | PE2|
        |----+          | VPN Label<->L2/L3 lookup<->SRv6 SID |          +----|     
        |               |                                     |               |    
        |               +-------------------------------------+               |     
        |      MPLS         |                             |       SRv6        |  
        +-------------------+                             +-------------------+
        <------MPLS VPN----->                             <------SRv6 VPN----->
              ]]></artwork>
            </figure>
          </t>
          <t>Couple of border routers can act as gateway for redundancy. It can scale 
          horizontally by distributing service instance among them.</t>
        </section>
        <section title="Translation between Service labels and SRv6 service SIDs">
          <t>This approach is similar to inter-AS option B procedures described in 
          <xref target="RFC4364"/>, except that service label cross-connect 
          on border node is replaced with service label to SRv6 service SID (or 
          vice versa) translation on the IW node.
            <list style="symbols">
          	<t>IW node does not require service instance such as VRF or EVI.</t> 
            <t>IW node exchanges BGP L2/L3 service prefix with SRv6 based Service PEs 
            through a set of service RRs. This BGP session will learn and advertise 
            L3/L2 service prefixes with SRv6 SIDs in the prefix SID attribute 
            <xref target="RFC9252"/>.</t>
            <t>IW node exchanges BGP L2/L3 service prefix with MPLS based service 
            PEs through set of distinct service RRs. This BGP session will learn and 
            advertise L3/L2 service prefixes with service labels <xref target="RFC4364"/> 
            <xref target="RFC7432"/>.</t>
            <t>IW node that sets nexthop to self, allocates SRv6 SID of DXM behavior 
            variant based on service route AFI and SAFI i.e. End.DXM4 for IPv4 service 
            prefix, End.DXM6 for IPv6 service prefix and End.DXM2 for layer 2 prefix 
            learned from the MPLS PE. The FIB entry lookup on SRv6 local service SID 
            provides service route outgoing service label and BGP nexthop (MPLS PE). 
            The IW node then advertises the service route in the SRv6 domain with locally 
            allocated SRv6 SID and its corresponding behavior. During packet forwarding, 
            when an IPv6 packet arrives with the DA matching the locally allocated 
            SRv6 SID, the node decapsulates the IPv6 header, pushes the outgoing service 
            label, and delivers the packet to the BGP next-hop."
            </t>
            <t>IW node that sets nexthop to self, allocates local label for service route 
            learnt from SRv6 PE attached with SRv6 SID in Prefix-SID attribute. FIB label 
            entry lookup results in H.Encaps with SRv6 SID learned from SRv6 PE. IW node 
            then advertises the service route to MPLS domain with locally allocated label. 
            During packet forwarding, when an MPLS packet arrives with locally allocated 
            label, the node pops the service label and performs H.Encaps.Red operation, 
            setting DA as remote SRv6 SID and Upper-layer header based on behavior of 
            SRv6 SID. 
            </t>
            </list>
            <figure title="Service translation">
              <artwork><![CDATA[
                                    
        +-------------------+                             +-------------------+
        |   ....|S-RR|....  |                             |  ....|S-RR|.....  |
        |   :   +----+   :  |                             |  :   +----+    :  |
        |   :            :  |                             |  :             :  |
        |----+          +-------------------------------------+          +----|
        |PE1 |          |             IW border node          |          | PE2|
        |----+          |          VPN Label -> SRv6 SID      |          +----|     
        |               | VPN label, LSP PE1 <- SRv6 SID      |               |    
        |               +-------------------------------------+               |     
        |      MPLS         |                             |       SRv6        |  
        +-------------------+                             +-------------------+
        <------MPLS VPN----->                             <------SRv6 VPN----->
              ]]></artwork>
            </figure>
          </t>  
          <t>Certain L2 service specific information (eg. control word) translation 
          is out of the scope of this document. It will be covered in separate document.</t>
        </section>
      </section>
    </section>
    
    <section title="Migration and co-existence">
      <t>In addition to interworking, this draft also addresses migration and coexistence of 
        the SRv6 and SR-MPLS-IPv4. Co-existence means a network that supports 
        both SRv6 and MPLS in a given domain. This may be a transient state when 
        brownfield SR-MPLS-IPv4 network upgrades to SRv6 (migration) or permanent 
        state when some devices are not capable of SRv6 but supports native IPv6 
        and SR-MPLS-IPv4.</t>
      <t>These procedures would be detailed in a future revision</t>
    </section>
    
    <section title="Availability">
      <t>
        <list style="symbols">
        <t>Failure within domain are taken care by existing FRR 
        mechanisms <xref target="I-D.ietf-rtgwg-segment-routing-ti-lfa"/>.</t>
        <t>Procedures listed in <xref target="RFC9256"/> 
        provides protection in SR-PCE multi-domain On Demand Nexthop (ODN) SR policy based 
        approach.</t>
        <t>Convergence on failure of border routers can be achieved by well known methods
        for BGP inter domain routing approach:
          <list style="symbols">
          <t>BGP Add Path provide diverse path visibility</t>
          <t>BGP backup path pre-programming</t>
          <t>Sub-second convergence on border router failure notified by local IGP.</t>
          </list>
        </t>
        </list>
      </t>  
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <section title="SRv6 Endpoint Behaviors">
        <t>This document introduces a new SRv6 Endpoint behaviors "End.DTM", "End.DTM46",
        "End.DXM4", "End.DXM6" and "End.DXM2". IANA is requested to assign identifier 
        value in the "SRv6 Endpoint Behaviors" sub-registry under 
        "Segment Routing Parameters" registry.
        <figure>
            <artwork><![CDATA[+-------------+--------+-------------------------+------------------+    
| Value       |  Hex   |    Endpoint behavior    |    Reference     |
+-------------+--------+-------------------------+------------------+
| 73          | 0x0049 |    End.DTM              | <this document>  |
+-------------+--------+-------------------------+------------------+
| TBD         |  TBD   |    End.DTM46            | <this document>  |
+-------------+--------+-------------------------+------------------+
| TBD         |  TBD   |    End.DXM4             | <this document>  |
+-------------+--------+-------------------------+------------------+
| TBD         |  TBD   |    End.DXM6             | <this document>  |
+-------------+--------+-------------------------+------------------+
| TBD         |  TBD   |    End.DXM2             | <this document>  |
+-------------+--------+-------------------------+------------------+]]></artwork>
          </figure>
        </t>
      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
    </section>
    
    <section anchor="Contributors">
    <name> Contributors </name>
      <figure>
        <artwork><![CDATA[Zafar Ali
Cisco Systems
Email: zali@cisco.com
        ]]></artwork>
      </figure>

      <figure>
        <artwork><![CDATA[Srihari Sangli
Juniper Networks
Email: ssangli@juniper.net
        ]]></artwork>
      </figure>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to acknowledge Kamran Raza, Dhananjaya Rao, 
      Stephane Litkowski, Pablo Camarillo, Ketan Talaulikar, Jorge Rabadan,
      Bruno Decraene for their comments and review.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
       <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?>
       
       <?rfc include='reference.RFC.8174.xml'?>
       
       <?rfc include='reference.RFC.4364.xml'?>
       
       <?rfc include='reference.RFC.7432.xml'?>
       
       <?rfc include='reference.RFC.3032.xml'?>
       
       <?rfc include='reference.RFC.4023.xml'?>
       
       <?rfc include='reference.RFC.8664.xml'?>
       
       <?rfc include='reference.RFC.8402.xml'?>
       
       <?rfc include='reference.RFC.8277.xml'?>
       
       <?rfc include='reference.RFC.9252.xml'?>
       
       <?rfc include='reference.RFC.9256.xml'?>
       
       <?rfc include='reference.RFC.4798.xml'?>
       
       <?rfc include='reference.RFC.4271.xml'?>
       
       <?rfc include='reference.RFC.2545.xml'?>
       
       <?rfc include='reference.RFC.3031.xml'?>
                     
       <?rfc include='reference.RFC.8986.xml'?>
    </references>
    <references title="Informative References">
        <?rfc include='reference.RFC.9012.xml'?> 
        
        <?rfc include='reference.I-D.ietf-mpls-seamless-mpls.xml'?>
        
        <?rfc include='reference.I-D.ietf-rtgwg-segment-routing-ti-lfa.xml'?>
        
        <?rfc include='reference.I-D.sa-idr-bgp-srv6-mpls-transport-iw.xml'?>  
    </references>
  </back>
</rfc>
