<?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-ginsberg-isis-te-app-02.txt"
     ipr="trust200902" updates="">
  <front>
    <title abbrev="draft-ginsberg-isis-te-app">IS-IS TE Attributes per
    application</title>

    <author fullname="Les Ginsberg" initials="L" surname="Ginsberg">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>821 Alder Drive</street>

          <city>Milpitas</city>

          <code>95035</code>

          <region>CA</region>

          <country>USA</country>
        </postal>

        <email>ginsberg@cisco.com</email>
      </address>
    </author>

    <author fullname="Peter Psenak" initials="P" surname="Psenak">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>Apollo Business Center Mlynske nivy 43</street>

          <city>Bratislava</city>

          <code>821 09</code>

          <country>Slovakia</country>
        </postal>

        <email>ppsenak@cisco.com</email>
      </address>
    </author>

    <author fullname="Stefano Previdi" initials="S" surname="Previdi">
      <organization>Individual</organization>

      <address>
        <postal>
          <street/>

          <country/>
        </postal>

        <email>stefano@previdi.net</email>
      </address>
    </author>

    <author fullname="Wim Henderickx" initials="W" surname="Henderickx">
      <organization>Nokia</organization>

      <address>
        <postal>
          <street>Copernicuslaan 50</street>

          <city>Antwerp</city>

          <code>2018 94089</code>

          <country>Belgium</country>
        </postal>

        <email>wim.henderickx@nokia.com</email>
      </address>
    </author>

    <date day="7" month="June" year="2017"/>

    <area>Routing Area</area>

    <workgroup>Networking Working Group</workgroup>

    <keyword/>

    <abstract>
      <t>Existing traffic engineering related link attribute advertisements
      have been defined and are used in RSVP-TE deployments. In cases where
      multiple applications wish to make use of these link attributes the
      current advertisements do not support application specific values for a
      given attribute nor do they support indication of which applications are
      using the advertised value for a given link.</t>

      <t>This draft introduces new link attribute advertisements which address
      both of these shortcomings. It also discusses backwards compatibility
      issues and how to minimize duplicate advertisements in the presence of
      routers which do not support the extensions defined in this
      document.</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 RFC 2119 [RFC2119].</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>Advertisement of link attributes by the
      Intermediate-System-to-Intermediate-System (IS-IS) protocol in support
      of traffic engineering (TE) was introduced by [RFC5305] and extended by
      [RFC5307], [RFC6119], and [RFC7810]. Use of these extensions has been
      associated with deployments supporting Traffic Engineering over
      Multiprotocol Label Switching (MPLS) in the presence of Resource
      Reservation Protocol (RSVP) - more succinctly referred to as
      RSVP-TE.</t>

      <t>In recent years new applications have been introduced which have use
      cases for many of the link attributes historically used by RSVP-TE. Such
      applications include Segment Routing Traffic Engineering (SRTE) and Loop
      Free Alternates (LFA). This has introduced ambiguity in that if a
      deployment includes a mix of RSVP-TE support and SRTE support (for
      example) it is not possible to unambiguously indicate which
      advertisements are to be used by RSVP-TE and which advertisements are to
      be used by SRTE. If the topologies are fully congruent this may not be
      an issue, but any incongruence leads to ambiguity.</t>

      <t>An additional issue arises in cases where both applications are
      supported on a link but the link attribute values associated with each
      application differ. Current advertisements do not support advertising
      application specific values for the same attribute on a specific
      link.</t>

      <t>This document defines extensions which address these issues. Also, as
      evolution of use cases for link attributes can be expected to continue
      in the years to come, this document defines a solution which is easily
      extensible to the introduction of new applications and new use
      cases.</t>
    </section>

    <section title="Requirements Discussion">
      <t>As stated previously, evolution of use cases for link attributes can
      be expected to continue - so any discussion of existing use cases is
      limited to requirements which are known at the time of this writing.
      However, in order to determine the functionality required beyond what
      already exists in IS-IS, it is only necessary to discuss use cases which
      justify the key points identified in the introduction - which are:</t>

      <t><list style="numbers">
          <t>Support for indicating which applications are using the link
          attribute advertisements on a link</t>

          <t>Support for advertising application specific values for the same
          attribute on a link</t>
        </list>[RFC7855] discusses use cases/requirements for SR. Included
      among these use cases is SRTE. If both RSVP-TE and SRTE are deployed in
      a network, link attribute advertisements can be used by one or both of
      these applications. As there is no requirement for the link attributes
      advertised on a given link used by SRTE to be identical to the link
      attributes advertised on that same link used by RSVP-TE, there is a
      clear requirement to indicate independently which link attribute
      advertisements are to be used by each application.</t>

      <t>As the number of applications which may wish to utilize link
      attributes may grow in the future, an additional requirement is that the
      extensions defined allow the association of additional applications to
      link attributes without altering the format of the advertisements or
      introducing new backwards compatibility issues.</t>

      <t>Finally, there may still be many cases where a single attribute value
      can be shared among multiple applications, so the solution must minimize
      advertising duplicate link/attribute pairs whenever possible.</t>
    </section>

    <section title="Legacy Advertisements">
      <t>There are existing advertisements used in support of RSVP-TE. These
      advertisements include sub-TLVs for TLVs 22, 23, 141, 222, and 223 and
      TLVs for SRLG advertisement.</t>

      <section title="Legacy sub-TLVs">
        <t><figure>
            <artwork><![CDATA[Sub-TLVs for TLVs 22, 23, 141, 222, and 223 

Code Point/Attribute Name
--------------------------
 3 Administrative group (color)
 9 Maximum link bandwidth
10 Maximum reservable link bandwidth
11 Unreserved bandwidth
14 Extended Administrative Group
33 Unidirectional Link Delay
34 Min/Max Unidirectional Link Delay
35 Unidirectional Delay Variation
36 Unidirectional Link Loss
37 Unidirectional Residual Bandwidth
38 Unidirectional Available Bandwidth
39 Unidirectional Utilized Bandwidth

]]></artwork>
          </figure></t>
      </section>

      <section title="Legacy SRLG Advertisements">
        <t><figure>
            <artwork><![CDATA[TLV 138 GMPLS-SRLG
  Supports links identified by IPv4 addresses and
  unnumbered links

TLV 139 IPv6 SRLG
  Supports links identified by IPv6 addresses

]]></artwork>
          </figure>Note that [RFC6119] prohibits the use of TLV 139 when it is
        possible to use TLV 138.</t>
      </section>
    </section>

    <section title="Advertising Application Specific Link Attributes">
      <t>Two new code points are defined in support of Application Specific
      Link Attribute Advertisements:</t>

      <t>1) Application Specific Link Attributes sub-TLV for TLVs 22, 23, 141,
      222, and 223</t>

      <t>2)Application Specific Shared Risk Link Group (SRLG) TLV</t>

      <t>In support of these new advertisements, an application bit mask is
      defined which identifies the application(s) associated with a given
      advertisement.</t>

      <t>The following sections define the format of these new
      advertisements.</t>

      <section title="Application Identifiers">
        <t>Identification of the set of standard applications associated with
        the link attribute advertisements utilizes a bit mask where the
        definition of each bit is defined in a new IANA controlled registry.
        There is also support for non-standard User Defined Applications(UDAs)
        which may be optionally included.</t>

        <t>This encoding is used by both the Application Specific Link
        Attributes sub-TLV and the Application Specific SRLG TLV.</t>

        <t><figure>
            <artwork><![CDATA[   Standard Application Bit Mask Length/Flags: Non-zero (1 octet)
    If this octet is 0 the entire sub-TLV/TLV in which it is
    contained MUST be ignored.   

          0 1 2 3 4 5 6 7 
         +-+-+-+-+-+-+-+-+
         |U|L| SA-Length |
         +-+-+-+-+-+-+-+-+

   U-flag: When set indicates the presence of a 
    UDA length/Bit Mask.

   L-flag: Applications listed (both Standard and
    User Defined) MUST use the legacy advertisements
    for the corresponding link found in TLVs 22, 23,
    141, 222, and 223 or TLV 138 or TLV 139 as appropriate.

   SA-Length: Indicates the length in octets (0-63) of the Bit Mask
    for Standard Applications in octets. The length MAY be 0
    if the U-flag is set and there are no Standard 
    Applications being advertised.
 
   Standard Application Bit Mask
    This is omitted if SA-Length is 0.

     (SA-Length * 8) bits

          0 1 2 3 4 5 6 7 ...
         +-+-+-+-+-+-+-+-+...
         |R|S|F|          ...
         +-+-+-+-+-+-+-+-+...

 
   R-bit: RSVP-TE 

   S-bit: Segment Routing Traffic Engineering

   F-bit: Loop Free Alternate

   If the U-flag is set then the following fields are
    included:

   User Defined Application Bit Mask Length 
    in octets: Non-zero (1 octet)
   
   User Defined Application Bit Mask

     (UDA Length * 8) bits

          0 1 2 3 4 5 6 7 ...
         +-+-+-+-+-+-+-+-+...
         |                ...
         +-+-+-+-+-+-+-+-+...

 

]]></artwork>
          </figure>Standard Application Bits are defined/sent starting with
        Bit 0. Additional bit definitions that may be defined in the future
        SHOULD be assigned in ascending bit order so as to minimize the number
        of octets that will need to be transmitted. Undefined bits MUST be
        transmitted as 0 and MUST be ignored on receipt. Bits that are NOT
        transmitted MUST be treated as if they are set to 0 on receipt.</t>

        <t>User Defined Application bits have no relationship to Standard
        Application bits and are NOT managed by IANA or any other standards
        body. It is recommended that bits are used starting with Bit 0 so as
        to minimize the number of octets required to advertise all UDAs.</t>
      </section>

      <section title="Application Specific Link Attributes sub-TLV">
        <t>A new sub-TLV for TLVs 22, 23, 141, 222, and 223 is defined which
        supports specification of the applications and application specific
        attribute values.</t>

        <t><figure>
            <artwork><![CDATA[   Type: 15 (suggested value - to be assigned by IANA)
   Length: Variable (1 octet)
   Value:

     Application Bit Mask (as defined in Section 3.1)

     Link Attribute sub-sub-TLVs - format matches the
     existing formats defined in [RFC5305] and [RFC7810]]]></artwork>
          </figure></t>

        <t>When the L-flag is set in the Application Identifiers, all of the
        applications specified in the bit mask MUST use the link attribute
        sub-TLV advertisements listed in Section 3.1 for the corresponding
        link. Application specific link attribute sub-sub-TLVs for the
        corresponding link attributes MUST NOT be advertised for the set of
        applications specified in the Standard/User Application Bit Masks and
        all such advertisements MUST be ignored on receipt.</t>

        <t>Multiple sub-TLVs for the same link MAY be advertised. When
        multiple sub-TLVs for the same link are advertised, they SHOULD
        advertise non-conflicting application/attribute pairs. A conflict
        exists when the same application is associated with two different
        values of the same link attribute for a given link. In cases where
        conflicting values for the same application/attribute/link are
        advertised all the conflicting values MUST be ignored.</t>

        <t>For a given application, the setting of the L-flag MUST be the same
        in all sub-TLVs for a given link. In cases where this constraint is
        violated, the L-flag MUST be considered set for this application.</t>

        <t>A new registry of sub-sub-TLVs is to be created by IANA which
        defines the link attribute sub-sub-TLV code points. A sub-sub-TLV is
        defined for each of the existing sub-TLVs listed in Section 3.1.
        Format of the sub-sub-TLVs matches the format of the corresponding
        legacy sub-TLV and IANA is requested to assign the legacy sub-TLV
        identifer to the corresponding sub-sub-TLV.</t>
      </section>

      <section title="Application Specific SRLG TLV">
        <t>A new TLV is defined to advertise application specific SRLGs for a
        given link. Although similar in functionality to TLV 138 (defined by
        [RFC5307]) and TLV 139 (defined by [RFC6119], a single TLV provides
        support for IPv4, IPv6, and unnumbered identifiers for a link. Unlike
        TLVs 138/139, it utilizes sub-TLVs to encode the link identifiers in
        order to provide the flexible formatting required to support multiple
        link identifier types.</t>

        <t><figure>
            <artwork><![CDATA[    Type: 238 (Suggested value - to be assigned by IANA)
    Length: Number of octets in the value field (1 octet)
    Value:
      Neighbor System-ID + pseudo-node ID (7 octets)
      Application Bit Mask (as defined in Section 3.1)
      Length of sub-TLVs (1 octet)
      Link Identifier sub-TLVs (variable)
      0 or more SRLG Values (Each value is 4 octets)

    The following Link Identifier sub-TLVs are defined. The type 
    values are suggested and will be assigned by IANA - but as
    the formats are identical to existing sub-TLVs defined for 
    TLVs 22, 23, 141, 222, and 223 the use of the suggested sub-TLV
    types is strongly encouraged.

    Type    Description
     4      Link Local/Remote Identifiers (see [RFC5307])
     6      IPv4 interface address (see [RFC5305])
     8      IPv4 neighbor address (see [RFC5305])
    12      IPv6 Interface Address (see [RFC6119])
    13      IPv6 Neighbor Address (see [RFC6119])
]]></artwork>
          </figure>At least one set of link identifiers (IPv4, IPv6, or
        unnumbered) MUST be present. TLVs which do not meet this requirement
        MUST be ignored.</t>

        <t>Multiple TLVs for the same link MAY be advertised.</t>

        <t>When the L-flag is set in the Application Identifiers, SRLG values
        MUST NOT be included in the TLV. Any SRLG values which are advertised
        MUST be ignored. Based on the link identifiers advertised the
        corresponding legacy TLV (see Section 3.2) can be identified and the
        SRLG values advertised in the legacy TLV MUST be used by the set of
        applications specified in the Application Bit Mask.</t>

        <t>For a given application, the setting of the L-flag MUST be the same
        in all TLVs for a given link. In cases where this constraint is
        violated, the L-flag MUST be considered set for this application.</t>
      </section>
    </section>

    <section title="Attribute Advertisements and Enablement">
      <t>This document defines extensions to support the advertisement of
      application specific link attributes. The presence or absence of link
      attribute advertisements for a given application on a link does NOT
      indicate the state of enablement of that application on that link.
      Enablement of an application on a link is controlled by other means.</t>

      <t>For some applications, the concept of enablement is implicit. For
      example, SRTE implicitly is enabled on all links which are part of the
      Segment Routing enabled topology. Advertisement of link attributes
      supports constraints which may be applied when specifying an explicit
      path through that topology.</t>

      <t>For other applications enablement is controlled by local
      configuration. For example, use of a link as an LFA can be controlled by
      local enablement/disablement and/or the use of administrative tags.</t>

      <t>It is an application specific policy as to whether a given link can
      be used by that application even in the abscence of any application
      specififc link attributes.</t>
    </section>

    <section title="Interoperability, Backwards Compatibility and Migration Concerns">
      <t>Existing deployments of RSVP-TE utilize the legacy advertisements
      listed in Section 3. Routers which do not support the extensions defined
      in this document will only process legacy advertisements and are likely
      to infer that RSVP-TE is enabled on the links for which legacy
      advertisements exist. It is expected that deployments using the legacy
      advertisements will persist for a significant period of time - therefore
      deployments using the extensions defined in this document must be able
      to co-exist with use of the legacy advertisements by routers which do
      not support the extensions defined in this document. The following
      sub-sections discuss interoperability and backwards compatibility
      concerns for a number of deployment scenarios.</t>

      <t>Note that in all cases the defined strategy can be employed on a per
      link basis.</t>

      <section title="RSVP-TE only deployments">
        <t>In deployments where RSVP-TE is the only application utilizing link
        attribute advertisements, use of the the legacy advertisements can
        continue without change.</t>
      </section>

      <section title="Multiple Applications: Common Attributes with  RSVP-TE">
        <t>In cases where multiple applications are utilizing a given link,
        one of the applications is RSVP-TE, and all link attributes for a
        given link are common to the set of applications utilizing that link,
        interoperability is achieved by using legacy advertisements and
        sending application specific advertisements with L-bit set and no link
        attribute values. This avoids duplication of link attribute
        advertisements.</t>
      </section>

      <section title="Multiple Applications: All Attributes Not Shared w RSVP-TE">
        <t>In cases where one or more applications other than RSVP-TE are
        utilizing a given link and one or more link attribute values are NOT
        shared with RSVP-TE, it is necessary to use application specific
        advertisements as defined in this document. Attributes for
        applications other than RSVP-TE MUST be advertised using application
        specific advertisements which have the L-bit clear. In cases where
        some link attributes are shared with RSVP-TE, this requires duplicate
        advertisements for those attributes.</t>

        <t>The discussion in this section applies to cases where RSVP-TE is
        NOT using any advertised attributes on a link and to cases where
        RSVP-TE is using some link attribute advertisements on the link but
        some link attributes cannot be shared with RSVP-TE.</t>
      </section>

      <section title="Deprecating legacy advertisements">
        <t>The extensions defined in this document support RSVP-TE as one of
        the supported applications - so a long term goal for deployments would
        be to deprecate use of the legacy advertisements in support of
        RSVP-TE. This can be done in the following step-wise manner:</t>

        <t>1)Upgrade all routers to support extensions in this document</t>

        <t>2)Readvertise all legacy link attributes using application specific
        advertisements with L-bit clear and R-bit set.</t>

        <t>3)Remove legacy advertisements</t>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document defines a new sub-TLV for TLVs 22, 23, 141, 222, and
      223.</t>

      <figure>
        <artwork><![CDATA[ 
 Type  Description             22  23 141 222 223 
 ----  ---------------------  --- --- --- --- --- 
  15   Application Specific    y   y   y   y   y
        Link Attributes
]]></artwork>
      </figure>

      <t>This document defines one new TLV:</t>

      <t><figure>
          <artwork><![CDATA[ 
 Type  Description            IIH SNP LSP Purge 
 ----  ---------------------  --- --- --- -----
  238  Application Specific    n   n   y    n
        SRLG
]]></artwork>
        </figure></t>

      <t>This document requests a new IANA registry be created to control the
      assignment of sub-sub-TLV codepoints for the Application Specific Link
      Attributes sub-TLV. The suggested name of the new registry is
      "sub-sub-TLV code points for application link attributes". The
      registration procedure is "Expert Review" as defined in [RFC5226]. The
      following assignments are made by this document:</t>

      <t><figure>
          <artwork><![CDATA[ Type   Description
---------------------------------------------------------
 3 Administrative group (color)
 9 Maximum link bandwidth
10 Maximum reservable link bandwidth
11 Unreserved bandwidth
14 Extended Administrative Group
33 Unidirectional Link Delay
34 Min/Max Unidirectional Link Delay
35 Unidirectional Delay Variation
36 Unidirectional Link Loss
37 Unidirectional Residual Bandwidth
38 Unidirectional Available Bandwidth
39 Unidirectional Utilized Bandwidth
]]></artwork>
        </figure></t>

      <t>This document requests a new IANA registry be created to control the
      assignment of application bit identifiers. The suggested name of the new
      registry is "Link Attribute Applications". The registration procedure is
      "Expert Review" as defined in [RFC5226]. The following assignments are
      made by this document:</t>

      <t><figure>
          <artwork><![CDATA[ Bit #   Name
---------------------------------------------------------
  0      RSVP-TE (R-bit)
  1      Segment Routing Traffic Engineering (S-bit)
  2      Loop Free Alternate (F-bit)
  ]]></artwork>
        </figure></t>

      <t>This document requests a new IANA registry be created to control the
      assignment of sub-TLV types for the application specific SRLG TLV. The
      suggested name of the new registry is "Sub-TLVs for TLV 238". The
      registration procedure is "Expert Review" as defined in [RFC5226]. The
      following assignments are made by this document:</t>

      <t><figure>
          <artwork><![CDATA[ Value    Description
 ---------------------------------------------------------
   4      Link Local/Remote Identifiers (see [RFC5307])
   6      IPv4 interface address (see [RFC5305])
   8      IPv4 neighbor address (see [RFC5305])
  12      IPv6 Interface Address (see [RFC6119])
  13      IPv6 Neighbor Address (see [RFC6119])
]]></artwork>
        </figure></t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>Security concerns for IS-IS are addressed in [ISO10589, [RFC5304],
      and [RFC5310].</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank John Drake and Acee Lindem for their
      careful review and content suggestions.</t>
    </section>
  </middle>

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

      <?rfc include='reference.RFC.5226'?>

      <?rfc include='reference.RFC.5304'?>

      <?rfc include='reference.RFC.5305'?>

      <?rfc include='reference.RFC.5307'?>

      <?rfc include='reference.RFC.5310'?>

      <?rfc include='reference.RFC.6119'?>

      <?rfc include='reference.RFC.7810'?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.7855'?>
    </references>
  </back>
</rfc>
