<?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 compact="yes"?>
<?rfc subcompact="no"?>

<rfc category="std" number="7917" ipr="trust200902"
     submissionType="IETF" consensus="yes">

  <front>
     <title abbrev='Node Administrative Tags in IS-IS'>
            Advertising Node Administrative Tags in IS-IS</title>

    <author initials="P." surname="Sarkar" fullname="Pushpasis Sarkar" role="editor">
      <organization>Individual Contributor</organization>
      <address>
      <email>pushpasis.ietf@gmail.com</email>
      </address>
    </author>

    <author fullname="Hannes Gredler" initials="H." surname="Gredler">
      <organization>RtBrick Inc.</organization>
      <address>
      <email>hannes@rtbrick.com</email>
      </address>
    </author>

    <author initials="S." surname="Hegde" fullname="Shraddha Hegde">
      <organization>Juniper Networks, Inc.</organization>
      <address>
      <postal>
      <street>Electra, Exora Business Park</street>
      <city>Bangalore</city>
      <region>KA</region>
      <code>560103</code>
      <country>India</country>
      </postal>
      <email>shraddha@juniper.net</email>
      </address>
    </author>

    <author fullname="Stephane Litkowski" initials="S" surname="Litkowski">
      <organization>Orange</organization>
      <address>
        <email>stephane.litkowski@orange.com</email>
      </address>
    </author>

    <author fullname="Bruno Decraene" initials="B" surname="Decraene">
      <organization>Orange</organization>
      <address>
        <email>bruno.decraene@orange.com</email>
      </address>
    </author>

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

    <keyword>IGP</keyword>
    <keyword>IS-IS</keyword>
    <keyword>Admin-Tag</keyword>
    <keyword>Traffic Engineering</keyword>

    <abstract>
      <t>This document describes an extension to the IS-IS routing protocol 
      to advertise node administrative tags. This optional capability allows
      tagging and grouping of the nodes in an IS-IS domain. The node
      administrative tags can be used to express and apply locally defined
      network policies, thereby providing a very useful operational
      capability. Node administrative tags may be used by either IS-IS itself
      or other applications consuming information propagated via IS-IS.</t>
    </abstract>
</front>

<middle>

<section title="Introduction" anchor='intro'>
    <t>It is useful to assign a node administrative tag to a router in the
    IS-IS domain and use it as an attribute associated with the node. The node 
    administrative tag can be used in variety of applications. For example:
    <list style="format (%c) ">
      <t>Traffic-engineering applications to provide different
      path&nbhy;selection criteria.</t>

      <t>Preference for, or pruning of, certain paths in Loop-Free Alternate
      (LFA) <xref target="RFC5286"/> backup selection via local policies as
      defined in <xref target="RFC7916"/>.</t>
    </list></t>

    <t>This document provides mechanisms to advertise node administrative 
    tags in IS-IS for various applications, including (but not limited to)
    route and path selection. Route and path selection functionality applies
    to both Traffic Engineering (TE) and non-TE applications. Hence, the
    new sub-TLV for carrying node administrative tags is included in the
    Router CAPABILITY TLV <xref target="RFC4971"/>.</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 title='Node Administrative Tags'>
    <t>An administrative tag is a 32-bit unsigned integer value that can be
    used to identify a group of nodes in the IS-IS domain. An IS-IS router
    should advertise in the specific IS-IS level the set of groups of which
    it is a part.</t>

    <t>As an example, all edge network devices in a given network may be
    configured with a certain tag value, whereas all core network devices may
    be configured with another, different tag value.</t>
</section>

<section title='Node Administrative Tag (Node-Admin-Tag) Sub-TLV'>
    <t>The new sub-TLV defined in this document is carried within an IS-IS
    Router CAPABILITY TLV (IS-IS TLV type 242) <xref target="RFC4971"/> in
    the Link State PDUs originated by the device. Router CAPABILITY TLVs
    <xref target="RFC4971"/> can have "level-wide" or "domain-wide"
    flooding scope. The choice of flooding scope in which a specific 
    node administrative tag shall be flooded is purely a matter of local
    policy and is defined by the operator's usage needs. An operator
    MAY choose to advertise a set of node administrative tags across levels
    and another different set of node administrative tags within the specific
    level. Alternatively, the operator may use the same node administrative
    tags within both the "domain-wide" flooding scope and one or more
    "level&nbhy;wide" flooding scopes.</t>

<t>The format of the Node Administrative Tag (Node-Admin-Tag) sub-TLV (see <xref
    target='tlvformat'/>) does not include a topology identifier. Therefore,
    it is not possible to indicate a topology-specific context when
    advertising node administrative tags. Hence, in deployments using
    multi&nbhy;topology routing <xref target="RFC5120"/>, advertising a
    separate set of node administrative tags for each topology
    SHOULD&nbsp;NOT be supported.</t>
    
  <section title='TLV Format' anchor='tlvformat'>
    <t><xref target="RFC4971"/> defines the Router CAPABILITY TLV, which
    may be used to advertise properties of the originating router. The
    payload of the Router CAPABILITY TLV consists of one or more nested
    Type-Length-Value (TLV) triplets.</t>

    <t>The new Node-Admin-Tag sub-TLV, like other IS-IS sub-TLVs, is 
    formatted as TLV triplets. <xref target="isisadmintagtlv"/> below shows
    the format of the new sub-TLV.</t>

    <figure anchor="isisadmintagtlv" title="IS-IS Node-Admin-Tag Sub-TLV">
      <artwork>
  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      |    Length     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                   Administrative Tag #1                       |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                   Administrative Tag #2                       |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 //                                                             //
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                   Administrative Tag #N                       |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

 Type:   21 (Node-Admin-Tag)
 
 Length: An 8-bit field that indicates the length of the Value
         portion in octets; this will be a multiple of 4 octets,
         depending on the number of tags advertised.

 Value:  Defines the node administrative tags (Administrative Tag #1,
         Administrative Tag #2, etc.).  Multiples of 4 octets.
      </artwork>
    </figure>
  </section>
</section>

<section title='Elements of Procedure'>
  <section title='Interpretation of Node Administrative Tags'>
    <t>The meaning of node administrative tags is generally opaque to IS-IS.
    A router advertising one or more node administrative tags may be
    configured to do so without knowing (or even explicitly supporting) the
    functionality implied by the tag. This section describes general
    rules, regulations, and guidelines for using and interpreting a node
    administrative tag; these rules, regulations, and guidelines will
    facilitate interoperable implementations between vendors.</t>

    <t>Interpretation of tag values is specific to the administrative domain
    of a particular network operator. Hence, tag values SHOULD NOT be
    propagated outside the administrative domain to which they apply. The
    meaning of a node administrative tag is defined by the network local
    policy and is controlled via configuration.  If a receiving node does not
    understand the tag value, it ignores the specific tag and floods the
    Router CAPABILITY TLV without any change, as defined
    in <xref target="RFC4971"/>.</t>

    <t>The semantics of the tag order has no meaning. There is no implied 
    meaning to the ordering of the tags that indicates a certain operation 
    or set of operations that need to be performed based on the ordering.</t>

    <t>Each tag SHOULD be treated as an independent identifier that may be 
    used in a policy to perform a policy action. Each tag carried by the 
    Node-Admin-Tag sub-TLVs should be used to indicate a characteristic of
    a node that is independent of the characteristics indicated by other
    administrative tags within the same instance or another instance of a
    Node-Admin-Tag sub-TLV. The list of node administrative tags carried in
    a Node-Admin-Tag sub-TLV MUST be considered as an unordered list. Whilst
    policies may be implemented based on the presence of multiple tags
    (e.g., if tag A AND tag B are present), they MUST NOT be reliant upon
    the order of the tags (i.e., all policies should be considered
    commutative operations, such that tag A preceding or following tag B
    does not change their outcome).</t>
  </section>

  <section title='Use of Node Administrative Tags'>
    <t>The node administrative tags are not meant to be extended by future 
    IS-IS standards. New IS-IS extensions are not expected to require the
    use of node administrative tags or define well-known tag values. Node 
    administrative tags are for generic use and do not require IANA
    registration. Future IS-IS extensions requiring well-known values MAY
    define their own data signaling tailored to the needs of the feature or
    MAY use the Router CAPABILITY TLV as defined in
    <xref target="RFC4971"/>.</t>

    <t>Node administrative tags are expected to be associated with a stable
    attribute. In particular, node administrative tags MUST NOT be associated
    with something whose state can oscillate frequently, e.g., the reachability
    of a specific destination.</t>

    <t>While no specific limit on the number of node administrative 
    tags that may be advertised has been defined, it is expected that only a 
    modest number of tags will be required in any deployment.</t>
  </section>

  <section title='Processing Node Administrative Tag Changes'>
    <t>Multiple Node-Admin-Tag sub-TLVs MAY appear in a Router CAPABILITY TLV,
    or Node-Admin-Tag sub-TLVs MAY be contained in different instances of
    Router CAPABILITY TLVs. The node administrative tags associated with a
    node that originates tags for the purpose of any computation or processing
    at a receiving node SHOULD be a superset of node administrative tags from
    all the TLVs in all the instances of Router CAPABILITY TLVs received in
    the Link&nbsp;State PDU(s) advertised by the corresponding IS-IS router.
    When a Router CAPABILITY TLV is received that changes the set of node
    administrative tags applicable to any originating node, a receiving node
    MUST repeat any computation or processing that makes use of node
    administrative tags.</t>

    <t>When there is a change to, or removal of, an administrative
    affiliation of a node, the node MUST re-originate the Router CAPABILITY
    TLV(s) with the latest set of node administrative tags. On a receiving
    router, on detecting a change in contents (or removal) of existing
    Node-Admin-Tag sub-TLV(s) or the addition of new Node&nbhy;Admin-Tag sub-TLV(s)
    in any instance of Router CAPABILITY TLV(s), implementations MUST take
    appropriate measures to update their state according to the changed set of
    node administrative tags. The exact actions needed will vary, depending on
    what features are associated with node administrative tags; this topic is
    outside the scope of this specification.</t>
</section>
</section>

<section title='Applications'>
    <t><xref target="RFC7777"/> lists several non-normative examples of how
    implementations might use node administrative tags. These examples are
    given only to demonstrate the generic usefulness of the router tagging
    mechanism. An implementation supporting this specification is not required
    to implement any of the use cases. The following is a brief list of
    non-normative use cases listed in <xref target="RFC7777"/>. Please refer
    to Section&nbsp;3 of <xref target="RFC7777"/> for more details.

    <list style="numbers">
      <t>Auto-discovery of services</t>
      <t>Policy-based Fast Reroute (FRR) 
        <list style="format (%c) " hangIndent="4">
          <t>Administrative limitation of LFA scope</t>
          <t>Optimizing LFA calculations</t>
        </list></t>
      <t>Controlling remote LFA tunnel termination</t>
      <t>Mobile backhaul network service deployment</t>
      <t>Policy-based explicit routing</t>
    </list></t>
</section>

<section title='Security Considerations' anchor='sec-con'>
    <t>This document does not introduce any new security issues.
    Node administrative tags, like link administrative tags
    (a.k.a. administrative groups) <xref target="RFC5305"/>, can be
    used by operators to indicate geographical location or other sensitive
    information. The information carried in node administrative tags,
    like link administrative tags, can be leaked to an IGP snooper.</t>

    <t>Advertisement of tag values for one administrative domain into another
    involves the risk of misinterpretation of the tag values (if the two
    domains have assigned different meanings to the same values) and may have
    undesirable and unanticipated side effects.</t>

    <t>Security concerns for IS-IS are already addressed in <xref
    target="ISO10589"/>, <xref target="RFC5304"/>, and <xref
    target="RFC5310"/> and are applicable to the mechanisms described in this
    document. Extended authentication mechanisms described in <xref
    target="RFC5304"/> or <xref target="RFC5310"/> SHOULD be used in
    deployments where attackers have access to the physical networks,
    because nodes included in the IS-IS domain are vulnerable.</t>
</section>

<section title='Operational Considerations' anchor='op-con'>
    <t>Operators can assign a meaning to the node administrative tags that is
    local to the operator's administrative domain. The operational use of node
    administrative tags is analogical to the IS-IS prefix tags <xref
    target="RFC5130"/> and BGP communities <xref target="RFC1997"/>.
    Operational discipline and procedures followed in configuring and
    using BGP communities and IS-IS prefix tags are also applicable to the
    usage of node administrative tags.</t>

    <t>Defining a language for local policies is outside the scope of this
    document. As is the case with other policy applications, the pruning
    policies can cause the path to be completely removed from the forwarding
    plane and hence have the potential for a more severe impact on
    operations (e.g., node unreachability due to path removal) as compared to
    preference policies that only affect path selection.</t>
</section>

<section title='Manageability Considerations' anchor='manage-con'>
    <t>Node administrative tags are configured and managed using routing
    policy enhancements. YANG <xref target="RFC6020"/> is a data modeling
    language used to specify configuration data models. The IS-IS YANG data
    model is described in <xref target="YANG-ISIS-CFG"/>, and the routing
    policy configuration model is described in <xref
    target="RTG-POLICY-MODEL"/>. At the time of writing this document, some
    work to enhance these two other documents so that they include
    configurations related to node administrative tags is either already in
    progress or shall be taken up soon.</t> 
</section>

<section anchor="IANA" title="IANA Considerations">
    <t>This specification updates one IS-IS registry: the
       "Sub-TLVs for TLV&nbsp;242" registry. The following 
value has been registered.</t>

<figure><artwork>
Value  Description
-----  -----------
21     Node-Admin-Tag
  </artwork></figure>

</section>

</middle>

<back>
  <references title='Normative References'>
<reference anchor="ISO10589">
<front>
<title>Intermediate System to Intermediate System intra-domain routeing
information exchange protocol for use in conjunction with the protocol for
providing the connectionless-mode network service (ISO 8473)</title>
<author>
<organization>International Organization for Standardization</organization>
</author>
<date month="" year="2002" />
</front>
<seriesInfo name="ISO" value="Standard 10589" />
</reference>

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

  <references title='Informative References'>

    <?rfc include="reference.RFC.1997"?>
    <?rfc include="reference.RFC.5305"?>
    <?rfc include="reference.RFC.5120"?>
    <?rfc include="reference.RFC.5130"?>
    <?rfc include="reference.RFC.5286"?>
    <?rfc include="reference.RFC.6020"?>
    <?rfc include="reference.RFC.7777"?>

<!-- draft-ietf-rtgwg-lfa-manageability (RFC 7916) -->
<reference anchor='RFC7916' target="http://www.rfc-editor.org/info/rfc7916">
<front>
<title>Operational Management of Loop-Free Alternates</title>
<author initials='S' surname='Litkowski' fullname='Stephane Litkowski' role="editor">
    <organization />
</author>
<author initials='B' surname='Decraene' fullname='Bruno Decraene'>
    <organization />
</author>
<author initials='C' surname='Filsfils' fullname='Clarence Filsfils'>
    <organization />
</author>
<author initials='K' surname='Raza' fullname='Kamran Raza'>
    <organization />
</author>
<author initials='M' surname='Horneffer' fullname='Martin Horneffer'>
    <organization />
</author>
<author initials='P' surname='Sarkar' fullname='Pushpasis Sarkar'>
    <organization />
</author>
<date month='July' year='2016' />
</front>
<seriesInfo name='RFC' value='7916' />
<seriesInfo name="DOI" value="10.17487/RFC7916"/>
</reference>

<!-- draft-ietf-rtgwg-policy-model (I-D Exists) -->
<reference anchor='RTG-POLICY-MODEL'>
<front>
<title>Routing Policy Configuration Model for Service Provider Networks</title>
<author initials='A' surname='Shaikh' fullname='Anees Shaikh'>
    <organization />
</author>
<author initials='R' surname='Shakir' fullname='Rob Shakir'>
    <organization />
</author>
<author initials='K' surname='D&apos;Souza' fullname='Kevin D&apos;Souza'>
    <organization />
</author>
<author initials='C' surname='Chase' fullname='Chris Chase'>
    <organization />
</author>
<date month='April' year='2016' />
</front>
<seriesInfo name='Work in Progress,' value='draft-ietf-rtgwg-policy-model-01'/>
</reference>

<!-- draft-ietf-isis-yang-isis-cfg (I-D Exists) -->
<reference anchor='YANG-ISIS-CFG'>
<front>
<title>YANG Data Model for IS-IS protocol</title>
<author initials='S' surname='Litkowski' fullname='Stephane Litkowski'>
    <organization />
</author>
<author initials='D' surname='Yeung' fullname='Derek Yeung'>
    <organization />
</author>
<author initials='A' surname='Lindem' fullname='Acee Lindem'>
    <organization />
</author>
<author initials='J' surname='Zhang' fullname='Jeffrey Zhang'>
    <organization />
</author>
<author initials='L' surname='Lhotka' fullname='Ladislav Lhotka'>
    <organization />
</author>
<date month='March' year='2016' />
</front>
<seriesInfo name='Work in Progress,' value='draft-ietf-isis-yang-isis-cfg-08'/>
</reference>

  </references>

<section title='Acknowledgments' numbered="no">
   <t>Many thanks to Les Ginsberg, Dhruv Dhody, Uma Chunduri, and Chris Bowers for providing useful inputs.</t>    
</section>

<section title='Contributors' numbered="no">
    <t>Many many thanks to Ebben Aries and Rafael Rodriguez for their help
    with reviewing and improving the text of this document. Many thanks to
    Harish Raguveer for his contributions to initial draft versions of the
    document as well. Finally, many thanks to Zhenbin Li for providing some
    valuable use cases.</t>
</section>

</back>
</rfc>
