<?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-ospf-mpls-elc-03" ipr="trust200902">
  <front>
    <title abbrev="Signalling ELC using OSPF">Signaling Entropy Label
    Capability 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="Sriganesh Kini" initials="S.K" surname="Kini">
      <organization/>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <phone/>

        <facsimile/>

        <email>sriganeshkini@gmail.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Siva Sivabalan" initials="S.S" surname="Sivabalan">
      <organization>Cisco</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <phone/>

        <facsimile/>

        <email>msiva@cisco.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Clarence Filsfils" initials="C.F." surname="Filsfils">
      <organization>Cisco</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>cfilsfil@cisco.com</email>

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

    <author fullname="Stephane Litkowski" initials="S.L." surname="Litkowski">
      <organization>Orange</organization>

      <address>
        <postal>
          <street/>

          <street/>

          <city/>

          <code/>

          <country/>
        </postal>

        <email>stephane.litkowski@orange.com</email>

        <uri/>
      </address>
    </author>

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

    <area>Routing Area</area>

    <workgroup>OSPF Working Group</workgroup>

    <keyword>Sample</keyword>

    <keyword>Draft</keyword>

    <abstract>
      <t>Multi Protocol Label Switching (MPLS) has defined a mechanism to load
      balance traffic flows using Entropy Labels (EL). An ingress LSR cannot
      insert ELs for packets going into a given tunnel unless an egress LSR
      has indicated via signaling that it can process ELs on that tunnel. This
      draft defines a mechanism to signal that capability using OSPF. This
      mechanism is useful when the label advertisement is also done via
      OSPF.</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>Multi Protocol Label Switching (MPLS) has defined a method in <xref
      target="RFC6790"/> to load balance traffic flows using Entropy Labels
      (EL). An ingress LSR cannot insert ELs for packets going into a given
      tunnel unless an egress LSR has indicated that it can process ELs on
      that tunnel. <xref target="RFC6790"/> defines the signaling of this
      capability (a.k.a., Entropy Label Capability - ELC) via signaling
      protocols. Recently, mechanisms are being defined to signal labels via
      link state Interior Gateway Protocols (IGP) such as OSPF <xref
      target="I-D.ietf-ospf-segment-routing-extensions"/> . In such scenario
      the signaling mechanisms defined in <xref target="RFC6790"/> are
      inadequate. This draft defines a mechanism to signal the ELC using OSPF.
      This mechanism is useful when the label advertisement is also done via
      OSPF. In addition, in the cases where stacked LSPs are used for whatever
      reasons (e.g., SPRING-MPLS <xref
      target="I-D.ietf-spring-segment-routing-mpls"/>), it would be useful for
      ingress LSRs to know each LSR's capability of reading the maximum label
      stack deepth. This capability, referred to as Readable Label Deepth
      Capability (RLDC) can be used by ingress LSRs to determine whether it's
      necessary to insert an EL for a given LSP tunnel in the case where there
      has already been at least one EL in the label stack <xref
      target="I-D.ietf-mpls-spring-entropy-label"/> . Of course, even it has
      been determined that it's neccessary to insert an EL for a given LSP
      tunnel, if the egress LSR of that LSP tunnel has not yet indicated that
      it can process ELs for that tunnel, the ingress LSR MUST NOT include an
      entropy label for that tunnel as well.</t>
    </section>

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

    <section title="Non-OSPF Functional Capabilities TLV">
      <t>This document defines the Router Non-OSPF Functional Capabilities TLV
      for advertisement in the OSPF Router Information LSA. An OSPF router
      advertising an OSPF RI LSA MAY include the Router Non-OSPF Functional
      Capabilities TLV. If included, it MUST be included in the first instance
      of the LSA. Additionally, the TLV MUST reflect the advertising OSPF
      router's actual non-OSPF functional capabilities in the flooding scope
      of the containing OSPF RI LSA. </t>

      <t>The format of the Router Non-OSPF Functional Capabilities TLV is as
      follows:<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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           Type=TBD1           |            Length             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                 Non-OSPF Functional Capabilities              |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
           Figure 1: Non-OSPF Functional Capabilities TLV Format]]></artwork>
        </figure><list>
          <t>Type: TBD1.</t>

          <t>Length: indicates the length of the value portion in octets and
          will be a multiple of 4 octets dependent on the number of
          capabilities advertised. Initially, the length will be 4, denoting 4
          octets of non-OSPF functional capability bits.</t>

          <t>Value: A variable-length sequence of capability bits rounded to a
          multiple of 4 octets padded with undefined bits. Initially, there
          are 4 octets of capability bits. Bits are numbered left to right
          starting with the most significant bit being bit 0.</t>
        </list>The Non-OSPF Functional Capabilities TLV MAY be followed by
      optional TLVs that further specify a non-OSPF functional capability. In
      contrast to the OSPF Router Functional Capabilities TLV, the non-OSPF
      functional capabilities advertised in this TLV have no impact on the
      OSPF protocol operation. The specifications for non-OSPF functional
      capabilities advertised in this TLV MUST describe protocol behavior and
      address backwards compatibility. </t>

      <t/>
    </section>

    <section anchor="Advertising" title="Advertising ELC Using OSPF">
      <t>One bit of the Non-OSPF Functional Capability Bits is to be assigned
      by the IANA for the ELC. If a router has multiple linecards, the router
      MUST NOT announce the ELC unless all of its linecards are capable of
      processing ELs.</t>
    </section>

    <section title="Advertising RLDC Using OSPF">
      <t>A new TLV within the body of the OSPF RI LSA, called RLDC TLV is
      defined to advertise the capability of the router to read the maximum
      label stack depth. As showed in Figure 2, it is formatted as described
      in Section 2.3 of <xref target="RFC7770"/> with a Type code to be
      assigned by IANA and a Length of one. The Value field is set to the
      maximum readable label stack depth in the range between 1 to 255. The
      scope of the advertisement depends on the application but it is
      RECOMMENDED that it SHOULD be domain-wide. If a router has multiple
      linecards with different capabilities of reading the maximum label stack
      deepth, the router MUST advertise the smallest one in the RLDC TLV. This
      TLV is applicable to both OSPFv2 and OSPFv3.</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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           Type=TBD2           |            Length             |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     RLD       |
     +-+-+-+-+-+-+-+-+
                        Figure 2: RLDC TLV Format]]></artwork>
        </figure></t>
    </section>

    <section title="Usage and Applicability">
      <t>The ELC is used by ingress LSRs to determine whether an EL could be
      inserted into a given LSP tunnel. The RLDC is used by ingress LSRs to
      determine whether it's necessary to insert an EL for a given LSP tunnel
      in the case where there has already been at least one EL in the label
      stack. This document only describes how to signal the ELC and RLDC using
      OSPF. As for how to apply those capabilities when inserting EL(s) into
      LSP tunnel(s), it's outside the scope of this document and accordingly
      would be described in <xref
      target="I-D.ietf-mpls-spring-entropy-label"/>.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank Yimin Shen, George Swallow, Acee
      Lindem and Carlos Pignataro for their valuable comments.</t>

      <!---->
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document requests IANA to allocate one TLV type from the OSPF RI
      TLVs registry for the Non-OSPF Functional Capabilities TLV. Futhermore,
      this document requests IANA to creat a subregistry for "Non-OSPF
      Functional Capability Bits" within the "Open Shortest Path First v2
      (OSPFv2) Parameters" registry. This subregistry is comprised of the
      fields Bit Number, Capability Name, and Reference. Initially, one bit is
      reqested to be assigned for the ELC. All Non-OSPF Functional Capability
      TLV additions are to be assigned through IETF Review <xref
      target="RFC5226"/>. </t>

      <t>This document also requests IANA to allocate one TLV type from the
      OSPF RI TLVs registry for the RLDC TLV.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The security considerations as described in <xref target="RFC7770"/>
      is appliable to this document. 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.7770"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.I-D.ietf-mpls-spring-entropy-label"?>

      <?rfc include="reference.I-D.ietf-ospf-segment-routing-extensions"?>

      <?rfc include="reference.I-D.ietf-spring-segment-routing-mpls"?>

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

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