<?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-xu-isis-service-function-adv-05"
     ipr="trust200902">
  <front>
    <title abbrev="">Advertising Service Functions Using IS-IS</title>

    <author fullname="Xiaohu Xu" initials="X.X." surname="Xu">
      <organization>Huawei</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>xuxiaohu@huawei.com</email>

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

    <author fullname="Nan Wu" initials="N.W." surname="Wu">
      <organization>Huawei</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>eric.wu@huawei.com</email>

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

    <author fullname="Himanshu Shah" initials="H.S." surname="Shah">
      <organization>Ciena</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>hshah@ciena.com</email>

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

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

      <address>
        <postal>
          <street>Ronda de la Comunicacion, s/n</street>

          <street>Sur-3 building, 3rd floor</street>

          <city>Madrid,</city>

          <code>28050</code>

          <country>Spain</country>
        </postal>

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

        <uri>http://people.tid.es/LuisM.Contreras/</uri>
      </address>
    </author>

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

    <area>Routing Area</area>

    <workgroup>ISIS Working Group</workgroup>

    <keyword>Sample</keyword>

    <keyword>Draft</keyword>

    <abstract>
      <t>The MPLS source routing mechanism developed by Source Packet Routing
      in Networking (SPRING) WG can be leveraged to realize a unified source
      routing instruction which works across both IPv4 and IPv6 underlays in
      addition to the MPLS underlay. The unified source routing instruction
      can be used to realize a transport-independent service function chaining
      by encoding the service function path information or service function
      chain information as an MPLS label stack. This document describes how to
      advertise service functions and their corresponding attributes (e.g.,
      service function label) using IS-IS.</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><xref target="I-D.xu-mpls-service-chaining"/> describes how to
      leverage the unified source routing instruction <xref
      target="I-D.xu-mpls-unified-source-routing-instruction"/> to realize a
      transport-independent service function chaining by encoding the Service
      Function Path (SFP) or Service Function Chain (SFC) information as an
      MPLS label stack. To allow a service classifier to attach the MPLS label
      stack which represents a particular SFP or SFC to the selected traffic,
      the service classifier needs to know on which Service Function Forwarder
      (SFF) a given Service Function (SF) is located and what service function
      label is used to indicate that SF. This document describes how to
      advertise SFs and their corresponding attributes (e.g., service function
      label) using IS-IS.</t>
    </section>

    <section anchor="Teminology" title="Terminology">
      <t>This memo makes use of the terms defined in <xref
      target="I-D.xu-mpls-service-chaining"/> and <xref
      target="RFC4971"/>.</t>
    </section>

    <section anchor="Advertising" title="Solution Description">
      <t>SFFs within the SFC domain need to advertise each SF they are
      offering by using a new sub-TLV of the IS-IS Router CAPABILITY TLV <xref
      target="RFC4971"/>. This new sub-TLV is called as Service Function
      sub-TLV. The Service Function sub-TLV could appear multiple times wihin
      a given IS-IS Router CAPABILITY TLV when more than one SF needs to be
      advertised. The scope of the advertisement depends on the application
      but it is recommended that it SHOULD be domain-wide. To support the
      approach of encoding SFP information in the form of an MPLS label stack
      as described in <xref target="I-D.xu-mpls-service-chaining"/>, SFFs
      SHOULD allocate a locally significant MPLS label to each SF they are
      offering. Therefore, SFFs need to advertise the corresponding service
      function label to each SF they are offering by using a sub-TLV of the
      above Service Function sub-TLV, called SF Label sub-TLV. </t>

      <section title="Service Function Sub-TLV">
        <t><figure>
            <artwork align="center"><![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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |   Type=TBD1   |    Length     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                  Service Function Identifier                  |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~                          Sub-TLVs                             ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure><list>
            <t>Type: TBD1.</t>

            <t>Length: variable.</t>

            <t>Service Function Identifier: A unique identifier that
            represents an SF within an SFC-enabled domain.</t>

            <t>Sub-TLVs: contains zero or more sub-TLVs corresponding to the
            particular attributes of a given SF. The SF Label sub-TLV as
            defined in Section 3.2 is one such sub-TLV. Other sub-TLVs are to
            be defined in the future.</t>
          </list></t>
      </section>

      <section title="SF Label Sub-TLV">
        <t><figure>
            <artwork align="center"><![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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |   Type=TBD2   |    Length     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  Resv |                  SF Label             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure><list>
            <t>Type: TBD2.</t>

            <t>Length: 3.</t>

            <t>Value: The rightmost 20 bits represent an MPLS label which is
            the SF Label of the corresponding SF.</t>
          </list></t>
      </section>
    </section>

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

      <!---->
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document includes a request to IANA for allocating type codes
      for the Service Function sub-TLV and the SF Label sub-TLV.</t>

      <t/>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>This document does not introduce any new security risk.</t>
    </section>
  </middle>

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

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

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

      <?rfc include="reference.I-D.xu-mpls-service-chaining"?>

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