rfc9130xml2.original.xml   rfc9130.xml 
<?xml version="1.0"?> <?xml version='1.0' encoding='utf-8'?>
<?rfc strict="yes" ?> <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">
<?rfc toc="yes"?>
<?rfc tocdepth="3"?> <rfc xmlns:xi="http://www.w3.org/2001/XInclude"
<?rfc symrefs="yes"?> docName="draft-ietf-isis-yang-isis-cfg-42" number="9130" ipr="trust200902"
<?rfc sortrefs="yes" ?> category="std" obsoletes="" updates="" submissionType="IETF"
<?rfc compact="yes" ?> xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true"
<?rfc subcompact="no" ?> sortRefs="true" version="3" consensus="true">
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> <!-- xml2rfc v2v3 conversion 2.47.0 -->
<rfc docName="draft-ietf-isis-yang-isis-cfg-42" ipr="trust200902" category="std"
obsoletes="" updates="" submissionType="IETF" xml:lang="en">
<front> <front>
<title abbrev="isis-cfg">YANG Data Model for IS-IS Protocol</title> <title abbrev="isis-cfg">YANG Data Model for the IS-IS Protocol</title>
<!-- [rfced] Document title: We changed "for IS-IS Protocol" to
"for the IS-IS Protocol". Please let us know any objections.
Original:
YANG Data Model for IS-IS Protocol
Currently:
YANG Data Model for the IS-IS Protocol -->
<!-- [rfced] The current abbreviated title, which is displayed
in the headers of the PDF output, is somewhat hard to understand.
Original:
isis-cfg
Perhaps:
ISIS YANG Data Model -->
<seriesInfo name="RFC" value="9130"/>
<author fullname="Stephane Litkowski" initials="S" surname="Litkowski"> <author fullname="Stephane Litkowski" initials="S" surname="Litkowski">
<organization>Cisco Systems</organization> <organization>Cisco Systems</organization>
<address> <address>
<email>slitkows.ietf@gmail.com</email> <email>slitkows.ietf@gmail.com</email>
</address> </address>
</author> </author>
<author fullname="Derek Yeung" initials="D" surname="Yeung"> <author fullname="Derek Yeung" initials="D" surname="Yeung">
<organization>Arrcus, Inc</organization> <organization>Arrcus, Inc.</organization>
<address> <address>
<email>derek@arrcus.com</email> <email>derek@arrcus.com</email>
</address> </address>
</author> </author>
<author fullname="Acee Lindem" initials="A" surname="Lindem"> <author fullname="Acee Lindem" initials="A" surname="Lindem">
<organization>Cisco Systems</organization> <organization>Cisco Systems</organization>
<address> <address>
<email>acee@cisco.com</email> <email>acee@cisco.com</email>
</address> </address>
</author> </author>
<author fullname="Jeffrey Zhang" initials="J" surname="Zhang"> <author fullname="Jeffrey Zhang" initials="J" surname="Zhang">
<organization>Juniper Networks</organization> <organization>Juniper Networks</organization>
<address> <address>
<email>zzhang@juniper.net</email> <email>zzhang@juniper.net</email>
</address> </address>
</author> </author>
<author fullname="Ladislav Lhotka" initials="L" surname="Lhotka"> <author fullname="Ladislav Lhotka" initials="L" surname="Lhotka">
<organization>CZ.NIC</organization> <organization>CZ.NIC</organization>
<address> <address>
<email>lhotka@nic.cz</email> <email>ladislav.lhotka@nic.cz</email>
</address> </address>
</author> </author>
<date/>
<area/> <date month="September" year="2021"/>
<workgroup>IS-IS Working Group</workgroup>
<!-- [rfced] Please insert any keywords (beyond those that appear in the
title) for use on https://www.rfc-editor.org/search -->
<abstract> <abstract>
<t>This document defines a YANG data model that can be used to <t>This document defines a YANG data model that can be used to
configure and manage the IS-IS protocol on network elements. configure and manage the IS-IS protocol on network elements.
</t> </t>
</abstract> </abstract>
<note title="Requirements Language">
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP 14 <xref target="RFC2119" pageno="false" format="default"/> <xref target=
"RFC8174" pageno="false" format="default"/> when, and only when, they appear in
all
capitals, as shown here.</t>
</note>
</front> </front>
<middle> <middle>
<section anchor="introduction" title="Introduction" toc="default"> <section anchor="introduction" toc="default" numbered="true">
<name>Introduction</name>
<t> <t>
This document defines a YANG <xref target="RFC7950" pageno="false" format= This document defines a YANG data model <xref target="RFC7950"
"default"/> data model for IS-IS routing format="default"/> for the IS-IS routing
protocol.</t> protocol.</t>
<t>The data model covers configuration of an IS-IS routing <t>The data model covers the configuration of an IS-IS routing
protocol instance, as well as, the retrieval of IS-IS operational states.< protocol instance, as well as the retrieval of IS-IS operational states.</
/t> t>
<t>A simplified tree representation of the data model is <t>A simplified tree representation of the data model is
presented in <xref target="design" pageno="false" format="default"/>. presented in <xref target="design" format="default"/>.
Tree diagrams used in this document follow the notation defined in <xref Tree diagrams used in this document follow the notation defined in <xref
target="RFC8340" pageno="false" format="default"/>.</t> target="RFC8340" format="default"/>.</t>
<t>The module is designed as per the NMDA (Network Management Datastore Arch <t>The module defined in this document is designed as per the Network Mana
itecture) <xref target="RFC8342" pageno="false" format="default"/>.</t> gement Datastore
Architecture (NMDA) <xref target="RFC8342" format="default"/>.</t>
<section>
<name>Requirements Language</name>
<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&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.
</t>
</section> </section>
<section anchor="design" title="Design of the Data Model" toc="default"> </section>
<section anchor="design" toc="default" numbered="true">
<name>Design of the Data Model</name>
<t>The IS-IS YANG module augments the <t>The IS-IS YANG module augments the
"control-plane-protocol" list in the ietf-routing module <xref target="RFC 8349" pageno="false" format="default"/> with specific "control-plane-protocol" list in the "ietf-routing" module <xref target="R FC8349" format="default"/> with specific
IS-IS parameters.</t> IS-IS parameters.</t>
<t>The figure below describes the overall structure of the ietf-isis <t>The diagram below shows the overall structure of the "ietf-isis"
YANG module:</t> YANG module defined in this document:</t>
<sourcecode type="yangtree"><![CDATA[
<figure title="" suppress-title="false" align="left" alt="" width="" heigh
t="">
<artwork xml:space="preserve" name="" type="" align="left" alt="" width=
"" height="">
module: ietf-isis module: ietf-isis
augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route:
+--ro metric? uint32 +--ro metric? uint32
+--ro tag* uint64 +--ro tag* uint64
+--ro route-type? enumeration +--ro route-type? enumeration
augment /if:interfaces/if:interface: augment /if:interfaces/if:interface:
+--rw clns-mtu? uint16 {osi-interface}? +--rw clns-mtu? uint16 {osi-interface}?
augment /rt:routing/rt:control-plane-protocols/rt: augment /rt:routing/rt:control-plane-protocols/rt:
control-plane-protocol: control-plane-protocol:
+--rw isis +--rw isis
skipping to change at line 193 skipping to change at line 221
+--rw topologies {multi-topology}? +--rw topologies {multi-topology}?
| +--rw topology* [name] | +--rw topology* [name]
| ... | ...
+--rw interfaces +--rw interfaces
+--rw interface* [name] +--rw interface* [name]
... ...
rpcs: rpcs:
+---x clear-adjacency +---x clear-adjacency
| +---w input | +---w input
| +---w routing-protocol-instance-name -&gt; /rt:routing/ | +---w routing-protocol-instance-name -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +---w level? level | +---w level? level
| +---w interface? if:interface-ref | +---w interface? if:interface-ref
+---x clear-database +---x clear-database
+---w input +---w input
+---w routing-protocol-instance-name -&gt; /rt:routing/ +---w routing-protocol-instance-name -> /rt:routing/
| control-plane-protocols/ | control-plane-protocols/
| control-plane-protocol/name | control-plane-protocol/name
+---w level? level +---w level? level
notifications: notifications:
+---n database-overload +---n database-overload
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro overload? enumeration | +--ro overload? enumeration
+---n lsp-too-large +---n lsp-too-large
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| control-plane-protocols/ | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro pdu-size? uint32 | +--ro pdu-size? uint32
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n if-state-change +---n if-state-change
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro state? if-state-type | +--ro state? if-state-type
+---n corrupted-lsp-detected +---n corrupted-lsp-detected
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n attempt-to-exceed-max-sequence +---n attempt-to-exceed-max-sequence
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n id-len-mismatch +---n id-len-mismatch
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro pdu-field-len? uint8 | +--ro pdu-field-len? uint8
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n max-area-addresses-mismatch +---n max-area-addresses-mismatch
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro max-area-addresses? uint8 | +--ro max-area-addresses? uint8
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n own-lsp-purge +---n own-lsp-purge
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n sequence-number-skipped +---n sequence-number-skipped
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n authentication-type-failure +---n authentication-type-failure
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n authentication-failure +---n authentication-failure
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n version-skew +---n version-skew
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro protocol-version? uint8 | +--ro protocol-version? uint8
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n area-mismatch +---n area-mismatch
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n rejected-adjacency +---n rejected-adjacency
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
| +--ro reason? string | +--ro reason? string
+---n protocols-supported-mismatch +---n protocols-supported-mismatch
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
| +--ro protocols* uint8 | +--ro protocols* uint8
+---n lsp-error-detected +---n lsp-error-detected
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
| +--ro error-offset? uint32 | +--ro error-offset? uint32
| +--ro tlv-type? uint8 | +--ro tlv-type? uint8
+---n adjacency-state-change +---n adjacency-state-change
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro neighbor? string | +--ro neighbor? string
| +--ro neighbor-system-id? system-id | +--ro neighbor-system-id? system-id
| +--ro state? adj-state-type | +--ro state? adj-state-type
| +--ro reason? string | +--ro reason? string
+---n lsp-received +---n lsp-received
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
| +--ro sequence? uint32 | +--ro sequence? uint32
| +--ro received-timestamp? yang:timestamp | +--ro received-timestamp? yang:timestamp
| +--ro neighbor-system-id? system-id | +--ro neighbor-system-id? system-id
+---n lsp-generation +---n lsp-generation
+--ro routing-protocol-name? -&gt; /rt:routing/ +--ro routing-protocol-name? -> /rt:routing/
| control-plane-protocols/ | control-plane-protocols/
| control-plane-protocol/name | control-plane-protocol/name
+--ro isis-level? level +--ro isis-level? level
+--ro lsp-id? lsp-id +--ro lsp-id? lsp-id
+--ro sequence? uint32 +--ro sequence? uint32
+--ro send-timestamp? yang:timestamp +--ro send-timestamp? yang:timestamp]]></sourcecode>
</artwork>
</figure> <!-- [rfced] Section 2: The tree diagram does not follow the offset
guidance provided in Section 2 of RFC 8340.
<section anchor="yang-isis-global" title="IS-IS Configuration" toc="defaul Original:
t"> module: ietf-isis
<t>The IS-IS configuration is divided into: augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route:
<list style="symbols"> ...
<t>Global parameters.</t>
<t>Per-interface configuration (see <xref target="yang-interface" page
no="false" format="default"/>).</t>
</list></t>
<t>Additional modules may be created to support
additional parameters. These additional modules MUST augment the
ietf-isis module.</t>
<t>The model includes optional features, for which the correspon
ding configuration data nodes are also optional.
As an example, the ability to control the administrative state o
f a particular IS-IS instance is optional.
By advertising the feature "admin-control", a device communicate
s to the client that it supports the ability to shutdown a particular IS-IS inst
ance.</t>
<t>
The global configuration contains usual IS-IS parameters, such a
s, lsp-mtu, lsp-lifetime, lsp-refresh, default-metric, etc.
</t>
</section>
<section anchor="yang-multitopology" title="Multi-topology Parameters" toc Per RFC 8340, this would be
="default"> module: ietf-isis
<t>The model supports multi-topology (MT) IS-IS as defined in <x augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route:
ref target="RFC5120" pageno="false" format="default"/>.</t> ...
<t>The "topologies" container is used to enable support of the MT
extensions.</t>
<t>The "name" used in the topology list should refer to an exist
ing Routing Information Base (RIB)
defined for the device <xref target="RFC8349" pageno="false"
format="default"/>.</t>
<t>Some specific parameters can be defined on a per-topology bas
is,
both at the global level and at the interface level: for example
, an interface metric can be defined per topology.</t>
<t>Multiple address families (such as, IPv4 or IPv6) can also be
enabled within the default topology.
This can be achieved using the address-families container (requi
ring the "nlpid-control" feature to be supported).</t>
</section> We also see that there are two lines in this tree and eight lines
in the per-interface tree that yield "Too long line" xml2rfc
warnings. Please let us know whether (1) you would like to correct
the offsets and add line breaks where needed or (2) leave as is. -->
<section anchor="yang-level" title="Per-Level Parameters" toc="default"> <section anchor="yang-isis-global" toc="default" numbered="true">
<t>Some parameters allow a per-level configuration. For such parameters, <name>IS-IS Configuration</name>
the parameter is modeled as a container with three configuration <t>The IS-IS configuration is divided into two areas:</t>
locations: <ul spacing="normal">
<list style="symbols"> <li>Global parameters</li>
<t>a Top-level container: Corresponds to level-1-2, so the confi <li>Per-interface configuration (see <xref target="yang-interface"
guration applies to both levels.</t> format="default"/>)</li>
<t>a Level-1 container: Corresponds to level-1 specific paramete </ul>
rs.</t> <t>Additional modules may be created to support additional
<t>a Level-2 container: Corresponds to level-2 specific paramete parameters. These additional modules <bcp14>MUST</bcp14> augment the
rs.</t> "ietf-isis" module.</t>
</list> <t>The model includes optional features for which the corresponding
</t> configuration data nodes are also optional. As an example, the ability
<figure title="" suppress-title="false" align="left" alt="" widt to control the administrative state of a particular IS-IS instance is
h="" height=""> optional. By advertising the feature "admin-control", a device
<artwork xml:space="preserve" name="" type="" align="left" alt=" communicates to the client that it supports the ability to shut down a
" width="" height=""> particular IS-IS instance.</t>
<t>The global configuration contains the usual IS-IS parameters, e.g.,
"lsp-mtu", "lsp-lifetime", "lsp-refresh", "default-metric".</t>
</section>
<section anchor="yang-multitopology" toc="default" numbered="true">
<name>Multi-Topology Parameters</name>
<t>The model supports Multi-Topology (MT) IS-IS as defined in <xref
target="RFC5120" format="default"/>.</t>
<t>The "topologies" container is used to enable support of the MT
extensions.</t>
<t>The "name" used in the topology list should refer to an existing
Routing Information Base (RIB) defined for the device <xref
target="RFC8349" format="default"/>.</t>
<t>Some specific parameters can be defined on a per-topology basis,
at both the global level and the interface level: for example, an
interface metric can be defined per topology.</t>
<t>Multiple address families (such as IPv4 or IPv6) can also be
enabled within the default topology. This can be achieved using the
"address-families" container (requiring the "nlpid-control" feature to
be supported).</t>
</section>
<section anchor="yang-level" toc="default" numbered="true">
<name>Per-Level Parameters</name>
<t>Some parameters allow per-level configuration. For such
parameters, the parameter is modeled as a container with three
configuration locations:
</t>
<dl newline="true" spacing="normal">
<dt>A top-level container:</dt>
<dd>Corresponds to "level-all", so the
configuration applies to both levels.</dd>
<dt>A level-1 container:</dt>
<dd>Corresponds to parameters specific to level 1.</dd>
<dt>A level-2 container:</dt>
<dd>Corresponds to parameters specific to level 2.</dd>
</dl>
<sourcecode type="yangtree"><![CDATA[
+--rw priority +--rw priority
| +--rw value? uint8 | +--rw value? uint8
| +--rw level-1 | +--rw level-1
| | +--rw value? uint8 | | +--rw value? uint8
| +--rw level-2 | +--rw level-2
| +--rw value? uint8 | +--rw value? uint8]]></sourcecode>
</artwork> <t>Example:</t>
</figure> <sourcecode type="xml"><![CDATA[
<t>Example:</t> <priority>
<figure title="" suppress-title="false" align="left" alt="" widt <value>250</value>
h="" height=""> <level-1>
<artwork xml:space="preserve" name="" type="" align="left" alt=" <value>100</value>
" width="" height=""> </level-1>
&lt;priority&gt; </priority>]]></sourcecode>
&lt;value&gt;250&lt;/value&gt; <t>An implementation <bcp14>MUST</bcp14> prefer a level-specific
&lt;level-1&gt; parameter over a top-level parameter. For example, if the priority is
&lt;value&gt;100&lt;/value&gt; 100 for the level-1 configuration and 250 for the top-level configuratio
&lt;/level-1&gt; n, the
&lt;/priority&gt; implementation must use 100 for the level-1 priority and 250 for the
</artwork> level-2 priority.</t>
</figure> <t>Some parameters, such as "overload bit" and "route preference",
<t> are not modeled to support per-level configuration. If an
An implementation MUST prefer a level-specific parameter over a implementation supports per-level configuration for such parameters,
top-level parameter. this implementation <bcp14>MUST</bcp14> augment the current model by
For example, if the priority is 100 for the level-1 and 250 for adding both level-1 and level-2 containers and <bcp14>MUST</bcp14>
the top-level configuration, the implementation must use 100 for the level-1 pri reuse existing configuration groupings.</t>
ority and 250 for the level-2 priority. <t>Example of augmentation:</t>
</t> <sourcecode type="yang"><![CDATA[
<t>
Some parameters, such as, "overload bit" and "route preference",
are not modeled to support a per-level configuration. If an implementation supp
orts per-level configuration for such parameter,
this implementation MUST augment the current model by adding bot
h level-1 and level-2 containers and MUST reuse existing configuration groupings
.
</t>
<t>Example of augmentation:</t>
<figure title="" suppress-title="false" align="left" alt="" widt
h="" height="">
<artwork xml:space="preserve" name="" type="" align="left" alt="
" width="" height="">
augment "/rt:routing/" + augment "/rt:routing/" +
"rt:control-plane-protocols/rt:control-plane-protocol"+ "rt:control-plane-protocols/rt:control-plane-protocol"+
"/isis:isis/isis:overload" { "/isis:isis/isis:overload" {
when "rt:type = 'isis:isis'" { when "rt:type = 'isis:isis'" {
description description
"This augment IS-IS routing protocol when used"; "This augments the IS-IS routing protocol when used.";
} }
description description
"This augments IS-IS overload configuration "This augments the IS-IS overload configuration
with per-level configuration."; with per-level configuration.";
container level-1 { container level-1 {
uses isis:overload-global-cfg; uses isis:overload-global-cfg;
description description
"Level 1 configuration."; "Level-1 configuration.";
} }
container level-2 { container level-2 {
uses isis:overload-global-cfg; uses isis:overload-global-cfg;
description description
"Level 2 configuration."; "Level-2 configuration.";
} }
} }
</artwork> ]]></sourcecode>
</figure>
<t>
If an implementation does not support per-level configuration fo
r a parameter modeled with per-level configuration, the implementation should ad
vertise a deviation to announce the non-support of the level-1 and level-2 conta
iners.
</t>
<t>
Finally, if an implementation supports per-level configuration b
ut does not support the level-1-2 configuration, it should also advertise a devi
ation.
</t>
</section>
<section anchor="yang-interface" title="Per-Interface Parameters" toc="def <t>If an implementation does not support per-level configuration for a
ault"> parameter modeled with per-level configuration, the implementation
should advertise a deviation to announce that it does not support the
configuration of level-1 and level-2 containers.</t>
<t>Finally, if an implementation supports per-level configuration but
does not support the "level-all" configuration, it should also advertise
a deviation.</t>
</section>
<section anchor="yang-interface" toc="default" numbered="true">
<name>Per-Interface Parameters</name>
<t>The per-interface section of the IS-IS instance describes <t>The per-interface section of the IS-IS instance describes
the interface-specific parameters.</t> the interface-specific parameters.</t>
<t>The interface is modeled as a reference to an existing interf <t>The interface is modeled as a reference to an existing interface
ace defined in the "ietf-interfaces" YANG model (<xref target="RFC8343" pageno=" as defined in the "ietf-interfaces" YANG module <xref target="RFC8343"
false" format="default"/>.</t> format="default"/>.</t>
<t>Each interface has some interface-specific parameters that may have <t>Each interface has some interface-specific parameters that may have
a different per-level value as described in the previous section a different per-level value as described in the previous section. An
. interface-specific parameter <bcp14>MUST</bcp14> be preferred over an
An interface-specific parameter MUST be preferred over an IS-IS IS-IS global parameter.</t>
global <t>Some parameters, such as "hello-padding", are defined as containers
parameter.</t> to allow easy extension by vendor-specific modules.</t>
<t>Some parameters, such as, hello-padding are defined as contai <sourcecode type="yangtree"><![CDATA[
ners
to allow easy extension by vendor-specific modules.</t>
<figure title="" suppress-title="false" align="left" alt="" width="" hei
ght="">
<artwork xml:space="preserve" name="" type="" align="left" alt="" wi
dth="" height="">
+--rw interfaces +--rw interfaces
+--rw interface* [name] +--rw interface* [name]
+--rw name if:interface-ref +--rw name if:interface-ref
+--rw enable? boolean {admin-control}? +--rw enable? boolean {admin-control}?
+--rw level-type? level +--rw level-type? level
+--rw lsp-pacing-interval? rt-types: +--rw lsp-pacing-interval? rt-types:
| timer-value-milliseconds | timer-value-milliseconds
+--rw lsp-retransmit-interval? rt-types: +--rw lsp-retransmit-interval? rt-types:
| timer-value-seconds16 | timer-value-seconds16
+--rw passive? boolean +--rw passive? boolean
skipping to change at line 525 skipping to change at line 578
| +--rw enable? boolean | +--rw enable? boolean
+--rw mesh-group-enable? mesh-group-state +--rw mesh-group-enable? mesh-group-state
+--rw mesh-group? uint8 +--rw mesh-group? uint8
+--rw interface-type? interface-type +--rw interface-type? interface-type
+--rw tag* uint32 {prefix-tag}? +--rw tag* uint32 {prefix-tag}?
+--rw tag64* uint64 {prefix-tag64}? +--rw tag64* uint64 {prefix-tag64}?
+--rw node-flag? boolean {node-flag}? +--rw node-flag? boolean {node-flag}?
+--rw hello-authentication +--rw hello-authentication
| +--rw (authentication-type)? | +--rw (authentication-type)?
| | +--:(key-chain) {key-chain}? | | +--:(key-chain) {key-chain}?
| | | +--rw key-chain? key-chain:key-chain-ref | | | +--rw key-chain? key-chain:key-chain-ref
| | +--:(password) | | +--:(password)
| | +--rw key? string | | +--rw key? string
| | +--rw crypto-algorithm? identityref | | +--rw crypto-algorithm? identityref
| +--rw level-1 | +--rw level-1
| | +--rw (authentication-type)? | | +--rw (authentication-type)?
| | +--:(key-chain) {key-chain}? | | +--:(key-chain) {key-chain}?
| | | +--rw key-chain? key-chain:key-chain-ref | | | +--rw key-chain? key-chain:key-chain-ref
| | +--:(password) | | +--:(password)
| | +--rw key? string | | +--rw key? string
| | +--rw crypto-algorithm? identityref | | +--rw crypto-algorithm? identityref
skipping to change at line 646 skipping to change at line 699
| | +--ro in? uint32 | | +--ro in? uint32
| | +--ro out? uint32 | | +--ro out? uint32
| +--ro csnp | +--ro csnp
| | +--ro in? uint32 | | +--ro in? uint32
| | +--ro out? uint32 | | +--ro out? uint32
| +--ro unknown | +--ro unknown
| +--ro in? uint32 | +--ro in? uint32
+--rw discontinuity-time? yang:date-and-time +--rw discontinuity-time? yang:date-and-time
+--rw topologies {multi-topology}? +--rw topologies {multi-topology}?
+--rw topology* [name] +--rw topology* [name]
+--rw name -&gt; +--rw name ->
| ../../../../../../../../rt:ribs/rib/name | ../../../../../../../../rt:ribs/rib/name
+--rw metric +--rw metric
+--rw value? wide-metric +--rw value? wide-metric
+--rw level-1 +--rw level-1
| +--rw value? wide-metric | +--rw value? wide-metric
+--rw level-2 +--rw level-2
+--rw value? wide-metric +--rw value? wide-metric
rpcs: rpcs:
+---x clear-adjacency +---x clear-adjacency
| +---w input | +---w input
| +---w routing-protocol-instance-name -&gt; /rt:routing/ | +---w routing-protocol-instance-name -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +---w level? level | +---w level? level
| +---w interface? if:interface-ref | +---w interface? if:interface-ref
+---x clear-database +---x clear-database
+---w input +---w input
+---w routing-protocol-instance-name -&gt; /rt:routing/ +---w routing-protocol-instance-name -> /rt:routing/
| control-plane-protocols/ | control-plane-protocols/
| control-plane-protocol/name | control-plane-protocol/name
+---w level? level +---w level? level
notifications: notifications:
+---n database-overload +---n database-overload
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro overload? enumeration | +--ro overload? enumeration
+---n lsp-too-large +---n lsp-too-large
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro pdu-size? uint32 | +--ro pdu-size? uint32
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n if-state-change +---n if-state-change
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro state? if-state-type | +--ro state? if-state-type
+---n corrupted-lsp-detected +---n corrupted-lsp-detected
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n attempt-to-exceed-max-sequence +---n attempt-to-exceed-max-sequence
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n id-len-mismatch +---n id-len-mismatch
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro pdu-field-len? uint8 | +--ro pdu-field-len? uint8
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n max-area-addresses-mismatch +---n max-area-addresses-mismatch
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro max-area-addresses? uint8 | +--ro max-area-addresses? uint8
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n own-lsp-purge +---n own-lsp-purge
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n sequence-number-skipped +---n sequence-number-skipped
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
+---n authentication-type-failure +---n authentication-type-failure
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n authentication-failure +---n authentication-failure
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n version-skew +---n version-skew
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro protocol-version? uint8 | +--ro protocol-version? uint8
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n area-mismatch +---n area-mismatch
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
+---n rejected-adjacency +---n rejected-adjacency
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
| +--ro reason? string | +--ro reason? string
+---n protocols-supported-mismatch +---n protocols-supported-mismatch
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
| +--ro protocols* uint8 | +--ro protocols* uint8
+---n lsp-error-detected +---n lsp-error-detected
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
| +--ro raw-pdu? binary | +--ro raw-pdu? binary
| +--ro error-offset? uint32 | +--ro error-offset? uint32
| +--ro tlv-type? uint8 | +--ro tlv-type? uint8
+---n adjacency-state-change +---n adjacency-state-change
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro neighbor? string | +--ro neighbor? string
| +--ro neighbor-system-id? system-id | +--ro neighbor-system-id? system-id
| +--ro state? adj-state-type | +--ro state? adj-state-type
| +--ro reason? string | +--ro reason? string
+---n lsp-received +---n lsp-received
| +--ro routing-protocol-name? -&gt; /rt:routing/ | +--ro routing-protocol-name? -> /rt:routing/
| | control-plane-protocols/ | | control-plane-protocols/
| | control-plane-protocol/name | | control-plane-protocol/name
| +--ro isis-level? level | +--ro isis-level? level
| +--ro interface-name? if:interface-ref | +--ro interface-name? if:interface-ref
| +--ro interface-level? level | +--ro interface-level? level
| +--ro extended-circuit-id? extended-circuit-id | +--ro extended-circuit-id? extended-circuit-id
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id
| +--ro sequence? uint32 | +--ro sequence? uint32
| +--ro received-timestamp? yang:timestamp | +--ro received-timestamp? yang:timestamp
| +--ro neighbor-system-id? system-id | +--ro neighbor-system-id? system-id
+---n lsp-generation +---n lsp-generation
+--ro routing-protocol-name? -&gt; /rt:routing/ +--ro routing-protocol-name? -> /rt:routing/
| control-plane-protocols/ | control-plane-protocols/
| control-plane-protocol/name | control-plane-protocol/name
+--ro isis-level? level +--ro isis-level? level
+--ro lsp-id? lsp-id +--ro lsp-id? lsp-id
+--ro sequence? uint32 +--ro sequence? uint32
+--ro send-timestamp? yang:timestamp +--ro send-timestamp? yang:timestamp]]></sourcecode>
</artwork>
</figure>
</section> </section>
<section anchor="yang-authentication" title="Authentication Parameter <section anchor="yang-authentication" toc="default" numbered="true">
s" toc="default"> <name>Authentication Parameters</name>
<t> <t>The module defined in this document enables authentication configurat
The module enables authentication configuration through the IETF key- ion through the
chain module <xref target="RFC8177" pageno="false" format="default"/>. "ietf-key-chain" module <xref target="RFC8177" format="default"/>.
The IS-IS module imports the "ietf-key-chain" module and reuses some The IS-IS module imports the "ietf-key-chain" module and reuses
groupings to allow global and per-interface configuration of authentication. some groupings to allow global and per-interface configuration of
If global authentication is configured, an implementation SHOULD auth authentication.
enticate PSNPs (Partial Sequence Number Packets), CSNPs (Complete Sequence Numbe If global authentication is configured, an implementation
r Packets) and LSPs (Link State Packets) with the authentication parameters supp <bcp14>SHOULD</bcp14> authenticate PSNPs (Partial Sequence Number
lied. Packets), CSNPs (Complete Sequence Number Packets), and LSPs (Link
The authentication of HELLO PDUs (Protocol Data Units) can be activat State Packets) with the authentication parameters supplied.
ed on a per-interface basis. The authentication of Hello PDUs (Protocol Data Units) can be
</t> activated on a per-interface basis.
</section> </t>
<section anchor="yang-igp-ldp" title="IGP/LDP synchronization" toc="d </section>
efault"> <section anchor="yang-igp-ldp" toc="default" numbered="true">
<t> <name>IGP/LDP Synchronization</name>
<xref target="RFC5443" pageno="false" format="default"/> defines a me <t>
chanism where IGP (Interior Gateway Protocol) needs to be synchronized with LDP <xref target="RFC5443" format="default"/> defines a mechanism where
(Label Distribution Protocol). IGP (the Interior Gateway Protocol) needs to be synchronized with LDP
An "ldp-igp-sync" feature has been defined in the model to support th (the Label Distribution Protocol).
is functionality. An "ldp-igp-sync" feature has been defined in the model to support
The "mpls/ldp/igp-sync" leaf under "interface" allows activation of t this functionality.
he functionality on a per-interface basis. The "mpls/ldp/igp-sync" leaf under "interface" allows activation of
The "mpls/ldp/igp-sync" container in the global configuration is inte the functionality on a per-interface basis.
ntionally empty and is not required for feature activation. The "mpls/ldp/igp-sync" container in the global configuration is
The goal of this empty container is to facilitate augmentation with a intentionally empty and is not required for feature activation.
dditional parameters, e.g., timers. The goal of this empty container is to facilitate augmentation with
</t> additional parameters, e.g., timers.
</section> </t>
<section anchor="yang-iso" title="ISO parameters" toc="default"> </section>
<t>As the IS-IS protocol is based on the ISO protocol suite, some ISO <section anchor="yang-iso" toc="default" numbered="true">
parameters may be required.</t> <name>ISO Parameters</name>
<t>This module augments interface configuration model to support sele <t>As the IS-IS protocol is based on the ISO protocol suite, some ISO
cted ISO configuration parameters.</t> parameters may be required.</t>
<t>The clns-mtu can be configured for an interface.</t> <t>This module augments the "ietf-interfaces" module configuration to su
</section> pport
<section anchor="yang-frr" title="IP FRR" toc="default"> selected ISO configuration parameters.</t>
<t> <t>The "clns-mtu" parameter can be configured for an interface.</t>
This YANG module supports LFA (Loop Free Alternates) <xref target="RFC </section>
5286" pageno="false" format="default"/> and remote LFA <xref target="RFC7490" pa <section anchor="yang-frr" toc="default" numbered="true">
geno="false" format="default"/> as IP Fast Re-Route (FRR) techniques. <name>IP FRR</name>
The "fast-reroute" container may be augmented by other models to suppo <t>
rt other IP FRR flavors (MRT as defined in <xref target="RFC7812" pageno="false" The YANG module defined in this document supports LFAs (Loop-Free Alte
format="default"/>, TI-LFA as defined in <xref target="I-D.ietf-rtgwg-segment-r rnates) <xref
outing-ti-lfa" pageno="false" format="default"/>, etc.). target="RFC5286" format="default"/> and remote LFAs <xref
</t> target="RFC7490" format="default"/> as IP Fast Reroute (FRR)
<t> techniques.
The current version of the model supports activation of LFA and remote The "fast-reroute" container may be augmented by other models to
LFA at the interface-level only. support other IP FRR flavors (Maximally Redundant Trees (MRTs)
The global "lfa" container is present but kept empty to allow augmenta as defined in <xref
tion with vendor-specific properties, e.g., policies. target="RFC7812" format="default"/>, Topology Independent LFA
</t> (TI-LFA) FRR as defined in <xref
<t>Remote LFA is considered as an extension of LFA. Remote LFA cannot target="I-D.ietf-rtgwg-segment-routing-ti-lfa" format="default"/>,
be enabled if LFA is not enabled.</t> etc.).
<t>The "candidate-enable" data leaf designates that an interface can b </t>
e used as a backup.</t> <t>
</section> The current version of the model supports activation of LFAs and
remote LFAs at the interface level only.
<section anchor="yang-op" title="Operational States" toc="default"> The global "lfa" container is present but kept empty to allow
<t>Operational state is defined in module in various containers at vario augmentation with vendor-specific properties, e.g., policies.
us levels: </t>
<list style="symbols"> <t>Remote LFAs are considered an extension of LFAs. Remote LFAs cannot
<t>system-counters: Provides statistical information about be enabled if LFAs are not enabled.</t>
the global system.</t> <t>The "candidate-enable" data leaf designates that an interface can
<t>interface: Provides configuration state information for be used as a backup.</t>
each interface.</t> </section>
<t>adjacencies: Provides state information about current <section anchor="yang-op" toc="default" numbered="true">
IS-IS adjacencies.</t> <name>Operational States</name>
<t>spf-log: Provides information about SPF events for an IS-IS instanc <t>Operational states are defined in the "ietf-isis" module in various c
e. ontainers at various levels:
This SHOULD be implemented as a wrapping buffer.</t> </t>
<t>lsp-log: Provides information about LSP events for an IS-IS instanc <dl newline="true" spacing="normal">
e <dt>system-counters:</dt>
<dd>Provides statistical information about
the global system.</dd>
<dt>interface:</dt>
<dd>Provides configuration state information for
each interface.</dd>
<dt>adjacencies:</dt>
<dd>Provides state information about current
IS-IS adjacencies.</dd>
<dt>spf-log:</dt>
<dd>Provides information about Shortest Path First (SPF) events for an
IS-IS instance.
This <bcp14>SHOULD</bcp14> be implemented as a wrapping buffer.</dd>
<dt>lsp-log:</dt>
<dd>Provides information about LSP events for an IS-IS instance
(reception of an LSP or modification of a local LSP). (reception of an LSP or modification of a local LSP).
This SHOULD be implemented as a wrapping buffer and the implementation This <bcp14>SHOULD</bcp14> be implemented as a wrapping buffer. The im
MAY optionally log LSP refreshes.</t> plementation <bcp14>MAY</bcp14> optionally log LSP refreshes.</dd>
<t>local-rib: Provides the IS-IS internal routing table.</t> <dt>local-rib:</dt>
<t>database: Provides contents of the current Link State Database.</t> <dd>Provides the IS-IS internal routing table.</dd>
<t>hostnames: Provides the system-id to <dt>database:</dt>
hostname mappings <xref target="RFC5301" pageno="false" format="defaul <dd>Provides the contents of the current Link State Database (LSDB).</
t"/>.</t> dd>
<t>fast-reroute: Provides IP FRR state information.</t> <dt>hostnames:</dt>
</list></t> <dd>Provides the system-ID-to-hostname mappings <xref target="RFC5301"
format="default"/>.</dd>
<dt>fast-reroute:</dt>
<dd>Provides IP FRR state information.</dd>
</dl>
</section> </section>
</section> </section>
<section anchor="RPC" toc="default" numbered="true">
<section anchor="RPC" title="RPC Operations" toc="default"> <name>RPC Operations</name>
<t>The "ietf-isis" module defines two RPC operations: <t>The "ietf-isis" module defines two RPC operations:
<list style="symbols"> </t>
<t>clear-database: Reset the content of a particular IS-IS <dl newline="true" spacing="normal">
database and restart database synchronization with all <dt>clear-database:</dt>
neighbors.</t> <dd>Resets the contents of a particular IS-IS
<t>clear-adjacency: Restart a particular set of IS-IS database and restarts database synchronization with all
adjacencies.</t> neighbors.</dd>
</list></t> <dt>clear-adjacency:</dt>
<dd>Restarts a particular set of IS-IS
<figure title="" suppress-title="false" align="left" alt="" width="" heigh adjacencies.</dd>
t=""> </dl>
<artwork xml:space="preserve" name="" type="" align="left" alt="" widt
h="" height="">
</artwork>
</figure>
</section> </section>
<section anchor="notif" toc="default" numbered="true">
<section anchor="notif" title="Notifications" toc="default"> <name>Notifications</name>
<t>The "ietf-isis" module defines the following notifications: <t>The "ietf-isis" module defines the following notifications:
<list> </t>
<t>database-overload: This notification is sent when the IS-IS Node ov <dl newline="true" spacing="normal">
erload condition changes.</t> <dt>database-overload:</dt>
<t>lsp-too-large: This notification is sent when the system tries to p <dd>This notification is sent when the IS-IS node's overload condition c
ropagate a PDU that is too large.</t> hanges.</dd>
<t>if-state-change: This notification is sent when an interface's state chan <dt>lsp-too-large:</dt>
ges.</t> <dd>This notification is sent when the system tries to propagate a PDU
<t>corrupted-lsp-detected: This notification is sent when the IS-IS no that is too large.</dd>
de discovers <dt>if-state-change:</dt>
that an LSP that was previously stored in the Link State Data <dd>This notification is sent when an interface's state changes.</dd>
base, i.e., local memory, has <dt>corrupted-lsp-detected:</dt>
become corrupted.</t> <dd>This notification is sent when the IS-IS node discovers
<t>attempt-to-exceed-max-sequence: This notification is sent whe that an LSP that was previously stored in the LSDB, i.e., loc
n the system al memory, has
wraps the 32-bit sequence counter of an LSP.</t> become corrupted.</dd>
<t>id-len-mismatch: This notification is sent when we receive a <dt>attempt-to-exceed-max-sequence:</dt>
PDU <dd>This notification is sent when the system
with a different value for the System ID length.</t> wraps the 32-bit sequence counter of an LSP.</dd>
<t>max-area-addresses-mismatch: This notification is sent when w <dt>id-len-mismatch:</dt>
e receive a PDU <!-- [rfced] We found the use of the term "we" confusing (7 instances).
with a different value for the Maximum Area Addresses.</t> Does the term mean "IS-IS node"? For example:
<t>own-lsp-purge: This notification is sent when the system
receives a PDU with its own system ID and zero age.</t> Current:
<t>sequence-number-skipped: This notification is sent when the s id-len-mismatch:
ystem This notification is sent when we receive a PDU with a different
value for the system ID length.
Perhaps:
id-len-mismatch:
This notification is sent when the IS-IS node receives a PDU
with a different value for the system ID length. -->
<dd>This notification is sent when we receive a PDU
with a different value for the system ID length.</dd>
<dt>max-area-addresses-mismatch:</dt>
<dd>This notification is sent when we receive a PDU
with a different value for the Maximum Area Addresses.</dd>
<dt>own-lsp-purge:</dt>
<dd>This notification is sent when the system
receives a PDU with its own system ID and zero age.</dd>
<dt>sequence-number-skipped:</dt>
<dd>This notification is sent when the system
receives a PDU with its own system ID and receives a PDU with its own system ID and
different contents. The system has to reissue different contents. The system has to reissue
the LSP with a higher sequence number.</t> the LSP with a higher sequence number.</dd>
<t>authentication-type-failure: This notification is sent when t <dt>authentication-type-failure:</dt>
he system <dd>This notification is sent when the system
receives a PDU with the wrong authentication type receives a PDU with the wrong authentication type
field.</t> field.</dd>
<t>authentication-failure: This notification is sent when the sy <dt>authentication-failure:</dt>
stem <dd>This notification is sent when the system
receives a PDU with the wrong authentication receives a PDU with the wrong authentication
information.</t> information.</dd>
<t>version-skew: This notification is sent when the system <dt>version-skew:</dt>
<dd>This notification is sent when the system
receives a PDU with a different protocol version receives a PDU with a different protocol version
number.</t> number.</dd>
<t>area-mismatch: This notification is sent when the system <dt>area-mismatch:</dt>
<dd>This notification is sent when the system
receives a Hello PDU from an IS that does receives a Hello PDU from an IS that does
not share any area address.</t> not share any area address.</dd>
<t>rejected-adjacency: This notification is sent when the system <dt>rejected-adjacency:</dt>
<dd>This notification is sent when the system
receives a Hello PDU from an IS but does not receives a Hello PDU from an IS but does not
establish an adjacency for some reason.</t> establish an adjacency for some reason.</dd>
<t>protocols-supported-mismatch: This notification is sent when <dt>protocols-supported-mismatch:</dt>
the system <dd>This notification is sent when the system
receives a non-pseudonode LSP that has no matching receives a non-pseudonode LSP that has no matching
protocol supported.</t> protocol supported.</dd>
<t>lsp-error-detected: This notification is sent when the system <dt>lsp-error-detected:</dt>
receives an LSP with a parse error.</t> <dd>This notification is sent when the system
<t>adjacency-state-change: This notification is sent when an IS- receives an LSP with a parse error.</dd>
IS adjacency <dt>adjacency-state-change:</dt>
moves to Up state or to Down state.</t> <dd>This notification is sent when an IS-IS adjacency
<t>lsp-received: This notification is sent when an LSP moves to the "up" state or the "down" state.</dd>
is received.</t> <dt>lsp-received:</dt>
<t>lsp-generation: This notification is sent when an LSP <dd>This notification is sent when an LSP
is regenerated.</t> is received.</dd>
</list> <dt>lsp-generation:</dt>
</t> <dd>This notification is sent when an LSP
is regenerated.</dd>
<figure title="" suppress-title="false" align="left" alt="" width="" heigh </dl>
t="">
<artwork xml:space="preserve" name="" type="" align="left" alt="" width=
"" height="">
</artwork>
</figure>
</section> </section>
<section anchor="interactions" toc="default" numbered="true">
<section anchor="interaction" title="Interaction with Other YANG Modules" to <name>Interactions with Other YANG Modules</name>
c="default">
<t>The "isis" container augments the <t>The "isis" container augments the
"/rt:routing/rt:control-plane-protocols/control-plane-protocol" "/rt:routing/rt:control-plane-protocols/control-plane-protocol"
container of the ietf-routing <xref target="RFC8349" pageno="false" format ="default"/> module with IS-IS-specific container of the "ietf-routing" module <xref target="RFC8349" format="defa ult"/> with IS-IS-specific
parameters.</t> parameters.</t>
<t>The "isis" module augments <t>The "ietf-isis" module augments
"/if:interfaces/if:interface" defined by <xref target="RFC8343" pageno="fa "/if:interfaces/if:interface" as defined by <xref target="RFC8343" format=
lse" format="default"/> "default"/>
with ISO specific parameters.</t> with ISO-specific parameters.
<t>The "isis" operational state container augments the
"/rt:routing-state/rt:control-plane-protocols/control-plane-protocol" <!-- [rfced] *[AD]: We are following up on a question we asked
container of the ietf-routing module with IS-IS-specific in mid-October 2020. Please see the author reply below, and confirm
operational states.</t> that removing the text in question is acceptable.
Section 5: Should '"isis" module' be
'"isis" container', '"ietf-isis" module', or something else?
Original:
The "isis" module augments "/if:interfaces/if:interface" defined by
[RFC8343] with ISO specific parameters.
Author reply:
Go ahead and make these consistently, "ietf-isis" module. Please remove:
The "isis" operational state container augments the "/rt:routing-
state/rt:control-plane-protocols/control-plane-protocol" container of
the ietf-routing module with IS-IS-specific operational states.
This is no longer applicable. -->
</t>
<t>Some IS-IS-specific route attributes are added to route <t>Some IS-IS-specific route attributes are added to route
objects in the ietf-routing module by augmenting objects in the "ietf-routing" module by augmenting
"/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route".</t> "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route".</t>
<t>The modules defined in this document uses some groupings from ietf- <t>The module defined in this document uses some groupings from "ietf-keyc
keychain <xref target="RFC8177" pageno="false" format="default"/>.</t> hain" <xref target="RFC8177" format="default"/>.</t>
<t>The module reuses types from <xref target="RFC6991" pageno="false" form <t>The module reuses types from <xref target="RFC6991" format="default"/>
at="default"/> and <xref target="RFC8294" pageno="false" format="default"/>.</t> and <xref target="RFC8294" format="default"/>.</t>
<t>To support BFD for fast detection, the module relies on <xref target="I <t>To support Bidirectional Forwarding Detection (BFD) for fast detection,
-D.ietf-bfd-yang" pageno="false" format="default"/>.</t> the module relies on <xref target="RFC9127" format="default"/>.</t>
</section> </section>
<section anchor="isis-yang" title="IS-IS YANG Module" toc="default"> <!-- Lynne: If authors don't agree to doc. title change, fix the
<t>The following RFCs, drafts and external standards are not referenced in t "RFC 9130:" entry -->
he document text
but are referenced in the ietf-isis.yang module: <xref target="ISO-10589" pag <!-- The two "Quote from" items are DNE. Incorrect in the original;
eno="false" format="default"/>, <xref target="RFC1195" pageno="false" format="de fixed and FYI-AQed. -->
fault"/>, <xref target="RFC4090" pageno="false" format="default"/>,<xref target=
"RFC5029" pageno="false" format="default"/>, <xref target="RFC5130" pageno="fals <section anchor="isis-yang" toc="default" numbered="true">
e" format="default"/>, <xref target="RFC5302" pageno="false" format="default"/>, <name>IS-IS YANG Module</name>
<xref target="RFC5305" pageno="false" format="default"/>, <xref target="RFC5306 <t>The following specifications are referenced in this module: <xref
" pageno="false" format="default"/>, <xref target="RFC5307" pageno="false" forma target="ISO-10589" format="default"/>, <xref target="RFC1195"
t="default"/>, <xref target="RFC5308" pageno="false" format="default"/>, <xref t format="default"/>, <xref target="RFC4090" format="default"/>, <xref
arget="RFC5880" pageno="false" format="default"/>, <xref target="RFC5881" pageno target="RFC5029" format="default"/>,
="false" format="default"/>, <xref target="RFC6119" pageno="false" format="defau <xref target="RFC5120"/>,
lt"/>, <xref target="RFC6232" pageno="false" format="default"/>, <xref target="R <xref target="RFC5130" format="default"/>,
FC7794" pageno="false" format="default"/>, <xref target="RFC7981" pageno="false" <xref target="RFC5286"/>,
format="default"/>, <xref target="RFC8570" pageno="false" format="default"/>, < <xref target="RFC5301"/>,
xref target="RFC7917" pageno="false" format="default"/>, <xref target="RFC8405" <xref target="RFC5302" format="default"/>, <xref
pageno="false" format="default"/>.</t> target="RFC5305" format="default"/>, <xref target="RFC5307" format="defaul
<figure title="" suppress-title="false" align="left" alt="" width="" heigh t"/>, <xref
t=""> target="RFC5308" format="default"/>,
<artwork xml:space="preserve" name="" type="" align="left" alt="" width= <xref target="RFC5443"/>,
"" height=""> <xref target="RFC5880" format="default"/>,
<![CDATA[ <xref target="RFC5881" format="default"/>, <xref
<CODE BEGINS> file "ietf-isis@2019-10-15.yang" target="RFC6119" format="default"/>, <xref target="RFC6232"
format="default"/>,
<xref target="RFC6241"/>,
<xref target="RFC6991"/>,
<xref target="RFC7490"/>,
<xref target="RFC7794" format="default"/>,
<xref target="RFC7917" format="default"/>,
<xref target="RFC7981" format="default"/>,
<xref target="RFC8177"/>,
<xref target="RFC8294"/>,
<xref target="RFC8342"/>,
<xref target="RFC8343"/>,
<xref target="RFC8349"/>,
<xref target="RFC8405" format="default"/>,
<xref target="RFC8570" format="default"/>,
<xref target="RFC8706" format="default"/>, and
<xref target="RFC9127"/>.</t>
<!-- [rfced] We note that Stephane Litkowski is an author of
this document but is listed as an editor of the YANG module.
Please confirm that these roles are correct. -->
<!--[rfced] May we update the YANG module as shown in this diff file?
https://www.rfc-editor.org/authors/ietf-isis@2021-08-31.yang-rfcdiff.html
It compares the current module to the output of the formatting
tool, pyang (https://trac.ietf.org/trac/ops/wiki/yang-review-tools).
To be clear, with or without the formatting updates, the YANG module
parses. -->
<sourcecode name="ietf-isis@2021-08-31.yang" type="yang" markers="true"><![CDATA
[
module ietf-isis { module ietf-isis {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; namespace "urn:ietf:params:xml:ns:yang:ietf-isis";
prefix isis; prefix isis;
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
reference "RFC 8349 - A YANG Data Model for Routing reference
Management (NMDA Version)"; "RFC 8349: A YANG Data Model for Routing Management
(NMDA Version)";
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference "RFC 6991 - Common YANG Data Types"; reference
"RFC 6991: Common YANG Data Types";
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference "RFC 6991 - Common YANG Data Types"; reference
"RFC 6991: Common YANG Data Types";
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
reference "RFC 8343 - A YANG Data Model for Interface reference
Management (NDMA Version)"; "RFC 8343: A YANG Data Model for Interface Management";
} }
import ietf-key-chain { import ietf-key-chain {
prefix "key-chain"; prefix "key-chain";
reference "RFC 8177 - YANG Data Model for Key Chains"; reference
"RFC 8177: YANG Data Model for Key Chains";
} }
import ietf-routing-types { import ietf-routing-types {
prefix "rt-types"; prefix "rt-types";
reference "RFC 8294 - Common YANG Data Types for the reference
Routing Area"; "RFC 8294: Common YANG Data Types for the Routing Area";
} }
import iana-routing-types { import iana-routing-types {
prefix "iana-rt-types"; prefix "iana-rt-types";
reference "RFC 8294 - Common YANG Data Types for the reference
Routing Area"; "RFC 8294: Common YANG Data Types for the Routing Area";
} }
import ietf-bfd-types { import ietf-bfd-types {
prefix "bfd-types"; prefix "bfd-types";
reference "RFC YYYY - YANG Data Model for Bidirectional reference
Forwarding Detection (BFD). "RFC 9127: YANG Data Model for Bidirectional Forwarding
Detection (BFD)";
number for draft-ietf-bfd-yang.";
} }
organization organization
"IETF LSR Working Group"; "IETF LSR Working Group";
contact contact
"WG Web: <https://datatracker.ietf.org/group/lsr/> "WG Web: <https://datatracker.ietf.org/wg/lsr/>
WG List: <mailto:lsr@ietf.org> WG List: <mailto:lsr@ietf.org>
Editor: Stephane Litkowski Editor: Stephane Litkowski
<mailto:slitkows.ietf@gmail.com> <mailto:slitkows.ietf@gmail.com>
Author: Derek Yeung Author: Derek Yeung
<mailto:derek@arrcus.com> <mailto:derek@arrcus.com>
Author: Acee Lindem Author: Acee Lindem
<mailto:acee@cisco.com> <mailto:acee@cisco.com>
Author: Jeffrey Zhang Author: Jeffrey Zhang
<mailto:zzhang@juniper.net> <mailto:zzhang@juniper.net>
Author: Ladislav Lhotka Author: Ladislav Lhotka
<mailto:llhotka@nic.cz>"; <mailto:ladislav.lhotka@nic.cz>";
description description
"This YANG module defines the generic configuration and "This YANG module defines the generic configuration and
operational state for the IS-IS protocol common to all operational states for the IS-IS protocol common to all
vendor implementations. It is intended that the module vendor implementations. It is intended that the module
will be extended by vendors to define vendor-specific will be extended by vendors to define vendor-specific
IS-IS configuration parameters and policies, IS-IS configuration parameters and policies -
for example, route maps or route policies. for example, route maps or route policies.
This YANG model conforms to the Network Management
Datastore Architecture (NMDA) as described in RFC 8242.
Copyright (c) 2018 IETF Trust and the persons identified as This YANG data model conforms to the Network Management
authors of the code. All rights reserved. Datastore Architecture (NMDA) as described in RFC 8342.
Redistribution and use in source and binary forms, with or The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
without modification, is permitted pursuant to, and subject to NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
the license terms contained in, the Simplified BSD License set 'MAY', and 'OPTIONAL' in this document are to be interpreted as
forth in Section 4.c of the IETF Trust's Legal Provisions described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
Relating to IETF Documents they appear in all capitals, as shown here.
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX Copyright (c) 2021 IETF Trust and the persons identified as
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself authors of the code. All rights reserved.
for full legal notices.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL Redistribution and use in source and binary forms, with or
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', without modification, is permitted pursuant to, and subject to
'MAY', and 'OPTIONAL' in this document are to be interpreted as the license terms contained in, the Simplified BSD License set
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, forth in Section 4.c of the IETF Trust's Legal Provisions
they appear in all capitals, as shown here. Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; This version of this YANG module is part of RFC 9130; see the
see the RFC itself for full legal notices."; RFC itself for full legal notices.";
reference
"RFC 8342: Network Management Datastore Architecture (NMDA)";
revision 2019-10-15 { revision 2021-08-31 {
description description
"Initial revision."; "Initial revision.";
reference "RFC XXXX"; reference
"RFC 9130: YANG Data Model for the IS-IS Protocol";
} }
/* Identities */ /* Identities */
identity isis { identity isis {
base rt:routing-protocol; base rt:routing-protocol;
description "Identity for the IS-IS routing protocol."; description
"Identity for the IS-IS routing protocol.";
} }
identity lsp-log-reason { identity lsp-log-reason {
description "Base identity for an LSP change log reason."; description
"Base identity for a Link State Packet (LSP)
change log reason.";
} }
identity refresh { identity refresh {
base lsp-log-reason; base lsp-log-reason;
description description
"Identity used when the LSP log reason is "Identity used when the LSP log reason is that an LSP
a refresh LSP received."; refresh was received.";
} }
identity content-change { identity content-change {
base lsp-log-reason; base lsp-log-reason;
description description
"Identity used when the LSP log reason is "Identity used when the LSP log reason is
a change in the content of the LSP."; a change in the contents of the LSP.";
} }
identity frr-protection-method { identity frr-protection-method {
description description
"Base identity for a Fast Reroute protection method."; "Base identity for a Fast Reroute protection method.";
} }
identity frr-protection-method-lfa { identity frr-protection-method-lfa {
base frr-protection-method; base frr-protection-method;
description "Loop Free Alternate as defined in RFC5286."; description
"Loop-Free Alternate as defined in RFC 5286.";
reference
"RFC 5286: Basic Specification for IP Fast Reroute:
Loop-Free Alternates";
} }
identity frr-protection-method-rlfa { identity frr-protection-method-rlfa {
base frr-protection-method; base frr-protection-method;
description "Remote Loop Free Alternate as defined in RFC7490."; description
"Remote Loop-Free Alternate as defined in RFC 7490.";
reference
"RFC 7490: Remote Loop-Free Alternate (LFA)
Fast Reroute (FRR)";
} }
identity frr-protection-method-rsvpte { identity frr-protection-method-rsvpte {
base frr-protection-method; base frr-protection-method;
description "RSVP-TE as defined in RFC4090."; description
"RSVP-TE as defined in RFC 4090.";
reference
"RFC 4090: Fast Reroute Extensions to RSVP-TE for
LSP Tunnels";
} }
identity frr-protection-available-type { identity frr-protection-available-type {
description "Base identity for Fast Reroute protection types description
provided by an alternate path."; "Base identity for Fast Reroute protection types
provided by an alternate path.";
} }
identity frr-protection-available-node-type { identity frr-protection-available-node-type {
base frr-protection-available-type; base frr-protection-available-type;
description "Node protection is provided by the alternate."; description
"Node protection is provided by the alternate.";
} }
identity frr-protection-available-link-type { identity frr-protection-available-link-type {
base frr-protection-available-type; base frr-protection-available-type;
description "Link protection is provided by the alternate."; description
"Link protection is provided by the alternate.";
} }
identity frr-protection-available-srlg-type { identity frr-protection-available-srlg-type {
base frr-protection-available-type; base frr-protection-available-type;
description "SRLG protection is provided by the alternate."; description
"Shared Risk Link Group (SRLG) protection is provided by
the alternate.";
} }
identity frr-protection-available-downstream-type { identity frr-protection-available-downstream-type {
base frr-protection-available-type; base frr-protection-available-type;
description "The alternate is downstream of node in the path."; description
"The alternate is downstream of the node in the path.";
} }
identity frr-protection-available-other-type { identity frr-protection-available-other-type {
base frr-protection-available-type; base frr-protection-available-type;
description "The level of protection is unknown."; description
"The level of protection is unknown.";
} }
identity frr-alternate-type { identity frr-alternate-type {
description "Base identity for IP Fast Reroute alternate type."; description
"Base identity for the IP Fast Reroute alternate type.";
} }
identity frr-alternate-type-equal-cost { identity frr-alternate-type-equal-cost {
base frr-alternate-type; base frr-alternate-type;
description "ECMP alternate."; description
"ECMP-based alternate.";
} }
identity frr-alternate-type-lfa { identity frr-alternate-type-lfa {
base frr-alternate-type; base frr-alternate-type;
description "LFA alternate."; description
"LFA-based alternate.";
} }
identity frr-alternate-type-remote-lfa { identity frr-alternate-type-remote-lfa {
base frr-alternate-type; base frr-alternate-type;
description "Remote LFA alternate."; description
"Remote-LFA-based alternate.";
} }
identity frr-alternate-type-tunnel { identity frr-alternate-type-tunnel {
base frr-alternate-type; base frr-alternate-type;
description "Tunnel based alternate (such as, description
RSVP-TE or GRE)."; "Tunnel-based alternate (such as RSVP-TE or GRE).";
} }
identity frr-alternate-mrt { identity frr-alternate-mrt {
base frr-alternate-type; base frr-alternate-type;
description "MRT alternate."; description
"MRT-based alternate.";
} }
identity frr-alternate-tilfa { identity frr-alternate-tilfa {
base frr-alternate-type; base frr-alternate-type;
description "TILFA alternate."; description
"TI-LFA-based alternate.";
} }
identity frr-alternate-other { identity frr-alternate-other {
base frr-alternate-type; base frr-alternate-type;
description "Other alternate."; description
"Other type of alternate.";
} }
identity unidirectional-link-delay-subtlv-flag { identity unidirectional-link-delay-subtlv-flag {
description "Base identity for unidirectional-link-delay description
subTLV flags. Flags are defined in RFC8570."; "Base identity for the flag corresponding to the
Unidirectional Link Delay sub-TLV as defined in RFC 8570.";
reference
"RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
} }
identity unidirectional-link-delay-subtlv-a-flag { identity unidirectional-link-delay-subtlv-a-flag {
base unidirectional-link-delay-subtlv-flag; base unidirectional-link-delay-subtlv-flag;
description description
"The A bit represents the Anomalous (A) bit. "The 'A' bit field represents the Anomalous (A) bit.
The A bit is set when the measured value of The A bit is set when the measured value of
this parameter exceeds its configured this parameter exceeds its configured
maximum threshold. maximum threshold.
The A bit is cleared when the measured value The A bit is cleared when the measured value
falls below its configured reuse threshold. falls below its configured reuse threshold.
If the A bit is clear, If the A bit is clear,
the value represents steady-state link performance."; the value represents steady-state link performance.";
} }
identity min-max-unidirectional-link-delay-subtlv-flag { identity min-max-unidirectional-link-delay-subtlv-flag {
description description
"Base identity for min-max-unidirectional-link-delay "Base identity for the flag corresponding to the Min/Max
subTLV flags. Flags are defined in RFC8570."; Unidirectional Link Delay sub-TLV as defined in RFC 8570.";
reference
"RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
} }
identity min-max-unidirectional-link-delay-subtlv-a-flag { identity min-max-unidirectional-link-delay-subtlv-a-flag {
base min-max-unidirectional-link-delay-subtlv-flag; base min-max-unidirectional-link-delay-subtlv-flag;
description description
"The A bit represents the Anomalous (A) bit. "The 'A' bit field represents the Anomalous (A) bit.
The A bit is set when the measured value of The A bit is set when the measured value of
this parameter exceeds its configured this parameter exceeds its configured
maximum threshold. maximum threshold.
The A bit is cleared when the measured value The A bit is cleared when the measured value
falls below its configured reuse threshold. falls below its configured reuse threshold.
If the A bit is clear, If the A bit is clear,
the value represents steady-state link performance."; the value represents steady-state link performance.";
} }
identity unidirectional-link-loss-subtlv-flag { identity unidirectional-link-loss-subtlv-flag {
description "Base identity for unidirectional-link-loss description
subTLV flags. Flags are defined in RFC8570."; "Base identity for the flag corresponding to the
Unidirectional Link Loss sub-TLV as defined in RFC 8570.";
reference
"RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
} }
identity unidirectional-link-loss-subtlv-a-flag { identity unidirectional-link-loss-subtlv-a-flag {
base unidirectional-link-loss-subtlv-flag; base unidirectional-link-loss-subtlv-flag;
description description
"The A bit represents the Anomalous (A) bit. "The 'A' bit field represents the Anomalous (A) bit.
The A bit is set when the measured value of The A bit is set when the measured value of
this parameter exceeds its configured this parameter exceeds its configured
maximum threshold. maximum threshold.
The A bit is cleared when the measured value The A bit is cleared when the measured value
falls below its configured reuse threshold. falls below its configured reuse threshold.
If the A bit is clear, If the A bit is clear,
the value represents steady-state link performance."; the value represents steady-state link performance.";
} }
identity tlv229-flag { identity tlv229-flag {
description "Base identity for TLV229 flags. Flags are defined description
in RFC5120."; "Base identity for the flag corresponding to TLV 229
(M-Topologies) as defined in RFC 5120.";
reference
"RFC 5120: M-ISIS: Multi Topology (MT) Routing in
Intermediate System to Intermediate Systems (IS-ISs)";
} }
identity tlv229-overload-flag { identity tlv229-overload-flag {
base tlv229-flag; base tlv229-flag;
description description
"If set, the originator is overloaded, "If set, the originator is overloaded
and must be avoided in path calculation."; and must be avoided in the path calculation.";
} }
identity tlv229-attached-flag { identity tlv229-attached-flag {
base tlv229-flag; base tlv229-flag;
description description
"If set, the originator is attached to "If set, the originator is attached to
another area using the referred metric."; another area using the referred metric.";
} }
identity router-capability-flag { identity router-capability-flag {
description "Base identity for router capability flags. description
Flags are defined in RFC7981."; "Base identity for the flag corresponding to the
Router Capability TLV as defined in RFC 7981.";
reference
"RFC 7981: IS-IS Extensions for Advertising Router
Information";
} }
identity router-capability-flooding-flag { identity router-capability-flooding-flag {
base router-capability-flag; base router-capability-flag;
description description
"Quote from RFC7981: 'If the S bit is set, "Quote from RFC 7981:
the IS-IS Router CAPABILITY 'If the S bit is set(1), the IS-IS Router CAPABILITY TLV
TLV MUST be flooded across the entire routing MUST be flooded across the entire routing domain. If the
domain. If the S bit is clear, the TLV MUST NOT S bit is not set(0), the TLV MUST NOT be leaked between
be leaked between levels. This bit MUST NOT levels. This bit MUST NOT be altered during the TLV
be altered during the TLV leaking'."; leaking.'.";
} }
identity router-capability-down-flag { identity router-capability-down-flag {
base router-capability-flag; base router-capability-flag;
description description
"Quote from RFC7981: 'When the IS-IS Router CAPABILITY TLV "Quote from RFC 7981:
is leaked from level-2 to level-1, the D bit MUST be set. 'When the IS-IS Router CAPABILITY TLV is leaked from
Otherwise, this bit MUST be clear. IS-IS Router Level 2 (L2) to Level 1 (L1), the D bit MUST be set.
capability TLVs with the D bit set MUST NOT be Otherwise, this bit MUST be clear. IS-IS Router
leaked from level-1 to level-2 in to prevent CAPABILITY TLVs with the D bit set MUST NOT be leaked from
TLV looping'."; Level 1 to Level 2. This is to prevent TLV looping.'.";
} }
identity lsp-flag { identity lsp-flag {
description "Base identity for LSP attributes. description
Attributes are defined in ISO 10589"; "Base identity for LSP attributes as defined in ISO 10589.";
reference
"ISO 10589: 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)";
} }
identity lsp-partitioned-flag { identity lsp-partitioned-flag {
base lsp-flag; base lsp-flag;
description "Originator partition repair supported"; description
"Originator partition repair supported.";
} }
identity lsp-attached-error-metric-flag { identity lsp-attached-error-metric-flag {
base lsp-flag; base lsp-flag;
description "Set when originator is attached to description
another area using the error metric."; "Set when the originator is attached to
another area using the error metric.";
} }
identity lsp-attached-delay-metric-flag { identity lsp-attached-delay-metric-flag {
base lsp-flag; base lsp-flag;
description "Set when originator is attached to description
another area using the delay metric."; "Set when the originator is attached to
another area using the delay metric.";
} }
identity lsp-attached-expense-metric-flag { identity lsp-attached-expense-metric-flag {
base lsp-flag; base lsp-flag;
description "Set when originator is attached to description
another area using the expense metric."; "Set when the originator is attached to
another area using the expense metric.";
} }
identity lsp-attached-default-metric-flag { identity lsp-attached-default-metric-flag {
base lsp-flag; base lsp-flag;
description "Set when originator is attached to description
another area using the default metric."; "Set when the originator is attached to
another area using the default metric.";
} }
identity lsp-overload-flag { identity lsp-overload-flag {
base lsp-flag; base lsp-flag;
description description
"If set, the originator is overloaded, "If set, the originator is overloaded
and must be avoided in path calculation."; and must be avoided in the path calculation.";
} }
identity lsp-l1system-flag { identity lsp-l1system-flag {
base lsp-flag; base lsp-flag;
description description
"Set when the Intermediate System has an L1 type."; "Set when the Intermediate System has an L1 type.";
} }
identity lsp-l2system-flag { identity lsp-l2system-flag {
base lsp-flag; base lsp-flag;
description description
"Set when the Intermediate System has an L2 type."; "Set when the Intermediate System has an L2 type.";
} }
/* Feature definitions */ /* Feature definitions */
feature osi-interface { feature osi-interface {
description "Support of OSI specific parameters on an description
interface."; "Support of OSI-specific parameters on an interface.";
} }
feature poi-tlv { feature poi-tlv {
description "Support of Purge Originator Identification."; description
reference "RFC 6232 - Purge Originator Identification TLV "Support of the Purge Originator Identification (POI) TLV.";
for IS-IS"; reference
"RFC 6232: Purge Originator Identification TLV for IS-IS";
} }
feature ietf-spf-delay { feature ietf-spf-delay {
description description
"Support for IETF SPF delay algorithm."; "Support for the IETF SPF delay algorithm.";
reference "RFC 8405 - SPF Back-off algorithm for link reference
state IGPs"; "RFC 8405: Shortest Path First (SPF) Back-Off Delay Algorithm
for Link-State IGPs";
} }
feature bfd { feature bfd {
description description
"Support for BFD detection of IS-IS neighbor reachability."; "Support for detection of IS-IS neighbor reachability
reference "RFC 5880 - Bidirectional Forwarding Detection (BFD) via BFD.";
RFC 5881 - Bidirectional Forwarding Detection reference
(BFD) for IPv4 and IPv6 (Single Hop)"; "RFC 5880: Bidirectional Forwarding Detection (BFD)
RFC 5881: Bidirectional Forwarding Detection (BFD)
for IPv4 and IPv6 (Single Hop)";
} }
feature key-chain { feature key-chain {
description description
"Support of keychain for authentication."; "Support of key chains for authentication.";
reference "RFC8177 - YANG Data Model for Key Chains"; reference
"RFC 8177: YANG Data Model for Key Chains";
} }
feature node-flag { feature node-flag {
description description
"Support for node-flag for IS-IS prefixes."; "Support for node flags for IS-IS prefixes.";
reference "RFC7794 - IS-IS Prefix Attributes for reference
Extended IP and IPv6 Reachability"; "RFC 7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6
Reachability";
} }
feature node-tag { feature node-tag {
description description
"Support for node admin tag for IS-IS routing instances."; "Support for node administrative tags for IS-IS
reference "RFC7917 - Advertising Node Administrative Tags routing instances.";
in IS-IS"; reference
"RFC 7917: Advertising Node Administrative Tags in IS-IS";
} }
feature ldp-igp-sync { feature ldp-igp-sync {
description description
"Support for LDP IGP synchronization."; "Support for LDP IGP synchronization.";
reference "RFC5443 - LDP IGP Synchronization."; reference
"RFC 5443: LDP IGP Synchronization";
} }
feature fast-reroute { feature fast-reroute {
description description
"Support for IP Fast Reroute (IP-FRR)."; "Support for IP Fast Reroute (IP FRR).";
} }
feature nsr { feature nsr {
description description
"Support for Non-Stop-Routing (NSR). The IS-IS NSR feature "Support for Non-Stop-Routing (NSR). The IS-IS NSR feature
allows a router with redundant control-plane capability allows a router with redundant control-plane capability
(e.g., dual Route-Processor (RP) cards) to maintain its (e.g., dual Route Processor (RP) cards) to maintain its
state and adjacencies during planned and unplanned state and adjacencies during planned and unplanned
IS-IS instance restarts. It differs from graceful-restart IS-IS instance restarts. It differs from graceful restart
or Non-Stop Forwarding (NSF) in that no protocol signaling or Non-Stop Forwarding (NSF) in that no protocol signaling
or assistance from adjacent IS-IS neighbors is required to or assistance from adjacent IS-IS neighbors is required to
recover control-plane state."; recover control-plane state.";
} }
feature lfa { feature lfa {
description description
"Support for Loop-Free Alternates (LFAs)."; "Support for Loop-Free Alternates (LFAs).";
reference "RFC5286 - Basic Specification of IP Fast-Reroute: reference
Loop-free Alternates"; "RFC 5286: Basic Specification for IP Fast Reroute:
Loop-Free Alternates";
} }
feature remote-lfa { feature remote-lfa {
description description
"Support for Remote Loop-Free Alternates (R-LFAs)."; "Support for remote LFAs (R-LFAs).";
reference "RFC7490 - Remote Loop-Free Alternate Fast Reroute"; reference
"RFC 7490: Remote Loop-Free Alternate (LFA)
Fast Reroute (FRR)";
} }
feature overload-max-metric { feature overload-max-metric {
description description
"Support of overload by setting all links to max metric. "Support of overload by setting all links to the maximum
In IS-IS, the overload bit is usually used to signal that link metric. In IS-IS, the overload bit is usually used to
a node cannot be used as a transit. The overload-max-metric signal that a node cannot be used as a transit node. The
feature brings a similar behavior leveraging on setting all 'overload-max-metric' feature provides similar behavior,
the link metrics to MAX_METRIC."; leveraging on setting all the link metrics to MAX_METRIC.";
} }
feature prefix-tag { feature prefix-tag {
description description
"Support for 32-bit prefix tags"; "Support for 32-bit prefix tags.";
reference "RFC5130 - A Policy Control Mechanism in reference
IS-IS Using Administrative Tags"; "RFC 5130: A Policy Control Mechanism in IS-IS Using
Administrative Tags";
} }
feature prefix-tag64 { feature prefix-tag64 {
description description
"Support for 64-bit prefix tags"; "Support for 64-bit prefix tags.";
reference "RFC5130 - A Policy Control Mechanism in reference
IS-IS Using Administrative Tags"; "RFC 5130: A Policy Control Mechanism in IS-IS Using
Administrative Tags";
} }
feature auto-cost { feature auto-cost {
description description
"Support for IS-IS interface metric computation "Support for an IS-IS interface metric computation
according to a reference bandwidth."; according to a reference bandwidth.";
} }
feature te-rid { feature te-rid {
description description
"Traffic-Engineering Router-ID."; "Traffic Engineering router ID.";
reference "RFC5305 - IS-IS Extensions for Traffic Engineering reference
RFC6119 - IPv6 Traffic Engineering in IS-IS"; "RFC 5305: IS-IS Extensions for Traffic Engineering
RFC 6119: IPv6 Traffic Engineering in IS-IS";
} }
feature max-ecmp { feature max-ecmp {
description description
"Setting maximum number of ECMP paths."; "Sets the maximum number of ECMP paths.";
} }
feature multi-topology { feature multi-topology {
description description
"Support for Multiple-Topology Routing (MTR)."; "Support for Multi-Topology (MT) Routing.";
reference "RFC5120 - M-IS-IS: Multi Topology Routing in IS-IS"; reference
"RFC 5120: M-ISIS: Multi Topology (MT) Routing in
Intermediate System to Intermediate Systems (IS-ISs)";
} }
feature nlpid-control { feature nlpid-control {
description description
"Support for the advertisement "Support for the advertisement of a Network Layer
of a Network Layer Protocol Identifier within IS-IS Protocol Identifier within an IS-IS configuration.";
configuration.";
} }
feature graceful-restart { feature graceful-restart {
description description
"IS-IS Graceful restart support."; "Support for IS-IS graceful restart.";
reference "RFC5306 - Restart Signaling in IS-IS"; reference
"RFC 8706: Restart Signaling for IS-IS";
} }
feature lsp-refresh { feature lsp-refresh {
description description
"Configuration of LSP refresh interval."; "Configuration of the LSP refresh interval.";
} }
feature maximum-area-addresses { feature maximum-area-addresses {
description description
"Support for maximum-area-addresses configuration."; "Support for 'maximum-area-addresses' configuration.";
} }
feature admin-control { feature admin-control {
description description
"Administrative control of the protocol state."; "Administrative control of the protocol state.";
} }
/* Type definitions */ /* Type definitions */
typedef circuit-id { typedef circuit-id {
skipping to change at line 1534 skipping to change at line 1781
"Broadcast interface type."; "Broadcast interface type.";
} }
enum point-to-point { enum point-to-point {
description description
"Point-to-point interface type."; "Point-to-point interface type.";
} }
} }
description description
"This type defines the type of adjacency "This type defines the type of adjacency
to be established for the interface. to be established for the interface.
The interface-type determines the type 'interface-type' determines the type
of hello message that is used."; of Hello message that is used.";
} }
typedef level { typedef level {
type enumeration { type enumeration {
enum "level-1" { enum "level-1" {
description description
"This enum indicates L1-only capability."; "This enum indicates L1-only capability.";
} }
enum "level-2" { enum "level-2" {
description description
"This enum indicates L2-only capability."; "This enum indicates L2-only capability.";
} }
enum "level-all" { enum "level-all" {
description description
"This enum indicates capability for both levels."; "This enum indicates capability for both levels.";
} }
} }
default "level-all"; default "level-all";
description description
"This type defines IS-IS level of an object."; "This type defines the IS-IS level of an object.";
} }
typedef adj-state-type { typedef adj-state-type {
type enumeration { type enumeration {
enum "up" { enum "up" {
description description
"State indicates the adjacency is established."; "This state indicates that the adjacency is established.";
} }
enum "down" { enum "down" {
description description
"State indicates the adjacency is NOT established."; "This state indicates that the adjacency is
NOT established.";
} }
enum "init" { enum "init" {
description description
"State indicates the adjacency is establishing."; "This state indicates that the adjacency is being
established.";
} }
enum "failed" { enum "failed" {
description description
"State indicates the adjacency is failed."; "This state indicates that the adjacency has failed.";
} }
} }
description description
"This type defines states of an adjacency"; "This type defines the states of an adjacency.";
} }
typedef if-state-type { typedef if-state-type {
type enumeration { type enumeration {
enum "up" { enum "up" {
description "Up state."; description
"'up' state.";
} }
enum "down" { enum "down" {
description "Down state"; description
"'down' state.";
} }
} }
description description
"This type defines the state of an interface"; "This type defines the state of an interface.";
} }
typedef level-number { typedef level-number {
type uint8 { type uint8 {
range "1 .. 2"; range "1 .. 2";
} }
description description
"This type defines the current IS-IS level."; "This type defines the current IS-IS level.";
} }
typedef lsp-id { typedef lsp-id {
type string { type string {
pattern pattern
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]'
+'{4}\.[0-9][0-9]-[0-9][0-9]'; +'{4}\.[0-9][0-9]-[0-9][0-9]';
} }
description description
"This type defines the IS-IS LSP ID format using a "This type defines the IS-IS LSP ID format using a
pattern. An example LSP ID is 0143.0438.AEF0.02-01"; pattern. An example LSP ID is '0143.0438.AEF0.02-01'.";
} }
typedef area-address { typedef area-address {
type string { type string {
pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}'; pattern '[0-9A-Fa-f]{2}(\.[0-9A-Fa-f]{4}){0,6}';
} }
description description
"This type defines the area address format."; "This type defines the area address format.";
} }
typedef snpa { typedef snpa {
type string { type string {
length "0 .. 20"; length "0 .. 20";
} }
description description
"This type defines the Subnetwork Point "This type defines the Subnetwork Point of Attachment (SNPA)
of Attachment (SNPA) format. format. The SNPA should be encoded according to the rules
The SNPA should be encoded according to the rules specified for the particular type of subnetwork being used.
specified for the particular type of subnetwork As an example, for an Ethernet subnetwork, the SNPA is
being used. As an example, for an ethernet subnetwork, encoded as a Media Access Control (MAC) address, such as
the SNPA is encoded as a MAC address, such as,
'00aa.bbcc.ddee'."; '00aa.bbcc.ddee'.";
} }
typedef system-id { typedef system-id {
type string { type string {
pattern pattern
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}';
} }
description description
"This type defines IS-IS system-id using pattern, "This type defines the IS-IS system ID by using a pattern.
An example system-id is 0143.0438.AEF0"; An example system ID pattern is '0143.0438.AEF0'.";
} }
typedef extended-system-id { typedef extended-system-id {
type string { type string {
pattern pattern
'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.' '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.'
+'[0-9][0-9]'; +'[0-9][0-9]';
} }
description description
"This type defines IS-IS system-id using pattern. The extended "This type defines the IS-IS system ID using a pattern.
system-id contains the pseudonode number in addition to the 'extended-system-id' contains the pseudonode number
system-id. in addition to the system ID.
An example system-id is 0143.0438.AEF0.00"; An example system ID pattern is '0143.0438.AEF0.00'.";
} }
typedef wide-metric { typedef wide-metric {
type uint32 { type uint32 {
range "0 .. 16777215"; range "0 .. 16777215";
} }
description description
"This type defines wide style format of IS-IS metric."; "This type defines the wide-style format of an IS-IS metric.";
} }
typedef std-metric { typedef std-metric {
type uint8 { type uint8 {
range "0 .. 63"; range "0 .. 63";
} }
description description
"This type defines old style format of IS-IS metric."; "This type defines the old-style format of the IS-IS metric.";
} }
typedef mesh-group-state { typedef mesh-group-state {
type enumeration { type enumeration {
enum "mesh-inactive" { enum "mesh-inactive" {
description description
"Interface is not part of a mesh group."; "The interface is not part of a mesh group.";
} }
enum "mesh-set" { enum "mesh-set" {
description description
"Interface is part of a mesh group."; "The interface is part of a mesh group.";
} }
enum "mesh-blocked" { enum "mesh-blocked" {
description description
"LSPs must not be flooded over this interface."; "LSPs must not be flooded over this interface.";
} }
} }
description description
"This type describes mesh group state of an interface"; "This type describes the mesh group state of an interface.";
} }
/* Grouping for notifications */ /* Grouping for notifications */
grouping notification-instance-hdr { grouping notification-instance-hdr {
description description
"Instance specific IS-IS notification data grouping"; "Instance-specific IS-IS notification data grouping.";
leaf routing-protocol-name { leaf routing-protocol-name {
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols/" path "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:name"; + "rt:control-plane-protocol/rt:name";
} }
description "Name of the IS-IS instance."; description
"Name of the IS-IS instance.";
} }
leaf isis-level { leaf isis-level {
type level; type level;
description "IS-IS level of the instance."; description
"IS-IS level of the instance.";
} }
} }
grouping notification-interface-hdr { grouping notification-interface-hdr {
description description
"Interface specific IS-IS notification data grouping"; "Interface-specific IS-IS notification data grouping.";
leaf interface-name { leaf interface-name {
type if:interface-ref; type if:interface-ref;
description "IS-IS interface name"; description
"IS-IS interface name.";
} }
leaf interface-level { leaf interface-level {
type level; type level;
description "IS-IS level of the interface."; description
"IS-IS level of the interface.";
} }
leaf extended-circuit-id { leaf extended-circuit-id {
type extended-circuit-id; type extended-circuit-id;
description "Extended circuit-id of the interface."; description
"Extended circuit ID of the interface.";
} }
} }
/* Groupings for IP Fast Reroute */ /* Groupings for IP Fast Reroute */
grouping instance-fast-reroute-config { grouping instance-fast-reroute-config {
description description
"This group defines global configuration of IP "This group defines the global configuration of IP
Fast ReRoute (FRR)."; Fast Reroute (FRR).";
container fast-reroute { container fast-reroute {
if-feature fast-reroute; if-feature fast-reroute;
description description
"This container may be augmented with global "This container may be augmented with global
parameters for IP-FRR."; parameters for IP FRR.";
container lfa { container lfa {
if-feature lfa; if-feature lfa;
description description
"This container may be augmented with "This container may be augmented with
global parameters for Loop-Free Alternatives (LFA). global parameters for Loop-Free Alternates (LFAs).
Container creation has no effect on LFA activation."; The creation of this container has no effect on
LFA activation.";
} }
} }
} }
grouping interface-lfa-config { grouping interface-lfa-config {
leaf candidate-enable { leaf candidate-enable {
type boolean; type boolean;
default "true"; default "true";
description description
"Enable the interface to be used as backup."; "Enables the interface to be used as a backup.";
} }
leaf enable { leaf enable {
type boolean; type boolean;
default false; default false;
description description
"Activates LFA - Per-prefix LFA computation "Activates the LFA. Per-prefix LFA computation is assumed.";
is assumed.";
} }
container remote-lfa { container remote-lfa {
if-feature remote-lfa; if-feature remote-lfa;
leaf enable { leaf enable {
type boolean; type boolean;
default false; default false;
description description
"Activates Remote LFA (R-LFA)."; "Activates the remote LFA (R-LFA).";
} }
description description
"Remote LFA configuration."; "Remote LFA configuration.";
} }
description "Grouping for LFA interface configuration"; description
"Grouping for LFA interface configuration.";
} }
grouping interface-fast-reroute-config { grouping interface-fast-reroute-config {
description description
"This group defines interface configuration of IP-FRR."; "This group defines the interface configuration of IP FRR.";
container fast-reroute { container fast-reroute {
if-feature fast-reroute; if-feature fast-reroute;
container lfa { container lfa {
if-feature lfa; if-feature lfa;
uses interface-lfa-config; uses interface-lfa-config;
container level-1 { container level-1 {
uses interface-lfa-config; uses interface-lfa-config;
description description
"LFA level 1 config"; "LFA level-1 configuration.";
} }
container level-2 { container level-2 {
uses interface-lfa-config; uses interface-lfa-config;
description description
"LFA level 2 config"; "LFA level-2 configuration.";
} }
description description
"LFA configuration."; "LFA configuration.";
} }
description description
"Interface IP Fast-reroute configuration."; "Interface IP FRR configuration.";
} }
} }
grouping instance-fast-reroute-state { grouping instance-fast-reroute-state {
description "IPFRR state data grouping"; description
"IP FRR state data grouping.";
container protected-routes { container protected-routes {
config false; config false;
list address-family-stats { list address-family-stats {
key "address-family prefix alternate"; key "address-family prefix alternate";
leaf address-family { leaf address-family {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description description
"Address-family"; "Address family.";
} }
leaf prefix { leaf prefix {
type inet:ip-prefix; type inet:ip-prefix;
description description
"Protected prefix."; "Protected prefix.";
} }
leaf alternate { leaf alternate {
type inet:ip-address; type inet:ip-address;
description description
"Alternate next hop for the prefix."; "Alternate next hop for the prefix.";
skipping to change at line 1835 skipping to change at line 2092
leaf alternate-type { leaf alternate-type {
type identityref { type identityref {
base frr-alternate-type; base frr-alternate-type;
} }
description description
"Type of alternate."; "Type of alternate.";
} }
leaf best { leaf best {
type boolean; type boolean;
description description
"Is set when the alternate is the preferred one, "Set when the alternate is the preferred alternate;
is clear otherwise."; clear otherwise.";
} }
leaf non-best-reason { leaf non-best-reason {
type string { type string {
length "1..255"; length "1..255";
} }
description description
"Information field to describe why the alternate "Information field that explains why the alternate
is not best. The length should be limited to 255 is not the best alternate. The length should be
unicode characters. The expected format is a single limited to 255 Unicode characters. The expected format
line text."; is a single line of text.";
} }
container protection-available { container protection-available {
leaf-list protection-types { leaf-list protection-types {
type identityref { type identityref {
base frr-protection-available-type; base frr-protection-available-type;
} }
description "This list contains a set of protection description
types defined as identities. "This list contains a set of protection
An identity must be added for each type of types defined as identities.
protection provided by the alternate. An identity must be added for each type of
As an example, if an alternate provides protection provided by the alternate.
SRLG, node and link protection, three As an example, if an alternate provides
identities must be added in this list: SRLG, node, and link protection, three
one for SRLG protection, one for node identities must be added in this list:
protection, one for link protection."; one for SRLG protection, one for node
protection, and one for link protection.";
} }
description "Protection types provided by the alternate."; description
"Protection types provided by the alternate.";
} }
leaf alternate-metric1 { leaf alternate-metric1 {
type uint32; type uint32;
description description
"Metric from Point of Local Repair (PLR) to "Metric from the Point of Local Repair (PLR) to the
destination through the alternate path."; destination through the alternate path.";
} }
leaf alternate-metric2 { leaf alternate-metric2 {
type uint32; type uint32;
description description
"Metric from PLR to the alternate node"; "Metric from the PLR to the alternate node.";
} }
leaf alternate-metric3 { leaf alternate-metric3 {
type uint32; type uint32;
description description
"Metric from alternate node to the destination"; "Metric from the alternate node to the destination.";
} }
description description
"Per-AF protected prefix statistics."; "Per-address-family protected prefix statistics.";
} }
description description
"List of prefixes that are protected."; "List of prefixes that are protected.";
} }
container unprotected-routes { container unprotected-routes {
config false; config false;
list prefixes { list prefixes {
key "address-family prefix"; key "address-family prefix";
leaf address-family { leaf address-family {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description
description "Address-family"; "Address family.";
} }
leaf prefix { leaf prefix {
type inet:ip-prefix; type inet:ip-prefix;
description "Unprotected prefix."; description
"Unprotected prefix.";
} }
description description
"Per-AF unprotected prefix statistics."; "Per-address-family unprotected prefix statistics.";
} }
description description
"List of prefixes that are not protected."; "List of prefixes that are not protected.";
} }
list protection-statistics { list protection-statistics {
key frr-protection-method; key frr-protection-method;
config false; config false;
leaf frr-protection-method { leaf frr-protection-method {
type identityref { type identityref {
base frr-protection-method; base frr-protection-method;
} }
description "Protection method used."; description
"Protection method used.";
} }
list address-family-stats { list address-family-stats {
key address-family; key address-family;
leaf address-family { leaf address-family {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description
description "Address-family"; "Address family.";
} }
leaf total-routes { leaf total-routes {
type yang:gauge32; type yang:gauge32;
description "Total prefixes."; description
"Total prefixes.";
} }
leaf unprotected-routes { leaf unprotected-routes {
type yang:gauge32; type yang:gauge32;
description description
"Total prefixes that are not protected."; "Total prefixes that are not protected.";
} }
leaf protected-routes { leaf protected-routes {
type yang:gauge32; type yang:gauge32;
description description
"Total prefixes that are protected."; "Total prefixes that are protected.";
skipping to change at line 1951 skipping to change at line 2213
type yang:gauge32; type yang:gauge32;
description description
"Total prefixes that are link protected."; "Total prefixes that are link protected.";
} }
leaf node-protected-routes { leaf node-protected-routes {
type yang:gauge32; type yang:gauge32;
description description
"Total prefixes that are node protected."; "Total prefixes that are node protected.";
} }
description description
"Per-AF protected prefix statistics."; "Per-address-family protected prefix statistics.";
} }
description "Global protection statistics."; description
"Global protection statistics.";
} }
} }
/* Route table and local RIB groupings */ /* Routing table and local Routing Information Base (RIB)
groupings */
grouping local-rib { grouping local-rib {
description "Local-rib - RIB for Routes computed by the local description
IS-IS routing instance."; "Local RIB: RIB for routes computed by the local IS-IS
routing instance.";
container local-rib { container local-rib {
config false; config false;
description "Local-rib."; description
"Local RIB.";
list route { list route {
key "prefix"; key "prefix";
description "Routes"; description
"Routes.";
leaf prefix { leaf prefix {
type inet:ip-prefix; type inet:ip-prefix;
description "Destination prefix."; description
"Destination prefix.";
} }
container next-hops { container next-hops {
description "Next hops for the route."; description
"Next hops for the route.";
list next-hop { list next-hop {
key "next-hop"; key "next-hop";
description "List of next hops for the route"; description
"List of next hops for the route.";
leaf outgoing-interface { leaf outgoing-interface {
type if:interface-ref; type if:interface-ref;
description description
"Name of the outgoing interface."; "Name of the outgoing interface.";
} }
leaf next-hop { leaf next-hop {
type inet:ip-address; type inet:ip-address;
description "Next hop address."; description
"Next-hop address.";
} }
} }
} }
leaf metric { leaf metric {
type uint32; type uint32;
description "Metric for this route."; description
"Metric for this route.";
} }
leaf level { leaf level {
type level-number; type level-number;
description "Level number for this route."; description
"Level number for this route.";
} }
leaf route-tag { leaf route-tag {
type uint32; type uint32;
description "Route tag for this route."; description
"Route tag for this route.";
} }
} }
} }
} }
grouping route-content { grouping route-content {
description description
"IS-IS protocol-specific route properties grouping."; "IS-IS protocol-specific route properties grouping.";
leaf metric { leaf metric {
type uint32; type uint32;
description "IS-IS metric of a route."; description
"IS-IS metric of a route.";
} }
leaf-list tag { leaf-list tag {
type uint64; type uint64;
description description
"List of tags associated with the route. "List of tags associated with the route. This list
This list provides a consolidated view of both provides a consolidated view of both 32-bit and 64-bit
32-bit and 64-bit tags (RFC5130) available for the prefix."; tags (RFC 5130) available for the prefix.";
reference
"RFC 5130: A Policy Control Mechanism in IS-IS Using
Administrative Tags";
} }
leaf route-type { leaf route-type {
type enumeration { type enumeration {
enum l2-intra-area { enum l2-intra-area {
description "Level 2 internal route. As per RFC5302, description
the prefix is directly connected to the "Level-2 internal route. As per RFC 5302,
advertising router. It cannot be the prefix is directly connected to the
distinguished from an L1->L2 inter-area advertising router. It cannot be
route."; distinguished from an L1->L2 inter-area
route.";
reference
"RFC 5302: Domain-Wide Prefix Distribution with
Two-Level IS-IS";
} }
enum l1-intra-area { enum l1-intra-area {
description "Level 1 internal route. As per RFC5302, description
the prefix is directly connected to the "Level-1 internal route. As per RFC 5302,
advertising router."; the prefix is directly connected to the
advertising router.";
} }
enum l2-external { enum l2-external {
description "Level 2 external route. As per RFC5302, description
such a route is learned from other IGPs. "Level-2 external route. As per RFC 5302,
It cannot be distinguished from an L1->L2 such a route is learned from other IGPs.
inter-area external route."; It cannot be distinguished from an L1->L2
inter-area external route.";
} }
enum l1-external { enum l1-external {
description "Level 1 external route. As per RFC5302, description
such a route is learned from other IGPs."; "Level-1 external route. As per RFC 5302,
such a route is learned from other IGPs.";
} }
enum l1-inter-area { enum l1-inter-area {
description "These prefixes are learned via L2 routing."; description
"These prefixes are learned via L2 routing.";
} }
enum l1-inter-area-external { enum l1-inter-area-external {
description "These prefixes are learned via L2 routing description
towards an l2-external route."; "These prefixes are learned via L2 routing
towards a level-2 external route.";
} }
} }
description "IS-IS route type."; description
"IS-IS route type.";
} }
} }
/* Grouping definitions for configuration and ops state */ /* Grouping definitions for configuration and operational states */
grouping adjacency-state { grouping adjacency-state {
container adjacencies { container adjacencies {
config false; config false;
list adjacency { list adjacency {
leaf neighbor-sys-type { leaf neighbor-sys-type {
type level; type level;
description description
"Level capability of neighboring system"; "Level capability of the neighboring system.";
} }
leaf neighbor-sysid { leaf neighbor-sysid {
type system-id; type system-id;
description description
"The system-id of the neighbor"; "The system ID of the neighbor.";
} }
leaf neighbor-extended-circuit-id { leaf neighbor-extended-circuit-id {
type extended-circuit-id; type extended-circuit-id;
description description
"Circuit ID of the neighbor"; "The circuit ID of the neighbor.";
} }
leaf neighbor-snpa { leaf neighbor-snpa {
type snpa; type snpa;
description description
"SNPA of the neighbor"; "The SNPA of the neighbor.";
} }
leaf usage { leaf usage {
type level; type level;
description description
"Define the level(s) activated for the adjacency. "Defines the level(s) activated for the adjacency.
On a p2p link this might be level 1 and 2, On a point-to-point link, this might be level 1 and
but on a LAN, the usage will be level 1 level 2, but on a LAN, the usage will be level 1
between neighbors at level 1 or level 2 between between neighbors at level 1 or level 2 between
neighbors at level 2."; neighbors at level 2.";
} }
leaf hold-timer { leaf hold-timer {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units seconds; units seconds;
description description
"The holding time in seconds for this "The holding time (in seconds) for this adjacency.
adjacency. This value is based on This value is based on received Hello PDUs and the
received hello PDUs and the elapsed elapsed time since receipt.";
time since receipt.";
} }
leaf neighbor-priority { leaf neighbor-priority {
type uint8 { type uint8 {
range "0 .. 127"; range "0 .. 127";
} }
description description
"Priority of the neighboring IS for becoming "Priority of the neighboring IS for becoming the
the DIS."; Designated Intermediate System (DIS).";
} }
leaf lastuptime { leaf lastuptime {
type yang:timestamp; type yang:timestamp;
description description
"When the adjacency most recently entered "When the adjacency most recently entered the
state 'up', measured in hundredths of a 'up' state, measured in hundredths of a
second since the last reinitialization of second since the last reinitialization of
the network management subsystem. the network management subsystem.
The value is 0 if the adjacency has never The value is 0 if the adjacency has never
been in state 'up'."; been in the 'up' state.";
} }
leaf state { leaf state {
type adj-state-type; type adj-state-type;
description description
"This leaf describes the state of the interface."; "This leaf describes the state of the interface.";
} }
description description
"List of operational adjacencies."; "List of operational adjacencies.";
} }
description description
"This container lists the adjacencies of "This container lists the adjacencies of
the local node."; the local node.";
} }
description description
"Adjacency state"; "Adjacency state.";
} }
grouping admin-control { grouping admin-control {
leaf enable { leaf enable {
if-feature admin-control; if-feature admin-control;
type boolean; type boolean;
default "true"; default "true";
description description
"Enable/Disable the protocol."; "Enables or disables the protocol.";
} }
description description
"Grouping for admin control."; "Grouping for administrative control.";
} }
grouping ietf-spf-delay { grouping ietf-spf-delay {
leaf initial-delay { leaf initial-delay {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Delay used while in QUIET state (milliseconds)."; "Delay used while in the QUIET state (milliseconds).";
} }
leaf short-delay { leaf short-delay {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Delay used while in SHORT_WAIT state (milliseconds)."; "Delay used while in the SHORT_WAIT state (milliseconds).";
} }
leaf long-delay { leaf long-delay {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Delay used while in LONG_WAIT state (milliseconds)."; "Delay used while in the LONG_WAIT state (milliseconds).";
} }
leaf hold-down { leaf hold-down {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Timer used to consider an IGP stability period "This timer value defines the period without any changes
(milliseconds)."; for the IGP to be considered stable (in milliseconds).";
} }
leaf time-to-learn { leaf time-to-learn {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units msec; units msec;
description description
"Duration used to learn all the IGP events "Duration used to learn all the IGP events
related to a single component failure (milliseconds)."; related to a single component failure (milliseconds).";
} }
leaf current-state { leaf current-state {
type enumeration { type enumeration {
enum "quiet" { enum "quiet" {
description "QUIET state"; description
"QUIET state.";
} }
enum "short-wait" { enum "short-wait" {
description "SHORT_WAIT state"; description
"SHORT_WAIT state.";
} }
enum "long-wait" { enum "long-wait" {
description "LONG_WAIT state"; description
"LONG_WAIT state.";
} }
} }
config false; config false;
description description
"Current SPF back-off algorithm state."; "Current SPF Back-Off algorithm state.";
} }
leaf remaining-time-to-learn { leaf remaining-time-to-learn {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units "msec"; units "msec";
config false; config false;
description description
"Remaining time until time-to-learn timer fires."; "Remaining time until the time-to-learn timer fires.";
} }
leaf remaining-hold-down { leaf remaining-hold-down {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units "msec"; units "msec";
config false; config false;
description description
"Remaining time until hold-down timer fires."; "Remaining time until the hold-down timer fires.";
} }
leaf last-event-received { leaf last-event-received {
type yang:timestamp; type yang:timestamp;
config false; config false;
description description
"Time of last IGP event received"; "Time of the last IGP event received.";
} }
leaf next-spf-time { leaf next-spf-time {
type yang:timestamp; type yang:timestamp;
config false; config false;
description description
"Time when next SPF has been scheduled."; "Time when the next SPF has been scheduled.";
} }
leaf last-spf-time { leaf last-spf-time {
type yang:timestamp; type yang:timestamp;
config false; config false;
description description
"Time of last SPF computation."; "Time of the last SPF computation.";
} }
description description
"Grouping for IETF SPF delay configuration and state."; "Grouping for IETF SPF delay configuration and state.";
} }
grouping node-tag-config { grouping node-tag-config {
description description
"IS-IS node tag config state."; "IS-IS node tag configuration state.";
container node-tags { container node-tags {
if-feature node-tag; if-feature node-tag;
list node-tag { list node-tag {
key tag; key tag;
leaf tag { leaf tag {
type uint32; type uint32;
description description
"Node tag value."; "Node tag value.";
} }
description description
"List of tags."; "List of tags.";
} }
description description
"Container for node admin tags."; "Container for node administrative tags.";
} }
} }
grouping authentication-global-cfg { grouping authentication-global-cfg {
choice authentication-type { choice authentication-type {
case key-chain { case key-chain {
if-feature key-chain; if-feature key-chain;
leaf key-chain { leaf key-chain {
type key-chain:key-chain-ref; type key-chain:key-chain-ref;
description description
"Reference to a key-chain."; "Reference to a key chain.";
} }
} }
case password { case password {
leaf key { leaf key {
type string; type string;
description description
"This leaf specifies the authentication key. The "This leaf specifies the authentication key. The
length of the key may be dependent on the length of the key may be dependent on the
cryptographic algorithm."; cryptographic algorithm.";
} }
leaf crypto-algorithm { leaf crypto-algorithm {
type identityref { type identityref {
base key-chain:crypto-algorithm; base key-chain:crypto-algorithm;
} }
description description
"Cryptographic algorithm associated with key."; "Cryptographic algorithm associated with a key.";
} }
} }
description "Choice of authentication."; description
"Choice of authentication.";
} }
description "Grouping for global authentication config."; description
"Grouping for global authentication configuration.";
} }
grouping metric-type-global-cfg { grouping metric-type-global-cfg {
leaf value { leaf value {
type enumeration { type enumeration {
enum wide-only { enum wide-only {
description description
"Advertise new metric style only (RFC5305)"; "Advertises the new metric style only (RFC 5305).";
reference
"RFC 5305: IS-IS Extensions for Traffic Engineering";
} }
enum old-only { enum old-only {
description description
"Advertise old metric style only (RFC1195)"; "Advertises the old metric style only (RFC 1195).";
reference
"RFC 1195: Use of OSI IS-IS for routing in TCP/IP and
dual environments";
} }
enum both { enum both {
description "Advertise both metric styles"; description
"Advertises both metric styles.";
} }
} }
description description
"Type of metric to be generated: "Type of metric to be generated:
- wide-only means only new metric style
is generated, - 'wide-only' means that only a new metric style
- old-only means that only old-style metric is generated.
is generated, - 'old-only' means that only an old metric style
- both means that both are advertised. is generated.
This leaf is only affecting IPv4 metrics."; - 'both' means that both are advertised.
This leaf only affects IPv4 metrics.";
} }
description description
"Grouping for global metric style config."; "Grouping for global metric style configuration.";
} }
grouping metric-type-global-cfg-with-default { grouping metric-type-global-cfg-with-default {
leaf value { leaf value {
type enumeration { type enumeration {
enum wide-only { enum wide-only {
description description
"Advertise new metric style only (RFC5305)"; "Advertises the new metric style only (RFC 5305).";
reference
"RFC 5305: IS-IS Extensions for Traffic Engineering";
} }
enum old-only { enum old-only {
description description
"Advertise old metric style only (RFC1195)"; "Advertises the old metric style only (RFC 1195).";
reference
"RFC 1195: Use of OSI IS-IS for routing in TCP/IP and
dual environments";
} }
enum both { enum both {
description "Advertise both metric styles"; description
"Advertises both metric styles.";
} }
} }
default wide-only; default wide-only;
description description
"Type of metric to be generated: "Type of metric to be generated:
- wide-only means only new metric style
is generated, - 'wide-only' means that only a new metric style
- old-only means that only old-style metric is generated.
is generated, - 'old-only' means that only an old metric style
- both means that both are advertised. is generated.
This leaf is only affecting IPv4 metrics."; - 'both' means that both are advertised.
This leaf only affects IPv4 metrics.";
} }
description description
"Grouping for global metric style config."; "Grouping for global metric style configuration.";
} }
grouping default-metric-global-cfg { grouping default-metric-global-cfg {
leaf value { leaf value {
type wide-metric; type wide-metric;
description "Value of the metric"; description
"Value of the metric.";
} }
description description
"Global default metric config grouping."; "Global default metric configuration grouping.";
} }
grouping default-metric-global-cfg-with-default { grouping default-metric-global-cfg-with-default {
leaf value { leaf value {
type wide-metric; type wide-metric;
default "10"; default "10";
description "Value of the metric"; description
"Value of the metric.";
} }
description description
"Global default metric config grouping."; "Global default metric configuration grouping.";
} }
grouping overload-global-cfg { grouping overload-global-cfg {
leaf status { leaf status {
type boolean; type boolean;
default false; default false;
description description
"This leaf specifies the overload status."; "This leaf specifies the overload status.";
} }
description "Grouping for overload bit config."; description
"Grouping for overload bit configuration.";
} }
grouping overload-max-metric-global-cfg { grouping overload-max-metric-global-cfg {
leaf timeout { leaf timeout {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
description description
"Timeout (in seconds) of the overload condition."; "Timeout (in seconds) of the overload condition.";
} }
description description
"Overload maximum metric configuration grouping"; "Overload maximum metric configuration grouping.";
} }
grouping route-preference-global-cfg { grouping route-preference-global-cfg {
choice granularity { choice granularity {
case detail { case detail {
leaf internal { leaf internal {
type uint8; type uint8;
description description
"Protocol preference for internal routes."; "Protocol preference for internal routes.";
} }
skipping to change at line 2404 skipping to change at line 2715
leaf default { leaf default {
type uint8; type uint8;
description description
"Protocol preference for all IS-IS routes."; "Protocol preference for all IS-IS routes.";
} }
} }
description description
"Choice for implementation of route preference."; "Choice for implementation of route preference.";
} }
description description
"Global route preference grouping"; "Global route preference grouping.";
} }
grouping hello-authentication-cfg { grouping hello-authentication-cfg {
choice authentication-type { choice authentication-type {
case key-chain { case key-chain {
if-feature key-chain; if-feature key-chain;
leaf key-chain { leaf key-chain {
type key-chain:key-chain-ref; type key-chain:key-chain-ref;
description "Reference to a key-chain."; description
"Reference to a key chain.";
} }
} }
case password { case password {
leaf key { leaf key {
type string; type string;
description "Authentication key specification - The description
length of the key may be dependent on the "Authentication key specification. The length of the
cryptographic algorithm."; key may be dependent on the cryptographic algorithm.";
} }
leaf crypto-algorithm { leaf crypto-algorithm {
type identityref { type identityref {
base key-chain:crypto-algorithm; base key-chain:crypto-algorithm;
} }
description description
"Cryptographic algorithm associated with key."; "Cryptographic algorithm associated with a key.";
} }
} }
description "Choice of authentication."; description
"Choice of authentication.";
} }
description "Grouping for hello authentication."; description
"Grouping for Hello authentication.";
} }
grouping hello-interval-cfg { grouping hello-interval-cfg {
leaf value { leaf value {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
description description
"Interval (in seconds) between successive hello "Interval (in seconds) between successive Hello
messages."; messages.";
} }
description "Interval between hello messages."; description
"Interval between Hello messages.";
} }
grouping hello-interval-cfg-with-default { grouping hello-interval-cfg-with-default {
leaf value { leaf value {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
default 10; default 10;
description description
"Interval (in seconds) between successive hello "Interval (in seconds) between successive Hello
messages."; messages.";
} }
description "Interval between hello messages."; description
"Interval between Hello messages.";
} }
grouping hello-multiplier-cfg { grouping hello-multiplier-cfg {
leaf value { leaf value {
type uint16; type uint16;
description description
"Number of missed hello messages prior to "Number of missed Hello messages prior to
declaring the adjacency down."; declaring the adjacency down.";
} }
description description
"Number of missed hello messages prior to "Grouping for the number of missed Hello messages prior to
adjacency down grouping."; declaring the adjacency down.";
} }
grouping hello-multiplier-cfg-with-default { grouping hello-multiplier-cfg-with-default {
leaf value { leaf value {
type uint16; type uint16;
default 3; default 3;
description description
"Number of missed hello messages prior to "Number of missed Hello messages prior to
declaring the adjacency down."; declaring the adjacency down.";
} }
description description
"Number of missed hello messages prior to "Grouping for the number of missed Hello messages prior to
adjacency down grouping."; declaring the adjacency down.";
} }
grouping priority-cfg { grouping priority-cfg {
leaf value { leaf value {
type uint8 { type uint8 {
range "0 .. 127"; range "0 .. 127";
} }
description description
"Priority of interface for DIS election."; "Priority of the interface for DIS election.";
} }
description "Interface DIS election priority grouping"; description
"Interface DIS election priority grouping.";
} }
grouping priority-cfg-with-default { grouping priority-cfg-with-default {
leaf value { leaf value {
type uint8 { type uint8 {
range "0 .. 127"; range "0 .. 127";
} }
default 64; default 64;
description description
"Priority of interface for DIS election."; "Priority of the interface for DIS election.";
} }
description "Interface DIS election priority grouping"; description
"Interface DIS election priority grouping.";
} }
grouping metric-cfg { grouping metric-cfg {
leaf value { leaf value {
type wide-metric; type wide-metric;
description "Metric value."; description
"Metric value.";
} }
description "Interface metric grouping"; description
"Interface metric grouping.";
} }
grouping metric-cfg-with-default { grouping metric-cfg-with-default {
leaf value { leaf value {
type wide-metric; type wide-metric;
default "10"; default "10";
description "Metric value."; description
"Metric value.";
} }
description "Interface metric grouping"; description
"Interface metric grouping.";
} }
grouping metric-parameters { grouping metric-parameters {
container metric-type { container metric-type {
uses metric-type-global-cfg-with-default; uses metric-type-global-cfg-with-default;
container level-1 { container level-1 {
uses metric-type-global-cfg; uses metric-type-global-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses metric-type-global-cfg; uses metric-type-global-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Metric style global configuration"; description
"Metric style global configuration.";
} }
container default-metric { container default-metric {
uses default-metric-global-cfg-with-default; uses default-metric-global-cfg-with-default;
container level-1 { container level-1 {
uses default-metric-global-cfg; uses default-metric-global-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses default-metric-global-cfg; uses default-metric-global-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Default metric global configuration"; description
"Default metric global configuration.";
} }
container auto-cost { container auto-cost {
if-feature auto-cost; if-feature auto-cost;
description description
"Interface Auto-cost configuration state."; "Interface auto-cost configuration state.";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable/Disable interface auto-cost."; "Enables or disables interface auto-cost.";
} }
leaf reference-bandwidth { leaf reference-bandwidth {
when "../enable = 'true'" { when "../enable = 'true'" {
description "Only when auto cost is enabled"; description
"Only when auto-cost is enabled.";
} }
type uint32 { type uint32 {
range "1..4294967"; range "1..4294967";
} }
units Mbits; units Mbits;
description description
"Configure reference bandwidth used to automatically "Configures the reference bandwidth used to automatically
determine interface cost (Mbits). The cost is the determine the interface cost (Mbits). The cost is the
reference bandwidth divided by the interface speed reference bandwidth divided by the interface speed,
with 1 being the minimum cost."; with 1 being the minimum cost.";
} }
} }
description "Grouping for global metric parameters."; description
"Grouping for global metric parameters.";
} }
grouping high-availability-parameters { grouping high-availability-parameters {
container graceful-restart { container graceful-restart {
if-feature graceful-restart; if-feature graceful-restart;
leaf enable { leaf enable {
type boolean; type boolean;
default false; default false;
description "Enable graceful restart."; description
"Enables graceful restart.";
} }
leaf restart-interval { leaf restart-interval {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
description description
"Interval (in seconds) to attempt graceful restart prior "Interval (in seconds) to attempt graceful restart prior
to failure."; to failure.";
} }
leaf helper-enable { leaf helper-enable {
type boolean; type boolean;
default "true"; default "true";
description description
"Enable local IS-IS router as graceful restart helper."; "Enables a local IS-IS router as a graceful restart
helper.";
} }
description "Graceful-Restart Configuration."; description
"Configuration of graceful restart.";
} }
container nsr { container nsr {
if-feature nsr; if-feature nsr;
description "Non-Stop Routing (NSR) configuration."; description
"Non-Stop Routing (NSR) configuration.";
leaf enable { leaf enable {
type boolean; type boolean;
default false; default false;
description "Enable/Disable Non-Stop Routing (NSR)."; description
"Enables or disables NSR.";
} }
} }
description "Grouping for High Availability parameters."; description
"Grouping for high-availability parameters.";
} }
grouping authentication-parameters { grouping authentication-parameters {
container authentication { container authentication {
uses authentication-global-cfg; uses authentication-global-cfg;
container level-1 { container level-1 {
uses authentication-global-cfg; uses authentication-global-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses authentication-global-cfg; uses authentication-global-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Authentication global configuration for description
both LSPs and SNPs."; "Authentication global configuration for
both LSPs and Sequence Number PDUs (SNPs).";
} }
description "Grouping for authentication parameters"; description
"Grouping for authentication parameters.";
} }
grouping address-family-parameters { grouping address-family-parameters {
container address-families { container address-families {
if-feature nlpid-control; if-feature nlpid-control;
list address-family-list { list address-family-list {
key address-family; key address-family;
leaf address-family { leaf address-family {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description "Address-family"; description
"Address family.";
} }
leaf enable { leaf enable {
type boolean; type boolean;
description "Activate the address family."; description
"Activates the address family.";
} }
description description
"List of address families and whether or not they "List of address families and whether or not they
are activated."; are activated.";
} }
description "Address Family configuration"; description
"Address family configuration.";
} }
description "Grouping for address family parameters."; description
"Grouping for address family parameters.";
} }
grouping mpls-parameters { grouping mpls-parameters {
container mpls { container mpls {
container te-rid { container te-rid {
if-feature te-rid; if-feature te-rid;
description description
"Stable ISIS Router IP Address used for Traffic "Stable IS-IS router IP address used for Traffic
Engineering"; Engineering.";
leaf ipv4-router-id { leaf ipv4-router-id {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Router ID value that would be used in TLV 134."; "Router ID value that would be used in TLV 134.";
} }
leaf ipv6-router-id { leaf ipv6-router-id {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Router ID value that would be used in TLV 140."; "Router ID value that would be used in TLV 140.";
} }
} }
container ldp { container ldp {
container igp-sync { container igp-sync {
if-feature ldp-igp-sync; if-feature ldp-igp-sync;
description description
"This container may be augmented with global "This container may be augmented with global
parameters for igp-ldp-sync."; parameters for LDP IGP synchronization.";
} }
description "LDP configuration."; description
"LDP configuration.";
} }
description "MPLS configuration"; description
"MPLS configuration.";
} }
description "Grouping for MPLS global parameters."; description
"Grouping for MPLS global parameters.";
} }
grouping lsp-parameters { grouping lsp-parameters {
leaf lsp-mtu { leaf lsp-mtu {
type uint16; type uint16;
units "bytes"; units "bytes";
default 1492; default 1492;
description description
"Maximum size of an LSP PDU in bytes."; "Maximum size of an LSP PDU in bytes.";
} }
skipping to change at line 2712 skipping to change at line 3059
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
description description
"Refresh interval of the router's LSPs in seconds."; "Refresh interval of the router's LSPs in seconds.";
} }
leaf poi-tlv { leaf poi-tlv {
if-feature poi-tlv; if-feature poi-tlv;
type boolean; type boolean;
default false; default false;
description description
"Enable advertisement of IS-IS Purge Originator "Enables the advertisement of the IS-IS Purge Originator
Identification TLV."; Identification TLV.";
} }
description "Grouping for LSP global parameters."; description
"Grouping for LSP global parameters.";
} }
grouping spf-parameters { grouping spf-parameters {
container spf-control { container spf-control {
leaf paths { leaf paths {
if-feature max-ecmp; if-feature max-ecmp;
type uint16 { type uint16 {
range "1..65535"; range "1..65535";
} }
description description
"Maximum number of Equal-Cost Multi-Path (ECMP) paths."; "Maximum number of Equal-Cost Multi-Path (ECMP) paths.";
} }
container ietf-spf-delay { container ietf-spf-delay {
if-feature ietf-spf-delay; if-feature ietf-spf-delay;
uses ietf-spf-delay; uses ietf-spf-delay;
description "IETF SPF delay algorithm configuration."; description
"IETF SPF delay algorithm configuration.";
} }
description description
"SPF calculation control."; "SPF calculation control.";
} }
description "Grouping for SPF global parameters."; description
"Grouping for SPF global parameters.";
} }
grouping instance-config { grouping instance-config {
description "IS-IS global configuration grouping"; description
"IS-IS global configuration grouping.";
uses admin-control; uses admin-control;
leaf level-type { leaf level-type {
type level; type level;
default "level-all"; default "level-all";
description description
"Level of an IS-IS node - can be level-1, "Level of an IS-IS node. Can be 'level-1', 'level-2', or
level-2 or level-all."; 'level-all'.";
} }
leaf system-id { leaf system-id {
type system-id; type system-id;
description "system-id of the node."; description
"System ID of the node.";
} }
leaf maximum-area-addresses { leaf maximum-area-addresses {
if-feature maximum-area-addresses; if-feature maximum-area-addresses;
type uint8; type uint8;
default 3; default 3;
description "Maximum areas supported."; description
"Maximum areas supported.";
} }
leaf-list area-address { leaf-list area-address {
type area-address; type area-address;
description description
"List of areas supported by the protocol instance."; "List of areas supported by the protocol instance.";
} }
uses lsp-parameters; uses lsp-parameters;
uses high-availability-parameters; uses high-availability-parameters;
uses node-tag-config; uses node-tag-config;
uses metric-parameters; uses metric-parameters;
uses authentication-parameters; uses authentication-parameters;
uses address-family-parameters; uses address-family-parameters;
uses mpls-parameters; uses mpls-parameters;
uses spf-parameters; uses spf-parameters;
uses instance-fast-reroute-config; uses instance-fast-reroute-config;
container preference { container preference {
uses route-preference-global-cfg; uses route-preference-global-cfg;
description "Router preference configuration for IS-IS description
protocol instance route installation"; "Router preference configuration for IS-IS
protocol instance route installation.";
} }
container overload { container overload {
uses overload-global-cfg; uses overload-global-cfg;
description "Router protocol instance overload state description
configuration"; "Router protocol instance overload state configuration.";
} }
container overload-max-metric { container overload-max-metric {
if-feature overload-max-metric; if-feature overload-max-metric;
uses overload-max-metric-global-cfg; uses overload-max-metric-global-cfg;
description description
"Router protocol instance overload maximum "Router protocol instance overload maximum
metric advertisement configuration."; metric advertisement configuration.";
} }
} }
skipping to change at line 2815 skipping to change at line 3169
uses lsdb; uses lsdb;
uses local-rib; uses local-rib;
uses system-counters; uses system-counters;
uses instance-fast-reroute-state; uses instance-fast-reroute-state;
leaf discontinuity-time { leaf discontinuity-time {
type yang:date-and-time; type yang:date-and-time;
description description
"The time of the most recent occasion at which any one "The time of the most recent occasion at which any one
or more of this IS-IS instance's counters suffered a or more of this IS-IS instance's counters suffered a
discontinuity. If no such discontinuities have occurred discontinuity. If no such discontinuities have occurred
since the IS-IS instance was last re-initialized, then since the IS-IS instance was last reinitialized, then
this node contains the time the IS-IS instance was this node contains the time the IS-IS instance was
re-initialized which normally occurs when it was reinitialized, which normally occurs when it was
created."; created.";
} }
} }
grouping multi-topology-config { grouping multi-topology-config {
description "Per-topology configuration"; description
"Per-topology configuration.";
container default-metric { container default-metric {
uses default-metric-global-cfg; uses default-metric-global-cfg;
container level-1 { container level-1 {
uses default-metric-global-cfg; uses default-metric-global-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses default-metric-global-cfg; uses default-metric-global-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Default metric per-topology configuration"; description
"Default metric per-topology configuration.";
} }
uses node-tag-config; uses node-tag-config;
} }
grouping interface-config { grouping interface-config {
description "Interface configuration grouping"; description
"Interface configuration grouping.";
uses admin-control; uses admin-control;
leaf level-type { leaf level-type {
type level; type level;
default "level-all"; default "level-all";
description "IS-IS level of the interface."; description
"IS-IS level of the interface.";
} }
leaf lsp-pacing-interval { leaf lsp-pacing-interval {
type rt-types:timer-value-milliseconds; type rt-types:timer-value-milliseconds;
units "milliseconds"; units "milliseconds";
default 33; default 33;
description description
"Interval (in milli-seconds) between LSP "Interval (in milliseconds) between LSP transmissions.";
transmissions.";
} }
leaf lsp-retransmit-interval { leaf lsp-retransmit-interval {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
description description
"Interval (in seconds) between LSP "Interval (in seconds) between LSP retransmissions.";
retransmissions.";
} }
leaf passive { leaf passive {
type boolean; type boolean;
default "false"; default "false";
description description
"Indicates whether the interface is in passive mode (IS-IS "Indicates whether the interface is in passive mode (IS-IS
not running but network is advertised)."; is not running, but the network is advertised).";
} }
leaf csnp-interval { leaf csnp-interval {
type rt-types:timer-value-seconds16; type rt-types:timer-value-seconds16;
units "seconds"; units "seconds";
default 10; default 10;
description description
"Interval (in seconds) between CSNP messages."; "Interval (in seconds) between Complete Sequence Number
Packet (CSNP) messages.";
} }
container hello-padding { container hello-padding {
leaf enable { leaf enable {
type boolean; type boolean;
default "true"; default "true";
description description
"IS-IS Hello-padding activation - enabled by default."; "IS-IS Hello padding activation. Enabled by default.";
} }
description "IS-IS hello padding configuration."; description
"IS-IS Hello padding configuration.";
} }
leaf mesh-group-enable { leaf mesh-group-enable {
type mesh-group-state; type mesh-group-state;
description "IS-IS interface mesh-group state"; description
"IS-IS interface mesh group state.";
} }
leaf mesh-group { leaf mesh-group {
when "../mesh-group-enable = 'mesh-set'" { when "../mesh-group-enable = 'mesh-set'" {
description description
"Only valid when mesh-group-enable equals mesh-set"; "Only valid when 'mesh-group-enable' equals 'mesh-set'.";
} }
type uint8; type uint8;
description "IS-IS interface mesh-group ID."; description
"IS-IS interface mesh group ID.";
} }
leaf interface-type { leaf interface-type {
type interface-type; type interface-type;
default "broadcast"; default "broadcast";
description description
"Type of adjacency to be established for the interface. This "Type of adjacency to be established for the interface.
dictates the type of hello messages that are used."; This dictates the type of Hello messages that are used.";
} }
leaf-list tag { leaf-list tag {
if-feature prefix-tag; if-feature prefix-tag;
type uint32; type uint32;
description description
"List of tags associated with the interface."; "List of tags associated with the interface.";
} }
leaf-list tag64 { leaf-list tag64 {
if-feature prefix-tag64; if-feature prefix-tag64;
type uint64; type uint64;
description description
"List of 64-bit tags associated with the interface."; "List of 64-bit tags associated with the interface.";
} }
leaf node-flag { leaf node-flag {
if-feature node-flag; if-feature node-flag;
type boolean; type boolean;
default false; default false;
description description
"Set prefix as a node representative prefix."; "Sets the prefix as a node representative prefix.";
} }
container hello-authentication { container hello-authentication {
uses hello-authentication-cfg; uses hello-authentication-cfg;
container level-1 { container level-1 {
uses hello-authentication-cfg; uses hello-authentication-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses hello-authentication-cfg; uses hello-authentication-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description description
"Authentication type to be used in hello messages."; "Authentication type to be used in Hello messages.";
} }
container hello-interval { container hello-interval {
uses hello-interval-cfg-with-default; uses hello-interval-cfg-with-default;
container level-1 { container level-1 {
uses hello-interval-cfg; uses hello-interval-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses hello-interval-cfg; uses hello-interval-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Interval between hello messages."; description
"Interval between Hello messages.";
} }
container hello-multiplier { container hello-multiplier {
uses hello-multiplier-cfg-with-default; uses hello-multiplier-cfg-with-default;
container level-1 { container level-1 {
uses hello-multiplier-cfg; uses hello-multiplier-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses hello-multiplier-cfg; uses hello-multiplier-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Hello multiplier configuration."; description
"Hello multiplier configuration.";
} }
container priority { container priority {
must '../interface-type = "broadcast"' { must '../interface-type = "broadcast"' {
error-message error-message
"Priority only applies to broadcast interfaces."; "Priority only applies to broadcast interfaces.";
description "Check for broadcast interface."; description
"Checks for a broadcast interface.";
} }
uses priority-cfg-with-default; uses priority-cfg-with-default;
container level-1 { container level-1 {
uses priority-cfg; uses priority-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses priority-cfg; uses priority-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Priority for DIS election."; description
"Priority for DIS election.";
} }
container metric { container metric {
uses metric-cfg-with-default; uses metric-cfg-with-default;
container level-1 { container level-1 {
uses metric-cfg; uses metric-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses metric-cfg; uses metric-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Metric configuration."; description
"Metric configuration.";
} }
container bfd { container bfd {
if-feature bfd; if-feature bfd;
description "BFD Client Configuration."; description
"BFD client configuration.";
uses bfd-types:client-cfg-parms; uses bfd-types:client-cfg-parms;
reference "RFC YYYY - YANG Data Model for Bidirectional reference
Forwarding Detection (BFD). "RFC 9127: YANG Data Model for Bidirectional Forwarding
Detection (BFD)";
number for draft-ietf-bfd-yang.";
} }
container address-families { container address-families {
if-feature nlpid-control; if-feature nlpid-control;
list address-family-list { list address-family-list {
key address-family; key address-family;
leaf address-family { leaf address-family {
type iana-rt-types:address-family; type iana-rt-types:address-family;
description "Address-family"; description
"Address family.";
} }
description "List of AFs."; description
"List of address families.";
} }
description "Interface address-families"; description
"Interface address families.";
} }
container mpls { container mpls {
container ldp { container ldp {
leaf igp-sync { leaf igp-sync {
if-feature ldp-igp-sync; if-feature ldp-igp-sync;
type boolean; type boolean;
default false; default false;
description "Enables IGP/LDP synchronization"; description
"Enables IGP/LDP synchronization.";
} }
description "LDP protocol related configuration."; description
"Configuration related to LDP.";
} }
description "MPLS configuration for IS-IS interfaces"; description
"MPLS configuration for IS-IS interfaces.";
} }
uses interface-fast-reroute-config; uses interface-fast-reroute-config;
} }
grouping multi-topology-interface-config { grouping multi-topology-interface-config {
description "IS-IS interface topology configuration."; description
"IS-IS interface topology configuration.";
container metric { container metric {
uses metric-cfg; uses metric-cfg;
container level-1 { container level-1 {
uses metric-cfg; uses metric-cfg;
description "level-1 specific configuration"; description
"Configuration specific to level 1.";
} }
container level-2 { container level-2 {
uses metric-cfg; uses metric-cfg;
description "level-2 specific configuration"; description
"Configuration specific to level 2.";
} }
description "Metric IS-IS interface configuration."; description
"Metric IS-IS interface configuration.";
} }
} }
grouping interface-state { grouping interface-state {
description description
"IS-IS interface operational state."; "IS-IS interface operational state.";
uses adjacency-state; uses adjacency-state;
uses event-counters; uses event-counters;
uses packet-counters; uses packet-counters;
leaf discontinuity-time { leaf discontinuity-time {
type yang:date-and-time; type yang:date-and-time;
description description
"The time of the most recent occasion at which any one "The time of the most recent occasion at which any one
or more of this IS-IS interface's counters suffered a or more of this IS-IS interface's counters suffered a
discontinuity. If no such discontinuities have occurred discontinuity. If no such discontinuities have occurred
since the IS-IS interface was last re-initialized, then since the IS-IS interface was last reinitialized, then
this node contains the time the IS-IS interface was this node contains the time the IS-IS interface was
re-initialized which normally occurs when it was reinitialized, which normally occurs when it was
created."; created.";
} }
} }
/* Grouping for the hostname database */ /* Grouping for the hostname database */
grouping hostname-db { grouping hostname-db {
container hostnames { container hostnames {
config false; config false;
list hostname { list hostname {
key system-id; key system-id;
leaf system-id { leaf system-id {
type system-id; type system-id;
description description
"system-id associated with the hostname."; "System ID associated with the hostname.";
} }
leaf hostname { leaf hostname {
type string { type string {
length "1..255"; length "1..255";
} }
description description
"Hostname associated with the system-id "Hostname associated with the system ID
as defined in RFC5301."; as defined in RFC 5301.";
reference
"RFC 5301: Dynamic Hostname Exchange Mechanism
for IS-IS";
} }
description description
"List of system-id/hostname associations."; "List of system ID / hostname associations.";
} }
description description
"Hostname to system-id mapping database."; "Hostname-to-system-ID mapping database.";
} }
description description
"Grouping for hostname to system-id mapping database."; "Grouping for hostname-to-system-ID mapping database.";
} }
/* Groupings for counters */ /* Groupings for counters */
grouping system-counters { grouping system-counters {
container system-counters { container system-counters {
config false; config false;
list level { list level {
key level; key level;
leaf level { leaf level {
type level-number; type level-number;
description "IS-IS level."; description
"IS-IS level.";
} }
leaf corrupted-lsps { leaf corrupted-lsps {
type uint32; type uint32;
description description
"Number of corrupted in-memory LSPs detected. "Number of corrupted in-memory LSPs detected.
LSPs received from the wire with a bad LSPs received from the wire with a bad
checksum are silently dropped and not counted. checksum are silently dropped and not counted.
LSPs received from the wire with parse errors LSPs received from the wire with parse errors
are counted by lsp-errors."; are counted by 'lsp-errors'.";
} }
leaf authentication-type-fails { leaf authentication-type-fails {
type uint32; type uint32;
description description
"Number of authentication type mismatches."; "Number of authentication type mismatches.";
} }
leaf authentication-fails { leaf authentication-fails {
type uint32; type uint32;
description description
"Number of authentication key failures."; "Number of authentication key failures.";
} }
leaf database-overload { leaf database-overload {
type uint32; type uint32;
description description
"Number of times the database has become "Number of times the database has become
skipping to change at line 3171 skipping to change at line 3560
than that of the receiving system."; than that of the receiving system.";
} }
leaf partition-changes { leaf partition-changes {
type uint32; type uint32;
description description
"Number of partition changes detected."; "Number of partition changes detected.";
} }
leaf lsp-errors { leaf lsp-errors {
type uint32; type uint32;
description description
"Number of LSPs with errors we have received."; "Number of LSPs received with errors.";
} }
leaf spf-runs { leaf spf-runs {
type uint32; type uint32;
description description
"Number of times we ran SPF at this level."; "Number of times we ran SPF at this level.";
} }
description description
"List of supported levels."; "List of supported levels.";
} }
description description
"List counters for the IS-IS protocol instance"; "List of counters for the IS-IS protocol instance.";
} }
description description
"Grouping for IS-IS system counters"; "Grouping for IS-IS system counters.";
} }
grouping event-counters { grouping event-counters {
container event-counters { container event-counters {
config false; config false;
leaf adjacency-changes { leaf adjacency-changes {
type uint32; type uint32;
description description
"The number of times an adjacency state change has "The number of times an adjacency state change has
occurred on this interface."; occurred on this interface.";
} }
leaf adjacency-number { leaf adjacency-number {
type uint32; type uint32;
description description
"The number of adjacencies on this interface."; "The number of adjacencies on this interface.";
} }
leaf init-fails { leaf init-fails {
type uint32; type uint32;
description description
"The number of times initialization of this "The number of times initialization of this interface has
interface has failed. This counts events such failed. This counts events such as Point-to-Point
as PPP NCP failures. Failures to form an Protocol (PPP) Network Control Protocol (NCP) failures.
adjacency are counted by adjacency-rejects."; Failures to form an adjacency are counted by
'adjacency-rejects'.";
} }
leaf adjacency-rejects { leaf adjacency-rejects {
type uint32; type uint32;
description description
"The number of times an adjacency has been "The number of times an adjacency has been
rejected on this interface."; rejected on this interface.";
} }
leaf id-len-mismatch { leaf id-len-mismatch {
type uint32; type uint32;
description description
skipping to change at line 3245 skipping to change at line 3635
} }
leaf authentication-fails { leaf authentication-fails {
type uint32; type uint32;
description description
"Number of authentication key failures."; "Number of authentication key failures.";
} }
leaf lan-dis-changes { leaf lan-dis-changes {
type uint32; type uint32;
description description
"The number of times the DIS has changed on this "The number of times the DIS has changed on this
interface at this level. If the interface type is interface at this level. If the interface type is
point-to-point, the count is zero."; 'point-to-point', the count is zero.";
} }
description "IS-IS interface event counters."; description
"IS-IS interface event counters.";
} }
description description
"Grouping for IS-IS interface event counters"; "Grouping for IS-IS interface event counters.";
} }
grouping packet-counters { grouping packet-counters {
container packet-counters { container packet-counters {
config false; config false;
list level { list level {
key level; key level;
leaf level { leaf level {
type level-number; type level-number;
description "IS-IS level."; description
"IS-IS level.";
} }
container iih { container iih {
leaf in { leaf in {
type uint32; type uint32;
description "Received IIH PDUs."; description
"Received IS-IS Hello (IIH) PDUs.";
} }
leaf out { leaf out {
type uint32; type uint32;
description "Sent IIH PDUs."; description
"Sent IIH PDUs.";
} }
description "Number of IIH PDUs received/sent."; description
"Number of IIH PDUs received/sent.";
} }
container ish { container ish {
leaf in { leaf in {
type uint32; type uint32;
description "Received ISH PDUs."; description
"Received Intermediate System Hello (ISH) PDUs.";
} }
leaf out { leaf out {
type uint32; type uint32;
description "Sent ISH PDUs."; description
"Sent ISH PDUs.";
} }
description description
"ISH PDUs received/sent."; "ISH PDUs received/sent.";
} }
container esh { container esh {
leaf in { leaf in {
type uint32; type uint32;
description "Received ESH PDUs."; description
"Received End System Hello (ESH) PDUs.";
} }
leaf out { leaf out {
type uint32; type uint32;
description "Sent ESH PDUs."; description
"Sent ESH PDUs.";
} }
description "Number of ESH PDUs received/sent."; description
"Number of ESH PDUs received/sent.";
} }
container lsp { container lsp {
leaf in { leaf in {
type uint32; type uint32;
description "Received LSP PDUs."; description
"Received LSP PDUs.";
} }
leaf out { leaf out {
type uint32; type uint32;
description "Sent LSP PDUs."; description
"Sent LSP PDUs.";
} }
description "Number of LSP PDUs received/sent."; description
"Number of LSP PDUs received/sent.";
} }
container psnp { container psnp {
leaf in { leaf in {
type uint32; type uint32;
description "Received PSNP PDUs."; description
"Received Partial Sequence Number Packet
(PSNP) PDUs.";
} }
leaf out { leaf out {
type uint32; type uint32;
description "Sent PSNP PDUs."; description
"Sent PSNP PDUs.";
} }
description "Number of PSNP PDUs received/sent."; description
"Number of PSNP PDUs received/sent.";
} }
container csnp { container csnp {
leaf in { leaf in {
type uint32; type uint32;
description "Received CSNP PDUs."; description
"Received CSNP PDUs.";
} }
leaf out { leaf out {
type uint32; type uint32;
description "Sent CSNP PDUs."; description
"Sent CSNP PDUs.";
} }
description "Number of CSNP PDUs received/sent."; description
"Number of CSNP PDUs received/sent.";
} }
container unknown { container unknown {
leaf in { leaf in {
type uint32; type uint32;
description "Received unknown PDUs."; description
"Received unknown PDUs.";
} }
description "Number of unknown PDUs received/sent."; description
"Number of unknown PDUs received.";
} }
description description
"List of packet counter for supported levels."; "List of packet counters for supported levels.";
} }
description "Packet counters per IS-IS level."; description
"Packet counters per IS-IS level.";
} }
description description
"Grouping for per IS-IS Level packet counters."; "Grouping for packet counters per IS-IS level.";
} }
/* Groupings for various log buffers */ /* Groupings for various log buffers */
grouping spf-log { grouping spf-log {
container spf-log { container spf-log {
config false; config false;
list event { list event {
key id; key id;
leaf id { leaf id {
type yang:counter32; type yang:counter32;
description description
"Event identifier - purely internal value. "Event identifier. A purely internal value.
It is expected the most recent events to have the bigger The most recent events are expected to have a bigger
id number."; ID number.";
} }
leaf spf-type { leaf spf-type {
type enumeration { type enumeration {
enum full { enum full {
description "Full SPF computation."; description
"Full SPF computation.";
} }
enum route-only { enum route-only {
description description
"Route reachability only SPF computation"; "SPF computation indicating route reachability
only.";
} }
} }
description "Type of SPF computation performed."; description
"Type of SPF computation performed.";
} }
leaf level { leaf level {
type level-number; type level-number;
description description
"IS-IS level number for SPF computation"; "IS-IS level number for the SPF computation.";
} }
leaf schedule-timestamp { leaf schedule-timestamp {
type yang:timestamp; type yang:timestamp;
description description
"Timestamp of when the SPF computation was "Timestamp of when the SPF computation was
scheduled."; scheduled.";
} }
leaf start-timestamp { leaf start-timestamp {
type yang:timestamp; type yang:timestamp;
description description
skipping to change at line 3399 skipping to change at line 3815
leaf end-timestamp { leaf end-timestamp {
type yang:timestamp; type yang:timestamp;
description description
"Timestamp of when the SPF computation ended."; "Timestamp of when the SPF computation ended.";
} }
list trigger-lsp { list trigger-lsp {
key "lsp"; key "lsp";
leaf lsp { leaf lsp {
type lsp-id; type lsp-id;
description description
"LSP ID of the LSP triggering SPF computation."; "LSP ID of the LSP that triggered the SPF
computation.";
} }
leaf sequence { leaf sequence {
type uint32; type uint32;
description description
"Sequence number of the LSP triggering SPF "Sequence number of the LSP that triggered the SPF
computation"; computation.";
} }
description description
"This list includes the LSPs that triggered the "This list includes the LSPs that triggered the
SPF computation."; SPF computation.";
} }
description description
"List of computation events - implemented as a "List of computation events. Implemented as a
wrapping buffer."; wrapping buffer.";
} }
description description
"This container lists the SPF computation events."; "This container lists the SPF computation events.";
} }
description "Grouping for spf-log events."; description
"Grouping for SPF log events.";
} }
grouping lsp-log { grouping lsp-log {
container lsp-log { container lsp-log {
config false; config false;
list event { list event {
key id; key id;
leaf id { leaf id {
type yang:counter32; type yang:counter32;
description description
"Event identifier - purely internal value. "Event identifier. A purely internal value.
It is expected the most recent events to have the bigger The most recent events are expected to have a bigger
id number."; ID number.";
} }
leaf level { leaf level {
type level-number; type level-number;
description description
"IS-IS level number for LSP"; "IS-IS level number for the LSP.";
} }
container lsp { container lsp {
leaf lsp { leaf lsp {
type lsp-id; type lsp-id;
description description
"LSP ID of the LSP."; "LSP ID of the LSP.";
} }
leaf sequence { leaf sequence {
type uint32; type uint32;
description description
"Sequence number of the LSP."; "Sequence number of the LSP.";
} }
description description
"LSP identification container - either the received "LSP identification container for either the received
LSP or the locally generated LSP."; LSP or the locally generated LSP.";
} }
leaf received-timestamp { leaf received-timestamp {
type yang:timestamp; type yang:timestamp;
description description
"This is the timestamp when the LSA was received. "This is the timestamp when the LSP was received.
In case of local LSA update, the timestamp refers In the case of a local LSP update, the timestamp refers
to the LSA origination time."; to the LSP origination time.";
} }
leaf reason { leaf reason {
type identityref { type identityref {
base lsp-log-reason; base lsp-log-reason;
} }
description "Type of LSP change."; description
"Type of LSP change.";
} }
description description
"List of LSP events - implemented as a "List of LSP events. Implemented as a wrapping buffer.";
wrapping buffer.";
} }
description description
"This container lists the LSP log. "This container lists the LSP log.
Local LSP modifications are also included Local LSP modifications are also included in the list.";
in the list.";
} description "Grouping for LSP log."; } description
"Grouping for the LSP log.";
} }
/* Groupings for the LSDB description */ /* Groupings for the Link State Database (LSDB) descriptions */
/* Unknown TLV and sub-TLV description */ /* Unknown TLV and sub-TLV descriptions */
grouping tlv { grouping tlv {
description description
"Type-Length-Value (TLV)"; "Type-Length-Value (TLV).";
leaf type { leaf type {
type uint16; type uint16;
description "TLV type."; description
"TLV type.";
} }
leaf length { leaf length {
type uint16; type uint16;
description "TLV length (octets)."; description
"TLV length (octets).";
} }
leaf value { leaf value {
type yang:hex-string; type yang:hex-string;
description "TLV value."; description
"TLV value.";
} }
} }
grouping unknown-tlvs { grouping unknown-tlvs {
description description
"Unknown TLVs grouping - Used for unknown TLVs or "Unknown TLVs grouping. Used for unknown TLVs or
unknown sub-TLVs."; unknown sub-TLVs.";
container unknown-tlvs { container unknown-tlvs {
description "All unknown TLVs."; description
"All unknown TLVs.";
list unknown-tlv { list unknown-tlv {
description "Unknown TLV."; description
"Unknown TLV.";
uses tlv; uses tlv;
} }
} }
} }
/* TLVs and sub-TLVs for prefixes */ /* TLVs and sub-TLVs for prefixes */
grouping prefix-reachability-attributes { grouping prefix-reachability-attributes {
description description
"Grouping for extended reachability attributes of an "Grouping for extended reachability attributes of an
IPv4 or IPv6 prefix."; IPv4 or IPv6 prefix.";
leaf external-prefix-flag { leaf external-prefix-flag {
type boolean; type boolean;
description "External prefix flag."; description
"External prefix flag.";
} }
leaf readvertisement-flag { leaf readvertisement-flag {
type boolean; type boolean;
description "Re-advertisement flag."; description
"Re-advertisement flag.";
} }
leaf node-flag { leaf node-flag {
type boolean; type boolean;
description "Node flag."; description
"Node flag.";
} }
} }
grouping prefix-ipv4-source-router-id { grouping prefix-ipv4-source-router-id {
description description
"Grouping for the IPv4 source router ID of a prefix "Grouping for the IPv4 source router ID of a prefix
advertisement."; advertisement.";
leaf ipv4-source-router-id { leaf ipv4-source-router-id {
type inet:ipv4-address; type inet:ipv4-address;
description "IPv4 Source router ID address."; description
"IPv4 source router ID address.";
} }
} }
grouping prefix-ipv6-source-router-id { grouping prefix-ipv6-source-router-id {
description description
"Grouping for the IPv6 source router ID of a prefix "Grouping for the IPv6 source router ID of a prefix
advertisement."; advertisement.";
leaf ipv6-source-router-id { leaf ipv6-source-router-id {
type inet:ipv6-address; type inet:ipv6-address;
description "IPv6 Source router ID address."; description
"IPv6 source router ID address.";
} }
} }
grouping prefix-attributes-extension { grouping prefix-attributes-extension {
description "Prefix extended attributes description
as defined in RFC7794."; "Prefix extended attributes as defined in RFC 7794.";
reference
"RFC 7794: IS-IS Prefix Attributes for Extended IPv4 and IPv6
Reachability";
uses prefix-reachability-attributes; uses prefix-reachability-attributes;
uses prefix-ipv4-source-router-id; uses prefix-ipv4-source-router-id;
uses prefix-ipv6-source-router-id; uses prefix-ipv6-source-router-id;
} }
grouping prefix-ipv4-std { grouping prefix-ipv4-std {
description description
"Grouping for attributes of an IPv4 standard prefix "Grouping for attributes of an IPv4 standard prefix
as defined in RFC1195."; as defined in RFC 1195.";
reference
"RFC 1195: Use of OSI IS-IS for routing in TCP/IP and
dual environments";
leaf ip-prefix { leaf ip-prefix {
type inet:ipv4-address; type inet:ipv4-address;
description "IPv4 prefix address"; description
"IPv4 prefix address.";
} }
leaf prefix-len { leaf prefix-len {
type uint8; type uint8;
description "IPv4 prefix length (in bits)"; description
"IPv4 prefix length (in bits).";
} }
leaf i-e { leaf i-e {
type boolean; type boolean;
description description
"Internal or External (I/E) Metric bit value. "Internal or external (I/E) metric bit value.
Set to 'false' to indicate an internal metric."; Set to 'false' to indicate an internal metric.";
} }
container default-metric { container default-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "Default IS-IS metric for IPv4 prefix"; description
"Default IS-IS metric for the IPv4 prefix.";
} }
description "IS-IS default metric container."; description
"IS-IS default metric container.";
} }
container delay-metric { container delay-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS delay metric for IPv4 prefix"; description
"IS-IS delay metric for the IPv4 prefix.";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description description
"Indicates whether IS-IS delay metric is supported."; "Indicates whether the IS-IS delay metric is supported.";
} }
description "IS-IS delay metric container."; description
"IS-IS delay metric container.";
} }
container expense-metric { container expense-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS expense metric for IPv4 prefix"; description
"IS-IS expense metric for the IPv4 prefix.";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description description
"Indicates whether IS-IS expense metric is supported."; "Indicates whether the IS-IS expense metric is supported.";
} }
description "IS-IS expense metric container."; description
"IS-IS expense metric container.";
} }
container error-metric { container error-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description description
"This leaf describes the IS-IS error metric value"; "This leaf describes the IS-IS error metric value.";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description description
"Indicates whether IS-IS error metric is supported."; "Indicates whether the IS-IS error metric is supported.";
} }
description "IS-IS error metric container."; description
"IS-IS error metric container.";
} }
} }
grouping prefix-ipv4-extended { grouping prefix-ipv4-extended {
description description
"Grouping for attributes of an IPv4 extended prefix "Grouping for attributes of an IPv4 extended prefix
as defined in RFC5305."; as defined in RFC 5305.";
reference
"RFC 5305: IS-IS Extensions for Traffic Engineering";
leaf up-down { leaf up-down {
type boolean; type boolean;
description "Value of up/down bit. description
Set to true when the prefix has been advertised down "Value of the up/down bit.
the hierarchy."; Set to 'true' when the prefix has been advertised down
the hierarchy.";
} }
leaf ip-prefix { leaf ip-prefix {
type inet:ipv4-address; type inet:ipv4-address;
description "IPv4 prefix address"; description
"IPv4 prefix address.";
} }
leaf prefix-len { leaf prefix-len {
type uint8; type uint8;
description "IPv4 prefix length (in bits)"; description
"IPv4 prefix length (in bits).";
} }
leaf metric { leaf metric {
type wide-metric; type wide-metric;
description "IS-IS wide metric value"; description
"IS-IS wide metric value.";
} }
leaf-list tag { leaf-list tag {
type uint32; type uint32;
description description
"List of 32-bit tags associated with the IPv4 prefix."; "List of 32-bit tags associated with the IPv4 prefix.";
} }
leaf-list tag64 { leaf-list tag64 {
type uint64; type uint64;
description description
"List of 64-bit tags associated with the IPv4 prefix."; "List of 64-bit tags associated with the IPv4 prefix.";
} }
uses prefix-attributes-extension; uses prefix-attributes-extension;
} }
grouping prefix-ipv6-extended { grouping prefix-ipv6-extended {
description "Grouping for attributes of an IPv6 prefix description
as defined in RFC5308."; "Grouping for attributes of an IPv6 prefix
as defined in RFC 5308.";
reference
"RFC 5308: Routing IPv6 with IS-IS";
leaf up-down { leaf up-down {
type boolean; type boolean;
description "Value of up/down bit. description
Set to true when the prefix has been advertised down "Value of the up/down bit.
the hierarchy."; Set to 'true' when the prefix has been advertised down
the hierarchy.";
} }
leaf ip-prefix { leaf ip-prefix {
type inet:ipv6-address; type inet:ipv6-address;
description "IPv6 prefix address"; description
"IPv6 prefix address.";
} }
leaf prefix-len { leaf prefix-len {
type uint8; type uint8;
description "IPv6 prefix length (in bits)"; description
"IPv6 prefix length (in bits).";
} }
leaf metric { leaf metric {
type wide-metric; type wide-metric;
description "IS-IS wide metric value"; description
"IS-IS wide metric value.";
} }
leaf-list tag { leaf-list tag {
type uint32; type uint32;
description description
"List of 32-bit tags associated with the IPv4 prefix."; "List of 32-bit tags associated with the IPv6 prefix.";
} }
leaf-list tag64 { leaf-list tag64 {
type uint64; type uint64;
description description
"List of 64-bit tags associated with the IPv4 prefix."; "List of 64-bit tags associated with the IPv6 prefix.";
} }
uses prefix-attributes-extension; uses prefix-attributes-extension;
} }
/* TLVs and sub-TLVs for neighbors */ /* TLVs and sub-TLVs for neighbors */
grouping neighbor-link-attributes { grouping neighbor-link-attributes {
description description
"Grouping for link attributes as defined "Grouping for link attributes as defined
in RFC5029"; in RFC 5029.";
reference
"RFC 5029: Definition of an IS-IS Link Attribute Sub-TLV";
leaf link-attributes-flags { leaf link-attributes-flags {
type uint16; type uint16;
description description
"Flags for the link attributes"; "Flags for the link attributes.";
} }
} }
grouping neighbor-gmpls-extensions { grouping neighbor-gmpls-extensions {
description description
"Grouping for GMPLS attributes of a neighbor as defined "Grouping for GMPLS attributes of a neighbor as defined
in RFC5307"; in RFC 5307.";
reference
"RFC 5307: IS-IS Extensions in Support of Generalized
Multi-Protocol Label Switching (GMPLS)";
leaf link-local-id { leaf link-local-id {
type uint32; type uint32;
description description
"Local identifier of the link."; "Local identifier of the link.";
} }
leaf remote-local-id { leaf remote-local-id {
type uint32; type uint32;
description description
"Remote identifier of the link."; "Remote identifier of the link.";
} }
leaf protection-capability { leaf protection-capability {
type uint8; type uint8;
description description
"Describes the protection capabilities "Describes the protection capabilities
of the link. This is the value of the of the link. This is the value of the
first octet of the sub-TLV type 20 value."; first octet of the sub-TLV type 20 value.";
} }
container interface-switching-capability { container interface-switching-capability {
description description
"Interface switching capabilities of the link."; "Interface switching capabilities of the link.";
leaf switching-capability { leaf switching-capability {
type uint8; type uint8;
description description
"Switching capability of the link."; "Switching capability of the link.";
} }
leaf encoding { leaf encoding {
type uint8; type uint8;
description description
"Type of encoding of the LSP being used."; "Type of encoding of the LSP being used.";
} }
container max-lsp-bandwidths { container max-lsp-bandwidths {
description "Per-priority max LSP bandwidths."; description
"Per-priority maximum LSP bandwidths.";
list max-lsp-bandwidth { list max-lsp-bandwidth {
leaf priority { leaf priority {
type uint8 { type uint8 {
range "0 .. 7"; range "0 .. 7";
} }
description "Priority from 0 to 7."; description
"Priority from 0 to 7.";
} }
leaf bandwidth { leaf bandwidth {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
description "max LSP bandwidth."; description
"Maximum LSP bandwidth.";
} }
description description
"List of max LSP bandwidths for different "List of maximum LSP bandwidths for different
priorities."; priorities.";
} }
} }
container tdm-specific { container tdm-specific {
when "../switching-capability = 100"; when "../switching-capability = 100";
description description
"Switching Capability-specific information applicable "Switching-capability-specific information applicable
when switching type is TDM."; when the switching type is Time-Division Multiplexing
(TDM).";
leaf minimum-lsp-bandwidth { leaf minimum-lsp-bandwidth {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
description "minimum LSP bandwidth."; description
"Minimum LSP bandwidth.";
} }
leaf indication { leaf indication {
type uint8; type uint8;
description description
"The indication whether the interface supports Standard "Indicates whether the interface supports Standard
or Arbitrary SONET/SDH."; or Arbitrary SONET/SDH (Synchronous Optical Network /
Synchronous Digital Hierarchy).";
} }
} }
container psc-specific { container psc-specific {
when "../switching-capability >= 1 and when "../switching-capability >= 1 and
../switching-capability <= 4"; ../switching-capability <= 4";
description description
"Switching Capability-specific information applicable "Switching-capability-specific information applicable
when switching type is PSC1,PSC2,PSC3 or PSC4."; when the switching type is PSC1, PSC2, PSC3, or PSC4
('PSC' stands for 'Packet Switching Capability').";
leaf minimum-lsp-bandwidth { leaf minimum-lsp-bandwidth {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
description "minimum LSP bandwidth."; description
"Minimum LSP bandwidth.";
} }
leaf mtu { leaf mtu {
type uint16; type uint16;
units bytes; units bytes;
description description
"Interface MTU"; "Interface MTU.";
} }
} }
} }
} }
grouping neighbor-extended-te-extensions { grouping neighbor-extended-te-extensions {
description description
"Grouping for TE attributes of a neighbor as defined "Grouping for TE attributes of a neighbor as defined
in RFC8570"; in RFC 8570.";
reference
"RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
container unidirectional-link-delay { container unidirectional-link-delay {
description description
"Container for the average delay "Container for the average delay
from the local neighbor to the remote one."; from the local neighbor to the remote neighbor.";
container flags { container flags {
leaf-list unidirectional-link-delay-subtlv-flags { leaf-list unidirectional-link-delay-subtlv-flags {
type identityref { type identityref {
base unidirectional-link-delay-subtlv-flag; base unidirectional-link-delay-subtlv-flag;
} }
description description
"This list contains identities for the bits "This list contains identities for the bits that
which are set."; are set.";
} }
description description
"unidirectional-link-delay subTLV flags."; "Unidirectional Link Delay sub-TLV flags.";
} }
leaf value { leaf value {
type uint32; type uint32;
units usec; units usec;
description description
"Delay value expressed in microseconds."; "Delay value expressed in microseconds.";
} }
} }
container min-max-unidirectional-link-delay { container min-max-unidirectional-link-delay {
description description
"Container for the min and max delay "Container for the minimum and maximum delay
from the local neighbor to the remote one."; from the local neighbor to the remote neighbor.";
container flags { container flags {
leaf-list min-max-unidirectional-link-delay-subtlv-flags { leaf-list min-max-unidirectional-link-delay-subtlv-flags {
type identityref { type identityref {
base min-max-unidirectional-link-delay-subtlv-flag; base min-max-unidirectional-link-delay-subtlv-flag;
} }
description description
"This list contains identities for the bits which are "This list contains identities for the bits that
set."; are set.";
} }
description description
"min-max-unidirectional-link-delay subTLV flags."; "Min/Max Unidirectional Link Delay sub-TLV flags.";
} }
leaf min-value { leaf min-value {
type uint32; type uint32;
units usec; units usec;
description description
"Minimum delay value expressed in microseconds."; "Minimum delay value expressed in microseconds.";
} }
leaf max-value { leaf max-value {
type uint32; type uint32;
units usec; units usec;
description description
"Maximum delay value expressed in microseconds."; "Maximum delay value expressed in microseconds.";
} }
} }
container unidirectional-link-delay-variation { container unidirectional-link-delay-variation {
description description
"Container for the average delay variation "Container for the average delay variation
from the local neighbor to the remote one."; from the local neighbor to the remote neighbor.";
leaf value { leaf value {
type uint32; type uint32;
units usec; units usec;
description description
"Delay variation value expressed in microseconds."; "Delay variation value expressed in microseconds.";
} }
} }
container unidirectional-link-loss { container unidirectional-link-loss {
description description
"Container for the packet loss "Container for packet loss from the local neighbor to the
from the local neighbor to the remote one."; remote neighbor.";
container flags { container flags {
leaf-list unidirectional-link-loss-subtlv-flags { leaf-list unidirectional-link-loss-subtlv-flags {
type identityref { type identityref {
base unidirectional-link-loss-subtlv-flag; base unidirectional-link-loss-subtlv-flag;
} }
description description
"This list contains identities for the bits which are "This list contains identities for the bits that
set."; are set.";
} }
description description
"unidirectional-link-loss subTLV flags."; "Unidirectional Link Loss sub-TLV flags.";
} }
leaf value { leaf value {
type uint32; type uint32;
units percent; units percent;
description description
"Link packet loss expressed as a percentage "Link packet loss expressed as a percentage of
of the total traffic sent over a configurable interval."; the total traffic sent over a configurable interval.";
} }
} }
container unidirectional-link-residual-bandwidth { container unidirectional-link-residual-bandwidth {
description description
"Container for the residual bandwidth "Container for the residual bandwidth
from the local neighbor to the remote one."; from the local neighbor to the remote neighbor.";
leaf value { leaf value {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
units Bps; units Bps;
description description
"Residual bandwidth."; "Residual bandwidth.";
} }
} }
container unidirectional-link-available-bandwidth { container unidirectional-link-available-bandwidth {
description description
"Container for the available bandwidth "Container for the available bandwidth
from the local neighbor to the remote one."; from the local neighbor to the remote neighbor.";
leaf value { leaf value {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
units Bps; units Bps;
description description
"Available bandwidth."; "Available bandwidth.";
} }
} }
container unidirectional-link-utilized-bandwidth { container unidirectional-link-utilized-bandwidth {
description description
"Container for the utilized bandwidth "Container for the utilized bandwidth
from the local neighbor to the remote one."; from the local neighbor to the remote neighbor.";
leaf value { leaf value {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
units Bps; units Bps;
description description
"Utilized bandwidth."; "Utilized bandwidth.";
} }
} }
} }
grouping neighbor-te-extensions { grouping neighbor-te-extensions {
description description
"Grouping for TE attributes of a neighbor as defined "Grouping for TE attributes of a neighbor as defined
in RFC5305"; in RFC 5305.";
reference
"RFC 5305: IS-IS Extensions for Traffic Engineering";
leaf admin-group { leaf admin-group {
type uint32; type uint32;
description description
"Administrative group/Resource Class/Color."; "Administrative Group / Resource Class/Color.";
} }
container local-if-ipv4-addrs { container local-if-ipv4-addrs {
description "All local interface IPv4 addresses."; description
"All local interface IPv4 addresses.";
leaf-list local-if-ipv4-addr { leaf-list local-if-ipv4-addr {
type inet:ipv4-address; type inet:ipv4-address;
description description
"List of local interface IPv4 addresses."; "List of local interface IPv4 addresses.";
} }
} }
container remote-if-ipv4-addrs { container remote-if-ipv4-addrs {
description "All remote interface IPv4 addresses."; description
"All remote interface IPv4 addresses.";
leaf-list remote-if-ipv4-addr { leaf-list remote-if-ipv4-addr {
type inet:ipv4-address; type inet:ipv4-address;
description description
"List of remote interface IPv4 addresses."; "List of remote interface IPv4 addresses.";
} }
} }
leaf te-metric { leaf te-metric {
type uint32; type uint32;
description "TE metric."; description
"TE metric.";
} }
leaf max-bandwidth { leaf max-bandwidth {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
description "Maximum bandwidth."; description
"Maximum bandwidth.";
} }
leaf max-reservable-bandwidth { leaf max-reservable-bandwidth {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
description "Maximum reservable bandwidth."; description
"Maximum reservable bandwidth.";
} }
container unreserved-bandwidths { container unreserved-bandwidths {
description "All unreserved bandwidths."; description
"All unreserved bandwidths.";
list unreserved-bandwidth { list unreserved-bandwidth {
leaf priority { leaf priority {
type uint8 { type uint8 {
range "0 .. 7"; range "0 .. 7";
} }
description "Priority from 0 to 7."; description
"Priority from 0 to 7.";
} }
leaf unreserved-bandwidth { leaf unreserved-bandwidth {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
description "Unreserved bandwidth."; description
"Unreserved bandwidth.";
} }
description description
"List of unreserved bandwidths for different "List of unreserved bandwidths for different
priorities."; priorities.";
} }
} }
} }
grouping neighbor-extended { grouping neighbor-extended {
description description
"Grouping for attributes of an IS-IS extended neighbor."; "Grouping for attributes of an IS-IS extended neighbor.";
leaf neighbor-id { leaf neighbor-id {
type extended-system-id; type extended-system-id;
description "system-id of the extended neighbor."; description
"System ID of the extended neighbor.";
} }
container instances { container instances {
description "List of all adjacencies between the local description
system and the neighbor system-id."; "List of all adjacencies between the local
system and the neighbor system ID.";
list instance { list instance {
key id; key id;
leaf id { leaf id {
type uint32; type uint32;
description "Unique identifier of an instance of a description
particular neighbor."; "Unique identifier of an instance of a
particular neighbor.";
} }
leaf metric { leaf metric {
type wide-metric; type wide-metric;
description "IS-IS wide metric for extended neighbor"; description
"IS-IS wide metric for the extended neighbor.";
} }
uses neighbor-gmpls-extensions; uses neighbor-gmpls-extensions;
uses neighbor-te-extensions; uses neighbor-te-extensions;
uses neighbor-extended-te-extensions; uses neighbor-extended-te-extensions;
uses neighbor-link-attributes; uses neighbor-link-attributes;
uses unknown-tlvs; uses unknown-tlvs;
description "Instance of a particular adjacency."; description
"Instance of a particular adjacency.";
} }
} }
} }
grouping neighbor { grouping neighbor {
description "IS-IS standard neighbor grouping."; description
"IS-IS standard neighbor grouping.";
leaf neighbor-id { leaf neighbor-id {
type extended-system-id; type extended-system-id;
description "IS-IS neighbor system-id"; description
"IS-IS neighbor system ID.";
} }
container instances { container instances {
description "List of all adjacencies between the local description
system and the neighbor system-id."; "List of all adjacencies between the local
system and the neighbor system ID.";
list instance { list instance {
key id; key id;
leaf id { leaf id {
type uint32; type uint32;
description "Unique identifier of an instance of a description
particular neighbor."; "Unique identifier of an instance of a
particular neighbor.";
} }
leaf i-e { leaf i-e {
type boolean; type boolean;
description description
"Internal or External (I/E) Metric bit value. "Internal or external (I/E) metric bit value.
Set to 'false' to indicate an internal metric."; Set to 'false' to indicate an internal metric.";
} }
container default-metric { container default-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS default metric value"; description
"IS-IS default metric value.";
} }
description "IS-IS default metric container"; description
"IS-IS default metric container.";
} }
container delay-metric { container delay-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS delay metric value"; description
"IS-IS delay metric value.";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description "IS-IS delay metric supported"; description
"IS-IS delay metric supported.";
} }
description "IS-IS delay metric container"; description
"IS-IS delay metric container.";
} }
container expense-metric { container expense-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS expense metric value"; description
"IS-IS expense metric value.";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description "IS-IS expense metric supported"; description
"IS-IS expense metric supported.";
} }
description "IS-IS expense metric container"; description
"IS-IS expense metric container.";
} }
container error-metric { container error-metric {
leaf metric { leaf metric {
type std-metric; type std-metric;
description "IS-IS error metric value"; description
"IS-IS error metric value.";
} }
leaf supported { leaf supported {
type boolean; type boolean;
default "false"; default "false";
description "IS-IS error metric supported"; description
"IS-IS error metric supported.";
} }
description "IS-IS error metric container"; description
"IS-IS error metric container.";
} }
description "Instance of a particular adjacency description
as defined in ISO10589."; "Instance of a particular adjacency as defined in
ISO 10589.";
reference
"ISO 10589: 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)";
} }
} }
} }
/* Top-level TLVs */ /* Top-level TLVs */
grouping tlv132-ipv4-addresses { grouping tlv132-ipv4-addresses {
leaf-list ipv4-addresses { leaf-list ipv4-addresses {
type inet:ipv4-address; type inet:ipv4-address;
description description
"List of IPv4 addresses of the IS-IS node - IS-IS "List of IPv4 addresses of the IS-IS node. The IS-IS
reference is TLV 132."; reference is TLV 132.";
} }
description "Grouping for TLV132."; description
"Grouping for TLV 132.";
} }
grouping tlv232-ipv6-addresses { grouping tlv232-ipv6-addresses {
leaf-list ipv6-addresses { leaf-list ipv6-addresses {
type inet:ipv6-address; type inet:ipv6-address;
description description
"List of IPv6 addresses of the IS-IS node - IS-IS "List of IPv6 addresses of the IS-IS node. The IS-IS
reference is TLV 232."; reference is TLV 232.";
} }
description "Grouping for TLV232."; description
"Grouping for TLV 232.";
} }
grouping tlv134-ipv4-te-rid { grouping tlv134-ipv4-te-rid {
leaf ipv4-te-routerid { leaf ipv4-te-routerid {
type inet:ipv4-address; type inet:ipv4-address;
description description
"IPv4 Traffic Engineering router ID of the IS-IS node - "IPv4 Traffic Engineering router ID of the IS-IS node.
IS-IS reference is TLV 134."; The IS-IS reference is TLV 134.";
} }
description "Grouping for TLV134."; description
"Grouping for TLV 134.";
} }
grouping tlv140-ipv6-te-rid { grouping tlv140-ipv6-te-rid {
leaf ipv6-te-routerid { leaf ipv6-te-routerid {
type inet:ipv6-address; type inet:ipv6-address;
description description
"IPv6 Traffic Engineering router ID of the IS-IS node - "IPv6 Traffic Engineering router ID of the IS-IS node.
IS-IS reference is TLV 140."; The IS-IS reference is TLV 140.";
} }
description "Grouping for TLV140."; description
"Grouping for TLV 140.";
} }
grouping tlv129-protocols { grouping tlv129-protocols {
leaf-list protocol-supported { leaf-list protocol-supported {
type uint8; type uint8;
description description
"List of supported protocols of the IS-IS node - "List of supported protocols of the IS-IS node.
IS-IS reference is TLV 129."; The IS-IS reference is TLV 129.";
} }
description "Grouping for TLV129."; description
"Grouping for TLV 129.";
} }
grouping tlv137-hostname { grouping tlv137-hostname {
leaf dynamic-hostname { leaf dynamic-hostname {
type string; type string;
description description
"Host Name of the IS-IS node - IS-IS reference "Hostname of the IS-IS node. The IS-IS reference
is TLV 137."; is TLV 137.";
} }
description "Grouping for TLV137."; description
"Grouping for TLV 137.";
} }
grouping tlv10-authentication { grouping tlv10-authentication {
container authentication { container authentication {
leaf authentication-type { leaf authentication-type {
type identityref { type identityref {
base key-chain:crypto-algorithm; base key-chain:crypto-algorithm;
} }
description description
"Authentication type to be used with IS-IS node."; "Authentication type to be used with an IS-IS node.";
} }
leaf authentication-key { leaf authentication-key {
type string; type string;
description description
"Authentication key to be used. For security reasons, "Authentication key to be used. For security reasons,
the authentication key MUST NOT be presented in the authentication key MUST NOT be presented in
a clear text format in response to any request a cleartext format in response to any request
(e.g., via get, get-config)."; (e.g., via get or get-config).";
} }
description description
"IS-IS node authentication information container - "IS-IS node authentication information container. The
IS-IS reference is TLV 10."; IS-IS reference is TLV 10.";
} }
description "Grouping for TLV10."; description
"Grouping for TLV 10.";
} }
grouping tlv229-mt { grouping tlv229-mt {
container mt-entries { container mt-entries {
list topology { list topology {
description description
"List of topologies supported"; "List of topologies supported.";
leaf mt-id { leaf mt-id {
type uint16 { type uint16 {
range "0 .. 4095"; range "0 .. 4095";
} }
description description
"Multi-Topology identifier of topology."; "Multi-Topology (MT) identifier of the topology.";
} }
container attributes { container attributes {
leaf-list flags { leaf-list flags {
type identityref { type identityref {
base tlv229-flag; base tlv229-flag;
} }
description description
"This list contains identities for the bits which are "This list contains identities for the bits that
set."; are set.";
} }
description description
"TLV 229 flags."; "TLV 229 flags.";
} }
} }
description description
"IS-IS node topology information container - "IS-IS node topology information container. The
IS-IS reference is TLV 229."; IS-IS reference is TLV 229.";
} }
description "Grouping for TLV229."; description
"Grouping for TLV 229.";
} }
grouping tlv242-router-capabilities { grouping tlv242-router-capabilities {
container router-capabilities { container router-capabilities {
list router-capability { list router-capability {
container flags { container flags {
leaf-list router-capability-flags { leaf-list router-capability-flags {
type identityref { type identityref {
base router-capability-flag; base router-capability-flag;
} }
description description
"This list contains identities for the bits which are "This list contains identities for the bits that
set."; are set.";
} }
description description
"Router capability flags."; "Router Capability flags.";
} }
container node-tags { container node-tags {
if-feature node-tag; if-feature node-tag;
list node-tag { list node-tag {
leaf tag { leaf tag {
type uint32; type uint32;
description "Node tag value."; description
"Node tag value.";
} }
description "List of tags."; description
"List of tags.";
} }
description "Container for node admin tags"; description
"Container for node administrative tags.";
} }
uses unknown-tlvs; uses unknown-tlvs;
description description
"IS-IS node capabilities. This list element may "IS-IS node capabilities. This list element may
be extended with detailed information - IS-IS be extended with detailed information. The IS-IS
reference is TLV 242."; reference is TLV 242.";
} }
description "List of router capability TLVs."; description
"List of Router Capability TLVs.";
} }
description "Grouping for TLV242."; description
"Grouping for TLV 242.";
} }
grouping tlv138-srlg { grouping tlv138-srlg {
description description
"Grouping for TLV138."; "Grouping for TLV 138.";
container links-srlgs { container links-srlgs {
list links { list links {
leaf neighbor-id { leaf neighbor-id {
type extended-system-id; type extended-system-id;
description "system-id of the extended neighbor."; description
"System ID of the extended neighbor.";
} }
leaf flags { leaf flags {
type uint8; type uint8;
description description
"Flags associated with the link."; "Flags associated with the link.";
} }
leaf link-local-id { leaf link-local-id {
type union { type union {
type inet:ip-address; type inet:ip-address;
type uint32; type uint32;
} }
description description
"Local identifier of the link. "Local identifier of the link.
It could be an IPv4 address or a local identifier."; It could be an IPv4 address or a local identifier.";
} }
leaf link-remote-id { leaf link-remote-id {
type union { type union {
type inet:ip-address; type inet:ip-address;
type uint32; type uint32;
} }
description description
"Remote identifier of the link. "Remote identifier of the link.
It could be an IPv4 address or a remotely learned It could be an IPv4 address or a remotely learned
identifier."; identifier.";
} }
container srlgs { container srlgs {
description "List of SRLGs."; description
"List of SRLGs.";
leaf-list srlg { leaf-list srlg {
type uint32; type uint32;
description description
"SRLG value of the link."; "SRLG value of the link.";
} }
} }
description description
"SRLG attribute of a link."; "SRLG attribute of a link.";
} }
description description
"List of links with SRLGs"; "List of links with SRLGs.";
} }
} }
/* Grouping for LSDB description */ /* Grouping for LSDB descriptions */
grouping lsp-entry { grouping lsp-entry {
description "IS-IS LSP database entry grouping"; description
"IS-IS LSP database entry grouping.";
leaf decoded-completed { leaf decoded-completed {
type boolean; type boolean;
description "IS-IS LSP body fully decoded."; description
"The IS-IS LSP body has been fully decoded.";
} }
leaf raw-data { leaf raw-data {
type yang:hex-string; type yang:hex-string;
description description
"The hexadecimal representation of the complete LSP in "The hexadecimal representation of the complete LSP
network-byte order (NBO) as received or originated."; as received or originated, in network byte order.";
} }
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID of the LSP"; description
"LSP ID of the LSP.";
} }
leaf checksum { leaf checksum {
type uint16; type uint16;
description "LSP checksum"; description
"LSP checksum.";
} }
leaf remaining-lifetime { leaf remaining-lifetime {
type uint16; type uint16;
units "seconds"; units "seconds";
description description
"Remaining lifetime (in seconds) until LSP expiration."; "Remaining lifetime (in seconds) until LSP expiration.";
} }
leaf sequence { leaf sequence {
type uint32; type uint32;
description description
"This leaf describes the sequence number of the LSP."; "This leaf describes the sequence number of the LSP.";
} }
container attributes { container attributes {
leaf-list lsp-flags { leaf-list lsp-flags {
type identityref { type identityref {
base lsp-flag; base lsp-flag;
} }
description description
"This list contains identities for the bits which are "This list contains identities for the bits that
set."; are set.";
} }
description "LSP attributes."; description
"LSP attributes.";
} }
uses tlv132-ipv4-addresses; uses tlv132-ipv4-addresses;
uses tlv232-ipv6-addresses; uses tlv232-ipv6-addresses;
uses tlv134-ipv4-te-rid; uses tlv134-ipv4-te-rid;
uses tlv140-ipv6-te-rid; uses tlv140-ipv6-te-rid;
uses tlv129-protocols; uses tlv129-protocols;
uses tlv137-hostname; uses tlv137-hostname;
uses tlv10-authentication; uses tlv10-authentication;
uses tlv229-mt; uses tlv229-mt;
uses tlv242-router-capabilities; uses tlv242-router-capabilities;
uses tlv138-srlg; uses tlv138-srlg;
uses unknown-tlvs; uses unknown-tlvs;
container is-neighbor { container is-neighbor {
list neighbor { list neighbor {
key neighbor-id; key neighbor-id;
uses neighbor; uses neighbor;
description "List of neighbors."; description
"List of neighbors.";
} }
description description
"Standard IS neighbors container - IS-IS reference is "Standard IS neighbors container. The IS-IS reference is
TLV 2."; TLV 2.";
} }
container extended-is-neighbor { container extended-is-neighbor {
list neighbor { list neighbor {
key neighbor-id; key neighbor-id;
uses neighbor-extended; uses neighbor-extended;
description description
"List of extended IS neighbors"; "List of extended IS neighbors.";
} }
description description
"Standard IS extended neighbors container - IS-IS "Standard IS extended neighbors container. The IS-IS
reference is TLV 22"; reference is TLV 22.";
} }
container ipv4-internal-reachability { container ipv4-internal-reachability {
list prefixes { list prefixes {
uses prefix-ipv4-std; uses prefix-ipv4-std;
description "List of prefixes."; description
"List of prefixes.";
} }
description description
"IPv4 internal reachability information container - IS-IS "IPv4 internal reachability information container.
reference is TLV 128."; The IS-IS reference is TLV 128.";
} }
container ipv4-external-reachability { container ipv4-external-reachability {
list prefixes { list prefixes {
uses prefix-ipv4-std; uses prefix-ipv4-std;
description "List of prefixes."; description
"List of prefixes.";
} }
description description
"IPv4 external reachability information container - "IPv4 external reachability information container. The
IS-IS reference is TLV 130."; IS-IS reference is TLV 130.";
} }
container extended-ipv4-reachability { container extended-ipv4-reachability {
list prefixes { list prefixes {
uses prefix-ipv4-extended; uses prefix-ipv4-extended;
uses unknown-tlvs; uses unknown-tlvs;
description "List of prefixes."; description
"List of prefixes.";
} }
description description
"IPv4 extended reachability information container - "IPv4 extended reachability information container. The
IS-IS reference is TLV 135."; IS-IS reference is TLV 135.";
} }
container mt-is-neighbor { container mt-is-neighbor {
list neighbor { list neighbor {
leaf mt-id { leaf mt-id {
type uint16 { type uint16 {
range "0 .. 4095"; range "0 .. 4095";
} }
description "Multi-topology (MT) identifier"; description
"Multi-Topology (MT) identifier.";
} }
uses neighbor-extended; uses neighbor-extended;
description "List of neighbors."; description
"List of neighbors.";
} }
description description
"IS-IS multi-topology neighbor container - IS-IS "IS-IS MT neighbor container. The IS-IS reference is
reference is TLV 223."; TLV 223.";
} }
container mt-extended-ipv4-reachability { container mt-extended-ipv4-reachability {
list prefixes { list prefixes {
leaf mt-id { leaf mt-id {
type uint16 { type uint16 {
range "0 .. 4095"; range "0 .. 4095";
} }
description "Multi-topology (MT) identifier"; description
"MT identifier.";
} }
uses prefix-ipv4-extended; uses prefix-ipv4-extended;
uses unknown-tlvs; uses unknown-tlvs;
description "List of extended prefixes."; description
"List of extended prefixes.";
} }
description description
"IPv4 multi-topology (MT) extended reachability "IPv4 MT extended reachability information container.
information container - IS-IS reference is TLV 235."; The IS-IS reference is TLV 235.";
reference
"RFC 5120: M-ISIS: Multi Topology (MT) Routing in
Intermediate System to Intermediate Systems (IS-ISs)";
} }
container mt-ipv6-reachability { container mt-ipv6-reachability {
list prefixes { list prefixes {
leaf MT-ID { leaf MT-ID {
type uint16 { type uint16 {
range "0 .. 4095"; range "0 .. 4095";
} }
description "Multi-topology (MT) identifier"; description
"MT identifier.";
} }
uses prefix-ipv6-extended; uses prefix-ipv6-extended;
uses unknown-tlvs; uses unknown-tlvs;
description "List of IPv6 extended prefixes."; description
"List of IPv6 extended prefixes.";
} }
description description
"IPv6 multi-topology (MT) extended reachability "IPv6 MT extended reachability information container.
information container - IS-IS reference is TLV 237."; The IS-IS reference is TLV 237.";
reference
"RFC 5120: M-ISIS: Multi Topology (MT) Routing in
Intermediate System to Intermediate Systems (IS-ISs)";
} }
container ipv6-reachability { container ipv6-reachability {
list prefixes { list prefixes {
uses prefix-ipv6-extended; uses prefix-ipv6-extended;
uses unknown-tlvs; uses unknown-tlvs;
description "List of IPv6 prefixes."; description
"List of IPv6 prefixes.";
} }
description description
"IPv6 reachability information container - IS-IS "IPv6 reachability information container. The IS-IS
reference is TLV 236."; reference is TLV 236.";
} }
} }
grouping lsdb { grouping lsdb {
description "Link State Database (LSDB) grouping"; description
"Link State Database (LSDB) grouping.";
container database { container database {
config false; config false;
list levels { list levels {
key level; key level;
leaf level { leaf level {
type level-number; type level-number;
description "LSDB level number (1 or 2)"; description
"LSDB level number (1 or 2).";
} }
list lsp { list lsp {
key lsp-id; key lsp-id;
uses lsp-entry; uses lsp-entry;
description "List of LSPs in LSDB"; description
"List of LSPs in the LSDB.";
} }
description "List of LSPs for the LSDB level container"; description
"List of LSPs for the LSDB-level container.";
} }
description "IS-IS Link State database container"; description
"IS-IS LSDB container.";
} }
} }
/* Augmentations */ /* Augmentations */
augment "/rt:routing/" augment "/rt:routing/"
+"rt:ribs/rt:rib/rt:routes/rt:route" { +"rt:ribs/rt:rib/rt:routes/rt:route" {
when "rt:source-protocol = 'isis:isis'" { when "derived-from-or-self(rt:source-protocol, 'isis:isis')" {
description "IS-IS-specific route attributes."; description
"IS-IS-specific route attributes.";
} }
uses route-content; uses route-content;
description description
"This augments route object in RIB with IS-IS-specific "This augments the route object in the Routing Information
attributes."; Base (RIB) with IS-IS-specific attributes.";
} }
augment "/if:interfaces/if:interface" { augment "/if:interfaces/if:interface" {
leaf clns-mtu { leaf clns-mtu {
if-feature osi-interface; if-feature osi-interface;
type uint16; type uint16;
description "CLNS MTU of the interface"; description
"Connectionless-mode Network Service (CLNS) MTU of the
interface.";
} }
description "ISO specific interface parameters."; description
"ISO-specific interface parameters.";
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+"rt:control-plane-protocol" { +"rt:control-plane-protocol" {
when "rt:type = 'isis:isis'" { when "derived-from-or-self(rt:type, 'isis:isis')" {
description description
"This augment is only valid when routing protocol "This augmentation is only valid when the routing protocol
instance type is 'isis'"; instance type is 'isis'.";
} }
description description
"This augments a routing protocol instance with IS-IS "This augments a routing protocol instance with IS-IS-specific
specific parameters."; parameters.";
container isis { container isis {
must "count(area-address) > 0" { must "count(area-address) > 0" {
error-message error-message
"At least one area-address must be configured."; "At least one area address must be configured.";
description description
"Enforce configuration of at least one area."; "Enforces the configuration of at least one area.";
} }
uses instance-config; uses instance-config;
uses instance-state; uses instance-state;
container topologies { container topologies {
if-feature multi-topology; if-feature multi-topology;
list topology { list topology {
key "name"; key "name";
leaf enable { leaf enable {
type boolean; type boolean;
description "Topology enable configuration"; description
"Enables the topology configuration.";
} }
leaf name { leaf name {
type leafref { type leafref {
path "../../../../../../rt:ribs/rt:rib/rt:name"; path "../../../../../../rt:ribs/rt:rib/rt:name";
} }
description description
"Routing Information Base (RIB) corresponding "RIB corresponding to the topology.";
to topology.";
} }
uses multi-topology-config; uses multi-topology-config;
description "List of topologies"; description
"List of topologies.";
} }
description "Multi-topology container"; description
"MT container.";
} }
container interfaces { container interfaces {
list interface { list interface {
key "name"; key "name";
leaf name { leaf name {
type if:interface-ref; type if:interface-ref;
description description
"Reference to the interface within "Reference to the interface within
the routing-instance."; the routing instance.";
} }
uses interface-config; uses interface-config;
uses interface-state; uses interface-state;
container topologies { container topologies {
if-feature multi-topology; if-feature multi-topology;
list topology { list topology {
key name; key name;
leaf name { leaf name {
type leafref { type leafref {
path "../../../../../../../../"+ path "../../../../../../../../"+
"rt:ribs/rt:rib/rt:name"; "rt:ribs/rt:rib/rt:name";
} }
description description
"Routing Information Base (RIB) corresponding "RIB corresponding to the topology.";
to topology.";
} }
uses multi-topology-interface-config; uses multi-topology-interface-config;
description "List of interface topologies"; description
"List of interface topologies.";
} }
description "Multi-topology container"; description
"MT container.";
} }
description "List of IS-IS interfaces."; description
"List of IS-IS interfaces.";
} }
description description
"IS-IS interface specific configuration container"; "Configuration container specific to IS-IS interfaces.";
} }
description description
"IS-IS configuration/state top-level container"; "IS-IS configuration/state top-level container.";
} }
} }
/* RPC methods */ /* RPC methods */
rpc clear-adjacency { rpc clear-adjacency {
description description
"This RPC request clears a particular set of IS-IS "This RPC request clears a particular set of IS-IS
adjacencies. If the operation fails due to an internal adjacencies. If the operation fails for an internal
reason, then the error-tag and error-app-tag should be reason, then the 'error-tag' and 'error-app-tag' should be
set indicating the reason for the failure."; set indicating the reason for the failure.";
reference
"RFC 6241: Network Configuration Protocol (NETCONF)";
input { input {
leaf routing-protocol-instance-name { leaf routing-protocol-instance-name {
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols/" path "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:name"; + "rt:control-plane-protocol/rt:name";
} }
mandatory "true"; mandatory "true";
description description
"Name of the IS-IS protocol instance whose IS-IS "Name of the IS-IS protocol instance whose IS-IS
adjacency is being cleared. adjacency is being cleared.
If the corresponding IS-IS instance doesn't exist, If the corresponding IS-IS instance doesn't exist,
then the operation will fail with an error-tag of then the operation will fail with an 'error-tag' of
'data-missing' and an error-app-tag of 'data-missing' and an 'error-app-tag' of
'routing-protocol-instance-not-found'."; 'routing-protocol-instance-not-found'.";
} }
leaf level { leaf level {
type level; type level;
description description
"IS-IS level of the adjacency to be cleared. If the "IS-IS level of the adjacency to be cleared. If the
IS-IS level is level-1-2, both level 1 and level 2 IS-IS level is 'level-all', level-1 and level-2
adjacencies would be cleared. adjacencies would both be cleared.
If the value provided is different from the one If the value provided is different from the value
authorized in the enum type, then the operation authorized in the enum type, then the operation
SHALL fail with an error-tag of 'data-missing' and SHALL fail with an 'error-tag' of 'data-missing' and
an error-app-tag of 'bad-isis-level'."; an 'error-app-tag' of 'bad-isis-level'.";
} }
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
description description
"IS-IS interface name. "IS-IS interface name.
If the corresponding IS-IS interface doesn't exist, If the corresponding IS-IS interface doesn't exist,
then the operation SHALL fail with an error-tag of then the operation SHALL fail with an 'error-tag' of
'data-missing' and an error-app-tag of 'data-missing' and an 'error-app-tag' of
'isis-interface-not-found'."; 'isis-interface-not-found'.";
} }
} }
} }
rpc clear-database { rpc clear-database {
description description
"This RPC request clears a particular IS-IS database. If "This RPC request clears a particular IS-IS database. If
the operation fails for an IS-IS internal reason, then the operation fails for an IS-IS internal reason, then
the error-tag and error-app-tag should be set the 'error-tag' and 'error-app-tag' should be set
indicating the reason for the failure."; indicating the reason for the failure.";
input { input {
leaf routing-protocol-instance-name { leaf routing-protocol-instance-name {
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols/" path "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:name"; + "rt:control-plane-protocol/rt:name";
} }
mandatory "true"; mandatory "true";
description description
"Name of the IS-IS protocol instance whose IS-IS "Name of the IS-IS protocol instance whose IS-IS
database(s) is/are being cleared. database or databases are being cleared.
If the corresponding IS-IS instance doesn't exist, If the corresponding IS-IS instance doesn't exist,
then the operation will fail with an error-tag of then the operation will fail with an 'error-tag' of
'data-missing' and an error-app-tag of 'data-missing' and an 'error-app-tag' of
'routing-protocol-instance-not-found'."; 'routing-protocol-instance-not-found'.";
} }
leaf level { leaf level {
type level; type level;
description description
"IS-IS level of the adjacency to be cleared. If the "IS-IS level of the adjacency to be cleared. If the
IS-IS level is level-1-2, both level 1 and level 2 IS-IS level is 'level-all', the databases for both
databases would be cleared. level 1 and level 2 would be cleared.
If the value provided is different from the one If the value provided is different from the value
authorized in the enum type, then the operation authorized in the enum type, then the operation
SHALL fail with an error-tag of 'data-missing' and SHALL fail with an 'error-tag' of 'data-missing' and
an error-app-tag of 'bad-isis-level'."; an 'error-app-tag' of 'bad-isis-level'.";
} }
} }
} }
/* Notifications */ /* Notifications */
notification database-overload { notification database-overload {
uses notification-instance-hdr; uses notification-instance-hdr;
leaf overload { leaf overload {
type enumeration { type enumeration {
enum off { enum off {
description description
"Indicates IS-IS instance has left overload state"; "Indicates that the IS-IS instance has left the
overload state.";
} }
enum on { enum on {
description description
"Indicates IS-IS instance has entered overload state"; "Indicates that the IS-IS instance has entered the
overload state.";
} }
} }
description "New overload state of the IS-IS instance"; description
"New overload state of the IS-IS instance.";
} }
description description
"This notification is sent when an IS-IS instance "This notification is sent when an IS-IS instance
overload state changes."; overload state changes.";
} }
notification lsp-too-large { notification lsp-too-large {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf pdu-size { leaf pdu-size {
type uint32; type uint32;
description "Size of the LSP PDU"; description
"Size of the LSP PDU.";
} }
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID"; description
"LSP ID.";
} }
description description
"This notification is sent when we attempt to propagate "This notification is sent when we attempt to propagate
an LSP that is larger than the dataLinkBlockSize (ISO10589) an LSP that is larger than the dataLinkBlockSize (ISO 10589)
for the circuit. The notification generation must be for the circuit. The generation of the notification must be
throttled with at least 5 seconds between successive throttled with at least 5 seconds between successive
notifications."; notifications.";
reference
"ISO 10589: 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)";
} }
notification if-state-change { notification if-state-change {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf state { leaf state {
type if-state-type; type if-state-type;
description "Interface state."; description
"Interface state.";
} }
description description
"This notification is sent when an interface "This notification is sent when an interface
state change is detected."; state change is detected.";
} }
notification corrupted-lsp-detected { notification corrupted-lsp-detected {
uses notification-instance-hdr; uses notification-instance-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID"; description
"LSP ID.";
} }
description description
"This notification is sent when we find that "This notification is sent when we find that
an LSP that was stored in memory has become an LSP that was stored in memory has become
corrupted."; corrupted.";
} }
notification attempt-to-exceed-max-sequence { notification attempt-to-exceed-max-sequence {
uses notification-instance-hdr; uses notification-instance-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID"; description
"LSP ID.";
} }
description description
"This notification is sent when the system "This notification is sent when the system
wraps the 32-bit sequence counter of an LSP."; wraps the 32-bit sequence counter of an LSP.";
} }
notification id-len-mismatch { notification id-len-mismatch {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf pdu-field-len { leaf pdu-field-len {
type uint8; type uint8;
description "Size of the ID length in the received PDU"; description
"Value for the system ID length in the received PDU.";
} }
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
description description
"This notification is sent when we receive a PDU "This notification is sent when we receive a PDU
with a different value for the system-id length. with a different value for the system ID length.
The notification generation must be throttled The generation of the notification must be throttled
with at least 5 seconds between successive with at least 5 seconds between successive
notifications."; notifications.";
} }
notification max-area-addresses-mismatch { notification max-area-addresses-mismatch {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf max-area-addresses { leaf max-area-addresses {
type uint8; type uint8;
description "Received number of supported areas"; description
"Received number of supported areas.";
} }
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
description description
"This notification is sent when we receive a PDU "This notification is sent when we receive a PDU
with a different value for the Maximum Area Addresses. with a different value for the Maximum Area Addresses.
The notification generation must be throttled The generation of the notification must be throttled
with at least 5 seconds between successive with at least 5 seconds between successive
notifications."; notifications.";
} }
notification own-lsp-purge { notification own-lsp-purge {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID"; description
"LSP ID.";
} }
description description
"This notification is sent when the system receives "This notification is sent when the system receives
a PDU with its own system-id and zero age."; a PDU with its own system ID and zero age.";
} }
notification sequence-number-skipped { notification sequence-number-skipped {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID"; description
"LSP ID.";
} }
description description
"This notification is sent when the system receives a "This notification is sent when the system receives a
PDU with its own system-id and different contents. The PDU with its own system ID and different contents. The
system has to originate the LSP with a higher sequence system has to originate the LSP with a higher sequence
number."; number.";
} }
notification authentication-type-failure { notification authentication-type-failure {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
description description
"This notification is sent when the system receives a "This notification is sent when the system receives a
PDU with the wrong authentication type field. PDU with the wrong authentication type field.
The notification generation must be throttled The generation of the notification must be throttled
with at least 5 seconds between successive with at least 5 seconds between successive
notifications."; notifications.";
} }
notification authentication-failure { notification authentication-failure {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
description description
"This notification is sent when the system receives "This notification is sent when the system receives
a PDU with the wrong authentication information. a PDU with the wrong authentication information.
The notification generation must be throttled The generation of the notification must be throttled
with at least 5 seconds between successive with at least 5 seconds between successive
notifications."; notifications.";
} }
notification version-skew { notification version-skew {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf protocol-version { leaf protocol-version {
type uint8; type uint8;
description "Protocol version received in the PDU."; description
"Protocol version received in the PDU.";
} }
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
description description
"This notification is sent when the system receives a "This notification is sent when the system receives a
PDU with a different protocol version number. PDU with a different protocol version number.
The notification generation must be throttled The generation of the notification must be throttled
with at least 5 seconds between successive with at least 5 seconds between successive
notifications."; notifications.";
} }
notification area-mismatch { notification area-mismatch {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
description description
"This notification is sent when the system receives a "This notification is sent when the system receives a
Hello PDU from an IS that does not share any area Hello PDU from an IS that does not share any area
address. The notification generation must be throttled address. The generation of the notification must be
with at least 5 seconds between successive throttled with at least 5 seconds between successive
notifications."; notifications.";
} }
notification rejected-adjacency { notification rejected-adjacency {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description description
"Received raw PDU."; "Received raw PDU.";
} }
leaf reason { leaf reason {
type string { type string {
length "0..255"; length "0..255";
} }
description description
"The system may provide a reason to reject the "The system may provide a reason to reject the
adjacency. If the reason is not available, adjacency. If the reason is not available,
the reason string will not be returned. the reason string will not be returned.
The expected format is a single line text."; The expected format is a single line of text.";
} }
description description
"This notification is sent when the system receives a "This notification is sent when the system receives a
Hello PDU from an IS but does not establish an adjacency Hello PDU from an IS but does not establish an adjacency
for some reason. The notification generation must be for some reason. The generation of the notification
throttled with at least 5 seconds between successive must be throttled with at least 5 seconds between
notifications."; successive notifications.";
} }
notification protocols-supported-mismatch { notification protocols-supported-mismatch {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
leaf-list protocols { leaf-list protocols {
type uint8; type uint8;
description description
"List of protocols supported by the remote system."; "List of protocols supported by the remote system.";
} }
description description
"This notification is sent when the system receives a "This notification is sent when the system receives a
non-pseudonode LSP that has no matching protocols non-pseudonode LSP that has no matching protocols
supported. The notification generation must be throttled supported. The generation of the notification must be
with at least 5 seconds between successive throttled with at least 5 seconds between successive
notifications."; notifications.";
} }
notification lsp-error-detected { notification lsp-error-detected {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID."; description
"LSP ID.";
} }
leaf raw-pdu { leaf raw-pdu {
type binary; type binary;
description "Received raw PDU."; description
"Received raw PDU.";
} }
leaf error-offset { leaf error-offset {
type uint32; type uint32;
description description
"If the problem is a malformed TLV, the error-offset "If the problem is a malformed TLV, the error offset
points to the start of the TLV. If the problem is with points to the start of the TLV. If the problem is with
the LSP header, the error-offset points to the errant the LSP header, the error offset points to the errant
byte"; byte.";
} }
leaf tlv-type { leaf tlv-type {
type uint8; type uint8;
description description
"If the problem is a malformed TLV, the tlv-type is set "If the problem is a malformed TLV, the TLV type is set
to the type value of the suspicious TLV. Otherwise, to the type value of the suspicious TLV. Otherwise,
this leaf is not present."; this leaf is not present.";
} }
description description
"This notification is sent when the system receives an "This notification is sent when the system receives an
LSP with a parse error. The notification generation must LSP with a parse error. The generation of the notification
be throttled with at least 5 seconds between successive must be throttled with at least 5 seconds between
notifications."; successive notifications.";
} }
notification adjacency-state-change { notification adjacency-state-change {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf neighbor { leaf neighbor {
type string { type string {
length "1..255"; length "1..255";
} }
description description
"Name of the neighbor. "Name of the neighbor. It corresponds to the hostname
It corresponds to the hostname associated associated with the system ID of the neighbor in the
with the system-id of the neighbor in the mapping database (RFC 5301). If the name of the neighbor
mapping database (RFC5301). is not available, it is not returned.";
If the name of the neighbor is reference
not available, it is not returned."; "RFC 5301: Dynamic Hostname Exchange Mechanism for IS-IS";
} }
leaf neighbor-system-id { leaf neighbor-system-id {
type system-id; type system-id;
description "Neighbor system-id"; description
"Neighbor system ID.";
} }
leaf state { leaf state {
type adj-state-type; type adj-state-type;
description "New state of the IS-IS adjacency."; description
"New state of the IS-IS adjacency.";
} }
leaf reason { leaf reason {
type string { type string {
length "1..255"; length "1..255";
} }
description description
"If the adjacency is going to DOWN, this leaf provides "If the adjacency is going to the 'down' state, this leaf
a reason for the adjacency going down. The reason is provides a reason for the adjacency going down. The reason
provided as a text. If the adjacency is going to UP, no is provided as text. If the adjacency is going to the 'up'
reason is provided. The expected format is a single line state, no reason is provided. The expected format is a
text."; single line of text.";
} }
description description
"This notification is sent when an IS-IS adjacency "This notification is sent when an IS-IS adjacency
moves to Up state or to Down state."; moves to the 'up' state or the 'down' state.";
} }
notification lsp-received { notification lsp-received {
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-interface-hdr; uses notification-interface-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID"; description
"LSP ID.";
} }
leaf sequence { leaf sequence {
type uint32; type uint32;
description "Sequence number of the received LSP."; description
"Sequence number of the received LSP.";
} }
leaf received-timestamp { leaf received-timestamp {
type yang:timestamp; type yang:timestamp;
description "Timestamp when the LSP was received."; description
"Timestamp when the LSP was received.";
} }
leaf neighbor-system-id { leaf neighbor-system-id {
type system-id; type system-id;
description "Neighbor system-id of LSP sender"; description
"Neighbor system ID of the LSP sender.";
} }
description description
"This notification is sent when an LSP is received. "This notification is sent when an LSP is received.
The notification generation must be throttled with at The generation of the notification must be throttled with
least 5 seconds between successive notifications."; at least 5 seconds between successive notifications.";
} }
notification lsp-generation { notification lsp-generation {
uses notification-instance-hdr; uses notification-instance-hdr;
leaf lsp-id { leaf lsp-id {
type lsp-id; type lsp-id;
description "LSP ID"; description
"LSP ID.";
} }
leaf sequence { leaf sequence {
type uint32; type uint32;
description "Sequence number of the received LSP."; description
"Sequence number of the received LSP.";
} }
leaf send-timestamp { leaf send-timestamp {
type yang:timestamp; type yang:timestamp;
description "Timestamp when our LSP was regenerated."; description
"Timestamp when the LSP was regenerated.";
} }
description description
"This notification is sent when an LSP is regenerated. "This notification is sent when an LSP is regenerated.
The notification generation must be throttled with at The generation of the notification must be throttled with
least 5 seconds between successive notifications."; at least 5 seconds between successive notifications.";
} }
} }
<CODE ENDS>]]></artwork> ]]></sourcecode>
</figure>
</section>
<section anchor="Security" title="Security Considerations" toc="default">
<t>The YANG modules specified in this document define a schema for data that
is designed to be accessed via network management protocols such as NETCONF <xr
ef target="RFC6241" pageno="false" format="default"/> or RESTCONF <xref target="
RFC8040" pageno="false" format="default"/>. The lowest NETCONF layer is the secu
re transport layer, and the mandatory-to-implement secure transport is Secure Sh
ell (SSH) <xref target="RFC6242" pageno="false" format="default"/>. The lowest R
ESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS <
xref target="RFC8446" pageno="false" format="default"/>.</t>
<t>The NETCONF Access Control Model (NACM) <xref target="RFC8341" pageno="f
alse" format="default"/> provides the means to restrict access for particular NE
TCONF or RESTCONF users to a pre-configured subset of all available NETCONF or R
ESTCONF protocol operations and content.</t>
<t>There are a number of data nodes defined in ietf-isis.yang module that ar
e writable/creatable/deletable (i.e., config true, which is the default). These
data nodes may be considered sensitive or vulnerable in some network environment
s. Write operations (e.g., edit-config) to these data nodes without proper prote
ction can have a negative effect on network operations.
Writable data node represent configuration of each instance and interface. These
correspond to the following schema nodes:
<list style="none">
<t>/isis</t>
<t>/isis/interfaces/interface[name]</t>
</list>
</t>
<t>For IS-IS, the ability to modify IS-IS configuration will allow the entire IS
-IS domain to be compromised including forming adjacencies with unauthorized rou
ters to misroute traffic or mount a massive Denial-of-Service (DoS) attack.
For example, adding IS-IS on any unprotected interface could allow an IS-IS adja
cency to be formed with an unauthorized and malicious neighbor. Once an adjacenc
y is formed, traffic could be hijacked. As a simpler example, a Denial-Of-Servic
e attack could be mounted by changing the cost of an IS-IS interface to be asymm
etric such that a hard routing loop ensues. In general, unauthorized modificatio
n of most IS-IS features will pose their own set of security risks and the "Secu
rity Considerations" in the respective reference RFCs should be consulted.</t>
<t>Some of the readable data nodes in the ietf-isis.yang module may be consi
dered sensitive or vulnerable in some network environments. It is thus important
to control read access (e.g., via get, get-config, or notification) to these da
ta nodes. The exposure of the Link State Database (LSDB) will expose the detaile
d topology of the network. Similarly, the IS-IS local RIB exposes the reachable
prefixes in the IS-IS routing domain. The Link State Database (LSDB) and local R
IB are represented by the following schema nodes:
<list style="none">
<t>/isis/database</t>
<t>/isis/local-rib</t>
</list>
</t>
<t>
Exposure of the Link State Database and local RIB include information beyond the
scope of the IS-IS router and this may be undesirable since exposure may facili
tate other attacks. Additionally, the complete IP network topology and, if deplo
yed, the traffic engineering topology of the IS-IS domain can be reconstructed f
rom the Link State Database. Though not as straightforward, the IS-IS local RIB
can also be discover topological information. Network operators may consider the
ir topologies to be sensitive confidential data.
</t>
<t>For IS-IS authentication, configuration is supported via the specific
ation of key-chain <xref target="RFC8177" pageno="false" format="default"/> or t
he direct specification of key and authentication algorithm. Hence, authenticati
on
configuration using the "auth-table-trailer" case in the
"authentication" container inherits the security considerations of <xref targ
et="RFC8177" pageno="false" format="default"/>. This includes the considerations
with respect to the
local storage and handling of authentication keys.</t>
<t>Some of the RPC operations in this YANG module may be considered sensitiv
e or vulnerable in some network environments. It is thus important to control ac
cess to these operations. The IS-IS YANG
module support the "clear-adjacency" and "clear-database" RPCs. If
access to either of these is compromised, they can result in
temporary network outages be employed to mount DoS attacks.
</t>
<t>The actual authentication key data (whether locally specified or part <!-- [rfced] *[AD]: Section 6: Please review the following updates,
of a key-chain) is sensitive and needs to be kept secret from (additions of "derived-from-or-self" and enclosing parentheses),
unauthorized parties; compromise of the key data would allow an attacker to f provided by the authors in email of 16 December 2020, and let us know
orge IS-IS traffic that would be accepted as authentic, if you approve.
potentially compromising the entirety IS-IS domain.</t>
<t>The model describes several notifications, implementations mu Original:
st rate-limit the generation of these notifications to avoid creating significan augment "/rt:routing/"
t notification load. Otherwise, this notification load may have some side effect +"rt:ribs/rt:rib/rt:routes/rt:route" {
s on the system stability and may be exploited as an attack vector.</t> when "rt:source-protocol = 'isis:isis'" {
...
augment "/rt:routing/rt:control-plane-protocols/"
+"rt:control-plane-protocol" {
when "rt:type = 'isis:isis'" {
</section> Currently:
augment "/rt:routing/"
+"rt:ribs/rt:rib/rt:routes/rt:route" {
when "derived-from-or-self(rt:source-protocol, 'isis:isis')" {
...
augment "/rt:routing/rt:control-plane-protocols/"
+"rt:control-plane-protocol" {
when "derived-from-or-self(rt:type, 'isis:isis')" { -->
<section anchor="Contributors" title="Contributors" toc="default"> <!-- [rfced] Section 6: Should " leaf MT-ID" be " leaf mt-id" here?
<t>The authors would like to thank
Kiran Agrahara Sreenivasa, Dean Bogdanovic, Yingzhen Qu, Yi Yang, Jeff
Tanstura
for their major contributions to the draft.</t>
</section>
<section anchor="ack" title="Acknowledgements" toc="default"> Original:
<t>The authors would like to thank Tom Petch, Alvaro Retana, Stewart Bry leaf MT-ID { -->
ant, Barry Leiba, Benjamin Kaduk and
Adam Roach, and Roman Danyliw for their review and comments.</t>
</section>
<section anchor="IANA" title="IANA Considerations" toc="default">
<t>The IANA is requested to assign two new URIs from the
IETF XML registry <xref target="RFC3688" pageno="false" format="default"/>. A
uthors are suggesting the following URI: </t>
<figure title="" suppress-title="false" align="left" alt="" width="" height="
">
<artwork xml:space="preserve" name="" type="" align="left" alt="" width="" he
ight="">
URI: urn:ietf:params:xml:ns:yang:ietf-isis
Registrant Contact: The IESG
XML: N/A, the requested URI is an XML namespace
</artwork>
</figure>
<t>This document also requests one new YANG module name in the YANG Modu
le Names registry <xref target="RFC6020" pageno="false" format="default"/> with
the following suggestion:</t>
<figure title="" suppress-title="false" align="left" alt="" width="" height="
">
<artwork xml:space="preserve" name="" type="" align="left" alt="" width="" he
ight="">
name: ietf-isis
namespace: urn:ietf:params:xml:ns:yang:ietf-isis
prefix: isis
reference: RFC XXXX
</artwork>
</figure>
</section> </section>
<section anchor="Security" toc="default" numbered="true">
<name>Security Considerations</name>
<!-- Begin YANG security DNE paragraphs 1 and 2 (slight changes per
boilerplate) -->
<t>The YANG module specified in this document defines a schema for data
that is designed to be accessed via network management protocols such
as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>.
The lowest NETCONF layer is the secure transport layer, and the
mandatory-to-implement secure transport is Secure Shell (SSH)
<xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the
mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.</t>
</middle> <t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/
<back> >
<references title="Normative References"> provides the means to restrict access for particular NETCONF or RESTCONF users
to a preconfigured subset of all available NETCONF or RESTCONF protocol
<reference anchor="RFC1195" target="https://www.rfc-editor.org/info/rfc1195"> operations and content.</t>
<front> <!-- End YANG security DNE text (paragraphs 1 and 2) -->
<title>Use of OSI IS-IS for routing in TCP/IP and dual environments</title>
<author initials="R.W." surname="Callon" fullname="R.W. Callon"><organization/><
/author>
<date year="1990" month="December"/>
<abstract><t>This memo specifies an integrated routing protocol, based on the OS
I Intra-Domain IS-IS Routing Protocol, which may be used as an interior gateway
protocol (IGP) to support TCP/IP as well as OSI. This allows a single routing p
rotocol to be used to support pure IP environments, pure OSI environments, and d
ual environments. This specification was developed by the IS-IS working group o
f the Internet Engineering Task Force. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name="RFC" value="1195"/>
<seriesInfo name="DOI" value="10.17487/RFC1195"/>
</reference>
<reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials="S." surname="Bradner" fullname="S. Bradner"><organization/></a
uthor>
<date year="1997" month="March"/>
<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 Comm
unity, 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="RFC3688" target="https://www.rfc-editor.org/info/rfc3688">
<front>
<title>The IETF XML Registry</title>
<author initials="M." surname="Mealling" fullname="M. Mealling"><organization/><
/author>
<date year="2004" month="January"/>
<abstract><t>This document describes an IANA maintained registry for IETF standa
rds which use Extensible Markup Language (XML) related items such as Namespaces,
Document Type Declarations (DTDs), Schemas, and Resource Description Framework
(RDF) Schemas.</t></abstract>
</front>
<seriesInfo name="BCP" value="81"/>
<seriesInfo name="RFC" value="3688"/>
<seriesInfo name="DOI" value="10.17487/RFC3688"/>
</reference>
<reference anchor="RFC4090" target="https://www.rfc-editor.org/info/rfc4090">
<front>
<title>Fast Reroute Extensions to RSVP-TE for LSP Tunnels</title>
<author initials="P." surname="Pan" fullname="P. Pan" role="editor"><organizatio
n/></author>
<author initials="G." surname="Swallow" fullname="G. Swallow" role="editor"><org
anization/></author>
<author initials="A." surname="Atlas" fullname="A. Atlas" role="editor"><organiz
ation/></author>
<date year="2005" month="May"/>
<abstract><t>This document defines RSVP-TE extensions to establish backup label-
switched path (LSP) tunnels for local repair of LSP tunnels. These mechanisms e
nable the re-direction of traffic onto backup LSP tunnels in 10s of milliseconds
, in the event of a failure.</t><t>Two methods are defined here. The one-to-one
backup method creates detour LSPs for each protected LSP at each potential poin
t of local repair. The facility backup method creates a bypass tunnel to protec
t a potential failure point; by taking advantage of MPLS label stacking, this by
pass tunnel can protect a set of LSPs that have similar backup constraints. Bot
h methods can be used to protect links and nodes during network failure. The de
scribed behavior and extensions to RSVP allow nodes to implement either method o
r both and to interoperate in a mixed network. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name="RFC" value="4090"/>
<seriesInfo name="DOI" value="10.17487/RFC4090"/>
</reference>
<reference anchor="RFC5029" target="https://www.rfc-editor.org/info/rfc5029">
<front>
<title>Definition of an IS-IS Link Attribute Sub-TLV</title>
<author initials="JP." surname="Vasseur" fullname="JP. Vasseur"><organization/><
/author>
<author initials="S." surname="Previdi" fullname="S. Previdi"><organization/></a
uthor>
<date year="2007" month="September"/>
<abstract><t>This document defines a sub-TLV called "Link-attributes" carried wi
thin the TLV 22 and used to flood some link characteristics. [STANDARDS-TRACK]<
/t></abstract>
</front>
<seriesInfo name="RFC" value="5029"/>
<seriesInfo name="DOI" value="10.17487/RFC5029"/>
</reference>
<reference anchor="RFC5120" target="https://www.rfc-editor.org/info/rfc5120">
<front>
<title>M-ISIS: Multi Topology (MT) Routing in Intermediate System to Intermediat
e Systems (IS-ISs)</title>
<author initials="T." surname="Przygienda" fullname="T. Przygienda"><organizatio
n/></author>
<author initials="N." surname="Shen" fullname="N. Shen"><organization/></author>
<author initials="N." surname="Sheth" fullname="N. Sheth"><organization/></autho
r>
<date year="2008" month="February"/>
<abstract><t>This document describes an optional mechanism within Intermediate S
ystem to Intermediate Systems (IS-ISs) used today by many ISPs for IGP routing w
ithin their clouds. This document describes how to run, within a single IS-IS d
omain, a set of independent IP topologies that we call Multi-Topologies (MTs). T
his MT extension can be used for a variety of purposes, such as an in-band manag
ement network "on top" of the original IGP topology, maintaining separate IGP ro
uting domains for isolated multicast or IPv6 islands within the backbone, or for
cing a subset of an address space to follow a different topology. [STANDARDS-TR
ACK]</t></abstract>
</front>
<seriesInfo name="RFC" value="5120"/>
<seriesInfo name="DOI" value="10.17487/RFC5120"/>
</reference>
<reference anchor="RFC5130" target="https://www.rfc-editor.org/info/rfc5130">
<front>
<title>A Policy Control Mechanism in IS-IS Using Administrative Tags</title>
<author initials="S." surname="Previdi" fullname="S. Previdi"><organization/></a
uthor>
<author initials="M." surname="Shand" fullname="M. Shand" role="editor"><organiz
ation/></author>
<author initials="C." surname="Martin" fullname="C. Martin"><organization/></aut
hor>
<date year="2008" month="February"/>
<abstract><t>This document describes an extension to the IS-IS protocol to add o
perational capabilities that allow for ease of management and control over IP pr
efix distribution within an IS-IS domain. This document enhances the IS-IS prot
ocol by extending the information that an Intermediate System (IS) router can pl
ace in Link State Protocol (LSP) Data Units for policy use. This extension will
provide operators with a mechanism to control IP prefix distribution throughout
multi-level IS-IS domains. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name="RFC" value="5130"/>
<seriesInfo name="DOI" value="10.17487/RFC5130"/>
</reference>
<reference anchor="RFC5286" target="https://www.rfc-editor.org/info/rfc5286">
<front>
<title>Basic Specification for IP Fast Reroute: Loop-Free Alternates</title>
<author initials="A." surname="Atlas" fullname="A. Atlas" role="editor"><organiz
ation/></author>
<author initials="A." surname="Zinin" fullname="A. Zinin" role="editor"><organiz
ation/></author>
<date year="2008" month="September"/>
<abstract><t>This document describes the use of loop-free alternates to provide
local protection for unicast traffic in pure IP and MPLS/LDP networks in the eve
nt of a single failure, whether link, node, or shared risk link group (SRLG). T
he goal of this technology is to reduce the packet loss that happens while route
rs converge after a topology change due to a failure. Rapid failure repair is a
chieved through use of precalculated backup next-hops that are loop-free and saf
e to use until the distributed network convergence process completes. This simpl
e approach does not require any support from other routers. The extent to which
this goal can be met by this specification is dependent on the topology of the n
etwork. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name="RFC" value="5286"/>
<seriesInfo name="DOI" value="10.17487/RFC5286"/>
</reference>
<reference anchor="RFC5301" target="https://www.rfc-editor.org/info/rfc5301">
<front>
<title>Dynamic Hostname Exchange Mechanism for IS-IS</title>
<author initials="D." surname="McPherson" fullname="D. McPherson"><organization/
></author>
<author initials="N." surname="Shen" fullname="N. Shen"><organization/></author>
<date year="2008" month="October"/>
<abstract><t>RFC 2763 defined a simple and dynamic mechanism for routers running
IS-IS to learn about symbolic hostnames. RFC 2763 defined a new TLV that allow
s the IS-IS routers to flood their name-to-systemID mapping information across t
he IS-IS network.</t><t>This document obsoletes RFC 2763. This document moves t
he capability provided by RFC 2763 to the Standards Track. [STANDARDS-TRACK]</t
></abstract>
</front>
<seriesInfo name="RFC" value="5301"/>
<seriesInfo name="DOI" value="10.17487/RFC5301"/>
</reference>
<reference anchor="RFC5302" target="https://www.rfc-editor.org/info/rfc5302">
<front>
<title>Domain-Wide Prefix Distribution with Two-Level IS-IS</title>
<author initials="T." surname="Li" fullname="T. Li"><organization/></author>
<author initials="H." surname="Smit" fullname="H. Smit"><organization/></author>
<author initials="T." surname="Przygienda" fullname="T. Przygienda"><organizatio
n/></author>
<date year="2008" month="October"/>
<abstract><t>This document describes extensions to the Intermediate System to In
termediate System (IS-IS) protocol to support optimal routing within a two-level
domain. The IS-IS protocol is specified in ISO 10589, with extensions for supp
orting IPv4 (Internet Protocol) specified in RFC 1195. This document replaces R
FC 2966.</t><t>This document extends the semantics presented in RFC 1195 so that
a routing domain running with both level 1 and level 2 Intermediate Systems (IS
) (routers) can distribute IP prefixes between level 1 and level 2, and vice ver
sa. This distribution requires certain restrictions to ensure that persistent f
orwarding loops do not form. The goal of this domain-wide prefix distribution is
to increase the granularity of the routing information within the domain. [STA
NDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name="RFC" value="5302"/>
<seriesInfo name="DOI" value="10.17487/RFC5302"/>
</reference>
<reference anchor="RFC5305" target="https://www.rfc-editor.org/info/rfc5305">
<front>
<title>IS-IS Extensions for Traffic Engineering</title>
<author initials="T." surname="Li" fullname="T. Li"><organization/></author>
<author initials="H." surname="Smit" fullname="H. Smit"><organization/></author>
<date year="2008" month="October"/>
<abstract><t>This document describes extensions to the Intermediate System to In
termediate System (IS-IS) protocol to support Traffic Engineering (TE). This do
cument extends the IS-IS protocol by specifying new information that an Intermed
iate System (router) can place in Link State Protocol Data Units (LSP). This in
formation describes additional details regarding the state of the network that a
re useful for traffic engineering computations. [STANDARDS-TRACK]</t></abstract
>
</front>
<seriesInfo name="RFC" value="5305"/>
<seriesInfo name="DOI" value="10.17487/RFC5305"/>
</reference>
<reference anchor="RFC5306" target="https://www.rfc-editor.org/info/rfc5306">
<front>
<title>Restart Signaling for IS-IS</title>
<author initials="M." surname="Shand" fullname="M. Shand"><organization/></autho
r>
<author initials="L." surname="Ginsberg" fullname="L. Ginsberg"><organization/><
/author>
<date year="2008" month="October"/>
<abstract><t>This document describes a mechanism for a restarting router to sign
al to its neighbors that it is restarting, allowing them to reestablish their ad
jacencies without cycling through the down state, while still correctly initiati
ng database synchronization.</t><t>This document additionally describes a mechan
ism for a restarting router to determine when it has achieved Link State Protoco
l Data Unit (LSP) database synchronization with its neighbors and a mechanism to
optimize LSP database synchronization, while minimizing transient routing disru
ption when a router starts. This document obsoletes RFC 3847. [STANDARDS-TRACK
]</t></abstract>
</front>
<seriesInfo name="RFC" value="5306"/>
<seriesInfo name="DOI" value="10.17487/RFC5306"/>
</reference>
<reference anchor="RFC5307" target="https://www.rfc-editor.org/info/rfc5307">
<front>
<title>IS-IS Extensions in Support of Generalized Multi-Protocol Label Switching
(GMPLS)</title>
<author initials="K." surname="Kompella" fullname="K. Kompella" role="editor"><o
rganization/></author>
<author initials="Y." surname="Rekhter" fullname="Y. Rekhter" role="editor"><org
anization/></author>
<date year="2008" month="October"/>
<abstract><t>This document specifies encoding of extensions to the IS-IS routing
protocol in support of Generalized Multi-Protocol Label Switching (GMPLS). [ST
ANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name="RFC" value="5307"/>
<seriesInfo name="DOI" value="10.17487/RFC5307"/>
</reference>
<reference anchor="RFC5308" target="https://www.rfc-editor.org/info/rfc5308">
<front>
<title>Routing IPv6 with IS-IS</title>
<author initials="C." surname="Hopps" fullname="C. Hopps"><organization/></autho
r>
<date year="2008" month="October"/>
<abstract><t>This document specifies a method for exchanging IPv6 routing inform
ation using the IS-IS routing protocol. The described method utilizes two new T
LVs: a reachability TLV and an interface address TLV to distribute the necessary
IPv6 information throughout a routing domain. Using this method, one can route
IPv6 along with IPv4 and OSI using a single intra-domain routing protocol. [ST
ANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name="RFC" value="5308"/>
<seriesInfo name="DOI" value="10.17487/RFC5308"/>
</reference>
<reference anchor="RFC5443" target="https://www.rfc-editor.org/info/rfc5443">
<front>
<title>LDP IGP Synchronization</title>
<author initials="M." surname="Jork" fullname="M. Jork"><organization/></author>
<author initials="A." surname="Atlas" fullname="A. Atlas"><organization/></autho
r>
<author initials="L." surname="Fang" fullname="L. Fang"><organization/></author>
<date year="2009" month="March"/>
<abstract><t>In certain networks, there is dependency on the edge-to-edge Label
Switched Paths (LSPs) setup by the Label Distribution Protocol (LDP), e.g., netw
orks that are used for Multiprotocol Label Switching (MPLS) Virtual Private Netw
ork (VPN) applications. For such applications, it is not possible to rely on In
ternet Protocol (IP) forwarding if the MPLS LSP is not operating appropriately.
Blackholing of labeled traffic can occur in situations where the Interior Gatewa
y Protocol (IGP) is operational on a link on which LDP is not. While the link c
ould still be used for IP forwarding, it is not useful for MPLS forwarding, for
example, MPLS VPN applications or Border Gateway Protocol (BGP) route-free cores
. This document describes a mechanism to avoid traffic loss due to this conditi
on without introducing any protocol changes. This memo provides information fo
r the Internet community.</t></abstract>
</front>
<seriesInfo name="RFC" value="5443"/>
<seriesInfo name="DOI" value="10.17487/RFC5443"/>
</reference>
<reference anchor="RFC5880" target="https://www.rfc-editor.org/info/rfc5880">
<front>
<title>Bidirectional Forwarding Detection (BFD)</title>
<author initials="D." surname="Katz" fullname="D. Katz"><organization/></author>
<author initials="D." surname="Ward" fullname="D. Ward"><organization/></author>
<date year="2010" month="June"/>
<abstract><t>This document describes a protocol intended to detect faults in the
bidirectional path between two forwarding engines, including interfaces, data l
ink(s), and to the extent possible the forwarding engines themselves, with poten
tially very low latency. It operates independently of media, data protocols, an
d routing protocols. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name="RFC" value="5880"/>
<seriesInfo name="DOI" value="10.17487/RFC5880"/>
</reference>
<reference anchor="RFC5881" target="https://www.rfc-editor.org/info/rfc5881">
<front>
<title>Bidirectional Forwarding Detection (BFD) for IPv4 and IPv6 (Single Hop)</
title>
<author initials="D." surname="Katz" fullname="D. Katz"><organization/></author>
<author initials="D." surname="Ward" fullname="D. Ward"><organization/></author>
<date year="2010" month="June"/>
<abstract><t>This document describes the use of the Bidirectional Forwarding Det
ection (BFD) protocol over IPv4 and IPv6 for single IP hops. [STANDARDS-TRACK]</
t></abstract>
</front>
<seriesInfo name="RFC" value="5881"/>
<seriesInfo name="DOI" value="10.17487/RFC5881"/>
</reference>
<reference anchor="RFC6020" target="https://www.rfc-editor.org/info/rfc6020">
<front>
<title>YANG - A Data Modeling Language for the Network Configuration Protocol (N
ETCONF)</title>
<author initials="M." surname="Bjorklund" fullname="M. Bjorklund" role="editor">
<organization/></author>
<date year="2010" month="October"/>
<abstract><t>YANG is a data modeling language used to model configuration and st
ate data manipulated by the Network Configuration Protocol (NETCONF), NETCONF re
mote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t></abstract
>
</front>
<seriesInfo name="RFC" value="6020"/>
<seriesInfo name="DOI" value="10.17487/RFC6020"/>
</reference>
<reference anchor="RFC6119" target="https://www.rfc-editor.org/info/rfc6119">
<front>
<title>IPv6 Traffic Engineering in IS-IS</title>
<author initials="J." surname="Harrison" fullname="J. Harrison"><organization/><
/author>
<author initials="J." surname="Berger" fullname="J. Berger"><organization/></aut
hor>
<author initials="M." surname="Bartlett" fullname="M. Bartlett"><organization/><
/author>
<date year="2011" month="February"/>
<abstract><t>This document specifies a method for exchanging IPv6 traffic engin
eering information using the IS-IS routing protocol. This information enables ro
uters in an IS-IS network to calculate traffic-engineered routes using IPv6 add
resses. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name="RFC" value="6119"/>
<seriesInfo name="DOI" value="10.17487/RFC6119"/>
</reference>
<reference anchor="RFC6232" target="https://www.rfc-editor.org/info/rfc6232">
<front>
<title>Purge Originator Identification TLV for IS-IS</title>
<author initials="F." surname="Wei" fullname="F. Wei"><organization/></author>
<author initials="Y." surname="Qin" fullname="Y. Qin"><organization/></author>
<author initials="Z." surname="Li" fullname="Z. Li"><organization/></author>
<author initials="T." surname="Li" fullname="T. Li"><organization/></author>
<author initials="J." surname="Dong" fullname="J. Dong"><organization/></author>
<date year="2011" month="May"/>
<abstract><t>At present, an IS-IS purge does not contain any information identif
ying the Intermediate System (IS) that generates the purge. This makes it diffic
ult to locate the source IS.</t><t>To address this issue, this document defines
a TLV to be added to purges to record the system ID of the IS generating it. Si
nce normal Link State Protocol Data Unit (LSP) flooding does not change LSP cont
ents, this TLV should propagate with the purge.</t><t>This document updates RFC
5301, RFC 5304, and RFC 5310. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name="RFC" value="6232"/>
<seriesInfo name="DOI" value="10.17487/RFC6232"/>
</reference>
<reference anchor="RFC6241" target="https://www.rfc-editor.org/info/rfc6241">
<front>
<title>Network Configuration Protocol (NETCONF)</title>
<author initials="R." surname="Enns" fullname="R. Enns" role="editor"><organizat
ion/></author>
<author initials="M." surname="Bjorklund" fullname="M. Bjorklund" role="editor">
<organization/></author>
<author initials="J." surname="Schoenwaelder" fullname="J. Schoenwaelder" role="
editor"><organization/></author>
<author initials="A." surname="Bierman" fullname="A. Bierman" role="editor"><org
anization/></author>
<date year="2011" month="June"/>
<abstract><t>The Network Configuration Protocol (NETCONF) defined in this docume
nt provides mechanisms to install, manipulate, and delete the configuration of n
etwork devices. It uses an Extensible Markup Language (XML)-based data encoding
for the configuration data as well as the protocol messages. The NETCONF proto
col operations are realized as remote procedure calls (RPCs). This document obs
oletes RFC 4741. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name="RFC" value="6241"/>
<seriesInfo name="DOI" value="10.17487/RFC6241"/>
</reference>
<reference anchor="RFC6242" target="https://www.rfc-editor.org/info/rfc6242">
<front>
<title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
<author initials="M." surname="Wasserman" fullname="M. Wasserman"><organization/
></author>
<date year="2011" month="June"/>
<abstract><t>This document describes a method for invoking and running the Netwo
rk Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SS
H subsystem. This document obsoletes RFC 4742. [STANDARDS-TRACK]</t></abstract
>
</front>
<seriesInfo name="RFC" value="6242"/>
<seriesInfo name="DOI" value="10.17487/RFC6242"/>
</reference>
<reference anchor="RFC6991" target="https://www.rfc-editor.org/info/rfc6991">
<front>
<title>Common YANG Data Types</title>
<author initials="J." surname="Schoenwaelder" fullname="J. Schoenwaelder" role="
editor"><organization/></author>
<date year="2013" month="July"/>
<abstract><t>This document introduces a collection of common data types to be us
ed with the YANG data modeling language. This document obsoletes RFC 6021.</t><
/abstract>
</front>
<seriesInfo name="RFC" value="6991"/>
<seriesInfo name="DOI" value="10.17487/RFC6991"/>
</reference>
<reference anchor="RFC7490" target="https://www.rfc-editor.org/info/rfc7490">
<front>
<title>Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)</title>
<author initials="S." surname="Bryant" fullname="S. Bryant"><organization/></aut
hor>
<author initials="C." surname="Filsfils" fullname="C. Filsfils"><organization/><
/author>
<author initials="S." surname="Previdi" fullname="S. Previdi"><organization/></a
uthor>
<author initials="M." surname="Shand" fullname="M. Shand"><organization/></autho
r>
<author initials="N." surname="So" fullname="N. So"><organization/></author>
<date year="2015" month="April"/>
<abstract><t>This document describes an extension to the basic IP fast reroute m
echanism, described in RFC 5286, that provides additional backup connectivity fo
r point-to-point link failures when none can be provided by the basic mechanisms
.</t></abstract>
</front>
<seriesInfo name="RFC" value="7490"/>
<seriesInfo name="DOI" value="10.17487/RFC7490"/>
</reference>
<reference anchor="RFC7794" target="https://www.rfc-editor.org/info/rfc7794"> <!-- Begin YANG security DNE paragraph 3 (fixed per boilerplate) -->
<front> <t>There are a number of data nodes defined in this YANG module that are
<title>IS-IS Prefix Attributes for Extended IPv4 and IPv6 Reachability</title> writable/creatable/deletable (i.e., config true, which is the default). These
<author initials="L." surname="Ginsberg" fullname="L. Ginsberg" role="editor"><o data nodes may be considered sensitive or vulnerable in some network
rganization/></author> environments. Write operations (e.g., edit-config) to these data nodes without
<author initials="B." surname="Decraene" fullname="B. Decraene"><organization/>< proper protection can have a negative effect on network operations. These are
/author> the subtrees and data nodes and their sensitivity/vulnerability:</t>
<author initials="S." surname="Previdi" fullname="S. Previdi"><organization/></a <!-- End YANG security DNE paragraph 3 -->
uthor>
<author initials="X." surname="Xu" fullname="X. Xu"><organization/></author>
<author initials="U." surname="Chunduri" fullname="U. Chunduri"><organization/><
/author>
<date year="2016" month="March"/>
<abstract><t>This document introduces new sub-TLVs to support advertisement of I
Pv4 and IPv6 prefix attribute flags and the source router ID of the router that
originated a prefix advertisement.</t></abstract>
</front>
<seriesInfo name="RFC" value="7794"/>
<seriesInfo name="DOI" value="10.17487/RFC7794"/>
</reference>
<reference anchor="RFC7917" target="https://www.rfc-editor.org/info/rfc7917"> <t indent="3">/isis</t>
<front> <t indent="3">/isis/interfaces/interface[name]</t>
<title>Advertising Node Administrative Tags in IS-IS</title>
<author initials="P." surname="Sarkar" fullname="P. Sarkar" role="editor"><organ
ization/></author>
<author initials="H." surname="Gredler" fullname="H. Gredler"><organization/></a
uthor>
<author initials="S." surname="Hegde" fullname="S. Hegde"><organization/></autho
r>
<author initials="S." surname="Litkowski" fullname="S. Litkowski"><organization/
></author>
<author initials="B." surname="Decraene" fullname="B. Decraene"><organization/><
/author>
<date year="2016" month="July"/>
<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 I
S-IS.</t></abstract>
</front>
<seriesInfo name="RFC" value="7917"/>
<seriesInfo name="DOI" value="10.17487/RFC7917"/>
</reference>
<reference anchor="RFC7950" target="https://www.rfc-editor.org/info/rfc7950"> <t>For IS-IS, the ability to modify IS-IS configuration will allow the ent
<front> ire IS-IS domain to be compromised, including forming adjacencies with unauthori
<title>The YANG 1.1 Data Modeling Language</title> zed routers to misroute traffic or mount a massive Denial-of-Service (DoS) attac
<author initials="M." surname="Bjorklund" fullname="M. Bjorklund" role="editor"> k.
<organization/></author> For example, adding IS-IS on any unprotected interface could allow an IS-IS
<date year="2016" month="August"/> adjacency to be formed with an unauthorized and malicious neighbor. Once
<abstract><t>YANG is a data modeling language used to model configuration data, an adjacency is formed, traffic could be hijacked. As a simpler example,
state data, Remote Procedure Calls, and notifications for network management pro a DoS attack could be mounted by changing the cost of an IS-IS interface
tocols. This document describes the syntax and semantics of version 1.1 of the to be asymmetric, such that a hard routing loop ensues. In general,
YANG language. YANG version 1.1 is a maintenance release of the YANG language, unauthorized modification of most IS-IS features will pose its own set
addressing ambiguities and defects in the original specification. There are a s of security risks; therefore, the Security Considerations sections in the
mall number of backward incompatibilities from YANG version 1. This document al respective reference RFCs should be consulted.</t>
so specifies the YANG mappings to the Network Configuration Protocol (NETCONF).<
/t></abstract>
</front>
<seriesInfo name="RFC" value="7950"/>
<seriesInfo name="DOI" value="10.17487/RFC7950"/>
</reference>
<reference anchor="RFC7981" target="https://www.rfc-editor.org/info/rfc7981"> <!-- Begin YANG security paragraph 4 DNE text (fixed per boilerplate) -->
<front> <t>Some of the readable data nodes in this YANG module may be considered
<title>IS-IS Extensions for Advertising Router Information</title> sensitive or vulnerable in some network environments. It is thus important to
<author initials="L." surname="Ginsberg" fullname="L. Ginsberg"><organization/>< control read access (e.g., via get, get-config, or notification) to these data
/author> nodes. These are the subtrees and data nodes and their
<author initials="S." surname="Previdi" fullname="S. Previdi"><organization/></a sensitivity/vulnerability:</t>
uthor> <!-- End YANG security paragraph 4 DNE text -->
<author initials="M." surname="Chen" fullname="M. Chen"><organization/></author>
<date year="2016" month="October"/>
<abstract><t>This document defines a new optional Intermediate System to Interme
diate System (IS-IS) TLV named CAPABILITY, formed of multiple sub-TLVs, which al
lows a router to announce its capabilities within an IS-IS level or the entire r
outing domain. This document obsoletes RFC 4971.</t></abstract>
</front>
<seriesInfo name="RFC" value="7981"/>
<seriesInfo name="DOI" value="10.17487/RFC7981"/>
</reference>
<reference anchor="RFC8040" target="https://www.rfc-editor.org/info/rfc8040"> <t indent="3">/isis/database</t>
<front> <t indent="3">/isis/local-rib</t>
<title>RESTCONF Protocol</title> <t>
<author initials="A." surname="Bierman" fullname="A. Bierman"><organization/></a
uthor>
<author initials="M." surname="Bjorklund" fullname="M. Bjorklund"><organization/
></author>
<author initials="K." surname="Watsen" fullname="K. Watsen"><organization/></aut
hor>
<date year="2017" month="January"/>
<abstract><t>This document describes an HTTP-based protocol that provides a prog
rammatic interface for accessing data defined in YANG, using the datastore conce
pts defined in the Network Configuration Protocol (NETCONF).</t></abstract>
</front>
<seriesInfo name="RFC" value="8040"/>
<seriesInfo name="DOI" value="10.17487/RFC8040"/>
</reference>
<reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174"> Exposure of the Link State Database (LSDB) will reveal the detailed
<front> topology of the network. Similarly, the IS-IS local RIB exposes the reachable
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title> prefixes in the IS-IS routing domain. Exposure of the LSDB and local RIB may
<author initials="B." surname="Leiba" fullname="B. Leiba"><organization/></autho also reveal information beyond the scope of the IS-IS router; this may be
r> undesirable, since such exposure may facilitate other attacks. Additionally,
<date year="2017" month="May"/> the complete IP network topology -- and, if deployed, the TE topology of the
<abstract><t>RFC 2119 specifies common key words that may be used in protocol s IS-IS domain -- can be reconstructed from the LSDB. Though not as
pecifications. This document aims to reduce the ambiguity by clarifying that on straightforward, the IS-IS local RIB can also be exploited to discover
ly UPPERCASE usage of the key words have the defined special meanings.</t></abs topological information. Network operators may consider their topologies to
tract> be sensitive confidential data.
</front> </t>
<seriesInfo name="BCP" value="14"/> <t>For IS-IS authentication, configuration is supported via the
<seriesInfo name="RFC" value="8174"/> specification of a key chain <xref target="RFC8177" format="default"/>
<seriesInfo name="DOI" value="10.17487/RFC8174"/> or the direct specification of a key and authentication algorithm.
</reference> Hence, authentication configuration using the "key-chain" case in the
"authentication-type" container inherits the security considerations of
<xref target="RFC8177" format="default"/>. This includes considerations with re
spect to the
local storage and handling of authentication keys.</t>
<reference anchor="RFC8294" target="https://www.rfc-editor.org/info/rfc8294"> <!-- Begin YANG security paragraph 5 DNE text (fixed per boilerplate) -->
<front> <t>Some of the RPC operations in this YANG module may be considered sensitive or
<title>Common YANG Data Types for the Routing Area</title> vulnerable in some network environments. It is thus important to control
<author initials="X." surname="Liu" fullname="X. Liu"><organization/></author> access to these operations. These are the operations and their
<author initials="Y." surname="Qu" fullname="Y. Qu"><organization/></author> sensitivity/vulnerability:</t>
<author initials="A." surname="Lindem" fullname="A. Lindem"><organization/></aut <!-- End YANG security paragraph 5 DNE text -->
hor>
<author initials="C." surname="Hopps" fullname="C. Hopps"><organization/></autho
r>
<author initials="L." surname="Berger" fullname="L. Berger"><organization/></aut
hor>
<date year="2017" month="December"/>
<abstract><t>This document defines a collection of common data types using the Y
ANG data modeling language. These derived common types are designed to be impor
ted by other modules defined in the routing area.</t></abstract>
</front>
<seriesInfo name="RFC" value="8294"/>
<seriesInfo name="DOI" value="10.17487/RFC8294"/>
</reference>
<reference anchor="RFC8341" target="https://www.rfc-editor.org/info/rfc8341"> <t>The IS-IS YANG
<front> module supports the "clear-adjacency" and "clear-database" RPCs. If
<title>Network Configuration Access Control Model</title> access to either of these is compromised, they can be exploited to
<author initials="A." surname="Bierman" fullname="A. Bierman"><organization/></a mount DoS attacks due to the resultant network outages.</t>
uthor>
<author initials="M." surname="Bjorklund" fullname="M. Bjorklund"><organization/
></author>
<date year="2018" month="March"/>
<abstract><t>The standardization of network configuration interfaces for use wit
h the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires
a structured and secure operating environment that promotes human usability and
multi-vendor interoperability. There is a need for standard mechanisms to rest
rict NETCONF or RESTCONF protocol access for particular users to a preconfigured
subset of all available NETCONF or RESTCONF protocol operations and content. T
his document defines such an access control model.</t><t>This document obsoletes
RFC 6536.</t></abstract>
</front>
<seriesInfo name="STD" value="91"/>
<seriesInfo name="RFC" value="8341"/>
<seriesInfo name="DOI" value="10.17487/RFC8341"/>
</reference>
<reference anchor="RFC8342" target="https://www.rfc-editor.org/info/rfc8342"> <!-- [rfced] Authors and *[AD]: Section 7: Per the guidelines on
<front> <https://trac.ietf.org/trac/ops/wiki/yang-security-guidelines>,
<title>Network Management Datastore Architecture (NMDA)</title> we have updated the boilerplate text in this section. To preserve
<author initials="M." surname="Bjorklund" fullname="M. Bjorklund"><organization/ information specific to this document, we moved some of the text.
></author>
<author initials="J." surname="Schoenwaelder" fullname="J. Schoenwaelder"><organ
ization/></author>
<author initials="P." surname="Shafer" fullname="P. Shafer"><organization/></aut
hor>
<author initials="K." surname="Watsen" fullname="K. Watsen"><organization/></aut
hor>
<author initials="R." surname="Wilton" fullname="R. Wilton"><organization/></aut
hor>
<date year="2018" month="March"/>
<abstract><t>Datastores are a fundamental concept binding the data models writte
n in the YANG data modeling language to network management protocols such as the
Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an
architectural framework for datastores based on the experience gained with the
initial simpler model, addressing requirements that were not well supported in t
he initial model. This document updates RFC 7950.</t></abstract>
</front>
<seriesInfo name="RFC" value="8342"/>
<seriesInfo name="DOI" value="10.17487/RFC8342"/>
</reference>
<reference anchor="RFC8343" target="https://www.rfc-editor.org/info/rfc8343"> Please review this section carefully, and let us know if further
<front> updates are needed. -->
<title>A YANG Data Model for Interface Management</title>
<author initials="M." surname="Bjorklund" fullname="M. Bjorklund"><organization/
></author>
<date year="2018" month="March"/>
<abstract><t>This document defines a YANG data model for the management of netwo
rk interfaces. It is expected that interface-type-specific data models augment
the generic interfaces data model defined in this document. The data model inclu
des definitions for configuration and system state (status information and count
ers for the collection of statistics).</t><t>The YANG data model in this documen
t conforms to the Network Management Datastore Architecture (NMDA) defined in RF
C 8342.</t><t>This document obsoletes RFC 7223.</t></abstract>
</front>
<seriesInfo name="RFC" value="8343"/>
<seriesInfo name="DOI" value="10.17487/RFC8343"/>
</reference>
<reference anchor="RFC8349" target="https://www.rfc-editor.org/info/rfc8349"> <t>The actual authentication key data (whether locally specified or part
<front> of a key chain) is sensitive and needs to be kept secret from
<title>A YANG Data Model for Routing Management (NMDA Version)</title> unauthorized parties; compromise of the key data would allow an attacker to f
<author initials="L." surname="Lhotka" fullname="L. Lhotka"><organization/></aut orge IS-IS traffic that would be accepted as authentic,
hor> potentially compromising the entire IS-IS domain.</t>
<author initials="A." surname="Lindem" fullname="A. Lindem"><organization/></aut <t>The model describes several notifications. Implementations must
hor> rate-limit the generation of these notifications to avoid creating
<author initials="Y." surname="Qu" fullname="Y. Qu"><organization/></author> significant notification load. Otherwise, this notification load may
<date year="2018" month="March"/> negatively affect system stability and may be exploited as an attack vecto
<abstract><t>This document specifies three YANG modules and one submodule. Toget r.</t>
her, they form the core routing data model that serves as a framework for config </section>
uring and managing a routing subsystem. It is expected that these modules will <section anchor="IANA" toc="default" numbered="true">
be augmented by additional YANG modules defining data models for control-plane p <name>IANA Considerations</name>
rotocols, route filters, and other functions. The core routing data model provi
des common building blocks for such extensions -- routes, Routing Information Ba
ses (RIBs), and control-plane protocols.</t><t>The YANG modules in this document
conform to the Network Management Datastore Architecture (NMDA). This document
obsoletes RFC 8022.</t></abstract>
</front>
<seriesInfo name="RFC" value="8349"/>
<seriesInfo name="DOI" value="10.17487/RFC8349"/>
</reference>
<reference anchor="RFC8177" target="https://www.rfc-editor.org/info/rfc8177"> <t>The IANA has assigned the following URI in the
<front> "IETF XML Registry" <xref target="RFC3688" format="default"/>.</t>
<title>YANG Data Model for Key Chains</title> <dl newline="false" spacing="compact">
<author initials="A." surname="Lindem" fullname="A. Lindem" role="editor"><organ <dt>URI:</dt>
ization/></author> <dd>urn:ietf:params:xml:ns:yang:ietf-isis</dd>
<author initials="Y." surname="Qu" fullname="Y. Qu"><organization/></author> <dt>Registrant Contact:</dt>
<author initials="D." surname="Yeung" fullname="D. Yeung"><organization/></autho <dd>The IESG</dd>
r> <dt>XML:</dt>
<author initials="I." surname="Chen" fullname="I. Chen"><organization/></author> <dd>N/A; the requested URI is an XML namespace.</dd>
<author initials="J." surname="Zhang" fullname="J. Zhang"><organization/></autho </dl>
r> <t>This document also adds the following YANG module name in the "YANG
<date year="2017" month="June"/> Module Names" registry <xref target="RFC6020" format="default"/>:</t>
<abstract><t>This document describes the key chain YANG data model. Key chains <dl newline="false" spacing="compact">
are commonly used for routing protocol authentication and other applications req <dt>Name:</dt>
uiring symmetric keys. A key chain is a list containing one or more elements co <dd>ietf-isis</dd>
ntaining a Key ID, key string, send/accept lifetimes, and the associated authent <dt>Maintained by IANA?</dt>
ication or encryption algorithm. By properly overlapping the send and accept li <dd>N</dd>
fetimes of multiple key chain elements, key strings and algorithms may be gracef <dt>Namespace:</dt>
ully updated. By representing them in a YANG data model, key distribution can b <dd>urn:ietf:params:xml:ns:yang:ietf-isis</dd>
e automated.</t></abstract> <dt>Prefix:</dt>
</front> <dd>isis</dd>
<seriesInfo name="RFC" value="8177"/> <dt>Reference:</dt>
<seriesInfo name="DOI" value="10.17487/RFC8177"/> <dd>RFC 9130</dd>
</reference> </dl>
</section>
</middle>
<back>
<displayreference target="I-D.ietf-rtgwg-segment-routing-ti-lfa" to="SR-TI-LFA"/
>
<references>
<name>References</name>
<references>
<name>Normative References</name>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.1195.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.2119.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.3688.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.4090.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.5029.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.5120.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.5130.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.5286.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.5301.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.5302.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.5305.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8706.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.5307.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.5308.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.5443.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.5880.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.5881.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.6020.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.6119.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.6232.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.6241.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.6242.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.6991.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.7490.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.7794.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.7917.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.7950.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.7981.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8040.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8174.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8294.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8341.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8342.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8343.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8349.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8177.xml"/>
<reference anchor="I-D.ietf-bfd-yang"> <!-- draft-ietf-bfd-yang (RFC 9127) -->
<reference anchor="RFC9127" target="https://www.rfc-editor.org/info/rfc9127">
<front> <front>
<title>YANG Data Model for Bidirectional Forwarding Detection (BFD)</title> <title>YANG Data Model for Bidirectional Forwarding Detection (BFD)</title>
<author initials='R' surname='Raham' fullname='Reshad Raham' role="editor">
<author initials="R" surname="Rahman" fullname="Reshad Rahman"> <organization></organization>
<organization/>
</author> </author>
<author initials='L' surname='Zheng' fullname='Lianshu Zheng' role="editor">
<author initials="L" surname="Zheng" fullname="Lianshu Zheng"> <organization></organization>
<organization/>
</author> </author>
<author initials='M' surname='Jethanandani' fullname='Mahesh Jethanandani' role=
<author initials="M" surname="Jethanandani" fullname="Mahesh Jethanandani"> "editor">
<organization/> <organization></organization>
</author> </author>
<author initials='S' surname='Pallagatti' fullname='Santosh Pallagatti'>
<author initials="J" surname="Networks" fullname="Juniper Networks"> <organization></organization>
<organization/>
</author> </author>
<author initials='G' surname='Mirsky' fullname='Greg Mirsky'>
<author initials="G" surname="Mirsky" fullname="Gregory Mirsky"> <organization></organization>
<organization/>
</author> </author>
<date month='September' year='2021'/>
<date month="August" day="2" year="2018"/>
<abstract><t>This document defines a YANG data model that can be used to configu
re and manage Bidirectional Forwarding Detection (BFD). The YANG modules in thi
s document conform to the Network Management Datastore Architecture (NMDA).</t><
/abstract>
</front>
<seriesInfo name="Internet-Draft" value="draft-ietf-bfd-yang-17"/>
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-bfd-ya
ng-17.txt"/>
</reference>
<reference anchor="RFC8405" target="https://www.rfc-editor.org/info/rfc8405">
<front>
<title>Shortest Path First (SPF) Back-Off Delay Algorithm for Link-State IGPs</t
itle>
<author initials="B." surname="Decraene" fullname="B. Decraene"><organization/><
/author>
<author initials="S." surname="Litkowski" fullname="S. Litkowski"><organization/
></author>
<author initials="H." surname="Gredler" fullname="H. Gredler"><organization/></a
uthor>
<author initials="A." surname="Lindem" fullname="A. Lindem"><organization/></aut
hor>
<author initials="P." surname="Francois" fullname="P. Francois"><organization/><
/author>
<author initials="C." surname="Bowers" fullname="C. Bowers"><organization/></aut
hor>
<date year="2018" month="June"/>
<abstract><t>This document defines a standard algorithm to temporarily postpone
or "back off" link-state IGP Shortest Path First (SPF) computations. This reduce
s the computational load and churn on IGP nodes when multiple temporally close n
etwork events trigger multiple SPF computations.</t><t>Having one standard algor
ithm improves interoperability by reducing the probability and/or duration of tr
ansient forwarding loops during the IGP convergence when the IGP reacts to multi
ple temporally close IGP events.</t></abstract>
</front>
<seriesInfo name="RFC" value="8405"/>
<seriesInfo name="DOI" value="10.17487/RFC8405"/>
</reference>
<reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446">
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
<author initials="E." surname="Rescorla" fullname="E. Rescorla"><organization/><
/author>
<date year="2018" month="August"/>
<abstract><t>This document specifies version 1.3 of the Transport Layer Security
(TLS) protocol. TLS allows client/server applications to communicate over the
Internet in a way that is designed to prevent eavesdropping, tampering, and mess
age forgery.</t><t>This document updates RFCs 5705 and 6066, and obsoletes RFCs
5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2
implementations.</t></abstract>
</front>
<seriesInfo name="RFC" value="8446"/>
<seriesInfo name="DOI" value="10.17487/RFC8446"/>
</reference>
<reference anchor="RFC8570" target="https://www.rfc-editor.org/info/rfc8570">
<front>
<title>IS-IS Traffic Engineering (TE) Metric Extensions</title>
<author initials="L." surname="Ginsberg" fullname="L. Ginsberg" role="editor"><o
rganization/></author>
<author initials="S." surname="Previdi" fullname="S. Previdi" role="editor"><org
anization/></author>
<author initials="S." surname="Giacalone" fullname="S. Giacalone"><organization/
></author>
<author initials="D." surname="Ward" fullname="D. Ward"><organization/></author>
<author initials="J." surname="Drake" fullname="J. Drake"><organization/></autho
r>
<author initials="Q." surname="Wu" fullname="Q. Wu"><organization/></author>
<date year="2019" month="March"/>
<abstract><t>In certain networks, such as, but not limited to, financial informa
tion networks (e.g., stock market data providers), network-performance criteria
(e.g., latency) are becoming as critical to data-path selection as other metrics
.</t><t>This document describes extensions to IS-IS Traffic Engineering Extensio
ns (RFC 5305). These extensions provide a way to distribute and collect network
-performance information in a scalable fashion. The information distributed usin
g IS-IS TE Metric Extensions can then be used to make path-selection decisions b
ased on network performance.</t><t>Note that this document only covers the mecha
nisms with which network-performance information is distributed. The mechanisms
for measuring network performance or acting on that information, once distribut
ed, are outside the scope of this document.</t><t>This document obsoletes RFC 78
10.</t></abstract>
</front> </front>
<seriesInfo name="RFC" value="8570"/> <seriesInfo name="RFC" value="9127"/>
<seriesInfo name="DOI" value="10.17487/RFC8570"/> <seriesInfo name="DOI" value="10.17487/RFC9127"/>
</reference> </reference>
<reference anchor="ISO-10589"> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
<front> FC.8405.xml"/>
<title>Intermediate System to Intermediate System intra- <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8446.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.8570.xml"/>
<reference anchor="ISO-10589" target="https://www.iso.org/standard/30932
.html">
<front>
<title>Intermediate System to Intermediate System intra-
domain routeing information exchange protocol for use in domain routeing information exchange protocol for use in
conjunction with the protocol for providing the conjunction with the protocol for providing the
connectionless-mode network service (ISO 8473)</title> connectionless-mode network service (ISO 8473)</title>
<author surname="ISO"/> <author><organization>ISO</organization></author>
<date year="2002"/> <date year="2002"/>
</front> </front>
<seriesInfo name="International Standard 10589: 2002," value="Second Editi <refcontent>International Standard 10589: 2002, Second Edition</refcon
on"/> tent>
</reference>
<reference anchor='W3C.REC-xml-20081126'
target='https://www.w3.org/TR/2008/REC-xml-20081126'>
<front>
<title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title>
<author initials='T.' surname='Bray' fullname='Tim Bray'>
<organization />
</author>
<author initials='J.' surname='Paoli' fullname='Jean Paoli'>
<organization />
</author>
<author initials='M.' surname='Sperberg-McQueen' fullname='Michael Sperberg
-McQueen'>
<organization />
</author>
<author initials='E.' surname='Maler' fullname='Eve Maler'>
<organization />
</author>
<author initials='F.' surname='Yergeau' fullname='Francois Yergeau'>
<organization />
</author>
<date month='November' year='2008' />
</front>
<seriesInfo name="World Wide Web Consortium Recommendation" value="REC-xml-
20081126"/>
</reference> </reference>
</references> </references>
<references title="Informative References"> <references>
<name>Informative References</name>
<reference anchor="RFC8340" target="https://www.rfc-editor.org/info/rfc8340"> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
<front> FC.8340.xml"/>
<title>YANG Tree Diagrams</title>
<author initials="M." surname="Bjorklund" fullname="M. Bjorklund"><organization/
></author>
<author initials="L." surname="Berger" fullname="L. Berger" role="editor"><organ
ization/></author>
<date year="2018" month="March"/>
<abstract><t>This document captures the current syntax used in YANG module tree
diagrams. The purpose of this document is to provide a single location for this
definition. This syntax may be updated from time to time based on the evolutio
n of the YANG language.</t></abstract>
</front>
<seriesInfo name="BCP" value="215"/>
<seriesInfo name="RFC" value="8340"/>
<seriesInfo name="DOI" value="10.17487/RFC8340"/>
</reference>
<reference anchor="I-D.ietf-rtgwg-segment-routing-ti-lfa">
<front>
<title>Topology Independent Fast Reroute using Segment Routing</title>
<author initials="S" surname="Litkowski" fullname="Stephane Litkowski">
<organization/>
</author>
<author initials="A" surname="Bashandy" fullname="Ahmed Bashandy">
<organization/>
</author>
<author initials="C" surname="Filsfils" fullname="Clarence Filsfils">
<organization/>
</author>
<author initials="B" surname="Decraene" fullname="Bruno Decraene">
<organization/>
</author>
<author initials="P" surname="Francois" fullname="Pierre Francois">
<organization/>
</author>
<author initials="d" surname="daniel.voyer@bell.ca" fullname="daniel.voyer@bell.
ca">
<organization/>
</author>
<author initials="F" surname="Clad" fullname="Francois Clad">
<organization/>
</author>
<author initials="P" surname="Camarillo" fullname="Pablo Camarillo">
<organization/>
</author>
<date month="March" day="5" year="2019"/>
<abstract><t>This document presents Topology Independent Loop-free Alternate Fas <!-- draft-ietf-rtgwg-segment-routing-ti-lfa (I-D Exists) -->
t Re-route (TI-LFA), aimed at providing protection of node and adjacency segment <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-rt
s within the Segment Routing (SR) framework. This Fast Re-route (FRR) behavior gwg-segment-routing-ti-lfa.xml"/>
builds on proven IP-FRR concepts being LFAs, remote LFAs (RLFA), and remote LFAs
with directed forwarding (DLFA). It extends these concepts to provide guarante
ed coverage in any IGP network. A key aspect of TI-LFA is the FRR path selectio
n approach establishing protection over the expected post-convergence paths from
the point of local repair, dramatically reducing the operational need to contro
l the tie-breaks among various FRR options.</t></abstract>
</front> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R
FC.7812.xml"/>
</references>
</references>
<section anchor="rpc-example" toc="default" numbered="true">
<name>Example of IS-IS Configuration in XML</name>
<t>This appendix gives an example of the configuration of an IS-IS instanc
e on a device.
The example is written in XML <xref target="W3C.REC-xml-20081126"/>.
<seriesInfo name="Internet-Draft" value="draft-ietf-rtgwg-segment-routing-ti-lfa <!-- [rfced] *[AD] and authors:
-01"/> Per <https://ietf.org/about/groups/iesg/statements/formal-languages-use/>,
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-rtgwg- we have added a citation for [W3C.REC-xml-20081126] here and added it
segment-routing-ti-lfa-01.txt"/> to the list of Normative References. Please let us know any objections.
</reference>
<reference anchor="RFC7812" target="https://www.rfc-editor.org/info/rfc7812"> Original:
<front> The example is written in XML.
<title>An Architecture for IP/LDP Fast Reroute Using Maximally Redundant Trees (
MRT-FRR)</title>
<author initials="A." surname="Atlas" fullname="A. Atlas"><organization/></autho
r>
<author initials="C." surname="Bowers" fullname="C. Bowers"><organization/></aut
hor>
<author initials="G." surname="Enyedi" fullname="G. Enyedi"><organization/></aut
hor>
<date year="2016" month="June"/>
<abstract><t>This document defines the architecture for IP and LDP Fast Reroute
using Maximally Redundant Trees (MRT-FRR). MRT-FRR is a technology that gives l
ink-protection and node-protection with 100% coverage in any network topology th
at is still connected after the failure.</t></abstract>
</front>
<seriesInfo name="RFC" value="7812"/>
<seriesInfo name="DOI" value="10.17487/RFC7812"/>
</reference>
</references> Currently:
<section anchor="rpc-example" title="Example of IS-IS configuration in XML" [W3C.REC-xml-20081126]
toc="default"> Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and
<t>This section gives an example of configuration of an IS-IS instance on F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth
a device. Edition)", World Wide Web Consortium Recommendation REC-
The example is written in XML.</t> xml-20081126, November 2008,
<https://www.w3.org/TR/2008/REC-xml-20081126>.
...
The example is written in XML [W3C.REC-xml-20081126]. -->
<figure title="" suppress-title="false" align="left" alt="" width="" heigh </t>
t=""> <sourcecode type="xml"><![CDATA[
<artwork xml:space="preserve" name="" type="" align="left" alt="" width= <?xml version="1.0" encoding="utf-8"?>
"" height=""> <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
&lt;?xml version="1.0" encoding="utf-8"?&gt; <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
&lt;data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"&gt; <name>SLI</name>
&lt;routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"&gt; <router-id>192.0.2.1</router-id>
&lt;name&gt;SLI&lt;/name&gt; <control-plane-protocols>
&lt;router-id&gt;192.0.2.1&lt;/router-id&gt; <control-plane-protocol>
&lt;control-plane-protocols&gt; <name>IS-IS-example</name>
&lt;control-plane-protocol&gt; <description/>
&lt;name&gt;ISIS-example&lt;/name&gt; <type>
&lt;description/&gt; <type xmlns:isis="urn:ietf:params:xml:ns:yang:ietf-isis">
&lt;type&gt;
&lt;type xmlns:isis="urn:ietf:params:xml:ns:yang:ietf-isis"&gt;
isis:isis isis:isis
&lt;/type&gt; </type>
&lt;/type&gt; </type>
&lt;isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis"&gt; <isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis">
&lt;enable&gt;true&lt;/enable&gt; <enable>true</enable>
&lt;level-type&gt;level-2&lt;/level-type&gt; <level-type>level-2</level-type>
&lt;system-id&gt;87FC.FCDF.4432&lt;/system-id&gt; <system-id>87FC.FCDF.4432</system-id>
&lt;area-address&gt;49.0001&lt;/area-address&gt; <area-address>49.0001</area-address>
&lt;mpls&gt; <mpls>
&lt;te-rid&gt; <te-rid>
&lt;ipv4-router-id&gt;192.0.2.1&lt;/ipv4-router-id&gt; <ipv4-router-id>192.0.2.1</ipv4-router-id>
&lt;/te-rid&gt; </te-rid>
&lt;/mpls&gt; </mpls>
&lt;lsp-lifetime&gt;65535&lt;/lsp-lifetime&gt; <lsp-lifetime>65535</lsp-lifetime>
&lt;lsp-refresh&gt;65000&lt;/lsp-refresh&gt; <lsp-refresh>65000</lsp-refresh>
&lt;metric-type&gt; <metric-type>
&lt;value&gt;wide-only&lt;/value&gt; <value>wide-only</value>
&lt;/metric-type&gt; </metric-type>
&lt;default-metric&gt; <default-metric>
&lt;value&gt;111111&lt;/value&gt; <value>111111</value>
&lt;/default-metric&gt; </default-metric>
&lt;address-families&gt; <address-families>
&lt;address-family-list&gt; <address-family-list>
&lt;address-family&gt;ipv4&lt;/address-family&gt; <address-family>ipv4</address-family>
&lt;enable&gt;true&lt;/enable&gt; <enable>true</enable>
&lt;/address-family-list&gt; </address-family-list>
&lt;address-family-list&gt; <address-family-list>
&lt;address-family&gt;ipv6&lt;/address-family&gt; <address-family>ipv6</address-family>
&lt;enable&gt;true&lt;/enable&gt; <enable>true</enable>
&lt;/address-family-list&gt; </address-family-list>
&lt;/address-families&gt; </address-families>
&lt;interfaces&gt; <interfaces>
&lt;interface&gt; <interface>
&lt;name&gt;Loopback0&lt;/name&gt; <name>Loopback0</name>
&lt;tag&gt;200&lt;/tag&gt; <tag>200</tag>
&lt;metric&gt; <metric>
&lt;value&gt;0&lt;/value&gt; <value>0</value>
&lt;/metric&gt; </metric>
&lt;passive&gt;true&lt;/passive&gt; <passive>true</passive>
&lt;/interface&gt; </interface>
&lt;interface&gt; <interface>
&lt;name&gt;Eth1&lt;/name&gt; <name>Eth1</name>
&lt;level-type&gt;level-2&lt;/level-type&gt; <level-type>level-2</level-type>
&lt;interface-type&gt;point-to-point&lt;/interface-type&gt; <interface-type>point-to-point</interface-type>
&lt;metric&gt; <metric>
&lt;value&gt;167890&lt;/value&gt; <value>167890</value>
&lt;/metric&gt; </metric>
&lt;/interface&gt; </interface>
&lt;/interfaces&gt; </interfaces>
&lt;/isis&gt; </isis>
&lt;/control-plane-protocol&gt; </control-plane-protocol>
&lt;/control-plane-protocols&gt; </control-plane-protocols>
&lt;/routing&gt; </routing>
&lt;interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"&gt; <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces">
&lt;interface&gt; <interface>
&lt;name&gt;Loopback0&lt;/name&gt; <name>Loopback0</name>
&lt;description/&gt; <description/>
&lt;type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"&gt; <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
ianaift:softwareLoopback ianaift:softwareLoopback
&lt;/type&gt; </type>
&lt;link-up-down-trap-enable&gt;enabled&lt;/link-up-down-trap-enable&gt; <link-up-down-trap-enable>enabled</link-up-down-trap-enable>
&lt;ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"&gt; <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
&lt;address&gt; <address>
&lt;ip&gt;192.0.2.1&lt;/ip&gt; <ip>192.0.2.1</ip>
&lt;prefix-length&gt;32&lt;/prefix-length&gt; <prefix-length>32</prefix-length>
&lt;/address&gt; </address>
&lt;/ipv4&gt; </ipv4>
&lt;ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"&gt; <ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
&lt;address&gt; <address>
&lt;ip&gt;2001:DB8::1&lt;/ip&gt; <ip>2001:db8::1</ip>
&lt;prefix-length&gt;128&lt;/prefix-length&gt; <prefix-length>128</prefix-length>
&lt;/address&gt; </address>
&lt;/ipv6&gt; </ipv6>
&lt;/interface&gt; </interface>
&lt;interface&gt; <interface>
&lt;name&gt;Eth1&lt;/name&gt; <name>Eth1</name>
&lt;description/&gt; <description/>
&lt;type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type"&gt; <type xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type">
ianaift:ethernetCsmacd ianaift:ethernetCsmacd
&lt;/type&gt; </type>
&lt;link-up-down-trap-enable&gt;enabled&lt;/link-up-down-trap-enable&gt; <link-up-down-trap-enable>enabled</link-up-down-trap-enable>
&lt;ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"&gt; <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
&lt;address&gt; <address>
&lt;ip&gt;198.51.100.1&lt;/ip&gt; <ip>198.51.100.1</ip>
&lt;prefix-length&gt;30&lt;/prefix-length&gt; <prefix-length>30</prefix-length>
&lt;/address&gt; </address>
&lt;/ipv4&gt; </ipv4>
&lt;ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"&gt; <ipv6 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip">
&lt;address&gt; <address>
&lt;ip&gt;2001:DB8:0:0:FF::1&lt;/ip&gt; <ip>2001:db8:0:0:ff::1</ip>
&lt;prefix-length&gt;64&lt;/prefix-length&gt; <prefix-length>64</prefix-length>
&lt;/address&gt; </address>
&lt;/ipv6&gt; </ipv6>
&lt;/interface&gt; </interface>
&lt;/interfaces&gt; </interfaces>
&lt;/data&gt; </data>]]></sourcecode>
</artwork> </section>
<section anchor="ack" toc="default" numbered="false">
<name>Acknowledgments</name>
<t>The authors would like to thank <contact fullname="Tom Petch"/>,
<contact fullname="Alvaro Retana"/>, <contact fullname="Stewart
Bryant"/>, <contact fullname="Barry Leiba"/>, <contact
fullname="Benjamin Kaduk"/>, <contact fullname="Adam Roach"/>,
and <contact fullname="Roman Danyliw"/> for their review and
comments.</t>
</section>
<section anchor="Contributors" toc="default" numbered="false">
<name>Contributors</name>
<t>The authors would like to thank
<contact fullname="Kiran Agrahara Sreenivasa"/>, <contact
fullname="Dean Bogdanovic"/>, <contact fullname="Yingzhen Qu"/>,
<contact fullname="Yi Yang"/>, and <contact fullname="Jeff Tantsura"/>
for their major contributions to this document.</t>
</section>
</figure> <!-- [rfced] Please review the "Inclusive Language" portion of the
online Style Guide at
<https://www.rfc-editor.org/styleguide/part2/#inclusive_language>,
and let us know if any changes are needed. -->
</section>
</back> </back>
</rfc> </rfc>
 End of changes. 794 change blocks. 
2584 lines changed or deleted 2360 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/

mirror server hosted at Truenetwork, Russian Federation.