| < draft-ietf-isis-yang-isis-cfg-37.txt | draft-ietf-isis-yang-isis-cfg-38.txt > | |||
|---|---|---|---|---|
| IS-IS Working Group S. Litkowski | IS-IS Working Group S. Litkowski | |||
| Internet-Draft Orange | Internet-Draft Orange | |||
| Intended status: Standards Track D. Yeung | Intended status: Standards Track D. Yeung | |||
| Expires: March 12, 2020 Arrcus, Inc | Expires: March 29, 2020 Arrcus, Inc | |||
| A. Lindem | A. Lindem | |||
| Cisco Systems | Cisco Systems | |||
| J. Zhang | J. Zhang | |||
| Juniper Networks | Juniper Networks | |||
| L. Lhotka | L. Lhotka | |||
| CZ.NIC | CZ.NIC | |||
| September 9, 2019 | September 26, 2019 | |||
| YANG Data Model for IS-IS Protocol | YANG Data Model for IS-IS Protocol | |||
| draft-ietf-isis-yang-isis-cfg-37 | draft-ietf-isis-yang-isis-cfg-38 | |||
| Abstract | Abstract | |||
| This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
| and manage IS-IS protocol on network elements. | and manage the IS-IS protocol on network elements. | |||
| Requirements Language | Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| Status of This Memo | Status of This Memo | |||
| skipping to change at page 1, line 46 ¶ | skipping to change at page 1, line 46 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on March 12, 2020. | This Internet-Draft will expire on March 29, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 25 ¶ | skipping to change at page 2, line 25 ¶ | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 | 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9 | 2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 9 | |||
| 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 9 | 2.2. Multi-topology Parameters . . . . . . . . . . . . . . . . 9 | |||
| 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 | 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 | |||
| 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 11 | 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 11 | |||
| 2.5. Authentication Parameters . . . . . . . . . . . . . . . . 18 | 2.5. Authentication Parameters . . . . . . . . . . . . . . . . 18 | |||
| 2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 19 | 2.6. IGP/LDP synchronization . . . . . . . . . . . . . . . . . 19 | |||
| 2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 19 | 2.7. ISO parameters . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 2.8. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 2.9. Operational States . . . . . . . . . . . . . . . . . . . 19 | 2.9. Operational States . . . . . . . . . . . . . . . . . . . 20 | |||
| 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 20 | 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 20 | 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 22 | 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 22 | |||
| 6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 22 | 6. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 105 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 105 | |||
| 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 107 | 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 107 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 107 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 107 | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 107 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 107 | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 107 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 108 | |||
| 10.2. Informative References . . . . . . . . . . . . . . . . . 112 | 11.1. Normative References . . . . . . . . . . . . . . . . . . 108 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 112 | ||||
| Appendix A. Example of IS-IS configuration in XML . . . . . . . 112 | Appendix A. Example of IS-IS configuration in XML . . . . . . . 112 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 114 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 114 | |||
| 1. Introduction | 1. Introduction | |||
| This document defines a YANG [RFC7950] data model for IS-IS routing | This document defines a YANG [RFC7950] data model for IS-IS routing | |||
| protocol. | protocol. | |||
| The data model covers configuration of an IS-IS routing protocol | The data model covers configuration of an IS-IS routing protocol | |||
| instance as well as operational states. | instance, as well as, the retrieval of IS-IS operational state. | |||
| A simplified tree representation of the data model is presented in | A simplified tree representation of the data model is presented in | |||
| Section 2. Tree diagrams used in this document follow the notation | Section 2. Tree diagrams used in this document follow the notation | |||
| defined in [RFC8340]. | defined in [RFC8340]. | |||
| The module is designed as per NMDA (Network Management Datastore | The module is designed as per the NMDA (Network Management Datastore | |||
| Architecture) [RFC8342]. | Architecture) [RFC8342]. | |||
| 2. Design of the Data Model | 2. Design of the Data Model | |||
| The IS-IS YANG module augments the "control-plane-protocol" list in | The IS-IS YANG module augments the "control-plane-protocol" list in | |||
| ietf-routing module [RFC8349] with specific IS-IS parameters. | the ietf-routing module [RFC8349] with specific IS-IS parameters. | |||
| The figure below describes the overall structure of the isis YANG | The figure below describes the overall structure of the ietf-isis | |||
| module: | YANG module: | |||
| 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 | augment | |||
| | /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: | | /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: | |||
| skipping to change at page 9, line 13 ¶ | skipping to change at page 9, line 16 ¶ | |||
| +---n lsp-generation | +---n lsp-generation | |||
| +--ro routing-protocol-name? | +--ro routing-protocol-name? | |||
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | -> /rt:routing/control-plane-protocols/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 | |||
| 2.1. IS-IS Configuration | 2.1. IS-IS Configuration | |||
| The IS-IS configuration is divided in: | The IS-IS configuration is divided into: | |||
| o Global parameters. | o Global parameters. | |||
| o Per interface configuration (see Section 2.4). | o Per-interface configuration (see Section 2.4). | |||
| Additional modules may be created to support any additional | Additional modules may be created to support additional parameters. | |||
| parameters. These additional modules MUST augment the ietf-isis | These additional modules MUST augment the ietf-isis module. | |||
| module. | ||||
| The model implements features, thus some of the configuration | The model includes optional features, for which the corresponding | |||
| statement becomes optional. As an example, the ability to control | configuration data nodes are also optional. As an example, the | |||
| the administrative state of a particular IS-IS instance is optional. | ability to control the administrative state of a particular IS-IS | |||
| By advertising the feature "admin-control", a device communicates to | instance is optional. By advertising the feature "admin-control", a | |||
| the client that it supports the ability to shutdown a particular IS- | device communicates to the client that it supports the ability to | |||
| IS instance. | shut down a particular IS-IS instance. | |||
| The global configuration contains usual IS-IS parameters such as lsp- | The global configuration contains usual IS-IS parameters, such as, | |||
| mtu, lsp-lifetime, lsp-refresh, default-metric... | lsp-mtu, lsp-lifetime, lsp-refresh, default-metric, etc. | |||
| 2.2. Multitopology Parameters | 2.2. Multi-topology Parameters | |||
| The model supports multitopology (MT) IS-IS as defined in [RFC5120]. | The model supports multi-topology (MT) IS-IS as defined in [RFC5120]. | |||
| The "topologies" container is used to enable support of MT | The "topologies" container is used to enable support of the MT | |||
| extensions. | extensions. | |||
| The "name" used in the topology list should refer to an existing RIB | The "name" used in the topology list should refer to an existing | |||
| of the device. | Routing Information Base (RIB) defined for the device [RFC8349]. | |||
| Some specific parameters can be defined on a per topology basis both | Some specific parameters can be defined on a per-topology basis, both | |||
| at global level and at interface level: for example, an interface | at the global level and at the interface level: for example, an | |||
| metric can be defined per topology. | interface metric can be defined per-topology. | |||
| Multiple address families (like IPv4 or IPv6) can also be activated | Multiple address families (such as, IPv4 or IPv6) can also be enabled | |||
| within the default topology. This can be achieved using the address- | within the default topology. This can be achieved using the address- | |||
| families container (requiring "nlpid-control" feature to be | families container (requiring the "nlpid-control" feature to be | |||
| advertised). | supported). | |||
| 2.3. Per-Level Parameters | 2.3. Per-Level Parameters | |||
| Some parameters allow a per level configuration. In this case, the | Some parameters allow a per-level configuration. For such | |||
| parameter is modeled as a container with three configuration | parameters, the parameter is modeled as a container with three | |||
| locations: | configuration locations: | |||
| o a top-level container: corresponds to level-1-2, so the | o a Top-level container: Corresponds to level-1-2, so the | |||
| configuration applies to both levels. | configuration applies to both levels. | |||
| o a level-1 container: corresponds to level-1 specific parameters. | o a Level-1 container: Corresponds to level-1 specific parameters. | |||
| o a level-2 container: corresponds to level-2 specific parameters. | o a Level-2 container: Corresponds to level-2 specific parameters. | |||
| +--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 | |||
| Example: | Example: | |||
| <priority> | <priority> | |||
| <value>250</value> | <value>250</value> | |||
| <level-1> | <level-1> | |||
| <value>100</value> | <value>100</value> | |||
| </level-1> | </level-1> | |||
| <level-2> | <level-2> | |||
| <value>200</value> | <value>200</value> | |||
| </level-2> | </level-2> | |||
| </priority> | </priority> | |||
| An implementation MUST prefer a level specific parameter over a | An implementation MUST prefer a level-specific parameter over a top- | |||
| level-all parameter. As example, if the priority is 100 for the | level parameter. For example, if the priority is 100 for the level- | |||
| level-1, 200 for the level-2 and 250 for the top-level configuration, | 1, 200 for the level-2 and 250 for the top-level configuration, the | |||
| the implementation should use 100 for the level-1 and 200 for the | implementation must use 100 for the level-1 priority and 200 for the | |||
| level-2. | level-2 priority. | |||
| Some parameters like "overload bit" and "route preference" are not | Some parameters, such as, "overload bit" and "route preference", are | |||
| modeled to support a per level configuration. If an implementation | not modeled to support a per-level configuration. If an | |||
| supports per level configuration for such parameter, this | implementation supports per-level configuration for such parameter, | |||
| implementation MUST augment the current model by adding both level-1 | this implementation MUST augment the current model by adding both | |||
| and level-2 containers and MUST reuse existing configuration | level-1 and level-2 containers and MUST reuse existing configuration | |||
| groupings. | groupings. | |||
| Example of augmentation: | Example of augmentation: | |||
| 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 augment IS-IS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| "This augments IS-IS overload configuration | "This augments 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."; | |||
| } | } | |||
| } | } | |||
| If an implementation does not support per level configuration for a | If an implementation does not support per-level configuration for a | |||
| parameter modeled with per level configuration, the implementation | parameter modeled with per-level configuration, the implementation | |||
| should advertise a deviation to announce the non-support of the | SHOULD advertise a deviation to announce the non-support of the | |||
| level-1 and level-2 containers. | level-1 and level-2 containers. | |||
| Finally, if an implementation supports per level configuration but | Finally, if an implementation supports per-level configuration but | |||
| does not support the level-1-2 configuration, it SHOULD also | does not support the level-1-2 configuration, it SHOULD also | |||
| advertise a deviation. | advertise a deviation. | |||
| 2.4. Per-Interface Parameters | 2.4. Per-Interface Parameters | |||
| The per-interface section of the IS-IS instance describes the | The per-interface section of the IS-IS instance describes the | |||
| interface specific parameters. | interface-specific parameters. | |||
| The interface is modeled as a reference to an existing interface | The interface is modeled as a reference to an existing interface | |||
| defined in the "ietf-interfaces" YANG model ([RFC8343]. | defined in the "ietf-interfaces" YANG model ([RFC8343]. | |||
| Each interface has some interface-specific parameters that may have a | Each interface has some interface-specific parameters that may have a | |||
| different per level value as described in previous section. An | different per-level value as described in the previous section. An | |||
| interface-specific parameter MUST be preferred over an IS-IS global | interface-specific parameter MUST be preferred over an IS-IS global | |||
| parameter. | parameter. | |||
| Some parameters like hello-padding are defined as containers to allow | Some parameters, such as, hello-padding are defined as containers to | |||
| easy extension by vendor specific modules. | allow easy extension by vendor-specific modules. | |||
| +--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? | +--rw lsp-pacing-interval? | |||
| | rt-types:timer-value-milliseconds | | rt-types:timer-value-milliseconds | |||
| +--rw lsp-retransmit-interval? | +--rw lsp-retransmit-interval? | |||
| | rt-types:timer-value-seconds16 | | rt-types:timer-value-seconds16 | |||
| skipping to change at page 18, line 46 ¶ | skipping to change at page 18, line 49 ¶ | |||
| -> /rt:routing/control-plane-protocols/control-plane-protocol/name | -> /rt:routing/control-plane-protocols/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 | |||
| 2.5. Authentication Parameters | 2.5. Authentication Parameters | |||
| The module enables authentication configuration through the IETF key- | The module enables authentication configuration through the IETF key- | |||
| chain module [RFC8177]. The IS-IS module imports the "ietf-key- | chain module [RFC8177]. The IS-IS module imports the "ietf-key- | |||
| chain" module and reuses some groupings to allow global and per | chain" module and reuses some groupings to allow global and per- | |||
| interface configuration of authentication. If a global | interface configuration of authentication. If global authentication | |||
| authentication is configured, an implementation SHOULD authenticate | is configured, an implementation SHOULD authenticate PSNPs (Partial | |||
| PSNPs (Partial Sequence Number Packets), CSNPs (Complete Sequence | Sequence Number Packets), CSNPs (Complete Sequence Number Packets) | |||
| Number Packets) and LSPs (Link State Packets) with the authentication | and LSPs (Link State Packets) with the authentication parameters | |||
| parameters supplied. The authentication of HELLO PDUs (Protocol Data | supplied. The authentication of HELLO PDUs (Protocol Data Units) can | |||
| Units) can be activated on a per interface basis. | be activated on a per-interface basis. | |||
| 2.6. IGP/LDP synchronization | 2.6. IGP/LDP synchronization | |||
| [RFC5443] defines a mechanism where IGP (Interior Gateway Protocol) | [RFC5443] defines a mechanism where IGP (Interior Gateway Protocol) | |||
| needs to be synchronized with LDP (Label Distribution Protocol). An | needs to be synchronized with LDP (Label Distribution Protocol). An | |||
| "ldp-igp-sync" feature has been defined in the model to support this | "ldp-igp-sync" feature has been defined in the model to support this | |||
| mechanism. The "mpls/ldp/igp-sync" leaf under "interface" allows | functionality. The "mpls/ldp/igp-sync" leaf under "interface" allows | |||
| activation of the mechanism on a per interface basis. The "mpls/ldp/ | activation of the mechanism on a per-interface basis. The "mpls/ldp/ | |||
| igp-sync" container in the global configuration is empty on purpose | igp-sync" container in the global configuration is intentionally | |||
| and is not required for the activation. The goal of this empty | empty and is not required for feature activation. The goal of this | |||
| container is to allow easy augmentation with additional parameters | empty container is to facilitate augmentation with additional | |||
| like timers for example. | parameters, e.g., timers. | |||
| 2.7. ISO parameters | 2.7. ISO parameters | |||
| As IS-IS protocol is based on ISO protocol suite, some ISO parameters | As the IS-IS protocol is based on the ISO protocol suite, some ISO | |||
| may be required. | parameters may be required. | |||
| This module augments interface configuration model to support ISO | This module augments interface configuration model to support | |||
| configuration parameters. | selected ISO configuration parameters. | |||
| The clns-mtu can be defined under the interface. | The clns-mtu can be configured for an interface. | |||
| 2.8. IP FRR | 2.8. IP FRR | |||
| This YANG module supports LFA (Loop Free Alternates) [RFC5286] and | This YANG module supports LFA (Loop Free Alternates) [RFC5286] and | |||
| remote LFA [RFC7490] as IP FRR techniques. The "fast-reroute" | remote LFA [RFC7490] as IP Fast Re-Route (FRR) techniques. The | |||
| container may be augmented by other models to support other IPFRR | "fast-reroute" container may be augmented by other models to support | |||
| flavors (MRT, TILFA ...). | other IP FRR flavors (MRT, TI-LFA, etc.). | |||
| The current version of the model supports activation of LFA and | The current version of the model supports activation of LFA and | |||
| remote LFA at interface only. The global "lfa" container is present | remote LFA at the interface-level only. The global "lfa" container | |||
| but kept empty to allow augmentation with vendor specific properties | is present but kept empty to allow augmentation with vendor-specific | |||
| like policies. | properties, e.g., policies. | |||
| Remote LFA is considered as a child of LFA. Remote LFA cannot be | Remote LFA is considered as an extension of LFA. Remote LFA cannot | |||
| enabled if LFA is not enabled. | be enabled if LFA is not enabled. | |||
| The "candidate-enable" allows to mark an interface to be used as a | The "candidate-enable" data leaf designates that an interface can be | |||
| backup. | used as a backup. | |||
| 2.9. Operational States | 2.9. Operational States | |||
| Operational states are provided in the module in various places: | Operational state is defined in module in various containers at | |||
| various levels: | ||||
| o system-counters: provides statistical informations about the | o system-counters: Provides statistical information about the global | |||
| global system. | system. | |||
| o interface : provides configuration state informations for each | o interface: Provides configuration state information for each | |||
| interface. | interface. | |||
| o adjacencies: provides state informations about current IS-IS | o adjacencies: Provides state information about current IS-IS | |||
| adjacencies. | adjacencies. | |||
| o spf-log: provides informations about SPF events on the node. This | o spf-log: Provides information about SPF events for an IS-IS | |||
| SHOULD be implemented as a wrapping buffer. | instance. This SHOULD be implemented as a wrapping buffer. | |||
| o lsp-log: provides informations about LSP events on the node | o lsp-log: Provides information about LSP events for an IS-IS | |||
| (reception of an LSP or modification of local LSP). This SHOULD | instance (reception of an LSP or modification of a local LSP). | |||
| be implemented as a wrapping buffer and an implementation MAY | This SHOULD be implemented as a wrapping buffer and the | |||
| decide to log refresh LSPs or not. | implementation MAY optionally log LSP refreshes. | |||
| o local-rib: provides the IS-IS internal routing table view. | o local-rib: Provides the IS-IS internal routing table. | |||
| o database: provides details on the current LSDB. | o database: Provides contents of the current Link State Database. | |||
| o hostnames: provides informations about system-id to hostname | o hostnames: Provides the system-id to hostname mappings [RFC5301]. | |||
| mappings [RFC5301]. | ||||
| o fast-reroute: provides informations about IP FRR. | o fast-reroute: Provides IP FRR state information. | |||
| 3. RPC Operations | 3. RPC Operations | |||
| The "ietf-isis" module defines two RPC operations: | The "ietf-isis" module defines two RPC operations: | |||
| o clear-database: reset the content of a particular IS-IS database | o clear-database: Reset the content of a particular IS-IS database | |||
| and restart database synchronization with the neighbors. | and restart database synchronization with all neighbors. | |||
| o clear-adjacency: restart a particular set of IS-IS adjacencies. | o clear-adjacency: Restart a particular set of IS-IS adjacencies. | |||
| 4. Notifications | 4. Notifications | |||
| The "ietf-isis" module introduces some notifications : | The "ietf-isis" module defines the following notifications : | |||
| database-overload: raised when overload condition is changed. | database-overload: This notification is sent when the IS-IS Node | |||
| overload condition changes. | ||||
| lsp-too-large: raised when the system tries to propagate a PDU | lsp-too-large: This notification is sent when the system tries to | |||
| that is too large. | propagate a PDU that is too large. | |||
| if-state-change: raised when the state of an interface changes. | if-state-change: This notification is sent when the state of an | |||
| interface's state changes. | ||||
| corrupted-lsp-detected: raised when the system finds that an LSP | corrupted-lsp-detected: This notification is sent when the IS-IS | |||
| that was stored in memory has become corrupted. | node discovers that an LSP that was previously stored in the Link | |||
| State Database, i.e., local memory, has become corrupted. | ||||
| attempt-to-exceed-max-sequence: This notification is sent when the | attempt-to-exceed-max-sequence: This notification is sent when the | |||
| system wraps the 32-bit sequence counter of an LSP. | system wraps the 32-bit sequence counter of an LSP. | |||
| id-len-mismatch: This notification is sent when we receive a PDU | id-len-mismatch: 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. | |||
| max-area-addresses-mismatch: This notification is sent when we | max-area-addresses-mismatch: This notification is sent when we | |||
| receive a PDU with a different value for the Maximum Area | receive a PDU with a different value for the Maximum Area | |||
| Addresses. | Addresses. | |||
| skipping to change at page 22, line 12 ¶ | skipping to change at page 22, line 20 ¶ | |||
| lsp-received: This notification is sent when an LSP is received. | lsp-received: This notification is sent when an LSP is received. | |||
| lsp-generation: This notification is sent when an LSP is | lsp-generation: This notification is sent when an LSP is | |||
| regenerated. | regenerated. | |||
| 5. Interaction with Other YANG Modules | 5. Interaction with Other YANG Modules | |||
| The "isis" container augments the "/rt:routing/rt:control-plane- | The "isis" container augments the "/rt:routing/rt:control-plane- | |||
| protocols/control-plane-protocol" container of the ietf-routing | protocols/control-plane-protocol" container of the ietf-routing | |||
| [RFC8349] module by defining IS-IS specific parameters. | [RFC8349] module by with IS-IS-specific parameters. | |||
| The "isis" module augments "/if:interfaces/if:interface" defined by | The "isis" module augments "/if:interfaces/if:interface" defined by | |||
| [RFC8343] with ISO specific parameters. | [RFC8343] with ISO specific parameters. | |||
| The "isis" operational state container augments the "/rt:routing- | The "isis" operational state container augments the "/rt:routing- | |||
| state/rt:control-plane-protocols/control-plane-protocol" container of | state/rt:control-plane-protocols/control-plane-protocol" container of | |||
| the ietf-routing module by defining IS-IS specific operational | the ietf-routing module with IS-IS-specific operational states. | |||
| states. | ||||
| Some IS-IS specific routes attributes are added to route objects of | Some IS-IS-specific route attributes are added to route objects in | |||
| the ietf-routing module by augmenting "/rt:routing- | the ietf-routing module by augmenting "/rt:routing- | |||
| state/rt:ribs/rt:rib/rt:routes/rt:route". | state/rt:ribs/rt:rib/rt:routes/rt:route". | |||
| The modules defined in this document use some groupings from ietf- | The modules defined in this document uses some groupings from ietf- | |||
| keychain [RFC8177]. | keychain [RFC8177]. | |||
| The module reuses types from [RFC6991] and [RFC8294]. | The module reuses types from [RFC6991] and [RFC8294]. | |||
| To support BFD for fast detection, the module relies on | To support BFD for fast detection, the module relies on | |||
| [I-D.ietf-bfd-yang]. | [I-D.ietf-bfd-yang]. | |||
| 6. IS-IS YANG Module | 6. IS-IS YANG Module | |||
| The following RFCs, drafts and external standards are not referenced | The following RFCs, drafts and external standards are not referenced | |||
| in the document text but are referenced in the ietf-isis.yang module: | in the document text but are referenced in the ietf-isis.yang module: | |||
| [ISO-10589], [RFC1195], [RFC4090],[RFC5029], [RFC5130], [RFC5302], | [ISO-10589], [RFC1195], [RFC4090],[RFC5029], [RFC5130], [RFC5302], | |||
| [RFC5305], [RFC5306], [RFC5307], [RFC5308], [RFC5880], [RFC5881], | [RFC5305], [RFC5306], [RFC5307], [RFC5308], [RFC5880], [RFC5881], | |||
| [RFC6119], [RFC6232], [RFC7794], [RFC7981], [RFC8570], [RFC7917], | [RFC6119], [RFC6232], [RFC7794], [RFC7981], [RFC8570], [RFC7917], | |||
| [RFC8405]. | [RFC8405]. | |||
| <CODE BEGINS> file "ietf-isis@2019-09-09.yang" | <CODE BEGINS> file "ietf-isis@2019-09-26.yang" | |||
| 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 "RFC 8349 - A YANG Data Model for Routing | |||
| Management (NMDA Version)"; | Management (NMDA Version)"; | |||
| skipping to change at page 24, line 25 ¶ | skipping to change at page 24, line 32 ¶ | |||
| <mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
| Jeffrey Zhang | Jeffrey Zhang | |||
| <mailto:zzhang@juniper.net> | <mailto:zzhang@juniper.net> | |||
| Ladislav Lhotka | Ladislav Lhotka | |||
| <mailto:llhotka@nic.cz> | <mailto:llhotka@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 state 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 | This YANG model conforms to the Network Management | |||
| Datastore Architecture (NMDA) as described in RFC 8242. | Datastore Architecture (NMDA) as described in RFC 8242. | |||
| Copyright (c) 2018 IETF Trust and the persons identified as | Copyright (c) 2018 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
| the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
| forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info). | (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 XXXX | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| for full legal notices. | for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here. | they appear in all capitals, as shown here. | |||
| This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC XXXX; | |||
| see the RFC itself for full legal notices."; | see the RFC itself for full legal notices."; | |||
| revision 2019-09-09 { | revision 2019-09-26 { | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| } | } | |||
| /* 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."; | |||
| skipping to change at page 26, line 27 ¶ | skipping to change at page 26, line 33 ¶ | |||
| 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 "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 on the path."; | description "The alternate is downstream of 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 unidirectional-link-delay-subtlv-flag { | identity unidirectional-link-delay-subtlv-flag { | |||
| description "Base identity for unidirectional-link-delay | description "Base identity for unidirectional-link-delay | |||
| subTLV flags. Flags are defined in RFC8570."; | subTLV flags. Flags are defined in RFC8570."; | |||
| } | } | |||
| skipping to change at page 33, line 6 ¶ | skipping to change at page 33, line 11 ¶ | |||
| description | description | |||
| "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 on the interface. | to be established for the interface. | |||
| The interface-type determines the type | The 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."; | |||
| skipping to change at page 34, line 47 ¶ | skipping to change at page 35, line 4 ¶ | |||
| "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) format. | of Attachment (SNPA) 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 | specified for the particular type of subnetwork | |||
| being used. As an example, for an ethernet subnetwork, | being used. As an example, for an ethernet subnetwork, | |||
| the SNPA is encoded as a MAC address like | 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 IS-IS system-id using pattern, | |||
| skipping to change at page 39, line 27 ¶ | skipping to change at page 39, line 32 ¶ | |||
| enum lfa { | enum lfa { | |||
| description | description | |||
| "LFA alternate."; | "LFA alternate."; | |||
| } | } | |||
| enum remote-lfa { | enum remote-lfa { | |||
| description | description | |||
| "Remote LFA alternate."; | "Remote LFA alternate."; | |||
| } | } | |||
| enum tunnel { | enum tunnel { | |||
| description | description | |||
| "Tunnel based alternate | "Tunnel based alternate (such as, | |||
| (like RSVP-TE or GRE)."; | RSVP-TE or GRE)."; | |||
| } | } | |||
| enum ti-lfa { | enum ti-lfa { | |||
| description | description | |||
| "TI-LFA alternate."; | "TI-LFA alternate."; | |||
| } | } | |||
| enum mrt { | enum mrt { | |||
| description | description | |||
| "MRT alternate."; | "MRT alternate."; | |||
| } | } | |||
| enum other { | enum other { | |||
| skipping to change at page 41, line 4 ¶ | skipping to change at page 41, line 10 ¶ | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Metric from alternate node to the destination"; | "Metric from alternate node to the destination"; | |||
| } | } | |||
| description | description | |||
| "Per-AF protected prefix statistics."; | "Per-AF 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 address-family-stats { | list address-family-stats { | |||
| 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 "Address-family"; | description "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-AF 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 { | |||
| skipping to change at page 41, line 45 ¶ | skipping to change at page 42, line 4 ¶ | |||
| 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 total-routes { | leaf total-routes { | |||
| type uint32; | type uint32; | |||
| description "Total prefixes."; | description "Total prefixes."; | |||
| } | } | |||
| leaf unprotected-routes { | leaf unprotected-routes { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Total prefixes that are not protected."; | "Total prefixes that are not protected."; | |||
| } | } | |||
| leaf protected-routes { | leaf protected-routes { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Total prefixes that are protected."; | "Total prefixes that are protected."; | |||
| } | } | |||
| leaf linkprotected-routes { | leaf link-protected-routes { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Total prefixes that are link protected."; | "Total prefixes that are link protected."; | |||
| } | } | |||
| leaf nodeprotected-routes { | leaf node-protected-routes { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Total prefixes that are node protected."; | "Total prefixes that are node protected."; | |||
| } | } | |||
| description | description | |||
| "Per AF protected prefix statistics."; | "Per-AF protected prefix statistics."; | |||
| } | } | |||
| description "Global protection statistics."; | description "Global protection statistics."; | |||
| } | } | |||
| } | } | |||
| /* Route table and local RIB groupings */ | /* Route table and local RIB groupings */ | |||
| grouping local-rib { | grouping local-rib { | |||
| description "Local-rib - RIB for Routes computed by the local | description "Local-rib - RIB for Routes computed by the local | |||
| skipping to change at page 45, line 9 ¶ | skipping to change at page 45, line 16 ¶ | |||
| "Circuit ID of the neighbor"; | "Circuit ID of the neighbor"; | |||
| } | } | |||
| leaf neighbor-snpa { | leaf neighbor-snpa { | |||
| type snpa; | type snpa; | |||
| description | description | |||
| "SNPA of the neighbor"; | "SNPA of the neighbor"; | |||
| } | } | |||
| leaf usage { | leaf usage { | |||
| type level; | type level; | |||
| description | description | |||
| "Define the level(s) activated on the adjacency. | "Define the level(s) activated for the adjacency. | |||
| On a p2p link this might be level 1 and 2, | On a p2p link this might be level 1 and 2, | |||
| but on a LAN, the usage will be level 1 | 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 | |||
| skipping to change at page 58, line 38 ¶ | skipping to change at page 58, line 47 ¶ | |||
| uses spf-log; | uses spf-log; | |||
| uses lsp-log; | uses lsp-log; | |||
| uses hostname-db; | uses hostname-db; | |||
| 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 on 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 re-initialized, 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 | re-initialized which normally occurs when it was | |||
| created."; | created."; | |||
| } | } | |||
| } | } | |||
| grouping multi-topology-config { | grouping multi-topology-config { | |||
| skipping to change at page 60, line 33 ¶ | skipping to change at page 60, line 42 ¶ | |||
| 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 on the interface. This | "Type of adjacency to be established for the interface. This | |||
| dictates the type of hello messages that are used."; | 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 { | |||
| skipping to change at page 63, line 41 ¶ | skipping to change at page 63, line 50 ¶ | |||
| } | } | |||
| 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 on 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 interfaces'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 re-initialized, 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 | re-initialized 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."; | |||
| } | } | |||
| skipping to change at page 78, line 7 ¶ | skipping to change at page 78, line 18 ¶ | |||
| 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 max 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 "max LSP bandwidth."; | |||
| skipping to change at page 106, line 21 ¶ | skipping to change at page 106, line 35 ¶ | |||
| For IS-IS, the ability to modify IS-IS configuration will allow the | For IS-IS, the ability to modify IS-IS configuration will allow the | |||
| entire IS-IS domain to be compromised including forming adjacencies | entire IS-IS domain to be compromised including forming adjacencies | |||
| with unauthorized routers to misroute traffic or mount a massive | with unauthorized routers to misroute traffic or mount a massive | |||
| Denial-of-Service (DoS) attack. For example, adding IS-IS on any | Denial-of-Service (DoS) attack. For example, adding IS-IS on any | |||
| unprotected interface could allow an IS-IS adjacency to be formed | unprotected interface could allow an IS-IS adjacency to be formed | |||
| with an unauthorized and malicious neighbor. Once an adjacency is | with an unauthorized and malicious neighbor. Once an adjacency is | |||
| formed, traffic could be hijacked. As a simpler example, a Denial- | formed, traffic could be hijacked. As a simpler example, a Denial- | |||
| of-Service attack could be mounted by changing the cost of an IS-IS | of-Service attack could be mounted by changing the cost of an IS-IS | |||
| interface to be asymmetric such that a hard routing loop ensues. In | interface to be asymmetric such that a hard routing loop ensues. In | |||
| general, unauthorized modification of most IS-IS features will pose | general, unauthorized modification of most IS-IS features will pose | |||
| there own set of security risks and the "Security Considerations" in | their own set of security risks and the "Security Considerations" in | |||
| the respective reference RFCs should be consulted. | the respective reference RFCs should be consulted. | |||
| Some of the readable data nodes in the ietf-isi.yang module may be | Some of the readable data nodes in the ietf-isi.yang module may be | |||
| considered sensitive or vulnerable in some network environments. It | considered sensitive or vulnerable in some network environments. It | |||
| is thus important to control read access (e.g., via get, get-config, | is thus important to control read access (e.g., via get, get-config, | |||
| or notification) to these data nodes. The exposure of the Link State | or notification) to these data nodes. The exposure of the Link State | |||
| Database (LSDB) will expose the detailed topology of the network. | Database (LSDB) will expose the detailed topology of the network. | |||
| The Link State Database (LSDB) is represented by the following schema | The Link State Database (LSDB) is represented by the following schema | |||
| node: | node: | |||
| /isis/database | /isis/database | |||
| Exposure of the Link State Database includes information beyond the | Exposure of the Link State Database includes information beyond the | |||
| scope of the IS-IS router and this may be undesirable since exposure | scope of the IS-IS router and this may be undesirable since exposure | |||
| may facilitate other attacks. Additionally, the complete IP network | may facilitate other attacks. Additionally, the complete IP network | |||
| topology and, if deployed, the traffic engineering topology of the | topology and, if deployed, the traffic engineering topology of the | |||
| IS-IS domain can be reconstucted. Network operators may consider | IS-IS domain can be reconstructed. Network operators may consider | |||
| their topologies to be sensitive confidential data. | their topologies to be sensitive confidential data. | |||
| For IS-IS authentication, configuration is supported via the | For IS-IS authentication, configuration is supported via the | |||
| specification of key-chain [RFC8177] or the direction specification | specification of key-chain [RFC8177] or the direction specification | |||
| of key and authentication algorithm. Hence, authentification | of key and authentication algorithm. Hence, authentication | |||
| configuration using the "auth-table-trailer" case in the | configuration using the "auth-table-trailer" case in the | |||
| "authentication" container inherits the security considerations of | "authentication" container inherits the security considerations of | |||
| [RFC8177]. This includes the considerations with respect to the | [RFC8177]. This includes the considerations with respect to the | |||
| local storage and handling of authentication keys. | local storage and handling of authentication keys. | |||
| Some of the RPC operations in this YANG module may be considered | Some of the RPC operations in this YANG module may be considered | |||
| sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
| important to control access to these operations. The IS-IS YANG | important to control access to these operations. The IS-IS YANG | |||
| module support the "clear-adjacency" and "clear-database" RPCs. If | module support the "clear-adjacency" and "clear-database" RPCs. If | |||
| access too either of these is compromised, they can result in | access to either of these is compromised, they can result in | |||
| temporary network outages be employed to mount DoS attacks. | temporary network outages be employed to mount DoS attacks. | |||
| The actual authentication key data (whether locally specified or part | The actual authentication key data (whether locally specified or part | |||
| of a key-chain) is sensitive and needs to be kept secret from | of a key-chain) is sensitive and needs to be kept secret from | |||
| unauthorized parties; compromise of the key data would allow an | unauthorized parties; compromise of the key data would allow an | |||
| attacker to forge IS-IS traffic that would be accepted as authentic, | attacker to forge IS-IS traffic that would be accepted as authentic, | |||
| potentially compromising the entirety IS-IS domain. | potentially compromising the entirety IS-IS domain. | |||
| 8. Contributors | 8. Contributors | |||
| Authors would like to thank Kiran Agrahara Sreenivasa, Dean | The authors would like to thank Kiran Agrahara Sreenivasa, Dean | |||
| Bogdanovic, Yingzhen Qu, Yi Yang, Jeff Tanstura for their major | Bogdanovic, Yingzhen Qu, Yi Yang, Jeff Tanstura for their major | |||
| contributions to the draft. | contributions to the draft. | |||
| 9. IANA Considerations | 9. Acknowledgements | |||
| The authors would like to thank Tom Petch, Alvaro Retena, Stewart | ||||
| Bryant, and Barry Leiba for their review and comments. | ||||
| 10. IANA Considerations | ||||
| The IANA is requested to assign two new URIs from the IETF XML | The IANA is requested to assign two new URIs from the IETF XML | |||
| registry [RFC3688]. Authors are suggesting the following URI: | registry [RFC3688]. Authors are suggesting the following URI: | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-isis | URI: urn:ietf:params:xml:ns:yang:ietf-isis | |||
| Registrant Contact: The IESG | Registrant Contact: The IESG | |||
| XML: N/A, the requested URI is an XML namespace | XML: N/A, the requested URI is an XML namespace | |||
| This document also requests one new YANG module name in the YANG | This document also requests one new YANG module name in the YANG | |||
| Module Names registry [RFC6020] with the following suggestion: | Module Names registry [RFC6020] with the following suggestion: | |||
| name: ietf-isis | name: ietf-isis | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-isis | namespace: urn:ietf:params:xml:ns:yang:ietf-isis | |||
| prefix: isis | prefix: isis | |||
| reference: RFC XXXX | reference: RFC XXXX | |||
| 10. References | 11. References | |||
| 10.1. Normative References | 11.1. Normative References | |||
| [I-D.ietf-bfd-yang] | [I-D.ietf-bfd-yang] | |||
| Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and | Rahman, R., Zheng, L., Jethanandani, M., Networks, J., and | |||
| G. Mirsky, "YANG Data Model for Bidirectional Forwarding | G. Mirsky, "YANG Data Model for Bidirectional Forwarding | |||
| Detection (BFD)", draft-ietf-bfd-yang-17 (work in | Detection (BFD)", draft-ietf-bfd-yang-17 (work in | |||
| progress), August 2018. | progress), August 2018. | |||
| [ISO-10589] | [ISO-10589] | |||
| "Intermediate System to Intermediate System intra- domain | "Intermediate System to Intermediate System intra- domain | |||
| routeing information exchange protocol for use in | routeing information exchange protocol for use in | |||
| skipping to change at page 112, line 5 ¶ | skipping to change at page 112, line 25 ¶ | |||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
| <https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
| [RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward, | [RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward, | |||
| D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE) | D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE) | |||
| Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March | Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March | |||
| 2019, <https://www.rfc-editor.org/info/rfc8570>. | 2019, <https://www.rfc-editor.org/info/rfc8570>. | |||
| 10.2. Informative References | 11.2. Informative References | |||
| [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
| BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
| Appendix A. Example of IS-IS configuration in XML | Appendix A. Example of IS-IS configuration in XML | |||
| This section gives an example of configuration of an IS-IS instance | This section gives an example of configuration of an IS-IS instance | |||
| on a device. The example is written in XML. | on a device. The example is written in XML. | |||
| End of changes. 102 change blocks. | ||||
| 176 lines changed or deleted | 186 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/ | ||||