<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.26 (Ruby 3.0.2) -->
<?rfc tocompact="yes"?>
<?rfc tocindent="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-xu-lsr-isis-service-function-adv-00" category="std" consensus="true" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.16.0 -->
  <front>
    <title abbrev="Advertising Service Functions Using IS-IS">Advertising Service Functions Using IS-IS</title>
    <seriesInfo name="Internet-Draft" value="draft-xu-lsr-isis-service-function-adv-00"/>
    <author initials="X." surname="Xu" fullname="Xiaohu Xu">
      <organization>China Mobile</organization>
      <address>
        <email>xuxiaohu@cmss.chinamobile.com</email>
      </address>
    </author>
    <author initials="H." surname="Huang" fullname="Hongyi Huang">
      <organization>Huawei</organization>
      <address>
        <email>hongyi.huang@huawei.com</email>
      </address>
    </author>
    <author initials="H." surname="Shah" fullname="Himanshu Shah">
      <organization>Ciena</organization>
      <address>
        <email>hshah@ciena.com</email>
      </address>
    </author>
    <author initials="L." surname="Contreras" fullname="Luis M. Contreras">
      <organization>Telefonica I+D</organization>
      <address>
        <email>luismiguel.contrerasmurillo@telefonica.com</email>
      </address>
    </author>
    <date year="2023" month="March" day="09"/>
    <area>Routing Area</area>
    <workgroup>LSR Working Group</workgroup>
    <keyword>Sample</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>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="I-D.draft-ietf-spring-sr-service-programming"/> describes how to
leverage the unified source routing instruction
<xref target="RFC8663"/> 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="Terminology">
      <name>Terminology</name>
      <t>This memo makes use of the terms defined in <xref target="I-D.draft-ietf-spring-sr-service-programming"/>
and <xref target="RFC7981"/>.</t>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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 anchor="Advertising">
      <name>Solution Description</name>
      <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="RFC7981"/>.
This new sub-TLV is called as Service Function
sub-TLV. The Service Function sub-TLV could appear multiple times within
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 <bcp14>SHOULD</bcp14> 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.draft-ietf-spring-sr-service-programming"/>, SFFs
<bcp14>SHOULD</bcp14> 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 anchor="service-function-sub-tlv">
        <name>Service Function Sub-TLV</name>
        <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>
        <ul empty="true">
          <li>
            <t>Type: TBD1.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>Length: variable.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>Service Function Identifier: A unique identifier that
represents an SF within an SFC-enabled domain.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <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>
          </li>
        </ul>
      </section>
      <section anchor="sf-label-sub-tlv">
        <name>SF Label Sub-TLV</name>
        <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>
        <ul empty="true">
          <li>
            <t>Type: TBD2.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>Length: 3.</t>
          </li>
        </ul>
        <ul empty="true">
          <li>
            <t>Value: The rightmost 20 bits represent an MPLS label which is
the SF Label of the corresponding SF.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA Considerations</name>
      <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>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <t>This document does not introduce any new security risk.</t>
    </section>
    <section anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>TBD.</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t><strong>Nan Wu</strong><br/>
Huawei<br/>
eric.wu@huawei.com</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC7981">
          <front>
            <title>IS-IS Extensions for Advertising Router Information</title>
            <author fullname="L. Ginsberg" initials="L." surname="Ginsberg">
              <organization/>
            </author>
            <author fullname="S. Previdi" initials="S." surname="Previdi">
              <organization/>
            </author>
            <author fullname="M. Chen" initials="M." surname="Chen">
              <organization/>
            </author>
            <date month="October" year="2016"/>
            <abstract>
              <t>This document defines a new optional Intermediate System to Intermediate System (IS-IS) TLV named CAPABILITY, formed of multiple sub-TLVs, which allows a router to announce its capabilities within an IS-IS level or the entire routing domain.  This document obsoletes RFC 4971.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7981"/>
          <seriesInfo name="DOI" value="10.17487/RFC7981"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner">
              <organization/>
            </author>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba">
              <organization/>
            </author>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC7665">
          <front>
            <title>Service Function Chaining (SFC) Architecture</title>
            <author fullname="J. Halpern" initials="J." role="editor" surname="Halpern">
              <organization/>
            </author>
            <author fullname="C. Pignataro" initials="C." role="editor" surname="Pignataro">
              <organization/>
            </author>
            <date month="October" year="2015"/>
            <abstract>
              <t>This document describes an architecture for the specification, creation, and ongoing maintenance of Service Function Chains (SFCs) in a network.  It includes architectural concepts, principles, and components used in the construction of composite services through deployment of SFCs, with a focus on those to be standardized in the IETF.  This document does not propose solutions, protocols, or extensions to existing protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7665"/>
          <seriesInfo name="DOI" value="10.17487/RFC7665"/>
        </reference>
        <reference anchor="I-D.draft-ietf-spring-sr-service-programming">
          <front>
            <title>Service Programming with Segment Routing</title>
            <author fullname="Francois Clad" initials="F." surname="Clad">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Xiaohu Xu" initials="X." surname="Xu">
              <organization>China Mobile</organization>
            </author>
            <author fullname="Clarence Filsfils" initials="C." surname="Filsfils">
              <organization>Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Daniel Bernier" initials="D." surname="Bernier">
              <organization>Bell Canada</organization>
            </author>
            <author fullname="Cheng Li" initials="C." surname="Li">
              <organization>Huawei</organization>
            </author>
            <author fullname="Bruno Decraene" initials="B." surname="Decraene">
              <organization>Orange</organization>
            </author>
            <author fullname="Shaowen Ma" initials="S." surname="Ma">
              <organization>Mellanox</organization>
            </author>
            <author fullname="Chaitanya Yadlapalli" initials="C." surname="Yadlapalli">
              <organization>AT&amp;T</organization>
            </author>
            <author fullname="Wim Henderickx" initials="W." surname="Henderickx">
              <organization>Nokia</organization>
            </author>
            <author fullname="Stefano Salsano" initials="S." surname="Salsano">
              <organization>Universita di Roma "Tor Vergata"</organization>
            </author>
            <date day="15" month="February" year="2023"/>
            <abstract>
              <t>   This document defines data plane functionality required to implement
   service segments and achieve service programming in SR-enabled MPLS
   and IPv6 networks, as described in the Segment Routing architecture.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-spring-sr-service-programming-07"/>
        </reference>
        <reference anchor="RFC8663">
          <front>
            <title>MPLS Segment Routing over IP</title>
            <author fullname="X. Xu" initials="X." surname="Xu">
              <organization/>
            </author>
            <author fullname="S. Bryant" initials="S." surname="Bryant">
              <organization/>
            </author>
            <author fullname="A. Farrel" initials="A." surname="Farrel">
              <organization/>
            </author>
            <author fullname="S. Hassan" initials="S." surname="Hassan">
              <organization/>
            </author>
            <author fullname="W. Henderickx" initials="W." surname="Henderickx">
              <organization/>
            </author>
            <author fullname="Z. Li" initials="Z." surname="Li">
              <organization/>
            </author>
            <date month="December" year="2019"/>
            <abstract>
              <t>MPLS Segment Routing (SR-MPLS) is a method of source routing a packet through an MPLS data plane by imposing a stack of MPLS labels on the packet to specify the path together with any packet-specific instructions to be executed on it.  SR-MPLS can be leveraged to realize a source-routing mechanism across MPLS, IPv4, and IPv6 data planes by using an MPLS label stack as a source-routing instruction set while making no changes to SR-MPLS specifications and interworking with SR-MPLS implementations.</t>
              <t>This document describes how SR-MPLS-capable routers and IP-only routers can seamlessly coexist and interoperate through the use of SR-MPLS label stacks and IP encapsulation/tunneling such as MPLS-over-UDP as defined in RFC 7510.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8663"/>
          <seriesInfo name="DOI" value="10.17487/RFC8663"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
