<?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-ietf-isis-encapsulation-cap-01"
     ipr="trust200902">
  <front>
    <title abbrev="">Advertising Tunnelling Capability in IS-IS</title>

    <author fullname="Xiaohu Xu" initials="X.X." role="editor" surname="Xu">
      <organization>Huawei</organization>

      <address>
        <email>xuxiaohu@huawei.com</email>
      </address>
    </author>

    <author fullname="Bruno Decraene " initials="B.D." role="editor"
            surname="Decraene">
      <organization>Orange</organization>

      <address>
        <email>bruno.decraene@orange.com</email>
      </address>
    </author>

    <author fullname="Robert Raszuk" initials="R.R." surname="Raszuk">
      <organization>Bloomberg LP</organization>

      <address>
        <!--
       <postal>
         <street></street>
-->

        <!-- Reorder these if your country does things differently -->

        <!--
         <city>Soham</city>

         <region></region>

         <code></code>

         <country>UK</country>
       </postal>

       <phone>+44 7889 488 335</phone>
-->

        <email>robert@raszuk.net</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Uma Chunduri" initials="U.C." surname="Chunduri">
      <organization>Huawei</organization>

      <address>
        <!--
       <postal>
         <street></street>
-->

        <!-- Reorder these if your country does things differently -->

        <!--
         <city>Bangalore</city>

         <region></region>

         <code></code>

         <country>India</country>
       </postal>

       <phone>+44 7889 488 335</phone>
-->

        <email>uma.chunduri@gmail.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Luis M. Contreras" initials="L.C." surname="Contreras">
      <organization>Telefonica I+D</organization>

      <address>
        <!--
       <postal>
         <street></street>
-->

        <!-- Reorder these if your country does things differently -->

        <!--
         <city>Bangalore</city>

         <region></region>

         <code></code>

         <country>India</country>
       </postal>

       <phone>+44 7889 488 335</phone>
-->

        <email>luismiguel.contrerasmurillo@telefonica.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <author fullname="Luay Jalil" initials="L.J." surname="Jalil">
      <organization>Verizon</organization>

      <address>
        <!--
       <postal>
         <street></street>
-->

        <!-- Reorder these if your country does things differently -->

        <!--
         <city>Bangalore</city>

         <region></region>

         <code></code>

         <country>India</country>
       </postal>

       <phone>+44 7889 488 335</phone>
-->

        <email>luay.jalil@verizon.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <date month="" year="2017"/>

    <area>Routing Area</area>

    <workgroup>ISIS Working Group</workgroup>

    <keyword>Sample</keyword>

    <keyword>Draft</keyword>

    <abstract>
      <t>Some networks use tunnels for a variety of reasons. A large variety
      of tunnel types are defined and the ingress needs to select a type of
      tunnel which is supported by the egress. This document defines how to
      advertise egress tunnel capabilities in IS-IS Router Capability TLV.</t>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>Some networks use tunnels for a variety of reasons, such as:</t>

      <t><list style="symbols">
          <t>Partial deployment of MPLS-SPRING as described in <xref
          target="I-D.xu-mpls-unified-source-routing-instruction"/>, where IP
          tunnels are used between MPLS-SPRING-enabled routers so as to
          traverse non- MPLS routers.</t>

          <t>Partial deployment of MPLS-BIER as described in Section 6.9 of
          <xref target="I-D.ietf-bier-architecture"/>, where IP tunnels are
          used between MPLS-BIER-capable routers so as to traverse non
          MPLS-BIER <xref target="I-D.ietf-bier-mpls-encapsulation"/>
          routers.</t>

          <t>Partial deployment of IPv6 (resp. IPv4) in IPv4 (resp. IPv6)
          networks as described in <xref target="RFC5565"/>, where IPvx
          tunnels are used between IPvx-enabled routers so as to traverse
          non-IPvx routers.</t>

          <t>Remote Loop Free Alternate repair tunnels as described in <xref
          target="RFC7490"/>, where tunnels are used between the Point of
          Local Repair and the selected PQ node.</t>
        </list></t>

      <t>The ingress needs to select a type of tunnel which is supported by
      the egress. This document describes how to use IS-IS Router Capability
      TLV to advertise the egress tunnelling capabilities of nodes.</t>
    </section>

    <section anchor="Teminology" title="Terminology">
      <t>This memo makes use of the terms defined in <xref
      target="RFC4971"/>.</t>
    </section>

    <section anchor="Advertising" title="Advertising Encapsulation Capability">
      <t>Routers advertises their supported encapsulation type(s) by
      advertising a new sub-TLV of the IS-IS Router CAPABILITY TLV <xref
      target="RFC4971"/>, referred to as Encapsulation Capability sub-TLV.
      This sub-TLV SHOULD NOT appear more than once within a given IS-IS
      Router CAPABILITY TLV. The scope of the advertisement depends on the
      application but it is recommended that it SHOULD be domain-wide. The
      Type code of the Encapsulation Capability sub-TLV is TBD1, the Length
      value is variable, and the Value field contains one or more Tunnel
      Encapsulation Type sub-TLVs. Each Encapsulation Type sub-TLVs indicates
      a particular encapsulation format that the advertising router
      supports.</t>
    </section>

    <section title="Tunnel Encapsulation Type">
      <t>The Tunnel Encapsulation Type sub-TLV is structured as follows:</t>

      <t><figure>
          <artwork><![CDATA[        0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |   Tunnel Type   |    Length     |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                                                               |
       |                             Value                             |
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
        </figure></t>

      <t><list>
          <t>Tunnel Type (1 octets): identifies the type of tunneling
          technology being signaled. This document defines the following
          types: <list style="numbers">
              <t>L2TPv3 over IP <xref target="RFC3931"/> : Type code=1;</t>

              <t>GRE <xref target="RFC2784"/> : Type code=2;</t>

              <t>Transmit tunnel endpoint <xref target="RFC5566"/> : Type
              code=3;</t>

              <t>IPsec in Tunnel-mode <xref target="RFC5566"/> : Type
              code=4;</t>

              <t>IP in IP tunnel with IPsec Transport Mode <xref
              target="RFC5566"/> : Type code=5;</t>

              <t>MPLS-in-IP tunnel with IPsec Transport Mode <xref
              target="RFC5566"/> : Type code=6;</t>

              <t>IP in IP <xref target="RFC2003"/> <xref target="RFC4213"/>:
              Type code=7;</t>

              <t>VXLAN <xref target="RFC7348"/> : Type code=8;</t>

              <t>NVGRE <xref target="RFC7637"/> : Type code=9;</t>

              <t>MPLS <xref target="RFC3032"/> : Type code=10;</t>

              <t>MPLS-in-GRE <xref target="RFC4023"/> : Type code=11;</t>

              <t>VXLAN GPE <xref target="I-D.ietf-nvo3-vxlan-gpe"/> : Type
              code=12;</t>

              <t>MPLS-in-UDP <xref target="RFC7510"/> : Type code=13;</t>

              <t>MPLS-in-UDP-with-DTLS <xref target="RFC7510"/> : Type
              code=14;</t>

              <t>MPLS-in-L2TPv3 <xref target="RFC4817"/> : Type code=15;</t>

              <t>GTP: Type code=16;</t>
            </list>Unknown types are to be ignored and skipped upon
          receipt.</t>

          <t>Length (1 octets): unsigned integer indicating the total number
          of octets of the value field.</t>

          <t>Value (variable): zero or more Tunnel Encapsulation Attribute
          sub- TLVs as defined in Section 5.</t>
        </list></t>
    </section>

    <section title="Tunnel Encapsulation Attribute">
      <t>The Tunnel Encapsulation Attribute sub-TLV is structured as as
      follows:</t>

      <t><figure>
          <artwork><![CDATA[                        +-----------------------------------+
                        |      Sub-TLV Type (1 Octet)       |
                        +-----------------------------------+
                        |     Sub-TLV Length (1 Octet)      |
                        +-----------------------------------+
                        |     Sub-TLV Value (Variable)      |
                        |                                   |
                        +-----------------------------------+]]></artwork>
        </figure><list>
          <t>Sub-TLV Type (1 octet): each sub-TLV type defines a certain
          property about the tunnel TLV that contains this sub-TLV. The
          following are the types defined in this document:<list
              style="numbers">
              <t>Encapsulation Parameters: sub-TLV type = 1; (See Section
              5.1)</t>

              <t>Encapsulated Protocol: sub-TLV type = 2; (See Section
              5.2)</t>

              <t>End Point: sub-TLV type = 3; (See Section 5.3)</t>

              <t>Color: sub-TLV type = 4; (See Section 5.4)</t>
            </list></t>

          <t>Sub-TLV Length (1 octet): unsigned integer indicating the total
          number of octets of the sub-TLV value field.</t>

          <t>Sub-TLV Value (variable): encodings of the value field depend on
          the sub-TLV type as enumerated above. The following sub-sections
          define the encoding in detail.</t>
        </list>Any unknown sub-TLVs MUST be ignored and skipped. However, if
      the TLV is understood, the entire TLV MUST NOT be ignored just because
      it contains an unknown sub-TLV.</t>

      <t>If a sub-TLV is erroneous, this specific Tunnel Encapsulation MUST be
      ignored and skipped. However, others Tunnel Encapsulations MUST be
      considered.</t>

      <section title="Tunnel Parameters sub-TLV">
        <t>This sub-TLV has its format defined in [RFC5512] under the name
        Encapsulation sub-TLV.</t>
      </section>

      <section title="Encapsulated Protocol sub-TLV">
        <t>This sub-TLV has its format defined in [RFC5512] under the name
        Protocol Type.</t>
      </section>

      <section title="End Point sub-TLV">
        <t>The value field carries the Network Address to be used as tunnel
        destination address.</t>

        <t>If length is 4, the Address Family (AFI) is IPv4.</t>

        <t>If length is 16, the Address Family (AFI) is IPv6.</t>
      </section>

      <section title="Color sub-TLV">
        <t>The valued field is a 4 octets opaque unsigned integer.</t>

        <t>The color value is user defined and configured locally on the
        routers. It may be used by the service providers to define
        policies.</t>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t/>

      <section title="IS-IS Router Capability">
        <t>This document requests IANA to allocate a new code point from
        registry IS-IS Router CAPABILITY TLV.</t>

        <figure>
          <artwork><![CDATA[    Value   TLV Name                               Reference
    -----   ------------------------------------   -------------
    TBD1    Tunnel Capabilities                    This document]]></artwork>
        </figure>

        <t/>
      </section>

      <section title="IGP Tunnel Encapsulation Types Registry">
        <t>This document requests IANA to create a new registry "IGP Tunnel
        Encapsulation Types" with the following registration procedure:
        <figure>
            <artwork><![CDATA[              Registry Name: IGP Tunnel Encapsulation Type.

   Value      Name                                         Reference
   -------    ------------------------------------------   -------------
         0    Reserved                                     This document
         1    L2TPv3 over IP                               This document
         2    GRE                                          This document
         3    Transmit tunnel endpoint                     This document
         4    IPsec in Tunnel-mode                         This document
         5    IP in IP tunnel with IPsec Transport Mode    This document
         6    MPLS-in-IP tunnel with IPsec Transport Mode  This document
         7    IP in IP                                     This document
         8    VXLAN                                        This document
         9    NVGRE                                        This document
        10    MPLS                                         This document
        11    MPLS-in-GRE                                  This document
        12    VXLAN-GPE                                    This document
        13    MPLS-in-UDP                                  This document
        14    MPLS-in-UDP-with-DTLS                        This document
        15    MPLS-in-L2TPv3                               This document
        16    GTP                                          This document
    17-250    Unassigned
   251-254    Experimental                                 This document
       255    Reserved                                     This document
]]></artwork>
          </figure> Assignments of Encapsulation Types are via Standards
        Action <xref target="RFC5226"/>.</t>
      </section>

      <section title="IGP Tunnel Encapsulation Attribute Types Registry">
        <t>This document requests IANA to create a new registry "IGP Tunnel
        Encapsulation Attribute Types" with the following registration
        procedure:</t>

        <figure>
          <artwork><![CDATA[           Registry Name: IGP Tunnel Encapsulation Attribute Types.

Value      Name                                      Reference
-------    ------------------------------------      -------------
      0    Reserved                                  This document
      1    Encapsulation parameters                  This document
      2    Protocol                                  This document
      3    End Point                                 This document
      4    Color                                     This document
  5-250    Unassigned
251-254    Experimental                              This document
    255    Reserved                                  This document]]></artwork>
        </figure>

        <t>Assignments of Encapsulation Attribute Types are via Standards
        Action <xref target="RFC5226"/>.</t>
      </section>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>Security considerations applicable to softwires can be found in the
      mesh framework <xref target="RFC5565"/>. In general, security issues of
      the tunnel protocols signaled through this IGP capability extension are
      inherited.</t>

      <t>If a third party is able to modify any of the information that is
      used to form encapsulation headers, to choose a tunnel type, or to
      choose a particular tunnel for a particular payload type, user data
      packets may end up getting misrouted, misdelivered, and/or dropped.</t>

      <t>Security considerations for the base IS-IS protocol are covered in
      <xref target="RFC1195"/>.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>This document is partially inspired by <xref target="RFC5512"/>.</t>

      <t>The authors would like to thank Carlos Pignataro and Karsten Thomann
      for their valuable comments on this draft.</t>

      <!---->
    </section>
  </middle>

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

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

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

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

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

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

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

      <?rfc include="reference.RFC.5226"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.I-D.ietf-bier-architecture"?>

      <?rfc include="reference.I-D.ietf-bier-mpls-encapsulation"?>

      <?rfc include="reference.I-D.ietf-nvo3-vxlan-gpe"?>

      <?rfc include="reference.I-D.xu-mpls-unified-source-routing-instruction"?>

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

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

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

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

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

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

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

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

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

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

      <?rfc include="reference.RFC.7637"?>
    </references>
  </back>
</rfc>
