| < draft-litkowski-isis-yang-isis-cfg-00.txt | draft-litkowski-isis-yang-isis-cfg-01.txt > | |||
|---|---|---|---|---|
| ISIS Working Group S. Litkowski | ISIS Working Group S. Litkowski | |||
| Internet-Draft Orange | Internet-Draft Orange | |||
| Intended status: Standards Track June 24, 2014 | Intended status: Standards Track June 27, 2014 | |||
| Expires: December 26, 2014 | Expires: December 29, 2014 | |||
| Yang Data Model for ISIS protocol | Yang Data Model for ISIS protocol | |||
| draft-litkowski-isis-yang-isis-cfg-00 | draft-litkowski-isis-yang-isis-cfg-01 | |||
| 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. | and manage ISIS protocol. | |||
| 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 | |||
| skipping to change at page 1, line 37 ¶ | skipping to change at page 1, line 37 ¶ | |||
| 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 December 26, 2014. | This Internet-Draft will expire on December 29, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 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 23 ¶ | skipping to change at page 2, line 23 ¶ | |||
| 2.1. ISIS configuration . . . . . . . . . . . . . . . . . . . 5 | 2.1. ISIS configuration . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.2. Multitopology parameters . . . . . . . . . . . . . . . . 5 | 2.2. Multitopology parameters . . . . . . . . . . . . . . . . 5 | |||
| 2.3. Per level parameters . . . . . . . . . . . . . . . . . . 5 | 2.3. Per level parameters . . . . . . . . . . . . . . . . . . 5 | |||
| 2.4. Per interface parameters . . . . . . . . . . . . . . . . 6 | 2.4. Per interface parameters . . . . . . . . . . . . . . . . 6 | |||
| 2.5. Operational states . . . . . . . . . . . . . . . . . . . 7 | 2.5. Operational states . . . . . . . . . . . . . . . . . . . 7 | |||
| 3. RPC operations . . . . . . . . . . . . . . . . . . . . . . . 8 | 3. RPC operations . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5. Interaction with other YANG modules . . . . . . . . . . . . . 9 | 5. Interaction with other YANG modules . . . . . . . . . . . . . 9 | |||
| 6. Yang module . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 6. Yang module . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 45 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 45 | |||
| 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 45 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 10. Normative References . . . . . . . . . . . . . . . . . . . . 45 | 10. Normative References . . . . . . . . . . . . . . . . . . . . 46 | |||
| Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 45 | Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 47 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 48 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 53 | |||
| 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 33 ¶ | skipping to change at page 3, line 33 ¶ | |||
| 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* uint32 | +--ro tag* uint32 | |||
| +--ro route-type? enumeration | +--ro route-type? enumeration | |||
| augment /rt:active-route/rt:output/rt:route: | augment /rt:active-route/rt:output/rt:route: | |||
| +--ro metric? uint32 | +--ro metric? uint32 | |||
| +--ro tag* uint32 | +--ro tag* uint32 | |||
| +--ro route-type? enumeration | +--ro route-type? enumeration | |||
| augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol: | augment | |||
| +--rw isis-cfg | /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol: | |||
| +--rw isis | ||||
| +--rw isis-level? isis-level | +--rw isis-level? isis-level | |||
| +--rw nsap-address simple-iso-address | +--rw nsap-address simple-iso-address | |||
| +--rw ipv4-router-id? inet:ipv4-address | +--rw ipv4-router-id? inet:ipv4-address | |||
| +--rw ipv6-router-id? inet:ipv6-address | +--rw ipv6-router-id? inet:ipv6-address | |||
| +--rw reference-bandwidth? uint32 | +--rw reference-bandwidth? uint32 | |||
| +--rw lsp-mtu? uint16 | +--rw lsp-mtu? uint16 | |||
| +--rw lsp-lifetime? uint16 | +--rw lsp-lifetime? uint16 | |||
| +--rw lsp-refresh? uint16 | +--rw lsp-refresh? uint16 | |||
| +--rw psnp-authentication? boolean | +--rw psnp-authentication? boolean | |||
| +--rw csnp-authentication? boolean | +--rw csnp-authentication? boolean | |||
| skipping to change at page 3, line 52 ¶ | skipping to change at page 4, line 4 ¶ | |||
| +--rw lsp-refresh? uint16 | +--rw lsp-refresh? uint16 | |||
| +--rw psnp-authentication? boolean | +--rw psnp-authentication? boolean | |||
| +--rw csnp-authentication? boolean | +--rw csnp-authentication? boolean | |||
| +--rw hello-authentication? boolean | +--rw hello-authentication? boolean | |||
| +--rw authentication-key? string | +--rw authentication-key? string | |||
| +--rw authentication-type? enumeration | +--rw authentication-type? enumeration | |||
| +--rw isis-multi-topology-cfg | +--rw isis-multi-topology-cfg | |||
| | ... | | ... | |||
| +--rw isis-level-1-cfg | +--rw isis-level-1-cfg | |||
| | ... | | ... | |||
| +--rw isis-level-2-cfg | +--rw isis-level-2-cfg | |||
| | ... | | ... | |||
| +--rw overload | +--rw overload | |||
| | +--rw status? boolean | | +--rw status? boolean | |||
| | +--rw timeout? uint16 | | +--rw timeout? uint16 | |||
| +--rw interfaces | +--rw interfaces | |||
| +--rw interface* [name] | +--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-state | +--ro isis-state | |||
| +--ro adjacencies | +--ro adjacencies | |||
| | +--ro adjacency* [interface] | | +--ro adjacency* [interface] | |||
| | +--ro interface string | | +--ro interface string | |||
| | +--ro level? isis-level | | +--ro level? isis-level | |||
| | +--ro state? enumeration | | +--ro state? enumeration | |||
| +--ro spf-log | +--ro spf-log | |||
| | +--ro event* [id] | | +--ro event* [id] | |||
| | +--ro id uint32 | | +--ro id uint32 | |||
| | +--ro spf-type? enumeration | | +--ro spf-type? enumeration | |||
| skipping to change at page 9, line 32 ¶ | skipping to change at page 9, line 32 ¶ | |||
| of the ietf-routing module by defining ISIS specific operational | of the ietf-routing module by defining ISIS specific operational | |||
| states. | 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 | 6. Yang module | |||
| <CODE BEGINS> file "ietf-isis@2014-06-20.yang" | <CODE BEGINS> file "ietf-isis@2014-06-25.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; | |||
| } | } | |||
| 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>"; | |||
| description | description | |||
| "The YANG module defines a generic configuration model for ISIS | "The YANG module defines a generic configuration model for | |||
| common across all of the vendor implementations."; | ISIS common across all of the vendor implementations."; | |||
| revision 2014-06-20 { | revision 2014-06-25 { | |||
| description " | description " | |||
| * isis-op renamed to isis-state. | * isis-cfg renamed to isis. | |||
| * Multiple instances under isis are removed. | * Add precisions on authentication-keys in description | |||
| * interface-cfg grouping removed and content | "; | |||
| is directly included in container isis. | reference "draft-litkowski-isis-yang-isis-01"; | |||
| * TLVxx renamed with human-readable name in isis-database. | } | |||
| TLV reference are putted in description. | ||||
| * Reference to core routing module were fixed. | ||||
| * Namespace fixed. | ||||
| * Add simple-iso-address type. | ||||
| * area-id and system-id in isis container are merged to | ||||
| nsap-address. | ||||
| * Add isis-system-id type. | ||||
| * Add isis-lsp-id type. | ||||
| * Add remaining-lifetime leaf in isis-database. | ||||
| * Add TLV2 (is-neighbor) in isis-database. | ||||
| * Renamed some container name for consistency | ||||
| reason ('isis-' prefixed). | ||||
| * Add new identities isis-cfg and isis-state. | ||||
| * Add descriptions. | ||||
| * Add notification isis-adjacency-updown. | ||||
| * Add RPC clear-isis-adjacency and clear-isis-database. | ||||
| "; | ||||
| reference "draft-litkowski-isis-yang-isis-00"; | ||||
| } | ||||
| revision 2014-06-11 { | revision 2014-06-20 { | |||
| description "Initial revision."; | description " | |||
| reference "draft-litkowski-netmod-isis-cfg-00"; | * isis-op renamed to isis-state. | |||
| } | * Multiple instances under isis are removed. | |||
| identity isis { | * interface-cfg grouping removed and content | |||
| base rt:routing-protocol; | is directly included in container isis. | |||
| description "Identity for the ISIS routing protocol."; | * TLVxx renamed with human-readable name in isis-database. | |||
| } | TLV reference are putted in description. | |||
| * Reference to core routing module were fixed. | ||||
| * Namespace fixed. | ||||
| * Add simple-iso-address type. | ||||
| * area-id and system-id in isis container are merged to | ||||
| nsap-address. | ||||
| * Add isis-system-id type. | ||||
| * Add isis-lsp-id type. | ||||
| * Add remaining-lifetime leaf in isis-database. | ||||
| * Add TLV2 (is-neighbor) in isis-database. | ||||
| * Renamed some container name for consistency | ||||
| reason ('isis-' prefixed). | ||||
| * Add new identities isis-cfg and isis-state. | ||||
| * Add descriptions. | ||||
| * Add notification isis-adjacency-updown. | ||||
| * Add RPC clear-isis-adjacency and clear-isis-database. | ||||
| "; | ||||
| reference "draft-litkowski-isis-yang-isis-00"; | ||||
| } | ||||
| identity isis-cfg { | revision 2014-06-11 { | |||
| description "Identity for the ISIS routing protocol | description "Initial revision."; | |||
| configuration."; | reference "draft-litkowski-netmod-isis-cfg-00"; | |||
| } | } | |||
| identity isis { | ||||
| base rt:routing-protocol; | ||||
| description "Identity for the ISIS routing protocol."; | ||||
| } | ||||
| identity isis-state { | identity isis-state { | |||
| description "Identity for the ISIS routing protocol | description "Identity for the ISIS routing protocol | |||
| operational states."; | operational states."; | |||
| } | } | |||
| identity isis-adjacency-updown { | identity isis-adjacency-updown { | |||
| description "Identity for the ISIS routing protocol | description "Identity for the ISIS routing protocol | |||
| adjacency state."; | adjacency state."; | |||
| } | } | |||
| identity clear-isis-database { | identity clear-isis-database { | |||
| description "Identity for the ISIS routing protocol | description "Identity for the ISIS routing protocol | |||
| 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."; | |||
| } | } | |||
| typedef isis-instance-state-ref { | typedef isis-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 leafs that reference state data of | "This type is used for leafs that reference state data of | |||
| an ISIS protocol instance."; | an ISIS protocol instance."; | |||
| } | } | |||
| typedef isis-level { | typedef isis-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."; | |||
| } | } | |||
| enum "level-1-2" { | enum "level-1-2" { | |||
| description | description | |||
| "This enum describes both level capability."; | "This enum describes both level capability."; | |||
| } | ||||
| } | ||||
| description | ||||
| "This type defines ISIS level of an object."; | ||||
| } | } | |||
| } | ||||
| description | ||||
| "This type defines ISIS level of an object."; | ||||
| } | typedef isis-lsp-id { | |||
| type string { | ||||
| pattern | ||||
| '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]' | ||||
| +'{4}\.[0-9][0-9]-[0-9][0-9]'; | ||||
| } | ||||
| description | ||||
| "This type defines isis LSP ID using pattern, | ||||
| system id looks like : 0143.0438.AeF0.02-01"; | ||||
| } | ||||
| typedef simple-iso-address { | ||||
| type string { | ||||
| pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}' | ||||
| +'[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.' | ||||
| +'[0-9][0-9]'; | ||||
| } | ||||
| description | ||||
| "This type defines simple iso address format, | ||||
| it looks like : area_id.systemid.nsel | ||||
| The area ID is at least 1 byte of AFI, and is up to | ||||
| 13 bytes."; | ||||
| } | ||||
| typedef isis-lsp-id { | typedef isis-system-id { | |||
| type string { | type string { | |||
| pattern | pattern | |||
| "[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]" | '[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.00'; | |||
| +"{4}.[0-9][0-9]-[0-9][0-9]"; | } | |||
| } | description | |||
| description | "This type defines isis system id using pattern, | |||
| "This type defines isis LSP ID using pattern, | system id looks like : 0143.0438.AeF0.00"; | |||
| system id looks like : 0143.0438.AeF0.02-01"; | } | |||
| } | ||||
| typedef simple-iso-address { | ||||
| type string { | ||||
| pattern "[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}" | ||||
| +"[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}." | ||||
| +"[0-9][0-9]"; | ||||
| } | ||||
| description | ||||
| "This type defines simple iso address format, | ||||
| it looks like : area_id.systemid.nsel | ||||
| The area ID is at least 1 byte of AFI, and is up to 13 bytes."; | ||||
| } | ||||
| typedef isis-system-id { | typedef isis-wide-metric { | |||
| type string { | type uint32 { | |||
| pattern "[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}\.[0-9A-Fa-f]{4}.00"; | range "0 .. 16777215"; | |||
| } | } | |||
| description | description | |||
| "This type defines isis system id using pattern, | "This type defines wide style format | |||
| system id looks like : 0143.0438.AeF0.00"; | of ISIS metric."; | |||
| } | } | |||
| typedef isis-wide-metric { | typedef isis-std-metric { | |||
| type uint32 { | type uint8 { | |||
| range "0 .. 16777215"; | range "0 .. 63"; | |||
| } | } | |||
| description | description | |||
| "This type defines wide style format | "This type defines old style format | |||
| of ISIS metric."; | of ISIS metric."; | |||
| } | } | |||
| typedef isis-std-metric { | grouping isis-route-content { | |||
| type uint8 { | description | |||
| range "0 .. 63"; | "This group add isis-specific route properties."; | |||
| } | leaf metric { | |||
| description | type uint32; | |||
| "This type defines old style format | description | |||
| of ISIS metric."; | "This leaf describes isis metric of a route."; | |||
| } | } | |||
| leaf-list tag { | ||||
| type uint32; | ||||
| description | ||||
| "This leaf describes list of tags associated | ||||
| with the route."; | ||||
| } | ||||
| leaf route-type { | ||||
| type enumeration { | ||||
| enum l2-up-internal { | ||||
| description "Level 2 internal route | ||||
| and not leaked to a lower level"; | ||||
| } | ||||
| enum l1-up-internal { | ||||
| description "Level 1 internal route | ||||
| and not leaked to a lower level"; | ||||
| } | ||||
| enum l2-up-external { | ||||
| description "Level 2 external route | ||||
| and not leaked to a lower level"; | ||||
| } | ||||
| enum l1-up-external { | ||||
| description "Level 1 external route | ||||
| and not leaked to a lower level"; | ||||
| } | ||||
| enum l2-down-internal { | ||||
| description "Level 2 internal route | ||||
| and leaked to a lower level"; | ||||
| grouping isis-route-content { | } | |||
| description | enum l1-down-internal { | |||
| "This group add isis-specific route properties."; | description "Level 1 internal route | |||
| leaf metric { | and leaked to a lower level"; | |||
| type uint32; | } | |||
| description | enum l2-down-external { | |||
| "This leaf describes isis metric of a route."; | description "Level 2 external route | |||
| } | and leaked to a lower level"; | |||
| leaf-list tag { | } | |||
| type uint32; | enum l1-down-external { | |||
| description | description "Level 1 external route | |||
| "This leaf describes list of tags associated | and leaked to a lower level"; | |||
| with the route."; | } | |||
| } | } | |||
| leaf route-type { | description | |||
| type enumeration { | "This leaf describes the type of isis route."; | |||
| enum l2-up-internal { | } | |||
| description "Level 2 internal route | } | |||
| and not leaked to a lower level"; | ||||
| } | ||||
| enum l1-up-internal { | ||||
| description "Level 1 internal route | ||||
| and not leaked to a lower level"; | ||||
| } | ||||
| enum l2-up-external { | ||||
| description "Level 2 external route | ||||
| and not leaked to a lower level"; | ||||
| } | ||||
| enum l1-up-external { | ||||
| description "Level 1 external route | ||||
| and not leaked to a lower level"; | ||||
| } | ||||
| enum l2-down-internal { | ||||
| description "Level 2 internal route | ||||
| and leaked to a lower level"; | ||||
| } | ||||
| enum l1-down-internal { | ||||
| description "Level 1 internal route | ||||
| and leaked to a lower level"; | ||||
| } | ||||
| enum l2-down-external { | ||||
| description "Level 2 external route | ||||
| and leaked to a lower level"; | ||||
| } | ||||
| enum l1-down-external { | ||||
| description "Level 1 external route | ||||
| and leaked to a lower level"; | ||||
| } | ||||
| } | ||||
| description | ||||
| "This leaf describes the type of isis route."; | ||||
| } | ||||
| } | ||||
| augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" { | augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" { | |||
| when "rt:source-protocol = 'isis:isis'" { | when "rt:source-protocol = 'isis:isis'" { | |||
| description "ISIS-specific route attributes."; | description "ISIS-specific route attributes."; | |||
| } | } | |||
| uses isis-route-content; | uses isis-route-content; | |||
| description | description | |||
| "This augments route object in RIB with ISIS-specific | "This augments route object in RIB with ISIS-specific | |||
| attributes."; | attributes."; | |||
| } | } | |||
| augment "/rt:active-route/rt:output/rt:route" | augment "/rt:active-route/rt:output/rt:route" | |||
| { | { | |||
| uses isis-route-content; | uses isis-route-content; | |||
| description "ISIS-specific route attributes."; | description "ISIS-specific route attributes."; | |||
| } | } | |||
| grouping isis-prefix-ipv4-std { | grouping isis-prefix-ipv4-std { | |||
| description | description | |||
| "This group defines attributes of an | "This group defines attributes of an | |||
| IPv4 standard prefix."; | IPv4 standard prefix."; | |||
| leaf up-down { | leaf up-down { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "This leaf expresses the value of up/down bit."; | "This leaf expresses the value of up/down bit."; | |||
| } | } | |||
| leaf i-e { | leaf i-e { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "This leaf expresses the value of I/E bit."; | "This leaf expresses the value of I/E bit."; | |||
| } | } | |||
| leaf ip-prefix { | leaf ip-prefix { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "This leaf describes the IPv4 prefix"; | "This leaf describes the IPv4 prefix"; | |||
| } | } | |||
| 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 default-metric { | leaf default-metric { | |||
| type isis-std-metric; | type isis-std-metric; | |||
| description | description | |||
| "This leaf describes the isis default metric value"; | "This leaf describes the isis default metric value"; | |||
| } | } | |||
| container delay-metric { | container delay-metric { | |||
| leaf metric { | leaf metric { | |||
| type isis-std-metric; | type isis-std-metric; | |||
| description | description | |||
| "This leaf describes the isis delay metric value"; | "This leaf describes the isis delay metric value"; | |||
| } | } | |||
| leaf supported { | leaf supported { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "This leaf describes if the metric is supported."; | "This leaf describes if the metric is supported."; | |||
| } | } | |||
| description | description | |||
| "This container defines the ISIS delay metric."; | "This container defines the ISIS delay metric."; | |||
| } | } | |||
| container expense-metric { | container expense-metric { | |||
| leaf metric { | leaf metric { | |||
| type isis-std-metric; | type isis-std-metric; | |||
| description | description | |||
| "This leaf describes the isis delay metric value"; | "This leaf describes the isis delay metric value"; | |||
| } | } | |||
| leaf supported { | leaf supported { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "This leaf describes if the metric is supported."; | "This leaf describes if the metric is supported."; | |||
| } | } | |||
| description | description | |||
| "This container defines the ISIS expense metric."; | "This container defines the ISIS expense metric."; | |||
| } | } | |||
| container error-metric { | container error-metric { | |||
| leaf metric { | leaf metric { | |||
| type isis-std-metric; | type isis-std-metric; | |||
| description | description | |||
| "This leaf describes the isis delay metric value"; | "This leaf describes the isis delay metric value"; | |||
| } | ||||
| leaf supported { | ||||
| type boolean; | ||||
| default "false"; | ||||
| description | ||||
| "This leaf describes if the metric is supported."; | ||||
| } | ||||
| } | description | |||
| leaf supported { | "This container defines the ISIS error metric."; | |||
| type boolean; | } | |||
| default "false"; | } | |||
| description | ||||
| "This leaf describes if the metric is supported."; | ||||
| } | ||||
| description | grouping isis-prefix-ipv4-extended { | |||
| "This container defines the ISIS error metric."; | description | |||
| } | "This group defines attributes of an | |||
| } | IPv4 extended prefix."; | |||
| leaf up-down { | ||||
| type boolean; | ||||
| description | ||||
| "This leaf expresses the value of up/down bit."; | ||||
| } | ||||
| leaf ip-prefix { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "This leaf describes the IPv4 prefix"; | ||||
| } | ||||
| leaf prefix-len { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf describes the IPv4 prefix len in bits"; | ||||
| } | ||||
| grouping isis-prefix-ipv4-extended { | leaf metric { | |||
| description | type isis-wide-metric; | |||
| "This group defines attributes of an | description | |||
| IPv4 extended prefix."; | "This leaf describes the isis metric value"; | |||
| leaf up-down { | } | |||
| type boolean; | leaf-list tag { | |||
| description | type uint32; | |||
| "This leaf expresses the value of up/down bit."; | description | |||
| } | "This leaf describes a list of tags associated with | |||
| leaf ip-prefix { | the prefix."; | |||
| type inet:ipv4-address; | ||||
| description | ||||
| "This leaf describes the IPv4 prefix"; | ||||
| } | ||||
| leaf prefix-len { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf describes the IPv4 prefix len in bits"; | ||||
| } | ||||
| leaf metric { | } | |||
| type isis-wide-metric; | } | |||
| description | ||||
| "This leaf describes the isis metric value"; | ||||
| } | ||||
| leaf-list tag { | ||||
| type uint32; | ||||
| description | ||||
| "This leaf describes a list of tags associated with | ||||
| the prefix."; | ||||
| } | ||||
| } | ||||
| grouping isis-prefix-ipv6-extended { | grouping isis-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."; | |||
| } | } | |||
| leaf ip-prefix { | leaf ip-prefix { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "This leaf describes the IPv6 prefix"; | "This leaf describes the IPv6 prefix"; | |||
| } | } | |||
| 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 isis-wide-metric; | type isis-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."; | |||
| } | } | |||
| } | } | |||
| grouping isis-neighbor-extended { | grouping isis-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 isis-system-id; | type isis-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 isis-wide-metric; | type isis-wide-metric; | |||
| description | description | |||
| "This leaf describes the isis metric value"; | "This leaf describes the isis metric value"; | |||
| } | } | |||
| } | } | |||
| grouping isis-neighbor { | grouping isis-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 isis-system-id; | type isis-system-id; | |||
| description | description | |||
| "This leaf describes the system-id of the neighbor."; | "This leaf describes the system-id of the neighbor."; | |||
| } | } | |||
| leaf i-e { | leaf i-e { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "This leaf expresses the value of I/E bit."; | "This leaf expresses the value of I/E bit."; | |||
| } | } | |||
| leaf default-metric { | leaf default-metric { | |||
| type isis-std-metric; | type isis-std-metric; | |||
| description | description | |||
| "This leaf describes the isis default metric value"; | "This leaf describes the isis default metric value"; | |||
| } | } | |||
| container delay-metric { | container delay-metric { | |||
| leaf metric { | leaf metric { | |||
| type isis-std-metric; | type isis-std-metric; | |||
| description | description | |||
| "This leaf describes the isis delay metric value"; | "This leaf describes the isis delay metric value"; | |||
| } | } | |||
| leaf supported { | leaf supported { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "This leaf describes if the metric is supported."; | "This leaf describes if the metric is supported."; | |||
| } | } | |||
| description | description | |||
| "This container defines the ISIS delay metric."; | "This container defines the ISIS delay metric."; | |||
| } | } | |||
| container expense-metric { | container expense-metric { | |||
| leaf metric { | leaf metric { | |||
| type isis-std-metric; | type isis-std-metric; | |||
| description | description | |||
| "This leaf describes the isis delay metric value"; | "This leaf describes the isis delay metric value"; | |||
| } | } | |||
| leaf supported { | leaf supported { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "This leaf describes if the metric is supported."; | "This leaf describes if the metric is supported."; | |||
| } | } | |||
| description | description | |||
| "This container defines the ISIS expense metric."; | "This container defines the ISIS expense metric."; | |||
| } | } | |||
| container error-metric { | container error-metric { | |||
| leaf metric { | leaf metric { | |||
| type isis-std-metric; | type isis-std-metric; | |||
| description | description | |||
| "This leaf describes the isis delay metric value"; | "This leaf describes the isis delay metric value"; | |||
| } | } | |||
| leaf supported { | leaf supported { | |||
| type boolean; | type boolean; | |||
| default "false"; | default "false"; | |||
| description | description | |||
| "This leaf describes if the metric is supported."; | "This leaf describes if the metric is supported."; | |||
| } | } | |||
| description | description | |||
| "This container defines the ISIS error metric."; | "This container defines the ISIS error metric."; | |||
| } | } | |||
| } | } | |||
| grouping isis-database { | grouping isis-database { | |||
| description | description | |||
| "This group defines attributes of an | "This group defines attributes of an | |||
| ISIS database (Link State DB)."; | ISIS database (Link State DB)."; | |||
| leaf lsp-id { | leaf lsp-id { | |||
| type isis-lsp-id; | type isis-lsp-id; | |||
| description | description | |||
| "This leaf describes the LSP ID of the LSP."; | "This leaf describes the LSP ID of the LSP."; | |||
| } | } | |||
| leaf checksum { | leaf checksum { | |||
| type uint16; | type uint16; | |||
| description | description | |||
| "This leaf describes the checksum of the LSP."; | "This leaf describes the checksum of the LSP."; | |||
| } | } | |||
| leaf remaining-lifetime { | leaf remaining-lifetime { | |||
| type uint16; | type uint16; | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "This leaf describes the remaining lifetime | "This leaf describes the remaining lifetime | |||
| in seconds before the LSP expiration."; | in seconds before the LSP expiration."; | |||
| } | } | |||
| leaf sequence { | leaf sequence { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "This leaf describes the sequence number of the LSP."; | "This leaf describes the sequence number of the LSP."; | |||
| } | } | |||
| leaf attributes { | leaf attributes { | |||
| type bits { | type bits { | |||
| bit PARTITIONNED { | bit PARTITIONNED { | |||
| description | description | |||
| "If set, the originator supports partition | "If set, the originator supports partition | |||
| repair."; | repair."; | |||
| } | } | |||
| bit ATTACHED-ERROR { | bit ATTACHED-ERROR { | |||
| description | description | |||
| "If set, the originator is attached to | "If set, the originator is attached to | |||
| another area using the refered metric."; | another area using the refered metric."; | |||
| } | } | |||
| bit ATTACHED-EXPENSE { | bit ATTACHED-EXPENSE { | |||
| description | description | |||
| "If set, the originator is attached to | "If set, the originator is attached to | |||
| another area using the refered metric."; | another area using the refered metric."; | |||
| } | } | |||
| bit ATTACHED-DELAY { | bit ATTACHED-DELAY { | |||
| description | description | |||
| "If set, the originator is attached to | "If set, the originator is attached to | |||
| another area using the refered metric."; | another area using the refered metric."; | |||
| } | } | |||
| bit ATTACHED-DEFAULT { | bit ATTACHED-DEFAULT { | |||
| description | description | |||
| "If set, the originator is attached to | "If set, the originator is attached to | |||
| another area using the refered metric."; | another area using the refered metric."; | |||
| } | } | |||
| bit OVERLOAD { | bit OVERLOAD { | |||
| description | description | |||
| "If set, the originator is overloaded, | "If set, the originator is overloaded, | |||
| and must be avoided in path calculation."; | and must be avoided in path calculation."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "This leaf describes attributes of the LSP."; | "This leaf describes attributes of the LSP."; | |||
| } | } | |||
| container is-neighbor { | container is-neighbor { | |||
| list neighbor { | list neighbor { | |||
| key "neighbor-id"; | key "neighbor-id"; | |||
| uses isis-neighbor-extended; | uses isis-neighbor-extended; | |||
| description | description | |||
| "List of neighbors."; | "List of neighbors."; | |||
| } | } | |||
| description | description | |||
| "This leaf describes list of ISIS extended neighbors. | "This leaf describes list of ISIS extended neighbors. | |||
| ISIS reference is TLV 2."; | ISIS reference is TLV 2."; | |||
| } | } | |||
| container authentication { | ||||
| leaf authentication-type { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf describes the authentication type | ||||
| to be used."; | ||||
| } | ||||
| leaf authentication-key { | ||||
| type string; | ||||
| description | ||||
| "This leaf describes the authentication key | ||||
| to be used. For security reason, the | ||||
| authentication key MUST NOT be presented | ||||
| in plaintext format. Authors recommends | ||||
| to use MD5 hash to present the authentication-key."; | ||||
| } | ||||
| description "This container describes authentication | ||||
| information of the node. ISIS reference is TLV 10."; | ||||
| } | ||||
| container authentication { | container extended-is-neighbor { | |||
| leaf authentication-type { | list neighbor { | |||
| type uint8; | key "neighbor-id"; | |||
| description | uses isis-neighbor-extended; | |||
| "This leaf describes the authentication type | description | |||
| to be used."; | "List of neighbors."; | |||
| } | } | |||
| leaf authentication-key { | description | |||
| type string; | "This container describes list of ISIS extended | |||
| description | neighbors. | |||
| "This leaf describes the authentication key | ISIS reference is TLV 22."; | |||
| to be used."; | } | |||
| } | ||||
| description "This container describes authentication | ||||
| information of the node. ISIS reference is TLV 10."; | ||||
| } | ||||
| container extended-is-neighbor { | container ipv4-internal-reachability { | |||
| list neighbor { | list prefixes { | |||
| key "neighbor-id"; | key "ip-prefix"; | |||
| uses isis-neighbor-extended; | uses isis-prefix-ipv4-std; | |||
| description | description | |||
| "List of neighbors."; | "List of prefixes."; | |||
| } | } | |||
| description | description | |||
| "This container describes list of ISIS extended neighbors. | "This container describes list of ipv4 internal | |||
| ISIS reference is TLV 22."; | reachability information. | |||
| } | ISIS reference is TLV 128."; | |||
| } | ||||
| container ipv4-internal-reachability { | leaf-list protocol-supported { | |||
| list prefixes { | type uint8; | |||
| key "ip-prefix"; | description | |||
| uses isis-prefix-ipv4-std; | "This leaf describes the list of | |||
| description | supported protocols. | |||
| "List of prefixes."; | ISIS reference is TLV 129."; | |||
| } | } | |||
| description | ||||
| "This container describes list of ipv4 internal | ||||
| reachability information. | ||||
| ISIS reference is TLV 128."; | ||||
| } | ||||
| leaf-list protocol-supported { | container ipv4-external-reachability { | |||
| type uint8; | list prefixes { | |||
| description | key "ip-prefix"; | |||
| "This leaf describes the list of | uses isis-prefix-ipv4-std; | |||
| supported protocols. | description | |||
| ISIS reference is TLV 129."; | "List of prefixes."; | |||
| } | } | |||
| description | ||||
| "This container describes list of ipv4 external | ||||
| reachability information. | ||||
| ISIS reference is TLV 130."; | ||||
| } | ||||
| container ipv4-external-reachability { | leaf-list ipv4-addresses { | |||
| list prefixes { | type inet:ipv4-address; | |||
| key "ip-prefix"; | description | |||
| uses isis-prefix-ipv4-std; | "This leaf describes the ipv4 addresses of the node. | |||
| description | ISIS reference is TLV 132."; | |||
| "List of prefixes."; | } | |||
| } | ||||
| description | ||||
| "This container describes list of ipv4 external | ||||
| reachability information. | ||||
| ISIS reference is TLV 130."; | ||||
| } | ||||
| leaf-list ipv4-addresses { | leaf ipv4-te-routerid { | |||
| type inet:ipv4-address; | ||||
| description | ||||
| "This leaf describes the ipv4 addresses of the node. | ||||
| ISIS reference is TLV 132."; | ||||
| } | ||||
| leaf ipv4-te-routerid { | type inet:ipv4-address; | |||
| description | ||||
| "This leaf describes the IPv4 Traffic Engineering | ||||
| router ID of the node. | ||||
| ISIS reference is TLV 134."; | ||||
| } | ||||
| type inet:ipv4-address; | container extended-ipv4-reachability { | |||
| description | ||||
| "This leaf describes the IPv4 Traffic Engineering | ||||
| router ID of the node. | ||||
| ISIS reference is TLV 134."; | ||||
| } | ||||
| container extended-ipv4-reachability { | list prefixes { | |||
| key "ip-prefix"; | ||||
| uses isis-prefix-ipv4-extended; | ||||
| description | ||||
| "List of prefixes."; | ||||
| } | ||||
| description | ||||
| "This container describes list of ipv4 extended | ||||
| reachability information. | ||||
| ISIS reference is TLV 135."; | ||||
| } | ||||
| leaf dynamic-hostname { | ||||
| type string; | ||||
| list prefixes { | description | |||
| key "ip-prefix"; | "This leaf describes the name of the node. | |||
| uses isis-prefix-ipv4-extended; | ISIS reference is TLV 137."; | |||
| description | } | |||
| "List of prefixes."; | ||||
| } | ||||
| description | ||||
| "This container describes list of ipv4 extended | ||||
| reachability information. | ||||
| ISIS reference is TLV 135."; | ||||
| } | ||||
| leaf dynamic-hostname { | leaf ipv6-te-routerid { | |||
| type string; | type inet:ipv6-address; | |||
| description | ||||
| "This leaf describes the IPv6 Traffic Engineering | ||||
| router ID of the node. | ||||
| ISIS reference is TLV 140."; | ||||
| } | ||||
| description | container mt-is-neighbor { | |||
| "This leaf describes the name of the node. | list neighbor { | |||
| ISIS reference is TLV 137."; | key "neighbor-id"; | |||
| } | leaf MT-ID { | |||
| leaf ipv6-te-routerid { | type uint16 { | |||
| type inet:ipv6-address; | range "0 .. 4095"; | |||
| description | } | |||
| "This leaf describes the IPv6 Traffic Engineering | description | |||
| router ID of the node. | "This leaf defines the identifier | |||
| ISIS reference is TLV 140."; | of a topology."; | |||
| } | } | |||
| uses isis-neighbor-extended; | ||||
| description | ||||
| "List of neighbors."; | ||||
| } | ||||
| description | ||||
| "This container describes list of ISIS multi-topology | ||||
| neighbors. | ||||
| ISIS reference is TLV 223."; | ||||
| } | ||||
| container mt-is-neighbor { | container mt-entries { | |||
| list neighbor { | list topology { | |||
| key "neighbor-id"; | key "MT-ID"; | |||
| leaf MT-ID { | ||||
| type uint16 { | ||||
| range "0 .. 4095"; | ||||
| } | ||||
| description | ||||
| "This leaf defines the identifier | ||||
| of a topology."; | ||||
| } | ||||
| uses isis-neighbor-extended; | ||||
| description | ||||
| "List of neighbors."; | ||||
| } | ||||
| description | ||||
| "This container describes list of ISIS multi-topology | ||||
| neighbors. | ||||
| ISIS reference is TLV 223."; | ||||
| } | ||||
| container mt-entries { | leaf MT-ID { | |||
| list topology { | type uint16 { | |||
| key "MT-ID"; | range "0 .. 4095"; | |||
| } | ||||
| description | ||||
| "This leaf defines the identifier | ||||
| of a topology."; | ||||
| } | ||||
| leaf MT-ID { | leaf attributes { | |||
| type uint16 { | type bits { | |||
| range "0 .. 4095"; | bit OVERLOAD { | |||
| } | description | |||
| description | "If set, the originator is overloaded, | |||
| "This leaf defines the identifier | and must be avoided in path | |||
| of a topology."; | calculation."; | |||
| } | } | |||
| bit ATTACHED { | ||||
| description | ||||
| "If set, the originator is attached to | ||||
| another area using the refered metric."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "This leaf describes attributes of the LSP | ||||
| for the associated topology."; | ||||
| } | ||||
| description | ||||
| "List of topologies supported."; | ||||
| } | ||||
| description | ||||
| "This container describes the topology supported. | ||||
| ISIS reference is TLV 229."; | ||||
| } | ||||
| leaf attributes { | leaf-list ipv6-addresses { | |||
| type bits { | type inet:ipv6-address; | |||
| bit OVERLOAD { | description | |||
| description | "This leaf describes the ipv6 interface | |||
| "If set, the originator is overloaded, | addresses of the node. | |||
| and must be avoided in path | ISIS reference is TLV 232."; | |||
| calculation."; | } | |||
| } | ||||
| bit ATTACHED { | ||||
| description | ||||
| "If set, the originator is attached to | ||||
| another area using the refered metric."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "This leaf describes attributes of the LSP | ||||
| for the associated topology."; | ||||
| } | ||||
| description | ||||
| "List of topologies supported."; | ||||
| } | ||||
| description | ||||
| "This container describes the topology supported. | ||||
| ISIS reference is TLV 229."; | ||||
| } | ||||
| leaf-list ipv6-addresses { | container mt-extended-ipv4-reachability { | |||
| type inet:ipv6-address; | list prefixes { | |||
| description | key "ip-prefix"; | |||
| "This leaf describes the ipv6 interface | leaf MT-ID { | |||
| addresses of the node. | type uint16 { | |||
| ISIS reference is TLV 232."; | range "0 .. 4095"; | |||
| } | } | |||
| description | ||||
| "This leaf defines the identifier | ||||
| of a topology."; | ||||
| } | ||||
| uses isis-prefix-ipv4-extended; | ||||
| description | ||||
| "List of prefixes."; | ||||
| container mt-extended-ipv4-reachability { | } | |||
| list prefixes { | description | |||
| key "ip-prefix"; | "This container describes list of ipv4 | |||
| leaf MT-ID { | reachability information in multi-topology | |||
| type uint16 { | environment. | |||
| range "0 .. 4095"; | ISIS reference is TLV 235."; | |||
| } | } | |||
| description | ||||
| "This leaf defines the identifier | ||||
| of a topology."; | ||||
| } | ||||
| uses isis-prefix-ipv4-extended; | ||||
| description | ||||
| "List of prefixes."; | ||||
| } | container mt-ipv6-reachability { | |||
| description | list prefixes { | |||
| "This container describes list of ipv4 | key "ip-prefix"; | |||
| reachability information in multi-topology | leaf MT-ID { | |||
| environment. | type uint16 { | |||
| ISIS reference is TLV 235."; | range "0 .. 4095"; | |||
| } | } | |||
| description | ||||
| "This leaf defines the identifier | ||||
| of a topology."; | ||||
| } | ||||
| uses isis-prefix-ipv6-extended; | ||||
| description | ||||
| "List of prefixes."; | ||||
| } | ||||
| description | ||||
| "This container describes list of ipv6 | ||||
| reachability information in multi-topology | ||||
| environment. | ||||
| ISIS reference is TLV 237."; | ||||
| } | ||||
| container mt-ipv6-reachability { | container ipv6-reachability { | |||
| list prefixes { | list prefixes { | |||
| key "ip-prefix"; | key "ip-prefix"; | |||
| leaf MT-ID { | uses isis-prefix-ipv6-extended; | |||
| type uint16 { | description | |||
| range "0 .. 4095"; | "List of prefixes."; | |||
| } | } | |||
| description | description | |||
| "This leaf defines the identifier | "This container describes list of ipv6 | |||
| of a topology."; | reachability information. | |||
| } | ISIS reference is TLV 236."; | |||
| uses isis-prefix-ipv6-extended; | ||||
| description | ||||
| "List of prefixes."; | ||||
| } | ||||
| description | ||||
| "This container describes list of ipv6 | ||||
| reachability information in multi-topology | ||||
| environment. | ||||
| ISIS reference is TLV 237."; | ||||
| } | ||||
| container ipv6-reachability { | } | |||
| list prefixes { | ||||
| key "ip-prefix"; | ||||
| uses isis-prefix-ipv6-extended; | ||||
| description | ||||
| "List of prefixes."; | ||||
| } | ||||
| description | ||||
| "This container describes list of ipv6 | ||||
| reachability information. | ||||
| ISIS reference is TLV 236."; | ||||
| } | ||||
| container router-capabilities { | container router-capabilities { | |||
| 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 | ||||
| "This container describes the capabilities of the node. | ||||
| This container may be extended with detailed | ||||
| information. | ||||
| ISIS reference is TLV 242."; | ||||
| } | ||||
| } | ||||
| } | grouping isis-address-family-cfg { | |||
| description | description | |||
| "This container describes the capabilities of the node. | "This group defines address-family-cfg | |||
| This container may be extended with detailed | global configuration for ISIS."; | |||
| information. | leaf ipv4-unicast { | |||
| ISIS reference is TLV 242."; | type boolean; | |||
| } | description | |||
| } | "This leaf defines if IPv4 unicast is activated."; | |||
| } | ||||
| leaf ipv6-unicast { | ||||
| type boolean; | ||||
| description | ||||
| "This leaf defines if IPv6 unicast is activated."; | ||||
| } | ||||
| leaf ipv4-multicast { | ||||
| type boolean; | ||||
| description | ||||
| "This leaf defines if IPv4 multicast is activated."; | ||||
| } | ||||
| leaf ipv6-multicast { | ||||
| type boolean; | ||||
| description | ||||
| "This leaf defines if IPv6 multicast is activated."; | ||||
| } | ||||
| } | ||||
| grouping isis-address-family-cfg { | grouping isis-interface-hello-cfg { | |||
| description | description | |||
| "This group defines address-family-cfg | "This group defines hello interface | |||
| global configuration for ISIS."; | parameters for ISIS."; | |||
| leaf ipv4-unicast { | leaf hello-authentication-type { | |||
| type boolean; | type enumeration { | |||
| description | enum none { | |||
| "This leaf defines if IPv4 unicast is activated."; | description "No authentication used."; | |||
| } | } | |||
| leaf ipv6-unicast { | enum plaintext { | |||
| type boolean; | description "Plain text password used."; | |||
| description | } | |||
| "This leaf defines if IPv6 unicast is activated."; | enum message-digest { | |||
| } | description "MD5 digest used."; | |||
| leaf ipv4-multicast { | } | |||
| type boolean; | } | |||
| description | description | |||
| "This leaf defines if IPv4 multicast is activated."; | "This leaf describes the authentication type | |||
| } | to be used in hello messages."; | |||
| leaf ipv6-multicast { | } | |||
| type boolean; | leaf hello-authentication-key { | |||
| description | type string; | |||
| "This leaf defines if IPv6 multicast is activated."; | 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 hello-interval { | ||||
| type uint16; | ||||
| units "seconds"; | ||||
| description | ||||
| "This leaf defines the interval of hello messages."; | ||||
| } | ||||
| leaf hello-multiplier { | ||||
| type uint16; | ||||
| description | ||||
| "This leaf defines the number of hello failed to be | ||||
| received before declaring the adjacency down."; | ||||
| } | ||||
| } | ||||
| grouping isis-interface-hello-cfg { | grouping isis-interface-level-cfg { | |||
| description | description | |||
| "This group defines hello interface | "This group defines level specific | |||
| parameters for ISIS."; | configuration for ISIS interfaces."; | |||
| leaf hello-authentication-type { | uses isis-interface-hello-cfg; | |||
| type enumeration { | ||||
| enum none { | ||||
| description "No authentication used."; | ||||
| } | ||||
| enum plaintext { | ||||
| description "Plain text password used."; | ||||
| } | ||||
| enum message-digest { | ||||
| description "MD5 digest used."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "This leaf describes the authentication type | ||||
| to be used in hello messages."; | ||||
| } | ||||
| leaf hello-authentication-key { | ||||
| type string; | ||||
| description | ||||
| "This leaf describes the authentication key | ||||
| to be used in hello messages."; | ||||
| } | ||||
| leaf hello-interval { | ||||
| type uint16; | ||||
| units "seconds"; | ||||
| description | ||||
| "This leaf defines the interval of hello messages."; | ||||
| } | ||||
| leaf hello-multiplier { | ||||
| type uint16; | ||||
| description | ||||
| "This leaf defines the number of hello failed to be | ||||
| received before declaring the adjacency down."; | ||||
| } | ||||
| } | ||||
| grouping isis-interface-level-cfg { | uses isis-address-family-cfg; | |||
| description | leaf priority { | |||
| "This group defines level specific | type uint8 { | |||
| configuration for ISIS interfaces."; | range "0 .. 127"; | |||
| uses isis-interface-hello-cfg; | } | |||
| uses isis-address-family-cfg; | description | |||
| "This leaf describes the priority of the interface | ||||
| for DIS election."; | ||||
| } | ||||
| leaf ipv4-unicast-metric { | ||||
| type isis-wide-metric; | ||||
| description | ||||
| "This leaf describes the IPv4 unicast metric | ||||
| of the interface."; | ||||
| } | ||||
| leaf ipv6-unicast-metric { | ||||
| type isis-wide-metric; | ||||
| description | ||||
| "This leaf describes the IPv6 unicast metric | ||||
| of the interface."; | ||||
| } | ||||
| leaf ipv4-multicast-metric { | ||||
| type isis-wide-metric; | ||||
| description | ||||
| "This leaf describes the IPv4 multicast metric | ||||
| of the interface."; | ||||
| } | ||||
| leaf ipv6-multicast-metric { | ||||
| type isis-wide-metric; | ||||
| description | ||||
| "This leaf describes the IPv6 multicast metric | ||||
| of the interface."; | ||||
| } | ||||
| leaf passive { | ||||
| type boolean; | ||||
| default "false"; | ||||
| description | ||||
| "This leaf defines if interface is in passive mode | ||||
| (ISIS not running, but network is advertised)."; | ||||
| } | ||||
| } | ||||
| leaf priority { | grouping isis-authentication-cfg { | |||
| type uint8 { | description | |||
| range "0 .. 127"; | "This group defines authentication | |||
| } | configuration for ISIS."; | |||
| leaf psnp-authentication { | ||||
| type boolean; | ||||
| default "true"; | ||||
| description | ||||
| "This leaf describes if PSNP messages must be | ||||
| authenticated."; | ||||
| } | ||||
| leaf csnp-authentication { | ||||
| type boolean; | ||||
| default "true"; | ||||
| description | ||||
| "This leaf describes if CSNP messages must be | ||||
| authenticated."; | ||||
| } | ||||
| leaf hello-authentication { | ||||
| type boolean; | ||||
| default "true"; | ||||
| description | ||||
| "This leaf describes if HELLO messages must be | ||||
| authenticated."; | ||||
| } | ||||
| leaf authentication-key { | ||||
| type string; | ||||
| description | ||||
| "This leaf describes the authentication key | ||||
| to be used. | ||||
| 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 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 leaf describes the authentication type | ||||
| to be used."; | ||||
| } | ||||
| } | ||||
| grouping isis-level-cfg { | ||||
| description | ||||
| "This group defines level specific | ||||
| global configuration for ISIS."; | ||||
| leaf enabled { | ||||
| type boolean; | ||||
| default "true"; | ||||
| description | ||||
| "This leaf defines the status of the administrative | ||||
| status of the level (Active / not active)."; | ||||
| } | ||||
| description | uses isis-authentication-cfg; | |||
| "This leaf describes the priority of the interface | ||||
| for DIS election."; | ||||
| } | ||||
| leaf ipv4-unicast-metric { | ||||
| type isis-wide-metric; | ||||
| description | ||||
| "This leaf describes the IPv4 unicast metric | ||||
| of the interface."; | ||||
| } | ||||
| leaf ipv6-unicast-metric { | ||||
| type isis-wide-metric; | ||||
| description | ||||
| "This leaf describes the IPv6 unicast metric | ||||
| of the interface."; | ||||
| } | ||||
| leaf ipv4-multicast-metric { | ||||
| type isis-wide-metric; | ||||
| description | ||||
| "This leaf describes the IPv4 multicast metric | ||||
| of the interface."; | ||||
| } | ||||
| leaf ipv6-multicast-metric { | ||||
| type isis-wide-metric; | ||||
| description | ||||
| "This leaf describes the IPv6 multicast metric | ||||
| of the interface."; | ||||
| } | ||||
| leaf passive { | ||||
| type boolean; | ||||
| default "false"; | ||||
| description | ||||
| "This leaf defines if interface is in passive mode | ||||
| (ISIS not running, but network is advertised)."; | ||||
| } | ||||
| } | ||||
| grouping isis-authentication-cfg { | leaf metric-type { | |||
| description | type enumeration { | |||
| "This group defines authentication | enum wide-only { | |||
| configuration for ISIS."; | description | |||
| leaf psnp-authentication { | "Advertise new metric style only (RFC5305)"; | |||
| type boolean; | } | |||
| default "true"; | enum old-only { | |||
| description | description | |||
| "This leaf describes if PSNP messages must be | "Advertise old metric style only (RFC1195)"; | |||
| authenticated."; | } | |||
| } | enum both { | |||
| leaf csnp-authentication { | description "Advertise both metric styles"; | |||
| type boolean; | } | |||
| default "true"; | } | |||
| description | description | |||
| "This leaf describes if CSNP messages must be | "This leaf describes the type of metric to be generated. | |||
| authenticated."; | Wide-only means only new metric style is generated, | |||
| } | old-only means that only old style metric is generated, | |||
| leaf hello-authentication { | and both means that both are advertised."; | |||
| type boolean; | } | |||
| default "true"; | leaf preference { | |||
| description | type uint8; | |||
| "This leaf describes if HELLO messages must be | description | |||
| authenticated."; | "This leaf defines the protocol preference."; | |||
| } | } | |||
| leaf authentication-key { | leaf external-preference { | |||
| type string; | type uint8; | |||
| description | description | |||
| "This leaf describes the authentication key | "This leaf defines the protocol preference for external | |||
| to be used."; | routes."; | |||
| } | } | |||
| leaf authentication-type { | leaf default-ipv4-unicast-metric { | |||
| type enumeration { | type isis-wide-metric; | |||
| enum none { | description | |||
| description "No authentication used."; | "This leaf defines the IPv4 unicast default metric."; | |||
| } | } | |||
| enum plaintext { | leaf default-ipv6-unicast-metric { | |||
| description "Plain text password used."; | type isis-wide-metric; | |||
| } | description | |||
| enum message-digest { | "This leaf defines the IPv6 unicast default metric."; | |||
| description "MD5 digest used."; | } | |||
| } | leaf default-ipv4-multicast-metric { | |||
| } | type isis-wide-metric; | |||
| description | description | |||
| "This leaf describes the authentication type | "This leaf defines the IPv4 multicast default metric."; | |||
| to be used."; | } | |||
| } | leaf default-ipv6-multicast-metric { | |||
| } | type isis-wide-metric; | |||
| description | ||||
| "This leaf defines the IPv6 multicast default metric."; | ||||
| } | ||||
| } | ||||
| grouping isis-level-cfg { | augment "/rt:routing/rt:routing-instance/rt:routing-protocols/" | |||
| description | +"rt:routing-protocol" { | |||
| "This group defines level specific | when "rt:type = 'isis:isis'" { | |||
| global configuration for ISIS."; | description | |||
| leaf enabled { | "This augment is only valid when routing protocol | |||
| type boolean; | instance type is isis."; | |||
| default "true"; | } | |||
| description | description | |||
| "This leaf defines the status of the administrative | "This augments a routing protocol instance with ISIS | |||
| status of the level (Active / not active)."; | specific parameters."; | |||
| } | container isis { | |||
| leaf isis-level { | ||||
| type isis-level; | ||||
| default "level-1-2"; | ||||
| description | ||||
| "This leaf describes the type of ISIS node. | ||||
| A node can be level-1-only, level-2-only | ||||
| or level-1-2. | ||||
| "; | ||||
| } | ||||
| leaf nsap-address { | ||||
| type simple-iso-address; | ||||
| description | ||||
| "This leaf defines the NSAP address of the node | ||||
| in a simple format. This parameter is mandatory."; | ||||
| } | ||||
| leaf ipv4-router-id { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "Router ID value that would be used in TLV134."; | ||||
| } | ||||
| leaf ipv6-router-id { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "Router ID value that would be used in TLV234."; | ||||
| } | ||||
| leaf reference-bandwidth { | ||||
| type uint32; | ||||
| units "bps"; | ||||
| description | ||||
| "This leaf defines the bandwidth for calculating | ||||
| metric."; | ||||
| } | ||||
| uses isis-authentication-cfg; | leaf lsp-mtu { | |||
| type uint16; | ||||
| units "bytes"; | ||||
| default 1492; | ||||
| description | ||||
| "This leaf describes the maximum size of a | ||||
| LSP PDU in bytes."; | ||||
| } | ||||
| leaf lsp-lifetime { | ||||
| type uint16; | ||||
| units "seconds"; | ||||
| description | ||||
| "This leaf describes the lifetime of the router | ||||
| LSP in seconds."; | ||||
| } | ||||
| leaf lsp-refresh { | ||||
| type uint16; | ||||
| units "seconds"; | ||||
| description | ||||
| "This leaf describes the refresh interval of the | ||||
| router LSP in seconds."; | ||||
| } | ||||
| leaf metric-type { | uses isis-authentication-cfg; | |||
| type enumeration { | ||||
| enum wide-only { | ||||
| description "Advertise new metric style only (RFC5305)"; | ||||
| } | container isis-multi-topology-cfg { | |||
| enum old-only { | uses isis-address-family-cfg; | |||
| description "Advertise old metric style only (RFC1195)"; | description | |||
| } | "This container describes activation of MT extensions | |||
| enum both { | for supporting new address families."; | |||
| description "Advertise both metric styles"; | } | |||
| } | ||||
| } | ||||
| description | ||||
| "This leaf describes the type of metric to be generated. | ||||
| Wide-only means only new metric style is generated, old-only | ||||
| means that only old style metric is generated, and both means | ||||
| that both are advertised."; | ||||
| } | ||||
| leaf preference { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf defines the protocol preference."; | ||||
| } | ||||
| leaf external-preference { | ||||
| type uint8; | ||||
| description | ||||
| "This leaf defines the protocol preference for external routes."; | ||||
| } | ||||
| leaf default-ipv4-unicast-metric { | ||||
| type isis-wide-metric; | ||||
| description | ||||
| "This leaf defines the IPv4 unicast default metric."; | ||||
| } | ||||
| leaf default-ipv6-unicast-metric { | ||||
| type isis-wide-metric; | ||||
| description | ||||
| "This leaf defines the IPv6 unicast default metric."; | ||||
| } | ||||
| leaf default-ipv4-multicast-metric { | ||||
| type isis-wide-metric; | ||||
| description | ||||
| "This leaf defines the IPv4 multicast default metric."; | ||||
| } | ||||
| leaf default-ipv6-multicast-metric { | ||||
| type isis-wide-metric; | ||||
| description | ||||
| "This leaf defines the IPv6 multicast default metric."; | ||||
| } | ||||
| } | ||||
| augment "/rt:routing/rt:routing-instance/rt:routing-protocols/" | container isis-level-1-cfg { | |||
| +"rt:routing-protocol" { | uses isis-level-cfg; | |||
| when "rt:type = 'isis:isis'" { | description | |||
| description | "Defines configuration parameters of level 1."; | |||
| "This augment is only valid when routing protocol | } | |||
| instance type is isis."; | ||||
| } | ||||
| description | ||||
| "This augments a routing protocol instance with ISIS | ||||
| specific parameters."; | ||||
| container isis-cfg { | ||||
| leaf isis-level { | ||||
| type isis-level; | ||||
| default "level-1-2"; | ||||
| description | ||||
| "This leaf describes the type of ISIS node. | ||||
| A node can be level-1-only, level-2-only or level-1-2. | ||||
| "; | ||||
| } | ||||
| leaf nsap-address { | ||||
| type simple-iso-address; | ||||
| description | ||||
| "This leaf defines the NSAP address of the node | ||||
| in a simple format. This parameter is mandatory."; | ||||
| } | ||||
| leaf ipv4-router-id { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "Router ID value that would be used in TLV134."; | ||||
| } | ||||
| leaf ipv6-router-id { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "Router ID value that would be used in TLV234."; | ||||
| } | ||||
| leaf reference-bandwidth { | ||||
| type uint32; | ||||
| units "bps"; | ||||
| description | ||||
| "This leaf defines the bandwidth for calculating metric."; | ||||
| } | ||||
| leaf lsp-mtu { | container isis-level-2-cfg { | |||
| type uint16; | uses isis-level-cfg; | |||
| units "bytes"; | description | |||
| default 1492; | "Defines configuration parameters of level 2."; | |||
| description | ||||
| "This leaf describes the maximum size of a | ||||
| LSP PDU in bytes."; | ||||
| } | ||||
| leaf lsp-lifetime { | ||||
| type uint16; | ||||
| units "seconds"; | ||||
| description | ||||
| "This leaf describes the lifetime of the router | ||||
| LSP in seconds."; | ||||
| } | ||||
| leaf lsp-refresh { | ||||
| type uint16; | ||||
| units "seconds"; | ||||
| description | ||||
| "This leaf describes the refresh interval of the | ||||
| router LSP in seconds."; | ||||
| } | ||||
| uses isis-authentication-cfg; | } | |||
| container isis-multi-topology-cfg { | container overload { | |||
| uses isis-address-family-cfg; | leaf status { | |||
| description | type boolean; | |||
| "This container describes activation of MT extensions | description | |||
| for supporting new address families."; | "This leaf defines the overload status."; | |||
| } | } | |||
| leaf timeout { | ||||
| type uint16; | ||||
| units "seconds"; | ||||
| description | ||||
| "This leaf defines the timeout in seconds | ||||
| of the overload condition."; | ||||
| } | ||||
| description | ||||
| "This leaf describes if the router is | ||||
| set to overload state."; | ||||
| } | ||||
| container isis-level-1-cfg { | container interfaces { | |||
| uses isis-level-cfg; | list interface { | |||
| description | key "name"; | |||
| "Defines configuration parameters of level 1."; | leaf name { | |||
| } | type leafref { | |||
| path "/rt:routing/rt:routing-instance/" | ||||
| +"rt:interfaces/rt:interface/rt:name"; | ||||
| } | ||||
| description | ||||
| "Reference to the interface within | ||||
| the routing-instance."; | ||||
| } | ||||
| leaf level { | ||||
| type isis-level; | ||||
| default "level-1-2"; | ||||
| description | ||||
| "This leaf defines the associated ISIS level | ||||
| of the interface."; | ||||
| container isis-level-2-cfg { | } | |||
| uses isis-level-cfg; | leaf lsp-interval { | |||
| description | type uint16; | |||
| "Defines configuration parameters of level 2."; | units "milliseconds"; | |||
| description | ||||
| "This leaf defines the interval between LSP | ||||
| transmissions in msec"; | ||||
| } | ||||
| 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."; | ||||
| } | ||||
| } | uses isis-interface-hello-cfg; | |||
| container overload { | leaf hello-padding { | |||
| leaf status { | type boolean; | |||
| type boolean; | description | |||
| description | "This leaf defines if ISIS Hellos would be | |||
| "This leaf defines the overload status."; | padded up to MTU size."; | |||
| } | } | |||
| leaf timeout { | ||||
| type uint16; | ||||
| units "seconds"; | ||||
| description | ||||
| "This leaf defines the timeout in seconds | ||||
| of the overload condition."; | ||||
| } | ||||
| description | ||||
| "This leaf describes if the router is | ||||
| set to overload state."; | ||||
| } | ||||
| container interfaces { | uses isis-address-family-cfg; | |||
| list interface { | ||||
| key "name"; | ||||
| leaf name { | ||||
| type leafref { | ||||
| path "/rt:routing/rt:routing-instance/" | ||||
| +"rt:interfaces/rt:interface/rt:name"; | ||||
| } | ||||
| description | ||||
| "Reference to the interface within | ||||
| the routing-instance."; | ||||
| } | ||||
| leaf level { | ||||
| type isis-level; | ||||
| default "level-1-2"; | ||||
| description | ||||
| "This leaf defines the associated ISIS level | ||||
| of the interface."; | ||||
| } | ||||
| leaf lsp-interval { | ||||
| type uint16; | ||||
| units "milliseconds"; | ||||
| description | ||||
| "This leaf defines the interval between LSP | ||||
| transmissions in msec"; | ||||
| } | ||||
| 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."; | ||||
| } | ||||
| uses isis-interface-hello-cfg; | ||||
| leaf hello-padding { | leaf interface-type { | |||
| type boolean; | type enumeration { | |||
| description | enum broadcast { | |||
| "This leaf defines if ISIS Hellos would be | description "Broadcast interface type. | |||
| padded up to MTU size."; | Would result in DIS election."; | |||
| } | } | |||
| enum point-to-point { | ||||
| description | ||||
| "Point to point interface type."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "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."; | ||||
| } | ||||
| uses isis-address-family-cfg; | leaf enabled { | |||
| type boolean; | ||||
| default "true"; | ||||
| description | ||||
| "This leaf describes the administrative | ||||
| status of the ISIS interface."; | ||||
| leaf interface-type { | } | |||
| type enumeration { | ||||
| enum broadcast { | ||||
| description "Broadcast interface type. | ||||
| Would result in DIS election."; | ||||
| } | ||||
| enum point-to-point { | ||||
| description "Point to point interface type."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "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-list tag { | |||
| type boolean; | type uint32; | |||
| default "true"; | description | |||
| description | "This leaf defines list of tags associated | |||
| "This leaf describes the administrative status | with the interface."; | |||
| of the ISIS interface."; | } | |||
| } | ||||
| leaf-list tag { | container level-1 { | |||
| type uint32; | uses isis-interface-level-cfg; | |||
| description | description | |||
| "This leaf defines list of tags associated | "This container defines the level 1 specific | |||
| with the interface."; | configuration of the interface."; | |||
| } | } | |||
| container level-1 { | container level-2 { | |||
| uses isis-interface-level-cfg; | uses isis-interface-level-cfg; | |||
| description | description | |||
| "This container defines the level 1 specific | "This container defines the level 2 specific | |||
| configuration of the interface."; | configuration of the interface."; | |||
| } | } | |||
| container level-2 { | description | |||
| uses isis-interface-level-cfg; | "List of ISIS interfaces."; | |||
| description | } | |||
| "This container defines the level 2 specific | description | |||
| configuration of the interface."; | "This container defines ISIS interface specific | |||
| } | configuration objects."; | |||
| } | ||||
| description | description | |||
| "List of ISIS interfaces."; | "This container defines ISIS specific configuration | |||
| } | objects."; | |||
| description | } | |||
| "This container defines ISIS interface specific | ||||
| configuration objects."; | ||||
| } | ||||
| description | } | |||
| "This container defines ISIS specific configuration | ||||
| objects."; | ||||
| } | ||||
| } | ||||
| 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" { | |||
| when "rt:type = 'isis:isis'" { | when "rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment is only valid when routing protocol | "This augment is only valid when routing protocol | |||
| instance type is isis."; | instance type is isis."; | |||
| } | } | |||
| description | description | |||
| "This augments routing protocol instance states with ISIS | "This augments routing protocol instance states with ISIS | |||
| specific parameters."; | specific parameters."; | |||
| container isis-state { | container isis-state { | |||
| config false; | config false; | |||
| container adjacencies { | container adjacencies { | |||
| list adjacency { | list adjacency { | |||
| 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."; | |||
| } | } | |||
| leaf level { | leaf level { | |||
| type uint8 { | type uint8 { | |||
| range "1 .. 2"; | range "1 .. 2"; | |||
| } | } | |||
| description | description | |||
| "This leaf describes the associated | "This leaf describes the associated | |||
| ISIS level of the interface. | ISIS level of the interface. | |||
| The value of the level can only be 1 | The value of the level can only be 1 | |||
| or 2."; | or 2."; | |||
| } | } | |||
| leaf state { | leaf state { | |||
| type enumeration { | type enumeration { | |||
| enum "Up" { | enum "Up" { | |||
| description | description | |||
| "This state describes that | "This state describes that | |||
| adjacency is established."; | adjacency is established."; | |||
| } | } | |||
| enum "Down" { | enum "Down" { | |||
| description | description | |||
| "This state describes that | "This state describes that | |||
| adjacency is NOT established."; | adjacency is NOT established."; | |||
| } | } | |||
| enum "Init" { | enum "Init" { | |||
| description | description | |||
| "This state describes that | "This state describes that | |||
| adjacency is establishing."; | adjacency is establishing."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "This leaf describes the state of the | "This leaf describes the state of the | |||
| interface."; | interface."; | |||
| } | } | |||
| description | description | |||
| "List of operational adjacencies."; | "List of operational adjacencies."; | |||
| } | } | |||
| description | description | |||
| "This container lists the adjacencies of | "This container lists the adjacencies of | |||
| the local node."; | 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."; | |||
| } | } | |||
| leaf spf-type { | leaf spf-type { | |||
| type enumeration { | type enumeration { | |||
| enum full { | enum full { | |||
| description | description | |||
| "Computation done is a Full SPF."; | "Computation done is a Full SPF."; | |||
| } | } | |||
| enum incremental { | enum incremental { | |||
| description | description | |||
| "Computation done is an | "Computation done is an | |||
| incremental SPF."; | incremental SPF."; | |||
| } | } | |||
| enum route-only { | enum route-only { | |||
| description | description | |||
| "Computation done is a | "Computation done is a | |||
| reachability computation | reachability computation | |||
| only."; | only."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "This leaf describes the type of computation | "This leaf describes the type of computation | |||
| used."; | used."; | |||
| } | } | |||
| leaf level { | leaf level { | |||
| type uint8 { | type uint8 { | |||
| range "1 .. 2"; | range "1 .. 2"; | |||
| } | } | |||
| description | description | |||
| "This leaf describes the level affected bytes | "This leaf describes the level affected bytes | |||
| the computation."; | the computation."; | |||
| } | } | |||
| leaf spf-delay { | leaf spf-delay { | |||
| type uint32; | type uint32; | |||
| units "milliseconds"; | units "milliseconds"; | |||
| description | description | |||
| "This leaf describes the SPF delay that | "This leaf describes the SPF delay that | |||
| was used for this event."; | was used for this event."; | |||
| } | } | |||
| leaf schedule-timestamp { | leaf schedule-timestamp { | |||
| type yang:timestamp; | type yang:timestamp; | |||
| description | description | |||
| "This leaf describes the timestamp | "This leaf describes the timestamp | |||
| when the computation was scheduled."; | when the computation was scheduled."; | |||
| } | } | |||
| leaf start-timestamp { | leaf start-timestamp { | |||
| type yang:timestamp; | type yang:timestamp; | |||
| description | description | |||
| "This leaf describes the timestamp | "This leaf describes the timestamp | |||
| when the computation was started."; | when the computation was started."; | |||
| } | ||||
| leaf end-timestamp { | ||||
| type yang:timestamp; | ||||
| description | ||||
| "This leaf describes the timestamp | ||||
| when the computation was ended."; | ||||
| } | ||||
| list trigger-lsp { | ||||
| key "lsp"; | ||||
| leaf lsp { | ||||
| type isis-lsp-id; | ||||
| description | ||||
| "This leaf describes the LSPID | ||||
| of the LSP."; | ||||
| } | ||||
| leaf sequence { | ||||
| type uint32; | ||||
| description | ||||
| "This leaf describes the sequence | ||||
| number of the LSP."; | ||||
| } | ||||
| description | ||||
| "This leaf describes list of LSPs | ||||
| that triggered the computation."; | ||||
| } | ||||
| description | ||||
| "List of computation events."; | ||||
| } | ||||
| } | description | |||
| leaf end-timestamp { | "This container lists the SPF computation events."; | |||
| type yang:timestamp; | } | |||
| description | container lsp-log { | |||
| "This leaf describes the timestamp | list event { | |||
| when the computation was ended."; | key id; | |||
| } | ||||
| list trigger-lsp { | ||||
| key "lsp"; | ||||
| leaf lsp { | ||||
| type isis-lsp-id; | ||||
| description | ||||
| "This leaf describes the LSPID | ||||
| of the LSP."; | ||||
| } | ||||
| leaf sequence { | ||||
| type uint32; | ||||
| description | ||||
| "This leaf describes the sequence | ||||
| number of the LSP."; | ||||
| } | ||||
| description | ||||
| "This leaf describes list of LSPs | ||||
| that triggered the computation."; | ||||
| } | ||||
| description | ||||
| "List of computation events."; | ||||
| } | ||||
| description | leaf id { | |||
| "This container lists the SPF computation events."; | type uint32; | |||
| } | description | |||
| container lsp-log { | "This leaf defines the event identifier. | |||
| list event { | This is a purely internal value."; | |||
| key id; | } | |||
| leaf level { | ||||
| type uint8 { | ||||
| range "1 .. 2"; | ||||
| } | ||||
| description | ||||
| "This leaf describes the level affected bytes | ||||
| the computation."; | ||||
| } | ||||
| container lsp { | ||||
| leaf lsp { | ||||
| leaf id { | type isis-lsp-id; | |||
| type uint32; | description | |||
| description | "This leaf describes the LSPID | |||
| "This leaf defines the event identifier. | of the LSP."; | |||
| This is a purely internal value."; | } | |||
| } | leaf sequence { | |||
| leaf level { | type uint32; | |||
| type uint8 { | description | |||
| range "1 .. 2"; | "This leaf describes the sequence | |||
| } | number of the LSP."; | |||
| description | } | |||
| "This leaf describes the level affected bytes | description | |||
| the computation."; | "This container describes the received LSP | |||
| } | , in case of local LSP update the local | |||
| container lsp { | LSP ID is referenced."; | |||
| leaf lsp { | } | |||
| leaf received-timestamp { | ||||
| type yang:timestamp; | ||||
| type isis-lsp-id; | description | |||
| description | "This leaf describes the timestamp | |||
| "This leaf describes the LSPID | when the LSP was received. In case of | |||
| of the LSP."; | local LSP update, the timestamp refers | |||
| } | to the local LSP update time."; | |||
| leaf sequence { | } | |||
| type uint32; | ||||
| description | ||||
| "This leaf describes the sequence | ||||
| number of the LSP."; | ||||
| } | ||||
| description | ||||
| "This container describes the received LSP | ||||
| , in case of local LSP update the local | ||||
| LSP ID is referenced."; | ||||
| } | ||||
| leaf received-timestamp { | description | |||
| type yang:timestamp; | "List of LSP events."; | |||
| } | ||||
| description | description | |||
| "This leaf describes the timestamp | "This container lists the LSP reception events. | |||
| when the LSP was received. In case of | Local LSP modification are also contained in the | |||
| local LSP update, the timestamp refers | list."; | |||
| to the local LSP update time."; | } | |||
| } | container database { | |||
| container level-1 { | ||||
| list lsp { | ||||
| key lsp-id; | ||||
| description | uses isis-database; | |||
| "List of LSP events."; | description | |||
| } | "List of LSPs in LSDB."; | |||
| } | ||||
| description | description | |||
| "This container lists the LSP reception events. | "This container describes the list of LSPs | |||
| Local LSP modification are also contained in the | in the level-1 database."; | |||
| list."; | } | |||
| } | container level-2 { | |||
| container database { | list lsp { | |||
| container level-1 { | key lsp-id; | |||
| list lsp { | ||||
| key lsp-id; | ||||
| uses isis-database; | uses isis-database; | |||
| description | description | |||
| "List of LSPs in LSDB."; | "List of LSPs in LSDB."; | |||
| } | } | |||
| description | description | |||
| "This container describes the list of LSPs | "This container describes the list of LSPs | |||
| in the level-1 database."; | in the level-2 database."; | |||
| } | } | |||
| container level-2 { | description | |||
| list lsp { | "This container describes ISIS Link State | |||
| key lsp-id; | databases."; | |||
| } | ||||
| container hostnames { | ||||
| uses isis-database; | list hostname { | |||
| description | key system-id; | |||
| "List of LSPs in LSDB."; | leaf system-id { | |||
| } | type isis-system-id; | |||
| description | ||||
| "This leaf describes the system-id | ||||
| associated with the hostname."; | ||||
| } | ||||
| leaf hostname { | ||||
| description | type string; | |||
| "This container describes the list of LSPs | description | |||
| in the level-2 database."; | "This leaf describes the hostname | |||
| } | associated with the system ID."; | |||
| description | } | |||
| "This container describes ISIS Link State | description | |||
| databases."; | "List of system-id/hostname associations"; | |||
| } | } | |||
| container hostnames { | ||||
| list hostname { | description | |||
| key system-id; | "This container describes the list | |||
| leaf system-id { | of binding between system-id and | |||
| type isis-system-id; | hostnames."; | |||
| description | } | |||
| "This leaf describes the system-id | ||||
| associated with the hostname."; | ||||
| } | ||||
| leaf hostname { | ||||
| type string; | description | |||
| description | "This container defines various ISIS states objects."; | |||
| "This leaf describes the hostname | } | |||
| associated with the system ID."; | } | |||
| } | ||||
| description | ||||
| "List of system-id/hostname associations"; | ||||
| } | ||||
| description | /* RPC methods */ | |||
| "This container describes the list | ||||
| of binding between system-id and | ||||
| hostnames."; | ||||
| } | ||||
| description | rpc clear-isis-adjacency { | |||
| "This container defines various ISIS states objects."; | description | |||
| } | "This RPC request clears a particular | |||
| } | set of ISIS adjacencies. If the operation | |||
| fails for ISIS internal reason, then | ||||
| error-tag and error-app-tag should be set | ||||
| to a meaningful value."; | ||||
| input { | ||||
| leaf routing-instance-name { | ||||
| type rt:routing-instance-state-ref; | ||||
| mandatory "true"; | ||||
| description | ||||
| "Name of the routing instance whose ISIS | ||||
| information is being queried. | ||||
| /* RPC methods */ | If the routing instance with name equal to the | |||
| value of this parameter doesn't exist, then this | ||||
| operation SHALL fail with error-tag 'data-missing' | ||||
| and error-app-tag 'routing-instance-not-found'."; | ||||
| rpc clear-isis-adjacency { | } | |||
| description | leaf routing-protocol-instance-name { | |||
| "This RPC request clears a particular | type isis-instance-state-ref; | |||
| set of ISIS adjacencies. If the operation | mandatory "true"; | |||
| fails for ISIS internal reason, then | description | |||
| error-tag and error-app-tag should be set | "Name of the ISIS protocol instance whose ISIS | |||
| to a meaningful value."; | information is being queried. | |||
| input { | ||||
| leaf routing-instance-name { | ||||
| type rt:routing-instance-state-ref; | ||||
| mandatory "true"; | ||||
| description | ||||
| "Name of the routing instance whose ISIS | ||||
| information is being queried. | ||||
| If the routing instance with name equal to the | If the ISIS instance with name equal to the | |||
| value of this parameter doesn't exist, then this | value of this parameter doesn't exist, then this | |||
| operation SHALL fail with error-tag 'data-missing' | operation SHALL fail with error-tag 'data-missing' | |||
| and error-app-tag 'routing-instance-not-found'."; | and error-app-tag | |||
| 'routing-protocol-instance-not-found'."; | ||||
| } | ||||
| leaf isis-level { | ||||
| type isis-level; | ||||
| description | ||||
| "ISIS level of the adjacency to be cleared. | ||||
| If ISIS level is level-1-2, both level 1 and level 2 | ||||
| adjacencies would be cleared. | ||||
| } | If the value provided is different from the one | |||
| leaf routing-protocol-instance-name { | authorized in the enum type, then this | |||
| type isis-instance-state-ref; | operation SHALL fail with error-tag 'data-missing' | |||
| mandatory "true"; | and error-app-tag | |||
| description | 'bad-isis-level'. | |||
| "Name of the ISIS protocol instance whose ISIS | "; | |||
| information is being queried. | } | |||
| leaf interface { | ||||
| type string; | ||||
| description | ||||
| "Name of the ISIS interface. | ||||
| If the ISIS instance with name equal to the | If the ISIS interface with name equal to the | |||
| value of this parameter doesn't exist, then this | value of this parameter doesn't exist, then this | |||
| operation SHALL fail with error-tag 'data-missing' | operation SHALL fail with error-tag 'data-missing' | |||
| and error-app-tag | and error-app-tag | |||
| 'routing-protocol-instance-not-found'."; | 'isis-interface-not-found'."; | |||
| } | } | |||
| leaf isis-level { | ||||
| type isis-level; | ||||
| description | ||||
| "ISIS level of the adjacency to be cleared. | ||||
| If ISIS level is level-1-2, both level 1 and level 2 | ||||
| adjacencies would be cleared. | ||||
| If the value provided is different from the one | } | |||
| authorized in the enum type, then this | } | |||
| operation SHALL fail with error-tag 'data-missing' | ||||
| and error-app-tag | ||||
| 'bad-isis-level'. | ||||
| "; | ||||
| } | ||||
| leaf interface { | ||||
| type string; | ||||
| description | ||||
| "Name of the ISIS interface. | ||||
| If the ISIS interface with name equal to the | rpc clear-isis-database { | |||
| value of this parameter doesn't exist, then this | description | |||
| operation SHALL fail with error-tag 'data-missing' | "This RPC request clears a particular | |||
| and error-app-tag | ISIS database. If the operation | |||
| 'isis-interface-not-found'."; | fails for ISIS internal reason, then | |||
| } | error-tag and error-app-tag should be set | |||
| } | to a meaningful value."; | |||
| } | input { | |||
| leaf routing-instance-name { | ||||
| type rt:routing-instance-state-ref; | ||||
| mandatory "true"; | ||||
| description | ||||
| "Name of the routing instance whose ISIS | ||||
| information is being queried. | ||||
| rpc clear-isis-database { | If the routing instance with name equal to the | |||
| description | value of this parameter doesn't exist, then this | |||
| "This RPC request clears a particular | operation SHALL fail with error-tag 'data-missing' | |||
| ISIS database. If the operation | and error-app-tag 'routing-instance-not-found'."; | |||
| fails for ISIS internal reason, then | ||||
| error-tag and error-app-tag should be set | ||||
| to a meaningful value."; | ||||
| input { | ||||
| leaf routing-instance-name { | ||||
| type rt:routing-instance-state-ref; | ||||
| mandatory "true"; | ||||
| description | ||||
| "Name of the routing instance whose ISIS | ||||
| information is being queried. | ||||
| If the routing instance with name equal to the | } | |||
| value of this parameter doesn't exist, then this | leaf routing-protocol-instance-name { | |||
| operation SHALL fail with error-tag 'data-missing' | type isis-instance-state-ref; | |||
| and error-app-tag 'routing-instance-not-found'."; | mandatory "true"; | |||
| description | ||||
| "Name of the ISIS protocol instance whose ISIS | ||||
| information is being queried. | ||||
| } | If the ISIS instance with name equal to the | |||
| leaf routing-protocol-instance-name { | value of this parameter doesn't exist, then this | |||
| type isis-instance-state-ref; | operation SHALL fail with error-tag 'data-missing' | |||
| mandatory "true"; | and error-app-tag | |||
| description | 'routing-protocol-instance-not-found'."; | |||
| "Name of the ISIS protocol instance whose ISIS | } | |||
| information is being queried. | leaf isis-level { | |||
| type isis-level; | ||||
| description | ||||
| "ISIS level of the adjacency to be cleared. | ||||
| If ISIS level is level-1-2, both level 1 and level 2 | ||||
| adjacencies would be cleared. | ||||
| If the ISIS instance with name equal to the | If the value provided is different from the one | |||
| value of this parameter doesn't exist, then this | authorized in the enum type, then this | |||
| operation SHALL fail with error-tag 'data-missing' | operation SHALL fail with error-tag 'data-missing' | |||
| and error-app-tag | and error-app-tag | |||
| 'routing-protocol-instance-not-found'."; | 'bad-isis-level'. | |||
| } | "; | |||
| leaf isis-level { | } | |||
| type isis-level; | } | |||
| description | ||||
| "ISIS level of the adjacency to be cleared. | ||||
| If ISIS level is level-1-2, both level 1 and level 2 | ||||
| adjacencies would be cleared. | ||||
| If the value provided is different from the one | } | |||
| authorized in the enum type, then this | ||||
| operation SHALL fail with error-tag 'data-missing' | ||||
| and error-app-tag | ||||
| 'bad-isis-level'. | ||||
| "; | ||||
| } | ||||
| } | ||||
| } | /* Notifications */ | |||
| /* Notifications */ | notification isis-adjacency-updown { | |||
| leaf interface { | ||||
| type string; | ||||
| description | ||||
| "Describes the interface of the adjacency"; | ||||
| } | ||||
| leaf neighbor { | ||||
| type string; | ||||
| description | ||||
| "Describes the name of the neighbor. If the | ||||
| name of the neighbor is not available, the | ||||
| field would be empty."; | ||||
| } | ||||
| leaf neighbor-system-id { | ||||
| type isis-system-id; | ||||
| description | ||||
| "Describes the system-id of the neighbor."; | ||||
| } | ||||
| leaf isis-level { | ||||
| type isis-level; | ||||
| description | ||||
| "Describes the ISIS level of the adjacency."; | ||||
| } | ||||
| leaf state { | ||||
| type enumeration { | ||||
| enum "Up" { | ||||
| description | ||||
| "This state describes that | ||||
| adjacency is established."; | ||||
| } | ||||
| enum "Down" { | ||||
| description | ||||
| "This state describes that | ||||
| adjacency is no more established."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "This leaf describes the new state of the | ||||
| ISIS adjacency."; | ||||
| } | ||||
| leaf reason { | ||||
| type string; | ||||
| description | ||||
| "If the adjacency is going to DOWN, | ||||
| this leaf provides a reason for the adjacency | ||||
| going down. The reason is provided as a text. | ||||
| If the adjacency is going to UP, no reason is | ||||
| provided."; | ||||
| } | ||||
| description | ||||
| "This notification is sent when an ISIS adjacency | ||||
| moves to Up state or to Down state."; | ||||
| } | ||||
| notification isis-adjacency-updown { | } | |||
| leaf interface { | ||||
| type string; | ||||
| description | ||||
| "Describes the interface of the adjacency"; | ||||
| } | ||||
| leaf neighbor { | ||||
| type string; | ||||
| description | ||||
| "Describes the name of the neighbor. If the | ||||
| name of the neighbor is not available, the | ||||
| field would be empty."; | ||||
| } | ||||
| leaf neighbor-system-id { | ||||
| type isis-system-id; | ||||
| description | ||||
| "Describes the system-id of the neighbor."; | ||||
| } | ||||
| leaf isis-level { | ||||
| type isis-level; | ||||
| description | ||||
| "Describes the ISIS level of the adjacency."; | ||||
| } | ||||
| leaf state { | ||||
| type enumeration { | ||||
| enum "Up" { | ||||
| description | ||||
| "This state describes that | ||||
| adjacency is established."; | ||||
| } | ||||
| enum "Down" { | ||||
| description | ||||
| "This state describes that | ||||
| adjacency is no more established."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "This leaf describes the new state of the | ||||
| ISIS adjacency."; | ||||
| } | ||||
| leaf reason { | ||||
| type string; | ||||
| description | ||||
| "If the adjacency is going to DOWN, | ||||
| this leaf provides a reason for the adjacency | ||||
| going down. The reason is provided as a text. | ||||
| If the adjacency is going to UP, no reason is | ||||
| provided."; | ||||
| } | ||||
| description | ||||
| "This notification is sent when an ISIS adjacency | ||||
| moves to Up state or to Down state."; | ||||
| } | ||||
| } | <CODE ENDS> | |||
| <CODE ENDS> | ||||
| 7. Security Considerations | 7. Security Considerations | |||
| Configuration and state data defined in this document are designed to | ||||
| be accessed via the NETCONF protocol [RFC6241]. | ||||
| As ISIS is an IGP protocol (critical piece of the network), ensuring | ||||
| stability and security of the protocol is mandatory for the network | ||||
| service. | ||||
| Authors recommends to implement NETCONF access control model | ||||
| ([RFC6536]) to restrict access to all or part of the configuration to | ||||
| specific users. Access control to RPCs is also critical as RPC | ||||
| permits to clear protocol datastructures that would definitively | ||||
| impact the network service. This kind of RPC needs only to be used | ||||
| in specific cases by well-known experienced users. | ||||
| Authors consider that all the configuration is considered as | ||||
| sensitive/vulnerable as well as RPCs. But security teams can decide | ||||
| to open some part of the configuration to less experienced users | ||||
| depending on the internal organization, for example : | ||||
| o User FullWrite : would access to the whole data model. This kind | ||||
| of profile may be restricted to few experienced people. | ||||
| o User PartialWrite : would only access to configuration part within | ||||
| /isis/interfaces/interface. So this kind of profile is restricted | ||||
| to creation/modification/deletion of interfaces. This profile | ||||
| does not have access to RPC. | ||||
| o User Read : would only access to state part /isis-state. | ||||
| Unauthorized access to configuration or RPC may cause high damages to | ||||
| the network service. | ||||
| The /isis-state/database may contain authentication information. As | ||||
| presented in the description of the /isis-state/database/level- | ||||
| 1/lsp/authentication/authentication-key, the authentication MUST | ||||
| never be presented in plaintext format for security reason. Authors | ||||
| recommends the usage of MD5 to present the authentication-key. | ||||
| Some authentication-key may also be present in the /isis | ||||
| configuration. When configuring ISIS using the NETCONF protocol, | ||||
| authors recommends the usage of secure transport of NETCONF using SSH | ||||
| ([RFC6242]). | ||||
| 8. Acknowledgements | 8. Acknowledgements | |||
| 9. IANA Considerations | 9. IANA Considerations | |||
| 10. Normative References | 10. 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., "A YANG Data Model for Routing Management", | |||
| draft-ietf-netmod-routing-cfg-15 (work in progress), May | draft-ietf-netmod-routing-cfg-15 (work in progress), May | |||
| 2014. | 2014. | |||
| [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 | [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the | |||
| Network Configuration Protocol (NETCONF)", RFC 6020, | Network Configuration Protocol (NETCONF)", RFC 6020, | |||
| October 2010. | October 2010. | |||
| [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. | ||||
| Bierman, "Network Configuration Protocol (NETCONF)", RFC | ||||
| 6241, June 2011. | ||||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | ||||
| Shell (SSH)", RFC 6242, June 2011. | ||||
| [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
| Protocol (NETCONF) Access Control Model", RFC 6536, March | ||||
| 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="cp1252"?> | <?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-state xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | xmlns:isis="urn:ietf:params:xml:ns:yang:ietf-isis" | |||
| <routing-instance> | xmlns:v4ur="urn:ietf:params:xml:ns:yang:ietf-ipv4-unicast-routing" | |||
| <name>rtr1</name> | xmlns:rt="urn:ietf:params:xml:ns:yang:ietf-routing" | |||
| <id>1</id> | xmlns:if="urn:ietf:params:xml:ns:yang:ietf-interfaces" | |||
| <router-id>192.0.2.1</router-id> | xmlns:ip="urn:ietf:params:xml:ns:yang:ietf-ip"> | |||
| <routing-protocols> | <if:interfaces> | |||
| <routing-protocol> | <if:interface> | |||
| <name>ISIS1</name> | <if:name>eth0</if:name> | |||
| <type>isis</type> | <ip:ipv4> | |||
| <isis-state xmlns="urn:ietf:params:xml:ns:yang:ietf-isis"> | <ip:address> | |||
| <adjacencies> | <ip:ip>10.0.0.1</ip:ip> | |||
| <adjacency> | <ip:prefix-length>30</ip:prefix-length> | |||
| <interface>eth0</interface> | </ip:address> | |||
| <level>2</level> | </ip:ipv4> | |||
| <state>Up</state> | </if:interface> | |||
| </adjacency> | <if:interface> | |||
| </adjacencies> | <if:name>lo0</if:name> | |||
| <spf-log> | <ip:ipv4> | |||
| <event> | <ip:address> | |||
| <id>18979</id> | <ip:ip>192.168.0.2</ip:ip> | |||
| <spf-type>full</spf-type> | <ip:prefix-length>32</ip:prefix-length> | |||
| <level>2</level> | </ip:address> | |||
| <spf-delay>150</spf-delay> | </ip:ipv4> | |||
| <schedule-timestamp>1403612245</schedule-timestamp> | </if:interface> | |||
| <start-timestamp>1403612399</start-timestamp> | </if:interfaces> | |||
| <end-timestamp>1403612420</end-timestamp> | <if:interfaces-state> | |||
| <trigger-lsp> | <if:interface> | |||
| <lsp>0000.01245.1245.01-01</lsp> | <if:name>eth0</if:name> | |||
| <sequence>125458</sequence> | <if:oper-status>up</if:oper-status> | |||
| </trigger-lsp> | <if:statistics> | |||
| </event> | <if:discontinuity-time> | |||
| </spf-log> | 2014-12-02T12:14:25.123Z | |||
| <lsp-log> | </if:discontinuity-time> | |||
| <event> | <if:in-octets>100</if:in-octets> | |||
| <id>1245</id> | <if:in-unicast-pkts>10</if:in-unicast-pkts> | |||
| <level>2</level> | <if:in-broadcast-pkts>0</if:in-broadcast-pkts> | |||
| <lsp> | <if:in-multicast-pkts>0</if:in-multicast-pkts> | |||
| <lsp>0000.01245.1245.01-01</lsp> | <if:in-discards>0</if:in-discards> | |||
| <sequence>125458</sequence> | <if:in-errors>0</if:in-errors> | |||
| </lsp> | <if:in-unknown-protos>0</if:in-unknown-protos> | |||
| <received-timestamp></received-timestamp> | <if:out-octets>541</if:out-octets> | |||
| </event> | <if:out-unicast-pkts>100</if:out-unicast-pkts> | |||
| </lsp-log> | <if:out-broadcast-pkts>0</if:out-broadcast-pkts> | |||
| <database> | <if:out-multicast-pkts>0</if:out-multicast-pkts> | |||
| <level-2> | <if:out-discards>0</if:out-discards> | |||
| <lsp> | <if:out-errors>0</if:out-errors> | |||
| <lsp-id>0000.01245.1245.01-01</lsp-id> | </if:statistics> | |||
| <checksum>1245</checksum> | <ip:ipv4> | |||
| <remaining-lifetime>45</remaining-lifetime> | <ip:address> | |||
| <sequence>125458</sequence> | <ip:ip>10.0.0.1</ip:ip> | |||
| <attributes /> | <ip:prefix-length>30</ip:prefix-length> | |||
| <extended-is-neighbor> | </ip:address> | |||
| <neighbor> | </ip:ipv4> | |||
| <neighbor-id>0000.01245.9999.00</neighbor-id> | </if:interface> | |||
| <metric>100</metric> | <if:interface> | |||
| </neighbor> | <if:name>lo0</if:name> | |||
| </extended-is-neighbor> | <if:oper-status>up</if:oper-status> | |||
| <if:statistics> | ||||
| <protocol-supported>204<protocol-supported> | <if:discontinuity-time> | |||
| 2014-12-02T12:14:25.123Z | ||||
| </if:discontinuity-time> | ||||
| <if:in-octets>100</if:in-octets> | ||||
| <if:in-unicast-pkts>10</if:in-unicast-pkts> | ||||
| <if:in-broadcast-pkts>0</if:in-broadcast-pkts> | ||||
| <if:in-multicast-pkts>0</if:in-multicast-pkts> | ||||
| <if:in-discards>0</if:in-discards> | ||||
| <if:in-errors>0</if:in-errors> | ||||
| <if:in-unknown-protos>0</if:in-unknown-protos> | ||||
| <if:out-octets>541</if:out-octets> | ||||
| <if:out-unicast-pkts>100</if:out-unicast-pkts> | ||||
| <if:out-broadcast-pkts>0</if:out-broadcast-pkts> | ||||
| <if:out-multicast-pkts>0</if:out-multicast-pkts> | ||||
| <if:out-discards>0</if:out-discards> | ||||
| <if:out-errors>0</if:out-errors> | ||||
| </if:statistics> | ||||
| <ip:ipv4> | ||||
| <ip:address> | ||||
| <ip:ip>192.168.0.2</ip:ip> | ||||
| <ip:prefix-length>32</ip:prefix-length> | ||||
| </ip:address> | ||||
| </ip:ipv4> | ||||
| </if:interface> | ||||
| </if:interfaces-state> | ||||
| <rt:routing-state> | ||||
| <rt:routing-instance> | ||||
| <rt:name>rtr1</rt:name> | ||||
| <rt:id>1</rt:id> | ||||
| <rt:router-id>192.0.2.1</rt:router-id> | ||||
| <rt:interfaces> | ||||
| <rt:interface> | ||||
| <rt:name>eth0</rt:name> | ||||
| </rt:interface> | ||||
| </rt:interfaces> | ||||
| <rt:routing-protocols> | ||||
| <rt:routing-protocol> | ||||
| <rt:name>ISIS1</rt:name> | ||||
| <rt:type>isis:isis</rt:type> | ||||
| <isis:isis-state> | ||||
| <isis:adjacencies> | ||||
| <isis:adjacency> | ||||
| <isis:interface>eth0</isis:interface> | ||||
| <isis:level>2</isis:level> | ||||
| <isis:state>Up</isis:state> | ||||
| </isis:adjacency> | ||||
| </isis:adjacencies> | ||||
| <isis:spf-log> | ||||
| <isis:event> | ||||
| <isis:id>18979</isis:id> | ||||
| <isis:spf-type>full</isis:spf-type> | ||||
| <isis:level>2</isis:level> | ||||
| <isis:spf-delay>150</isis:spf-delay> | ||||
| <isis:schedule-timestamp> | ||||
| 1403612245 | ||||
| </isis:schedule-timestamp> | ||||
| <isis:start-timestamp> | ||||
| 1403612399 | ||||
| </isis:start-timestamp> | ||||
| <isis:end-timestamp> | ||||
| 1403612420 | ||||
| </isis:end-timestamp> | ||||
| <isis:trigger-lsp> | ||||
| <isis:lsp>0000.1245.1245.01-01</isis:lsp> | ||||
| <isis:sequence>125458</isis:sequence> | ||||
| </isis:trigger-lsp> | ||||
| </isis:event> | ||||
| </isis:spf-log> | ||||
| <isis:lsp-log> | ||||
| <isis:event> | ||||
| <isis:id>1245</isis:id> | ||||
| <isis:level>2</isis:level> | ||||
| <isis:lsp> | ||||
| <isis:lsp>0000.1245.1245.01-01</isis:lsp> | ||||
| <isis:sequence>125458</isis:sequence> | ||||
| </isis:lsp> | ||||
| <isis:received-timestamp> | ||||
| 1403612420 | ||||
| </isis:received-timestamp> | ||||
| </isis:event> | ||||
| </isis:lsp-log> | ||||
| <isis:database> | ||||
| <isis:level-2> | ||||
| <isis:lsp> | ||||
| <isis:lsp-id>0000.1245.1245.01-01</isis:lsp-id> | ||||
| <isis:checksum>1245</isis:checksum> | ||||
| <isis:remaining-lifetime> | ||||
| 45 | ||||
| </isis:remaining-lifetime> | ||||
| <isis:sequence>125458</isis:sequence> | ||||
| <isis:extended-is-neighbor> | ||||
| <isis:neighbor> | ||||
| <isis:neighbor-id> | ||||
| 0000.1245.9999.00 | ||||
| </isis:neighbor-id> | ||||
| <isis:metric>100</isis:metric> | ||||
| </isis:neighbor> | ||||
| </isis:extended-is-neighbor> | ||||
| <ipv4-addresses>192.168.0.2</ipv4-addresses> | <isis:protocol-supported> | |||
| <extended-ipv4-reachability> | 204 | |||
| <prefixes> | </isis:protocol-supported> | |||
| <up-down>false</up-down> | ||||
| <ip-prefix>192.168.0.2</ip-prefix> | ||||
| <prefix-len>32</prefix-len> | ||||
| <metric>30490</metric> | ||||
| <tag>200</tag> | ||||
| </prefixes> | <isis:ipv4-addresses> | |||
| </extended-ipv4-reachability> | 192.168.0.2 | |||
| <dynamic-hostname>rtr1</dynamic-hostname> | </isis:ipv4-addresses> | |||
| <isis:extended-ipv4-reachability> | ||||
| <isis:prefixes> | ||||
| <isis:ip-prefix>192.168.0.2</isis:ip-prefix> | ||||
| <isis:up-down>false</isis:up-down> | ||||
| <isis:prefix-len>32</isis:prefix-len> | ||||
| <isis:metric>30490</isis:metric> | ||||
| <isis:tag>200</isis:tag> | ||||
| </isis:prefixes> | ||||
| </isis:extended-ipv4-reachability> | ||||
| <isis:dynamic-hostname> | ||||
| rtr1 | ||||
| </isis:dynamic-hostname> | ||||
| </lsp> | </isis:lsp> | |||
| </level-2> | </isis:level-2> | |||
| </database> | </isis:database> | |||
| <hostnames> | <isis:hostnames> | |||
| <hostname> | <isis:hostname> | |||
| <system-id>0000.01245.9999.00</system-id> | <isis:system-id> | |||
| <hostname>rtr1</hostname> | 0000.1245.9999.00 | |||
| </hostname> | </isis:system-id> | |||
| </hostnames> | <isis:hostname>rtr1</isis:hostname> | |||
| </isis-state> | </isis:hostname> | |||
| </routing-protocol> | </isis:hostnames> | |||
| </routing-protocols> | </isis:isis-state> | |||
| </routing-instance> | </rt:routing-protocol> | |||
| <ribs> | </rt:routing-protocols> | |||
| <rib> | </rt:routing-instance> | |||
| <name>ipv4-master</name> | <rt:ribs> | |||
| <id>1</id> | <rt:rib> | |||
| <address-family>v4ur:ipv4-unicast</address-family> | <rt:name>ipv4-master</rt:name> | |||
| <routes> | <rt:id>1</rt:id> | |||
| <route> | <rt:address-family> | |||
| <id>124554657</id> | v4ur:ipv4-unicast | |||
| <outgoing-interface>eth0</outgoing-interface> | </rt:address-family> | |||
| <source-protocol>isis</source-protocol> | <rt:routes> | |||
| <last-updated>2013-07-02T18:02:45+01:00</last-updated> | <rt:route> | |||
| <destination-prefix xmlns="urn:ietf:params:xml:ns:yang:ietf-ipv4-unicast-routing"> | <rt:id>124554657</rt:id> | |||
| 10.0.0.0/24</destination-prefix> | <rt:outgoing-interface>eth0</rt:outgoing-interface> | |||
| <metric xmlns="urn:ietf:params:xml:ns:yang:ietf-isis"> | <rt:source-protocol>isis:isis</rt:source-protocol> | |||
| 750 | <rt:last-updated> | |||
| </metric> | 2013-07-02T18:02:45+01:00 | |||
| <route-type xmlns="urn:ietf:params:xml:ns:yang:ietf-isis">l2-up-internal</route-type> | </rt:last-updated> | |||
| <v4ur:destination-prefix> | ||||
| 10.0.0.0/24 | ||||
| </v4ur:destination-prefix> | ||||
| <isis:metric>750</isis:metric> | ||||
| <isis:route-type>l2-up-internal</isis:route-type> | ||||
| </route> | </rt:route> | |||
| </routes> | </rt:routes> | |||
| </rib> | </rt:rib> | |||
| </ribs> | </rt:ribs> | |||
| </routing-state> | </rt:routing-state> | |||
| <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | <rt:routing> | |||
| <routing-instance> | <rt:routing-instance> | |||
| <id>1</id> | <rt:name>rtr1</rt:name> | |||
| <router-id>192.0.2.1<router-id> | <rt:router-id>192.0.2.1</rt:router-id> | |||
| <routing-protocols> | <rt:interfaces> | |||
| <routing-protocol> | <rt:interface> | |||
| <name>ISIS1</name> | <rt:name>eth0</rt:name> | |||
| <type>isis</type> | </rt:interface> | |||
| <isis-cfg xmlns="urn:ietf:params:xml:ns:yang:ietf-isis"> | <rt:interface> | |||
| <isis-level>level-2</isis-level> | <rt:name>lo0</rt:name> | |||
| <nsap-address>49.0002.0000.01245.9999.00</nsap-address> | </rt:interface> | |||
| <lsp-lifetime>65535</lsp-lifetime> | </rt:interfaces> | |||
| <lsp-refresh>65000</lsp-refresh> | <rt:routing-protocols> | |||
| <authentication-key>my_password</authentication-key> | <rt:routing-protocol> | |||
| <authentication-type>plaintext</authentication-type> | <rt:name>ISIS1</rt:name> | |||
| <isis-multi-topology-cfg> | <rt:type>isis:isis</rt:type> | |||
| <ipv4-unicast>true</ipv4-unicast> | <isis:isis> | |||
| </isis-multi-topology-cfg> | <isis:isis-level>level-2</isis:isis-level> | |||
| <isis:nsap-address> | ||||
| 49.0002.0000.1245.9999.00 | ||||
| </isis:nsap-address> | ||||
| <isis:lsp-lifetime>65535</isis:lsp-lifetime> | ||||
| <isis:lsp-refresh>65000</isis:lsp-refresh> | ||||
| <isis:authentication-key> | ||||
| f567acafcd6578861df5683268$ | ||||
| </isis:authentication-key> | ||||
| <isis:authentication-type> | ||||
| plaintext | ||||
| </isis:authentication-type> | ||||
| <isis:isis-multi-topology-cfg> | ||||
| <isis:ipv4-unicast>true</isis:ipv4-unicast> | ||||
| </isis:isis-multi-topology-cfg> | ||||
| <isis-level-2-cfg> | <isis:isis-level-2-cfg> | |||
| <metric-type>wide-only</metric-type> | <isis:metric-type>wide-only</isis:metric-type> | |||
| <default-ipv4-unicast-metric>11111111</default-ipv4-unicast-metric> | <isis:default-ipv4-unicast-metric> | |||
| </isis-level-2-cfg> | 11111111 | |||
| <interfaces> | </isis:default-ipv4-unicast-metric> | |||
| <interface> | </isis:isis-level-2-cfg> | |||
| <name>eth0</name> | <isis:interfaces> | |||
| <lsp-interval>100</lsp-interval> | <isis:interface> | |||
| <csnp-interval>10</csnp-interval> | <isis:name>eth0</isis:name> | |||
| <interface-type>point-to-point</interface-type> | <isis:lsp-interval>100</isis:lsp-interval> | |||
| <level-2> | <isis:csnp-interval>10</isis:csnp-interval> | |||
| <ipv4-unicast-metric>200</ipv4-unicast-metric> | <isis:interface-type> | |||
| </level-2> | point-to-point | |||
| </interface> | </isis:interface-type> | |||
| <interface> | <isis:level-2> | |||
| <name>lo0</name> | <isis:ipv4-unicast-metric> | |||
| <level-2> | 200 | |||
| <ipv4-unicast-metric>1</ipv4-unicast-metric> | </isis:ipv4-unicast-metric> | |||
| </level-2> | </isis:level-2> | |||
| <passive>true</passive> | </isis:interface> | |||
| </interface> | <isis:interface> | |||
| </interfaces> | <isis:name>lo0</isis:name> | |||
| </isis-cfg> | <isis:level-2> | |||
| </routing-protocol> | <isis:ipv4-unicast-metric> | |||
| </routing-protocols> | 1 | |||
| </routing-instance> | </isis:ipv4-unicast-metric> | |||
| </routing> | </isis:level-2> | |||
| </data> | <isis:passive>true</isis:passive> | |||
| </isis:interface> | ||||
| </isis:interfaces> | ||||
| </isis:isis> | ||||
| </rt:routing-protocol> | ||||
| </rt:routing-protocols> | ||||
| </rt:routing-instance> | ||||
| </rt:routing> | ||||
| </data> | ||||
| Author's Address | Author's Address | |||
| Stephane Litkowski | Stephane Litkowski | |||
| Orange | Orange | |||
| Email: stephane.litkowski@orange.com | Email: stephane.litkowski@orange.com | |||
| End of changes. 146 change blocks. | ||||
| 1726 lines changed or deleted | 1940 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/ | ||||