| < draft-ietf-isis-yang-isis-cfg-07.txt | draft-ietf-isis-yang-isis-cfg-08.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: May 21, 2016 A. Lindem | Expires: September 22, 2016 A. Lindem | |||
| Cisco Systems | Cisco Systems | |||
| J. Zhang | J. Zhang | |||
| Juniper Networks | Juniper Networks | |||
| L. Lhotka | L. Lhotka | |||
| CZ.NIC | CZ.NIC | |||
| November 18, 2015 | March 21, 2016 | |||
| YANG Data Model for IS-IS protocol | YANG Data Model for IS-IS protocol | |||
| draft-ietf-isis-yang-isis-cfg-07 | draft-ietf-isis-yang-isis-cfg-08 | |||
| 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. It also defined an | and manage IS-IS protocol on network elements. It also defined an | |||
| extension module for segment routing and BFD configuration and | extension module for segment routing configuration and operation. | |||
| operation. | ||||
| 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", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| skipping to change at page 1, line 45 ¶ | skipping to change at page 1, line 44 ¶ | |||
| 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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 May 21, 2016. | This Internet-Draft will expire on September 22, 2016. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2016 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 | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://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 | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| 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 | |||
| skipping to change at page 2, line 38 ¶ | skipping to change at page 2, line 38 ¶ | |||
| 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12 | 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12 | |||
| 2.5. ISO parameters . . . . . . . . . . . . . . . . . . . . . 12 | 2.5. ISO parameters . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 2.6. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 2.6. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 2.7. Operational State . . . . . . . . . . . . . . . . . . . . 13 | 2.7. Operational State . . . . . . . . . . . . . . . . . . . . 13 | |||
| 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 13 | 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 14 | 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 5. Segment Routing . . . . . . . . . . . . . . . . . . . . . . . 18 | 5. Segment Routing . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 5.1. Segment Routing activation . . . . . . . . . . . . . . . 21 | 5.1. Segment Routing activation . . . . . . . . . . . . . . . 21 | |||
| 5.2. Advertising mapping server policy . . . . . . . . . . . . 21 | 5.2. Advertising mapping server policy . . . . . . . . . . . . 21 | |||
| 5.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 21 | 5.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 6. BFD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 6. Interaction with Other YANG Modules . . . . . . . . . . . . . 21 | |||
| 7. Interaction with Other YANG Modules . . . . . . . . . . . . . 22 | 7. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 8. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 | 8. IS-IS Segment Routing YANG Module . . . . . . . . . . . . . . 100 | |||
| 9. IS-IS Segment Routing YANG Module . . . . . . . . . . . . . . 98 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 114 | |||
| 10. IS-IS BFD YANG Module . . . . . . . . . . . . . . . . . . . . 111 | 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 115 | |||
| 11. Security Considerations . . . . . . . . . . . . . . . . . . . 114 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 115 | |||
| 12. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 115 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 115 | |||
| 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 115 | 13. Normative References . . . . . . . . . . . . . . . . . . . . 116 | |||
| 14. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 115 | Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 117 | |||
| 15. Normative References . . . . . . . . . . . . . . . . . . . . 115 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 120 | |||
| Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 116 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 119 | ||||
| 1. Introduction | 1. Introduction | |||
| This document defines a YANG data model for IS-IS routing protocol. | This document defines a YANG data model for IS-IS routing 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 operational states. | |||
| 1.1. Tree diagram | 1.1. Tree diagram | |||
| skipping to change at page 3, line 48 ¶ | skipping to change at page 3, line 48 ¶ | |||
| The IS-IS YANG module is divided in two main "isis" containers that | The IS-IS YANG module is divided in two main "isis" containers that | |||
| are augmenting the "routing-protocol" lists in ietf-routing module | are augmenting the "routing-protocol" lists in ietf-routing module | |||
| with specific IS-IS parameters. | with specific IS-IS parameters. | |||
| One container contains the writable parameters, while the other | One container contains the writable parameters, while the other | |||
| contains the operational states. | contains the operational states. | |||
| The figure below describe the overall structure of the isis YANG | The figure below describe the overall structure of the isis YANG | |||
| module: | module: | |||
| module: ietf-isis | module: ietf-isis | |||
| augment /rt:routing-state/rt:routing-instance/rt:ribs/rt:rib | augment /rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route: | |||
| /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 /rt:fib-route/rt:output/rt:route: | ||||
| +--ro metric? uint32 | ||||
| +--ro tag* uint64 | ||||
| +--ro route-type? enumeration | ||||
| augment /if:interfaces/if:interface: | ||||
| +--rw clns-mtu? uint16 | ||||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols | ||||
| /rt:routing-protocol: | ||||
| +--rw isis | ||||
| +--rw enable? boolean {admin-control}? | ||||
| +--rw level-type? level | ||||
| +--rw system-id? system-id | ||||
| +--rw maximum-area-addresses? uint8 {maximum-area-addresses}? | ||||
| +--rw area-address* area-address | ||||
| +--rw mpls | ||||
| | +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}? | ||||
| | +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | ||||
| | +--rw igp-ldp-sync {igp-ldp-sync}? | ||||
| +--rw reference-bandwidth? uint32 {reference-bandwidth}? | ||||
| +--rw lsp-mtu? uint16 | ||||
| +--rw lsp-lifetime? uint16 | ||||
| +--rw lsp-refresh? uint16 {lsp-refresh}? | ||||
| +--rw graceful-restart {graceful-restart}? | ||||
| | +--rw enable? boolean | ||||
| +--rw node-tag {node-tag}? | ||||
| | +--rw node-tag* [tag] | ||||
| | ... | ||||
| +--rw authentication* [level] | ||||
| | +--rw (authentication-type)? | ||||
| | | ... | ||||
| | +--rw level level | ||||
| +--rw metric-type* [level] | ||||
| | +--rw value? enumeration | ||||
| | +--rw level level | ||||
| +--rw default-metric* [level] | ||||
| | +--rw value? wide-metric | ||||
| | +--rw level level | ||||
| +--rw af* [af] {nlpid-control}? | ||||
| | +--rw af identityref | ||||
| | +--rw enable? boolean | ||||
| +--rw preference | ||||
| | +--rw (granularity)? | ||||
| | ... | ||||
| +--rw overload | ||||
| | +--rw status? boolean | ||||
| +--rw overload-max-metric {overload-max-metric}? | ||||
| | +--rw timeout? uint16 | ||||
| +--rw apply-policy | ||||
| | +--rw config | ||||
| | | ... | ||||
| | +--ro state | ||||
| | ... | ||||
| +--rw fast-reroute {fast-reroute}? | ||||
| | +--rw lfa {lfa}? | ||||
| +--rw topologies* [name] {multi-topology}? | ||||
| | +--rw enable? boolean | ||||
| | +--rw name leafref | ||||
| | +--rw default-metric* [level] | ||||
| | | ... | ||||
| | +--rw node-tag {node-tag}? | ||||
| | | ... | ||||
| | +--rw fast-reroute {fast-reroute}? | ||||
| | ... | ||||
| +--rw interfaces | ||||
| +--rw interface* [name] | ||||
| ... | ||||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | ||||
| /rt:routing-protocol: | ||||
| +--ro isis | ||||
| +--ro enable? boolean {admin-control}? | ||||
| +--ro level-type? level | ||||
| +--ro system-id? system-id | ||||
| +--ro maximum-area-addresses? uint8 {maximum-area-addresses}? | ||||
| +--ro area-address* area-address | ||||
| +--ro mpls | ||||
| | +--ro ipv4-router-id? inet:ipv4-address {ipv4-router-id}? | ||||
| | +--ro ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | ||||
| | +--ro igp-ldp-sync {igp-ldp-sync}? | ||||
| +--ro reference-bandwidth? uint32 {reference-bandwidth}? | ||||
| +--ro lsp-mtu? uint16 | ||||
| +--ro lsp-lifetime? uint16 | ||||
| +--ro lsp-refresh? uint16 {lsp-refresh}? | ||||
| +--ro graceful-restart {graceful-restart}? | ||||
| | +--ro enable? boolean | ||||
| +--ro node-tag {node-tag}? | ||||
| | +--ro node-tag* [tag] | ||||
| | ... | ||||
| +--ro authentication* [level] | ||||
| | +--ro (authentication-type)? | ||||
| | | ... | ||||
| | +--ro level level | ||||
| +--ro metric-type* [level] | ||||
| | +--ro value? enumeration | ||||
| | +--ro level level | ||||
| +--ro default-metric* [level] | ||||
| | +--ro value? wide-metric | ||||
| | +--ro level level | ||||
| +--ro af* [af] {nlpid-control}? | ||||
| | +--ro af identityref | ||||
| | +--ro enable? boolean | ||||
| +--ro preference | ||||
| | +--ro (granularity)? | ||||
| | ... | ||||
| +--ro overload | ||||
| | +--ro status? boolean | ||||
| +--ro overload-max-metric {overload-max-metric}? | ||||
| | +--ro timeout? uint16 | ||||
| +--ro fast-reroute {fast-reroute}? | ||||
| | +--ro lfa {lfa}? | ||||
| | +--ro protected-routes | ||||
| | | ... | ||||
| | +--ro nonprotected-routes | ||||
| | | ... | ||||
| | +--ro protection-statistics* [frr-protection-method] | ||||
| | ... | ||||
| +--ro topologies* [name] | ||||
| | +--ro name leafref | ||||
| | +--ro fast-route {fast-reroute}? | ||||
| | ... | ||||
| +--ro system-counters | ||||
| | +--ro level* [level] | ||||
| | ... | ||||
| +--ro interfaces | ||||
| | +--ro interface* [interface] | ||||
| | ... | ||||
| +--ro spf-log | ||||
| | +--ro event* [id] | ||||
| | ... | ||||
| +--ro lsp-log | ||||
| | +--ro event* [id] | ||||
| | ... | ||||
| +--ro database | ||||
| | +--ro level-db* [level] | ||||
| | ... | ||||
| +--ro hostnames | ||||
| +--ro hostname* [system-id] | ||||
| ... | ||||
| rpcs: | ||||
| +---x clear-adjacency | ||||
| | +--ro input | ||||
| | +--ro routing-instance-name rt:routing-instance-state-ref | ||||
| | +--ro routing-protocol-instance-name instance-state-ref | ||||
| | +--ro level? level | ||||
| | +--ro interface? string | ||||
| +---x clear-database | ||||
| +--ro input | ||||
| +--ro routing-instance-name rt:routing-instance-state-ref | ||||
| +--ro routing-protocol-instance-name instance-state-ref | ||||
| +--ro level? level | ||||
| notifications: | ||||
| +---n database-overload | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro overload? enumeration | ||||
| +---n lsp-too-large | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro pdu-size? uint32 | ||||
| | +--ro lsp-id? lsp-id | ||||
| +---n corrupted-lsp-detected | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro lsp-id? lsp-id | ||||
| +---n attempt-to-exceed-max-sequence | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro lsp-id? lsp-id | ||||
| +---n id-len-mismatch | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro pdu-field-len? uint8 | ||||
| | +--ro raw-pdu? binary | ||||
| +---n max-area-addresses-mismatch | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro max-area-addresses? uint8 | ||||
| | +--ro raw-pdu? binary | ||||
| +---n own-lsp-purge | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro lsp-id? lsp-id | ||||
| +---n sequence-number-skipped | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro lsp-id? lsp-id | ||||
| +---n authentication-type-failure | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro raw-pdu? binary | ||||
| +---n authentication-failure | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro raw-pdu? binary | ||||
| +---n version-skew | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro protocol-version? uint8 | ||||
| | +--ro raw-pdu? binary | ||||
| +---n area-mismatch | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro raw-pdu? binary | ||||
| +---n rejected-adjacency | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro raw-pdu? binary | ||||
| | +--ro reason? string | ||||
| +---n protocols-supported-mismatch | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro raw-pdu? binary | ||||
| | +--ro protocols* uint8 | ||||
| +---n lsp-error-detected | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro lsp-id? lsp-id | ||||
| | +--ro raw-pdu? binary | ||||
| | +--ro error-offset? uint32 | ||||
| | +--ro tlv-type? uint8 | ||||
| +---n adjacency-change | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro neighbor? string | ||||
| | +--ro neighbor-system-id? system-id | ||||
| | +--ro level? level | ||||
| | +--ro state? enumeration | ||||
| | +--ro reason? string | ||||
| +---n lsp-received | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro lsp-id? lsp-id | ||||
| | +--ro sequence? uint32 | ||||
| | +--ro received-timestamp? yang:timestamp | ||||
| | +--ro neighbor-system-id? system-id | ||||
| +---n lsp-generation | ||||
| +--ro instance-name? string | ||||
| +--ro instance-level? level | ||||
| +--ro lsp-id? lsp-id | ||||
| +--ro sequence? uint32 | ||||
| +--ro send-timestamp? yang:timestamp | ||||
| 2.1. IS-IS Configuration | augment /rt:fib-route/rt:output/rt:route: | |||
| +--ro metric? uint32 | ||||
| +--ro tag* uint64 | ||||
| +--ro route-type? enumeration | ||||
| augment /if:interfaces/if:interface: | ||||
| +--rw clns-mtu? uint16 | ||||
| augment /rt:routing/rt:routing-protocols/rt:routing-protocol: | ||||
| +--rw isis | ||||
| +--rw enable? boolean {admin-control}? | ||||
| +--rw level-type? level | ||||
| +--rw system-id? system-id | ||||
| +--rw maximum-area-addresses? uint8 {maximum-area-addresses}? | ||||
| +--rw area-address* area-address | ||||
| +--rw mpls | ||||
| | +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}? | ||||
| | +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | ||||
| | +--rw igp-ldp-sync {igp-ldp-sync}? | ||||
| +--rw reference-bandwidth? uint32 {reference-bandwidth}? | ||||
| +--rw lsp-mtu? uint16 | ||||
| +--rw lsp-lifetime? uint16 | ||||
| +--rw lsp-refresh? uint16 {lsp-refresh}? | ||||
| +--rw graceful-restart {graceful-restart}? | ||||
| | +--rw enable? boolean | ||||
| +--rw node-tag {node-tag}? | ||||
| | +--rw node-tag* [tag] | ||||
| | ... | ||||
| +--rw authentication | ||||
| | +--rw (authentication-type)? | ||||
| | | ... | ||||
| | +--rw level-1 | ||||
| | | ... | ||||
| | +--rw level-2 | ||||
| | ... | ||||
| +--rw metric-type | ||||
| | +--rw value? enumeration | ||||
| | +--rw level-1 | ||||
| | | ... | ||||
| | +--rw level-2 | ||||
| | ... | ||||
| +--rw default-metric | ||||
| | +--rw value? wide-metric | ||||
| | +--rw level-1 | ||||
| | | ... | ||||
| | +--rw level-2 | ||||
| | ... | ||||
| +--rw af* [af] {nlpid-control}? | ||||
| | +--rw af identityref | ||||
| | +--rw enable? boolean | ||||
| +--rw preference | ||||
| | +--rw (granularity)? | ||||
| | ... | ||||
| +--rw overload | ||||
| | +--rw status? boolean | ||||
| +--rw overload-max-metric {overload-max-metric}? | ||||
| | +--rw timeout? uint16 | ||||
| +--rw fast-reroute {fast-reroute}? | ||||
| | +--rw lfa {lfa}? | ||||
| +--rw topologies* [name] {multi-topology}? | ||||
| | +--rw enable? boolean | ||||
| | +--rw name leafref | ||||
| | +--rw default-metric | ||||
| | | ... | ||||
| | +--rw node-tag {node-tag}? | ||||
| | | ... | ||||
| | +--rw fast-reroute {fast-reroute}? | ||||
| | ... | ||||
| +--rw interfaces | ||||
| +--rw interface* [name] | ||||
| ... | ||||
| augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol: | ||||
| +--ro isis | ||||
| +--ro enable? boolean {admin-control}? | ||||
| +--ro level-type? level | ||||
| +--ro system-id? system-id | ||||
| +--ro maximum-area-addresses? uint8 {maximum-area-addresses}? | ||||
| +--ro area-address* area-address | ||||
| +--ro mpls | ||||
| | +--ro ipv4-router-id? inet:ipv4-address {ipv4-router-id}? | ||||
| | +--ro ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | ||||
| | +--ro igp-ldp-sync {igp-ldp-sync}? | ||||
| +--ro reference-bandwidth? uint32 {reference-bandwidth}? | ||||
| +--ro lsp-mtu? uint16 | ||||
| +--ro lsp-lifetime? uint16 | ||||
| +--ro lsp-refresh? uint16 {lsp-refresh}? | ||||
| +--ro graceful-restart {graceful-restart}? | ||||
| | +--ro enable? boolean | ||||
| +--ro node-tag {node-tag}? | ||||
| | +--ro node-tag* [tag] | ||||
| | ... | ||||
| +--ro authentication | ||||
| | +--ro (authentication-type)? | ||||
| | | ... | ||||
| | +--ro level-1 | ||||
| | | ... | ||||
| | +--ro level-2 | ||||
| | ... | ||||
| The IS-IS configuration supports a VRF-centric configuration | +--ro metric-type | |||
| approach. The isis configuration is applied directly within the | | +--ro value? enumeration | |||
| appropriate routing-instance where IS-IS is activated. | | +--ro level-1 | |||
| | | ... | ||||
| | +--ro level-2 | ||||
| | ... | ||||
| +--ro default-metric | ||||
| | +--ro value? wide-metric | ||||
| | +--ro level-1 | ||||
| | | ... | ||||
| | +--ro level-2 | ||||
| | ... | ||||
| +--ro af* [af] {nlpid-control}? | ||||
| | +--ro af identityref | ||||
| | +--ro enable? boolean | ||||
| +--ro preference | ||||
| | +--ro (granularity)? | ||||
| | ... | ||||
| +--ro overload | ||||
| | +--ro status? boolean | ||||
| +--ro overload-max-metric {overload-max-metric}? | ||||
| | +--ro timeout? uint16 | ||||
| +--ro fast-reroute {fast-reroute}? | ||||
| | +--ro lfa {lfa}? | ||||
| | +--ro protected-routes | ||||
| | | ... | ||||
| | +--ro nonprotected-routes | ||||
| | | ... | ||||
| | +--ro protection-statistics* [frr-protection-method] | ||||
| | ... | ||||
| +--ro topologies* [name] | ||||
| | +--ro name leafref | ||||
| | +--ro fast-route {fast-reroute}? | ||||
| | ... | ||||
| +--ro system-counters | ||||
| | +--ro level* [level] | ||||
| | ... | ||||
| +--ro interfaces | ||||
| | +--ro interface* [interface] | ||||
| | ... | ||||
| +--ro spf-log | ||||
| | +--ro event* [id] | ||||
| | ... | ||||
| +--ro lsp-log | ||||
| | +--ro event* [id] | ||||
| | ... | ||||
| +--ro database | ||||
| | +--ro level-db* [level] | ||||
| | ... | ||||
| +--ro hostnames | ||||
| +--ro hostname* [system-id] | ||||
| ... | ||||
| rpcs: | ||||
| +---x clear-adjacency | ||||
| | +--ro input | ||||
| | +--ro routing-protocol-instance-name instance-state-ref | ||||
| | +--ro level? level | ||||
| | +--ro interface? string | ||||
| +---x clear-database | ||||
| +--ro input | ||||
| +--ro routing-protocol-instance-name instance-state-ref | ||||
| +--ro level? level | ||||
| notifications: | ||||
| +---n database-overload | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro overload? enumeration | ||||
| +---n lsp-too-large | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro pdu-size? uint32 | ||||
| | +--ro lsp-id? lsp-id | ||||
| +---n corrupted-lsp-detected | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro lsp-id? lsp-id | ||||
| +---n attempt-to-exceed-max-sequence | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro lsp-id? lsp-id | ||||
| +---n id-len-mismatch | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro pdu-field-len? uint8 | ||||
| | +--ro raw-pdu? binary | ||||
| +---n max-area-addresses-mismatch | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro max-area-addresses? uint8 | ||||
| | +--ro raw-pdu? binary | ||||
| +---n own-lsp-purge | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro lsp-id? lsp-id | ||||
| +---n sequence-number-skipped | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro lsp-id? lsp-id | ||||
| +---n authentication-type-failure | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro raw-pdu? binary | ||||
| +---n authentication-failure | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro raw-pdu? binary | ||||
| +---n version-skew | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro protocol-version? uint8 | ||||
| | +--ro raw-pdu? binary | ||||
| +---n area-mismatch | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro raw-pdu? binary | ||||
| +---n rejected-adjacency | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro raw-pdu? binary | ||||
| | +--ro reason? string | ||||
| +---n protocols-supported-mismatch | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro raw-pdu? binary | ||||
| | +--ro protocols* uint8 | ||||
| +---n lsp-error-detected | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro lsp-id? lsp-id | ||||
| | +--ro raw-pdu? binary | ||||
| | +--ro error-offset? uint32 | ||||
| | +--ro tlv-type? uint8 | ||||
| +---n adjacency-change | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro neighbor? string | ||||
| | +--ro neighbor-system-id? system-id | ||||
| | +--ro level? level | ||||
| | +--ro state? enumeration | ||||
| | +--ro reason? string | ||||
| +---n lsp-received | ||||
| | +--ro instance-name? string | ||||
| | +--ro instance-level? level | ||||
| | +--ro interface-name? string | ||||
| | +--ro interface-level? level | ||||
| | +--ro extended-circuit-id? extended-circuit-id | ||||
| | +--ro lsp-id? lsp-id | ||||
| | +--ro sequence? uint32 | ||||
| | +--ro received-timestamp? yang:timestamp | ||||
| | +--ro neighbor-system-id? system-id | ||||
| +---n lsp-generation | ||||
| +--ro instance-name? string | ||||
| +--ro instance-level? level | ||||
| +--ro lsp-id? lsp-id | ||||
| +--ro sequence? uint32 | ||||
| +--ro send-timestamp? yang:timestamp | ||||
| 2.1. IS-IS Configuration | ||||
| The IS-IS configuration container is divided in: | The IS-IS configuration container is divided in: | |||
| o Global parameters. | o Global parameters. | |||
| o Per interface configuration (see Section 2.4). | o Per interface configuration (see Section 2.4). | |||
| It would to up to extension modules to augment this model to support | It would to up to extension modules to augment this model to support | |||
| vendor specific parameters. | vendor specific parameters. | |||
| skipping to change at page 10, line 33 ¶ | skipping to change at page 10, line 32 ¶ | |||
| specific address families. | specific address families. | |||
| Each topology should refer to an existing RIB. | Each topology should refer to an existing RIB. | |||
| Some specific parameters could be defined for a specific topology at | Some specific parameters could be defined for a specific topology at | |||
| global level and also at interface level. | global level and also at interface level. | |||
| 2.3. Per-Level Parameters | 2.3. Per-Level Parameters | |||
| Some parameters support per level configuration. In this case, the | Some parameters support per level configuration. In this case, the | |||
| parameter is built as a list, so different values could be used for | parameter is built as a container with three levels of configuration | |||
| each level. The "level-all" permits to apply a value to both levels. | : | |||
| +--rw priority* [level] | o top level : corresponds to level-1-2, so the configuration applies | |||
| | +--rw value? uint8 | to both levels. | |||
| | +--rw level level | ||||
| Example : | o level-1 : corresponds to level-1 specific parameter. | |||
| <priority> | o level-2 : corresponds to level-2 specific parameter. | |||
| <value>100</value> | ||||
| <level>level-1</level> | ||||
| </priority> | ||||
| <priority> | ||||
| <value>200</value> | ||||
| <level>level-2</level> | ||||
| </priority> | ||||
| As a list is used, a user may decide to apply a level-1, level-2 and | +--rw priority | |||
| level-all parameter at the same time. An implementation SHOULD | | +--rw value? uint8 | |||
| prefer a level specific parameter over level-all parameter. As | | +--rw level-1 | |||
| example, if priority is 100 for level-1, 200 for level-2 and 250 for | | | +--rw value? uint8 | |||
| level-all, the implementation should use 100 for level-1 and 200 for | | +--rw level-2 | |||
| level-2. | | +--rw value? uint8 | |||
| Overload bit and route preference are exceptions to this general | Example : | |||
| modelling approach. In order to accommodate differences between | ||||
| existing implementations, overload, overload-max-metric and | ||||
| preference are modelled as container without per-level configuration. | ||||
| This let the opportunity for vendor to augment those containers with | ||||
| per-level configuration. An implementation that augments those | ||||
| containers with per-level configuration SHOULD : | ||||
| o Create one container for level-1 and one container for level-2. | <priority> | |||
| <value>250</value> | ||||
| <level-1> | ||||
| <value>100</value> | ||||
| </level-1> | ||||
| <level-2> | ||||
| <value>200</value> | ||||
| </level-2> | ||||
| </priority> | ||||
| o Reuse the grouping defined for configuration parameters and apply | An implementation SHOULD prefer a level specific parameter over | |||
| them in level-1 and level-2 containers. | level-all parameter. As example, if priority is 100 for level-1, 200 | |||
| for level-2 and 250 for top level configuration, the implementation | ||||
| should use 100 for level-1 and 200 for level-2. | ||||
| In this case, the value defined in the top-level container SHOULD be | Some parameters like overload bit and route preference are not | |||
| applied to both levels while the value defined in a specific level | modelled for per level configuration. If an implementation supports | |||
| container SHOULD apply to this level only and SHOULD override the | per level configuration for such parameter, the implementation SHOULD | |||
| top-level value if defined. | augment the current model by adding level-1 and level-2 containers | |||
| and reusing existing configuration groupings. | ||||
| Example of augmentation : | Example of augmentation : | |||
| augment "/rt:routing-state/rt:routing-instance/" + | augment "/rt:routing/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-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-config; | uses isis:overload-global-cfg; | |||
| description | description | |||
| "Level 1 configuration."; | "Level 1 configuration."; | |||
| } | } | |||
| container level-2 { | container level-2 { | |||
| uses isis:overload-config; | uses isis:overload-global-cfg; | |||
| description | description | |||
| "Level 2 configuration."; | "Level 2 configuration."; | |||
| } | } | |||
| } | } | |||
| Moreover, if an implementation does not support per level | ||||
| configuration for a parameter, like priority, which has per level | ||||
| configuration, the implementation SHOULD advertise a deviation to | ||||
| announce the non support of the level-1 and level-2 containers. | ||||
| Finally, if an implementation supports per level configuration but | ||||
| does not support the level-1-2 configuration, it SHOULD also | ||||
| 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 a reference to an interface in the Interface YANG | The interface is a reference to an interface in the Interface YANG | |||
| model. | model. | |||
| Each interface has interface-specific parameters that may have a | Each interface has interface-specific parameters that may have a | |||
| different value per level as described in previous section. An | different value per level as described in previous section. An | |||
| interface-specific parameter always override an IS-IS global | interface-specific parameter always override an IS-IS global | |||
| parameter . | parameter . | |||
| Some parameters like BFD and hello-padding are defined as containers | Some parameters like hello-padding are defined as containers to | |||
| to permit easy extension by vendor specific modules. | permit easy extension by vendor specific modules. | |||
| TODO : interfaces.tree | TODO : interfaces.tree | |||
| 2.5. ISO parameters | 2.5. ISO parameters | |||
| Some ISO parameters may be required. | Some ISO parameters may be required. | |||
| This module augments interface configuration model to support ISO | This module augments interface configuration model to support ISO | |||
| configuration parameters. | configuration parameters. | |||
| skipping to change at page 13, line 41 ¶ | skipping to change at page 14, line 5 ¶ | |||
| 3. RPC Operations | 3. RPC Operations | |||
| The "ietf-isis" module defines two RPC operations: | The "ietf-isis" module defines two RPC operations: | |||
| o clear-isis-database: reset the content of a particular IS-IS | o clear-isis-database: reset the content of a particular IS-IS | |||
| database and restart database synchronization with the neighbors. | database and restart database synchronization with the neighbors. | |||
| o clear-isis-adjacency: restart a particular set of IS-IS | o clear-isis-adjacency: restart a particular set of IS-IS | |||
| adjacencies. | adjacencies. | |||
| rpcs: | rpcs: | |||
| +---x clear-adjacency | +---x clear-adjacency | |||
| | +--ro input | | +--ro input | |||
| | +--ro routing-instance-name rt:routing-instance-state-ref | | +--ro routing-protocol-instance-name instance-state-ref | |||
| | +--ro routing-protocol-instance-name instance-state-ref | | +--ro level? level | |||
| | +--ro level? level | | +--ro interface? string | |||
| | +--ro interface? string | +---x clear-database | |||
| +---x clear-database | +--ro input | |||
| +--ro input | +--ro routing-protocol-instance-name instance-state-ref | |||
| +--ro routing-instance-name rt:routing-instance-state-ref | +--ro level? level | |||
| +--ro routing-protocol-instance-name instance-state-ref | ||||
| +--ro level? level | ||||
| 4. Notifications | 4. Notifications | |||
| The "ietf-isis" module introduces some notifications : | The "ietf-isis" module introduces some notifications : | |||
| database-overload : raised when overload condition is changed. | database-overload : raised when overload condition is changed. | |||
| lsp-too-large : raised when the system tries to propagate a too | lsp-too-large : raised when the system tries to propagate a too | |||
| large PDU. | large PDU. | |||
| skipping to change at page 18, line 22 ¶ | skipping to change at page 18, line 32 ¶ | |||
| configuration and operational states. | configuration and operational states. | |||
| The IS-IS SR YANG module requires the base segment routing module | The IS-IS SR YANG module requires the base segment routing module | |||
| ([I-D.ietf-spring-sr-yang]) to be supported as there is a strong | ([I-D.ietf-spring-sr-yang]) to be supported as there is a strong | |||
| relationship between those modules. | relationship between those modules. | |||
| The figure below describe the overall structure of the isis-sr YANG | The figure below describe the overall structure of the isis-sr YANG | |||
| module: | module: | |||
| module: ietf-isis-sr | module: ietf-isis-sr | |||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol | augment /rt:routing/rt:routing-protocols/rt:routing-protocol/isis:isis: | |||
| /isis:isis: | ||||
| +--rw segment-routing | +--rw segment-routing | |||
| | +--rw enabled? boolean | | +--rw enabled? boolean | |||
| | +--rw bindings | | +--rw bindings | |||
| | +--rw advertise | | +--rw advertise | |||
| | | +--rw policies* string | | | +--rw policies* string | |||
| | +--rw receive? boolean | | +--rw receive? boolean | |||
| +--rw protocol-srgb {sr:protocol-srgb}? | +--rw protocol-srgb {sr:protocol-srgb}? | |||
| +--rw srgb* [lower-bound upper-bound] | +--rw srgb* [lower-bound upper-bound] | |||
| +--rw lower-bound uint32 | +--rw lower-bound uint32 | |||
| +--rw upper-bound uint32 | +--rw upper-bound uint32 | |||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol | augment /rt:routing/rt:routing-protocols/rt:routing-protocol | |||
| /isis:isis/isis:interfaces/isis:interface: | /isis:isis/isis:interfaces/isis:interface: | |||
| +--rw segment-routing | +--rw segment-routing | |||
| +--rw adjacency-sid | +--rw adjacency-sid | |||
| +--rw advertise-adj-group-sid* [group-id] | +--rw advertise-adj-group-sid* [group-id] | |||
| | +--rw group-id uint32 | | +--rw group-id uint32 | |||
| +--rw advertise-protection? enumeration | +--rw advertise-protection? enumeration | |||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol | augment /rt:routing/rt:routing-protocols/rt:routing-protocol | |||
| /isis:isis/isis:interfaces/isis:interface/isis:fast-reroute: | /isis:isis/isis:interfaces/isis:interface/isis:fast-reroute: | |||
| +--rw ti-lfa {ti-lfa}? | +--rw ti-lfa {ti-lfa}? | |||
| +--rw enable? boolean | +--rw enable? boolean | |||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol | augment /rt:routing/rt:routing-protocols/rt:routing-protocol | |||
| /isis:isis/isis:interfaces/isis:interface/isis:fast-reroute | /isis:isis/isis:interfaces/isis:interface/isis:fast-reroute | |||
| /isis:lfa/isis:remote-lfa: | /isis:lfa/isis:remote-lfa: | |||
| +--rw use-segment-routing-path? boolean {remote-lfa-sr}? | +--rw use-segment-routing-path? boolean {remote-lfa-sr}? | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol | |||
| /rt:routing-protocol/isis:isis: | /isis:isis: | |||
| +--ro segment-routing | +--ro segment-routing | |||
| | +--ro enabled? boolean | | +--ro enabled? boolean | |||
| | +--ro bindings | | +--ro bindings | |||
| | +--ro advertise | | +--ro advertise | |||
| | | +--ro policies* string | | | +--ro policies* string | |||
| | +--ro receive? boolean | | +--ro receive? boolean | |||
| +--ro protocol-srgb {sr:protocol-srgb}? | +--ro protocol-srgb {sr:protocol-srgb}? | |||
| +--ro srgb* [lower-bound upper-bound] | +--ro srgb* [lower-bound upper-bound] | |||
| +--ro lower-bound uint32 | +--ro lower-bound uint32 | |||
| +--ro upper-bound uint32 | +--ro upper-bound uint32 | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol | |||
| /rt:routing-protocol | /isis:isis/isis:interfaces/isis:interface: | |||
| /isis:isis/isis:interfaces/isis:interface: | ||||
| +--ro segment-routing | +--ro segment-routing | |||
| +--ro adjacency-sid | +--ro adjacency-sid | |||
| +--ro advertise-adj-group-sid* [group-id] | +--ro advertise-adj-group-sid* [group-id] | |||
| | +--ro group-id uint32 | | +--ro group-id uint32 | |||
| +--ro advertise-protection? enumeration | +--ro advertise-protection? enumeration | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol | |||
| /rt:routing-protocol/isis:isis/isis:interfaces/isis:interface | /isis:isis/isis:interfaces/isis:interface/isis:adjacencies | |||
| /isis:adjacencies/isis:adjacency: | /isis:adjacency: | |||
| +--ro adjacency-sid* [value] | +--ro adjacency-sid* [value] | |||
| +--ro af? identityref | +--ro af? identityref | |||
| +--ro value uint32 | +--ro value uint32 | |||
| +--ro weight? uint8 | +--ro weight? uint8 | |||
| +--ro protection-requested? boolean | +--ro protection-requested? boolean | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol | |||
| /rt:routing-protocol | /isis:isis/isis:database/isis:level-db/isis:lsp | |||
| /isis:isis/isis:database/isis:level-db/isis:lsp | ||||
| /isis:extended-is-neighbor/isis:neighbor: | /isis:extended-is-neighbor/isis:neighbor: | |||
| +--ro sid-list* [value] | +--ro sid-list* [value] | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro weight? uint8 | +--ro weight? uint8 | |||
| +--ro neighbor-id? isis:system-id | +--ro neighbor-id? isis:system-id | |||
| +--ro value uint32 | +--ro value uint32 | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol | |||
| /rt:routing-protocol/isis:isis/isis:database/isis:level-db | /isis:isis/isis:database/isis:level-db/isis:lsp | |||
| /isis:lsp/isis:mt-is-neighbor/isis:neighbor: | /isis:mt-is-neighbor/isis:neighbor: | |||
| +--ro sid-list* [value] | +--ro sid-list* [value] | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro weight? uint8 | +--ro weight? uint8 | |||
| +--ro neighbor-id? isis:system-id | +--ro neighbor-id? isis:system-id | |||
| +--ro value uint32 | +--ro value uint32 | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol | |||
| /rt:routing-protocol/isis:isis/isis:database/isis:level-db | /isis:isis/isis:database/isis:level-db/isis:lsp | |||
| /isis:lsp/isis:extended-ipv4-reachability/isis:prefixes: | /isis:extended-ipv4-reachability/isis:prefixes: | |||
| +--ro sid-list* [value] | +--ro sid-list* [value] | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro value uint32 | +--ro value uint32 | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol | |||
| /rt:routing-protocol/isis:isis/isis:database/isis:level-db | /isis:isis/isis:database/isis:level-db/isis:lsp | |||
| /isis:lsp/isis:mt-extended-ipv4-reachability/isis:prefixes: | /isis:mt-extended-ipv4-reachability/isis:prefixes: | |||
| +--ro sid-list* [value] | +--ro sid-list* [value] | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro value uint32 | +--ro value uint32 | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol | |||
| /rt:routing-protocol/isis:isis/isis:database/isis:level-db | /isis:isis/isis:database/isis:level-db/isis:lsp | |||
| /isis:lsp/isis:ipv6-reachability/isis:prefixes: | /isis:ipv6-reachability/isis:prefixes: | |||
| +--ro sid-list* [value] | +--ro sid-list* [value] | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro value uint32 | +--ro value uint32 | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol | |||
| /rt:routing-protocol/isis:isis/isis:database/isis:level-db | /isis:isis/isis:database/isis:level-db/isis:lsp | |||
| /isis:lsp/isis:mt-ipv6-reachability/isis:prefixes: | /isis:mt-ipv6-reachability/isis:prefixes: | |||
| +--ro sid-list* [value] | +--ro sid-list* [value] | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro value uint32 | +--ro value uint32 | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-protocols/rt:routing-protocol | |||
| /rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp: | /isis:isis/isis:database/isis:level-db/isis:lsp: | |||
| +--ro segment-routing-bindings* [fec range] | +--ro segment-routing-bindings* [fec range] | |||
| +--ro fec string | +--ro fec string | |||
| +--ro range uint16 | +--ro range uint16 | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro weight? uint8 | +--ro weight? uint8 | |||
| +--ro binding* | +--ro binding* | |||
| +--ro prefix-sid | +--ro prefix-sid | |||
| | +--ro sid-list* [value] | | +--ro sid-list* [value] | |||
| | +--ro flags? bits | | +--ro flags? bits | |||
| | +--ro algorithm? uint8 | | +--ro algorithm? uint8 | |||
| skipping to change at page 21, line 30 ¶ | skipping to change at page 21, line 37 ¶ | |||
| policies" leaf-list. The "bindings/receive" leaf permits to enable | policies" leaf-list. The "bindings/receive" leaf permits to enable | |||
| the reception of mapping server entries. | the reception of mapping server entries. | |||
| 5.3. IP Fast reroute | 5.3. IP Fast reroute | |||
| IS-IS SR model augments the fast-reroute container under interface. | IS-IS SR model augments the fast-reroute container under interface. | |||
| It brings the ability to activate TI-LFA (topology independent LFA) | It brings the ability to activate TI-LFA (topology independent LFA) | |||
| and also enhances remote LFA to use segment-routing tunneling instead | and also enhances remote LFA to use segment-routing tunneling instead | |||
| of LDP. | of LDP. | |||
| 6. BFD | 6. Interaction with Other YANG Modules | |||
| Additionally this document defines a module that can be used to | ||||
| configure and monitor the IS-IS BFD feature. | ||||
| Bidirectional Forwarding Detection (BFD) ([RFC5880]) is a network | ||||
| protocol that is used for liveness detection of arbitrary paths | ||||
| between systems. A YANG data model is defined in | ||||
| ([I-D.ietf-bfd-yang]) that supports BFD configuration and management. | ||||
| As a client of BFD, the IS-IS protocol uses the services provided by | ||||
| BFD. The IS-IS BFD YANG augments the base IS-IS module and is | ||||
| defined as a separate module. So any implementation that does not | ||||
| support BFD can still use the IS-IS base model without having to | ||||
| import the BFD module ([I-D.ietf-bfd-yang]). | ||||
| module: ietf-isis-bfd | ||||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols | ||||
| /rt:routing-protocol/isis:isis/isis:interfaces/isis:interface: | ||||
| +--rw bfd | ||||
| +--rw enabled? boolean | ||||
| +--rw local-multiplier? multiplier | ||||
| +--rw (interval-config-type)? | ||||
| +--:(tx-rx-intervals) | ||||
| | +--rw desired-min-tx-interval uint32 | ||||
| | +--rw required-min-rx-interval uint32 | ||||
| +--:(single-interval) | ||||
| +--rw min-interval uint32 | ||||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | ||||
| /rt:routing-protocol/isis:isis/isis:interfaces/isis:interface: | ||||
| +--ro bfd | ||||
| +--ro enabled? boolean | ||||
| +--ro local-multiplier? multiplier | ||||
| +--ro (interval-config-type)? | ||||
| +--:(tx-rx-intervals) | ||||
| | +--ro desired-min-tx-interval uint32 | ||||
| | +--ro required-min-rx-interval uint32 | ||||
| +--:(single-interval) | ||||
| +--ro min-interval uint32 | ||||
| 7. Interaction with Other YANG Modules | ||||
| The "isis" configuration container augments the "/rt:routing/ | The "isis" configuration container augments the "/rt:routing/ | |||
| rt:routing-instance/rt:routing-protocols/routing-protocol" container | rt:routing-protocols/routing-protocol" container of the ietf-routing | |||
| of the ietf-routing module by defining IS-IS specific parameters. | [I-D.ietf-netmod-routing-cfg] module by defining IS-IS specific | |||
| parameters. | ||||
| The "isis" module augments "/if:interfaces/if:interface" with ISO | The "isis" module augments "/if:interfaces/if:interface" with ISO | |||
| specific parameters. | specific parameters. | |||
| The "isis" operational state container augments the "/rt:routing- | The "isis" operational state container augments the "/rt:routing- | |||
| state/rt:routing-instance/rt:routing-protocols/routing-protocol" | state/rt:routing-protocols/routing-protocol" container of the ietf- | |||
| container of the ietf-routing module by defining IS-IS specific | routing module by defining IS-IS specific operational states. | |||
| operational states. | ||||
| Some IS-IS specific routes attributes are added to route objects of | Some IS-IS specific routes attributes are added to route objects of | |||
| 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" and "/rt:fib- | state/rt:ribs/rt:rib/rt:routes/rt:route" and "/rt:fib- | |||
| route/rt:output/rt:route". | route/rt:output/rt:route". | |||
| The modules defined in this document use some groupings from ietf- | The modules defined in this document use some groupings from ietf- | |||
| keychain, routing-policy and ietf-bfd modules. | keychain [I-D.ietf-rtgwg-yang-key-chain] and ietf-segment routing | |||
| [I-D.ietf-spring-sr-yang]. | ||||
| 8. IS-IS YANG Module | 7. IS-IS YANG Module | |||
| <CODE BEGINS> file "ietf-isis@2015-11-18.yang" | <CODE BEGINS> file "ietf-isis@2016-03-21.yang" | |||
| module ietf-isis { | module ietf-isis { | |||
| 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"; | |||
| } | } | |||
| skipping to change at page 23, line 30 ¶ | skipping to change at page 22, line 39 ¶ | |||
| } | } | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix yang; | prefix yang; | |||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix "if"; | prefix "if"; | |||
| } | } | |||
| import ietf-key-chain { | import ietf-routing-key-chain { | |||
| prefix "key-chain"; | prefix "key-chain"; | |||
| } | } | |||
| import routing-policy { | ||||
| prefix rtgpol; | ||||
| } | ||||
| organization | organization | |||
| "IETF ISIS Working Group"; | "IETF ISIS Working Group"; | |||
| contact | contact | |||
| "WG List: <mailto:isis-wg@ietf.org> | "WG List: <mailto:isis-wg@ietf.org> | |||
| Editor: Stephane Litkowski | Editor: Stephane Litkowski | |||
| <mailto:stephane.litkowski@orange.com> | <mailto:stephane.litkowski@orange.com> | |||
| Derek Yeung | Derek Yeung | |||
| skipping to change at page 24, line 26 ¶ | skipping to change at page 23, line 28 ¶ | |||
| <mailto:yiqu@cisco.com> | <mailto:yiqu@cisco.com> | |||
| Jeff Tantsura | Jeff Tantsura | |||
| <mailto:jeff.tantsura@ericsson.com> | <mailto:jeff.tantsura@ericsson.com> | |||
| "; | "; | |||
| description | description | |||
| "The YANG module defines a generic configuration model for | "The YANG module defines a generic configuration model for | |||
| ISIS common across all of the vendor implementations."; | ISIS common across all of the vendor implementations."; | |||
| revision 2016-03-21 { | ||||
| description | ||||
| " | ||||
| - remove routing-instance as per core routing model v21 | ||||
| - added BFD leaf (no more BFD protocol model) | ||||
| - changed keychain module reference | ||||
| "; | ||||
| reference "draft-ietf-isis-yang-isis-cfg-09"; | ||||
| } | ||||
| revision 2015-12-17 { | ||||
| description | ||||
| "Moved lists to containers+groupings for per level | ||||
| configuration."; | ||||
| reference "draft-ietf-isis-yang-isis-cfg-08"; | ||||
| } | ||||
| revision 2015-11-25 { | ||||
| description | ||||
| " | ||||
| * Remove selector from system-id type | ||||
| * Added some defaults | ||||
| "; | ||||
| reference ""; | ||||
| } | ||||
| revision 2015-11-18 { | revision 2015-11-18 { | |||
| description | description | |||
| " | " | |||
| * Move Overload config from list to container | * Move Overload config from list to container | |||
| * Move Overload-max-metric config from list to container | * Move Overload-max-metric config from list to container | |||
| * Move preference config from list to container | * Move preference config from list to container | |||
| * Add Node flag in config | * Add Node flag in config | |||
| * Removed BFD config => moved to isis-bfd module | * Removed BFD config => moved to isis-bfd module | |||
| * Remove call to routing policy model | ||||
| (waiting stabilization to add it) | ||||
| "; | "; | |||
| reference ""; | reference "draft-ietf-isis-yang-isis-cfg-07"; | |||
| } | } | |||
| revision 2015-09-10 { | revision 2015-09-10 { | |||
| description | description | |||
| " * Correct invalid references to previous | " * Correct invalid references to previous | |||
| versions core routing model. | versions core routing model. | |||
| * Moved BFD config to usage of ietf-bfd yang grouping | * Moved BFD config to usage of ietf-bfd yang grouping | |||
| * Adding routing-policy support through routing-policy model | * Adding routing-policy support through routing-policy model | |||
| "; | "; | |||
| reference "draft-ietf-isis-yang-isis-05"; | reference "draft-ietf-isis-yang-isis-05"; | |||
| } | } | |||
| skipping to change at page 28, line 49 ¶ | skipping to change at page 28, line 28 ¶ | |||
| database reset action."; | database reset action."; | |||
| } | } | |||
| identity clear-isis-adjacency { | identity clear-isis-adjacency { | |||
| description "Identity for the ISIS routing protocol | description "Identity for the ISIS routing protocol | |||
| adjacency reset action."; | adjacency reset action."; | |||
| } | } | |||
| /* Feature definitions */ | /* Feature definitions */ | |||
| feature bfd { | ||||
| description | ||||
| "Support of BFD for IS-IS links."; | ||||
| } | ||||
| feature key-chain { | feature key-chain { | |||
| description | description | |||
| "Support of keychain for authentication."; | "Support of keychain for authentication."; | |||
| } | } | |||
| feature segment-routing { | feature segment-routing { | |||
| description | description | |||
| "Support of segment-routing."; | "Support of segment-routing."; | |||
| } | } | |||
| feature node-flag { | feature node-flag { | |||
| description | description | |||
| "Support of node-flag advertisement | "Support of node-flag advertisement | |||
| as prefix attribute"; | as prefix attribute"; | |||
| } | } | |||
| skipping to change at page 30, line 47 ¶ | skipping to change at page 30, line 31 ¶ | |||
| feature admin-control { | feature admin-control { | |||
| description | description | |||
| "Control administrative state of ISIS."; | "Control administrative state of ISIS."; | |||
| } | } | |||
| /* Type definitions */ | /* Type definitions */ | |||
| typedef instance-state-ref { | typedef instance-state-ref { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing-state/rt:routing-instance/" | path "/rt:routing-state/" | |||
| +"rt:routing-protocols/rt:routing-protocol/rt:name"; | +"rt:routing-protocols/rt:routing-protocol/rt:name"; | |||
| } | } | |||
| description | description | |||
| "This type is used for leaves that reference state data of | "This type is used for leaves that reference state data of | |||
| an ISIS protocol instance."; | an ISIS protocol instance."; | |||
| } | } | |||
| typedef admin-state { | typedef admin-state { | |||
| type enumeration { | type enumeration { | |||
| enum "up" { | enum "up" { | |||
| skipping to change at page 33, line 34 ¶ | skipping to change at page 33, line 19 ¶ | |||
| length "0 .. 20"; | length "0 .. 20"; | |||
| } | } | |||
| description | description | |||
| "This type defines Subnetwork Point of Attachement format."; | "This type defines Subnetwork Point of Attachement format."; | |||
| } | } | |||
| 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}\.00'; | '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}'; | |||
| } | } | |||
| description | description | |||
| "This type defines ISIS system id using pattern, | "This type defines ISIS system id using pattern, | |||
| system id looks like : 0143.0438.AeF0.00"; | system id looks like : 0143.0438.AeF0"; | |||
| } | } | |||
| typedef wide-metric { | typedef wide-metric { | |||
| type uint32 { | type uint32 { | |||
| range "0 .. 16777215"; | range "0 .. 16777215"; | |||
| } | } | |||
| description | description | |||
| "This type defines wide style format | "This type defines wide style format | |||
| of ISIS metric."; | of ISIS metric."; | |||
| } | } | |||
| skipping to change at page 34, line 33 ¶ | skipping to change at page 34, line 17 ¶ | |||
| description | description | |||
| "LSPs must not be flooded over that interface."; | "LSPs must not be flooded over that interface."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "This type describes meshgroup state of an interface"; | "This type describes meshgroup state of an interface"; | |||
| } | } | |||
| /* Grouping definitions */ | /* Grouping definitions */ | |||
| grouping route-preference-config { | ||||
| choice granularity { | ||||
| case detail { | ||||
| leaf internal { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf defines the protocol | ||||
| preference for internal routes."; | ||||
| } | ||||
| leaf external { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf defines the protocol | ||||
| preference for external routes."; | ||||
| } | ||||
| } | ||||
| case coarse { | ||||
| leaf default { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf defines the protocol | ||||
| preference for all ISIS routes."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Choice for implementation of route preference."; | ||||
| } | ||||
| description | ||||
| "This grouping defines how route preference is configured."; | ||||
| } | ||||
| 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 | |||
| "Control the administrative | "Control the administrative | |||
| state."; | state."; | |||
| } | } | |||
| skipping to change at page 45, line 14 ¶ | skipping to change at page 44, line 18 ¶ | |||
| type level; | type level; | |||
| description | description | |||
| "Level applicability."; | "Level applicability."; | |||
| } | } | |||
| description | description | |||
| "LFA configuration."; | "LFA configuration."; | |||
| } | } | |||
| } | } | |||
| grouping prefix-reachability-attributes { | ||||
| description | ||||
| "This group defines extended reachability attributes of an | ||||
| IPv4 or IPv6 prefix."; | ||||
| leaf external-prefix-flag { | ||||
| type boolean; | ||||
| description | ||||
| "External prefix flag."; | ||||
| } | ||||
| leaf readvertisement-flag { | ||||
| type boolean; | ||||
| description | ||||
| "Readvertisement flag."; | ||||
| } | ||||
| leaf node-flag { | ||||
| type boolean; | ||||
| description | ||||
| "Node flag."; | ||||
| } | ||||
| } | ||||
| grouping prefix-ipv4-source-router-id { | ||||
| description | ||||
| "This group defines the IPv4 source router ID of | ||||
| a prefix advertisement."; | ||||
| leaf ipv4-source-router-id { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "IPv4 Source router ID address."; | ||||
| } | ||||
| } | ||||
| grouping prefix-ipv6-source-router-id { | ||||
| description | ||||
| "This group defines the IPv6 source router ID of | ||||
| a prefix advertisement."; | ||||
| leaf ipv6-source-router-id { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "IPv6 Source router ID address."; | ||||
| } | ||||
| } | ||||
| grouping prefix-attributes-extension { | ||||
| description | ||||
| "Prefix extended attributes."; | ||||
| uses prefix-reachability-attributes; | ||||
| uses prefix-ipv4-source-router-id; | ||||
| uses prefix-ipv6-source-router-id; | ||||
| } | ||||
| grouping prefix-ipv4-std { | grouping prefix-ipv4-std { | |||
| description | description | |||
| "This group defines attributes of an | "This group defines attributes of an | |||
| IPv4 standard prefix."; | IPv4 standard prefix."; | |||
| leaf up-down { | leaf up-down { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "This leaf expresses the value of up/down bit."; | "This leaf expresses the value of up/down bit."; | |||
| } | } | |||
| leaf i-e { | leaf i-e { | |||
| skipping to change at page 47, line 37 ¶ | skipping to change at page 47, line 47 ¶ | |||
| "This leaf describes a list of tags associated with | "This leaf describes a list of tags associated with | |||
| the prefix."; | the prefix."; | |||
| } | } | |||
| leaf-list tag64 { | leaf-list tag64 { | |||
| type uint64; | type uint64; | |||
| description | description | |||
| "This leaf describes a list of 64-bit tags associated with | "This leaf describes a list of 64-bit tags associated with | |||
| the prefix."; | the prefix."; | |||
| } | } | |||
| uses prefix-attributes-extension; | ||||
| } | } | |||
| grouping prefix-ipv6-extended { | grouping prefix-ipv6-extended { | |||
| description | description | |||
| "This group defines attributes of an | "This group defines attributes of an | |||
| IPv6 prefix."; | IPv6 prefix."; | |||
| leaf up-down { | leaf up-down { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "This leaf expresses the value of up/down bit."; | "This leaf expresses the value of up/down bit."; | |||
| skipping to change at page 48, line 30 ¶ | skipping to change at page 48, line 41 ¶ | |||
| "This leaf describes a list of tags associated with | "This leaf describes a list of tags associated with | |||
| the prefix."; | the prefix."; | |||
| } | } | |||
| leaf-list tag64 { | leaf-list tag64 { | |||
| type uint64; | type uint64; | |||
| description | description | |||
| "This leaf describes a list of 64-bit tags associated with | "This leaf describes a list of 64-bit tags associated with | |||
| the prefix."; | the prefix."; | |||
| } | } | |||
| uses prefix-attributes-extension; | ||||
| } | } | |||
| grouping neighbor-extended { | grouping neighbor-extended { | |||
| description | description | |||
| "This group defines attributes of an | "This group defines attributes of an | |||
| ISIS extended neighbor."; | ISIS extended neighbor."; | |||
| leaf neighbor-id { | leaf neighbor-id { | |||
| type system-id; | type system-id; | |||
| description | description | |||
| "This leaf describes the system-id of the neighbor."; | "This leaf describes the system-id of the neighbor."; | |||
| skipping to change at page 58, line 23 ¶ | skipping to change at page 58, line 38 ¶ | |||
| "Node tag value."; | "Node tag value."; | |||
| } | } | |||
| description | description | |||
| "List of tags."; | "List of tags."; | |||
| } | } | |||
| description | description | |||
| "Container for node tags."; | "Container for node tags."; | |||
| } | } | |||
| } | } | |||
| grouping authentication-global-cfg { | ||||
| choice authentication-type { | ||||
| case key-chain { | ||||
| if-feature key-chain; | ||||
| leaf key-chain { | ||||
| type key-chain:key-chain-ref; | ||||
| description | ||||
| "Reference to a key-chain."; | ||||
| } | ||||
| } | ||||
| case password { | ||||
| leaf key { | ||||
| type string; | ||||
| description | ||||
| "This leaf describes the | ||||
| authentication key."; | ||||
| } | ||||
| uses key-chain:crypto-algorithm-types; | ||||
| } | ||||
| description | ||||
| "Choice of authentication."; | ||||
| } | ||||
| description | ||||
| "Grouping for global auth config."; | ||||
| } | ||||
| grouping metric-type-global-cfg { | ||||
| leaf value { | ||||
| type enumeration { | ||||
| enum wide-only { | ||||
| description | ||||
| "Advertise new metric style only | ||||
| (RFC5305)"; | ||||
| } | ||||
| enum old-only { | ||||
| description | ||||
| "Advertise old metric style only | ||||
| (RFC1195)"; | ||||
| } | ||||
| enum both { | ||||
| description "Advertise both metric | ||||
| styles"; | ||||
| } | ||||
| } | ||||
| description | ||||
| "This leaf describes the type of metric | ||||
| to be generated. | ||||
| Wide-only means only new metric style | ||||
| is generated, | ||||
| old-only means that only old style metric | ||||
| is generated, | ||||
| and both means that both are advertised. | ||||
| This leaf is only affecting IPv4 metrics."; | ||||
| } | ||||
| description | ||||
| "Grouping for global metric style config."; | ||||
| } | ||||
| grouping default-metric-global-cfg { | ||||
| leaf value { | ||||
| type wide-metric; | ||||
| default "10"; | ||||
| description | ||||
| "Value of the metric"; | ||||
| } | ||||
| description | ||||
| "Grouping for global default metric config."; | ||||
| } | ||||
| grouping overload-global-cfg { | ||||
| leaf status { | ||||
| type boolean; | ||||
| description | ||||
| "This leaf defines the overload status."; | ||||
| } | ||||
| description | ||||
| "Grouping for overload bit config."; | ||||
| } | ||||
| grouping overload-max-metric-global-cfg { | ||||
| leaf timeout { | ||||
| type uint16; | ||||
| units "seconds"; | ||||
| description | ||||
| "This leaf defines the timeout in seconds | ||||
| of the overload condition."; | ||||
| } | ||||
| description | ||||
| "Grouping for overload-max-metric config."; | ||||
| } | ||||
| grouping route-preference-global-cfg { | ||||
| choice granularity { | ||||
| case detail { | ||||
| leaf internal { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf defines the protocol | ||||
| preference for internal routes."; | ||||
| } | ||||
| leaf external { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf defines the protocol | ||||
| preference for external routes."; | ||||
| } | ||||
| } | ||||
| case coarse { | ||||
| leaf default { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf defines the protocol | ||||
| preference for all ISIS routes."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Choice for implementation of route preference."; | ||||
| } | ||||
| description | ||||
| "This grouping defines how route preference is configured."; | ||||
| } | ||||
| grouping hello-authentication-cfg { | ||||
| choice authentication-type { | ||||
| case key-chain { | ||||
| if-feature key-chain; | ||||
| leaf key-chain { | ||||
| type key-chain:key-chain-ref; | ||||
| description | ||||
| "Reference to a key-chain."; | ||||
| } | ||||
| } | ||||
| case password { | ||||
| leaf key { | ||||
| type string; | ||||
| description | ||||
| "This leaf describes the | ||||
| authentication key."; | ||||
| } | ||||
| uses key-chain:crypto-algorithm-types; | ||||
| } | ||||
| description | ||||
| "Choice of authentication."; | ||||
| } | ||||
| description | ||||
| "Grouping for hello authentication."; | ||||
| } | ||||
| grouping hello-interval-cfg { | ||||
| leaf value { | ||||
| type uint16 { | ||||
| range "1..65535"; | ||||
| } | ||||
| units "seconds"; | ||||
| default 10; | ||||
| description | ||||
| "This leaf defines the interval of | ||||
| hello messages."; | ||||
| } | ||||
| description | ||||
| "Interval between | ||||
| hello messages."; | ||||
| } | ||||
| grouping hello-multiplier-cfg { | ||||
| leaf value { | ||||
| type uint16; | ||||
| description | ||||
| "This leaf defines the number of | ||||
| hello failed to be received before | ||||
| declaring the adjacency down."; | ||||
| } | ||||
| description | ||||
| "This grouping defines the number of | ||||
| hello failed to be received before | ||||
| declaring the adjacency down."; | ||||
| } | ||||
| grouping priority-cfg { | ||||
| leaf value { | ||||
| type uint8 { | ||||
| range "0 .. 127"; | ||||
| } | ||||
| default 64; | ||||
| description | ||||
| "This leaf describes the priority of | ||||
| the interface | ||||
| for DIS election."; | ||||
| } | ||||
| description | ||||
| "This grouping leaf describes the | ||||
| priority of | ||||
| the interface | ||||
| for DIS election."; | ||||
| } | ||||
| grouping metric-cfg { | ||||
| leaf value { | ||||
| type wide-metric; | ||||
| description | ||||
| "Metric value."; | ||||
| } | ||||
| description | ||||
| "Grouping for interface metric"; | ||||
| } | ||||
| grouping isis-global-cfg { | grouping isis-global-cfg { | |||
| description | description | |||
| "Defines the ISIS global configuration."; | "Defines the ISIS global configuration."; | |||
| uses admin-control; | uses admin-control; | |||
| leaf level-type { | leaf level-type { | |||
| type level; | type level; | |||
| default "level-all"; | default "level-all"; | |||
| description | description | |||
| skipping to change at page 60, line 8 ¶ | skipping to change at page 64, line 43 ¶ | |||
| leaf lsp-mtu { | leaf lsp-mtu { | |||
| type uint16; | type uint16; | |||
| units "bytes"; | units "bytes"; | |||
| default 1492; | default 1492; | |||
| description | description | |||
| "This leaf describes the maximum size of a | "This leaf describes the maximum size of a | |||
| LSP PDU in bytes."; | LSP PDU in bytes."; | |||
| } | } | |||
| leaf lsp-lifetime { | leaf lsp-lifetime { | |||
| type uint16; | type uint16 { | |||
| range "1..65535"; | ||||
| } | ||||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "This leaf describes the lifetime of the router | "This leaf describes the lifetime of the router | |||
| LSP in seconds."; | LSP in seconds."; | |||
| } | } | |||
| leaf lsp-refresh { | leaf lsp-refresh { | |||
| if-feature lsp-refresh; | if-feature lsp-refresh; | |||
| type uint16; | type uint16 { | |||
| range "1..65535"; | ||||
| } | ||||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "This leaf describes the refresh interval of the | "This leaf describes the refresh interval of the | |||
| router LSP in seconds."; | router LSP in seconds."; | |||
| } | } | |||
| container graceful-restart { | container graceful-restart { | |||
| if-feature graceful-restart; | if-feature graceful-restart; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Control enabling the feature."; | "Control enabling the feature."; | |||
| } | } | |||
| description | description | |||
| "This container activates graceful restart."; | "This container activates graceful restart."; | |||
| } | } | |||
| uses isis-node-tag-cfg; | uses isis-node-tag-cfg; | |||
| list authentication { | container authentication { | |||
| key level; | uses authentication-global-cfg; | |||
| choice authentication-type { | container level-1 { | |||
| case key-chain { | uses authentication-global-cfg; | |||
| if-feature key-chain; | description "level-1 specific cfg"; | |||
| leaf key-chain { | } | |||
| type key-chain:key-chain-ref; | container level-2 { | |||
| description | uses authentication-global-cfg; | |||
| "Reference to a key-chain."; | description "level-2 specific cfg"; | |||
| } | } | |||
| } | description "authentication global cfg. | |||
| case password { | It covers both LSPs and SNPs."; | |||
| leaf key { | } | |||
| type string; | ||||
| description | ||||
| "This leaf describes the | ||||
| authentication key."; | ||||
| } | ||||
| uses key-chain:crypto-algorithm-types; | ||||
| } | ||||
| description | ||||
| "Choice of authentication."; | ||||
| } | ||||
| leaf level { | ||||
| type level; | ||||
| description | ||||
| "Level applicability."; | ||||
| } | ||||
| description | ||||
| "Container for ISIS authentication. | ||||
| It covers both LSPs and SNPs."; | ||||
| } | ||||
| list metric-type { | container metric-type { | |||
| key level; | uses metric-type-global-cfg; | |||
| leaf value { | container level-1 { | |||
| type enumeration { | uses metric-type-global-cfg; | |||
| enum wide-only { | description "level-1 specific cfg"; | |||
| description | } | |||
| "Advertise new metric style only | container level-2 { | |||
| (RFC5305)"; | uses metric-type-global-cfg; | |||
| } | description "level-2 specific cfg"; | |||
| enum old-only { | } | |||
| description | description "Metric style global cfg."; | |||
| "Advertise old metric style only | } | |||
| (RFC1195)"; | ||||
| } | ||||
| enum both { | ||||
| description "Advertise both metric | ||||
| styles"; | ||||
| } | ||||
| } | ||||
| description | ||||
| "This leaf describes the type of metric | ||||
| to be generated. | ||||
| Wide-only means only new metric style | ||||
| is generated, | ||||
| old-only means that only old style metric | ||||
| is generated, | ||||
| and both means that both are advertised. | ||||
| This leaf is only affecting IPv4 metrics."; | container default-metric { | |||
| } | uses default-metric-global-cfg; | |||
| leaf level { | ||||
| type level; | ||||
| description | ||||
| "Level applicability."; | ||||
| } | ||||
| description | ||||
| "Metric style container."; | ||||
| } | ||||
| list default-metric { | container level-1 { | |||
| key level; | uses default-metric-global-cfg; | |||
| description "level-1 specific cfg"; | ||||
| } | ||||
| container level-2 { | ||||
| uses default-metric-global-cfg; | ||||
| description "level-2 specific cfg"; | ||||
| } | ||||
| description "Default metric global cfg."; | ||||
| } | ||||
| leaf value { | ||||
| type wide-metric; | ||||
| description | ||||
| "Value of the metric"; | ||||
| } | ||||
| leaf level { | ||||
| type level; | ||||
| description | ||||
| "Level applicability of the metric."; | ||||
| } | ||||
| description | ||||
| "Defines the metric to be used by default."; | ||||
| } | ||||
| list af { | list af { | |||
| if-feature nlpid-control; | if-feature nlpid-control; | |||
| key af; | key af; | |||
| leaf af { | leaf af { | |||
| type identityref { | type identityref { | |||
| base rt:address-family; | base rt:address-family; | |||
| } | } | |||
| description | description | |||
| "Address-family"; | "Address-family"; | |||
| } | } | |||
| skipping to change at page 63, line 9 ¶ | skipping to change at page 66, line 47 ¶ | |||
| "Describes the activation state of the | "Describes the activation state of the | |||
| AF."; | AF."; | |||
| } | } | |||
| description | description | |||
| "This list permits activation | "This list permits activation | |||
| of new address families."; | of new address families."; | |||
| } | } | |||
| container preference { | container preference { | |||
| uses route-preference-config; | uses route-preference-global-cfg; | |||
| description | description | |||
| "This container defines the protocol preference."; | "This container defines the protocol preference."; | |||
| } | } | |||
| container overload { | container overload { | |||
| leaf status { | ||||
| type boolean; | uses overload-global-cfg; | |||
| description | ||||
| "This leaf defines the overload status."; | ||||
| } | ||||
| description | description | |||
| "This container describes if the router is | "This container describes if the router is | |||
| set to overload state."; | set to overload state."; | |||
| } | } | |||
| container overload-max-metric { | container overload-max-metric { | |||
| if-feature overload-max-metric; | if-feature overload-max-metric; | |||
| leaf timeout { | uses overload-max-metric-global-cfg; | |||
| type uint16; | ||||
| units "seconds"; | ||||
| description | ||||
| "This leaf defines the timeout in seconds | ||||
| of the overload condition."; | ||||
| } | ||||
| description | description | |||
| "This container describes if the router is | "This container describes if the router is | |||
| set to overload state using max-metric | set to overload state using max-metric | |||
| advertisement."; | advertisement."; | |||
| } | } | |||
| } | } | |||
| grouping isis-global-topologies-cfg { | grouping isis-global-topologies-cfg { | |||
| description | description | |||
| "Per topology config."; | "Per topology config."; | |||
| list default-metric { | ||||
| key level; | ||||
| leaf value { | container default-metric { | |||
| type wide-metric; | uses default-metric-global-cfg; | |||
| description | ||||
| "Value of the metric"; | container level-1 { | |||
| } | uses default-metric-global-cfg; | |||
| leaf level { | description "level-1 specific cfg"; | |||
| type level; | } | |||
| description | container level-2 { | |||
| "Level applicability of the metric."; | uses default-metric-global-cfg; | |||
| description "level-2 specific cfg"; | ||||
| } | ||||
| description "Default metric per | ||||
| topology cfg."; | ||||
| } | } | |||
| description | ||||
| "Defines the metric to be used by default."; | ||||
| } | ||||
| uses isis-node-tag-cfg; | uses isis-node-tag-cfg; | |||
| } | } | |||
| grouping isis-if-cfg { | grouping isis-if-cfg { | |||
| description | description | |||
| "Grouping for interface cfg."; | "Grouping for interface cfg."; | |||
| leaf level-type { | leaf level-type { | |||
| type level; | type level; | |||
| default "level-all"; | default "level-all"; | |||
| description | description | |||
| "This leaf defines the associated ISIS | "This leaf defines the associated ISIS | |||
| level of the interface."; | level of the interface."; | |||
| } | } | |||
| leaf lsp-pacing-interval { | leaf lsp-pacing-interval { | |||
| type uint16; | type uint16; | |||
| units "milliseconds"; | units "milliseconds"; | |||
| default 33; | ||||
| description | description | |||
| "This leaf defines the interval between | "This leaf defines the interval between | |||
| LSP transmissions in milli-seconds"; | LSP transmissions in milli-seconds"; | |||
| } | } | |||
| leaf lsp-retransmit-interval { | leaf lsp-retransmit-interval { | |||
| type uint16; | type uint16; | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "This leaf defines the interval between | "This leaf defines the interval between | |||
| retransmission of LSP"; | retransmission of LSP"; | |||
| skipping to change at page 65, line 4 ¶ | skipping to change at page 68, line 35 ¶ | |||
| "This leaf defines the interval between | "This leaf defines the interval between | |||
| retransmission of LSP"; | retransmission of LSP"; | |||
| } | } | |||
| leaf passive { | leaf passive { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "This leaf defines if interface is in | "This leaf defines if interface is in | |||
| passive mode (ISIS not running, | passive mode (ISIS not running, | |||
| but network is advertised)."; | but network is advertised)."; | |||
| } | } | |||
| leaf csnp-interval { | leaf csnp-interval { | |||
| type uint16; | type uint16 { | |||
| range "1..65535"; | ||||
| } | ||||
| units "seconds"; | units "seconds"; | |||
| default 10; | ||||
| description | description | |||
| "This leaf defines the interval of CSNP | "This leaf defines the interval of CSNP | |||
| messages."; | messages."; | |||
| } | } | |||
| container hello-padding { | container hello-padding { | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| default "true"; | default "true"; | |||
| description | description | |||
| skipping to change at page 66, line 39 ¶ | skipping to change at page 70, line 26 ¶ | |||
| 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 | "Set prefix as a node | |||
| representative prefix."; | representative prefix."; | |||
| } | } | |||
| list hello-authentication { | container hello-authentication { | |||
| key level; | uses hello-authentication-cfg; | |||
| choice authentication-type { | container level-1 { | |||
| case key-chain { | uses hello-authentication-cfg; | |||
| if-feature key-chain; | description "level-1 specific cfg"; | |||
| leaf key-chain { | ||||
| type key-chain:key-chain-ref; | ||||
| description | ||||
| "Reference to a key-chain."; | ||||
| } | ||||
| } | } | |||
| case password { | container level-2 { | |||
| leaf key { | uses hello-authentication-cfg; | |||
| type string; | description "level-2 specific cfg"; | |||
| description | ||||
| "This leaf describes the | ||||
| authentication key."; | ||||
| } | ||||
| uses key-chain:crypto-algorithm-types; | ||||
| } | } | |||
| description | description "Authentication type | |||
| "Choice of authentication."; | ||||
| } | ||||
| leaf level { | ||||
| type level; | ||||
| description | ||||
| "Level applicability."; | ||||
| } | ||||
| description | ||||
| "This leaf describes the authentication type | ||||
| to be used in hello messages."; | to be used in hello messages."; | |||
| } | } | |||
| list hello-interval { | container hello-interval { | |||
| key level; | uses hello-interval-cfg; | |||
| leaf value { | container level-1 { | |||
| type uint16; | uses hello-interval-cfg; | |||
| units "seconds"; | description "level-1 specific cfg"; | |||
| description | } | |||
| "This leaf defines the interval of | container level-2 { | |||
| hello messages."; | uses hello-interval-cfg; | |||
| } | description "level-2 specific cfg"; | |||
| leaf level { | ||||
| type level; | } | |||
| description | description "Interval between | |||
| "Level applicability."; | ||||
| } | ||||
| description | ||||
| "This leaf defines the interval of | ||||
| hello messages."; | hello messages."; | |||
| } | } | |||
| list hello-multiplier { | ||||
| key level; | ||||
| leaf value { | container hello-multiplier { | |||
| type uint16; | uses hello-multiplier-cfg; | |||
| description | ||||
| "This leaf defines the number of | container level-1 { | |||
| hello failed to be received before | uses hello-multiplier-cfg; | |||
| declaring the adjacency down."; | description "level-1 specific cfg"; | |||
| } | } | |||
| leaf level { | container level-2 { | |||
| type level; | uses hello-multiplier-cfg; | |||
| description | description "level-2 specific cfg"; | |||
| "Level applicability."; | } | |||
| } | description "Hello multiplier | |||
| description | configuration."; | |||
| "This leaf defines the number of | ||||
| hello failed to be received before | ||||
| declaring the adjacency down."; | ||||
| } | } | |||
| list priority { | container priority { | |||
| must 'interface-type = "broadcast"' { | must '../interface-type = "broadcast"' { | |||
| error-message | error-message | |||
| "Priority only applies to broadcast | "Priority only applies to broadcast | |||
| interfaces."; | interfaces."; | |||
| description | description | |||
| "Check for broadcast interface."; | "Check for broadcast interface."; | |||
| } | } | |||
| key level; | uses priority-cfg; | |||
| leaf value { | ||||
| type uint8 { | container level-1 { | |||
| range "0 .. 127"; | uses priority-cfg; | |||
| description "level-1 specific cfg"; | ||||
| } | } | |||
| container level-2 { | ||||
| uses priority-cfg; | ||||
| description "level-2 specific cfg"; | ||||
| } | ||||
| description "Priority for DIS election."; | ||||
| } | ||||
| description | container metric { | |||
| "This leaf describes the priority of | uses metric-cfg; | |||
| the interface | ||||
| for DIS election."; | container level-1 { | |||
| } | uses metric-cfg; | |||
| leaf level { | description "level-1 specific cfg"; | |||
| type level; | } | |||
| description | container level-2 { | |||
| "Level applicability."; | uses metric-cfg; | |||
| } | description "level-2 specific cfg"; | |||
| description | } | |||
| "This leaf describes the priority of | description "Metric configuration."; | |||
| the interface | ||||
| for DIS election."; | ||||
| } | } | |||
| list metric { | ||||
| key level; | ||||
| leaf value { | container bfd { | |||
| type wide-metric; | if-feature bfd; | |||
| description | leaf enabled { | |||
| "Metric value."; | type boolean; | |||
| } | default false; | |||
| leaf level { | description " | |||
| type level; | Enables BFD on the interface | |||
| "; | ||||
| } | ||||
| description | description | |||
| "Level applicability."; | "BFD configuration."; | |||
| } | ||||
| description | ||||
| "Container for interface metric"; | ||||
| } | } | |||
| list af { | list af { | |||
| key af; | key af; | |||
| leaf af { | leaf af { | |||
| type identityref { | type identityref { | |||
| base rt:address-family; | base rt:address-family; | |||
| } | } | |||
| description | description | |||
| skipping to change at page 69, line 41 ¶ | skipping to change at page 73, line 4 ¶ | |||
| container mpls { | container mpls { | |||
| container igp-ldp-sync { | container igp-ldp-sync { | |||
| if-feature igp-ldp-sync; | if-feature igp-ldp-sync; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enable/disable IGP LDP sync."; | "Enable/disable IGP LDP sync."; | |||
| } | } | |||
| description | description | |||
| "IGP-LDP sync configuration."; | "IGP-LDP sync configuration."; | |||
| } | } | |||
| description | description | |||
| "Container for MPLS specific configuration | "Container for MPLS specific configuration | |||
| for ISIS."; | for ISIS."; | |||
| } | } | |||
| } | } | |||
| grouping isis-if-topologies-cfg { | grouping isis-if-topologies-cfg { | |||
| description | description | |||
| "ISIS interface topology cfg."; | "ISIS interface topology cfg."; | |||
| list metric { | container metric { | |||
| key level; | uses metric-cfg; | |||
| leaf value { | container level-1 { | |||
| type wide-metric; | uses metric-cfg; | |||
| description | description "level-1 specific cfg"; | |||
| "Metric value."; | ||||
| } | } | |||
| leaf level { | container level-2 { | |||
| type level; | uses metric-cfg; | |||
| description | description "level-2 specific cfg"; | |||
| "Level applicability."; | ||||
| } | } | |||
| description | description "Metric configuration."; | |||
| "Container for interface metric"; | ||||
| } | } | |||
| } | } | |||
| /* */ | /* */ | |||
| augment "/rt:routing-state/rt:routing-instance/" | augment "/rt:routing-state/" | |||
| +"rt:ribs/rt:rib/rt:routes/rt:route" { | +"rt:ribs/rt:rib/rt:routes/rt:route" { | |||
| when "rt:source-protocol = 'isis:isis'" { | when "rt:source-protocol = 'isis:isis'" { | |||
| description "ISIS-specific route attributes."; | description "ISIS-specific route attributes."; | |||
| } | } | |||
| uses route-content; | uses route-content; | |||
| description | description | |||
| "This augments route object in RIB with ISIS-specific | "This augments route object in RIB with ISIS-specific | |||
| attributes."; | attributes."; | |||
| } | } | |||
| skipping to change at page 71, line 4 ¶ | skipping to change at page 74, line 9 ¶ | |||
| uses route-content; | uses route-content; | |||
| description "ISIS-specific route attributes."; | description "ISIS-specific route attributes."; | |||
| } | } | |||
| augment "/if:interfaces/if:interface" | augment "/if:interfaces/if:interface" | |||
| { | { | |||
| leaf clns-mtu { | leaf clns-mtu { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "Defines CLNS MTU of the interface."; | "Defines CLNS MTU of the interface."; | |||
| } | } | |||
| description "ISO interface config."; | description "ISO interface config."; | |||
| } | } | |||
| augment "/rt:routing/rt:routing-instance/rt:routing-protocols/" | augment "/rt:routing/rt:routing-protocols/" | |||
| +"rt:routing-protocol" { | +"rt:routing-protocol" { | |||
| when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment is only valid when routing protocol | "This augment is only valid when routing protocol | |||
| instance type is isis."; | instance type is isis."; | |||
| } | } | |||
| description | description | |||
| "This augments a routing protocol instance with ISIS | "This augments a routing protocol instance with ISIS | |||
| specific parameters."; | specific parameters."; | |||
| container isis { | container isis { | |||
| must "count(area-address) > 0" { | must "count(area-address) > 0" { | |||
| error-message "At least one area-address | error-message "At least one area-address | |||
| must be configured."; | must be configured."; | |||
| description | description | |||
| "Enforce configuration of at least one area."; | "Enforce configuration of at least one area."; | |||
| } | } | |||
| uses isis-global-cfg; | uses isis-global-cfg; | |||
| uses rtgpol:apply-policy-group; | ||||
| container fast-reroute { | container fast-reroute { | |||
| if-feature fast-reroute; | if-feature fast-reroute; | |||
| uses fast-reroute-global-cfg; | uses fast-reroute-global-cfg; | |||
| description | description | |||
| "IPFRR."; | "IPFRR."; | |||
| } | } | |||
| list topologies { | list topologies { | |||
| if-feature multi-topology; | if-feature multi-topology; | |||
| skipping to change at page 73, line 25 ¶ | skipping to change at page 76, line 30 ¶ | |||
| "This container defines ISIS interface specific | "This container defines ISIS interface specific | |||
| configuration objects."; | configuration objects."; | |||
| } | } | |||
| description | description | |||
| "This container defines ISIS specific configuration | "This container defines ISIS specific configuration | |||
| objects."; | objects."; | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing-state/rt:routing-instance/" | augment "/rt:routing-state/" | |||
| +"rt:routing-protocols/rt:routing-protocol" { | +"rt:routing-protocols/rt:routing-protocol" { | |||
| when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment is only valid when routing protocol | "This augment is only valid when routing protocol | |||
| instance type is isis."; | instance type is isis."; | |||
| } | } | |||
| description | description | |||
| "This augments routing protocol instance states with ISIS | "This augments routing protocol instance states with ISIS | |||
| specific parameters."; | specific parameters."; | |||
| skipping to change at page 86, line 48 ¶ | skipping to change at page 89, line 50 ¶ | |||
| /* RPC methods */ | /* RPC methods */ | |||
| rpc clear-adjacency { | rpc clear-adjacency { | |||
| description | description | |||
| "This RPC request clears a particular | "This RPC request clears a particular | |||
| set of ISIS adjacencies. If the operation | set of ISIS adjacencies. If the operation | |||
| fails for ISIS internal reason, then | fails for ISIS internal reason, then | |||
| error-tag and error-app-tag should be set | error-tag and error-app-tag should be set | |||
| to a meaningful value."; | to a meaningful value."; | |||
| input { | input { | |||
| leaf routing-instance-name { | ||||
| type rt:routing-instance-state-ref; | ||||
| mandatory "true"; | ||||
| description | ||||
| "Name of the routing instance whose ISIS | ||||
| information is being queried. | ||||
| If the routing instance with name equal to the | ||||
| value of this parameter doesn't exist, then this | ||||
| operation SHALL fail with error-tag 'data-missing' | ||||
| and error-app-tag 'routing-instance-not-found'."; | ||||
| } | ||||
| leaf routing-protocol-instance-name { | leaf routing-protocol-instance-name { | |||
| type instance-state-ref; | type instance-state-ref; | |||
| mandatory "true"; | mandatory "true"; | |||
| description | description | |||
| "Name of the ISIS protocol instance whose ISIS | "Name of the ISIS protocol instance whose ISIS | |||
| information is being queried. | information is being queried. | |||
| If the ISIS instance with name equal to the | If the ISIS instance with name equal to the | |||
| value of this parameter doesn't exist, then this | value of this parameter doesn't exist, then this | |||
| operation SHALL fail with error-tag 'data-missing' | operation SHALL fail with error-tag 'data-missing' | |||
| skipping to change at page 88, line 4 ¶ | skipping to change at page 90, line 42 ¶ | |||
| description | description | |||
| "Name of the ISIS interface. | "Name of the ISIS interface. | |||
| If the ISIS interface with name equal to the | If the ISIS interface with name equal to the | |||
| value of this parameter doesn't exist, then this | value of this parameter doesn't exist, then this | |||
| operation SHALL fail with error-tag 'data-missing' | operation SHALL fail with error-tag 'data-missing' | |||
| and error-app-tag | and error-app-tag | |||
| 'isis-interface-not-found'."; | 'isis-interface-not-found'."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| rpc clear-database { | rpc clear-database { | |||
| description | description | |||
| "This RPC request clears a particular | "This RPC request clears a particular | |||
| ISIS database. If the operation | ISIS database. If the operation | |||
| fails for ISIS internal reason, then | fails for ISIS internal reason, then | |||
| error-tag and error-app-tag should be set | error-tag and error-app-tag should be set | |||
| to a meaningful value."; | to a meaningful value."; | |||
| input { | input { | |||
| leaf routing-instance-name { | ||||
| type rt:routing-instance-state-ref; | ||||
| mandatory "true"; | ||||
| description | ||||
| "Name of the routing instance whose ISIS | ||||
| information is being queried. | ||||
| If the routing instance with name equal to the | ||||
| value of this parameter doesn't exist, then this | ||||
| operation SHALL fail with error-tag 'data-missing' | ||||
| and error-app-tag 'routing-instance-not-found'."; | ||||
| } | ||||
| leaf routing-protocol-instance-name { | leaf routing-protocol-instance-name { | |||
| type instance-state-ref; | type instance-state-ref; | |||
| mandatory "true"; | mandatory "true"; | |||
| description | description | |||
| "Name of the ISIS protocol instance whose ISIS | "Name of the ISIS protocol instance whose ISIS | |||
| information is being queried. | information is being queried. | |||
| If the ISIS instance with name equal to the | If the ISIS instance with name equal to the | |||
| value of this parameter doesn't exist, then this | value of this parameter doesn't exist, then this | |||
| operation SHALL fail with error-tag 'data-missing' | operation SHALL fail with error-tag 'data-missing' | |||
| skipping to change at page 98, line 4 ¶ | skipping to change at page 100, line 25 ¶ | |||
| description | description | |||
| "This notification is sent when a LSP | "This notification is sent when a LSP | |||
| is regenerated. | is regenerated. | |||
| The notification generation must be throttled with at least | The notification generation must be throttled with at least | |||
| a 5 second gap. "; | a 5 second gap. "; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 9. IS-IS Segment Routing YANG Module | ||||
| <CODE BEGINS> file "ietf-isis-sr@2015-11-18.yang" | 8. IS-IS Segment Routing YANG Module | |||
| <CODE BEGINS> file "ietf-isis-sr@2016-03-21.yang" | ||||
| module ietf-isis-sr { | module ietf-isis-sr { | |||
| namespace "urn:ietf:params:xml:ns:" | namespace "urn:ietf:params:xml:ns:" | |||
| + "yang:ietf-isis-sr"; | + "yang:ietf-isis-sr"; | |||
| prefix isis-sr; | prefix isis-sr; | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| } | } | |||
| skipping to change at page 99, line 5 ¶ | skipping to change at page 101, line 29 ¶ | |||
| Jeff Tantsura | Jeff Tantsura | |||
| <mailto:jeff.tantsura@ericsson.com> | <mailto:jeff.tantsura@ericsson.com> | |||
| "; | "; | |||
| description | description | |||
| "The YANG module defines a generic configuration model for | "The YANG module defines a generic configuration model for | |||
| Segment routing ISIS extensions common across all of the vendor | Segment routing ISIS extensions common across all of the vendor | |||
| implementations."; | implementations."; | |||
| revision 2016-03-21 { | ||||
| description " | ||||
| * Removed routing-instance in path as per | ||||
| core routing model v21 | ||||
| "; | ||||
| reference ""; | ||||
| } | ||||
| revision 2015-09-18 { | revision 2015-09-18 { | |||
| description "no modif"; | description "no modif"; | |||
| reference ""; | reference ""; | |||
| } | } | |||
| revision 2015-07-02 { | revision 2015-07-02 { | |||
| description | description | |||
| " | " | |||
| * Add TILFA and rLFA SR | * Add TILFA and rLFA SR | |||
| * Add container to SRGB | * Add container to SRGB | |||
| "; | "; | |||
| skipping to change at page 107, line 21 ¶ | skipping to change at page 110, line 4 ¶ | |||
| description | description | |||
| "Binding a backup path over unnumbered interface."; | "Binding a backup path over unnumbered interface."; | |||
| } | } | |||
| description | description | |||
| "Bindings associated with the range."; | "Bindings associated with the range."; | |||
| } | } | |||
| description | description | |||
| "This container describes list of SID/Label | "This container describes list of SID/Label | |||
| bindings. | bindings. | |||
| ISIS reference is TLV 149."; | ISIS reference is TLV 149."; | |||
| } | } | |||
| description | description | |||
| "Defines binding TLV for database."; | "Defines binding TLV for database."; | |||
| } | } | |||
| /* Cfg */ | /* Cfg */ | |||
| augment "/rt:routing/rt:routing-instance/" + | augment "/rt:routing/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis" { | "/isis:isis" { | |||
| when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augment ISIS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol configuration | "This augments ISIS protocol configuration | |||
| with segment routing."; | with segment routing."; | |||
| uses sr:controlplane-cfg; | uses sr:controlplane-cfg; | |||
| container protocol-srgb { | container protocol-srgb { | |||
| if-feature sr:protocol-srgb; | if-feature sr:protocol-srgb; | |||
| uses sr:srgb-cfg; | uses sr:srgb-cfg; | |||
| description | description | |||
| "Per-protocol SRGB."; | "Per-protocol SRGB."; | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:routing-instance/" + | augment "/rt:routing/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis/isis:interfaces/isis:interface" { | "/isis:isis/isis:interfaces/isis:interface" { | |||
| when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augment ISIS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol configuration | "This augments ISIS protocol configuration | |||
| with segment routing."; | with segment routing."; | |||
| uses sr:igp-interface-cfg; | uses sr:igp-interface-cfg; | |||
| } | } | |||
| augment "/rt:routing/rt:routing-instance/" + | augment "/rt:routing/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis/isis:interfaces/isis:interface"+ | "/isis:isis/isis:interfaces/isis:interface"+ | |||
| "/isis:fast-reroute" { | "/isis:fast-reroute" { | |||
| when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augment ISIS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS IP FRR with TILFA."; | "This augments ISIS IP FRR with TILFA."; | |||
| container ti-lfa { | container ti-lfa { | |||
| if-feature ti-lfa; | if-feature ti-lfa; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Enables TI-LFA computation."; | "Enables TI-LFA computation."; | |||
| } | } | |||
| description | description | |||
| "TILFA configuration."; | "TILFA configuration."; | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:routing-instance/" + | augment "/rt:routing/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis/isis:interfaces/isis:interface"+ | "/isis:isis/isis:interfaces/isis:interface"+ | |||
| "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { | "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { | |||
| when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augment ISIS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS remoteLFA config with | "This augments ISIS remoteLFA config with | |||
| use of segment-routing path."; | use of segment-routing path."; | |||
| skipping to change at page 109, line 17 ¶ | skipping to change at page 111, line 49 ¶ | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "force remote LFA to use segment routing | "force remote LFA to use segment routing | |||
| path instead of LDP path."; | path instead of LDP path."; | |||
| } | } | |||
| } | } | |||
| /* Operational states */ | /* Operational states */ | |||
| augment "/rt:routing-state/rt:routing-instance/" + | augment "/rt:routing-state/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis" { | "/isis:isis" { | |||
| when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augment ISIS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol configuration | "This augments ISIS protocol configuration | |||
| with segment routing."; | with segment routing."; | |||
| uses sr:controlplane-cfg; | uses sr:controlplane-cfg; | |||
| container protocol-srgb { | container protocol-srgb { | |||
| if-feature sr:protocol-srgb; | if-feature sr:protocol-srgb; | |||
| uses sr:srgb-cfg; | uses sr:srgb-cfg; | |||
| description | description | |||
| "Per-protocol SRGB."; | "Per-protocol SRGB."; | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing-state/rt:routing-instance/" + | augment "/rt:routing-state/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis/isis:interfaces/isis:interface" { | "/isis:isis/isis:interfaces/isis:interface" { | |||
| when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augment ISIS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol configuration | "This augments ISIS protocol configuration | |||
| with segment routing."; | with segment routing."; | |||
| uses sr:igp-interface-cfg; | uses sr:igp-interface-cfg; | |||
| } | } | |||
| augment "/rt:routing-state/rt:routing-instance/" + | ||||
| augment "/rt:routing-state/" + | ||||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis/isis:interfaces/isis:interface" + | "/isis:isis/isis:interfaces/isis:interface" + | |||
| "/isis:adjacencies/isis:adjacency" { | "/isis:adjacencies/isis:adjacency" { | |||
| when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augment ISIS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol configuration | "This augments ISIS protocol configuration | |||
| with segment routing."; | with segment routing."; | |||
| uses adjacency-state; | uses adjacency-state; | |||
| } | } | |||
| augment "/rt:routing-state/" + | ||||
| augment "/rt:routing-state/rt:routing-instance/" + | ||||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | |||
| "/isis:extended-is-neighbor/isis:neighbor" { | "/isis:extended-is-neighbor/isis:neighbor" { | |||
| description | description | |||
| "This augments ISIS protocol LSDB neighbor."; | "This augments ISIS protocol LSDB neighbor."; | |||
| uses adjacency-segment-id; | uses adjacency-segment-id; | |||
| } | } | |||
| augment "/rt:routing-state/rt:routing-instance/" + | augment "/rt:routing-state/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | |||
| "/isis:mt-is-neighbor/isis:neighbor" { | "/isis:mt-is-neighbor/isis:neighbor" { | |||
| description | description | |||
| "This augments ISIS protocol LSDB neighbor."; | "This augments ISIS protocol LSDB neighbor."; | |||
| uses adjacency-segment-id; | uses adjacency-segment-id; | |||
| } | } | |||
| augment "/rt:routing-state/rt:routing-instance/" + | augment "/rt:routing-state/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | |||
| "/isis:extended-ipv4-reachability/isis:prefixes" { | "/isis:extended-ipv4-reachability/isis:prefixes" { | |||
| description | description | |||
| "This augments ISIS protocol LSDB prefix."; | "This augments ISIS protocol LSDB prefix."; | |||
| uses prefix-segment-id; | uses prefix-segment-id; | |||
| } | } | |||
| augment "/rt:routing-state/rt:routing-instance/" + | augment "/rt:routing-state/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | |||
| "/isis:mt-extended-ipv4-reachability/isis:prefixes" { | "/isis:mt-extended-ipv4-reachability/isis:prefixes" { | |||
| description | description | |||
| "This augments ISIS protocol LSDB prefix."; | "This augments ISIS protocol LSDB prefix."; | |||
| uses prefix-segment-id; | uses prefix-segment-id; | |||
| } | } | |||
| augment "/rt:routing-state/rt:routing-instance/" + | augment "/rt:routing-state/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | |||
| "/isis:ipv6-reachability/isis:prefixes" { | "/isis:ipv6-reachability/isis:prefixes" { | |||
| description | description | |||
| "This augments ISIS protocol LSDB prefix."; | "This augments ISIS protocol LSDB prefix."; | |||
| uses prefix-segment-id; | uses prefix-segment-id; | |||
| } | } | |||
| augment "/rt:routing-state/rt:routing-instance/" + | augment "/rt:routing-state/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | |||
| "/isis:mt-ipv6-reachability/isis:prefixes" { | "/isis:mt-ipv6-reachability/isis:prefixes" { | |||
| description | description | |||
| "This augments ISIS protocol LSDB prefix."; | "This augments ISIS protocol LSDB prefix."; | |||
| uses prefix-segment-id; | uses prefix-segment-id; | |||
| } | } | |||
| augment "/rt:routing-state/rt:routing-instance/" + | augment "/rt:routing-state/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis/isis:database/isis:level-db/isis:lsp" { | "/isis:isis/isis:database/isis:level-db/isis:lsp" { | |||
| description | description | |||
| "This augments ISIS protocol LSDB."; | "This augments ISIS protocol LSDB."; | |||
| uses segment-routing-binding-tlv; | uses segment-routing-binding-tlv; | |||
| } | } | |||
| /* Notifications */ | /* Notifications */ | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 10. IS-IS BFD YANG Module | 9. Security Considerations | |||
| <CODE BEGINS> file "ietf-isis-bfd@2015-11-18.yang" | ||||
| module ietf-isis-bfd { | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-isis-bfd"; | ||||
| prefix isis-bfd; | ||||
| import ietf-routing { | ||||
| prefix "rt"; | ||||
| } | ||||
| import ietf-bfd { | ||||
| prefix "bfd"; | ||||
| } | ||||
| import ietf-isis { | ||||
| prefix "isis"; | ||||
| } | ||||
| organization | ||||
| "IETF ISIS Working Group"; | ||||
| contact | ||||
| " | ||||
| WG List: <mailto:isis-wg@ietf.org> | ||||
| Editor: Stephane Litkowski | ||||
| <mailto:stephane.litkowski@orange.com> | ||||
| Author: Derek Yeung | ||||
| <mailto:myeung@cisco.com> | ||||
| Author: Yingzhen Qu | ||||
| <mailto:yiqu@cisco.com> | ||||
| Author: Acee Lindem | ||||
| <mailto:acee@cisco.com> | ||||
| Author: Jeffrey Zhang | ||||
| <mailto:zzhang@juniper.net> | ||||
| Author: Ing-Wher Chen | ||||
| <mailto:ing-wher.chen@ericsson.com> | ||||
| Author: Greg Hankins | ||||
| <mailto:greg.hankins@alcatel-lucent.com>"; | ||||
| description | ||||
| "This YANG module defines the generic configuration | ||||
| and operational state for ISIS BFD, which is common | ||||
| across all of the vendor implementations. It is | ||||
| intended that the module will be extended by vendors to | ||||
| define vendor-specific ISIS BFD configuration | ||||
| and operational parameters and policies."; | ||||
| revision 2015-11-18 { | ||||
| description | ||||
| "Initial revision."; | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for ISIS BFD."; | ||||
| } | ||||
| feature bfd-protocol-parms { | ||||
| description | ||||
| "ISIS BFD protocol specific parameters support."; | ||||
| } | ||||
| /* Configuration */ | ||||
| augment "/rt:routing/rt:routing-instance/rt:routing-protocols/" | ||||
| + "rt:routing-protocol/isis:isis/" | ||||
| + "isis:interfaces/isis:interface" { | ||||
| when "../../../../../../rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augments the ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol configuration | ||||
| with BFD."; | ||||
| container bfd { | ||||
| description "BFD configuration."; | ||||
| leaf enabled { | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "True if BFD is enabled for the ISIS interface."; | ||||
| } | ||||
| uses bfd:bfd-grouping-base-cfg-parms { | ||||
| if-feature bfd-protocol-parms; | ||||
| } | ||||
| } | ||||
| } | ||||
| /* Operational states */ | ||||
| augment "/rt:routing-state/rt:routing-instance/" | ||||
| + "rt:routing-protocols/rt:routing-protocol/" | ||||
| + "isis:isis/" | ||||
| + "isis:interfaces/isis:interface" { | ||||
| when "../../../../../../rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augments the ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol operation | ||||
| with BFD."; | ||||
| container bfd { | ||||
| description "BFD operation."; | ||||
| leaf enabled { | ||||
| type boolean; | ||||
| description | ||||
| "True if BFD is enabled for the ISIS interface."; | ||||
| } | ||||
| uses bfd:bfd-grouping-base-cfg-parms { | ||||
| if-feature bfd-protocol-parms; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 11. Security Considerations | ||||
| Configuration and state data defined in this document are designed to | Configuration and state data defined in this document are designed to | |||
| be accessed via the NETCONF protocol [RFC6241]. | be accessed via the NETCONF protocol [RFC6241]. | |||
| As IS-IS is an IGP protocol (critical piece of the network), ensuring | As IS-IS is an IGP protocol (critical piece of the network), ensuring | |||
| stability and security of the protocol is mandatory for the network | stability and security of the protocol is mandatory for the network | |||
| service. | service. | |||
| Authors recommends to implement NETCONF access control model | Authors recommends to implement NETCONF access control model | |||
| ([RFC6536]) to restrict access to all or part of the configuration to | ([RFC6536]) to restrict access to all or part of the configuration to | |||
| skipping to change at page 115, line 16 ¶ | skipping to change at page 115, line 26 ¶ | |||
| presented in the description of the /isis-state/database/level- | presented in the description of the /isis-state/database/level- | |||
| 1/lsp/authentication/authentication-key, the authentication MUST | 1/lsp/authentication/authentication-key, the authentication MUST | |||
| never be presented in plaintext format for security reason. Authors | never be presented in plaintext format for security reason. Authors | |||
| recommends the usage of MD5 to present the authentication-key. | recommends the usage of MD5 to present the authentication-key. | |||
| Some authentication-key may also be present in the /isis | Some authentication-key may also be present in the /isis | |||
| configuration. When configuring IS-IS using the NETCONF protocol, | configuration. When configuring IS-IS using the NETCONF protocol, | |||
| authors recommends the usage of secure transport of NETCONF using SSH | authors recommends the usage of secure transport of NETCONF using SSH | |||
| ([RFC6242]). | ([RFC6242]). | |||
| 12. Contributors | 10. Contributors | |||
| Authors would like to thank Kiran Agrahara Sreenivasa, Dean | Authors would like to thank Kiran Agrahara Sreenivasa, Dean | |||
| Bogdanovic, Yingzhen Qu, Yi Yang for their major contributions to the | Bogdanovic, Yingzhen Qu, Yi Yang for their major contributions to the | |||
| draft. | draft. | |||
| 13. Acknowledgements | 11. Acknowledgements | |||
| TBD. | TBD. | |||
| 14. IANA Considerations | 12. IANA Considerations | |||
| TBD. | The IANA is requested to assign two new URIs from the IETF XML | |||
| registry ([RFC3688]). Authors are suggesting the following URIs : | ||||
| 15. Normative References | URI: urn:ietf:params:xml:ns:yang:ietf-isis | |||
| Registrant Contact: IS-IS WG | ||||
| XML: N/A, the requested URI is an XML namespace | ||||
| [I-D.acee-rtg-yang-key-chain] | URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr | |||
| Lindem, A., Qu, Y., Yeung, D., Chen, H., Zhang, J., and Y. | Registrant Contact: IS-IS WG | |||
| Yang, "Key Chain YANG Data Model", draft-acee-rtg-yang- | XML: N/A, the requested URI is an XML namespace | |||
| key-chain-09 (work in progress), October 2015. | ||||
| [I-D.ietf-bfd-yang] | This document also requests two new YANG modules name in the YANG | |||
| Zheng, L., Rahman, R., Networks, J., Jethanandani, M., and | Module Names registry ([RFC6020]) with the following suggestion : | |||
| G. Mirsky, "Yang Data Model for Bidirectional Forwarding | ||||
| Detection (BFD)", draft-ietf-bfd-yang-00 (work in | name: ietf-isis | |||
| progress), August 2015. | namespace: urn:ietf:params:xml:ns:yang:ietf-isis | |||
| prefix: isis | ||||
| reference: RFC XXXX | ||||
| name: ietf-isis-sr | ||||
| namespace: urn:ietf:params:xml:ns:yang:ietf-isis-sr | ||||
| prefix: isis-sr | ||||
| reference: RFC XXXX | ||||
| 13. Normative References | ||||
| [I-D.ietf-netmod-routing-cfg] | [I-D.ietf-netmod-routing-cfg] | |||
| Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | |||
| Management", draft-ietf-netmod-routing-cfg-20 (work in | Management", draft-ietf-netmod-routing-cfg-21 (work in | |||
| progress), October 2015. | progress), March 2016. | |||
| [I-D.ietf-rtgwg-yang-key-chain] | ||||
| Lindem, A., Qu, Y., Yeung, D., Chen, H., Zhang, J., and Y. | ||||
| Yang, "Routing Key Chain YANG Data Model", draft-ietf- | ||||
| rtgwg-yang-key-chain-02 (work in progress), March 2016. | ||||
| [I-D.ietf-spring-sr-yang] | [I-D.ietf-spring-sr-yang] | |||
| Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG | Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG | |||
| Data Model for Segment Routing", draft-ietf-spring-sr- | Data Model for Segment Routing", draft-ietf-spring-sr- | |||
| yang-01 (work in progress), October 2015. | yang-02 (work in progress), March 2016. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | ||||
| DOI 10.17487/RFC3688, January 2004, | ||||
| <http://www.rfc-editor.org/info/rfc3688>. | ||||
| [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | |||
| (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | |||
| <http://www.rfc-editor.org/info/rfc5880>. | <http://www.rfc-editor.org/info/rfc5880>. | |||
| [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for | ||||
| the Network Configuration Protocol (NETCONF)", RFC 6020, | ||||
| DOI 10.17487/RFC6020, October 2010, | ||||
| <http://www.rfc-editor.org/info/rfc6020>. | ||||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
| and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
| <http://www.rfc-editor.org/info/rfc6241>. | <http://www.rfc-editor.org/info/rfc6241>. | |||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
| <http://www.rfc-editor.org/info/rfc6242>. | <http://www.rfc-editor.org/info/rfc6242>. | |||
| [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | |||
| skipping to change at page 116, line 37 ¶ | skipping to change at page 117, line 28 ¶ | |||
| Appendix A. Example: NETCONF <get> Reply | Appendix A. Example: NETCONF <get> Reply | |||
| This section gives an example of a reply to the NETCONF <get> request | This section gives an example of a reply to the NETCONF <get> request | |||
| for a device that implements the data model defined in this document. | for a device that implements the data model defined in this document. | |||
| The example is written in XML. | The example is written in XML. | |||
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | |||
| <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> | |||
| <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | |||
| <routing-instance> | ||||
| <name>SLI</name> | <name>SLI</name> | |||
| <router-id>1.1.1.1</router-id> | <router-id>1.1.1.1</router-id> | |||
| <description/> | <description/> | |||
| <default-ribs> | <default-ribs> | |||
| <default-rib> | <default-rib> | |||
| <address-family>ipv4-unicast</address-family> | <address-family>ipv4-unicast</address-family> | |||
| <rib-name>default</rib-name> | <rib-name>default</rib-name> | |||
| </default-rib> | </default-rib> | |||
| </default-ribs> | </default-ribs> | |||
| <interfaces> | <interfaces> | |||
| skipping to change at page 118, line 15 ¶ | skipping to change at page 119, line 4 ¶ | |||
| </interface> | </interface> | |||
| <interface> | <interface> | |||
| <name>Eth1</name> | <name>Eth1</name> | |||
| <level-type>level-2</level-type> | <level-type>level-2</level-type> | |||
| <interface-type>point-to-point</interface-type> | <interface-type>point-to-point</interface-type> | |||
| <metric> | <metric> | |||
| <value>167890</value> | <value>167890</value> | |||
| </metric> | </metric> | |||
| </interface> | </interface> | |||
| </interfaces> | </interfaces> | |||
| </instance> | </instance> | |||
| </isis> | </isis> | |||
| </routing-protocol> | </routing-protocol> | |||
| </routing-protocols> | </routing-protocols> | |||
| </routing-instance> | ||||
| <ribs> | <ribs> | |||
| <rib> | <rib> | |||
| <name>default</name> | <name>default</name> | |||
| <address-family>ipv4-unicast</address-family> | <address-family>ipv4-unicast</address-family> | |||
| <description/> | <description/> | |||
| <recipient-ribs> | <recipient-ribs> | |||
| <recipient-rib> | <recipient-rib> | |||
| <rib-name/> | <rib-name/> | |||
| <filter/> | <filter/> | |||
| </recipient-rib> | </recipient-rib> | |||
| End of changes. 145 change blocks. | ||||
| 896 lines changed or deleted | 936 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/ | ||||