One document matched: draft-litkowski-netmod-isis-cfg-00.xml
<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC6020 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6020.xml">
<!ENTITY YANG-RTG SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-netmod-routing-cfg.xml">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- used by XSLT processors -->
<!-- OPTIONS, known as processing instructions (PIs) go here. -->
<!-- For a complete list and description of PIs,
please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable PIs that most I-Ds might want to use. -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC): -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="3"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references: -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space:
(using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of popular PIs -->
<rfc category="std" docName="draft-litkowski-netmod-isis-cfg-00"
ipr="trust200902">
<front>
<title abbrev="isis-cfg">Yang Data Model for ISIS protocol</title>
<author fullname="Stephane Litkowski" initials="S" surname="Litkowski">
<organization>Orange</organization>
<address>
<!-- postal><street/><city/><region/><code/><country/></postal -->
<!-- <phone/> -->
<!-- <facsimile/> -->
<email>stephane.litkowski@orange.com</email>
<!-- <uri/> -->
</address>
</author>
<date year="2014"/>
<area/>
<workgroup>Network Working Group</workgroup>
<!-- <keyword/> -->
<!-- <keyword/> -->
<!-- <keyword/> -->
<!-- <keyword/> -->
<abstract>
<t>This document defines a YANG data model that can be used to configure and manage ISIS protocol.</t>
</abstract>
<note title="Requirements Language">
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <xref
target="RFC2119"/>.</t>
</note>
</front>
<middle>
<section anchor="introduction" title="Introduction">
<t>
This document defines a YANG data model that can be used to configure and manage ISIS protocol.
</t>
</section>
<section anchor="design" title="Design of the data model">
<t>
The ISIS Yang module is divided in two main containers :
<list style="symbols">
<t>isis-cfg : that contains writable configuration objects.</t>
<t>isis-op : that contains read-only states.</t>
</list>
</t>
<t>Each of this container contains a list of instances as many implementations are currently supporting multiple ISIS instances within a single virtual-router.</t>
<t>The figure below describe the overall structure of the isis Yang module : </t>
<figure>
<artwork>
module: isis
+--rw isis-cfg
| +--rw instances
| +--rw instance [name]
| +--rw name
| +--rw enabled
| +--rw isis-level
| +--rw area
| +--rw system-id
| +--rw ipv4-router-id
| +--rw ipv6-router-id
| +--rw reference-bandwidth
| +--rw lsp-mtu
| +--rw lsp-lifetime
| +--rw lsp-refresh
| +--rw isis-authentication-cfg
| | ...
| +--rw multi-topology-cfg
| | ...
| +--rw isis-level-1-cfg
| | ...
| +--rw isis-level-2-cfg
| | ...
| +--rw overload
| | ...
| +--rw interfaces
| +--rw interface [name]
| ...
|
+--ro isis-op
+--ro instances
+--ro instance [name]
+--ro adjacencies
| +--ro adjacency [interface]
| +--ro interface
| +--ro level
| +--ro state
+--ro spf-log
| +--ro event [id]
| +--ro id
| +--ro level
| +--ro spf-type
| +--ro spf-delay
| +--ro schedule-timestamp
| +--ro start-timestamp
| +--ro end-timestamp
| +--ro trigger-lsp [lsp]
| +--ro lsp
| +--ro sequence
+--ro lsp-log
| +--ro event [id]
| +--ro id
| +--ro level
| +--ro lsp
| +--ro lsp
| +--ro sequence
| +--ro received-timestamp
+--ro database
| +--ro level-1
| ...
| +--ro level-2
| ...
+--ro hostnames
+--ro hostname [system-id]
+--ro system-id
+--ro hostname
</artwork>
</figure>
<section anchor="yang-authentication" title="Authentication parameters">
<t>The following figure describes the global authentication parameters for a particular ISIS instance.</t>
<figure>
<artwork>
+--rw isis-authentication-cfg
+--rw psnp-authentication
+--rw csnp-authentication
+--rw hello-authentication
+--rw authentication-key
+--rw authentication-type
</artwork>
</figure>
</section>
<section anchor="yang-multitopology" title="Multitopology parameters">
<t>The multitopology section is used to enable support of MT extensions for specific address families.</t>
<figure>
<artwork>
+--rw multi-topology-cfg
+--rw ipv4-unicast
+--rw ipv6-unicast
+--rw ipv4-multicast
+--rw ipv6-multicast
</artwork>
</figure>
</section>
<section anchor="yang-level" title="Per level parameters">
<t>The level parameter section of the ISIS instance describes the global parameters for level 1 and 2 including authentication, protocol preferences, default metrics ...</t>
<figure>
<artwork>
+--rw isis-level-1-cfg
+--rw enabled
+--rw psnp-authentication
+--rw csnp-authentication
+--rw hello-authentication
+--rw authentication-key
+--rw authentication-type
+--rw metric-type
+--rw preference
+--rw external-preference
+--rw default-ipv4-unicast-metric
+--rw default-ipv6-unicast-metric
+--rw default-ipv4-multicast-metric
+--rw default-ipv6-multicast-metric
</artwork>
</figure>
</section>
<section anchor="yang-interface" title="Per interface parameters">
<t>The per-interface section of the ISIS instance describes the interface specific parameters.</t>
<figure>
<artwork>
+--rw interface [name]
+--rw name
+--rw level
+--rw lsp-interval
+--rw passive
+--rw csnp-interval
+--rw hello-authentication-type
+--rw hello-authentication-key
+--rw hello-interval
+--rw hello-multiplier
+--rw hello-padding
+--rw ipv4-unicast
+--rw ipv6-unicast
+--rw ipv4-multicast
+--rw ipv6-multicast
+--rw interface-type
+--rw enabled
+--rw tag
+--rw level-1
| +--rw hello-authentication-type
| +--rw hello-authentication-key
| +--rw hello-interval
| +--rw hello-multiplier
| +--rw ipv4-unicast
| +--rw ipv6-unicast
| +--rw ipv4-multicast
| +--rw ipv6-multicast
| +--rw priority
| +--rw ipv4-unicast-metric
| +--rw ipv6-unicast-metric
| +--rw ipv4-multicast-metric
| +--rw ipv6-multicast-metric
| +--rw passive
|
+--rw level-2
+--rw hello-authentication-type
+--rw hello-authentication-key
+--rw hello-interval
+--rw hello-multiplier
+--rw ipv4-unicast
+--rw ipv6-unicast
+--rw ipv4-multicast
+--rw ipv6-multicast
+--rw priority
+--rw ipv4-unicast-metric
+--rw ipv6-unicast-metric
+--rw ipv4-multicast-metric
+--rw ipv6-multicast-metric
+--rw passive
</artwork>
</figure>
</section>
<section anchor="yang-op" title="Operational states">
<t>isis-op container provides operational states for ISIS. This container is divided in multiple components :
<list style="symbols">
<t>adjacencies : provides state information about current ISIS adjacencies.</t>
<t>spf-log : provides information about SPF events on the node.</t>
<t>lsp-log : provides information about LSP events on the node (reception of an LSP or modification of local LSP).</t>
<t>database : provides details on current LSDB.</t>
<t>Hostname : provides information about system-id to hostname mappings.</t>
</list>
</t>
</section>
</section>
<section anchor="yang" title="Yang module">
<figure>
<artwork>
module isis {
namespace TBD;
prefix isis;
import ietf-routing {
prefix "rt";
}
import ietf-inet-types {
prefix inet;
}
import ietf-yang-types {
prefix yang;
}
contact
"Stephane Litkowski
Email : stephane.litkowski@orange.com";
description
"The YANG module defines a generic configuration model for ISIS
common across all of the vendor implementations.";
revision 2014-06-11 {
description "Initial revision.";
}
identity isis {
base rt:routing-protocol;
description "Identity for the ISIS routing protocol.";
}
typedef isis-level {
type enumeration {
enum level-1;
enum level-2;
enum level-1-2;
}
}
typedef isis-wide-metric {
type uint32 {
range "0 .. 16777215";
}
}
typedef isis-std-metric {
type uint8 {
range "0 .. 63";
}
}
grouping isis-route-content {
leaf metric {
type uint32;
}
leaf-list tag {
type uint32;
}
leaf route-type {
type enumeration {
enum l2-up-internal;
enum l1-up-internal;
enum l2-up-external;
enum l1-up-external;
enum l2-down-internal;
enum l1-down-internal;
enum l2-down-external;
enum l1-down-external;
}
}
}
augment "/rt:routing/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" {
when "rt:source-protocol = 'isis:isis'" {
description "ISIS-specific route attributes.";
}
uses isis-route-content;
}
augment "/rt:active-route/rt:output/rt:route/"
{
description "ISIS-specific route attributes.";
uses isis-route-content;
}
grouping isis-prefix-ipv4-std {
leaf up-down {
description "This leaf expresses the value of up/down bit.";
type boolean;
}
leaf i-e {
description "This leaf expresses the value of I/E bit.";
type boolean;
}
leaf ip-prefix {
type inet:ipv4-address;
}
leaf prefix-len {
type uint8;
}
leaf default-metric {
type isis-std-metric;
}
leaf delay-metric {
type isis-std-metric;
}
leaf expense-metric {
type isis-std-metric;
}
leaf error-metric {
type isis-std-metric;
}
}
grouping isis-prefix-ipv4-extended {
leaf up-down {
description "This leaf expresses the value of up/down bit.";
type boolean;
}
leaf ip-prefix {
type inet:ipv4-address;
}
leaf prefix-len {
type uint8;
}
leaf metric {
type isis-wide-metric;
}
leaf-list SUBTLV1 {
type uint32;
}
}
grouping isis-prefix-ipv6-extended {
leaf up-down {
description "This leaf expresses the value of up/down bit.";
type boolean;
}
leaf ip-prefix {
type inet:ipv6-address;
}
leaf prefix-len {
type uint8;
}
leaf metric {
type isis-wide-metric;
}
leaf-list SUBTLV1 {
type uint32;
}
}
grouping isis-neighbor-extended {
leaf system-id {
type string;
}
leaf metric {
type isis-wide-metric;
}
}
grouping isis-database {
leaf id {
type string;
}
leaf checksum {
type uint16;
}
leaf sequence {
type uint32;
}
leaf attributes {
type bits {
bit PARTITIONNED;
bit ATTACHED-ERROR;
bit ATTACHED-EXPENSE;
bit ATTACHED-DELAY;
bit ATTACHED-DEFAULT;
bit OVERLOAD;
}
}
leaf isis-level {
type isis-level;
}
container TLV10 {
description "This leaf describes authentication information of the node.";
leaf authentication-type {
type uint8;
}
leaf authentication-key {
type string;
}
}
container TLV22 {
list neighbor {
key "system-id";
uses isis-neighbor-extended;
}
}
container TLV128 {
list ip-internal-reachability {
key "ip-prefix";
uses isis-prefix-ipv4-std;
}
}
leaf-list TLV129 {
description "This leaf describes the protocol supported by the node.";
type uint8;
}
container TLV130 {
list ip-external-reachability {
key "ip-prefix";
uses isis-prefix-ipv4-std;
}
}
leaf-list TLV132 {
description "This leaf describes the ipv4 addresses of the node.";
type inet:ipv4-address;
}
leaf TLV134 {
description "This leaf describes the IPv4 Traffic Engineering router ID of the node.";
type inet:ipv4-address;
}
container TLV135 {
list extended-ip-reachability {
key "ip-prefix";
uses isis-prefix-ipv4-extended;
}
}
leaf TLV137 {
description "This leaf describes the name of the node.";
type string;
}
leaf TLV140 {
description "This leaf describes the IPv6 Traffic Engineering router ID of the node.";
type inet:ipv6-address;
}
container TLV222 {
list neighbor {
key "system-id";
leaf MT-ID {
type uint16 {
range "0 .. 4095";
}
}
uses isis-neighbor-extended;
}
}
container TLV229 {
description "This leaf describes the MT entries.";
list topology {
key "MT-ID";
leaf MT-ID {
type uint16 {
range "0 .. 4095";
}
}
leaf attributes {
type bits {
bit OVERLOAD;
bit ATTACHED;
}
}
}
}
leaf-list TLV232 {
description "This leaf describes the ipv6 addresses of the node.";
type inet:ipv6-address;
}
container TLV235 {
list extended-ip-reachability {
key "ip-prefix";
leaf MT-ID {
type uint16 {
range "0 .. 4095";
}
}
uses isis-prefix-ipv4-extended;
}
}
container TLV237 {
list extended-ip-reachability {
key "ip-prefix";
leaf MT-ID {
type uint16 {
range "0 .. 4095";
}
}
uses isis-prefix-ipv6-extended;
}
}
container TLV236 {
list extended-ipv6-reachability {
key "ip-prefix";
uses isis-prefix-ipv6-extended;
}
}
container TLV242 {
description "This leaf describes the capabilities of the node. This container may be extended with detailled information.";
leaf binary {
type binary;
}
}
}
grouping address-family-cfg {
leaf ipv4-unicast {
description "This leaf defines if IPv4 unicast is activated.";
type boolean;
}
leaf ipv6-unicast {
description "This leaf defines if IPv6 unicast is activated.";
type boolean;
}
leaf ipv4-multicast {
description "This leaf defines if IPv4 multicast is activated.";
type boolean;
}
leaf ipv6-multicast {
description "This leaf defines if IPv6 multicast is activated.";
type boolean;
}
}
grouping interface-hello-cfg {
leaf hello-authentication-type {
type enumeration {
enum none;
enum plaintext;
enum message-digest;
}
}
leaf hello-authentication-key {
type string;
}
leaf hello-interval {
description "This leaf defines the interval of hello messages.";
type uint16;
}
leaf hello-multiplier {
description "This leaf defines the number of hello failed to be received before declaring the adjacency down.";
type uint16;
}
}
grouping interface-level-cfg {
uses interface-hello-cfg;
uses address-family-cfg;
leaf priority {
type uint8 {
range "0 .. 127";
}
}
leaf ipv4-unicast-metric {
type isis-wide-metric;
}
leaf ipv6-unicast-metric {
type isis-wide-metric;
}
leaf ipv4-multicast-metric {
type isis-wide-metric;
}
leaf ipv6-multicast-metric {
type isis-wide-metric;
}
leaf passive {
description "This leaf defines if interface is in passive mode (ISIS not running, but network is advertised).";
type boolean;
default "false";
}
}
grouping interface-cfg {
description "ISIS is enabled on interfaces that have an entry in this list, unless 'enabled' is set to 'false' for that entry.";
leaf name {
type leafref {
path "/rt:routing/rt:router/rt:interfaces/rt:interfaces/rt:interface/rt:name";
}
}
leaf level {
description "This leaf defines the associated ISIS level of the interface.";
type isis-level;
}
leaf lsp-interval {
description "This leaf defines the interval between LSP transmissions in msec";
type uint16;
}
leaf passive {
description "This leaf defines if interface is in passive mode (ISIS not running, but network is advertised).";
type boolean;
default "false";
}
leaf csnp-interval {
type uint16;
}
uses interface-hello-cfg;
leaf hello-padding {
description "This leaf defines if ISIS Hellos would be padded up to MTU size.";
type boolean;
}
uses address-family-cfg;
leaf interface-type {
type enumeration {
enum broadcast;
enum point-to-point;
}
}
leaf enabled {
type boolean;
default "true";
}
leaf-list tag {
description "This leaf defines list of tags associated with the interface.";
type uint32;
}
container level-1 {
uses interface-level-cfg;
}
container level-2 {
uses interface-level-cfg;
}
}
grouping isis-authentication-cfg {
leaf psnp-authentication {
type boolean;
default "true";
}
leaf csnp-authentication {
type boolean;
default "true";
}
leaf hello-authentication {
type boolean;
default "true";
}
leaf authentication-key {
type string;
}
leaf authentication-type {
type enumeration {
enum none;
enum plaintext;
enum message-digest;
}
}
}
grouping isis-level-cfg {
leaf enabled {
description "This leaf defines the status of the administrative status of the level (Active / not active).";
type boolean;
default "true";
}
uses isis-authentication-cfg;
leaf metric-type {
type enumeration {
enum wide-only;
enum old-only;
enum both;
}
}
leaf preference {
description "This leaf defines the protocol preference.";
type uint8;
}
leaf external-preference {
description "This leaf defines the protocol preference for external routes.";
type uint8;
}
leaf default-ipv4-unicast-metric {
description "This leaf defines the IPv4 unicast default metric.";
type isis-wide-metric;
}
leaf default-ipv6-unicast-metric {
description "This leaf defines the IPv6 unicast default metric.";
type isis-wide-metric;
}
leaf default-ipv4-multicast-metric {
description "This leaf defines the IPv4 multicast default metric.";
type isis-wide-metric;
}
leaf default-ipv6-multicast-metric {
description "This leaf defines the IPv6 multicast default metric.";
type isis-wide-metric;
}
}
augment "/rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/" {
when "rt:type = 'isis:isis'" {
description "This augment is only valid when routing protocol instance type is isis.";
}
container isis-cfg {
container instances {
description ".";
list instance {
key "name";
description "Defines the list of ISIS instances.";
leaf name {
type string;
}
leaf enabled {
type boolean;
default "true";
}
leaf isis-level {
type isis-level;
}
leaf area-id {
type string;
}
leaf system-id {
type string;
}
leaf ipv4-router-id {
description "Router ID value that would be used in TLV134.";
type inet:ipv4-address;
}
leaf ipv6-router-id {
description "Router ID value that would be used in TLV234.";
type inet:ipv6-address;
}
leaf reference-bandwidth {
description "This leaf defines the bandwidth for calculating metric.";
type uint32;
}
leaf lsp-mtu {
description "This leaf describes the maximum size of a LSP PDU in bytes.";
type uint16;
}
leaf lsp-lifetime {
description "This leaf describes the lifetime of the router LSP in seconds.";
type uint16;
}
leaf lsp-refresh {
description "This leaf describes the refresh interval of the router LSP in seconds.";
type uint16;
}
uses isis-authentication-cfg;
container multi-topology-cfg {
description "This container describes activation of MT extensions for supporting new address families.";
uses address-family-cfg;
}
container isis-level-1-cfg {
description "Defines configuration parameters of level 1.";
uses isis-level-cfg;
}
container isis-level-2-cfg {
description "Defines configuration parameters of level 2.";
uses isis-level-cfg;
}
container overload {
description "This leaf describes if the router is set to overload state.";
leaf status {
type boolean;
}
leaf timeout {
type uint16;
}
}
container interfaces {
list interface {
key "name";
uses interface-cfg;
}
}
}
}
}
container isis-op {
config false;
container adjacencies {
description "This container lists the adjacencies of the local node.";
list adjacency {
key interface;
leaf interface {
type string;
}
leaf level {
type isis-level;
}
leaf state {
type enumeration {
enum "Up";
enum "Down";
enum "Init";
}
}
}
}
container spf-log {
description "This container lists the SPF computation events.";
list event {
key id;
leaf id {
type uint32;
}
leaf spf-type {
type enumeration {
enum full;
enum incremental;
enum route-only;
}
}
leaf level {
type isis-level;
}
leaf spf-delay {
description "This leaf describes the SPF delay that was used for this event.";
type uint32;
}
leaf schedule-timestamp {
type yang:timestamp;
}
leaf start-timestamp {
type yang:timestamp;
}
leaf end-timestamp {
type yang:timestamp;
}
list trigger-lsp {
key "lsp";
leaf lsp {
type string;
}
leaf sequence {
type uint32;
}
}
}
}
container lsp-log {
description "This container lists the LSP reception events.";
list event {
key id;
leaf id {
type uint32;
}
leaf level {
type isis-level;
}
container lsp {
leaf lsp {
type string;
}
leaf sequence {
type uint32;
}
}
leaf received-timestamp {
type yang:timestamp;
}
}
}
container database {
container level-1 {
list lsp {
key id;
uses isis-database;
}
}
container level-2 {
list lsp {
key id;
uses isis-database;
}
}
}
container hostnames {
list hostname {
key system-id;
leaf system-id {
type string;
}
leaf hostname {
type string;
}
}
}
}
}
}
</artwork>
</figure>
</section>
<section anchor="Security" title="Security Considerations">
</section>
<section anchor="Acknowledgements" title="Acknowledgements">
<t>
</t>
</section>
<section anchor="IANA" title="IANA Considerations">
</section>
</middle>
<back>
<references title="Normative References">
&RFC2119;
&RFC6020;
&YANG-RTG;
</references>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-24 02:56:43 |