| < draft-ietf-isis-yang-isis-cfg-06.txt | draft-ietf-isis-yang-isis-cfg-07.txt > | |||
|---|---|---|---|---|
| ISIS Working Group S. Litkowski | IS-IS Working Group S. Litkowski | |||
| Internet-Draft Orange | Internet-Draft Orange | |||
| Intended status: Standards Track D. Yeung | Intended status: Standards Track D. Yeung | |||
| Expires: March 21, 2016 A. Lindem | Expires: May 21, 2016 A. Lindem | |||
| Cisco Systems | Cisco Systems | |||
| J. Zhang | J. Zhang | |||
| Juniper Networks | Juniper Networks | |||
| L. Lhotka | L. Lhotka | |||
| CZ.NIC | CZ.NIC | |||
| September 18, 2015 | November 18, 2015 | |||
| YANG Data Model for ISIS protocol | YANG Data Model for IS-IS protocol | |||
| draft-ietf-isis-yang-isis-cfg-06 | draft-ietf-isis-yang-isis-cfg-07 | |||
| 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. It also defined an | and manage IS-IS protocol on network elements. It also defined an | |||
| extension module for segment routing configuration and operation. | extension module for segment routing and BFD 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 44 ¶ | skipping to change at page 1, line 45 ¶ | |||
| 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 March 21, 2016. | This Internet-Draft will expire on May 21, 2016. | |||
| 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 | |||
| skipping to change at page 2, line 25 ¶ | skipping to change at page 2, line 25 ¶ | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 | 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. ISIS Configuration . . . . . . . . . . . . . . . . . . . 10 | 2.1. IS-IS Configuration . . . . . . . . . . . . . . . . . . . 10 | |||
| 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10 | 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10 | |||
| 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 | 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 | |||
| 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 11 | 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 12 | |||
| 2.5. ISO parameters . . . . . . . . . . . . . . . . . . . . . 13 | 2.5. ISO parameters . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 2.6. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 2.6. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 2.7. Operational State . . . . . . . . . . . . . . . . . . . . 14 | 2.7. Operational State . . . . . . . . . . . . . . . . . . . . 13 | |||
| 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 14 | 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 15 | 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 5. Segment Routing . . . . . . . . . . . . . . . . . . . . . . . 19 | 5. Segment Routing . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 5.1. Segment Routing activation . . . . . . . . . . . . . . . 22 | 5.1. Segment Routing activation . . . . . . . . . . . . . . . 21 | |||
| 5.2. Advertising mapping server policy . . . . . . . . . . . . 22 | 5.2. Advertising mapping server policy . . . . . . . . . . . . 21 | |||
| 5.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 22 | 5.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 6. Interaction with Other YANG Modules . . . . . . . . . . . . . 22 | 6. BFD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 7. ISIS YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 | 7. Interaction with Other YANG Modules . . . . . . . . . . . . . 22 | |||
| 8. ISIS Segment Routing YANG Module . . . . . . . . . . . . . . 98 | 8. IS-IS YANG Module . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 111 | 9. IS-IS Segment Routing YANG Module . . . . . . . . . . . . . . 98 | |||
| 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 112 | 10. IS-IS BFD YANG Module . . . . . . . . . . . . . . . . . . . . 111 | |||
| 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 112 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 114 | |||
| 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 112 | 12. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 115 | |||
| 13. Normative References . . . . . . . . . . . . . . . . . . . . 112 | 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 115 | |||
| Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 113 | 14. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 115 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 116 | 15. Normative References . . . . . . . . . . . . . . . . . . . . 115 | |||
| Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 116 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 119 | ||||
| 1. Introduction | 1. Introduction | |||
| This document defines a YANG data model for ISIS routing protocol. | This document defines a YANG data model for IS-IS routing protocol. | |||
| The data model covers configuration of an ISIS routing protocol | The data model covers configuration of an IS-IS routing protocol | |||
| instance as well as operational states. | instance as well as operational states. | |||
| 1.1. Tree diagram | 1.1. Tree diagram | |||
| A simplified graphical representation of the data model is presented | A simplified graphical representation of the data model is presented | |||
| in Section 2. | in Section 2. | |||
| The meaning of the symbols in these diagrams is as follows: | The meaning of the symbols in these diagrams is as follows: | |||
| o Brackets "[" and "]" enclose list keys. | o Brackets "[" and "]" enclose list keys. | |||
| skipping to change at page 3, line 38 ¶ | skipping to change at page 3, line 38 ¶ | |||
| denotes a "list" or "leaf-list". | denotes a "list" or "leaf-list". | |||
| o Parentheses enclose choice and case nodes, and case nodes are also | o Parentheses enclose choice and case nodes, and case nodes are also | |||
| marked with a colon (":"). | marked with a colon (":"). | |||
| o Ellipsis ("...") stands for contents of subtrees that are not | o Ellipsis ("...") stands for contents of subtrees that are not | |||
| shown. | shown. | |||
| 2. Design of the Data Model | 2. Design of the Data Model | |||
| The ISIS YANG module is divided in two main "isis" containers that | The IS-IS YANG module is divided in two main "isis" containers that | |||
| are augmenting the "routing-protocol" lists in ietf-routing module | are augmenting the "routing-protocol" lists in ietf-routing module | |||
| with specific ISIS parameters. | with specific IS-IS parameters. | |||
| One container contains the writable parameters, while the other | One container contains the writable parameters, while the other | |||
| contains the operational states. | contains the operational states. | |||
| The figure below describe the overall structure of the isis YANG | The figure below describe the overall structure of the isis YANG | |||
| module: | module: | |||
| module: ietf-isis | module: ietf-isis | |||
| augment /rt:routing-state/rt:routing-instance/rt:ribs/rt:rib | augment /rt:routing-state/rt:routing-instance/rt:ribs/rt:rib | |||
| /rt:routes/rt:route: | /rt:routes/rt:route: | |||
| +--ro metric? uint32 | +--ro metric? uint32 | |||
| +--ro tag* uint64 | +--ro tag* uint64 | |||
| +--ro route-type? enumeration | +--ro route-type? enumeration | |||
| augment /rt:fib-route/rt:output/rt:route: | augment /rt:fib-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 | |||
| 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 | augment /rt:routing/rt:routing-instance/rt:routing-protocols | |||
| /rt:routing-protocol: | /rt:routing-protocol: | |||
| +--rw isis | +--rw isis | |||
| +--rw enable? boolean {admin-control}? | +--rw enable? boolean {admin-control}? | |||
| +--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 ipv4-router-id? inet:ipv4-address {ipv4-router-id}? | |||
| | +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | | +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | |||
| | +--rw igp-ldp-sync {igp-ldp-sync}? | | +--rw igp-ldp-sync {igp-ldp-sync}? | |||
| skipping to change at page 4, line 39 ¶ | skipping to change at page 4, line 39 ¶ | |||
| +--rw node-tag {node-tag}? | +--rw node-tag {node-tag}? | |||
| | +--rw node-tag* [tag] | | +--rw node-tag* [tag] | |||
| | ... | | ... | |||
| +--rw authentication* [level] | +--rw authentication* [level] | |||
| | +--rw (authentication-type)? | | +--rw (authentication-type)? | |||
| | | ... | | | ... | |||
| | +--rw level level | | +--rw level level | |||
| +--rw metric-type* [level] | +--rw metric-type* [level] | |||
| | +--rw value? enumeration | | +--rw value? enumeration | |||
| | +--rw level level | | +--rw level level | |||
| +--rw preference* [level] | ||||
| | +--rw (granularity)? | ||||
| | | ... | ||||
| | +--rw level level | ||||
| +--rw default-metric* [level] | +--rw default-metric* [level] | |||
| | +--rw value? wide-metric | | +--rw value? wide-metric | |||
| | +--rw level level | | +--rw level level | |||
| +--rw af* [af] {nlpid-control}? | +--rw af* [af] {nlpid-control}? | |||
| | +--rw af identityref | | +--rw af identityref | |||
| | +--rw enable? boolean | | +--rw enable? boolean | |||
| +--rw overload* [level] | +--rw preference | |||
| | +--rw status? boolean | | +--rw (granularity)? | |||
| | +--rw timeout? uint16 | | ... | |||
| | +--rw level level | +--rw overload | |||
| +--rw overload-max-metric* [level] {overload-max-metric}? | | +--rw status? boolean | |||
| | +--rw status? boolean | +--rw overload-max-metric {overload-max-metric}? | |||
| | +--rw timeout? uint16 | | +--rw timeout? uint16 | |||
| | +--rw level level | ||||
| +--rw apply-policy | +--rw apply-policy | |||
| | +--rw config | | +--rw config | |||
| | | ... | | | ... | |||
| | +--ro state | | +--ro state | |||
| | ... | | ... | |||
| +--rw fast-reroute {fast-reroute}? | +--rw fast-reroute {fast-reroute}? | |||
| | +--rw lfa {lfa}? | | +--rw lfa {lfa}? | |||
| +--rw topologies* [name] {multi-topology}? | +--rw topologies* [name] {multi-topology}? | |||
| | +--rw enable? boolean | | +--rw enable? boolean | |||
| | +--rw name leafref | | +--rw name leafref | |||
| | +--rw default-metric* [level] | | +--rw default-metric* [level] | |||
| | | ... | | | ... | |||
| | +--rw node-tag {node-tag}? | | +--rw node-tag {node-tag}? | |||
| | | ... | | | ... | |||
| | +--rw fast-reroute {fast-reroute}? | | +--rw fast-reroute {fast-reroute}? | |||
| | ... | | ... | |||
| +--rw interfaces | +--rw interfaces | |||
| +--rw interface* [name] | +--rw interface* [name] | |||
| ... | ... | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | |||
| /rt:routing-protocol: | /rt:routing-protocol: | |||
| +--ro isis | +--ro isis | |||
| +--ro enable? boolean {admin-control}? | +--ro enable? boolean {admin-control}? | |||
| +--ro level-type? level | +--ro level-type? level | |||
| +--ro system-id? system-id | +--ro system-id? system-id | |||
| +--ro maximum-area-addresses? uint8 {maximum-area-addresses}? | +--ro maximum-area-addresses? uint8 {maximum-area-addresses}? | |||
| +--ro area-address* area-address | +--ro area-address* area-address | |||
| +--ro mpls | +--ro mpls | |||
| | +--ro ipv4-router-id? inet:ipv4-address {ipv4-router-id}? | | +--ro ipv4-router-id? inet:ipv4-address {ipv4-router-id}? | |||
| | +--ro ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | | +--ro ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | |||
| | +--ro igp-ldp-sync {igp-ldp-sync}? | | +--ro igp-ldp-sync {igp-ldp-sync}? | |||
| skipping to change at page 6, line 4 ¶ | skipping to change at page 5, line 47 ¶ | |||
| +--ro lsp-lifetime? uint16 | +--ro lsp-lifetime? uint16 | |||
| +--ro lsp-refresh? uint16 {lsp-refresh}? | +--ro lsp-refresh? uint16 {lsp-refresh}? | |||
| +--ro graceful-restart {graceful-restart}? | +--ro graceful-restart {graceful-restart}? | |||
| | +--ro enable? boolean | | +--ro enable? boolean | |||
| +--ro node-tag {node-tag}? | +--ro node-tag {node-tag}? | |||
| | +--ro node-tag* [tag] | | +--ro node-tag* [tag] | |||
| | ... | | ... | |||
| +--ro authentication* [level] | +--ro authentication* [level] | |||
| | +--ro (authentication-type)? | | +--ro (authentication-type)? | |||
| | | ... | | | ... | |||
| | +--ro level level | | +--ro level level | |||
| +--ro metric-type* [level] | +--ro metric-type* [level] | |||
| | +--ro value? enumeration | | +--ro value? enumeration | |||
| | +--ro level level | | +--ro level level | |||
| +--ro preference* [level] | ||||
| | +--ro (granularity)? | ||||
| | | ... | ||||
| | +--ro level level | ||||
| +--ro default-metric* [level] | +--ro default-metric* [level] | |||
| | +--ro value? wide-metric | | +--ro value? wide-metric | |||
| | +--ro level level | | +--ro level level | |||
| +--ro af* [af] {nlpid-control}? | +--ro af* [af] {nlpid-control}? | |||
| | +--ro af identityref | | +--ro af identityref | |||
| | +--ro enable? boolean | | +--ro enable? boolean | |||
| +--ro overload* [level] | +--ro preference | |||
| | +--ro status? boolean | | +--ro (granularity)? | |||
| | +--ro timeout? uint16 | | ... | |||
| | +--ro level level | +--ro overload | |||
| +--ro overload-max-metric* [level] {overload-max-metric}? | | +--ro status? boolean | |||
| | +--ro status? boolean | +--ro overload-max-metric {overload-max-metric}? | |||
| | +--ro timeout? uint16 | | +--ro timeout? uint16 | |||
| | +--ro level level | ||||
| +--ro fast-reroute {fast-reroute}? | +--ro fast-reroute {fast-reroute}? | |||
| | +--ro lfa {lfa}? | | +--ro lfa {lfa}? | |||
| | +--ro protected-routes | | +--ro protected-routes | |||
| | | ... | | | ... | |||
| | +--ro nonprotected-routes | | +--ro nonprotected-routes | |||
| | | ... | | | ... | |||
| | +--ro protection-statistics* [frr-protection-method] | | +--ro protection-statistics* [frr-protection-method] | |||
| | ... | | ... | |||
| +--ro topologies* [name] | +--ro topologies* [name] | |||
| | +--ro name leafref | | +--ro name leafref | |||
| skipping to change at page 10, line 10 ¶ | skipping to change at page 10, line 5 ¶ | |||
| | +--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 | |||
| 2.1. ISIS Configuration | 2.1. IS-IS Configuration | |||
| The ISIS configuration supports a VRF-centric configuration approach. | The IS-IS configuration supports a VRF-centric configuration | |||
| The isis configuration is applied directly within the appropriate | approach. The isis configuration is applied directly within the | |||
| routing-instance where ISIS is activated. | appropriate routing-instance where IS-IS is activated. | |||
| The ISIS configuration container is divided in: | The IS-IS configuration container is divided in: | |||
| o Global parameters. | o Global parameters. | |||
| o Per interface configuration (see Section 2.4). | o Per interface configuration (see Section 2.4). | |||
| It would to up to extension modules to augment this model to support | It would to up to extension modules to augment this model to support | |||
| vendor specific parameters. | vendor specific parameters. | |||
| 2.2. Multitopology Parameters | 2.2. Multitopology Parameters | |||
| skipping to change at page 11, line 21 ¶ | skipping to change at page 11, line 9 ¶ | |||
| <level>level-2</level> | <level>level-2</level> | |||
| </priority> | </priority> | |||
| As a list is used, a user may decide to apply a level-1, level-2 and | As a list is used, a user may decide to apply a level-1, level-2 and | |||
| level-all parameter at the same time. An implementation SHOULD | level-all parameter at the same time. An implementation SHOULD | |||
| prefer a level specific parameter over level-all parameter. As | prefer a level specific parameter over level-all parameter. As | |||
| example, if priority is 100 for level-1, 200 for level-2 and 250 for | example, if priority is 100 for level-1, 200 for level-2 and 250 for | |||
| level-all, the implementation should use 100 for level-1 and 200 for | level-all, the implementation should use 100 for level-1 and 200 for | |||
| level-2. | level-2. | |||
| Overload bit and route preference are exceptions to this general | ||||
| modelling approach. In order to accommodate differences between | ||||
| existing implementations, overload, overload-max-metric and | ||||
| preference are modelled as container without per-level configuration. | ||||
| This let the opportunity for vendor to augment those containers with | ||||
| per-level configuration. An implementation that augments those | ||||
| containers with per-level configuration SHOULD : | ||||
| o Create one container for level-1 and one container for level-2. | ||||
| o Reuse the grouping defined for configuration parameters and apply | ||||
| them in level-1 and level-2 containers. | ||||
| In this case, the value defined in the top-level container SHOULD be | ||||
| applied to both levels while the value defined in a specific level | ||||
| container SHOULD apply to this level only and SHOULD override the | ||||
| top-level value if defined. | ||||
| Example of augmentation : | ||||
| augment "/rt:routing-state/rt:routing-instance/" + | ||||
| "rt:routing-protocols/rt:routing-protocol"+ | ||||
| "/isis:isis/isis:overload" { | ||||
| when "rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment IS-IS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments IS-IS overload configuration | ||||
| with per level configuration."; | ||||
| container level-1 { | ||||
| uses isis:overload-config; | ||||
| description | ||||
| "Level 1 configuration."; | ||||
| } | ||||
| container level-2 { | ||||
| uses isis:overload-config; | ||||
| description | ||||
| "Level 2 configuration."; | ||||
| } | ||||
| } | ||||
| 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 IS-IS instance describes the | |||
| interface specific parameters. | interface specific parameters. | |||
| The interface is a reference to an interface in the Interface YANG | The interface is a reference to an interface in the Interface YANG | |||
| model. | model. | |||
| Each interface has interface-specific parameters that may have a | Each interface has interface-specific parameters that may have a | |||
| different value per level as described in previous section. An | different value per level as described in previous section. An | |||
| interface-specific parameter always override an ISIS global parameter | interface-specific parameter always override an IS-IS 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 enable? boolean | ||||
| +--rw mesh-group-enable? mesh-group-state | ||||
| +--rw mesh-group? uint8 | ||||
| +--rw interface-type? interface-type | ||||
| +--rw enable? boolean {admin-control}? | ||||
| +--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)? | ||||
| | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? | ||||
| | | | ... | ||||
| | | +--:(md5) | ||||
| | | | ... | ||||
| | | +--:(sha-1) | ||||
| | | | ... | ||||
| | | +--:(hmac-sha-1) | ||||
| | | | ... | ||||
| | | +--:(hmac-sha-256) | ||||
| | | | ... | ||||
| | | +--:(hmac-sha-384) | ||||
| | | | ... | ||||
| | | +--:(hmac-sha-512) | ||||
| | | ... | ||||
| | +--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 bfd-cfg | ||||
| | +--rw enabled? boolean | ||||
| | +--rw local-multiplier? multiplier | ||||
| | +--rw (interval-config-type)? | ||||
| | +--:(tx-rx-intervals) | ||||
| | | +--rw desired-min-tx-interval uint32 | ||||
| | | +--rw required-min-rx-interval uint32 | ||||
| | +--:(single-interval) | ||||
| | +--rw min-interval uint32 | ||||
| +--rw mpls | ||||
| | +--rw igp-ldp-sync {igp-ldp-sync}? | ||||
| | +--rw enable? boolean | ||||
| +--rw fast-reroute {fast-reroute}? | ||||
| | +--rw lfa* [level] {lfa}? | ||||
| | +--rw candidate-disabled? boolean | ||||
| | +--rw enable? boolean | ||||
| | +--rw remote-lfa {remote-lfa}? | ||||
| | | +--rw enable? boolean | ||||
| | +--rw level level | ||||
| +--rw topologies* [name] | ||||
| +--rw name leafref | ||||
| +--rw fast-reroute {fast-reroute}? | ||||
| | +--rw lfa* [level] {lfa}? | ||||
| | +--rw candidate-disabled? boolean | ||||
| | +--rw enable? boolean | ||||
| | +--rw remote-lfa {remote-lfa}? | ||||
| | | +--rw enable? boolean | ||||
| | +--rw level level | ||||
| +--rw metric* [level] | ||||
| +--rw value? wide-metric | ||||
| +--rw level level | ||||
| 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 14, line 7 ¶ | skipping to change at page 13, line 7 ¶ | |||
| 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. Operational State | 2.7. Operational State | |||
| "isis" container provides operational states for ISIS. This | "isis" container provides operational states for IS-IS. 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. | |||
| o adjacencies: provides state information about current ISIS | o adjacencies: provides state information about current IS-IS | |||
| adjacencies. | adjacencies. | |||
| o spf-log: provides information about SPF events on the node. | o spf-log: provides information about SPF events on the node. | |||
| 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. | |||
| 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 IS-IS | |||
| database and restart database synchronization with the neighbors. | database and restart database synchronization with the neighbors. | |||
| o clear-isis-adjacency: restart a particular set of ISIS | o clear-isis-adjacency: restart a particular set of IS-IS | |||
| adjacencies. | adjacencies. | |||
| rpcs: | rpcs: | |||
| +---x clear-adjacency | +---x clear-adjacency | |||
| | +--ro input | | +--ro input | |||
| | +--ro routing-instance-name rt:routing-instance-state-ref | | +--ro routing-instance-name rt:routing-instance-state-ref | |||
| | +--ro routing-protocol-instance-name instance-state-ref | | +--ro routing-protocol-instance-name instance-state-ref | |||
| | +--ro level? level | | +--ro level? level | |||
| | +--ro interface? string | | +--ro interface? string | |||
| +---x clear-database | +---x clear-database | |||
| skipping to change at page 16, line 12 ¶ | skipping to change at page 15, line 12 ¶ | |||
| receives a Hello PDU from an IS but does not establish an | receives a Hello PDU from an IS but does not establish an | |||
| adjacency for some reason. | adjacency for some reason. | |||
| protocols-supported-mismatch : This notification is sent when the | protocols-supported-mismatch : This notification is sent when the | |||
| system receives a non pseudonode LSP that has no matching protocol | system receives a non pseudonode LSP that has no matching protocol | |||
| supported. | supported. | |||
| lsp-error-detected : This notification is sent when the system | lsp-error-detected : This notification is sent when the system | |||
| receives a LSP with a parse error. | receives a LSP with a parse error. | |||
| adjacency-change : This notification is sent when an ISIS | adjacency-change : This notification is sent when an IS-IS | |||
| adjacency moves to Up state or to Down state. | adjacency moves to Up state or to Down state. | |||
| lsp-received : This notification is sent when a LSP is received. | lsp-received : This notification is sent when a LSP is received. | |||
| lsp-generation : This notification is sent when a LSP is | lsp-generation : This notification is sent when a LSP is | |||
| regenerated. | regenerated. | |||
| notifications: | notifications: | |||
| +---n database-overload | +---n database-overload | |||
| | +--ro instance-name? string | | +--ro instance-name? string | |||
| skipping to change at page 19, line 15 ¶ | skipping to change at page 18, line 15 ¶ | |||
| +--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. Segment Routing | 5. Segment Routing | |||
| The IS-IS SR YANG module is augmenting IS-IS module for both | The IS-IS SR YANG module is augmenting IS-IS module for both | |||
| configuration and operational states. | configuration and operational states. | |||
| The IS-IS SR YANG module requires the base segment routing module | The IS-IS SR YANG module requires the base segment routing module | |||
| ([I-D.litkowski-spring-sr-yang]) to be supported as there is a strong | ([I-D.ietf-spring-sr-yang]) to be supported as there is a strong | |||
| relationship between those modules. | relationship between those modules. | |||
| The figure below describe the overall structure of the isis-sr YANG | The figure below describe the overall structure of the isis-sr YANG | |||
| module: | module: | |||
| module: ietf-isis-sr | module: ietf-isis-sr | |||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols | augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol | |||
| /rt:routing-protocol/isis:isis: | /isis:isis: | |||
| +--rw segment-routing | +--rw segment-routing | |||
| +--rw enabled? boolean | | +--rw enabled? boolean | |||
| +--rw srgb-list | | +--rw bindings | |||
| | +--rw srgb* [lower-bound upper-bound] | | +--rw advertise | |||
| | +--rw lower-bound uint32 | | | +--rw policies* string | |||
| | +--rw upper-bound uint32 | | +--rw receive? boolean | |||
| +--rw bindings | +--rw protocol-srgb {sr:protocol-srgb}? | |||
| +--rw advertise | +--rw srgb* [lower-bound upper-bound] | |||
| | +--rw policies* string | +--rw lower-bound uint32 | |||
| +--rw receive? boolean | +--rw upper-bound uint32 | |||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols | augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol | |||
| /rt:routing-protocol/isis:isis/isis:interfaces/isis:interface: | /isis:isis/isis:interfaces/isis:interface: | |||
| +--rw segment-routing | +--rw segment-routing | |||
| +--rw adjacency-sid | +--rw adjacency-sid | |||
| +--rw advertise-adj-group-sid* [group-id] | +--rw advertise-adj-group-sid* [group-id] | |||
| | +--rw group-id uint32 | | +--rw group-id uint32 | |||
| +--rw advertise-protection? enumeration | +--rw advertise-protection? enumeration | |||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols | augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol | |||
| /rt:routing-protocol/isis:isis/isis:interfaces/isis:interface | /isis:isis/isis:interfaces/isis:interface/isis:fast-reroute: | |||
| /isis:fast-reroute: | ||||
| +--rw ti-lfa {ti-lfa}? | +--rw ti-lfa {ti-lfa}? | |||
| +--rw enable? boolean | +--rw enable? boolean | |||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols | augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol | |||
| /rt:routing-protocol/isis:isis/isis:interfaces/isis:interface | /isis:isis/isis:interfaces/isis:interface/isis:fast-reroute | |||
| /isis:fast-reroute/isis:lfa/isis:remote-lfa: | /isis:lfa/isis:remote-lfa: | |||
| +--rw use-segment-routing-path? boolean {remote-lfa-sr}? | +--rw use-segment-routing-path? boolean {remote-lfa-sr}? | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | |||
| /rt:routing-protocol/isis:isis: | /rt:routing-protocol/isis:isis: | |||
| +--ro segment-routing | +--ro segment-routing | |||
| +--ro enabled? boolean | | +--ro enabled? boolean | |||
| +--ro srgb-list | | +--ro bindings | |||
| | +--ro srgb* [lower-bound upper-bound] | | +--ro advertise | |||
| | +--ro lower-bound uint32 | | | +--ro policies* string | |||
| | +--ro upper-bound uint32 | | +--ro receive? boolean | |||
| +--ro bindings | +--ro protocol-srgb {sr:protocol-srgb}? | |||
| +--ro advertise | +--ro srgb* [lower-bound upper-bound] | |||
| | +--ro policies* string | +--ro lower-bound uint32 | |||
| +--ro receive? boolean | +--ro upper-bound uint32 | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | |||
| /rt:routing-protocol/isis:isis/isis:interfaces/isis:interface: | /rt:routing-protocol | |||
| /isis:isis/isis:interfaces/isis:interface: | ||||
| +--ro segment-routing | +--ro segment-routing | |||
| +--ro adjacency-sid | +--ro adjacency-sid | |||
| +--ro advertise-adj-group-sid* [group-id] | +--ro advertise-adj-group-sid* [group-id] | |||
| | +--ro group-id uint32 | | +--ro group-id uint32 | |||
| +--ro advertise-protection? enumeration | +--ro advertise-protection? enumeration | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | |||
| /rt:routing-protocol/isis:isis/isis:interfaces/isis:interface | /rt:routing-protocol/isis:isis/isis:interfaces/isis:interface | |||
| /isis:adjacencies/isis:adjacency: | /isis:adjacencies/isis:adjacency: | |||
| +--ro adjacency-sid* [value] | +--ro adjacency-sid* [value] | |||
| +--ro af? identityref | +--ro af? identityref | |||
| +--ro value uint32 | +--ro value uint32 | |||
| +--ro weight? uint8 | +--ro weight? uint8 | |||
| +--ro protection-requested? boolean | +--ro protection-requested? boolean | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | |||
| /rt:routing-protocol/isis:isis/isis:database/isis:level-db | /rt:routing-protocol | |||
| /isis:lsp/isis:extended-is-neighbor/isis:neighbor: | /isis:isis/isis:database/isis:level-db/isis:lsp | |||
| /isis:extended-is-neighbor/isis:neighbor: | ||||
| +--ro sid-list* [value] | +--ro sid-list* [value] | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro weight? uint8 | +--ro weight? uint8 | |||
| +--ro neighbor-id? isis:system-id | +--ro neighbor-id? isis:system-id | |||
| +--ro value uint32 | +--ro value uint32 | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | |||
| /rt:routing-protocol/isis:isis/isis:database/isis:level-db | /rt:routing-protocol/isis:isis/isis:database/isis:level-db | |||
| /isis:lsp/isis:mt-is-neighbor/isis:neighbor: | /isis:lsp/isis:mt-is-neighbor/isis:neighbor: | |||
| +--ro sid-list* [value] | +--ro sid-list* [value] | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro weight? uint8 | +--ro weight? uint8 | |||
| +--ro neighbor-id? isis:system-id | +--ro neighbor-id? isis:system-id | |||
| +--ro value uint32 | +--ro value uint32 | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | |||
| /rt:routing-protocol/isis:isis/isis:database/isis:level-db | /rt:routing-protocol/isis:isis/isis:database/isis:level-db | |||
| /isis:lsp/isis:extended-ipv4-reachability/isis:prefixes: | /isis:lsp/isis:extended-ipv4-reachability/isis:prefixes: | |||
| +--ro sid-list* [value] | +--ro sid-list* [value] | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro value uint32 | +--ro value uint32 | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | |||
| /rt:routing-protocol/isis:isis/isis:database/isis:level-db | /rt:routing-protocol/isis:isis/isis:database/isis:level-db | |||
| /isis:lsp/isis:mt-extended-ipv4-reachability/isis:prefixes: | /isis:lsp/isis:mt-extended-ipv4-reachability/isis:prefixes: | |||
| +--ro sid-list* [value] | +--ro sid-list* [value] | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro value uint32 | +--ro value uint32 | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | |||
| /rt:routing-protocol/isis:isis/isis:database/isis:level-db | /rt:routing-protocol/isis:isis/isis:database/isis:level-db | |||
| /isis:lsp/isis:ipv6-reachability/isis:prefixes: | /isis:lsp/isis:ipv6-reachability/isis:prefixes: | |||
| +--ro sid-list* [value] | +--ro sid-list* [value] | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro value uint32 | +--ro value uint32 | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | |||
| /rt:routing-protocol/isis:isis/isis:database/isis:level-db | /rt:routing-protocol/isis:isis/isis:database/isis:level-db | |||
| /isis:lsp/isis:mt-ipv6-reachability/isis:prefixes: | /isis:lsp/isis:mt-ipv6-reachability/isis:prefixes: | |||
| +--ro sid-list* [value] | +--ro sid-list* [value] | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro value uint32 | +--ro value uint32 | |||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | |||
| /rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp: | /rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp: | |||
| +--ro segment-routing-bindings* [fec range] | +--ro segment-routing-bindings* [fec range] | |||
| +--ro fec string | +--ro fec string | |||
| +--ro range uint16 | +--ro range uint16 | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro weight? uint8 | +--ro weight? uint8 | |||
| +--ro binding* | +--ro binding* | |||
| +--ro prefix-sid | +--ro prefix-sid | |||
| | +--ro sid-list* [value] | | +--ro sid-list* [value] | |||
| | +--ro flags? bits | | +--ro flags? bits | |||
| | +--ro algorithm? uint8 | | +--ro algorithm? uint8 | |||
| skipping to change at page 22, line 29 ¶ | skipping to change at page 21, line 30 ¶ | |||
| policies" leaf-list. The "bindings/receive" leaf permits to enable | policies" leaf-list. The "bindings/receive" leaf permits to enable | |||
| the reception of mapping server entries. | the reception of mapping server entries. | |||
| 5.3. IP Fast reroute | 5.3. IP Fast reroute | |||
| IS-IS SR model augments the fast-reroute container under interface. | IS-IS SR model augments the fast-reroute container under interface. | |||
| It brings the ability to activate TI-LFA (topology independent LFA) | It brings the ability to activate TI-LFA (topology independent LFA) | |||
| and also enhances remote LFA to use segment-routing tunneling instead | and also enhances remote LFA to use segment-routing tunneling instead | |||
| of LDP. | of LDP. | |||
| 6. Interaction with Other YANG Modules | 6. BFD | |||
| Additionally this document defines a module that can be used to | ||||
| configure and monitor the IS-IS BFD feature. | ||||
| Bidirectional Forwarding Detection (BFD) ([RFC5880]) is a network | ||||
| protocol that is used for liveness detection of arbitrary paths | ||||
| between systems. A YANG data model is defined in | ||||
| ([I-D.ietf-bfd-yang]) that supports BFD configuration and management. | ||||
| As a client of BFD, the IS-IS protocol uses the services provided by | ||||
| BFD. The IS-IS BFD YANG augments the base IS-IS module and is | ||||
| defined as a separate module. So any implementation that does not | ||||
| support BFD can still use the IS-IS base model without having to | ||||
| import the BFD module ([I-D.ietf-bfd-yang]). | ||||
| module: ietf-isis-bfd | ||||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols | ||||
| /rt:routing-protocol/isis:isis/isis:interfaces/isis:interface: | ||||
| +--rw bfd | ||||
| +--rw enabled? boolean | ||||
| +--rw local-multiplier? multiplier | ||||
| +--rw (interval-config-type)? | ||||
| +--:(tx-rx-intervals) | ||||
| | +--rw desired-min-tx-interval uint32 | ||||
| | +--rw required-min-rx-interval uint32 | ||||
| +--:(single-interval) | ||||
| +--rw min-interval uint32 | ||||
| augment /rt:routing-state/rt:routing-instance/rt:routing-protocols | ||||
| /rt:routing-protocol/isis:isis/isis:interfaces/isis:interface: | ||||
| +--ro bfd | ||||
| +--ro enabled? boolean | ||||
| +--ro local-multiplier? multiplier | ||||
| +--ro (interval-config-type)? | ||||
| +--:(tx-rx-intervals) | ||||
| | +--ro desired-min-tx-interval uint32 | ||||
| | +--ro required-min-rx-interval uint32 | ||||
| +--:(single-interval) | ||||
| +--ro min-interval uint32 | ||||
| 7. Interaction with Other YANG Modules | ||||
| The "isis" configuration container augments the "/rt:routing/ | The "isis" configuration container augments the "/rt:routing/ | |||
| rt:routing-instance/rt:routing-protocols/routing-protocol" container | rt:routing-instance/rt:routing-protocols/routing-protocol" container | |||
| of the ietf-routing module by defining IS-IS 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 IS-IS specific | |||
| operational states. | operational states. | |||
| Some ISIS specific routes attributes are added to route objects of | Some IS-IS specific routes attributes are added to route objects of | |||
| the ietf-routing module by augmenting "/rt:routing- | the ietf-routing module by augmenting "/rt:routing- | |||
| state/rt:ribs/rt:rib/rt:routes/rt:route" and "/rt:fib- | state/rt:ribs/rt:rib/rt:routes/rt:route" and "/rt:fib- | |||
| route/rt:output/rt:route". | route/rt:output/rt:route". | |||
| The module uses some groupings from ietf-keychain, routing-policy and | The modules defined in this document use some groupings from ietf- | |||
| ietf-bfd modules. | keychain, routing-policy and ietf-bfd modules. | |||
| 7. ISIS YANG Module | 8. IS-IS YANG Module | |||
| <CODE BEGINS> file "ietf-isis@2015-09-18.yang" | <CODE BEGINS> file "ietf-isis@2015-11-18.yang" | |||
| module ietf-isis { | module ietf-isis { | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; | namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; | |||
| prefix isis; | prefix isis; | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| } | } | |||
| skipping to change at page 23, line 34 ¶ | skipping to change at page 23, line 34 ¶ | |||
| } | } | |||
| import ietf-interfaces { | import ietf-interfaces { | |||
| prefix "if"; | prefix "if"; | |||
| } | } | |||
| import ietf-key-chain { | import ietf-key-chain { | |||
| prefix "key-chain"; | prefix "key-chain"; | |||
| } | } | |||
| import ietf-bfd { | ||||
| prefix "bfd"; | ||||
| } | ||||
| import routing-policy { | import routing-policy { | |||
| prefix rtgpol; | prefix rtgpol; | |||
| } | } | |||
| organization | organization | |||
| "IETF ISIS Working Group"; | "IETF ISIS Working Group"; | |||
| contact | contact | |||
| "WG List: <mailto:isis-wg@ietf.org> | "WG List: <mailto:isis-wg@ietf.org> | |||
| skipping to change at page 24, line 28 ¶ | skipping to change at page 24, line 26 ¶ | |||
| <mailto:yiqu@cisco.com> | <mailto:yiqu@cisco.com> | |||
| Jeff Tantsura | Jeff Tantsura | |||
| <mailto:jeff.tantsura@ericsson.com> | <mailto:jeff.tantsura@ericsson.com> | |||
| "; | "; | |||
| description | description | |||
| "The YANG module defines a generic configuration model for | "The YANG module defines a generic configuration model for | |||
| ISIS common across all of the vendor implementations."; | ISIS common across all of the vendor implementations."; | |||
| revision 2015-09-18 { | revision 2015-11-18 { | |||
| description | description | |||
| " * Reissuing draft."; | " | |||
| reference "draft-ietf-isis-yang-isis-06"; | * Move Overload config from list to container | |||
| * Move Overload-max-metric config from list to container | ||||
| * Move preference config from list to container | ||||
| * Add Node flag in config | ||||
| * Removed BFD config => moved to isis-bfd module | ||||
| "; | ||||
| reference ""; | ||||
| } | } | |||
| revision 2015-09-10 { | revision 2015-09-10 { | |||
| description | description | |||
| " * Correct invalid references to previous | " * Correct invalid references to previous | |||
| versions core routing model. | versions core routing model. | |||
| * Moved BFD config to usage of ietf-bfd yang grouping | * Moved BFD config to usage of ietf-bfd yang grouping | |||
| * Adding routing-policy support through routing-policy model | * Adding routing-policy support through routing-policy model | |||
| "; | "; | |||
| reference "draft-ietf-isis-yang-isis-05"; | reference "draft-ietf-isis-yang-isis-05"; | |||
| } | } | |||
| skipping to change at page 28, line 48 ¶ | skipping to change at page 29, line 4 ¶ | |||
| 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 { | feature key-chain { | |||
| description | description | |||
| "Support of keychain for authentication."; | "Support of keychain for authentication."; | |||
| } | } | |||
| feature segment-routing { | feature segment-routing { | |||
| description | description | |||
| "Support of segment-routing."; | "Support of segment-routing."; | |||
| } | ||||
| feature node-flag { | ||||
| description | ||||
| "Support of node-flag advertisement | ||||
| as prefix attribute"; | ||||
| } | } | |||
| 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 | |||
| "Support of RFC5443."; | "Support of RFC5443."; | |||
| } | } | |||
| feature fast-reroute { | feature fast-reroute { | |||
| skipping to change at page 29, line 27 ¶ | skipping to change at page 29, line 36 ¶ | |||
| } | } | |||
| feature lfa { | feature lfa { | |||
| description | description | |||
| "Support of Loop Free Alternates."; | "Support of Loop Free Alternates."; | |||
| } | } | |||
| feature remote-lfa { | feature remote-lfa { | |||
| description | description | |||
| "Support of remote Loop Free Alternates."; | "Support of remote Loop Free Alternates."; | |||
| } | } | |||
| feature bfd { | ||||
| description | ||||
| "Support of BFD."; | ||||
| } | ||||
| feature overload-max-metric { | feature overload-max-metric { | |||
| description | description | |||
| "Support of overload by setting | "Support of overload by setting | |||
| all links to max metric."; | all links to max metric."; | |||
| } | } | |||
| feature prefix-tag { | feature prefix-tag { | |||
| description | description | |||
| "Add 32bit tag to prefixes"; | "Add 32bit tag to prefixes"; | |||
| } | } | |||
| feature prefix-tag64 { | feature prefix-tag64 { | |||
| skipping to change at page 34, line 28 ¶ | skipping to change at page 34, line 33 ¶ | |||
| description | description | |||
| "LSPs must not be flooded over that interface."; | "LSPs must not be flooded over that interface."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "This type describes meshgroup state of an interface"; | "This type describes meshgroup state of an interface"; | |||
| } | } | |||
| /* Grouping definitions */ | /* Grouping definitions */ | |||
| grouping route-preference-config { | ||||
| choice granularity { | ||||
| case detail { | ||||
| leaf internal { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf defines the protocol | ||||
| preference for internal routes."; | ||||
| } | ||||
| leaf external { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf defines the protocol | ||||
| preference for external routes."; | ||||
| } | ||||
| } | ||||
| case coarse { | ||||
| leaf default { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf defines the protocol | ||||
| preference for all ISIS routes."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Choice for implementation of route preference."; | ||||
| } | ||||
| description | ||||
| "This grouping defines how route preference is configured."; | ||||
| } | ||||
| grouping admin-control { | grouping admin-control { | |||
| leaf enable { | leaf enable { | |||
| if-feature admin-control; | if-feature admin-control; | |||
| type boolean; | type boolean; | |||
| default true; | default true; | |||
| description | description | |||
| "Control the administrative | "Control the administrative | |||
| state."; | state."; | |||
| } | } | |||
| skipping to change at page 61, line 4 ¶ | skipping to change at page 61, line 41 ¶ | |||
| } | } | |||
| enum old-only { | enum old-only { | |||
| description | description | |||
| "Advertise old metric style only | "Advertise old metric style only | |||
| (RFC1195)"; | (RFC1195)"; | |||
| } | } | |||
| enum both { | enum both { | |||
| description "Advertise both metric | description "Advertise both metric | |||
| styles"; | styles"; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "This leaf describes the type of metric | "This leaf describes the type of metric | |||
| to be generated. | to be generated. | |||
| Wide-only means only new metric style | Wide-only means only new metric style | |||
| is generated, | is generated, | |||
| old-only means that only old style metric | old-only means that only old style metric | |||
| is generated, | is generated, | |||
| and both means that both are advertised. | and both means that both are advertised. | |||
| This leaf is only affecting IPv4 metrics."; | This leaf is only affecting IPv4 metrics."; | |||
| } | } | |||
| leaf level { | leaf level { | |||
| type level; | type level; | |||
| description | description | |||
| "Level applicability."; | "Level applicability."; | |||
| } | } | |||
| description | description | |||
| "Metric style container."; | "Metric style container."; | |||
| } | } | |||
| list preference { | ||||
| key level; | ||||
| choice granularity { | ||||
| case detail { | ||||
| leaf internal { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf defines the protocol | ||||
| preference for internal routes."; | ||||
| } | ||||
| leaf external { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf defines the protocol | ||||
| preference for external routes."; | ||||
| } | ||||
| } | ||||
| case coarse { | ||||
| leaf default { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf defines the protocol | ||||
| preference for all ISIS routes."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Choice for implementation of route preference."; | ||||
| } | ||||
| leaf level { | ||||
| type level; | ||||
| description | ||||
| "Level applicability."; | ||||
| } | ||||
| description | ||||
| "This leaf defines the protocol preference."; | ||||
| } | ||||
| list default-metric { | list default-metric { | |||
| key level; | key level; | |||
| leaf value { | leaf value { | |||
| type wide-metric; | type wide-metric; | |||
| description | description | |||
| "Value of the metric"; | "Value of the metric"; | |||
| } | } | |||
| leaf level { | leaf level { | |||
| skipping to change at page 63, line 4 ¶ | skipping to change at page 63, line 7 ¶ | |||
| 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 overload { | ||||
| key level; | ||||
| leaf status { | container preference { | |||
| type boolean; | uses route-preference-config; | |||
| description | description | |||
| "This leaf defines the overload status."; | "This container defines the protocol preference."; | |||
| } | } | |||
| leaf timeout { | container overload { | |||
| type uint16; | leaf status { | |||
| units "seconds"; | type boolean; | |||
| description | description | |||
| "This leaf defines the timeout in seconds | "This leaf defines the overload status."; | |||
| of the overload condition."; | } | |||
| } | description | |||
| leaf level { | "This container describes if the router is | |||
| type level; | ||||
| description | ||||
| "Level applicability of the metric."; | ||||
| } | ||||
| description | ||||
| "This leaf describes if the router is | ||||
| set to overload state."; | set to overload state."; | |||
| } | } | |||
| list overload-max-metric { | ||||
| if-feature overload-max-metric; | ||||
| key level; | ||||
| leaf status { | ||||
| type boolean; | ||||
| description | ||||
| "This leaf defines the overload status."; | ||||
| } | ||||
| leaf timeout { | container overload-max-metric { | |||
| type uint16; | if-feature overload-max-metric; | |||
| units "seconds"; | leaf timeout { | |||
| description | type uint16; | |||
| "This leaf defines the timeout in seconds | units "seconds"; | |||
| of the overload condition."; | description | |||
| } | "This leaf defines the timeout in seconds | |||
| leaf level { | of the overload condition."; | |||
| type level; | } | |||
| description | description | |||
| "Level applicability of the metric."; | "This container describes if the router is | |||
| } | set to overload state using max-metric | |||
| description | advertisement."; | |||
| "This leaf describes if the router is | } | |||
| set to overload state."; | ||||
| } | ||||
| } | } | |||
| grouping isis-global-topologies-cfg { | grouping isis-global-topologies-cfg { | |||
| description | description | |||
| "Per topology config."; | "Per topology config."; | |||
| list default-metric { | list default-metric { | |||
| key level; | key level; | |||
| leaf value { | leaf value { | |||
| skipping to change at page 66, line 44 ¶ | skipping to change at page 66, line 29 ¶ | |||
| leaf-list tag64 { | leaf-list tag64 { | |||
| if-feature prefix-tag64; | if-feature prefix-tag64; | |||
| type uint64; | type uint64; | |||
| description | description | |||
| "This leaf defines list of 64bits tags | "This leaf defines list of 64bits tags | |||
| associated with the interface."; | associated with the interface."; | |||
| } | } | |||
| leaf node-flag { | ||||
| if-feature node-flag; | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "Set prefix as a node | ||||
| representative prefix."; | ||||
| } | ||||
| list hello-authentication { | list hello-authentication { | |||
| key level; | key level; | |||
| choice authentication-type { | choice authentication-type { | |||
| case key-chain { | case key-chain { | |||
| if-feature key-chain; | if-feature key-chain; | |||
| leaf key-chain { | leaf key-chain { | |||
| type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
| description | description | |||
| "Reference to a key-chain."; | "Reference to a key-chain."; | |||
| skipping to change at page 69, line 31 ¶ | skipping to change at page 69, line 26 ¶ | |||
| list af { | list af { | |||
| key af; | key af; | |||
| leaf af { | leaf af { | |||
| type identityref { | type identityref { | |||
| base rt:address-family; | base rt:address-family; | |||
| } | } | |||
| description | description | |||
| "Address-family"; | "Address-family"; | |||
| } | } | |||
| uses bfd:bfd-client-base-cfg-parms; | ||||
| description | description | |||
| "List of AFs."; | "List of AFs."; | |||
| } | } | |||
| container mpls { | container mpls { | |||
| container igp-ldp-sync { | container igp-ldp-sync { | |||
| if-feature igp-ldp-sync; | if-feature igp-ldp-sync; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| skipping to change at page 98, line 4 ¶ | skipping to change at page 98, line 4 ¶ | |||
| description | description | |||
| "This notification is sent when a LSP | "This notification is sent when a LSP | |||
| is regenerated. | is regenerated. | |||
| The notification generation must be throttled with at least | The notification generation must be throttled with at least | |||
| a 5 second gap. "; | a 5 second gap. "; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 8. ISIS Segment Routing YANG Module | 9. IS-IS Segment Routing YANG Module | |||
| <CODE BEGINS> file "ietf-isis-sr@2015-09-18.yang" | <CODE BEGINS> file "ietf-isis-sr@2015-11-18.yang" | |||
| module ietf-isis-sr { | module ietf-isis-sr { | |||
| namespace "urn:ietf:params:xml:ns:" | namespace "urn:ietf:params:xml:ns:" | |||
| + "yang:ietf-isis-sr"; | + "yang:ietf-isis-sr"; | |||
| prefix isis-sr; | prefix isis-sr; | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| } | } | |||
| skipping to change at page 107, line 40 ¶ | skipping to change at page 107, line 40 ¶ | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis" { | "/isis:isis" { | |||
| when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augment ISIS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol configuration | "This augments ISIS protocol configuration | |||
| with segment routing."; | with segment routing."; | |||
| uses sr:igp-controlplane-cfg; | uses sr:controlplane-cfg; | |||
| container protocol-srgb { | ||||
| if-feature sr:protocol-srgb; | ||||
| uses sr:srgb-cfg; | ||||
| description | ||||
| "Per-protocol SRGB."; | ||||
| } | ||||
| } | } | |||
| augment "/rt:routing/rt:routing-instance/" + | augment "/rt:routing/rt:routing-instance/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis/isis:interfaces/isis:interface" { | "/isis:isis/isis:interfaces/isis:interface" { | |||
| when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augment ISIS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| skipping to change at page 109, line 4 ¶ | skipping to change at page 109, line 11 ¶ | |||
| description | description | |||
| "This augments ISIS remoteLFA config with | "This augments ISIS remoteLFA config with | |||
| use of segment-routing path."; | use of segment-routing path."; | |||
| leaf use-segment-routing-path { | leaf use-segment-routing-path { | |||
| if-feature remote-lfa-sr; | if-feature remote-lfa-sr; | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "force remote LFA to use segment routing | "force remote LFA to use segment routing | |||
| path instead of LDP path."; | path instead of LDP path."; | |||
| } | } | |||
| } | } | |||
| /* Operational states */ | /* Operational states */ | |||
| augment "/rt:routing-state/rt:routing-instance/" + | augment "/rt:routing-state/rt:routing-instance/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis" { | "/isis:isis" { | |||
| when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augment ISIS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol configuration | "This augments ISIS protocol configuration | |||
| with segment routing."; | with segment routing."; | |||
| uses sr:igp-controlplane-cfg; | uses sr:controlplane-cfg; | |||
| container protocol-srgb { | ||||
| if-feature sr:protocol-srgb; | ||||
| uses sr:srgb-cfg; | ||||
| description | ||||
| "Per-protocol SRGB."; | ||||
| } | ||||
| } | } | |||
| augment "/rt:routing-state/rt:routing-instance/" + | augment "/rt:routing-state/rt:routing-instance/" + | |||
| "rt:routing-protocols/rt:routing-protocol"+ | "rt:routing-protocols/rt:routing-protocol"+ | |||
| "/isis:isis/isis:interfaces/isis:interface" { | "/isis:isis/isis:interfaces/isis:interface" { | |||
| when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augment ISIS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| skipping to change at page 111, line 28 ¶ | skipping to change at page 111, line 42 ¶ | |||
| uses segment-routing-binding-tlv; | uses segment-routing-binding-tlv; | |||
| } | } | |||
| /* Notifications */ | /* Notifications */ | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 9. Security Considerations | 10. IS-IS BFD YANG Module | |||
| <CODE BEGINS> file "ietf-isis-bfd@2015-11-18.yang" | ||||
| module ietf-isis-bfd { | ||||
| namespace "urn:ietf:params:xml:ns:yang:ietf-isis-bfd"; | ||||
| prefix isis-bfd; | ||||
| import ietf-routing { | ||||
| prefix "rt"; | ||||
| } | ||||
| import ietf-bfd { | ||||
| prefix "bfd"; | ||||
| } | ||||
| import ietf-isis { | ||||
| prefix "isis"; | ||||
| } | ||||
| organization | ||||
| "IETF ISIS Working Group"; | ||||
| contact | ||||
| " | ||||
| WG List: <mailto:isis-wg@ietf.org> | ||||
| Editor: Stephane Litkowski | ||||
| <mailto:stephane.litkowski@orange.com> | ||||
| Author: Derek Yeung | ||||
| <mailto:myeung@cisco.com> | ||||
| Author: Yingzhen Qu | ||||
| <mailto:yiqu@cisco.com> | ||||
| Author: Acee Lindem | ||||
| <mailto:acee@cisco.com> | ||||
| Author: Jeffrey Zhang | ||||
| <mailto:zzhang@juniper.net> | ||||
| Author: Ing-Wher Chen | ||||
| <mailto:ing-wher.chen@ericsson.com> | ||||
| Author: Greg Hankins | ||||
| <mailto:greg.hankins@alcatel-lucent.com>"; | ||||
| description | ||||
| "This YANG module defines the generic configuration | ||||
| and operational state for ISIS BFD, which is common | ||||
| across all of the vendor implementations. It is | ||||
| intended that the module will be extended by vendors to | ||||
| define vendor-specific ISIS BFD configuration | ||||
| and operational parameters and policies."; | ||||
| revision 2015-11-18 { | ||||
| description | ||||
| "Initial revision."; | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for ISIS BFD."; | ||||
| } | ||||
| feature bfd-protocol-parms { | ||||
| description | ||||
| "ISIS BFD protocol specific parameters support."; | ||||
| } | ||||
| /* Configuration */ | ||||
| augment "/rt:routing/rt:routing-instance/rt:routing-protocols/" | ||||
| + "rt:routing-protocol/isis:isis/" | ||||
| + "isis:interfaces/isis:interface" { | ||||
| when "../../../../../../rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augments the ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol configuration | ||||
| with BFD."; | ||||
| container bfd { | ||||
| description "BFD configuration."; | ||||
| leaf enabled { | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "True if BFD is enabled for the ISIS interface."; | ||||
| } | ||||
| uses bfd:bfd-grouping-base-cfg-parms { | ||||
| if-feature bfd-protocol-parms; | ||||
| } | ||||
| } | ||||
| } | ||||
| /* Operational states */ | ||||
| augment "/rt:routing-state/rt:routing-instance/" | ||||
| + "rt:routing-protocols/rt:routing-protocol/" | ||||
| + "isis:isis/" | ||||
| + "isis:interfaces/isis:interface" { | ||||
| when "../../../../../../rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augments the ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol operation | ||||
| with BFD."; | ||||
| container bfd { | ||||
| description "BFD operation."; | ||||
| leaf enabled { | ||||
| type boolean; | ||||
| description | ||||
| "True if BFD is enabled for the ISIS interface."; | ||||
| } | ||||
| uses bfd:bfd-grouping-base-cfg-parms { | ||||
| if-feature bfd-protocol-parms; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 11. Security Considerations | ||||
| Configuration and state data defined in this document are designed to | Configuration and state data defined in this document are designed to | |||
| be accessed via the NETCONF protocol [RFC6241]. | be accessed via the NETCONF protocol [RFC6241]. | |||
| As ISIS is an IGP protocol (critical piece of the network), ensuring | As IS-IS is an IGP protocol (critical piece of the network), ensuring | |||
| stability and security of the protocol is mandatory for the network | stability and security of the protocol is mandatory for the network | |||
| service. | service. | |||
| Authors recommends to implement NETCONF access control model | Authors recommends to implement NETCONF access control model | |||
| ([RFC6536]) to restrict access to all or part of the configuration to | ([RFC6536]) to restrict access to all or part of the configuration to | |||
| specific users. Access control to RPCs is also critical as RPC | specific users. Access control to RPCs is also critical as RPC | |||
| permits to clear protocol datastructures that would definitively | permits to clear protocol datastructures that would definitively | |||
| impact the network service. This kind of RPC needs only to be used | impact the network service. This kind of RPC needs only to be used | |||
| in specific cases by well-known experienced users. | in specific cases by well-known experienced users. | |||
| skipping to change at page 112, line 25 ¶ | skipping to change at page 115, line 12 ¶ | |||
| Unauthorized access to configuration or RPC may cause high damages to | Unauthorized access to configuration or RPC may cause high damages to | |||
| the network service. | the network service. | |||
| The /isis-state/database may contain authentication information. As | The /isis-state/database may contain authentication information. As | |||
| 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 IS-IS using the NETCONF protocol, | |||
| authors recommends the usage of secure transport of NETCONF using SSH | authors recommends the usage of secure transport of NETCONF using SSH | |||
| ([RFC6242]). | ([RFC6242]). | |||
| 10. Contributors | 12. 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. | |||
| 11. Acknowledgements | 13. Acknowledgements | |||
| TBD. | TBD. | |||
| 12. IANA Considerations | 14. IANA Considerations | |||
| TBD. | TBD. | |||
| 13. Normative References | 15. Normative References | |||
| [I-D.acee-rtg-yang-key-chain] | ||||
| Lindem, A., Qu, Y., Yeung, D., Chen, H., Zhang, J., and Y. | ||||
| Yang, "Key Chain YANG Data Model", draft-acee-rtg-yang- | ||||
| key-chain-09 (work in progress), October 2015. | ||||
| [I-D.ietf-bfd-yang] | ||||
| Zheng, L., Rahman, R., Networks, J., Jethanandani, M., and | ||||
| G. Mirsky, "Yang Data Model for Bidirectional Forwarding | ||||
| Detection (BFD)", draft-ietf-bfd-yang-00 (work in | ||||
| progress), August 2015. | ||||
| [I-D.ietf-netmod-routing-cfg] | [I-D.ietf-netmod-routing-cfg] | |||
| Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | |||
| Management", draft-ietf-netmod-routing-cfg-19 (work in | Management", draft-ietf-netmod-routing-cfg-20 (work in | |||
| progress), May 2015. | progress), October 2015. | |||
| [I-D.litkowski-spring-sr-yang] | [I-D.ietf-spring-sr-yang] | |||
| Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG | Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG | |||
| Data Model for Segment Routing", draft-litkowski-spring- | Data Model for Segment Routing", draft-ietf-spring-sr- | |||
| sr-yang-01 (work in progress), June 2015. | yang-01 (work in progress), October 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, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | ||||
| (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | ||||
| <http://www.rfc-editor.org/info/rfc5880>. | ||||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
| and A. Bierman, Ed., "Network Configuration Protocol | and A. Bierman, Ed., "Network Configuration Protocol | |||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | |||
| <http://www.rfc-editor.org/info/rfc6241>. | <http://www.rfc-editor.org/info/rfc6241>. | |||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | |||
| <http://www.rfc-editor.org/info/rfc6242>. | <http://www.rfc-editor.org/info/rfc6242>. | |||
| [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | |||
| End of changes. 90 change blocks. | ||||
| 326 lines changed or deleted | 449 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/ | ||||