<?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="std" docName="draft-sa-idr-bgp-srv6-mpls-transport-iw-01"
     ipr="trust200902">
  <front>
    <title>BGP extensions for SRv6/MPLS Transport 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="Dhananjaya Rao" initials="D." surname="Rao">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country/>
        </postal>

        <email>dhrao@cisco.com</email>
      </address>
    </author>
    
    <author fullname="Jie Dong" initials="J." surname="Dong">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country/>
        </postal>

        <email>jie.dong@huawei.com</email>
      </address>
    </author>
    
    
    

    <date year=""/>

    <area>Routing</area>

    <workgroup>IDR WorkGroup</workgroup>

    <abstract>
      <t>This document defines the BGP extensions required to provide transport 
      interworking between SRv6 and MPLS in SRv6 deployment. 
      </t>
    </abstract>
  </front>
  
  

  <middle>
    <section title="Introduction">
    
      <t>The deployment of SRv6 into existing transport network require SRv6 to interwork
       with MPLS. <xref target="I-D.ietf-spring-srv6-mpls-interworking"/> 
      describes SRv6 and MPLS interworking architecture in multi domain network where
      each domain run SRv6 or MPLS data plane independently. To accomplish it, 
      section 7.1.2 of <xref target="I-D.ietf-spring-srv6-mpls-interworking"/> details 
      BGP inter-domain routing procedure in which domain border router set next hop to 
      self when propagating transport routes (for example, locator or loopback prefix 
      of a PE) across domains. Setting next hop to self results in allocation of 
      label or SRv6 SID depending on dataplane type of the domain where route is 
      propagated. Signaling of label is already specified in <xref target="RFC8277"/>.
      This document specifies method to signal SRv6 SID behaviors End.DTM, End.DTM46 
      and End.DPM specified in <xref target="I-D.ietf-spring-srv6-mpls-interworking"/> 
      needed for SRv6 and MPLS interworking with BGP Labeled Unicast (BGP-LU) 
      routes (SAFI value 4 routes as specified in <xref target="RFC8277"/>).
      </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 title="Signal SRv6 SID for BGP transport route">
      <t>The Prefix-SID attribute is an optional, transitive path attribute defined 
        in <xref target="RFC8669"/> to announce information about BGP Segment identifiers 
        as list of TLVs. <xref target="RFC8669"/> defined TLV type 1 to encode
        label index and TLV type 3 to encode Originator SRGB to be attached to prefixes 
        of BGP-LU SAFI(<xref target="RFC8277"/>). <xref target="RFC9252"/> extended 
        Prefix-SID attribute to carry SRv6 Segment Identifier that is encoded 
        in SRv6 Service TLV and attached to BGP service routes.
        </t>
        
      <section anchor="SRv6TransportTLV" title="SRv6 Transport TLV">
        <t>This document defines a new TLV called "SRv6 Transport TLV" of the 
        BGP Prefix-SID Attribute to announce SRv6 SID with prefixes of 
        BGP-LU SAFI. SRv6 SID is encoded in "SRv6 Transport TLV" exactly 
        like SRv6 Service SID TLV <xref target="RFC9252"/>. This document uses 
        the TLV to signal End.DTM, End.DTM46 and End.DPM. The usage of this 
        TLV for other SRv6 SID behaviors and SAFI's is out of scope of this document 
        and may be extended in future documents.
        Extension in this document lead to signaling of label in MPLS label field and 
        SRv6 SID in SRv6 Transport TLV for BGP-LU route. Below section describes usage 
        of both the information based on behavior of the SRv6 SID.</t>
      </section>
        
      <section anchor="SRv6LRT" title="SRv6 encapsulation for MPLS transport"> 
        <t>SRv6 SID is used to encapsulate the MPLS packet whose top label is the label 
        value in MPLS field of the NLRI of the BGP-LU route. 
        Draft <xref target="I-D.ietf-spring-srv6-mpls-interworking"/> defines End.DTM 
        and End.DTM46 pseudo-code for this purpose.</t>
        
        <t>Domain border router that set next hop to self, allocates label bound to
        each prefix of BGP-LU route. Label is encoded in MPLS label field as specified 
        in <xref target="RFC8277"/>. SRv6 SID is encoded in "SRv6 Transport TLV" 
        without transposition i.e. transposition length MUST be set to 0 
        in SRv6 SID Structure Sub-Sub-TLV. Behavior field MUST be set with SRv6 Endpoint 
        Behavior codepoint value of End.DTM or End.DTM46. This behavior signals "AND" 
        semantics i.e. push label signaled in NLRI and perform H.Encaps.M 
        <xref target="I-D.ietf-spring-srv6-mpls-interworking"/> with 
        DA as SRv6 SID signaled in the TLV. Same SRv6 SID can be attached to multiple 
        BGP-LU routes by domain border router that sets next hop to self.
        </t>
        
        <t>Section 7.1.2.2.1 of <xref target="I-D.ietf-spring-srv6-mpls-interworking"/>
        describe control and dataplane state using SRv6 Transport TLV.</t>
      </section>
    
      <section title="SRv6 SID bound to prefix in NLRI">
        <t>Domain border node that set next hop to self, allocates SRv6 SID and label 
        for each prefix of BGP-LU SAFI. Draft <xref target="I-D.ietf-spring-srv6-mpls-interworking"/>
        defines End.DPM pseudo-code for this purpose. Label is encoded in MPLS label 
        field as specified in <xref target="RFC8277"/>. SRv6 SID is encoded in 
        SRv6 Transport TLV exactly like SRv6 Service SID TLV <xref target="RFC9252"/>. 
        Behavior field MUST be set with SRv6 Endpoint Behavior codepoint value of End.DPM. 
        Receiving node perform H.Encaps, where destination of IPv6 header is set to 
        SRv6 SID for traffic destined to prefix in NLRI. Please refer to 
        section 7.1.2.2.2 of <xref target="I-D.ietf-spring-srv6-mpls-interworking"/>
        for overall procedures when SRv6 SID is bound to prefix in NLRI.</t>
        
        <t>Signaling of label and SRv6 SID assist in migration by allowing receiving node
        to select relevant encapsulation. Similarly, it allows to advertise just label to 
        legacy node. For example, in <xref target="SIGNALSAFI4"/> node 4 being SRv6 capable 
        may select relevant encapsulation and node 44 being legacy continue MPLS 
        encapsulation.
       
       <figure anchor="SIGNALSAFI4" title="SRv6 SID bound to NLRI of SAFI 4">
         <artwork><![CDATA[                                       
          +-----+                +-----+  RD:V/v via 10   +-----+
   .......|S-RR1|<...............|S-RR2|<.................|S-RR3| <..
   :      +-----+                +-----+                  +-----+   :             
   :                                                                :
   :                                                                : 
+--:-------------------+----------------------+---------------------:-+
|  :                   |                      |                     : |
|  :                 +---+                    |                     : |
|  :                 | 4 |                    |                     : |
|  :     SAFI 4      +---+    SAFI 4          |      SAFI 4         : |
|  : <-E10,Label via 4 |  <-E10,label via 7   |   <-E10,0x3 via E10 : |
|----+                 |  SRv6 SID=B7:E10:: +---+                +----|    
| E1 |                 |                    | 7 |                |E10 |
|----+               +---+ <-E10,label via 7+---+                +----|
|                    |44 |                    |                       |
|                    +---+                    |                       |
|                      |                      |                       |
|                      |                      |                       |
|        MPLS          |        SRv6/MPLS     |       MPLS            |
+----------------------+----------------------+-----------------------+
iPE                   iBR                    eBR                     ePE

<----------LI---------><----------C----------><-----------LE---------->       
          ]]></artwork>
        </figure></t>
        </section>
      
      <section title="Propagation of transport routes with SRv6 SID">
        <t>A BGP speaker that receive Prefix-SID attribute with 
        SRv6 Transport TLV with transport route observe following rules when 
        advertising the route to other peers:
          <list style="symbols">
            <t>If the nexthop is unchanged, the TLVs, including any unrecognized Types of 
            Sub-TLV and Sub-Sub-TLV, SHOULD be propagated further. In addition, all Reserved 
            fields in the TLV or Sub-TLV or Sub-Sub-TLV MUST be propagated unchanged.</t>

            <t>If the nexthop is modified, the TLV and associated sub-TLVs/Sub-Sub-TLVs 
            SHOULD be updated based on local policy. For example, if upstream is MPLS domain, 
            then TLVs carrying SRv6 SID should be removed and local MPLS label bound to 
            address in NLRI is propagated further.</t>
          </list>
        </t>  
      </section>
    </section>
     

    <section anchor="IANA" title="IANA Considerations">
      <section title="BGP Prefix-SID TLV Types registry">
        <t>This document introduce a new TLV Type of the BGP Prefix-SID attribute. 
        IANA is requested to assign Type value in the registry 
        "BGP Prefix-SID TLV Types" as follows<figure>
            <artwork><![CDATA[    Value     Type                             Reference
    ----------------------------------------------------------
    TBD       SRv6 Transport TLV     <this document>]]></artwork>
          </figure>
        </t>
      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
    <t>This document defines new TLV of Prefix-SID attribute attached to transport route. 
    Tranport route is signaled among the nodes under the single administrative domain 
    and security considerations of the attribute described in <xref target="RFC8669"/> 
    continues to apply.</t>
    </section>
    
    <section anchor="Contributors">
    <name> Contributors </name>
      <figure>
        <artwork><![CDATA[Zafar Ali
Cisco Systems
Email: zali@cisco.com
        ]]></artwork>
      </figure>

      <figure>
        <artwork><![CDATA[Daniel Voyer
Cisco Systems
Email: davoyer@cisco.com
        ]]></artwork>
      </figure>
    </section>


    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to acknowledge Stephane Litkowski and Ketan Talaulikar
      for review and comments.</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.4271.xml'?>
       
       <?rfc include='reference.RFC.4760.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.8669.xml'?>
       
       <?rfc include='reference.RFC.9256.xml'?>
       
       <?rfc include='reference.I-D.ietf-spring-srv6-mpls-interworking.xml'?>
              
       <?rfc include='reference.RFC.8986.xml'?>
    </references>
    <references title="Informative References">        
        <?rfc include='reference.I-D.ietf-mpls-seamless-mpls.xml'?>
    </references>
  </back>
</rfc>
