| < draft-ietf-isis-yang-isis-cfg-02.txt | draft-ietf-isis-yang-isis-cfg-03.txt > | |||
|---|---|---|---|---|
| ISIS Working Group S. Litkowski | ISIS Working Group S. Litkowski | |||
| Internet-Draft Orange | Internet-Draft Orange | |||
| Intended status: Standards Track D. Yeung | Intended status: Standards Track D. Yeung | |||
| Expires: September 5, 2015 A. Lindem | Expires: December 25, 2015 A. Lindem | |||
| Cisco Systems | Cisco Systems | |||
| J. Zhang | J. Zhang | |||
| Juniper Networks | Juniper Networks | |||
| L. Lhotka | L. Lhotka | |||
| March 04, 2015 | ||||
| June 23, 2015 | ||||
| YANG Data Model for ISIS protocol | YANG Data Model for ISIS protocol | |||
| draft-ietf-isis-yang-isis-cfg-02 | draft-ietf-isis-yang-isis-cfg-03 | |||
| 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 ISIS protocol on network elements. | and manage ISIS protocol on network elements. It also defined an | |||
| extension module for segment routing configuration and 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 42 ¶ | 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 September 5, 2015. | This Internet-Draft will expire on December 25, 2015. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2015 IETF Trust and the persons identified as the | Copyright (c) 2015 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 | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 2 | 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 | 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. ISIS Configuration . . . . . . . . . . . . . . . . . . . 5 | 2.1. ISIS Configuration . . . . . . . . . . . . . . . . . . . 9 | |||
| 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 7 | 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10 | |||
| 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 7 | 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 | |||
| 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 8 | 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 10 | |||
| 2.5. ISO parameters . . . . . . . . . . . . . . . . . . . . . 10 | 2.5. ISO parameters . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 2.6. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 2.6. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 2.7. Segment Routing . . . . . . . . . . . . . . . . . . . . . 10 | 2.7. Operational State . . . . . . . . . . . . . . . . . . . . 11 | |||
| 2.8. Operational State . . . . . . . . . . . . . . . . . . . . 11 | 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 18 | 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 19 | 5. Segment Routing . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 5. Interaction with Other YANG Modules . . . . . . . . . . . . . 23 | 5.1. Segment Routing activation . . . . . . . . . . . . . . . 19 | |||
| 6. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 23 | 5.2. Advertising mapping server policy . . . . . . . . . . . . 19 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 110 | 6. Interaction with Other YANG Modules . . . . . . . . . . . . . 19 | |||
| 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 111 | 7. ISIS YANG Module . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 112 | 8. ISIS Segment Routing YANG Module . . . . . . . . . . . . . . 94 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 112 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 106 | |||
| 11. Normative References . . . . . . . . . . . . . . . . . . . . 112 | 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 107 | |||
| Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 112 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 108 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 115 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 108 | |||
| 13. Normative References . . . . . . . . . . . . . . . . . . . . 108 | ||||
| Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 108 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 111 | ||||
| 1. Introduction | 1. Introduction | |||
| This document defines a YANG data model for ISIS routing protocol. | This document defines a YANG data model for ISIS routing protocol. | |||
| The data model covers configuration of an ISIS routing protocol | The data model covers configuration of an ISIS 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 39 ¶ | skipping to change at page 3, line 49 ¶ | |||
| 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:ribs/rt:rib/rt:routes/rt:route: | augment /rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route: | |||
| +--ro metric? uint32 | +--ro metric? uint32 | |||
| +--ro tag* uint64 | +--ro tag* uint64 | |||
| +--ro route-type? enumeration | +--ro route-type? enumeration | |||
| +--ro segment-id? uint32 {segment-routing}? | ||||
| augment /rt:active-route/rt:output/rt:route: | augment /rt:active-route/rt:output/rt:route: | |||
| +--ro metric? uint32 | +--ro metric? uint32 | |||
| +--ro tag* uint64 | +--ro tag* uint64 | |||
| +--ro route-type? enumeration | +--ro route-type? enumeration | |||
| +--ro segment-id? uint32 {segment-routing}? | ||||
| augment /if:interfaces/if:interface: | augment /if:interfaces/if:interface: | |||
| +--rw clns-mtu? uint16 | +--rw clns-mtu? uint16 | |||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol: | augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol: | |||
| +--rw isis | +--rw isis | |||
| +--rw instance* [routing-instance] | +--rw enable? boolean {admin-control}? | |||
| +--rw routing-instance rt:routing-instance-ref | +--rw level-type? level | |||
| +--rw level-type? level | +--rw system-id? system-id | |||
| +--rw system-id? system-id | +--rw maximum-area-addresses? uint8 {maximum-area-addresses}? | |||
| +--rw maximum-area-addresses? uint8 {maximum-area-addresses}? | +--rw area-address* area-address | |||
| +--rw area-address* area-address | +--rw mpls | |||
| +--rw mpls | | +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}? | |||
| | ... | | +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | |||
| +--rw reference-bandwidth? uint32 {reference-bandwidth}? | | +--rw igp-ldp-sync {igp-ldp-sync}? | |||
| +--rw lsp-mtu? uint16 | +--rw reference-bandwidth? uint32 {reference-bandwidth}? | |||
| +--rw lsp-lifetime? uint16 | +--rw lsp-mtu? uint16 | |||
| +--rw lsp-refresh? uint16 {lsp-refresh}? | +--rw lsp-lifetime? uint16 | |||
| +--rw graceful-restart {graceful-restart}? | +--rw lsp-refresh? uint16 {lsp-refresh}? | |||
| | ... | +--rw graceful-restart {graceful-restart}? | |||
| +--rw node-tag {node-tag}? | | +--rw enable? boolean | |||
| | ... | +--rw node-tag {node-tag}? | |||
| +--rw fast-reroute {fast-reroute}? | | +--rw node-tag* [tag] | |||
| | ... | | ... | |||
| +--rw segment-routing {segment-routing}? | +--rw authentication* [level] | |||
| | ... | | +--rw (authentication-type)? | |||
| +--rw authentication* [level] | | | ... | |||
| | ... | | +--rw level level | |||
| +--rw metric-type* [level] | +--rw metric-type* [level] | |||
| | ... | | +--rw value? enumeration | |||
| +--rw preference* [level] | | +--rw level level | |||
| | ... | +--rw preference* [level] | |||
| +--rw default-metric* [level] | | +--rw (granularity)? | |||
| | ... | | | ... | |||
| +--rw af* [af] {nlpid-control}? | | +--rw level level | |||
| | ... | +--rw default-metric* [level] | |||
| +--rw topologies* [name] {multi-topology}? | | +--rw value? wide-metric | |||
| | ... | | +--rw level level | |||
| +--rw overload* [level] | +--rw af* [af] {nlpid-control}? | |||
| | ... | | +--rw af identityref | |||
| +--rw overload-max-metric* [level] {overload-max-metric}? | | +--rw enable? boolean | |||
| | ... | +--rw overload* [level] | |||
| +--rw interfaces | | +--rw status? boolean | |||
| | +--rw timeout? uint16 | ||||
| | +--rw level level | ||||
| +--rw overload-max-metric* [level] {overload-max-metric}? | ||||
| | +--rw status? boolean | ||||
| | +--rw timeout? uint16 | ||||
| | +--rw level level | ||||
| +--rw fast-reroute {fast-reroute}? | ||||
| | +--rw lfa {lfa}? | ||||
| +--rw topologies* [name] {multi-topology}? | ||||
| | +--rw enable? boolean | ||||
| | +--rw name rt:rib-ref | ||||
| | +--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: | augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol: | |||
| +--ro isis | +--ro isis | |||
| +--ro instance* [routing-instance] | +--ro enable? boolean {admin-control}? | |||
| +--ro routing-instance rt:routing-instance-ref | +--ro level-type? level | |||
| +--ro fast-reroute {fast-reroute}? | +--ro system-id? system-id | |||
| | ... | +--ro maximum-area-addresses? uint8 {maximum-area-addresses}? | |||
| +--ro topologies* [name] | +--ro area-address* area-address | |||
| | ... | +--ro mpls | |||
| +--ro system-counters | | +--ro ipv4-router-id? inet:ipv4-address {ipv4-router-id}? | |||
| | ... | | +--ro ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | |||
| +--ro interfaces | | +--ro igp-ldp-sync {igp-ldp-sync}? | |||
| | ... | +--ro reference-bandwidth? uint32 {reference-bandwidth}? | |||
| +--ro spf-log | +--ro lsp-mtu? uint16 | |||
| | ... | +--ro lsp-lifetime? uint16 | |||
| +--ro lsp-refresh? uint16 {lsp-refresh}? | ||||
| +--ro lsp-log | +--ro graceful-restart {graceful-restart}? | |||
| | ... | | +--ro enable? boolean | |||
| +--ro database | +--ro node-tag {node-tag}? | |||
| | ... | | +--ro node-tag* [tag] | |||
| +--ro hostnames | | ... | |||
| +--ro authentication* [level] | ||||
| | +--ro (authentication-type)? | ||||
| | | ... | ||||
| | +--ro level level | ||||
| +--ro metric-type* [level] | ||||
| | +--ro value? enumeration | ||||
| | +--ro level level | ||||
| +--ro preference* [level] | ||||
| | +--ro (granularity)? | ||||
| | | ... | ||||
| | +--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 overload* [level] | ||||
| | +--ro status? boolean | ||||
| | +--ro timeout? uint16 | ||||
| | +--ro level level | ||||
| +--ro overload-max-metric* [level] {overload-max-metric}? | ||||
| | +--ro status? boolean | ||||
| | +--ro timeout? uint16 | ||||
| | +--ro level level | ||||
| +--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 rt:rib-ref | ||||
| | +--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. ISIS Configuration | 2.1. ISIS Configuration | |||
| The ISIS configuration currently supports both VRF-centric and | The ISIS configuration supports a VRF-centric configuration approach. | |||
| protocol-centric configuration. This may be changed in future. | The isis configuration is applied directly within the appropriate | |||
| routing-instance where ISIS is activated. | ||||
| In a protocol-centric configuration, the isis configuration is | ||||
| applied within the standard-routing-instance and the instance list | ||||
| helps to reference the routing-instance where ISIS is activated. | ||||
| In a VRF-centric configuration, the isis configuration is applied | ||||
| directly within the appropriate routing-instance where ISIS is | ||||
| activated. In this case, the instance list will contain a single | ||||
| element. | ||||
| The ISIS configuration container is divided in: | The ISIS 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. | |||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol: | ||||
| +--rw isis | ||||
| +--rw instance* [routing-instance] | ||||
| +--rw routing-instance rt:routing-instance-ref | ||||
| +--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 enabled? boolean | ||||
| +--rw node-tag {node-tag}? | ||||
| | +--rw node-tag* [tag] | ||||
| | +--rw tag uint32 | ||||
| +--rw fast-reroute {fast-reroute}? | ||||
| | +--rw lfa {lfa}? | ||||
| +--rw segment-routing {segment-routing}? | ||||
| | +--rw enabled? boolean | ||||
| | +--rw bindings | ||||
| | +--rw advertise? boolean | ||||
| | +--rw receive? boolean | ||||
| +--rw authentication* [level] | ||||
| | +--rw (authentication-type)? | ||||
| | | +--:(key-chain) {key-chain}? | ||||
| | | | +--rw key-chain? key-chain:key-chain-ref | ||||
| | | +--:(password) | ||||
| | | +--rw key? string | ||||
| | | +--rw (algorithm)? | ||||
| | | +--:(hmac-sha1-12) | ||||
| | | | +--rw hmac-sha1-12? empty | ||||
| | | +--:(hmac-sha1-20) | ||||
| | | | +--rw hmac-sha1-20? empty | ||||
| | | +--:(md5) | ||||
| | | | +--rw md5? empty | ||||
| | | +--:(sha-1) | ||||
| | | | +--rw sha-1? empty | ||||
| | | +--:(hmac-sha-1) | ||||
| | | | +--rw hmac-sha-1? empty | ||||
| | | +--:(hmac-sha-256) | ||||
| | | | +--rw hmac-sha-256? empty | ||||
| | | +--:(hmac-sha-384) | ||||
| | | | +--rw hmac-sha-384? empty | ||||
| | | +--:(hmac-sha-512) | ||||
| | | +--rw hmac-sha-512? empty | ||||
| | +--rw level level | ||||
| +--rw metric-type* [level] | ||||
| | +--rw value? enumeration | ||||
| | +--rw level level | ||||
| +--rw preference* [level] | ||||
| | +--rw (granularity)? | ||||
| | | +--:(detail) | ||||
| | | | +--rw internal? uint8 | ||||
| | | | +--rw external? uint8 | ||||
| | | +--:(coarse) | ||||
| | | +--rw default? uint8 | ||||
| | +--rw level level | ||||
| +--rw default-metric* [level] | ||||
| | +--rw value? wide-metric | ||||
| | +--rw level level | ||||
| +--rw af* [af] {nlpid-control}? | ||||
| | +--rw af identityref | ||||
| | +--rw enabled? boolean | ||||
| +--rw topologies* [name] {multi-topology}? | ||||
| | +--rw enabled? boolean | ||||
| | +--rw name rt:rib-ref | ||||
| | +--rw fast-reroute {fast-reroute}? | ||||
| | | +--rw lfa {lfa}? | ||||
| | +--rw segment-routing {segment-routing}? | ||||
| | | +--rw enabled? boolean | ||||
| | | +--rw bindings | ||||
| | | +--rw advertise? boolean | ||||
| | | +--rw receive? boolean | ||||
| | +--rw default-metric* [level] | ||||
| | | +--rw value? wide-metric | ||||
| | | +--rw level level | ||||
| | +--rw node-tag {node-tag}? | ||||
| | +--rw node-tag* [tag] | ||||
| | +--rw tag uint32 | ||||
| +--rw overload* [level] | ||||
| | +--rw status? boolean | ||||
| | +--rw timeout? uint16 | ||||
| | +--rw level level | ||||
| +--rw overload-max-metric* [level] {overload-max-metric}? | ||||
| | +--rw status? boolean | ||||
| | +--rw timeout? uint16 | ||||
| | +--rw level level | ||||
| +--rw interfaces | ||||
| +--rw interface* [name] | ||||
| ... | ||||
| 2.2. Multitopology Parameters | 2.2. Multitopology Parameters | |||
| The "topologies" list is used to enable support of MT extensions for | The "topologies" list is used to enable support of MT extensions for | |||
| 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. | |||
| skipping to change at page 8, line 13 ¶ | skipping to change at page 10, line 38 ¶ | |||
| each level. The "level-all" permits to apply a value to both levels. | each level. The "level-all" permits to apply a value to both levels. | |||
| +--rw priority* [level] | +--rw priority* [level] | |||
| | +--rw value? uint8 | | +--rw value? uint8 | |||
| | +--rw level level | | +--rw level level | |||
| Example : | Example : | |||
| <priority> | <priority> | |||
| <value>100</value> | <value>100</value> | |||
| <level>level-1</level> | <level>level-1</level> | |||
| </priority> | </priority> | |||
| <priority> | <priority> | |||
| <value>200</value> | <value>200</value> | |||
| <level>level-2</level> | <level>level-2</level> | |||
| </priority> | </priority> | |||
| 2.4. Per-Interface Parameters | 2.4. Per-Interface Parameters | |||
| The per-interface section of the ISIS instance describes the | The per-interface section of the ISIS 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 ISIS global parameter | interface-specific parameter always override an ISIS global parameter | |||
| . | . | |||
| Some parameters like BFD and hello-padding are defined as containers | Some parameters like BFD and hello-padding are defined as containers | |||
| to permit easy extension by vendor specific modules. | to permit easy extension by vendor specific modules. | |||
| +--rw interfaces | TODO : interfaces.tree | |||
| +--rw interface* [name] | ||||
| +--rw name if:interface-ref | ||||
| +--rw level-type? level | ||||
| +--rw lsp-pacing-interval? uint16 | ||||
| +--rw lsp-retransmit-interval? uint16 | ||||
| +--rw passive? boolean | ||||
| +--rw csnp-interval? uint16 | ||||
| +--rw hello-padding | ||||
| | +--rw enabled? boolean | ||||
| +--rw mesh-group-enabled? mesh-group-state | ||||
| +--rw mesh-group? uint8 | ||||
| +--rw interface-type? interface-type | ||||
| +--rw enabled? boolean | ||||
| +--rw tag* uint32 {prefix-tag}? | ||||
| +--rw tag64* uint64 {prefix-tag64}? | ||||
| +--rw hello-authentication* [level] | ||||
| | +--rw (authentication-type)? | ||||
| | | +--:(key-chain) {key-chain}? | ||||
| | | | +--rw key-chain? key-chain:key-chain-ref | ||||
| | | +--:(password) | ||||
| | | +--rw key? string | ||||
| | | +--rw (algorithm)? | ||||
| | | ... | ||||
| | +--rw level level | ||||
| +--rw hello-interval* [level] | ||||
| | +--rw value? uint16 | ||||
| | +--rw level level | ||||
| +--rw hello-multiplier* [level] | ||||
| | +--rw value? uint16 | ||||
| | +--rw level level | ||||
| +--rw priority* [level] | ||||
| | +--rw value? uint8 | ||||
| | +--rw level level | ||||
| +--rw metric* [level] | ||||
| | +--rw value? wide-metric | ||||
| | +--rw level level | ||||
| +--rw af* [af] | ||||
| | +--rw af identityref | ||||
| | +--rw segment-routing {segment-routing}? | ||||
| | | +--rw prefix-sid* [value] | ||||
| | | +--rw value-type? enumeration | ||||
| | | +--rw value uint32 | ||||
| | | +--rw node-flag? boolean | ||||
| | | +--rw last-hop-behavior? enumeration | ||||
| | +--rw bfd {bfd}? | ||||
| | +--rw enabled? boolean | ||||
| +--rw topologies* [name] | ||||
| | +--rw name rt:rib-ref | ||||
| | +--rw metric* [level] | ||||
| | | +--rw value? wide-metric | ||||
| | | +--rw level level | ||||
| | +--rw fast-reroute {fast-reroute}? | ||||
| | | +--rw lfa* [level] {lfa}? | ||||
| | | +--rw candidate-disabled? boolean | ||||
| | | +--rw enabled? boolean | ||||
| | | +--rw remote-lfa {remote-lfa}? | ||||
| | | | ... | ||||
| | | +--rw level level | ||||
| | +--rw segment-routing {segment-routing}? | ||||
| | +--rw authorize-bundle | ||||
| | | +--rw enabled? boolean | ||||
| | | +--rw weight? uint8 | ||||
| | +--rw advertise-protection? enumeration | ||||
| +--rw fast-reroute {fast-reroute}? | ||||
| | +--rw lfa* [level] {lfa}? | ||||
| | +--rw candidate-disabled? boolean | ||||
| | +--rw enabled? boolean | ||||
| | +--rw remote-lfa {remote-lfa}? | ||||
| | | +--rw enabled? boolean | ||||
| | +--rw level level | ||||
| +--rw segment-routing {segment-routing}? | ||||
| | +--rw authorize-bundle | ||||
| | | +--rw enabled? boolean | ||||
| | | +--rw weight? uint8 | ||||
| | +--rw advertise-protection? enumeration | ||||
| +--rw mpls | ||||
| +--rw igp-ldp-sync {igp-ldp-sync}? | ||||
| +--rw enabled? boolean | ||||
| 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. | |||
| The clns-mtu can be defined under the interface. | The clns-mtu can be defined under the interface. | |||
| skipping to change at page 10, line 45 ¶ | skipping to change at page 11, line 41 ¶ | |||
| remote LFA at interface only. The global "lfa" container is present | remote LFA at interface only. The global "lfa" container is present | |||
| but kept empty to permit augmentation with vendor specific properties | but kept empty to permit augmentation with vendor specific properties | |||
| like policies. | like policies. | |||
| Remote LFA is considered as a child of LFA. Remote LFA cannot be | Remote LFA is considered as a child of LFA. Remote LFA cannot be | |||
| enabled if LFA is not enabled. | enabled if LFA is not enabled. | |||
| The "candidate-disabled" permit to mark an interface to not be used | The "candidate-disabled" permit to mark an interface to not be used | |||
| as a backup. | as a backup. | |||
| 2.7. Segment Routing | 2.7. Operational State | |||
| This item is still under discussion and some part of the proposed | ||||
| configuration may fit in a segment-routing specific model. | ||||
| 2.8. Operational State | ||||
| "isis" container provides operational states for ISIS. This | "isis" container provides operational states for ISIS. This | |||
| container is divided in multiple components: | container is divided in multiple components: | |||
| o system-counters : provides statistical informations about the | o system-counters : provides statistical informations about the | |||
| global system. | global system. | |||
| o interface : provides configuration state information for each | o interface : provides configuration state information for each | |||
| interface. | interface. | |||
| skipping to change at page 11, line 31 ¶ | skipping to change at page 12, line 20 ¶ | |||
| o lsp-log: provides information about LSP events on the node | o lsp-log: provides information about LSP events on the node | |||
| (reception of an LSP or modification of local LSP). | (reception of an LSP or modification of local LSP). | |||
| o database: provides details on current LSDB. | o database: provides details on current LSDB. | |||
| o hostnames: provides information about system-id to hostname | o hostnames: provides information about system-id to hostname | |||
| mappings. | mappings. | |||
| o fast-reroute: provides information about IP FRR. | o fast-reroute: provides information about IP FRR. | |||
| o segment-routing: provides information about segment-routing. | ||||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol: | ||||
| +--ro isis | ||||
| +--ro instance* [routing-instance] | ||||
| +--ro routing-instance rt:routing-instance-ref | ||||
| +--ro fast-reroute {fast-reroute}? | ||||
| | +--ro protected-routes | ||||
| | | +--ro af-stats* [af prefix alternate] | ||||
| | | +--ro af identityref | ||||
| | | +--ro prefix string | ||||
| | | +--ro alternate string | ||||
| | | +--ro alternate-type? enumeration | ||||
| | | +--ro best? boolean | ||||
| | | +--ro non-best-reason? string | ||||
| | | +--ro protection-available? bits | ||||
| | | +--ro alternate-metric1? uint32 | ||||
| | | +--ro alternate-metric2? uint32 | ||||
| | | +--ro alternate-metric3? uint32 | ||||
| | +--ro nonprotected-routes | ||||
| | | +--ro af-stats* [af prefix] | ||||
| | | +--ro af identityref | ||||
| | | +--ro prefix string | ||||
| | +--ro protection-statistics* [frr-protection-method] | ||||
| | +--ro frr-protection-method string | ||||
| | +--ro af-stats* [af] | ||||
| | +--ro af identityref | ||||
| | +--ro total-routes? uint32 | ||||
| | +--ro unprotected-routes? uint32 | ||||
| | +--ro protected-routes? uint32 | ||||
| | +--ro linkprotected-routes? uint32 | ||||
| | +--ro nodeprotected-routes? uint32 | ||||
| +--ro topologies* [name] | ||||
| | +--ro name rt:rib-ref | ||||
| | +--ro fast-route {fast-reroute}? | ||||
| | +--ro protected-routes | ||||
| | | +--ro af-stats* [af prefix alternate] | ||||
| | | +--ro af identityref | ||||
| | | +--ro prefix string | ||||
| | | +--ro alternate string | ||||
| | | +--ro alternate-type? enumeration | ||||
| | | +--ro best? boolean | ||||
| | | +--ro non-best-reason? string | ||||
| | | +--ro protection-available? bits | ||||
| | | +--ro alternate-metric1? uint32 | ||||
| | | +--ro alternate-metric2? uint32 | ||||
| | | +--ro alternate-metric3? uint32 | ||||
| | +--ro nonprotected-routes | ||||
| | | +--ro af-stats* [af prefix] | ||||
| | | +--ro af identityref | ||||
| | | +--ro prefix string | ||||
| | +--ro protection-statistics* [frr-protection-method] | ||||
| | +--ro frr-protection-method string | ||||
| | +--ro af-stats* [af] | ||||
| | +--ro af identityref | ||||
| | +--ro total-routes? uint32 | ||||
| | +--ro unprotected-routes? uint32 | ||||
| | +--ro protected-routes? uint32 | ||||
| | +--ro linkprotected-routes? uint32 | ||||
| | +--ro nodeprotected-routes? uint32 | ||||
| +--ro system-counters | ||||
| | +--ro level* [level] | ||||
| | +--ro level level-number | ||||
| | +--ro corrupted-lsps? uint32 | ||||
| | +--ro authentication-type-fails? uint32 | ||||
| | +--ro authentication-fails? uint32 | ||||
| | +--ro database-overload? uint32 | ||||
| | +--ro own-lsp-purge? uint32 | ||||
| | +--ro manual-address-drop-from-area? uint32 | ||||
| | +--ro max-sequence? uint32 | ||||
| | +--ro sequence-number-skipped? uint32 | ||||
| | +--ro id-len-mismatch? uint32 | ||||
| | +--ro partition-changes? uint32 | ||||
| | +--ro lsp-errors? uint32 | ||||
| | +--ro spf-runs? uint32 | ||||
| +--ro interfaces | ||||
| | +--ro interfaces* [interface] | ||||
| | +--ro interface string | ||||
| | +--ro status | ||||
| | | +--ro circuit-id? circuit-id | ||||
| | | +--ro admin-state? admin-state | ||||
| | | +--ro interface-type? interface-type | ||||
| | | +--ro passive? empty | ||||
| | | +--ro three-way-handshake? boolean | ||||
| | | +--ro mesh-group-enabled? mesh-group-state | ||||
| | | +--ro mesh-group? uint8 | ||||
| | | +--ro level* [level] | ||||
| | | +--ro level level-number | ||||
| | | +--ro priority? uint8 | ||||
| | | +--ro hello-multiplier? uint16 | ||||
| | | +--ro hello-interval? uint16 | ||||
| | | +--ro dr-hello-interval? uint32 | ||||
| | | +--ro metric? wide-metric | ||||
| | +--ro fast-reroute {fast-reroute}? | ||||
| | | +--ro lfa* [level] {lfa}? | ||||
| | | +--ro candidate-disabled? boolean | ||||
| | | +--ro enabled? boolean | ||||
| | | +--ro remote-lfa {remote-lfa}? | ||||
| | | | +--ro enabled? boolean | ||||
| | | +--ro level level-number | ||||
| | +--ro adjacencies | ||||
| | | +--ro adjacency* | ||||
| | | +--ro neighbor-systype? level | ||||
| | | +--ro neighbor-sysid? system-id | ||||
| | | +--ro neighbor-extended-circuit-id? extended-circuit-id | ||||
| | | +--ro neighbor-snpa? snpa | ||||
| | | +--ro usage? level | ||||
| | | +--ro hold-timer? uint16 | ||||
| | | +--ro neighbor-priority? uint8 | ||||
| | | +--ro lastuptime? yang:timestamp | ||||
| | | +--ro state? enumeration | ||||
| | | +--ro adjacency-sid* [value] {segment-routing}? | ||||
| | | +--ro af? identityref | ||||
| | | +--ro value uint32 | ||||
| | | +--ro weight? uint8 | ||||
| | | +--ro protection-requested? boolean | ||||
| | +--ro topologies* [name] | ||||
| | | +--ro name rt:rib-ref | ||||
| | | +--ro fast-reroute {fast-reroute}? | ||||
| | | | +--ro lfa* [level] {lfa}? | ||||
| | | | +--ro candidate-disabled? boolean | ||||
| | | | +--ro enabled? boolean | ||||
| | | | +--ro remote-lfa {remote-lfa}? | ||||
| | | | | ... | ||||
| | | | +--ro level level-number | ||||
| | | +--ro adjacencies | ||||
| | | | +--ro adjacency* | ||||
| | | | +--ro neighbor-systype? level | ||||
| | | | +--ro neighbor-sysid? system-id | ||||
| | | | +--ro neighbor-extended-circuit-id? extended-circuit-id | ||||
| | | | +--ro neighbor-snpa? snpa | ||||
| | | | +--ro usage? level | ||||
| | | | +--ro hold-timer? uint16 | ||||
| | | | +--ro neighbor-priority? uint8 | ||||
| | | | +--ro lastuptime? yang:timestamp | ||||
| | | | +--ro state? enumeration | ||||
| | | | +--ro adjacency-sid* [value] {segment-routing}? | ||||
| | | | ... | ||||
| | | +--ro level* [level] | ||||
| | | +--ro level level-number | ||||
| | | +--ro metric? wide-metric | ||||
| | +--ro event-counters | ||||
| | | +--ro adjacency-changes? uint32 | ||||
| | | +--ro adjacency-number? uint32 | ||||
| | | +--ro init-fails? uint32 | ||||
| | | +--ro adjacency-rejects? uint32 | ||||
| | | +--ro id-len-mismatch? uint32 | ||||
| | | +--ro max-area-addresses-mismatch? uint32 | ||||
| | | +--ro authentication-type-fails? uint32 | ||||
| | | +--ro authentication-fails? uint32 | ||||
| | | +--ro lan-dis-changes? uint32 | ||||
| | +--ro packet-counters | ||||
| | +--ro level* [level] | ||||
| | +--ro level level-number | ||||
| | +--ro iih | ||||
| | | +--ro in? uint32 | ||||
| | | +--ro out? uint32 | ||||
| | +--ro ish | ||||
| | | +--ro in? uint32 | ||||
| | | +--ro out? uint32 | ||||
| | +--ro esh | ||||
| | | +--ro in? uint32 | ||||
| | | +--ro out? uint32 | ||||
| | +--ro lsp | ||||
| | | +--ro in? uint32 | ||||
| | | +--ro out? uint32 | ||||
| | +--ro psnp | ||||
| | | +--ro in? uint32 | ||||
| | | +--ro out? uint32 | ||||
| | +--ro csnp | ||||
| | | +--ro in? uint32 | ||||
| | | +--ro out? uint32 | ||||
| | +--ro unknown | ||||
| | +--ro in? uint32 | ||||
| | +--ro out? uint32 | ||||
| +--ro spf-log | ||||
| | +--ro event* [id] | ||||
| | +--ro id uint32 | ||||
| | +--ro spf-type? enumeration | ||||
| | +--ro level? level-number | ||||
| | +--ro spf-delay? uint32 | ||||
| | +--ro schedule-timestamp? yang:timestamp | ||||
| | +--ro start-timestamp? yang:timestamp | ||||
| | +--ro end-timestamp? yang:timestamp | ||||
| | +--ro trigger-lsp* [lsp] | ||||
| | +--ro lsp lsp-id | ||||
| | +--ro sequence? uint32 | ||||
| +--ro lsp-log | ||||
| | +--ro event* [id] | ||||
| | +--ro id uint32 | ||||
| | +--ro level? level-number | ||||
| | +--ro lsp | ||||
| | | +--ro lsp? lsp-id | ||||
| | | +--ro sequence? uint32 | ||||
| | +--ro received-timestamp? yang:timestamp | ||||
| | +--ro change? bits | ||||
| +--ro database | ||||
| | +--ro level-db* [level] | ||||
| | +--ro level level-number | ||||
| | +--ro lsp* [lsp-id] | ||||
| | +--ro lsp-id lsp-id | ||||
| | +--ro checksum? uint16 | ||||
| | +--ro remaining-lifetime? uint16 | ||||
| | +--ro sequence? uint32 | ||||
| | +--ro attributes? bits | ||||
| | +--ro is-neighbor | ||||
| | | +--ro neighbor* [neighbor-id] | ||||
| | | +--ro neighbor-id system-id | ||||
| | | +--ro i-e? boolean | ||||
| | | +--ro default-metric? std-metric | ||||
| | | +--ro delay-metric | ||||
| | | | ... | ||||
| | | +--ro expense-metric | ||||
| | | | ... | ||||
| | | +--ro error-metric | ||||
| | | ... | ||||
| | +--ro authentication | ||||
| | | +--ro authentication-type? string | ||||
| | | +--ro authentication-key? string | ||||
| | +--ro extended-is-neighbor | ||||
| | | +--ro neighbor* [neighbor-id] | ||||
| | | +--ro neighbor-id system-id | ||||
| | | +--ro metric? wide-metric | ||||
| | | +--ro adjacency-segment-id* [value] | ||||
| | | ... | ||||
| | +--ro ipv4-internal-reachability | ||||
| | | +--ro prefixes* [ip-prefix] | ||||
| | | +--ro up-down? boolean | ||||
| | | +--ro i-e? boolean | ||||
| | | +--ro ip-prefix inet:ipv4-address | ||||
| | | +--ro prefix-len? uint8 | ||||
| | | +--ro default-metric? std-metric | ||||
| | | +--ro delay-metric | ||||
| | | | ... | ||||
| | | +--ro expense-metric | ||||
| | | | ... | ||||
| | | +--ro error-metric | ||||
| | | ... | ||||
| | +--ro protocol-supported* uint8 | ||||
| | +--ro ipv4-external-reachability | ||||
| | | +--ro prefixes* [ip-prefix] | ||||
| | | +--ro up-down? boolean | ||||
| | | +--ro i-e? boolean | ||||
| | | +--ro ip-prefix inet:ipv4-address | ||||
| | | +--ro prefix-len? uint8 | ||||
| | | +--ro default-metric? std-metric | ||||
| | | +--ro delay-metric | ||||
| | | | ... | ||||
| | | +--ro expense-metric | ||||
| | | | ... | ||||
| | | +--ro error-metric | ||||
| | | ... | ||||
| | +--ro ipv4-addresses* inet:ipv4-address | ||||
| | +--ro ipv4-te-routerid? inet:ipv4-address | ||||
| | +--ro extended-ipv4-reachability | ||||
| | | +--ro prefixes* [ip-prefix] | ||||
| | | +--ro up-down? boolean | ||||
| | | +--ro ip-prefix inet:ipv4-address | ||||
| | | +--ro prefix-len? uint8 | ||||
| | | +--ro metric? wide-metric | ||||
| | | +--ro tag* uint32 | ||||
| | | +--ro tag64* uint64 | ||||
| | | +--ro prefix-segment-id* [value] | ||||
| | | ... | ||||
| | +--ro dynamic-hostname? string | ||||
| | +--ro ipv6-te-routerid? inet:ipv6-address | ||||
| | +--ro mt-is-neighbor | ||||
| | | +--ro neighbor* [neighbor-id] | ||||
| | | +--ro MT-ID? uint16 | ||||
| | | +--ro neighbor-id system-id | ||||
| | | +--ro metric? wide-metric | ||||
| | | +--ro adjacency-segment-id* [value] | ||||
| | | ... | ||||
| | +--ro mt-entries | ||||
| | | +--ro topology* [MT-ID] | ||||
| | | +--ro MT-ID uint16 | ||||
| | | +--ro attributes? bits | ||||
| | +--ro ipv6-addresses* inet:ipv6-address | ||||
| | +--ro mt-extended-ipv4-reachability | ||||
| | | +--ro prefixes* [ip-prefix] | ||||
| | | +--ro MT-ID? uint16 | ||||
| | | +--ro up-down? boolean | ||||
| | | +--ro ip-prefix inet:ipv4-address | ||||
| | | +--ro prefix-len? uint8 | ||||
| | | +--ro metric? wide-metric | ||||
| | | +--ro tag* uint32 | ||||
| | | +--ro tag64* uint64 | ||||
| | | +--ro prefix-segment-id* [value] | ||||
| | | ... | ||||
| | +--ro mt-ipv6-reachability | ||||
| | | +--ro prefixes* [ip-prefix] | ||||
| | | +--ro MT-ID? uint16 | ||||
| | | +--ro up-down? boolean | ||||
| | | +--ro ip-prefix inet:ipv6-address | ||||
| | | +--ro prefix-len? uint8 | ||||
| | | +--ro metric? wide-metric | ||||
| | | +--ro tag* uint32 | ||||
| | | +--ro tag64* uint64 | ||||
| | | +--ro prefix-segment-id* [value] | ||||
| | | ... | ||||
| | +--ro ipv6-reachability | ||||
| | | +--ro prefixes* [ip-prefix] | ||||
| | | +--ro up-down? boolean | ||||
| | | +--ro ip-prefix inet:ipv6-address | ||||
| | | +--ro prefix-len? uint8 | ||||
| | | +--ro metric? wide-metric | ||||
| | | +--ro tag* uint32 | ||||
| | | +--ro tag64* uint64 | ||||
| | | +--ro prefix-segment-id* [value] | ||||
| | | ... | ||||
| | +--ro segment-routing-bindings* [fec range] {segment-routing}? | ||||
| | | +--ro fec string | ||||
| | | +--ro range uint16 | ||||
| | | +--ro flags? bits | ||||
| | | +--ro weight? uint8 | ||||
| | | +--ro binding* | ||||
| | | +--ro prefix-sid | ||||
| | | | ... | ||||
| | | +--ro ero-metric? uint32 | ||||
| | | +--ro ero | ||||
| | | | ... | ||||
| | | +--ro backup-ero | ||||
| | | | ... | ||||
| | | +--ro unnumbered-interface-id-ero | ||||
| | | | ... | ||||
| | | +--ro backup-unnumbered-interface-id-ero | ||||
| | | ... | ||||
| | +--ro router-capabilities* | ||||
| | +--ro flags? bits | ||||
| | +--ro node-tag {node-tag}? | ||||
| | | +--ro node-tag* | ||||
| | | ... | ||||
| | +--ro segment-routing* | ||||
| | | +--ro flags? bits | ||||
| | | +--ro range? uint32 | ||||
| | | +--ro starting-value? uint32 | ||||
| | +--ro segment-routing-algorithm* uint8 | ||||
| | +--ro binary? binary | ||||
| +--ro hostnames | ||||
| +--ro hostname* [system-id] | ||||
| +--ro system-id system-id | ||||
| +--ro hostname? string | ||||
| 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 ISIS | o clear-isis-database: reset the content of a particular ISIS | |||
| 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 ISIS | o clear-isis-adjacency: restart a particular set of ISIS | |||
| adjacencies. | adjacencies. | |||
| skipping to change at page 23, line 19 ¶ | skipping to change at page 16, line 45 ¶ | |||
| | +--ro sequence? uint32 | | +--ro sequence? uint32 | |||
| | +--ro received-timestamp? yang:timestamp | | +--ro received-timestamp? yang:timestamp | |||
| | +--ro neighbor-system-id? system-id | | +--ro neighbor-system-id? system-id | |||
| +---n lsp-generation | +---n lsp-generation | |||
| +--ro instance-name? string | +--ro instance-name? string | |||
| +--ro instance-level? level | +--ro instance-level? level | |||
| +--ro lsp-id? lsp-id | +--ro lsp-id? lsp-id | |||
| +--ro sequence? uint32 | +--ro sequence? uint32 | |||
| +--ro send-timestamp? yang:timestamp | +--ro send-timestamp? yang:timestamp | |||
| 5. Interaction with Other YANG Modules | 5. Segment Routing | |||
| The IS-IS SR YANG module is augmenting IS-IS module for both | ||||
| configuration and operational states. | ||||
| The IS-IS SR YANG module requires the base segment routing module | ||||
| ([I-D.litkowski-spring-sr-yang]) to be supported as there is a strong | ||||
| relationship between those modules. | ||||
| The figure below describe the overall structure of the isis-sr YANG | ||||
| module: | ||||
| module: ietf-isis-sr | ||||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis: | ||||
| +--rw segment-routing | ||||
| +--rw enabled? boolean | ||||
| +--rw bindings | ||||
| +--rw advertise | ||||
| | +--rw policies* string | ||||
| +--rw receive? boolean | ||||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:interfaces/isis:interface: | ||||
| +--rw segment-routing | ||||
| +--rw adjacency-sid | ||||
| | +--rw advertise-adj-group-sid* [group-id] | ||||
| | | +--rw group-id uint32 | ||||
| | +--rw advertise-protection? enumeration | ||||
| +--rw prefix-sid | ||||
| +--rw ipv4 | ||||
| | +--rw prefix-sid* [value] | ||||
| | +--rw value-type? enumeration | ||||
| | +--rw value uint32 | ||||
| | +--rw last-hop-behavior? enumeration | ||||
| +--rw ipv6 | ||||
| +--rw prefix-sid* [value] | ||||
| +--rw value-type? enumeration | ||||
| +--rw value uint32 | ||||
| +--rw last-hop-behavior? enumeration | ||||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis: | ||||
| +--ro segment-routing | ||||
| +--ro enabled? boolean | ||||
| +--ro bindings | ||||
| +--ro advertise | ||||
| | +--ro policies* string | ||||
| +--ro receive? boolean | ||||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:interfaces/isis:interface: | ||||
| +--ro segment-routing | ||||
| +--ro adjacency-sid | ||||
| | +--ro advertise-adj-group-sid* [group-id] | ||||
| | | +--ro group-id uint32 | ||||
| | +--ro advertise-protection? enumeration | ||||
| +--ro prefix-sid | ||||
| +--ro ipv4 | ||||
| | +--ro prefix-sid* [value] | ||||
| | +--ro value-type? enumeration | ||||
| | +--ro value uint32 | ||||
| | +--ro last-hop-behavior? enumeration | ||||
| +--ro ipv6 | ||||
| +--ro prefix-sid* [value] | ||||
| +--ro value-type? enumeration | ||||
| +--ro value uint32 | ||||
| +--ro last-hop-behavior? enumeration | ||||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:extended-is-neighbor/isis:neighbor: | ||||
| +--ro sid-list* [value] | ||||
| +--ro flags? bits | ||||
| +--ro weight? uint8 | ||||
| +--ro neighbor-id? isis:system-id | ||||
| +--ro value uint32 | ||||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-is-neighbor/isis:neighbor: | ||||
| +--ro sid-list* [value] | ||||
| +--ro flags? bits | ||||
| +--ro weight? uint8 | ||||
| +--ro neighbor-id? isis:system-id | ||||
| +--ro value uint32 | ||||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:extended-ipv4-reachability/isis:prefixes: | ||||
| +--ro sid-list* [value] | ||||
| +--ro flags? bits | ||||
| +--ro algorithm? uint8 | ||||
| +--ro value uint32 | ||||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-extended-ipv4-reachability/isis:prefixes: | ||||
| +--ro sid-list* [value] | ||||
| +--ro flags? bits | ||||
| +--ro algorithm? uint8 | ||||
| +--ro value uint32 | ||||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:ipv6-reachability/isis:prefixes: | ||||
| +--ro sid-list* [value] | ||||
| +--ro flags? bits | ||||
| +--ro algorithm? uint8 | ||||
| +--ro value uint32 | ||||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-ipv6-reachability/isis:prefixes: | ||||
| +--ro sid-list* [value] | ||||
| +--ro flags? bits | ||||
| +--ro algorithm? uint8 | ||||
| +--ro value uint32 | ||||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp: | ||||
| +--ro segment-routing-bindings* [fec range] | ||||
| +--ro fec string | ||||
| +--ro range uint16 | ||||
| +--ro flags? bits | ||||
| +--ro weight? uint8 | ||||
| +--ro binding* | ||||
| +--ro prefix-sid | ||||
| | +--ro sid-list* [value] | ||||
| | +--ro flags? bits | ||||
| | +--ro algorithm? uint8 | ||||
| | +--ro value uint32 | ||||
| +--ro ero-metric? uint32 | ||||
| +--ro ero | ||||
| | +--ro address-family? identityref | ||||
| | +--ro loose? boolean | ||||
| | +--ro address? string | ||||
| +--ro backup-ero | ||||
| | +--ro address-family? identityref | ||||
| | +--ro loose? boolean | ||||
| | +--ro address? string | ||||
| +--ro unnumbered-interface-id-ero | ||||
| | +--ro router-id? string | ||||
| | +--ro interface-id? uint32 | ||||
| +--ro backup-unnumbered-interface-id-ero | ||||
| +--ro router-id? string | ||||
| +--ro interface-id? uint32 | ||||
| 5.1. Segment Routing activation | ||||
| Activation of segment-routing IS-IS is done by setting the "enabled" | ||||
| leaf to true. This triggers advertisement of segment-routing | ||||
| extensions based on the configuration parameters that have been setup | ||||
| using the base segment routing module. | ||||
| 5.2. Advertising mapping server policy | ||||
| The base segment routing module defines mapping server policies. By | ||||
| default, IS-IS will not advertise nor receive any mapping server | ||||
| entry. The IS-IS segment-routing module permits to advertise one or | ||||
| multiple mapping server policies through the "bindings/advertise/ | ||||
| policies" leaf-list. The "bindings/receive" leaf permits to enable | ||||
| the reception of mapping server entries. | ||||
| 6. 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-instance/rt:routing-protocols/routing-protocol" container | |||
| of the ietf-routing module by defining ISIS specific parameters. | of the ietf-routing 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-instance/rt:routing-protocols/routing-protocol" | |||
| container of the ietf-routing module by defining ISIS specific | container of the ietf-routing module by defining ISIS specific | |||
| operational states. | operational states. | |||
| Some ISIS specific routes attributes are added to route objects of | Some ISIS 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:active- | state/rt:ribs/rt:rib/rt:routes/rt:route" and "/rt:active- | |||
| route/rt:output/rt:route". | route/rt:output/rt:route". | |||
| 6. YANG Module | 7. ISIS YANG Module | |||
| <CODE BEGINS> file "ietf-isis@2015-03-04.yang" | <CODE BEGINS> file "ietf-isis@2015-06-23.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"; | |||
| } | } | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| } | } | |||
| 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 { | ||||
| prefix "key-chain"; | ||||
| } | ||||
| 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 21, line 4 ¶ | |||
| "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 | |||
| <mailto:myeung@cisco.com> | <mailto:myeung@cisco.com> | |||
| Acee Lindem | Acee Lindem | |||
| <mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
| Jeffrey Zhang | Jeffrey Zhang | |||
| <mailto:zzhang@juniper.net> | <mailto:zzhang@juniper.net> | |||
| Ladislav Lhotka | Ladislav Lhotka | |||
| <mailto:llhotka@nic.cz> | <mailto:llhotka@nic.cz> | |||
| Yi Yang | Yi Yang | |||
| <mailto:yiya@cisco.com> | <mailto:yiya@cisco.com> | |||
| Dean Bogdanovic | Dean Bogdanovic | |||
| <mailto:deanb@juniper.net> | <mailto:deanb@juniper.net> | |||
| Kiran Agrahara Sreenivasa | Kiran Agrahara Sreenivasa | |||
| <mailto:kkoushik@brocade.com> | <mailto:kkoushik@brocade.com> | |||
| Yingzhen Qu | Yingzhen Qu | |||
| <mailto:yiqu@cisco.com> | <mailto:yiqu@cisco.com> | |||
| Jeff Tantsura | ||||
| <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 2015-06-22 { | ||||
| description | ||||
| " * Segment routing is part os a separate module."; | ||||
| reference "draft-ietf-isis-yang-isis-03"; | ||||
| } | ||||
| revision 2015-03-03 { | ||||
| description | ||||
| " * Reviewed config and op state groupings. | ||||
| * Add default value to lfa candidate-disabled | ||||
| * Add enable leaf to isis container to reflect admin state | ||||
| * Move to VRF centric only | ||||
| "; | ||||
| reference ""; | ||||
| } | ||||
| revision 2015-03-03 { | revision 2015-03-03 { | |||
| description | description | |||
| " | " | |||
| * Defining hierarchy for operational states | * Defining hierarchy for operational states | |||
| * Adding CLNS MTU | * Adding CLNS MTU | |||
| * Adding Keychain | ||||
| "; | "; | |||
| reference "draft-ietf-isis-yang-isis-02"; | reference "draft-ietf-isis-yang-isis-02"; | |||
| } | } | |||
| revision 2015-02-20 { | revision 2015-02-20 { | |||
| description | description | |||
| " | " | |||
| * Removing igp-ldp-sync timer in IS-IS | * Removing igp-ldp-sync timer in IS-IS | |||
| "; | "; | |||
| reference ""; | reference ""; | |||
| skipping to change at page 28, line 36 ¶ | skipping to change at page 25, line 30 ¶ | |||
| 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 key-chain { | ||||
| description | ||||
| "Support of keychain for authentication."; | ||||
| } | ||||
| feature segment-routing { | feature segment-routing { | |||
| description | description | |||
| "Support of segment-routing."; | "Support of segment-routing."; | |||
| } | } | |||
| feature node-tag { | feature node-tag { | |||
| description | description | |||
| "Support of node tag."; | "Support of node tag."; | |||
| } | } | |||
| feature igp-ldp-sync { | feature igp-ldp-sync { | |||
| description | description | |||
| skipping to change at page 30, line 4 ¶ | skipping to change at page 26, line 51 ¶ | |||
| } | } | |||
| feature multi-topology { | feature multi-topology { | |||
| description | description | |||
| "Multitopology routing support."; | "Multitopology routing support."; | |||
| } | } | |||
| feature nlpid-control { | feature nlpid-control { | |||
| description | description | |||
| "This feature controls the advertisement | "This feature controls the advertisement | |||
| of support NLPID within ISIS configuration."; | of support NLPID within ISIS configuration."; | |||
| } | } | |||
| feature graceful-restart { | feature graceful-restart { | |||
| description | description | |||
| "Graceful restart support as per RFC5306."; | "Graceful restart support as per RFC5306."; | |||
| } | } | |||
| feature lsp-refresh { | feature lsp-refresh { | |||
| description | description | |||
| "Configuration of LSP refresh interval."; | "Configuration of LSP refresh interval."; | |||
| } | } | |||
| feature maximum-area-addresses { | feature maximum-area-addresses { | |||
| description | description | |||
| "Support of maximum-area-addresses config."; | "Support of maximum-area-addresses config."; | |||
| } | } | |||
| feature admin-control { | ||||
| description | ||||
| "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-instance/" | |||
| +"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."; | |||
| skipping to change at page 31, line 47 ¶ | skipping to change at page 28, line 50 ¶ | |||
| "Point to point interface type."; | "Point to point interface type."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "This type defines the type of adjacency | "This type defines the type of adjacency | |||
| to be established on the interface. | to be established on the interface. | |||
| This is affecting the type of hello | This is affecting the type of hello | |||
| message that would be used."; | message that would be used."; | |||
| } | } | |||
| typedef authentication-type { | ||||
| type enumeration { | ||||
| enum none { | ||||
| description "No authentication used."; | ||||
| } | ||||
| enum plaintext { | ||||
| description "Plain text password used."; | ||||
| } | ||||
| enum message-digest { | ||||
| description "MD5 digest used."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "This type defines available authentication types."; | ||||
| } | ||||
| typedef level { | typedef level { | |||
| type enumeration { | type enumeration { | |||
| enum "level-1" { | enum "level-1" { | |||
| description | description | |||
| "This enum describes L1 only capability."; | "This enum describes L1 only capability."; | |||
| } | } | |||
| enum "level-2" { | enum "level-2" { | |||
| description | description | |||
| "This enum describes L2 only capability."; | "This enum describes L2 only capability."; | |||
| skipping to change at page 34, line 25 ¶ | skipping to change at page 31, line 14 ¶ | |||
| 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 admin-control { | ||||
| leaf enable { | ||||
| if-feature admin-control; | ||||
| type boolean; | ||||
| default true; | ||||
| description | ||||
| "Control the administrative | ||||
| state."; | ||||
| } | ||||
| description | ||||
| "Grouping for admin control."; | ||||
| } | ||||
| grouping adjacency-state { | ||||
| container adjacencies { | ||||
| list adjacency { | ||||
| leaf neighbor-systype { | ||||
| type level; | ||||
| description | ||||
| "Type of neighboring system"; | ||||
| } | ||||
| leaf neighbor-sysid { | ||||
| type system-id; | ||||
| description | ||||
| "The system-id of the neighbor"; | ||||
| } | ||||
| leaf neighbor-extended-circuit-id { | ||||
| type extended-circuit-id; | ||||
| description | ||||
| "Circuit ID of the neighbor"; | ||||
| } | ||||
| leaf neighbor-snpa { | ||||
| type snpa; | ||||
| description | ||||
| "SNPA of the neighbor"; | ||||
| } | ||||
| leaf usage { | ||||
| type level; | ||||
| description | ||||
| "How is the adjacency used ? | ||||
| On a p2p link this might be level 1 and 2, | ||||
| but on a LAN, the usage will be level 1 | ||||
| between peers at L1 or level 2 between | ||||
| peers at L2."; | ||||
| } | ||||
| leaf hold-timer { | ||||
| type uint16; | ||||
| description | ||||
| "The holding time in seconds for this | ||||
| adjacency. This value is based on | ||||
| received hello PDUs and the elapsed | ||||
| time since receipt."; | ||||
| } | ||||
| leaf neighbor-priority { | ||||
| type uint8 { | ||||
| range "0 .. 127"; | ||||
| } | ||||
| description | ||||
| "Priority of the neighboring IS for becoming | ||||
| the DIS."; | ||||
| } | ||||
| leaf lastuptime { | ||||
| type yang:timestamp; | ||||
| description | ||||
| "When the adjacency most recently entered | ||||
| state 'up', measured in hundredths of a | ||||
| second since the last reinitialization of | ||||
| the network management subsystem. | ||||
| The value is 0 if the adjacency has never | ||||
| been in state 'up'."; | ||||
| } | ||||
| leaf state { | ||||
| type enumeration { | ||||
| enum "Up" { | ||||
| description | ||||
| "This state describes that | ||||
| adjacency is established."; | ||||
| } | ||||
| enum "Down" { | ||||
| description | ||||
| "This state describes that | ||||
| adjacency is NOT established."; | ||||
| } | ||||
| enum "Init" { | ||||
| description | ||||
| "This state describes that | ||||
| adjacency is establishing."; | ||||
| } | ||||
| enum "Failed" { | ||||
| description | ||||
| "This state describes that | ||||
| adjacency is failed."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "This leaf describes the state of the | ||||
| interface."; | ||||
| } | ||||
| description | ||||
| "List of operational adjacencies."; | ||||
| } | ||||
| description | ||||
| "This container lists the adjacencies of | ||||
| the local node."; | ||||
| } | ||||
| description | ||||
| "Adjacency state"; | ||||
| } | ||||
| grouping fast-reroute-global-state { | ||||
| container protected-routes { | ||||
| list af-stats { | ||||
| key "af prefix alternate"; | ||||
| leaf af { | ||||
| type identityref { | ||||
| base rt:address-family; | ||||
| } | ||||
| description | ||||
| "Address-family"; | ||||
| } | ||||
| leaf prefix { | ||||
| type string; | ||||
| description | ||||
| "Protected prefix."; | ||||
| } | ||||
| leaf alternate { | ||||
| type string; | ||||
| description | ||||
| "Alternate nexthop for the prefix."; | ||||
| } | ||||
| leaf alternate-type { | ||||
| type enumeration { | ||||
| enum equalcost { | ||||
| description | ||||
| "ECMP alternate."; | ||||
| } | ||||
| enum lfa { | ||||
| description | ||||
| "LFA alternate."; | ||||
| } | ||||
| enum remote-lfa { | ||||
| description | ||||
| "Remote LFA alternate."; | ||||
| } | ||||
| enum tunnel { | ||||
| description | ||||
| "Tunnel based alternate | ||||
| (like RSVP-TE or GRE)."; | ||||
| } | ||||
| enum ti-lfa { | ||||
| description | ||||
| "TI LFA alternate."; | ||||
| } | ||||
| enum mrt { | ||||
| description | ||||
| "MRT alternate."; | ||||
| } | ||||
| enum other { | ||||
| description | ||||
| "Unknown alternate type."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Type of alternate."; | ||||
| } | ||||
| leaf best { | ||||
| type boolean; | ||||
| description | ||||
| "describes if the alternate is the best one."; | ||||
| } | ||||
| leaf non-best-reason { | ||||
| type string; | ||||
| description | ||||
| "Information field to describe why the alternate | ||||
| is not best."; | ||||
| } | ||||
| leaf protection-available { | ||||
| type bits { | ||||
| bit nodeprotect { | ||||
| position 0; | ||||
| description | ||||
| "Node protection available."; | ||||
| } | ||||
| bit linkprotect { | ||||
| position 1; | ||||
| description | ||||
| "Link protection available."; | ||||
| } | ||||
| bit srlgprotect { | ||||
| position 2; | ||||
| description | ||||
| "SRLG protection available."; | ||||
| } | ||||
| bit downstreamprotect { | ||||
| position 3; | ||||
| description | ||||
| "Downstream protection available."; | ||||
| } | ||||
| bit other { | ||||
| position 4; | ||||
| description | ||||
| "Other protection available."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Describes protection provided by the alternate."; | ||||
| } | ||||
| leaf alternate-metric1 { | ||||
| type uint32; | ||||
| description | ||||
| "Metric from PLR to destination | ||||
| through the alternate path."; | ||||
| } | ||||
| leaf alternate-metric2 { | ||||
| type uint32; | ||||
| description | ||||
| "Metric from PLR to the alternate node"; | ||||
| } | ||||
| leaf alternate-metric3 { | ||||
| type uint32; | ||||
| description | ||||
| "Metric from alternate node to the destination"; | ||||
| } | ||||
| description | ||||
| "Per AF statistics."; | ||||
| } | ||||
| description | ||||
| "List of prefixes that are protected."; | ||||
| } | ||||
| container nonprotected-routes { | ||||
| list af-stats { | ||||
| key "af prefix"; | ||||
| leaf af { | ||||
| type identityref { | ||||
| base rt:address-family; | ||||
| } | ||||
| description | ||||
| "Address-family"; | ||||
| } | ||||
| leaf prefix { | ||||
| type string; | ||||
| description | ||||
| "Protected prefix."; | ||||
| } | ||||
| description | ||||
| "Per AF statistics."; | ||||
| } | ||||
| description | ||||
| "List of prefixes that are not protected."; | ||||
| } | ||||
| list protection-statistics { | ||||
| key frr-protection-method; | ||||
| leaf frr-protection-method { | ||||
| type string; | ||||
| description | ||||
| "Protection method used."; | ||||
| } | ||||
| list af-stats { | ||||
| key af; | ||||
| leaf af { | ||||
| type identityref { | ||||
| base rt:address-family; | ||||
| } | ||||
| description | ||||
| "Address-family"; | ||||
| } | ||||
| leaf total-routes { | ||||
| type uint32; | ||||
| description | ||||
| "Total prefixes."; | ||||
| } | ||||
| leaf unprotected-routes { | ||||
| type uint32; | ||||
| description | ||||
| "Total of prefixes who are | ||||
| not protected."; | ||||
| } | ||||
| leaf protected-routes { | ||||
| type uint32; | ||||
| description | ||||
| "Total of prefixes who are | ||||
| protected."; | ||||
| } | ||||
| leaf linkprotected-routes { | ||||
| type uint32; | ||||
| description | ||||
| "Total of prefixes who are | ||||
| link protected."; | ||||
| } | ||||
| leaf nodeprotected-routes { | ||||
| type uint32; | ||||
| description | ||||
| "Total of prefixes who are | ||||
| node protected."; | ||||
| } | ||||
| description | ||||
| "Per AF statistics."; | ||||
| } | ||||
| description | ||||
| "Global protection statistics."; | ||||
| } | ||||
| description | ||||
| "IPFRR states."; | ||||
| } | ||||
| grouping notification-instance-hdr { | grouping notification-instance-hdr { | |||
| description | description | |||
| "This group describes common instance specific | "This group describes common instance specific | |||
| data for notifications."; | data for notifications."; | |||
| leaf instance-name { | leaf instance-name { | |||
| type string; | type string; | |||
| description | description | |||
| "Describes the name of the ISIS instance."; | "Describes the name of the ISIS instance."; | |||
| } | } | |||
| leaf instance-level { | leaf instance-level { | |||
| skipping to change at page 36, line 4 ¶ | skipping to change at page 39, line 27 ¶ | |||
| description "Level 2 external route | description "Level 2 external route | |||
| and not leaked to a lower level"; | and not leaked to a lower level"; | |||
| } | } | |||
| enum l1-up-external { | enum l1-up-external { | |||
| description "Level 1 external route | description "Level 1 external route | |||
| and not leaked to a lower level"; | and not leaked to a lower level"; | |||
| } | } | |||
| enum l2-down-internal { | enum l2-down-internal { | |||
| description "Level 2 internal route | description "Level 2 internal route | |||
| and leaked to a lower level"; | and leaked to a lower level"; | |||
| } | } | |||
| enum l1-down-internal { | enum l1-down-internal { | |||
| description "Level 1 internal route | description "Level 1 internal route | |||
| and leaked to a lower level"; | and leaked to a lower level"; | |||
| } | } | |||
| enum l2-down-external { | enum l2-down-external { | |||
| description "Level 2 external route | description "Level 2 external route | |||
| and leaked to a lower level"; | and leaked to a lower level"; | |||
| } | } | |||
| enum l1-down-external { | enum l1-down-external { | |||
| description "Level 1 external route | description "Level 1 external route | |||
| and leaked to a lower level"; | and leaked to a lower level"; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "This leaf describes the type of ISIS route."; | "This leaf describes the type of ISIS route."; | |||
| } | } | |||
| leaf segment-id { | ||||
| if-feature segment-routing; | ||||
| type uint32; | ||||
| description | ||||
| "Segment ID or MPLS label value | ||||
| used to reach the prefix."; | ||||
| } | ||||
| } | } | |||
| grouping fast-reroute-global-cfg { | grouping fast-reroute-global-cfg { | |||
| description | description | |||
| "This group defines global | "This group defines global | |||
| configuration of IPFRR."; | configuration of IPFRR."; | |||
| container fast-reroute { | ||||
| if-feature fast-reroute; | ||||
| description | ||||
| "This container may be | ||||
| augmented with global parameters | ||||
| for IPFRR."; | ||||
| container lfa { | container lfa { | |||
| if-feature lfa; | if-feature lfa; | |||
| description | description | |||
| "This container may be | "This container may be | |||
| augmented with global parameters | augmented with global parameters | |||
| for LFA. | for LFA. | |||
| Creating the container has no effect on | Creating the container has no effect on | |||
| LFA activation."; | LFA activation."; | |||
| } | } | |||
| } | ||||
| } | } | |||
| grouping fast-reroute-if-cfg { | grouping fast-reroute-if-cfg { | |||
| description | description | |||
| "This group defines interface | "This group defines interface | |||
| configuration of IPFRR."; | configuration of IPFRR."; | |||
| container fast-reroute { | ||||
| if-feature fast-reroute; | ||||
| list lfa { | list lfa { | |||
| if-feature lfa; | if-feature lfa; | |||
| key level; | key level; | |||
| leaf candidate-disabled { | leaf candidate-disabled { | |||
| type boolean; | type boolean; | |||
| default false; | ||||
| description | description | |||
| "Prevent the interface to be used as backup."; | "Prevent the interface to be used as backup."; | |||
| } | } | |||
| leaf enabled { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Activates LFA. | "Activates LFA. | |||
| This model assumes activation | This model assumes activation | |||
| of per-prefix LFA."; | of per-prefix LFA."; | |||
| } | } | |||
| container remote-lfa { | container remote-lfa { | |||
| if-feature remote-lfa; | if-feature remote-lfa; | |||
| leaf enabled { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Activates rLFA."; | "Activates rLFA."; | |||
| } | } | |||
| description | description | |||
| "remote LFA configuration."; | "remote LFA configuration."; | |||
| } | } | |||
| leaf level { | leaf level { | |||
| type level; | type level; | |||
| description | description | |||
| "Level applicability."; | "Level applicability."; | |||
| } | } | |||
| description | description | |||
| "LFA configuration."; | "LFA configuration."; | |||
| } | } | |||
| description | ||||
| "Fast-reroute configuration."; | ||||
| } | ||||
| } | ||||
| grouping segment-routing-global-cfg { | ||||
| description | ||||
| "This grouping defines SR global config"; | ||||
| container segment-routing { | ||||
| if-feature segment-routing; | ||||
| leaf enabled { | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "Enables segment-routing | ||||
| protocol extensions."; | ||||
| } | ||||
| container bindings { | ||||
| leaf advertise { | ||||
| type boolean; | ||||
| default true; | ||||
| description | ||||
| "Authorize the advertise | ||||
| of local mappings in binding TLV."; | ||||
| } | ||||
| leaf receive { | ||||
| type boolean; | ||||
| default true; | ||||
| description | ||||
| "Authorize the reception and usage | ||||
| of binding TLV."; | ||||
| } | ||||
| description | ||||
| "Control of binding advertisement | ||||
| and reception."; | ||||
| } | ||||
| description | ||||
| "segment routing global config."; | ||||
| } | ||||
| } | ||||
| grouping segment-routing-if-cfg { | ||||
| description | ||||
| "This grouping defines SR interface config"; | ||||
| container segment-routing { | ||||
| if-feature segment-routing; | ||||
| container authorize-bundle { | ||||
| leaf enabled { | ||||
| type boolean; | ||||
| description | ||||
| "Enable/disable S flag."; | ||||
| } | ||||
| leaf weight { | ||||
| type uint8; | ||||
| description | ||||
| "The value represents the | ||||
| weight of the Adj-SID | ||||
| for the purpose of load balancing."; | ||||
| } | ||||
| description | ||||
| "Control advertisement of S flag. | ||||
| Enable to advertise a common Adj-SID | ||||
| for parallel links."; | ||||
| } | ||||
| leaf advertise-protection { | ||||
| type enumeration { | ||||
| enum "single" { | ||||
| description | ||||
| "A single Adj-SID is associated | ||||
| with the adjacency and reflects | ||||
| the protection configuration."; | ||||
| } | ||||
| enum "dual" { | ||||
| description | ||||
| "Two Adj-SIDs will be associated | ||||
| with the adjacency if interface | ||||
| is protected. In this case | ||||
| one will be enforced with | ||||
| backup flag set, the other | ||||
| will be enforced to backup flag unset. | ||||
| In case, protection is not configured, | ||||
| a single Adj-SID will be advertised | ||||
| with backup flag unset."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "If set, the Adj-SID refers to an | ||||
| adjacency being protected."; | ||||
| } | ||||
| description | ||||
| "Configuration of segment-routing | ||||
| adjacency SID properties."; | ||||
| } | ||||
| } | ||||
| grouping prefix-segment-id { | ||||
| description | ||||
| "This group defines segment routing extensions | ||||
| for prefixes."; | ||||
| leaf flags { | ||||
| type bits { | ||||
| bit readvertisment { | ||||
| position 7; | ||||
| description | ||||
| "If set, then the prefix to | ||||
| which this Prefix-SID is attached, | ||||
| has been propagated by the | ||||
| router either from another level | ||||
| or from redistribution."; | ||||
| } | ||||
| bit node { | ||||
| position 6; | ||||
| description | ||||
| "If set, then the Prefix-SID refers to | ||||
| the router identified by the prefix."; | ||||
| } | ||||
| bit php { | ||||
| position 5; | ||||
| description | ||||
| "If set, then the penultimate hop MUST NOT | ||||
| pop the Prefix-SID before delivering the packet | ||||
| to the node | ||||
| that advertised the Prefix-SID."; | ||||
| } | ||||
| bit explicit-null { | ||||
| position 4; | ||||
| description | ||||
| "If set, any upstream neighbor of | ||||
| the Prefix-SID originator MUST replace | ||||
| the Prefix-SID with a | ||||
| Prefix-SID having an | ||||
| Explicit-NULL value (0 for IPv4 and 2 for | ||||
| IPv6) before forwarding the packet."; | ||||
| } | ||||
| bit value { | ||||
| position 3; | ||||
| description | ||||
| "If set, then the Prefix-SID carries a | ||||
| value (instead of an index). | ||||
| By default the flag is UNSET."; | ||||
| } | ||||
| bit local { | ||||
| position 2; | ||||
| description | ||||
| "If set, then the value/index carried by | ||||
| the Prefix-SID has local significance. | ||||
| By default the flag is UNSET."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Describes flags associated with the | ||||
| segment ID."; | ||||
| } | ||||
| leaf algorithm { | ||||
| type uint8; | ||||
| description | ||||
| "Algorithm to be used for path computation."; | ||||
| } | ||||
| leaf value { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the prefix-SID."; | ||||
| } | ||||
| } | ||||
| grouping adjacency-segment-id { | ||||
| description | ||||
| "This group defines segment routing extensions | ||||
| for adjacencies."; | ||||
| leaf flags { | ||||
| type bits { | ||||
| bit address-family { | ||||
| position 7; | ||||
| description | ||||
| "If unset, then the Adj-SID refers | ||||
| to an adjacency with outgoing IPv4 encapsulation. | ||||
| If set then the Adj-SID refers to an adjacency | ||||
| with outgoing IPv6 encapsulation."; | ||||
| } | ||||
| bit backup { | ||||
| position 6; | ||||
| description | ||||
| "If set, the Adj-SID refers to an | ||||
| adjacency being protected | ||||
| (e.g.: using IPFRR or MPLS-FRR)"; | ||||
| } | ||||
| bit value { | ||||
| position 5; | ||||
| description | ||||
| "If set, then the SID carries a | ||||
| value (instead of an index). | ||||
| By default the flag is SET."; | ||||
| } | ||||
| bit local { | ||||
| position 4; | ||||
| description | ||||
| "If set, then the value/index carried by | ||||
| the SID has local significance. | ||||
| By default the flag is SET."; | ||||
| } | ||||
| bit set { | ||||
| position 3; | ||||
| description | ||||
| "When set, the S-Flag indicates that the | ||||
| Adj-SID refers to a set of adjacencies"; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Describes flags associated with the | ||||
| segment ID."; | ||||
| } | ||||
| leaf weight { | ||||
| type uint8; | ||||
| description | ||||
| "The value represents the weight of the Adj-SID | ||||
| for the purpose of load balancing."; | ||||
| } | ||||
| leaf neighbor-id { | ||||
| type system-id; | ||||
| description | ||||
| "Describes the system ID of the neighbor | ||||
| associated with the SID value. This is only | ||||
| used on LAN adjacencies."; | ||||
| } | ||||
| leaf value { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the Adj-SID."; | ||||
| } | ||||
| } | } | |||
| 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 | |||
| skipping to change at page 45, line 20 ¶ | skipping to change at page 43, line 35 ¶ | |||
| description | description | |||
| "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."; | |||
| } | } | |||
| list prefix-segment-id { | ||||
| key value; | ||||
| uses prefix-segment-id; | ||||
| description | ||||
| "List of prefix-segment-id."; | ||||
| } | ||||
| } | } | |||
| 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 46, line 4 ¶ | skipping to change at page 44, line 14 ¶ | |||
| leaf prefix-len { | leaf prefix-len { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "This leaf describes the IPv4 prefix len in bits"; | "This leaf describes the IPv4 prefix len in bits"; | |||
| } | } | |||
| leaf metric { | leaf metric { | |||
| type wide-metric; | type wide-metric; | |||
| description | description | |||
| "This leaf describes the ISIS metric value"; | "This leaf describes the ISIS metric value"; | |||
| } | } | |||
| leaf-list tag { | leaf-list tag { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "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."; | |||
| } | } | |||
| list prefix-segment-id { | ||||
| key value; | ||||
| uses prefix-segment-id; | ||||
| description | ||||
| "List of prefix-segment-id."; | ||||
| } | ||||
| } | } | |||
| 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."; | |||
| } | } | |||
| leaf metric { | leaf metric { | |||
| type wide-metric; | type wide-metric; | |||
| description | description | |||
| "This leaf describes the ISIS metric value"; | "This leaf describes the ISIS metric value"; | |||
| } | } | |||
| list adjacency-segment-id { | ||||
| key value; | ||||
| uses adjacency-segment-id; | ||||
| description | ||||
| "List of adjacency-segment-id."; | ||||
| } | ||||
| } | } | |||
| grouping neighbor { | grouping neighbor { | |||
| description | description | |||
| "This group defines attributes of an | "This group defines attributes of an | |||
| ISIS standard neighbor."; | ISIS standard 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 49, line 46 ¶ | skipping to change at page 47, line 46 ¶ | |||
| description | description | |||
| "List of neighbors."; | "List of neighbors."; | |||
| } | } | |||
| description | description | |||
| "This leaf describes list of ISIS neighbors. | "This leaf describes list of ISIS neighbors. | |||
| ISIS reference is TLV 2."; | ISIS reference is TLV 2."; | |||
| } | } | |||
| container authentication { | container authentication { | |||
| leaf authentication-type { | leaf authentication-type { | |||
| type authentication-type; | type string; | |||
| description | description | |||
| "This leaf describes the authentication type | "This leaf describes the authentication type | |||
| to be used."; | to be used."; | |||
| } | } | |||
| leaf authentication-key { | leaf authentication-key { | |||
| type string; | type string; | |||
| description | description | |||
| "This leaf describes the authentication key | "This leaf describes the authentication key | |||
| to be used. For security reason, the | to be used. For security reason, the | |||
| authentication key MUST NOT be presented | authentication key MUST NOT be presented | |||
| in plaintext format. Authors recommends | in plaintext format. Authors recommends | |||
| to use MD5 hash to present the authentication-key."; | to use MD5 hash to present the authentication-key."; | |||
| } | } | |||
| description "This container describes authentication | description "This container describes authentication | |||
| information of the node. ISIS reference is TLV 10."; | information of the node. ISIS reference is TLV 10."; | |||
| } | } | |||
| container extended-is-neighbor { | container extended-is-neighbor { | |||
| list neighbor { | list neighbor { | |||
| key "neighbor-id"; | ||||
| uses neighbor-extended; | uses neighbor-extended; | |||
| description | description | |||
| "List of neighbors."; | "List of neighbors."; | |||
| } | } | |||
| description | description | |||
| "This container describes list of ISIS extended | "This container describes list of ISIS extended | |||
| neighbors. | neighbors. | |||
| ISIS reference is TLV 22."; | ISIS reference is TLV 22."; | |||
| } | } | |||
| container ipv4-internal-reachability { | container ipv4-internal-reachability { | |||
| list prefixes { | list prefixes { | |||
| key "ip-prefix"; | ||||
| uses prefix-ipv4-std; | uses prefix-ipv4-std; | |||
| description | description | |||
| "List of prefixes."; | "List of prefixes."; | |||
| } | } | |||
| description | description | |||
| "This container describes list of IPv4 internal | "This container describes list of IPv4 internal | |||
| reachability information. | reachability information. | |||
| ISIS reference is TLV 128."; | ISIS reference is TLV 128."; | |||
| } | } | |||
| leaf-list protocol-supported { | leaf-list protocol-supported { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "This leaf describes the list of | "This leaf describes the list of | |||
| supported protocols. | supported protocols. | |||
| ISIS reference is TLV 129."; | ISIS reference is TLV 129."; | |||
| } | } | |||
| container ipv4-external-reachability { | container ipv4-external-reachability { | |||
| list prefixes { | list prefixes { | |||
| key "ip-prefix"; | ||||
| uses prefix-ipv4-std; | uses prefix-ipv4-std; | |||
| description | description | |||
| "List of prefixes."; | "List of prefixes."; | |||
| } | } | |||
| description | description | |||
| "This container describes list of IPv4 external | "This container describes list of IPv4 external | |||
| reachability information. | reachability information. | |||
| ISIS reference is TLV 130."; | ISIS reference is TLV 130."; | |||
| } | } | |||
| skipping to change at page 51, line 35 ¶ | skipping to change at page 49, line 32 ¶ | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "This leaf describes the IPv4 Traffic Engineering | "This leaf describes the IPv4 Traffic Engineering | |||
| router ID of the node. | router ID of the node. | |||
| ISIS reference is TLV 134."; | ISIS reference is TLV 134."; | |||
| } | } | |||
| container extended-ipv4-reachability { | container extended-ipv4-reachability { | |||
| list prefixes { | list prefixes { | |||
| key "ip-prefix"; | ||||
| uses prefix-ipv4-extended; | uses prefix-ipv4-extended; | |||
| description | description | |||
| "List of prefixes."; | "List of prefixes."; | |||
| } | } | |||
| description | description | |||
| "This container describes list of IPv4 extended | "This container describes list of IPv4 extended | |||
| reachability information. | reachability information. | |||
| ISIS reference is TLV 135."; | ISIS reference is TLV 135."; | |||
| } | } | |||
| skipping to change at page 52, line 4 ¶ | skipping to change at page 49, line 48 ¶ | |||
| reachability information. | reachability information. | |||
| ISIS reference is TLV 135."; | ISIS reference is TLV 135."; | |||
| } | } | |||
| leaf dynamic-hostname { | leaf dynamic-hostname { | |||
| type string; | type string; | |||
| description | description | |||
| "This leaf describes the name of the node. | "This leaf describes the name of the node. | |||
| ISIS reference is TLV 137."; | ISIS reference is TLV 137."; | |||
| } | } | |||
| leaf ipv6-te-routerid { | leaf ipv6-te-routerid { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "This leaf describes the IPv6 Traffic Engineering | "This leaf describes the IPv6 Traffic Engineering | |||
| router ID of the node. | router ID of the node. | |||
| ISIS reference is TLV 140."; | ISIS reference is TLV 140."; | |||
| } | } | |||
| container mt-is-neighbor { | container mt-is-neighbor { | |||
| list neighbor { | list neighbor { | |||
| key "neighbor-id"; | ||||
| leaf MT-ID { | leaf MT-ID { | |||
| type uint16 { | type uint16 { | |||
| range "0 .. 4095"; | range "0 .. 4095"; | |||
| } | } | |||
| description | description | |||
| "This leaf defines the identifier | "This leaf defines the identifier | |||
| of a topology."; | of a topology."; | |||
| } | } | |||
| uses neighbor-extended; | uses neighbor-extended; | |||
| description | description | |||
| "List of neighbors."; | "List of neighbors."; | |||
| } | } | |||
| description | description | |||
| "This container describes list of ISIS multi-topology | "This container describes list of ISIS multi-topology | |||
| neighbors. | neighbors. | |||
| ISIS reference is TLV 223."; | ISIS reference is TLV 223."; | |||
| } | } | |||
| container mt-entries { | container mt-entries { | |||
| list topology { | list topology { | |||
| key "MT-ID"; | ||||
| leaf MT-ID { | leaf MT-ID { | |||
| type uint16 { | type uint16 { | |||
| range "0 .. 4095"; | range "0 .. 4095"; | |||
| } | } | |||
| description | description | |||
| "This leaf defines the identifier | "This leaf defines the identifier | |||
| of a topology."; | of a topology."; | |||
| } | } | |||
| skipping to change at page 53, line 37 ¶ | skipping to change at page 51, line 31 ¶ | |||
| leaf-list ipv6-addresses { | leaf-list ipv6-addresses { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "This leaf describes the IPv6 interface | "This leaf describes the IPv6 interface | |||
| addresses of the node. | addresses of the node. | |||
| ISIS reference is TLV 232."; | ISIS reference is TLV 232."; | |||
| } | } | |||
| container mt-extended-ipv4-reachability { | container mt-extended-ipv4-reachability { | |||
| list prefixes { | list prefixes { | |||
| key "ip-prefix"; | ||||
| leaf MT-ID { | leaf MT-ID { | |||
| type uint16 { | type uint16 { | |||
| range "0 .. 4095"; | range "0 .. 4095"; | |||
| } | } | |||
| description | description | |||
| "This leaf defines the identifier | "This leaf defines the identifier | |||
| of a topology."; | of a topology."; | |||
| } | } | |||
| uses prefix-ipv4-extended; | uses prefix-ipv4-extended; | |||
| description | description | |||
| skipping to change at page 54, line 11 ¶ | skipping to change at page 52, line 4 ¶ | |||
| uses prefix-ipv4-extended; | uses prefix-ipv4-extended; | |||
| description | description | |||
| "List of prefixes."; | "List of prefixes."; | |||
| } | } | |||
| description | description | |||
| "This container describes list of IPv4 | "This container describes list of IPv4 | |||
| reachability information in multi-topology | reachability information in multi-topology | |||
| environment. | environment. | |||
| ISIS reference is TLV 235."; | ISIS reference is TLV 235."; | |||
| } | } | |||
| container mt-ipv6-reachability { | container mt-ipv6-reachability { | |||
| list prefixes { | list prefixes { | |||
| key "ip-prefix"; | ||||
| leaf MT-ID { | leaf MT-ID { | |||
| type uint16 { | type uint16 { | |||
| range "0 .. 4095"; | range "0 .. 4095"; | |||
| } | } | |||
| description | description | |||
| "This leaf defines the identifier | "This leaf defines the identifier | |||
| of a topology."; | of a topology."; | |||
| } | } | |||
| uses prefix-ipv6-extended; | uses prefix-ipv6-extended; | |||
| description | description | |||
| skipping to change at page 54, line 37 ¶ | skipping to change at page 52, line 30 ¶ | |||
| } | } | |||
| description | description | |||
| "This container describes list of IPv6 | "This container describes list of IPv6 | |||
| reachability information in multi-topology | reachability information in multi-topology | |||
| environment. | environment. | |||
| ISIS reference is TLV 237."; | ISIS reference is TLV 237."; | |||
| } | } | |||
| container ipv6-reachability { | container ipv6-reachability { | |||
| list prefixes { | list prefixes { | |||
| key "ip-prefix"; | ||||
| uses prefix-ipv6-extended; | uses prefix-ipv6-extended; | |||
| description | description | |||
| "List of prefixes."; | "List of prefixes."; | |||
| } | } | |||
| description | description | |||
| "This container describes list of IPv6 | "This container describes list of IPv6 | |||
| reachability information. | reachability information. | |||
| ISIS reference is TLV 236."; | ISIS reference is TLV 236."; | |||
| } | } | |||
| list segment-routing-bindings { | ||||
| if-feature segment-routing; | ||||
| key "fec range"; | ||||
| leaf fec { | ||||
| type string; | ||||
| description | ||||
| "IP (v4 or v6) range to be bound to SIDs."; | ||||
| } | ||||
| leaf range { | ||||
| type uint16; | ||||
| description | ||||
| "Describes number of elements to assign | ||||
| a binding to."; | ||||
| } | ||||
| leaf flags { | ||||
| type bits { | ||||
| bit address-family { | ||||
| position 7; | ||||
| description | ||||
| "If unset, then the Prefix FEC | ||||
| carries an IPv4 Prefix. | ||||
| If set then the Prefix FEC carries an | ||||
| IPv6 Prefix."; | ||||
| } | ||||
| bit mirror { | ||||
| position 6; | ||||
| description | ||||
| "Set if the advertised SID/path | ||||
| corresponds to a mirrored context. | ||||
| "; | ||||
| } | ||||
| bit flooding { | ||||
| position 5; | ||||
| description | ||||
| "If the S bit is set(1), | ||||
| the IS-IS Router CAPABILITY TLV | ||||
| MUST be flooded across the entire routing domain. | ||||
| If the S bit is | ||||
| not set(0), the TLV MUST NOT be leaked between levels. | ||||
| This bit MUST NOT be altered during the TLV leaking."; | ||||
| } | ||||
| bit down { | ||||
| position 4; | ||||
| description | ||||
| "When the IS-IS Router CAPABILITY TLV is | ||||
| leaked from level-2 to level-1, the D bit | ||||
| MUST be set. Otherwise, this bit MUST | ||||
| be clear. IS-IS Router capability TLVs | ||||
| with the D bit set MUST NOT | ||||
| be leaked from level-1 to level-2. | ||||
| This is to prevent TLV looping. | ||||
| "; | ||||
| } | ||||
| bit attached { | ||||
| position 3; | ||||
| description | ||||
| "The originator of the SID/Label Binding | ||||
| TLV MAY set the A bit in order to signal | ||||
| that the prefixes and | ||||
| SIDs advertised in the SID/Label Binding | ||||
| TLV are directly | ||||
| connected to their originators. | ||||
| "; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Flags of the binding."; | ||||
| } | ||||
| leaf weight { | ||||
| type uint8; | ||||
| description | ||||
| "Weight of the path for loadbalancing purpose."; | ||||
| } | ||||
| list binding { | ||||
| container prefix-sid { | ||||
| uses prefix-segment-id; | ||||
| description | ||||
| "Binding prefix SID to the range."; | ||||
| } | ||||
| leaf ero-metric { | ||||
| type uint32; | ||||
| description | ||||
| "Cost of ERO path."; | ||||
| } | ||||
| container ero { | ||||
| leaf address-family { | ||||
| type identityref { | ||||
| base rt:address-family; | ||||
| } | ||||
| description | ||||
| "Address-family."; | ||||
| } | ||||
| leaf loose { | ||||
| type boolean; | ||||
| description | ||||
| "Set to true, | ||||
| if hop is a loose hop."; | ||||
| } | ||||
| leaf address { | ||||
| type string; | ||||
| description | ||||
| "IP address of a node on the | ||||
| path."; | ||||
| } | ||||
| description | ||||
| "Binding ERO path to the range."; | ||||
| } | ||||
| container backup-ero { | ||||
| leaf address-family { | ||||
| type identityref { | ||||
| base rt:address-family; | ||||
| } | ||||
| description | ||||
| "Address-family."; | ||||
| } | ||||
| leaf loose { | ||||
| type boolean; | ||||
| description | ||||
| "Set to true, | ||||
| if hop is a loose hop."; | ||||
| } | ||||
| leaf address { | ||||
| type string; | ||||
| description | ||||
| "IP address of a node on the | ||||
| path."; | ||||
| } | ||||
| description | ||||
| "Binding backup ERO path to the range."; | ||||
| } | ||||
| container unnumbered-interface-id-ero { | ||||
| leaf router-id { | ||||
| type string; | ||||
| description | ||||
| "Router ID of the node owning the interface."; | ||||
| } | ||||
| leaf interface-id { | ||||
| type uint32; | ||||
| description | ||||
| "Interface ID on which the path is built."; | ||||
| } | ||||
| description | ||||
| "Binding a path over unnumbered interface."; | ||||
| } | ||||
| container backup-unnumbered-interface-id-ero { | ||||
| leaf router-id { | ||||
| type string; | ||||
| description | ||||
| "Router ID of the node owning the interface."; | ||||
| } | ||||
| leaf interface-id { | ||||
| type uint32; | ||||
| description | ||||
| "Interface ID on which the path is built."; | ||||
| } | ||||
| description | ||||
| "Binding a backup path over unnumbered interface."; | ||||
| } | ||||
| description | ||||
| "Bindings associated with the range."; | ||||
| } | ||||
| description | ||||
| "This container describes list of SID/Label | ||||
| bindings. | ||||
| ISIS reference is TLV 149."; | ||||
| } | ||||
| list router-capabilities { | list router-capabilities { | |||
| leaf flags { | leaf flags { | |||
| type bits { | type bits { | |||
| bit flooding { | bit flooding { | |||
| position 0; | position 0; | |||
| description | description | |||
| "If the S bit is set(1), | "If the S bit is set(1), | |||
| the IS-IS Router CAPABILITY TLV | the IS-IS Router CAPABILITY TLV | |||
| MUST be flooded across the entire routing domain. | MUST be flooded across the entire routing domain. | |||
| If the S bit is | If the S bit is | |||
| skipping to change at page 59, line 28 ¶ | skipping to change at page 53, line 37 ¶ | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Node tag value."; | "Node tag value."; | |||
| } | } | |||
| description | description | |||
| "List of tags."; | "List of tags."; | |||
| } | } | |||
| description | description | |||
| "Container for node tags."; | "Container for node tags."; | |||
| } | } | |||
| list segment-routing { | ||||
| leaf flags { | ||||
| type bits { | ||||
| bit ipv4 { | ||||
| position 7; | ||||
| description | ||||
| "If set, then the router is capable of | ||||
| outgoing IPv4 encapsulation on all interfaces. | ||||
| "; | ||||
| } | ||||
| bit ipv6 { | ||||
| position 6; | ||||
| description | ||||
| "If set, then the router is capable of | ||||
| outgoing IPv6 encapsulation on all interfaces. | ||||
| "; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Flags associated with the capability."; | ||||
| } | ||||
| leaf range { | ||||
| type uint32; | ||||
| description | ||||
| "Number of values of the range starting with the | ||||
| SID/Label value."; | ||||
| } | ||||
| leaf starting-value { | ||||
| type uint32; | ||||
| description | ||||
| "Lower bound of the label block."; | ||||
| } | ||||
| description | ||||
| "Segment routing capability."; | ||||
| } | ||||
| leaf-list segment-routing-algorithm { | ||||
| type uint8; | ||||
| description | ||||
| "List of supported algorithm for segment routing."; | ||||
| } | ||||
| leaf binary { | leaf binary { | |||
| type binary; | type binary; | |||
| description | description | |||
| "This leaf describes the capability of the node. | "This leaf describes the capability of the node. | |||
| Format is binary according to the protocol encoding."; | Format is binary according to the protocol encoding."; | |||
| } | } | |||
| description | description | |||
| "This container describes the capabilities of the node. | "This container describes the capabilities of the node. | |||
| This container may be extended with detailed | This container may be extended with detailed | |||
| information. | information. | |||
| ISIS reference is TLV 242."; | ISIS reference is TLV 242."; | |||
| } | } | |||
| } | } | |||
| /* */ | grouping isis-node-tag-cfg { | |||
| augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" { | ||||
| when "rt:source-protocol = 'isis:isis'" { | ||||
| description "ISIS-specific route attributes."; | ||||
| } | ||||
| uses route-content; | ||||
| description | ||||
| "This augments route object in RIB with ISIS-specific | ||||
| attributes."; | ||||
| } | ||||
| augment "/rt:active-route/rt:output/rt:route" | ||||
| { | ||||
| uses route-content; | ||||
| description "ISIS-specific route attributes."; | ||||
| } | ||||
| augment "/if:interfaces/if:interface" | ||||
| { | ||||
| leaf clns-mtu { | ||||
| type uint16; | ||||
| description | ||||
| "Defines CLNS MTU of the interface."; | ||||
| } | ||||
| description "ISO interface config."; | ||||
| } | ||||
| augment "/rt:routing/rt:routing-instance/rt:routing-protocols/" | ||||
| +"rt:routing-protocol" { | ||||
| when "rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment is only valid when routing protocol | ||||
| instance type is isis."; | ||||
| } | ||||
| description | description | |||
| "This augments a routing protocol instance with ISIS | "ISIS node tag config."; | |||
| specific parameters."; | container node-tag { | |||
| container isis { | if-feature node-tag; | |||
| list node-tag { | ||||
| list instance { | key tag; | |||
| must "count(area-address) > 0" { | leaf tag { | |||
| error-message "At least one area-address | type uint32; | |||
| must be configured."; | description | |||
| "Node tag value."; | ||||
| } | ||||
| description | description | |||
| "Enforce configuration of at least one area."; | "List of tags."; | |||
| } | } | |||
| description | ||||
| "Container for node tags."; | ||||
| } | ||||
| } | ||||
| key routing-instance; | grouping isis-global-cfg { | |||
| description | ||||
| "Defines the ISIS global configuration."; | ||||
| leaf routing-instance { | uses admin-control; | |||
| type rt:routing-instance-ref; | ||||
| description | ||||
| "Reference routing instance. | ||||
| For protocol centric model, which is | ||||
| supported in | ||||
| default-instance only, this could reference | ||||
| any VRF routing-instance. | ||||
| For VRF centric model, must reference the | ||||
| enclosing routing-instance."; | ||||
| } | ||||
| leaf level-type { | leaf level-type { | |||
| type level; | type level; | |||
| default "level-all"; | default "level-all"; | |||
| description | description | |||
| "This leaf describes the type of ISIS node. | "This leaf describes the type of ISIS node. | |||
| A node can be level-1-only, level-2-only | A node can be level-1-only, level-2-only | |||
| or level-1-2. | or level-1-2. | |||
| "; | "; | |||
| } | } | |||
| skipping to change at page 63, line 46 ¶ | skipping to change at page 56, line 25 ¶ | |||
| if-feature lsp-refresh; | if-feature lsp-refresh; | |||
| type uint16; | type uint16; | |||
| 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 enabled { | 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."; | |||
| } | } | |||
| container node-tag { | uses isis-node-tag-cfg; | |||
| if-feature node-tag; | ||||
| list node-tag { | ||||
| key tag; | ||||
| leaf tag { | ||||
| type uint32; | ||||
| description | ||||
| "Node tag value."; | ||||
| } | ||||
| description | ||||
| "List of tags."; | ||||
| } | ||||
| description | ||||
| "Container for node tags."; | ||||
| } | ||||
| uses fast-reroute-global-cfg; | ||||
| uses segment-routing-global-cfg; | ||||
| list authentication { | list authentication { | |||
| key level; | key level; | |||
| leaf key { | choice authentication-type { | |||
| type string; | case key-chain { | |||
| description | if-feature key-chain; | |||
| "This leaf describes the | leaf key-chain { | |||
| authentication key."; | type key-chain:key-chain-ref; | |||
| } | description | |||
| leaf type { | "Reference to a key-chain."; | |||
| type authentication-type; | } | |||
| } | ||||
| case password { | ||||
| leaf key { | ||||
| type string; | ||||
| description | ||||
| "This leaf describes the | ||||
| authentication key."; | ||||
| } | ||||
| uses key-chain:crypto-algorithm-types; | ||||
| } | ||||
| description | description | |||
| "This leaf describes the authentication | "Choice of authentication."; | |||
| type to be used."; | ||||
| } | } | |||
| leaf level { | leaf level { | |||
| type level; | type level; | |||
| description | description | |||
| "Level applicability."; | "Level applicability."; | |||
| } | } | |||
| description | description | |||
| "Container for ISIS authentication. | "Container for ISIS authentication. | |||
| It covers both LSPs and SNPs."; | It covers both LSPs and SNPs."; | |||
| } | } | |||
| list metric-type { | list metric-type { | |||
| key level; | key level; | |||
| leaf value { | leaf value { | |||
| type enumeration { | type enumeration { | |||
| enum wide-only { | enum wide-only { | |||
| description | description | |||
| "Advertise new metric style only | "Advertise new metric style only | |||
| skipping to change at page 67, line 4 ¶ | skipping to change at page 59, line 19 ¶ | |||
| description | description | |||
| "Value of the metric"; | "Value of the metric"; | |||
| } | } | |||
| leaf level { | leaf level { | |||
| type level; | type level; | |||
| description | description | |||
| "Level applicability of the metric."; | "Level applicability of the metric."; | |||
| } | } | |||
| description | description | |||
| "Defines the metric to be used by default."; | "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"; | |||
| } | } | |||
| leaf enabled { | leaf enable { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "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."; | |||
| } | } | |||
| list topologies { | ||||
| if-feature multi-topology; | ||||
| key "name"; | ||||
| leaf enabled { | ||||
| type boolean; | ||||
| description | ||||
| "Describes the activation state of the | ||||
| AF."; | ||||
| } | ||||
| leaf name { | ||||
| type rt:rib-ref; | ||||
| description "RIB"; | ||||
| } | ||||
| uses fast-reroute-global-cfg; | ||||
| uses segment-routing-global-cfg; | ||||
| list default-metric { | ||||
| key level; | ||||
| 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."; | ||||
| } | ||||
| container node-tag { | ||||
| if-feature node-tag; | ||||
| list node-tag { | ||||
| key tag; | ||||
| leaf tag { | ||||
| type uint32; | ||||
| description | ||||
| "Node tag value."; | ||||
| } | ||||
| description | ||||
| "List of tags."; | ||||
| } | ||||
| description | ||||
| "Container for node tags."; | ||||
| } | ||||
| description | ||||
| "List of topologies"; | ||||
| } | ||||
| list overload { | list overload { | |||
| key level; | key level; | |||
| leaf status { | leaf status { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "This leaf defines the overload status."; | "This leaf defines the overload status."; | |||
| } | } | |||
| leaf timeout { | leaf timeout { | |||
| type uint16; | type uint16; | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "This leaf defines the timeout in seconds | "This leaf defines the timeout in seconds | |||
| of the overload condition."; | of the overload condition."; | |||
| } | } | |||
| leaf level { | leaf level { | |||
| type level; | type level; | |||
| description | description | |||
| skipping to change at page 69, line 40 ¶ | skipping to change at page 60, line 48 ¶ | |||
| leaf level { | leaf level { | |||
| type level; | type level; | |||
| description | description | |||
| "Level applicability of the metric."; | "Level applicability of the metric."; | |||
| } | } | |||
| description | description | |||
| "This leaf describes if the router is | "This leaf describes if the router is | |||
| set to overload state."; | set to overload state."; | |||
| } | } | |||
| container interfaces { | } | |||
| list interface { | ||||
| key "name"; | ||||
| leaf name { | ||||
| type if:interface-ref; | ||||
| description | ||||
| "Reference to the interface within | ||||
| the routing-instance."; | ||||
| } | ||||
| leaf level-type { | ||||
| type level; | ||||
| default "level-all"; | ||||
| description | ||||
| "This leaf defines the associated ISIS | ||||
| level of the interface."; | ||||
| } | ||||
| leaf lsp-pacing-interval { | ||||
| type uint16; | ||||
| units "milliseconds"; | ||||
| description | ||||
| "This leaf defines the interval between | ||||
| LSP transmissions in milli-seconds"; | ||||
| } | ||||
| leaf lsp-retransmit-interval { | ||||
| type uint16; | ||||
| units "seconds"; | ||||
| description | ||||
| "This leaf defines the interval between | ||||
| retransmission of LSP"; | ||||
| } | ||||
| leaf passive { | ||||
| type boolean; | ||||
| default "false"; | ||||
| description | ||||
| "This leaf defines if interface is in | ||||
| passive mode (ISIS not running, | ||||
| but network is advertised)."; | ||||
| } | ||||
| leaf csnp-interval { | ||||
| type uint16; | ||||
| units "seconds"; | ||||
| description | ||||
| "This leaf defines the interval of CSNP | ||||
| messages."; | ||||
| } | ||||
| container hello-padding { | grouping isis-global-topologies-cfg { | |||
| leaf enabled { | description | |||
| type boolean; | "Per topology config."; | |||
| default "true"; | list default-metric { | |||
| description | key level; | |||
| "Status of Hello-padding activation. | ||||
| By default, the implementation shall | ||||
| pad HELLOs."; | ||||
| } | ||||
| description | leaf value { | |||
| "This container handles ISIS hello padding | type wide-metric; | |||
| configuration."; | description | |||
| "Value of the metric"; | ||||
| } | ||||
| leaf level { | ||||
| type level; | ||||
| description | ||||
| "Level applicability of the metric."; | ||||
| } | ||||
| description | ||||
| "Defines the metric to be used by default."; | ||||
| } | ||||
| uses isis-node-tag-cfg; | ||||
| } | ||||
| } | grouping isis-if-cfg { | |||
| description | ||||
| "Grouping for interface cfg."; | ||||
| leaf mesh-group-enabled { | leaf level-type { | |||
| type mesh-group-state; | type level; | |||
| description | default "level-all"; | |||
| "Describes the mesh group state of | description | |||
| the interface."; | "This leaf defines the associated ISIS | |||
| } | level of the interface."; | |||
| } | ||||
| leaf lsp-pacing-interval { | ||||
| type uint16; | ||||
| units "milliseconds"; | ||||
| description | ||||
| "This leaf defines the interval between | ||||
| LSP transmissions in milli-seconds"; | ||||
| } | ||||
| leaf lsp-retransmit-interval { | ||||
| type uint16; | ||||
| units "seconds"; | ||||
| description | ||||
| "This leaf defines the interval between | ||||
| retransmission of LSP"; | ||||
| } | ||||
| leaf passive { | ||||
| type boolean; | ||||
| default "false"; | ||||
| description | ||||
| "This leaf defines if interface is in | ||||
| passive mode (ISIS not running, | ||||
| but network is advertised)."; | ||||
| } | ||||
| leaf csnp-interval { | ||||
| type uint16; | ||||
| units "seconds"; | ||||
| description | ||||
| "This leaf defines the interval of CSNP | ||||
| messages."; | ||||
| } | ||||
| leaf mesh-group { | container hello-padding { | |||
| when "../mesh-group-enabled = meshSet" { | leaf enable { | |||
| description | type boolean; | |||
| "Only valid when mesh-group-enabled | default "true"; | |||
| equals meshSet"; | description | |||
| } | "Status of Hello-padding activation. | |||
| type uint8; | By default, the implementation shall | |||
| description | pad HELLOs."; | |||
| "Describes the mesh group ID of | } | |||
| the interface."; | ||||
| } | ||||
| leaf interface-type { | description | |||
| type interface-type; | "This container handles ISIS hello padding | |||
| description | configuration."; | |||
| "This leaf defines the type of adjacency | } | |||
| to be established on the interface. | ||||
| This is affecting the type of hello | ||||
| message that would be used."; | ||||
| } | ||||
| leaf enabled { | leaf mesh-group-enable { | |||
| type boolean; | type mesh-group-state; | |||
| default "true"; | description | |||
| description | "Describes the mesh group state of | |||
| "This leaf describes the administrative | the interface."; | |||
| status of the ISIS interface."; | } | |||
| } | leaf mesh-group { | |||
| when "../mesh-group-enable = meshSet" { | ||||
| description | ||||
| "Only valid when mesh-group-enable | ||||
| equals meshSet"; | ||||
| } | ||||
| type uint8; | ||||
| description | ||||
| "Describes the mesh group ID of | ||||
| the interface."; | ||||
| leaf-list tag { | } | |||
| if-feature prefix-tag; | ||||
| type uint32; | leaf interface-type { | |||
| description | type interface-type; | |||
| "This leaf defines list of tags associated | description | |||
| with the interface."; | "This leaf defines the type of adjacency | |||
| } | to be established on the interface. | |||
| leaf-list tag64 { | This is affecting the type of hello | |||
| if-feature prefix-tag64; | message that would be used."; | |||
| } | ||||
| type uint64; | uses admin-control; | |||
| description | ||||
| "This leaf defines list of 64bits tags | ||||
| associated with the interface."; | ||||
| } | ||||
| list hello-authentication { | leaf-list tag { | |||
| key level; | if-feature prefix-tag; | |||
| leaf type { | type uint32; | |||
| type authentication-type; | description | |||
| "This leaf defines list of tags associated | ||||
| with the interface."; | ||||
| } | ||||
| description | leaf-list tag64 { | |||
| "This leaf describes the authentication | if-feature prefix-tag64; | |||
| type to be used in hello messages."; | ||||
| } | ||||
| leaf key { | ||||
| type string; | ||||
| description | ||||
| "This leaf describes the | ||||
| authentication key | ||||
| to be used in hello messages. | ||||
| For security reason, the | ||||
| authentication key MUST | ||||
| NOT be presented | ||||
| in plaintext format upon a | ||||
| get-config reply. | ||||
| Authors recommends | ||||
| to use MD5 hash to present the | ||||
| authentication-key"; | ||||
| } | ||||
| leaf level { | ||||
| type level; | ||||
| description | ||||
| "Level applicability."; | ||||
| } | ||||
| description | ||||
| "This leaf describes the authentication type | ||||
| to be used in hello messages."; | ||||
| } | ||||
| list hello-interval { | type uint64; | |||
| key level; | description | |||
| "This leaf defines list of 64bits tags | ||||
| associated with the interface."; | ||||
| } | ||||
| leaf value { | list hello-authentication { | |||
| type uint16; | key level; | |||
| units "seconds"; | ||||
| description | ||||
| "This leaf defines the interval of | ||||
| hello messages."; | ||||
| } | ||||
| leaf level { | ||||
| type level; | ||||
| description | ||||
| "Level applicability."; | ||||
| } | ||||
| description | ||||
| "This leaf defines the interval of | ||||
| hello messages."; | ||||
| } | ||||
| list hello-multiplier { | ||||
| key level; | ||||
| leaf value { | choice authentication-type { | |||
| type uint16; | case key-chain { | |||
| description | if-feature key-chain; | |||
| "This leaf defines the number of | leaf key-chain { | |||
| hello failed to be received before | type key-chain:key-chain-ref; | |||
| declaring the adjacency down."; | description | |||
| } | "Reference to a key-chain."; | |||
| leaf level { | } | |||
| type level; | } | |||
| description | case password { | |||
| "Level applicability."; | leaf key { | |||
| } | type string; | |||
| description | description | |||
| "This leaf defines the number of | "This leaf describes the | |||
| hello failed to be received before | authentication key."; | |||
| declaring the adjacency down."; | } | |||
| } | uses key-chain:crypto-algorithm-types; | |||
| } | ||||
| description | ||||
| "Choice of authentication."; | ||||
| } | ||||
| leaf level { | ||||
| type level; | ||||
| description | ||||
| "Level applicability."; | ||||
| } | ||||
| description | ||||
| "This leaf describes the authentication type | ||||
| to be used in hello messages."; | ||||
| } | ||||
| list priority { | list hello-interval { | |||
| must 'interface-type = "broadcast"' { | key level; | |||
| error-message | ||||
| "Priority only applies to broadcast | ||||
| interfaces."; | ||||
| description | ||||
| "Check for broadcast interface."; | ||||
| } | ||||
| key level; | ||||
| leaf value { | ||||
| type uint8 { | ||||
| range "0 .. 127"; | ||||
| } | ||||
| description | leaf value { | |||
| "This leaf describes the priority of | type uint16; | |||
| the interface | units "seconds"; | |||
| for DIS election."; | description | |||
| } | "This leaf defines the interval of | |||
| leaf level { | hello messages."; | |||
| type level; | } | |||
| description | leaf level { | |||
| "Level applicability."; | type level; | |||
| } | description | |||
| description | "Level applicability."; | |||
| "This leaf describes the priority of | } | |||
| the interface | description | |||
| for DIS election."; | "This leaf defines the interval of | |||
| } | hello messages."; | |||
| list metric { | } | |||
| key level; | list hello-multiplier { | |||
| key level; | ||||
| leaf value { | leaf value { | |||
| type wide-metric; | type uint16; | |||
| description | description | |||
| "Metric value."; | "This leaf defines the number of | |||
| } | hello failed to be received before | |||
| leaf level { | declaring the adjacency down."; | |||
| type level; | } | |||
| description | leaf level { | |||
| "Level applicability."; | type level; | |||
| } | description | |||
| description | "Level applicability."; | |||
| "Container for interface metric"; | } | |||
| } | description | |||
| "This leaf defines the number of | ||||
| hello failed to be received before | ||||
| declaring the adjacency down."; | ||||
| } | ||||
| list af { | list priority { | |||
| key af; | must 'interface-type = "broadcast"' { | |||
| error-message | ||||
| "Priority only applies to broadcast | ||||
| interfaces."; | ||||
| description | ||||
| "Check for broadcast interface."; | ||||
| } | ||||
| key level; | ||||
| leaf value { | ||||
| type uint8 { | ||||
| range "0 .. 127"; | ||||
| } | ||||
| leaf af { | description | |||
| type identityref { | "This leaf describes the priority of | |||
| base rt:address-family; | the interface | |||
| } | for DIS election."; | |||
| description | } | |||
| "Address-family"; | leaf level { | |||
| } | type level; | |||
| container segment-routing { | description | |||
| if-feature segment-routing; | "Level applicability."; | |||
| list prefix-sid { | } | |||
| key value; | description | |||
| leaf value-type { | "This leaf describes the priority of | |||
| type enumeration { | the interface | |||
| enum index { | for DIS election."; | |||
| description | } | |||
| "The value will be | list metric { | |||
| interpreted as an index."; | key level; | |||
| } | leaf value { | |||
| enum absolute { | type wide-metric; | |||
| description | description | |||
| "The value will become | "Metric value."; | |||
| interpreted as an absolute | } | |||
| value."; | leaf level { | |||
| } | type level; | |||
| } | description | |||
| description | "Level applicability."; | |||
| "This leaf defines how value | } | |||
| must be interpreted."; | description | |||
| } | "Container for interface metric"; | |||
| } | ||||
| leaf value { | list af { | |||
| type uint32; | key af; | |||
| description | ||||
| "Value associated with | ||||
| prefix. The value must | ||||
| be interpreted in the | ||||
| context of value-type."; | ||||
| } | ||||
| leaf node-flag { | ||||
| type boolean; | ||||
| default true; | ||||
| description | ||||
| "Set prefix as a node | ||||
| representative prefix."; | ||||
| } | ||||
| leaf last-hop-behavior { | ||||
| type enumeration { | ||||
| enum explicit-null { | ||||
| description | ||||
| "Use explicit-null for the SID."; | ||||
| } | ||||
| enum no-php { | ||||
| description | ||||
| "Do no use PHP for the SID."; | ||||
| } | ||||
| enum php { | ||||
| description | ||||
| "Use PHP for the SID."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Configure last hop behavior."; | ||||
| } | ||||
| description | leaf af { | |||
| "List of prefix-SID associated with | type identityref { | |||
| the interface."; | base rt:address-family; | |||
| } | } | |||
| description | description | |||
| "Segment routing interface configuration."; | "Address-family"; | |||
| } | } | |||
| container bfd { | container bfd { | |||
| if-feature bfd; | if-feature bfd; | |||
| leaf enabled { | leaf enable { | |||
| type boolean; | type boolean; | |||
| default false; | default false; | |||
| description | description | |||
| "This leaf enables BFD."; | "This leaf enables BFD."; | |||
| } | } | |||
| description | description | |||
| "The container describes | "The container describes | |||
| BFD config."; | BFD config."; | |||
| } | } | |||
| description | description | |||
| "List of AFs."; | "List of AFs."; | |||
| } | } | |||
| list topologies { | container mpls { | |||
| key name; | container igp-ldp-sync { | |||
| if-feature igp-ldp-sync; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enable/disable IGP LDP sync."; | ||||
| } | ||||
| description | ||||
| "IGP-LDP sync configuration."; | ||||
| leaf name { | } | |||
| type rt:rib-ref; | description | |||
| description | "Container for MPLS specific configuration | |||
| "Name of RIB."; | for ISIS."; | |||
| } | } | |||
| list metric { | ||||
| key level; | ||||
| leaf value { | } | |||
| type wide-metric; | ||||
| description | ||||
| "Metric value."; | ||||
| } | ||||
| leaf level { | ||||
| type level; | ||||
| description | ||||
| "Level applicability."; | ||||
| } | ||||
| description | ||||
| "Container for interface metric"; | ||||
| } | ||||
| uses fast-reroute-if-cfg; | ||||
| uses segment-routing-if-cfg; | grouping isis-if-topologies-cfg { | |||
| description | ||||
| "ISIS interface topology cfg."; | ||||
| list metric { | ||||
| key level; | ||||
| description | leaf value { | |||
| "List of topologies."; | type wide-metric; | |||
| } | description | |||
| "Metric value."; | ||||
| } | ||||
| leaf level { | ||||
| type level; | ||||
| description | ||||
| "Level applicability."; | ||||
| } | ||||
| description | ||||
| "Container for interface metric"; | ||||
| } | ||||
| } | ||||
| uses fast-reroute-if-cfg; | /* */ | |||
| uses segment-routing-if-cfg; | augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" { | |||
| when "rt:source-protocol = 'isis:isis'" { | ||||
| description "ISIS-specific route attributes."; | ||||
| } | ||||
| uses route-content; | ||||
| description | ||||
| "This augments route object in RIB with ISIS-specific | ||||
| attributes."; | ||||
| } | ||||
| container mpls { | augment "/rt:active-route/rt:output/rt:route" | |||
| container igp-ldp-sync { | { | |||
| if-feature igp-ldp-sync; | uses route-content; | |||
| leaf enabled { | description "ISIS-specific route attributes."; | |||
| type boolean; | } | |||
| description | ||||
| "Enable/disable IGP LDP sync."; | ||||
| } | ||||
| description | ||||
| "IGP-LDP sync configuration."; | ||||
| } | ||||
| description | ||||
| "Container for MPLS specific configuration | ||||
| for ISIS."; | ||||
| } | ||||
| description | ||||
| "List of ISIS interfaces."; | ||||
| } | ||||
| description | augment "/if:interfaces/if:interface" | |||
| "This container defines ISIS interface specific | { | |||
| configuration objects."; | leaf clns-mtu { | |||
| } | type uint16; | |||
| description | ||||
| "List of ISIS instances."; | ||||
| } | ||||
| description | description | |||
| "This container defines ISIS specific configuration | "Defines CLNS MTU of the interface."; | |||
| objects."; | } | |||
| description "ISO interface config."; | ||||
| } | } | |||
| } | ||||
| augment "/rt:routing-state/rt:routing-instance/" | augment "/rt:routing/rt:routing-instance/rt:routing-protocols/" | |||
| +"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 routing protocol instance states with ISIS | "This augments a routing protocol instance with ISIS | |||
| specific parameters."; | specific parameters."; | |||
| container isis { | container isis { | |||
| config false; | ||||
| list instance { | ||||
| key routing-instance; | must "count(area-address) > 0" { | |||
| error-message "At least one area-address | ||||
| leaf routing-instance { | must be configured."; | |||
| type rt:routing-instance-ref; | description | |||
| description | "Enforce configuration of at least one area."; | |||
| "Reference routing instance. | ||||
| For protocol centric model, which is | ||||
| supported in | ||||
| default-instance only, this could reference | ||||
| any VRF routing-instance. | ||||
| For VRF centric model, must reference the | ||||
| enclosing routing-instance."; | ||||
| } | } | |||
| container fast-reroute { | ||||
| if-feature fast-reroute; | ||||
| container protected-routes { | ||||
| list af-stats { | ||||
| key "af prefix alternate"; | ||||
| leaf af { | uses isis-global-cfg; | |||
| type identityref { | ||||
| base rt:address-family; | ||||
| } | ||||
| description | ||||
| "Address-family"; | ||||
| } | ||||
| leaf prefix { | ||||
| type string; | ||||
| description | ||||
| "Protected prefix."; | ||||
| } | ||||
| leaf alternate { | ||||
| type string; | ||||
| description | ||||
| "Alternate nexthop for the prefix."; | ||||
| } | ||||
| leaf alternate-type { | ||||
| type enumeration { | ||||
| enum equalcost { | ||||
| description | ||||
| "ECMP alternate."; | ||||
| } | ||||
| enum lfa { | ||||
| description | ||||
| "LFA alternate."; | ||||
| } | ||||
| enum remote-lfa { | ||||
| description | ||||
| "Remote LFA alternate."; | ||||
| } | ||||
| enum tunnel { | ||||
| description | ||||
| "Tunnel based alternate | ||||
| (like RSVP-TE or GRE)."; | ||||
| } | ||||
| enum ti-lfa { | ||||
| description | ||||
| "TI LFA alternate."; | ||||
| } | ||||
| enum mrt { | ||||
| description | ||||
| "MRT alternate."; | ||||
| } | ||||
| enum other { | ||||
| description | ||||
| "Unknown alternate type."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Type of alternate."; | ||||
| } | ||||
| leaf best { | ||||
| type boolean; | ||||
| description | ||||
| "describes if the alternate is the best one."; | ||||
| } | container fast-reroute { | |||
| leaf non-best-reason { | if-feature fast-reroute; | |||
| type string; | uses fast-reroute-global-cfg; | |||
| description | description | |||
| "Information field to describe why the alternate | "IPFRR."; | |||
| is not best."; | } | |||
| } | list topologies { | |||
| leaf protection-available { | if-feature multi-topology; | |||
| type bits { | ||||
| bit nodeprotect { | ||||
| position 0; | ||||
| description | ||||
| "Node protection available."; | ||||
| } | ||||
| bit linkprotect { | ||||
| position 1; | ||||
| description | ||||
| "Link protection available."; | ||||
| } | ||||
| bit srlgprotect { | ||||
| position 2; | ||||
| description | ||||
| "SRLG protection available."; | ||||
| } | ||||
| bit downstreamprotect { | ||||
| position 3; | ||||
| description | ||||
| "Downstream protection available."; | ||||
| } | ||||
| bit other { | ||||
| position 4; | ||||
| description | ||||
| "Other protection available."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Describes protection provided by the alternate."; | ||||
| } | ||||
| leaf alternate-metric1 { | ||||
| type uint32; | ||||
| description | ||||
| "Metric from PLR to destination | ||||
| through the alternate path."; | ||||
| } | ||||
| leaf alternate-metric2 { | ||||
| type uint32; | ||||
| description | ||||
| "Metric from PLR to the alternate node"; | ||||
| } | key "name"; | |||
| leaf alternate-metric3 { | ||||
| type uint32; | ||||
| description | ||||
| "Metric from alternate node to the destination"; | ||||
| } | ||||
| description | leaf enable { | |||
| "Per AF statistics."; | type boolean; | |||
| } | ||||
| description | description | |||
| "List of prefixes that are protected."; | "Control enabling of topologies"; | |||
| } | ||||
| leaf name { | ||||
| type rt:rib-ref; | ||||
| description "RIB"; | ||||
| } | } | |||
| container nonprotected-routes { | uses isis-global-topologies-cfg; | |||
| list af-stats { | container fast-reroute { | |||
| key "af prefix"; | if-feature fast-reroute; | |||
| uses fast-reroute-global-cfg; | ||||
| leaf af { | description | |||
| type identityref { | "IPFRR."; | |||
| base rt:address-family; | ||||
| } | ||||
| description | ||||
| "Address-family"; | ||||
| } | ||||
| leaf prefix { | ||||
| type string; | ||||
| description | ||||
| "Protected prefix."; | ||||
| } | ||||
| description | ||||
| "Per AF statistics."; | ||||
| } | ||||
| description | ||||
| "List of prefixes that are not protected."; | ||||
| } | } | |||
| list interfaces { | description | |||
| key interface; | "List of topologies"; | |||
| leaf interface { | } | |||
| type string; | ||||
| description | ||||
| "This leaf describes the name | ||||
| of the interface."; | ||||
| } | ||||
| leaf protection-enabled { | container interfaces { | |||
| type boolean; | list interface { | |||
| description | key "name"; | |||
| "This leaf describes if protection | leaf name { | |||
| is requested for the interface."; | type if:interface-ref; | |||
| } | ||||
| leaf candidate-disabled { | ||||
| type boolean; | ||||
| description | description | |||
| "This leaf describes if interface | "Reference to the interface within | |||
| is prevented to be used as backup."; | the routing-instance."; | |||
| } | } | |||
| uses isis-if-cfg; | ||||
| container fast-reroute { | ||||
| if-feature fast-reroute; | ||||
| uses fast-reroute-if-cfg; | ||||
| description | description | |||
| "Interface fast reroute state."; | "IPFRR."; | |||
| } | } | |||
| list protection-statistics { | list topologies { | |||
| key frr-protection-method; | key name; | |||
| leaf frr-protection-method { | ||||
| type string; | ||||
| description | ||||
| "Protection method used."; | ||||
| } | ||||
| list af-stats { | ||||
| key af; | ||||
| leaf af { | leaf name { | |||
| type identityref { | type rt:rib-ref; | |||
| base rt:address-family; | ||||
| } | ||||
| description | ||||
| "Address-family"; | ||||
| } | ||||
| leaf total-routes { | ||||
| type uint32; | ||||
| description | ||||
| "Total prefixes."; | ||||
| } | ||||
| leaf unprotected-routes { | ||||
| type uint32; | ||||
| description | description | |||
| "Total of prefixes who are | "Name of RIB."; | |||
| not protected."; | ||||
| } | } | |||
| leaf protected-routes { | container fast-reroute { | |||
| type uint32; | if-feature fast-reroute; | |||
| uses fast-reroute-if-cfg; | ||||
| description | description | |||
| "Total of prefixes who are | "IPFRR."; | |||
| protected."; | ||||
| } | } | |||
| leaf linkprotected-routes { | uses isis-if-topologies-cfg; | |||
| type uint32; | ||||
| description | ||||
| "Total of prefixes who are | ||||
| link protected."; | ||||
| } | ||||
| leaf nodeprotected-routes { | ||||
| type uint32; | ||||
| description | ||||
| "Total of prefixes who are | ||||
| node protected."; | ||||
| } | ||||
| description | description | |||
| "Per AF statistics."; | "List of topologies."; | |||
| } | } | |||
| description | ||||
| "List of ISIS interfaces."; | ||||
| } | ||||
| description | ||||
| "This container defines ISIS interface specific | ||||
| configuration objects."; | ||||
| } | ||||
| description | ||||
| "This container defines ISIS specific configuration | ||||
| objects."; | ||||
| } | ||||
| } | ||||
| augment "/rt:routing-state/rt:routing-instance/" | ||||
| +"rt:routing-protocols/rt:routing-protocol" { | ||||
| when "rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment is only valid when routing protocol | ||||
| instance type is isis."; | ||||
| } | ||||
| description | ||||
| "This augments routing protocol instance states with ISIS | ||||
| specific parameters."; | ||||
| container isis { | ||||
| config false; | ||||
| uses isis-global-cfg; | ||||
| container fast-reroute { | ||||
| if-feature fast-reroute; | ||||
| uses fast-reroute-global-cfg; | ||||
| uses fast-reroute-global-state; | ||||
| description | ||||
| "IPFRR states."; | ||||
| } | ||||
| list topologies { | ||||
| key name; | ||||
| leaf name { | ||||
| type rt:rib-ref; | ||||
| description | description | |||
| "Global protection statistics."; | "Name of RIB."; | |||
| } | ||||
| container fast-route { | ||||
| if-feature fast-reroute; | ||||
| uses fast-reroute-global-cfg; | ||||
| uses fast-reroute-global-state; | ||||
| description | ||||
| "IPFRR states."; | ||||
| } | } | |||
| description | description | |||
| "IPFRR states."; | "List of topologies."; | |||
| } | } | |||
| container system-counters { | container system-counters { | |||
| list level { | list level { | |||
| key level; | key level; | |||
| leaf level { | leaf level { | |||
| type level-number; | type level-number; | |||
| description | description | |||
| "This leaf describes the ISIS level."; | "This leaf describes the ISIS level."; | |||
| skipping to change at page 85, line 16 ¶ | skipping to change at page 73, line 4 ¶ | |||
| "Number of LSPs with errors we have | "Number of LSPs with errors we have | |||
| received."; | received."; | |||
| } | } | |||
| leaf spf-runs { | leaf spf-runs { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Number of times we ran SPF at this level."; | "Number of times we ran SPF at this level."; | |||
| } | } | |||
| description | description | |||
| "List of supported levels."; | "List of supported levels."; | |||
| } | } | |||
| description | description | |||
| "The container defines a list of counters | "The container defines a list of counters | |||
| for the IS."; | for the IS."; | |||
| } | } | |||
| container interfaces { | container interfaces { | |||
| list interfaces { | list interface { | |||
| key interface; | key interface; | |||
| leaf interface { | leaf interface { | |||
| type string; | type string; | |||
| description | description | |||
| "This leaf describes the name | "This leaf describes the name | |||
| of the interface."; | of the interface."; | |||
| } | } | |||
| container status { | uses isis-if-cfg; | |||
| leaf circuit-id { | container fast-reroute { | |||
| type circuit-id; | if-feature fast-reroute; | |||
| description | uses fast-reroute-if-cfg; | |||
| "This leaf describes the circuit-id | description | |||
| associated with the interface."; | "IPFRR."; | |||
| } | } | |||
| leaf admin-state { | uses adjacency-state; | |||
| type admin-state; | ||||
| description | ||||
| "This leaf describes the admin state | ||||
| of the interface."; | ||||
| } | ||||
| leaf oper-state { | ||||
| type oper-state; | ||||
| description | ||||
| "This leaf describes the operational state | ||||
| of the interface."; | ||||
| } | ||||
| leaf interface-type { | ||||
| type interface-type; | ||||
| description | ||||
| "Type of interface to be used."; | ||||
| } | ||||
| leaf passive { | ||||
| type empty; | ||||
| description | ||||
| "The interface is included in LSP, but | ||||
| does not run ISIS protocol."; | ||||
| } | ||||
| leaf three-way-handshake { | ||||
| type boolean; | ||||
| description | ||||
| "The interface uses 3-way handshake."; | ||||
| } | ||||
| leaf mesh-group-enabled { | ||||
| type mesh-group-state; | ||||
| description | ||||
| "Mesh group status."; | ||||
| } | ||||
| leaf mesh-group { | ||||
| type uint8; | ||||
| description | ||||
| "Mesh group value."; | ||||
| } | ||||
| list level { | ||||
| key level; | ||||
| leaf level { | list topologies { | |||
| type level; | key name; | |||
| description | ||||
| "Level associated with the interface."; | ||||
| } | ||||
| leaf priority { | ||||
| type uint8; | ||||
| description | ||||
| "Priority for becoming the LAN DIS."; | ||||
| } | ||||
| leaf hello-multiplier { | ||||
| type uint16; | ||||
| description | ||||
| "Hello multiplier."; | ||||
| } | ||||
| leaf hello-interval { | ||||
| type uint16; | ||||
| description | ||||
| "Hello interval in msec."; | ||||
| } | ||||
| leaf dr-hello-interval { | ||||
| type uint32; | ||||
| description | ||||
| "Hello interval used by DIS in msec."; | ||||
| } | ||||
| leaf metric { | leaf name { | |||
| type empty; | type rt:rib-ref; | |||
| description | ||||
| "The interface is included in LSP, but | ||||
| does not run ISIS protocol."; | ||||
| } | ||||
| description | description | |||
| "Per level states."; | "Name of RIB."; | |||
| } | } | |||
| uses isis-if-topologies-cfg; | ||||
| container fast-reroute { | ||||
| if-feature fast-reroute; | ||||
| uses fast-reroute-if-cfg; | ||||
| description | ||||
| "IPFRR."; | ||||
| } | ||||
| uses adjacency-state; | ||||
| description | description | |||
| "Provides ISIS interface status parameters."; | "List of topologies."; | |||
| } | } | |||
| container event-counters { | container event-counters { | |||
| leaf adjacency-changes { | leaf adjacency-changes { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The number of times an adjacency state | "The number of times an adjacency state | |||
| change has occured on this interface."; | change has occured on this interface."; | |||
| } | } | |||
| leaf adjacency-number { | leaf adjacency-number { | |||
| type uint32; | type uint32; | |||
| skipping to change at page 91, line 17 ¶ | skipping to change at page 77, line 47 ¶ | |||
| description | description | |||
| "Provides packet counters per level."; | "Provides packet counters per level."; | |||
| } | } | |||
| description | description | |||
| "List of interfaces."; | "List of interfaces."; | |||
| } | } | |||
| description | description | |||
| "The container defines operational parameters | "The container defines operational parameters | |||
| of interfaces."; | of interfaces."; | |||
| } | } | |||
| container adjacencies { | ||||
| list adjacency { | ||||
| leaf interface { | ||||
| type string; | ||||
| description | ||||
| "This leaf describes the name | ||||
| of the interface."; | ||||
| } | ||||
| leaf neighbor-systype { | ||||
| type level; | ||||
| description | ||||
| "Type of neighboring system"; | ||||
| } | ||||
| leaf neighbor-sysid { | ||||
| type system-id; | ||||
| description | ||||
| "The system-id of the neighbor"; | ||||
| } | ||||
| leaf neighbor-extended-circuit-id { | ||||
| type extended-circuit-id; | ||||
| description | ||||
| "Circuit ID of the neighbor"; | ||||
| } | ||||
| leaf neighbor-snpa { | ||||
| type snpa; | ||||
| description | ||||
| "SNPA of the neighbor"; | ||||
| } | ||||
| leaf usage { | ||||
| type level; | ||||
| description | ||||
| "How is the adjacency used ? | ||||
| On a p2p link this might be level 1 and 2, | ||||
| but on a LAN, the usage will be level 1 | ||||
| between peers at L1 or level 2 between | ||||
| peers at L2."; | ||||
| } | ||||
| leaf hold-timer { | ||||
| type uint16; | ||||
| description | ||||
| "The holding time in seconds for this | ||||
| adjacency. This value is based on | ||||
| received hello PDUs and the elapsed | ||||
| time since receipt."; | ||||
| } | ||||
| leaf neighbor-priority { | ||||
| type uint8 { | ||||
| range "0 .. 127"; | ||||
| } | ||||
| description | ||||
| "Priority of the neighboring IS for becoming | ||||
| the DIS."; | ||||
| } | ||||
| leaf lastuptime { | ||||
| type yang:timestamp; | ||||
| description | ||||
| "When the adjacency most recently entered | ||||
| state 'up', measured in hundredths of a | ||||
| second since the last reinitialization of | ||||
| the network management subsystem. | ||||
| The value is 0 if the adjacency has never | ||||
| been in state 'up'."; | ||||
| } | ||||
| leaf state { | ||||
| type enumeration { | ||||
| enum "Up" { | ||||
| description | ||||
| "This state describes that | ||||
| adjacency is established."; | ||||
| } | ||||
| enum "Down" { | ||||
| description | ||||
| "This state describes that | ||||
| adjacency is NOT established."; | ||||
| } | ||||
| enum "Init" { | ||||
| description | ||||
| "This state describes that | ||||
| adjacency is establishing."; | ||||
| } | ||||
| enum "Failed" { | ||||
| description | ||||
| "This state describes that | ||||
| adjacency is failed."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "This leaf describes the state of the | ||||
| interface."; | ||||
| } | ||||
| list adjacency-sid { | ||||
| if-feature segment-routing; | ||||
| key value; | ||||
| leaf af { | ||||
| type identityref { | ||||
| base rt:address-family; | ||||
| } | ||||
| description | ||||
| "Address-family associated with the | ||||
| segment ID"; | ||||
| } | ||||
| leaf value { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the Adj-SID."; | ||||
| } | ||||
| leaf weight { | ||||
| type uint8; | ||||
| description | ||||
| "Weight associated with | ||||
| the adjacency SID."; | ||||
| } | ||||
| leaf protection-requested { | ||||
| type boolean; | ||||
| description | ||||
| "Describe if the adjacency SID | ||||
| must be protected."; | ||||
| } | ||||
| description | ||||
| "List of adjacency Segment IDs."; | ||||
| } | ||||
| description | ||||
| "List of operational adjacencies."; | ||||
| } | ||||
| description | ||||
| "This container lists the adjacencies of | ||||
| the local node."; | ||||
| } | ||||
| container spf-log { | container spf-log { | |||
| list event { | list event { | |||
| key id; | key id; | |||
| leaf id { | leaf id { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "This leaf defines the event identifier. | "This leaf defines the event identifier. | |||
| This is a purely internal value."; | This is a purely internal value."; | |||
| } | } | |||
| skipping to change at page 99, line 9 ¶ | skipping to change at page 83, line 4 ¶ | |||
| list hostname { | list hostname { | |||
| key system-id; | key system-id; | |||
| leaf system-id { | leaf system-id { | |||
| type system-id; | type system-id; | |||
| description | description | |||
| "This leaf describes the system-id | "This leaf describes the system-id | |||
| associated with the hostname."; | associated with the hostname."; | |||
| } | } | |||
| leaf hostname { | leaf hostname { | |||
| type string; | type string; | |||
| description | description | |||
| "This leaf describes the hostname | "This leaf describes the hostname | |||
| associated with the system ID."; | associated with the system ID."; | |||
| } | } | |||
| description | description | |||
| "List of system-id/hostname associations"; | "List of system-id/hostname associations"; | |||
| } | } | |||
| description | description | |||
| "This container describes the list | "This container describes the list | |||
| of binding between system-id and | of binding between system-id and | |||
| hostnames."; | hostnames."; | |||
| } | } | |||
| description | ||||
| "List of ISIS instances."; | ||||
| } | ||||
| description | description | |||
| "This container defines various ISIS states objects."; | "This container defines various ISIS states objects."; | |||
| } | } | |||
| } | } | |||
| /* RPC methods */ | /* RPC methods */ | |||
| rpc clear-adjacency { | rpc clear-adjacency { | |||
| description | description | |||
| "This RPC request clears a particular | "This RPC request clears a particular | |||
| skipping to change at page 110, line 46 ¶ | skipping to change at page 94, line 35 ¶ | |||
| "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> | |||
| 7. Security Considerations | 8. ISIS Segment Routing YANG Module | |||
| <CODE BEGINS> file "ietf-isis-sr@2015-06-23.yang" | ||||
| module ietf-isis-sr { | ||||
| namespace "urn:ietf:params:xml:ns:" | ||||
| + "yang:ietf-isis-sr"; | ||||
| prefix isis-sr; | ||||
| import ietf-inet-types { | ||||
| prefix "inet"; | ||||
| } | ||||
| import ietf-routing { | ||||
| prefix "rt"; | ||||
| } | ||||
| import ietf-interfaces { | ||||
| prefix "if"; | ||||
| } | ||||
| import ietf-segment-routing { | ||||
| prefix "sr"; | ||||
| } | ||||
| import ietf-isis { | ||||
| prefix "isis"; | ||||
| } | ||||
| organization | ||||
| "IETF ISIS Working Group"; | ||||
| contact | ||||
| "WG List: <mailto:spring@ietf.org> | ||||
| Editor: Stephane Litkowski | ||||
| <mailto:stephane.litkowski@orange.com> | ||||
| Acee Lindem | ||||
| <mailto:acee@cisco.com> | ||||
| Yingzhen Qu | ||||
| <mailto:yiqu@cisco.com> | ||||
| Pushpasis Sarkar | ||||
| <mailto:psarkar@juniper.net> | ||||
| Ing-Wher Chen | ||||
| <mailto:ing-wher.chen@ericsson.com> | ||||
| Jeff Tantsura | ||||
| <mailto:jeff.tantsura@ericsson.com> | ||||
| "; | ||||
| description | ||||
| "The YANG module defines a generic configuration model for | ||||
| Segment routing ISIS extensions common across all of the vendor | ||||
| implementations."; | ||||
| revision 2015-05-27 { | ||||
| description " | ||||
| * Initialization | ||||
| "; | ||||
| reference ""; | ||||
| } | ||||
| /* Identities */ | ||||
| /* Features */ | ||||
| /* Groupings */ | ||||
| grouping adjacency-state { | ||||
| description | ||||
| "This group will extend adjacency state."; | ||||
| list adjacency-sid { | ||||
| key value; | ||||
| leaf af { | ||||
| type identityref { | ||||
| base rt:address-family; | ||||
| } | ||||
| description | ||||
| "Address-family associated with the | ||||
| segment ID"; | ||||
| } | ||||
| leaf value { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the Adj-SID."; | ||||
| } | ||||
| leaf weight { | ||||
| type uint8; | ||||
| description | ||||
| "Weight associated with | ||||
| the adjacency SID."; | ||||
| } | ||||
| leaf protection-requested { | ||||
| type boolean; | ||||
| description | ||||
| "Describe if the adjacency SID | ||||
| must be protected."; | ||||
| } | ||||
| description | ||||
| "List of adjacency Segment IDs."; | ||||
| } | ||||
| } | ||||
| grouping prefix-segment-id { | ||||
| description | ||||
| "This group defines segment routing extensions | ||||
| for prefixes."; | ||||
| list sid-list { | ||||
| key value; | ||||
| leaf flags { | ||||
| type bits { | ||||
| bit readvertisment { | ||||
| position 7; | ||||
| description | ||||
| "If set, then the prefix to | ||||
| which this Prefix-SID is attached, | ||||
| has been propagated by the | ||||
| router either from another level | ||||
| or from redistribution."; | ||||
| } | ||||
| bit php { | ||||
| position 5; | ||||
| description | ||||
| "If set, then the penultimate hop MUST NOT | ||||
| pop the Prefix-SID before delivering the packet | ||||
| to the node | ||||
| that advertised the Prefix-SID."; | ||||
| } | ||||
| bit explicit-null { | ||||
| position 4; | ||||
| description | ||||
| "If set, any upstream neighbor of | ||||
| the Prefix-SID originator MUST replace | ||||
| the Prefix-SID with a | ||||
| Prefix-SID having an | ||||
| Explicit-NULL value (0 for IPv4 and 2 for | ||||
| IPv6) before forwarding the packet."; | ||||
| } | ||||
| bit value { | ||||
| position 3; | ||||
| description | ||||
| "If set, then the Prefix-SID carries a | ||||
| value (instead of an index). | ||||
| By default the flag is UNSET."; | ||||
| } | ||||
| bit local { | ||||
| position 2; | ||||
| description | ||||
| "If set, then the value/index carried by | ||||
| the Prefix-SID has local significance. | ||||
| By default the flag is UNSET."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Describes flags associated with the | ||||
| segment ID."; | ||||
| } | ||||
| leaf algorithm { | ||||
| type uint8; | ||||
| description | ||||
| "Algorithm to be used for path computation."; | ||||
| } | ||||
| leaf value { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the prefix-SID."; | ||||
| } | ||||
| description | ||||
| "List of segments."; | ||||
| } | ||||
| } | ||||
| grouping adjacency-segment-id { | ||||
| description | ||||
| "This group defines segment routing extensions | ||||
| for adjacencies."; | ||||
| list sid-list { | ||||
| key value; | ||||
| leaf flags { | ||||
| type bits { | ||||
| bit address-family { | ||||
| position 7; | ||||
| description | ||||
| "If unset, then the Adj-SID refers | ||||
| to an adjacency with outgoing IPv4 encapsulation. | ||||
| If set then the Adj-SID refers to an adjacency | ||||
| with outgoing IPv6 encapsulation."; | ||||
| } | ||||
| bit backup { | ||||
| position 6; | ||||
| description | ||||
| "If set, the Adj-SID refers to an | ||||
| adjacency being protected | ||||
| (e.g.: using IPFRR or MPLS-FRR)"; | ||||
| } | ||||
| bit value { | ||||
| position 5; | ||||
| description | ||||
| "If set, then the SID carries a | ||||
| value (instead of an index). | ||||
| By default the flag is SET."; | ||||
| } | ||||
| bit local { | ||||
| position 4; | ||||
| description | ||||
| "If set, then the value/index carried by | ||||
| the SID has local significance. | ||||
| By default the flag is SET."; | ||||
| } | ||||
| bit set { | ||||
| position 3; | ||||
| description | ||||
| "When set, the S-Flag indicates that the | ||||
| Adj-SID refers to a set of adjacencies"; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Describes flags associated with the | ||||
| segment ID."; | ||||
| } | ||||
| leaf weight { | ||||
| type uint8; | ||||
| description | ||||
| "The value represents the weight of the Adj-SID | ||||
| for the purpose of load balancing."; | ||||
| } | ||||
| leaf neighbor-id { | ||||
| type isis:system-id; | ||||
| description | ||||
| "Describes the system ID of the neighbor | ||||
| associated with the SID value. This is only | ||||
| used on LAN adjacencies."; | ||||
| } | ||||
| leaf value { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the Adj-SID."; | ||||
| } | ||||
| description | ||||
| "List of segments."; | ||||
| } | ||||
| } | ||||
| grouping segment-routing-binding-tlv { | ||||
| list segment-routing-bindings { | ||||
| key "fec range"; | ||||
| leaf fec { | ||||
| type string; | ||||
| description | ||||
| "IP (v4 or v6) range to be bound to SIDs."; | ||||
| } | ||||
| leaf range { | ||||
| type uint16; | ||||
| description | ||||
| "Describes number of elements to assign | ||||
| a binding to."; | ||||
| } | ||||
| leaf flags { | ||||
| type bits { | ||||
| bit address-family { | ||||
| position 7; | ||||
| description | ||||
| "If unset, then the Prefix FEC | ||||
| carries an IPv4 Prefix. | ||||
| If set then the Prefix FEC carries an | ||||
| IPv6 Prefix."; | ||||
| } | ||||
| bit mirror { | ||||
| position 6; | ||||
| description | ||||
| "Set if the advertised SID/path | ||||
| corresponds to a mirrored context. | ||||
| "; | ||||
| } | ||||
| bit flooding { | ||||
| position 5; | ||||
| description | ||||
| "If the S bit is set(1), | ||||
| the IS-IS Router CAPABILITY TLV | ||||
| MUST be flooded across the entire routing domain. | ||||
| If the S bit is | ||||
| not set(0), the TLV MUST NOT be leaked between levels. | ||||
| This bit MUST NOT be altered during the TLV leaking."; | ||||
| } | ||||
| bit down { | ||||
| position 4; | ||||
| description | ||||
| "When the IS-IS Router CAPABILITY TLV is | ||||
| leaked from level-2 to level-1, the D bit | ||||
| MUST be set. Otherwise, this bit MUST | ||||
| be clear. IS-IS Router capability TLVs | ||||
| with the D bit set MUST NOT | ||||
| be leaked from level-1 to level-2. | ||||
| This is to prevent TLV looping. | ||||
| "; | ||||
| } | ||||
| bit attached { | ||||
| position 3; | ||||
| description | ||||
| "The originator of the SID/Label Binding | ||||
| TLV MAY set the A bit in order to signal | ||||
| that the prefixes and | ||||
| SIDs advertised in the SID/Label Binding | ||||
| TLV are directly | ||||
| connected to their originators. | ||||
| "; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Flags of the binding."; | ||||
| } | ||||
| leaf weight { | ||||
| type uint8; | ||||
| description | ||||
| "Weight of the path for loadbalancing purpose."; | ||||
| } | ||||
| list binding { | ||||
| container prefix-sid { | ||||
| uses prefix-segment-id; | ||||
| description | ||||
| "Binding prefix SID to the range."; | ||||
| } | ||||
| leaf ero-metric { | ||||
| type uint32; | ||||
| description | ||||
| "Cost of ERO path."; | ||||
| } | ||||
| container ero { | ||||
| leaf address-family { | ||||
| type identityref { | ||||
| base rt:address-family; | ||||
| } | ||||
| description | ||||
| "Address-family."; | ||||
| } | ||||
| leaf loose { | ||||
| type boolean; | ||||
| description | ||||
| "Set to true, | ||||
| if hop is a loose hop."; | ||||
| } | ||||
| leaf address { | ||||
| type string; | ||||
| description | ||||
| "IP address of a node on the | ||||
| path."; | ||||
| } | ||||
| description | ||||
| "Binding ERO path to the range."; | ||||
| } | ||||
| container backup-ero { | ||||
| leaf address-family { | ||||
| type identityref { | ||||
| base rt:address-family; | ||||
| } | ||||
| description | ||||
| "Address-family."; | ||||
| } | ||||
| leaf loose { | ||||
| type boolean; | ||||
| description | ||||
| "Set to true, | ||||
| if hop is a loose hop."; | ||||
| } | ||||
| leaf address { | ||||
| type string; | ||||
| description | ||||
| "IP address of a node on the | ||||
| path."; | ||||
| } | ||||
| description | ||||
| "Binding backup ERO path to the range."; | ||||
| } | ||||
| container unnumbered-interface-id-ero { | ||||
| leaf router-id { | ||||
| type string; | ||||
| description | ||||
| "Router ID of the node owning the interface."; | ||||
| } | ||||
| leaf interface-id { | ||||
| type uint32; | ||||
| description | ||||
| "Interface ID on which the path is built."; | ||||
| } | ||||
| description | ||||
| "Binding a path over unnumbered interface."; | ||||
| } | ||||
| container backup-unnumbered-interface-id-ero { | ||||
| leaf router-id { | ||||
| type string; | ||||
| description | ||||
| "Router ID of the node owning the interface."; | ||||
| } | ||||
| leaf interface-id { | ||||
| type uint32; | ||||
| description | ||||
| "Interface ID on which the path is built."; | ||||
| } | ||||
| description | ||||
| "Binding a backup path over unnumbered interface."; | ||||
| } | ||||
| description | ||||
| "Bindings associated with the range."; | ||||
| } | ||||
| description | ||||
| "This container describes list of SID/Label | ||||
| bindings. | ||||
| ISIS reference is TLV 149."; | ||||
| } | ||||
| description | ||||
| "Defines binding TLV for database."; | ||||
| } | ||||
| /* Cfg */ | ||||
| augment "/rt:routing/rt:routing-instance/" + | ||||
| "rt:routing-protocols/rt:routing-protocol"+ | ||||
| "/isis:isis" { | ||||
| when "rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol configuration | ||||
| with segment routing."; | ||||
| uses sr:controlplane-cfg; | ||||
| } | ||||
| 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 augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol configuration | ||||
| with segment routing."; | ||||
| uses sr:igp-interface-cfg; | ||||
| } | ||||
| /* Operational states */ | ||||
| augment "/rt:routing-state/rt:routing-instance/" + | ||||
| "rt:routing-protocols/rt:routing-protocol"+ | ||||
| "/isis:isis" { | ||||
| when "rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol configuration | ||||
| with segment routing."; | ||||
| uses sr:controlplane-cfg; | ||||
| } | ||||
| 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 augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol configuration | ||||
| with segment routing."; | ||||
| uses sr:igp-interface-cfg; | ||||
| } | ||||
| augment "/rt:routing-state/rt:routing-instance/" + | ||||
| "rt:routing-protocols/rt:routing-protocol"+ | ||||
| "/isis:isis/isis:interfaces/isis:interface" + | ||||
| "/isis:adjacencies/isis:adjacency" { | ||||
| when "rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol configuration | ||||
| with segment routing."; | ||||
| uses adjacency-state; | ||||
| } | ||||
| augment "/rt:routing-state/rt:routing-instance/" + | ||||
| "rt:routing-protocols/rt:routing-protocol"+ | ||||
| "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | ||||
| "/isis:extended-is-neighbor/isis:neighbor" { | ||||
| description | ||||
| "This augments ISIS protocol LSDB neighbor."; | ||||
| uses adjacency-segment-id; | ||||
| } | ||||
| augment "/rt:routing-state/rt:routing-instance/" + | ||||
| "rt:routing-protocols/rt:routing-protocol"+ | ||||
| "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | ||||
| "/isis:mt-is-neighbor/isis:neighbor" { | ||||
| description | ||||
| "This augments ISIS protocol LSDB neighbor."; | ||||
| uses adjacency-segment-id; | ||||
| } | ||||
| augment "/rt:routing-state/rt:routing-instance/" + | ||||
| "rt:routing-protocols/rt:routing-protocol"+ | ||||
| "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | ||||
| "/isis:extended-ipv4-reachability/isis:prefixes" { | ||||
| description | ||||
| "This augments ISIS protocol LSDB prefix."; | ||||
| uses prefix-segment-id; | ||||
| } | ||||
| augment "/rt:routing-state/rt:routing-instance/" + | ||||
| "rt:routing-protocols/rt:routing-protocol"+ | ||||
| "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | ||||
| "/isis:mt-extended-ipv4-reachability/isis:prefixes" { | ||||
| description | ||||
| "This augments ISIS protocol LSDB prefix."; | ||||
| uses prefix-segment-id; | ||||
| } | ||||
| augment "/rt:routing-state/rt:routing-instance/" + | ||||
| "rt:routing-protocols/rt:routing-protocol"+ | ||||
| "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | ||||
| "/isis:ipv6-reachability/isis:prefixes" { | ||||
| description | ||||
| "This augments ISIS protocol LSDB prefix."; | ||||
| uses prefix-segment-id; | ||||
| } | ||||
| augment "/rt:routing-state/rt:routing-instance/" + | ||||
| "rt:routing-protocols/rt:routing-protocol"+ | ||||
| "/isis:isis/isis:database/isis:level-db/isis:lsp"+ | ||||
| "/isis:mt-ipv6-reachability/isis:prefixes" { | ||||
| description | ||||
| "This augments ISIS protocol LSDB prefix."; | ||||
| uses prefix-segment-id; | ||||
| } | ||||
| augment "/rt:routing-state/rt:routing-instance/" + | ||||
| "rt:routing-protocols/rt:routing-protocol"+ | ||||
| "/isis:isis/isis:database/isis:level-db/isis:lsp" { | ||||
| description | ||||
| "This augments ISIS protocol LSDB."; | ||||
| uses segment-routing-binding-tlv; | ||||
| } | ||||
| /* Notifications */ | ||||
| } | ||||
| <CODE ENDS> | ||||
| 9. 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 ISIS is an IGP protocol (critical piece of the network), ensuring | As ISIS 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 111, line 45 ¶ | skipping to change at page 107, line 45 ¶ | |||
| 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 ISIS using the NETCONF protocol, | configuration. When configuring ISIS 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]). | |||
| 8. 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. | |||
| 9. Acknowledgements | 11. Acknowledgements | |||
| TBD. | TBD. | |||
| 10. IANA Considerations | 12. IANA Considerations | |||
| TBD. | TBD. | |||
| 11. Normative References | 13. Normative References | |||
| [I-D.ietf-netmod-routing-cfg] | [I-D.ietf-netmod-routing-cfg] | |||
| Lhotka, L., "A YANG Data Model for Routing Management", | Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | |||
| draft-ietf-netmod-routing-cfg-16 (work in progress), | Management", draft-ietf-netmod-routing-cfg-19 (work in | |||
| October 2014. | progress), May 2015. | |||
| [I-D.litkowski-spring-sr-yang] | ||||
| Litkowski, S., Lindem, A., Sarkar, P., and H. Chen, "YANG | ||||
| Data Model for Segment Routing", draft-litkowski-spring- | ||||
| sr-yang-00 (work in progress), March 2015. | ||||
| [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, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the | ||||
| Network Configuration Protocol (NETCONF)", RFC 6020, | ||||
| October 2010. | ||||
| [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. | [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. | |||
| Bierman, "Network Configuration Protocol (NETCONF)", RFC | Bierman, "Network Configuration Protocol (NETCONF)", RFC | |||
| 6241, June 2011. | 6241, June 2011. | |||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
| Shell (SSH)", RFC 6242, June 2011. | Shell (SSH)", RFC 6242, June 2011. | |||
| [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | |||
| Protocol (NETCONF) Access Control Model", RFC 6536, March | Protocol (NETCONF) Access Control Model", RFC 6536, March | |||
| 2012. | 2012. | |||
| 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> | <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> | |||
| <interface> | <interface> | |||
| <name>Loopback0</name> | <name>Loopback0</name> | |||
| </interface> | </interface> | |||
| <interface> | <interface> | |||
| <name>Eth1</name> | <name>Eth1</name> | |||
| </interface> | </interface> | |||
| </interfaces> | </interfaces> | |||
| <routing-protocols> | <routing-protocols> | |||
| <routing-protocol> | <routing-protocol> | |||
| <name>ISIS</name> | <name>ISIS</name> | |||
| <description/> | <description/> | |||
| <type>isis:isis</type> | <type>isis:isis</type> | |||
| <connected-ribs> | <connected-ribs> | |||
| <connected-rib> | <connected-rib> | |||
| <rib-name>default</rib-name> | <rib-name>default</rib-name> | |||
| <import-filter/> | <import-filter/> | |||
| <export-filter/> | <export-filter/> | |||
| </connected-rib> | </connected-rib> | |||
| </connected-ribs> | </connected-ribs> | |||
| <isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis"> | <isis xmlns="urn:ietf:params:xml:ns:yang:ietf-isis"> | |||
| <instance> | <instance> | |||
| <routing-instance>SLI</routing-instance> | <routing-instance>SLI</routing-instance> | |||
| <level-type>level-2</level-type> | <level-type>level-2</level-type> | |||
| <system-id>87FC.FCDF.4432</system-id> | <system-id>87FC.FCDF.4432</system-id> | |||
| <area-address>49.0001</area-address> | <area-address>49.0001</area-address> | |||
| <mpls-te> | <mpls-te> | |||
| <ipv4-router-id>1.1.1.1</ipv4-router-id> | <ipv4-router-id>1.1.1.1</ipv4-router-id> | |||
| </mpls-te> | </mpls-te> | |||
| <lsp-lifetime>65535</lsp-lifetime> | <lsp-lifetime>65535</lsp-lifetime> | |||
| <lsp-refresh>65000</lsp-refresh> | <lsp-refresh>65000</lsp-refresh> | |||
| <authentication> | <authentication> | |||
| <key>ThisIsThePassword</key> | <key>ThisIsThePassword</key> | |||
| <type>plain-text</type> | <type>plain-text</type> | |||
| <level>level-2</level> | <level>level-2</level> | |||
| </authentication> | </authentication> | |||
| <metric-type> | <metric-type> | |||
| <value>wide</value> | <value>wide</value> | |||
| </metric-type> | </metric-type> | |||
| <default-metric> | <default-metric> | |||
| <value>111111</value> | <value>111111</value> | |||
| </default-metric> | </default-metric> | |||
| <af> | <af> | |||
| <af>ipv4-unicast</af> | <af>ipv4-unicast</af> | |||
| <enabled>true</enabled> | <enabled>true</enabled> | |||
| </af> | </af> | |||
| <interfaces> | <interfaces> | |||
| <interface> | <interface> | |||
| <name>Loopback0</name> | <name>Loopback0</name> | |||
| <tag>200</tag> | <tag>200</tag> | |||
| <metric> | <metric> | |||
| <value>0</value> | <value>0</value> | |||
| </metric> | </metric> | |||
| <passive>true</passive> | <passive>true</passive> | |||
| </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> | </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> | |||
| </recipient-ribs> | </recipient-ribs> | |||
| </rib> | </rib> | |||
| </ribs> | </ribs> | |||
| <route-filters> | <route-filters> | |||
| <route-filter> | <route-filter> | |||
| <name/> | <name/> | |||
| <description/> | <description/> | |||
| <type/> | <type/> | |||
| </route-filter> | </route-filter> | |||
| </route-filters> | </route-filters> | |||
| </routing> | </routing> | |||
| <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | <interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> | |||
| <interface> | <interface> | |||
| <name>Loopback0</name> | <name>Loopback0</name> | |||
| <description/> | <description/> | |||
| <type/> | <type/> | |||
| <link-up-down-trap-enable/> | <link-up-down-trap-enable/> | |||
| <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | |||
| <mtu/> | <mtu/> | |||
| <address> | <address> | |||
| <ip>1.1.1.1</ip> | <ip>1.1.1.1</ip> | |||
| <prefix-length>32</prefix-length> | <prefix-length>32</prefix-length> | |||
| </address> | </address> | |||
| </ipv4> | </ipv4> | |||
| </interface> | </interface> | |||
| <interface> | <interface> | |||
| <name>Eth1</name> | <name>Eth1</name> | |||
| <description/> | <description/> | |||
| <type/> | <type/> | |||
| <link-up-down-trap-enable/> | <link-up-down-trap-enable/> | |||
| <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | <ipv4 xmlns="urn:ietf:params:xml:ns:yang:ietf-ip"> | |||
| <mtu/> | <mtu/> | |||
| <address> | <address> | |||
| <ip>10.0.0.1</ip> | <ip>10.0.0.1</ip> | |||
| <prefix-length>30</prefix-length> | <prefix-length>30</prefix-length> | |||
| </address> | </address> | |||
| </ipv4> | </ipv4> | |||
| </interface> | </interface> | |||
| </interfaces> | </interfaces> | |||
| </data> | </data> | |||
| Authors' Addresses | Authors' Addresses | |||
| Stephane Litkowski | Stephane Litkowski | |||
| Orange | Orange | |||
| Email: stephane.litkowski@orange.com | Email: stephane.litkowski@orange.com | |||
| Derek Yeung | Derek Yeung | |||
| Cisco Systems | Cisco Systems | |||
| End of changes. 168 change blocks. | ||||
| 2234 lines changed or deleted | 2017 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/ | ||||