<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
    There has to be one entity for each item to be referenced. 
    An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3552 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.xml">
<!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
    please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
    (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
    (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-xu-ospf-service-function-adv-01"
     ipr="trust200902">
  <front>
    <title abbrev="Advertising Service Functions Using OSPF">Advertising
    Service Functions Using OSPF</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>

    <!--

-->

    <date day="18" month="June" year="2014"/>

    <abstract>
      <t>The Segment Routing mechanism can be leveraged to realize the service
      path layer functionality of the Service Function Chaining (i.e, steering
      traffic through the service function path). This document describes how
      to advertise service functions and their corresponding characters
      (e.g.,service function segment ID) using OSPF. Here the OSPF means both
      OSPFv2 and OSPFv3.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t><xref target="I-D.xu-spring-sfc-use-case"/> describes a particular
      use case for SPRING where the Segment Routing (SR) mechanism is
      leveraged to realize the service path layer functionality of the Service
      Function Chaining (SFC), i.e, steering traffic through the service
      function path. To allow a service classifier to encode the segment list
      representing a particular service function path, the classifier needs to
      know on which service node(s) a given service function is located and
      what segment ID (SID) is used to indicate that service function on a
      given service node. This document describes how to advertise service
      functions and their corresponding characters (e.g.,service function
      segment ID) using OSPF. Here the OSPF means both OSPFv2 <xref
      target="RFC2328"/> and OSPFv3 <xref target="RFC2740"/>.</t>

      <section 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>
      </section>
    </section>

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

    <section anchor="Advertising"
             title="Advertising Service Functions and Corresponding SIDs">
      <t>Service nodes within the network need to advertise each service
      function they are offering by using a TLV within the body of the OSPF
      Router Information (RI) Opaque LSA <xref target="RFC4970"/>. This new
      TLV is called as Service Function TLV. The Service Function TLV is
      applicable to both OSPFv2 and OSPFv3. The Service Function TLV could
      appear multiple times wihin a given Router Information (RI) Opaque LSA
      when more than one service function needs to be advertised by a given
      service node. The scope of the advertisement depends on the application
      but it is recommended that it SHOULD be domain-wide. Furthermore,
      service nodes need to allocate a corresponding SID to each service
      function and meanwhile advertise it by using a sub-TLV of the above
      Service Function TLV. In the MPLS-SR case, service nodes within the
      network would allocate a locally significant MPLS label to each service
      function they are offering. In the IPv6-SR case, service nodes within
      the network would allocate a locally unique link-local IPv6 address to
      each service function they are offering. For a given service function,
      the service node offering that service function could advertise the
      corresponding SID in the format of an MPLS label, an IPv6 address, or
      both.</t>

      <section title="Service Function 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=TBD            |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Service Function Identifier                  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                          Sub-TLVs                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
          </figure><list style="empty">
            <t>Type: TBD.</t>

            <t>Length: variable.</t>

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

            <t>Sub-TLVs: contains zero or more sub-TLVs related to service
            functions. Besides the Service Function SID sub-TLV as defined in
            Section 3.2, other sub-TLVs (to be defined in future) which are
            used to describe some characters of a given service function could
            also be added.</t>
          </list></t>
      </section>

      <section title="Service Function SID 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=TBD            |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                    Service Function SID                       ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
          </figure><list style="empty">
            <t>Type: TBD</t>

            <t>Length: variable (3 or 16).</t>

            <t>Value: if the Length is set to 3, the rightmost 20 bits
            represent an MPLS label. If the length is set to 16, the value
            represents an IPv6 address.</t>
          </list></t>
      </section>
    </section>

    <!---->

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

      <!---->
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This memo includes a request to IANA for allocating one TLV type code
      for the Service Function TLV, and one sub-TLV type code for the Service
      Function SID sub-TLV.</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">
      &RFC2119;

      <?rfc ?>

      <?rfc include="reference.I-D.xu-spring-sfc-use-case"?>

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

      <!---->
    </references>

    <references title="Informative References">
      <!---->

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

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

      <?rfc include="reference.I-D.filsfils-spring-segment-routing"?>
    </references>
  </back>
</rfc>
