draft-ietf-isis-yang-isis-cfg-04.txt   draft-ietf-isis-yang-isis-cfg-05.txt 
ISIS Working Group S. Litkowski ISIS Working Group S. Litkowski
Internet-Draft Orange Internet-Draft Orange
Intended status: Standards Track D. Yeung Intended status: Standards Track D. Yeung
Expires: January 3, 2016 A. Lindem Expires: March 13, 2016 A. Lindem
Cisco Systems Cisco Systems
J. Zhang J. Zhang
Juniper Networks Juniper Networks
L. Lhotka L. Lhotka
July 02, 2015 September 10, 2015
YANG Data Model for ISIS protocol YANG Data Model for ISIS protocol
draft-ietf-isis-yang-isis-cfg-04 draft-ietf-isis-yang-isis-cfg-05
Abstract Abstract
This document defines a YANG data model that can be used to configure This document defines a YANG data model that can be used to configure
and manage ISIS protocol on network elements. It also defined an and manage ISIS protocol on network elements. It also defined an
extension module for segment routing configuration and operation. extension module for segment routing configuration and operation.
Requirements Language Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
skipping to change at page 1, line 43 skipping to change at page 1, line 43
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 January 3, 2016. This Internet-Draft will expire on March 13, 2016.
Copyright Notice Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 20 skipping to change at page 2, line 20
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3
2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3
2.1. ISIS Configuration . . . . . . . . . . . . . . . . . . . 9 2.1. ISIS Configuration . . . . . . . . . . . . . . . . . . . 10
2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10 2.2. Multitopology Parameters . . . . . . . . . . . . . . . . 10
2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10 2.3. Per-Level Parameters . . . . . . . . . . . . . . . . . . 10
2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 10 2.4. Per-Interface Parameters . . . . . . . . . . . . . . . . 11
2.5. ISO parameters . . . . . . . . . . . . . . . . . . . . . 12 2.5. ISO parameters . . . . . . . . . . . . . . . . . . . . . 13
2.6. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.6. IP FRR . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.7. Operational State . . . . . . . . . . . . . . . . . . . . 13 2.7. Operational State . . . . . . . . . . . . . . . . . . . . 13
3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 13 3. RPC Operations . . . . . . . . . . . . . . . . . . . . . . . 14
4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 14 4. Notifications . . . . . . . . . . . . . . . . . . . . . . . . 14
5. Segment Routing . . . . . . . . . . . . . . . . . . . . . . . 18 5. Segment Routing . . . . . . . . . . . . . . . . . . . . . . . 18
5.1. Segment Routing activation . . . . . . . . . . . . . . . 20 5.1. Segment Routing activation . . . . . . . . . . . . . . . 21
5.2. Advertising mapping server policy . . . . . . . . . . . . 20 5.2. Advertising mapping server policy . . . . . . . . . . . . 21
5.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 21 5.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 22
6. Interaction with Other YANG Modules . . . . . . . . . . . . . 21 6. Interaction with Other YANG Modules . . . . . . . . . . . . . 22
7. ISIS YANG Module . . . . . . . . . . . . . . . . . . . . . . 21 7. ISIS YANG Module . . . . . . . . . . . . . . . . . . . . . . 22
8. ISIS Segment Routing YANG Module . . . . . . . . . . . . . . 96 8. ISIS Segment Routing YANG Module . . . . . . . . . . . . . . 97
9. Security Considerations . . . . . . . . . . . . . . . . . . . 109 9. Security Considerations . . . . . . . . . . . . . . . . . . . 110
10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 110 10. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 111
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 110 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 112
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 110 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 112
13. Normative References . . . . . . . . . . . . . . . . . . . . 110 13. Normative References . . . . . . . . . . . . . . . . . . . . 112
Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 111 Appendix A. Example: NETCONF <get> Reply . . . . . . . . . . . . 112
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 114 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 115
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 42 skipping to change at page 3, line 42
are augmenting the "routing-protocol" lists in ietf-routing module are augmenting the "routing-protocol" lists in ietf-routing module
with specific ISIS parameters. with specific ISIS parameters.
One container contains the writable parameters, while the other One container contains the writable parameters, while the other
contains the operational states. contains the operational states.
The figure below describe the overall structure of the isis YANG The figure below describe the overall structure of the isis YANG
module: module:
module: ietf-isis module: ietf-isis
augment /rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route: augment /rt:routing-state/rt:routing-instance/rt:ribs/rt:rib/rt:routes
/rt:route:
+--ro metric? uint32 +--ro metric? uint32
+--ro tag* uint64 +--ro tag* uint64
+--ro route-type? enumeration +--ro route-type? enumeration
augment /rt:active-route/rt:output/rt:route: augment /rt:fib-route/rt:output/rt:route:
+--ro metric? uint32 +--ro metric? uint32
+--ro tag* uint64 +--ro tag* uint64
+--ro route-type? enumeration +--ro route-type? enumeration
augment /if:interfaces/if:interface: augment /if:interfaces/if:interface:
+--rw clns-mtu? uint16 +--rw clns-mtu? uint16
augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol:
augment /rt:routing/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol:
+--rw isis +--rw isis
+--rw enable? boolean {admin-control}? +--rw enable? boolean {admin-control}?
+--rw level-type? level +--rw level-type? level
+--rw system-id? system-id +--rw system-id? system-id
+--rw maximum-area-addresses? uint8 {maximum-area-addresses}? +--rw maximum-area-addresses? uint8 {maximum-area-addresses}?
+--rw area-address* area-address +--rw area-address* area-address
+--rw mpls +--rw mpls
| +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}? | +--rw ipv4-router-id? inet:ipv4-address {ipv4-router-id}?
| +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | +--rw ipv6-router-id? inet:ipv6-address {ipv6-router-id}?
| +--rw igp-ldp-sync {igp-ldp-sync}? | +--rw igp-ldp-sync {igp-ldp-sync}?
skipping to change at page 4, line 49 skipping to change at page 4, line 51
| +--rw af identityref | +--rw af identityref
| +--rw enable? boolean | +--rw enable? boolean
+--rw overload* [level] +--rw overload* [level]
| +--rw status? boolean | +--rw status? boolean
| +--rw timeout? uint16 | +--rw timeout? uint16
| +--rw level level | +--rw level level
+--rw overload-max-metric* [level] {overload-max-metric}? +--rw overload-max-metric* [level] {overload-max-metric}?
| +--rw status? boolean | +--rw status? boolean
| +--rw timeout? uint16 | +--rw timeout? uint16
| +--rw level level | +--rw level level
+--rw apply-policy
| +--rw config
| | ...
| +--ro state
| ...
+--rw fast-reroute {fast-reroute}? +--rw fast-reroute {fast-reroute}?
| +--rw lfa {lfa}? | +--rw lfa {lfa}?
+--rw topologies* [name] {multi-topology}? +--rw topologies* [name] {multi-topology}?
| +--rw enable? boolean | +--rw enable? boolean
| +--rw name rt:rib-ref | +--rw name leafref
| +--rw default-metric* [level] | +--rw default-metric* [level]
| | ... | | ...
| +--rw node-tag {node-tag}? | +--rw node-tag {node-tag}?
| | ... | | ...
| +--rw fast-reroute {fast-reroute}? | +--rw fast-reroute {fast-reroute}?
| ... | ...
+--rw interfaces +--rw interfaces
+--rw interface* [name] +--rw interface* [name]
... ...
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol: augment /rt:routing-state/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol:
+--ro isis +--ro isis
+--ro enable? boolean {admin-control}? +--ro enable? boolean {admin-control}?
+--ro level-type? level +--ro level-type? level
+--ro system-id? system-id +--ro system-id? system-id
+--ro maximum-area-addresses? uint8 {maximum-area-addresses}? +--ro maximum-area-addresses? uint8 {maximum-area-addresses}?
+--ro area-address* area-address +--ro area-address* area-address
+--ro mpls +--ro mpls
| +--ro ipv4-router-id? inet:ipv4-address {ipv4-router-id}? | +--ro ipv4-router-id? inet:ipv4-address {ipv4-router-id}?
| +--ro ipv6-router-id? inet:ipv6-address {ipv6-router-id}? | +--ro ipv6-router-id? inet:ipv6-address {ipv6-router-id}?
| +--ro igp-ldp-sync {igp-ldp-sync}? | +--ro igp-ldp-sync {igp-ldp-sync}?
skipping to change at page 6, line 20 skipping to change at page 6, line 29
| +--ro level level | +--ro level level
+--ro fast-reroute {fast-reroute}? +--ro fast-reroute {fast-reroute}?
| +--ro lfa {lfa}? | +--ro lfa {lfa}?
| +--ro protected-routes | +--ro protected-routes
| | ... | | ...
| +--ro nonprotected-routes | +--ro nonprotected-routes
| | ... | | ...
| +--ro protection-statistics* [frr-protection-method] | +--ro protection-statistics* [frr-protection-method]
| ... | ...
+--ro topologies* [name] +--ro topologies* [name]
| +--ro name rt:rib-ref | +--ro name leafref
| +--ro fast-route {fast-reroute}? | +--ro fast-route {fast-reroute}?
| ... | ...
+--ro system-counters +--ro system-counters
| +--ro level* [level] | +--ro level* [level]
| ... | ...
+--ro interfaces +--ro interfaces
| +--ro interface* [interface] | +--ro interface* [interface]
| ... | ...
+--ro spf-log +--ro spf-log
| +--ro event* [id] | +--ro event* [id]
skipping to change at page 10, line 41 skipping to change at page 10, line 51
<priority> <priority>
<value>100</value> <value>100</value>
<level>level-1</level> <level>level-1</level>
</priority> </priority>
<priority> <priority>
<value>200</value> <value>200</value>
<level>level-2</level> <level>level-2</level>
</priority> </priority>
As a list is used, a user may decide to apply a level-1, level-2 and
level-all parameter at the same time. An implementation SHOULD
prefer a level specific parameter over level-all parameter. As
example, if priority is 100 for level-1, 200 for level-2 and 250 for
level-all, the implementation should use 100 for level-1 and 200 for
level-2.
2.4. Per-Interface Parameters 2.4. Per-Interface Parameters
The per-interface section of the ISIS instance describes the The per-interface section of the ISIS instance describes the
interface specific parameters. interface specific parameters.
The interface is a reference to an interface in the Interface YANG The interface is a reference to an interface in the Interface YANG
model. model.
Each interface has interface-specific parameters that may have a Each interface has interface-specific parameters that may have a
different value per level as described in previous section. An different value per level as described in previous section. An
skipping to change at page 11, line 31 skipping to change at page 11, line 48
+--rw enable? boolean {admin-control}? +--rw enable? boolean {admin-control}?
+--rw tag* uint32 {prefix-tag}? +--rw tag* uint32 {prefix-tag}?
+--rw tag64* uint64 {prefix-tag64}? +--rw tag64* uint64 {prefix-tag64}?
+--rw hello-authentication* [level] +--rw hello-authentication* [level]
| +--rw (authentication-type)? | +--rw (authentication-type)?
| | +--:(key-chain) {key-chain}? | | +--:(key-chain) {key-chain}?
| | | +--rw key-chain? key-chain:key-chain-ref | | | +--rw key-chain? key-chain:key-chain-ref
| | +--:(password) | | +--:(password)
| | +--rw key? string | | +--rw key? string
| | +--rw (algorithm)? | | +--rw (algorithm)?
| | +--:(hmac-sha1-12) | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}?
| | | ...
| | +--:(hmac-sha1-20)
| | | ... | | | ...
| | +--:(md5) | | +--:(md5)
| | | ... | | | ...
| | +--:(sha-1) | | +--:(sha-1)
| | | ... | | | ...
| | +--:(hmac-sha-1) | | +--:(hmac-sha-1)
| | | ... | | | ...
| | +--:(hmac-sha-256) | | +--:(hmac-sha-256)
| | | ... | | | ...
| | +--:(hmac-sha-384) | | +--:(hmac-sha-384)
| | | ... | | | ...
| | +--:(hmac-sha-512) | | +--:(hmac-sha-512)
| | ... | | ...
skipping to change at page 12, line 12 skipping to change at page 12, line 29
+--rw hello-multiplier* [level] +--rw hello-multiplier* [level]
| +--rw value? uint16 | +--rw value? uint16
| +--rw level level | +--rw level level
+--rw priority* [level] +--rw priority* [level]
| +--rw value? uint8 | +--rw value? uint8
| +--rw level level | +--rw level level
+--rw metric* [level] +--rw metric* [level]
| +--rw value? wide-metric | +--rw value? wide-metric
| +--rw level level | +--rw level level
+--rw af* [af] +--rw af* [af]
| +--rw af identityref | +--rw af identityref
| +--rw bfd {bfd}? | +--rw bfd-cfg
| +--rw enable? boolean | +--rw enabled? boolean
| +--rw local-multiplier? multiplier
| +--rw (interval-config-type)?
| +--:(tx-rx-intervals)
| | +--rw desired-min-tx-interval uint32
| | +--rw required-min-rx-interval uint32
| +--:(single-interval)
| +--rw min-interval uint32
+--rw mpls +--rw mpls
| +--rw igp-ldp-sync {igp-ldp-sync}? | +--rw igp-ldp-sync {igp-ldp-sync}?
| +--rw enable? boolean | +--rw enable? boolean
+--rw fast-reroute {fast-reroute}? +--rw fast-reroute {fast-reroute}?
| +--rw lfa* [level] {lfa}? | +--rw lfa* [level] {lfa}?
| +--rw candidate-disabled? boolean | +--rw candidate-disabled? boolean
| +--rw enable? boolean | +--rw enable? boolean
| +--rw remote-lfa {remote-lfa}? | +--rw remote-lfa {remote-lfa}?
| | +--rw enable? boolean | | +--rw enable? boolean
| +--rw level level | +--rw level level
+--rw topologies* [name] +--rw topologies* [name]
+--rw name rt:rib-ref +--rw name leafref
+--rw fast-reroute {fast-reroute}? +--rw fast-reroute {fast-reroute}?
| +--rw lfa* [level] {lfa}? | +--rw lfa* [level] {lfa}?
| +--rw candidate-disabled? boolean | +--rw candidate-disabled? boolean
| +--rw enable? boolean | +--rw enable? boolean
| +--rw remote-lfa {remote-lfa}? | +--rw remote-lfa {remote-lfa}?
| | +--rw enable? boolean | | +--rw enable? boolean
| +--rw level level | +--rw level level
+--rw metric* [level] +--rw metric* [level]
+--rw value? wide-metric +--rw value? wide-metric
+--rw level level +--rw level level
skipping to change at page 18, line 32 skipping to change at page 19, line 9
configuration and operational states. configuration and operational states.
The IS-IS SR YANG module requires the base segment routing module The IS-IS SR YANG module requires the base segment routing module
([I-D.litkowski-spring-sr-yang]) to be supported as there is a strong ([I-D.litkowski-spring-sr-yang]) to be supported as there is a strong
relationship between those modules. relationship between those modules.
The figure below describe the overall structure of the isis-sr YANG The figure below describe the overall structure of the isis-sr YANG
module: module:
module: ietf-isis-sr module: ietf-isis-sr
augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis: augment /rt:routing/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol/isis:isis:
+--rw segment-routing +--rw segment-routing
+--rw enabled? boolean +--rw enabled? boolean
+--rw bindings +--rw bindings
+--rw advertise +--rw advertise
| +--rw policies* string | +--rw policies* string
+--rw receive? boolean +--rw receive? boolean
augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:interfaces/isis:interface: augment /rt:routing/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol/isis:isis/isis:interfaces/isis:interface:
+--rw segment-routing +--rw segment-routing
+--rw adjacency-sid +--rw adjacency-sid
+--rw advertise-adj-group-sid* [group-id] +--rw advertise-adj-group-sid* [group-id]
| +--rw group-id uint32 | +--rw group-id uint32
+--rw advertise-protection? enumeration +--rw advertise-protection? enumeration
augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:interfaces/isis:interface/isis:fast-reroute: augment /rt:routing/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol/isis:isis/isis:interfaces/isis:interface
/isis:fast-reroute:
+--rw ti-lfa {ti-lfa}? +--rw ti-lfa {ti-lfa}?
+--rw enable? boolean +--rw enable? boolean
augment /rt:routing/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:interfaces/isis:interface/isis:fast-reroute/isis:lfa/isis:remote-lfa: augment /rt:routing/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol/isis:isis/isis:interfaces/isis:interface
/isis:fast-reroute/isis:lfa/isis:remote-lfa:
+--rw use-segment-routing-path? boolean {remote-lfa-sr}? +--rw use-segment-routing-path? boolean {remote-lfa-sr}?
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis: augment /rt:routing-state/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol/isis:isis:
+--ro segment-routing +--ro segment-routing
+--ro enabled? boolean +--ro enabled? boolean
+--ro bindings +--ro bindings
+--ro advertise +--ro advertise
| +--ro policies* string | +--ro policies* string
+--ro receive? boolean +--ro receive? boolean
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:interfaces/isis:interface: augment /rt:routing-state/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol/isis:isis/isis:interfaces/isis:interface:
+--ro segment-routing +--ro segment-routing
+--ro adjacency-sid +--ro adjacency-sid
+--ro advertise-adj-group-sid* [group-id] +--ro advertise-adj-group-sid* [group-id]
| +--ro group-id uint32 | +--ro group-id uint32
+--ro advertise-protection? enumeration +--ro advertise-protection? enumeration
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:interfaces/isis:interface/isis:adjacencies/isis:adjacency: augment /rt:routing-state/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol/isis:isis/isis:interfaces/isis:interface
/isis:adjacencies/isis:adjacency:
+--ro adjacency-sid* [value] +--ro adjacency-sid* [value]
+--ro af? identityref +--ro af? identityref
+--ro value uint32 +--ro value uint32
+--ro weight? uint8 +--ro weight? uint8
+--ro protection-requested? boolean +--ro protection-requested? boolean
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:extended-is-neighbor/isis:neighbor: augment /rt:routing-state/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol/isis:isis/isis:database/isis:level-db
/isis:lsp/isis:extended-is-neighbor/isis:neighbor:
+--ro sid-list* [value] +--ro sid-list* [value]
+--ro flags? bits +--ro flags? bits
+--ro weight? uint8 +--ro weight? uint8
+--ro neighbor-id? isis:system-id +--ro neighbor-id? isis:system-id
+--ro value uint32 +--ro value uint32
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-is-neighbor/isis:neighbor: augment /rt:routing-state/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol/isis:isis/isis:database/isis:level-db
/isis:lsp/isis:mt-is-neighbor/isis:neighbor:
+--ro sid-list* [value] +--ro sid-list* [value]
+--ro flags? bits +--ro flags? bits
+--ro weight? uint8 +--ro weight? uint8
+--ro neighbor-id? isis:system-id +--ro neighbor-id? isis:system-id
+--ro value uint32 +--ro value uint32
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:extended-ipv4-reachability/isis:prefixes: augment /rt:routing-state/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol/isis:isis/isis:database/isis:level-db
/isis:lsp/isis:extended-ipv4-reachability/isis:prefixes:
+--ro sid-list* [value] +--ro sid-list* [value]
+--ro flags? bits +--ro flags? bits
+--ro algorithm? uint8 +--ro algorithm? uint8
+--ro value uint32 +--ro value uint32
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-extended-ipv4-reachability/isis:prefixes: augment /rt:routing-state/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol/isis:isis/isis:database/isis:level-db
/isis:lsp/isis:mt-extended-ipv4-reachability/isis:prefixes:
+--ro sid-list* [value] +--ro sid-list* [value]
+--ro flags? bits +--ro flags? bits
+--ro algorithm? uint8 +--ro algorithm? uint8
+--ro value uint32 +--ro value uint32
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:ipv6-reachability/isis:prefixes: augment /rt:routing-state/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol/isis:isis/isis:database/isis:level-db
/isis:lsp/isis:ipv6-reachability/isis:prefixes:
+--ro sid-list* [value] +--ro sid-list* [value]
+--ro flags? bits +--ro flags? bits
+--ro algorithm? uint8 +--ro algorithm? uint8
+--ro value uint32 +--ro value uint32
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp/isis:mt-ipv6-reachability/isis:prefixes: augment /rt:routing-state/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol/isis:isis/isis:database/isis:level-db
/isis:lsp/isis:mt-ipv6-reachability/isis:prefixes:
+--ro sid-list* [value] +--ro sid-list* [value]
+--ro flags? bits +--ro flags? bits
+--ro algorithm? uint8 +--ro algorithm? uint8
+--ro value uint32 +--ro value uint32
augment /rt:routing-state/rt:routing-instance/rt:routing-protocols/rt:routing-protocol/isis:isis/isis:database/isis:level-db/isis:lsp: augment /rt:routing-state/rt:routing-instance/rt:routing-protocols
/rt:routing-protocol/isis:isis/isis:database/isis:level-db
/isis:lsp:
+--ro segment-routing-bindings* [fec range] +--ro segment-routing-bindings* [fec range]
+--ro fec string +--ro fec string
+--ro range uint16 +--ro range uint16
+--ro flags? bits +--ro flags? bits
+--ro weight? uint8 +--ro weight? uint8
+--ro binding* +--ro binding*
+--ro prefix-sid +--ro prefix-sid
| +--ro sid-list* [value] | +--ro sid-list* [value]
| +--ro flags? bits | +--ro flags? bits
| +--ro algorithm? uint8 | +--ro algorithm? uint8
skipping to change at page 21, line 28 skipping to change at page 22, line 28
The "isis" module augments "/if:interfaces/if:interface" with ISO The "isis" module augments "/if:interfaces/if:interface" with ISO
specific parameters. specific parameters.
The "isis" operational state container augments the "/rt:routing- The "isis" operational state container augments the "/rt:routing-
state/rt:routing-instance/rt:routing-protocols/routing-protocol" state/rt:routing-instance/rt:routing-protocols/routing-protocol"
container of the ietf-routing module by defining ISIS specific container of the ietf-routing module by defining ISIS specific
operational states. operational states.
Some ISIS specific routes attributes are added to route objects of Some ISIS specific routes attributes are added to route objects of
the ietf-routing module by augmenting "/rt:routing- the ietf-routing module by augmenting "/rt:routing-
state/rt:ribs/rt:rib/rt:routes/rt:route" and "/rt:active- state/rt:ribs/rt:rib/rt:routes/rt:route" and "/rt:fib-
route/rt:output/rt:route". route/rt:output/rt:route".
The module uses some groupings from ietf-keychain, routing-policy and
ietf-bfd modules.
7. ISIS YANG Module 7. ISIS YANG Module
<CODE BEGINS> file "ietf-isis@2015-07-02.yang" <CODE BEGINS> file "ietf-isis@2015-09-10.yang"
module ietf-isis { module ietf-isis {
namespace "urn:ietf:params:xml:ns:yang:ietf-isis"; namespace "urn:ietf:params:xml:ns:yang:ietf-isis";
prefix isis; prefix isis;
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
} }
skipping to change at page 22, line 11 skipping to change at page 23, line 15
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
} }
import ietf-key-chain { import ietf-key-chain {
prefix "key-chain"; prefix "key-chain";
} }
import ietf-bfd {
prefix "bfd";
}
import routing-policy {
prefix rtgpol;
}
organization organization
"IETF ISIS Working Group"; "IETF ISIS Working Group";
contact contact
"WG List: &lt;mailto:isis-wg@ietf.org&gt; "WG List: &lt;mailto:isis-wg@ietf.org&gt;
Editor: Stephane Litkowski Editor: Stephane Litkowski
&lt;mailto:stephane.litkowski@orange.com&gt; &lt;mailto:stephane.litkowski@orange.com&gt;
Derek Yeung Derek Yeung
skipping to change at page 67, line 39 skipping to change at page 68, line 46
list af { list af {
key af; key af;
leaf af { leaf af {
type identityref { type identityref {
base rt:address-family; base rt:address-family;
} }
description description
"Address-family"; "Address-family";
} }
container bfd { uses bfd:bfd-client-base-cfg-parms;
if-feature bfd;
leaf enable {
type boolean;
default false;
description
"This leaf enables BFD.";
}
description
"The container describes
BFD config.";
}
description description
"List of AFs."; "List of AFs.";
} }
container mpls { container mpls {
container igp-ldp-sync { container igp-ldp-sync {
if-feature igp-ldp-sync; if-feature igp-ldp-sync;
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Enable/disable IGP LDP sync."; "Enable/disable IGP LDP sync.";
} }
description description
"IGP-LDP sync configuration."; "IGP-LDP sync configuration.";
skipping to change at page 69, line 4 skipping to change at page 69, line 44
type level; type level;
description description
"Level applicability."; "Level applicability.";
} }
description description
"Container for interface metric"; "Container for interface metric";
} }
} }
/* */ /* */
augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" {
augment "/rt:routing-state/rt:routing-instance/"
+"rt:ribs/rt:rib/rt:routes/rt:route" {
when "rt:source-protocol = 'isis:isis'" { when "rt:source-protocol = 'isis:isis'" {
description "ISIS-specific route attributes."; description "ISIS-specific route attributes.";
} }
uses route-content; uses route-content;
description description
"This augments route object in RIB with ISIS-specific "This augments route object in RIB with ISIS-specific
attributes."; attributes.";
} }
augment "/rt:active-route/rt:output/rt:route" augment "/rt:fib-route/rt:output/rt:route"
{ {
uses route-content; uses route-content;
description "ISIS-specific route attributes."; description "ISIS-specific route attributes.";
} }
augment "/if:interfaces/if:interface" augment "/if:interfaces/if:interface"
{ {
leaf clns-mtu { leaf clns-mtu {
type uint16; type uint16;
description description
skipping to change at page 70, line 4 skipping to change at page 70, line 46
container isis { container isis {
must "count(area-address) > 0" { must "count(area-address) > 0" {
error-message "At least one area-address error-message "At least one area-address
must be configured."; must be configured.";
description description
"Enforce configuration of at least one area."; "Enforce configuration of at least one area.";
} }
uses isis-global-cfg; uses isis-global-cfg;
uses rtgpol:apply-policy-group;
container fast-reroute { container fast-reroute {
if-feature fast-reroute; if-feature fast-reroute;
uses fast-reroute-global-cfg; uses fast-reroute-global-cfg;
description description
"IPFRR."; "IPFRR.";
} }
list topologies { list topologies {
if-feature multi-topology; if-feature multi-topology;
key "name"; key "name";
leaf enable { leaf enable {
type boolean; type boolean;
description description
"Control enabling of topologies"; "Control enabling of topologies";
} }
leaf name { leaf name {
type rt:rib-ref; type leafref {
path "../../../../../rt:ribs/rt:rib/rt:name";
}
description "RIB"; description "RIB";
} }
uses isis-global-topologies-cfg; uses isis-global-topologies-cfg;
container fast-reroute { container fast-reroute {
if-feature fast-reroute; if-feature fast-reroute;
uses fast-reroute-global-cfg; uses fast-reroute-global-cfg;
description description
"IPFRR."; "IPFRR.";
} }
skipping to change at page 71, line 12 skipping to change at page 72, line 12
container fast-reroute { container fast-reroute {
if-feature fast-reroute; if-feature fast-reroute;
uses fast-reroute-if-cfg; uses fast-reroute-if-cfg;
description description
"IPFRR."; "IPFRR.";
} }
list topologies { list topologies {
key name; key name;
leaf name { leaf name {
type rt:rib-ref; type leafref {
path "../../../../../../../"+
"rt:ribs/rt:rib/rt:name";
}
description description
"Name of RIB."; "Name of RIB.";
} }
container fast-reroute { container fast-reroute {
if-feature fast-reroute; if-feature fast-reroute;
uses fast-reroute-if-cfg; uses fast-reroute-if-cfg;
description description
"IPFRR."; "IPFRR.";
} }
uses isis-if-topologies-cfg; uses isis-if-topologies-cfg;
skipping to change at page 72, line 19 skipping to change at page 73, line 22
uses fast-reroute-global-cfg; uses fast-reroute-global-cfg;
uses fast-reroute-global-state; uses fast-reroute-global-state;
description description
"IPFRR states."; "IPFRR states.";
} }
list topologies { list topologies {
key name; key name;
leaf name { leaf name {
type rt:rib-ref; type leafref {
path "../../../../../"
+"rt:ribs/rt:rib/rt:name";
}
description description
"Name of RIB."; "Name of RIB.";
} }
container fast-route { container fast-route {
if-feature fast-reroute; if-feature fast-reroute;
uses fast-reroute-global-cfg; uses fast-reroute-global-cfg;
uses fast-reroute-global-state; uses fast-reroute-global-state;
description description
"IPFRR states."; "IPFRR states.";
} }
skipping to change at page 74, line 50 skipping to change at page 76, line 10
uses fast-reroute-if-cfg; uses fast-reroute-if-cfg;
description description
"IPFRR."; "IPFRR.";
} }
uses adjacency-state; uses adjacency-state;
list topologies { list topologies {
key name; key name;
leaf name { leaf name {
type rt:rib-ref; type leafref {
path "../../../../../"
+"../../rt:ribs/rt:rib/rt:name";
}
description description
"Name of RIB."; "Name of RIB.";
} }
uses isis-if-topologies-cfg; uses isis-if-topologies-cfg;
container fast-reroute { container fast-reroute {
if-feature fast-reroute; if-feature fast-reroute;
uses fast-reroute-if-cfg; uses fast-reroute-if-cfg;
description description
"IPFRR."; "IPFRR.";
} }
skipping to change at page 96, line 4 skipping to change at page 97, line 15
description description
"This leaf describes the timestamp "This leaf describes the timestamp
when our LSP was regenerated. "; when our LSP was regenerated. ";
} }
description description
"This notification is sent when a LSP "This notification is sent when a LSP
is regenerated. is regenerated.
The notification generation must be throttled with at least The notification generation must be throttled with at least
a 5 second gap. "; a 5 second gap. ";
} }
} }
<CODE ENDS> <CODE ENDS>
8. ISIS Segment Routing YANG Module 8. ISIS Segment Routing YANG Module
<CODE BEGINS> file "ietf-isis-sr@2015-07-02.yang" <CODE BEGINS> file "ietf-isis-sr@2015-09-10.yang"
module ietf-isis-sr { module ietf-isis-sr {
namespace "urn:ietf:params:xml:ns:" namespace "urn:ietf:params:xml:ns:"
+ "yang:ietf-isis-sr"; + "yang:ietf-isis-sr";
prefix isis-sr; prefix isis-sr;
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
} }
skipping to change at page 105, line 42 skipping to change at page 107, line 6
"rt:routing-protocols/rt:routing-protocol"+ "rt:routing-protocols/rt:routing-protocol"+
"/isis:isis" { "/isis:isis" {
when "rt:type = 'isis:isis'" { when "rt:type = 'isis:isis'" {
description description
"This augment ISIS routing protocol when used"; "This augment ISIS routing protocol when used";
} }
description description
"This augments ISIS protocol configuration "This augments ISIS protocol configuration
with segment routing."; with segment routing.";
uses sr:controlplane-cfg; uses sr:igp-controlplane-cfg;
} }
augment "/rt:routing/rt:routing-instance/" + augment "/rt:routing/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+ "rt:routing-protocols/rt:routing-protocol"+
"/isis:isis/isis:interfaces/isis:interface" { "/isis:isis/isis:interfaces/isis:interface" {
when "rt:type = 'isis:isis'" { when "rt:type = 'isis:isis'" {
description description
"This augment ISIS routing protocol when used"; "This augment ISIS routing protocol when used";
} }
description description
"This augments ISIS protocol configuration "This augments ISIS protocol configuration
with segment routing."; with segment routing.";
uses sr:igp-interface-cfg; uses sr:igp-interface-cfg;
} }
augment "/rt:routing/rt:routing-instance/" + augment "/rt:routing/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+ "rt:routing-protocols/rt:routing-protocol"+
skipping to change at page 107, line 23 skipping to change at page 108, line 36
"rt:routing-protocols/rt:routing-protocol"+ "rt:routing-protocols/rt:routing-protocol"+
"/isis:isis" { "/isis:isis" {
when "rt:type = 'isis:isis'" { when "rt:type = 'isis:isis'" {
description description
"This augment ISIS routing protocol when used"; "This augment ISIS routing protocol when used";
} }
description description
"This augments ISIS protocol configuration "This augments ISIS protocol configuration
with segment routing."; with segment routing.";
uses sr:controlplane-cfg; uses sr:igp-controlplane-cfg;
} }
augment "/rt:routing-state/rt:routing-instance/" + augment "/rt:routing-state/rt:routing-instance/" +
"rt:routing-protocols/rt:routing-protocol"+ "rt:routing-protocols/rt:routing-protocol"+
"/isis:isis/isis:interfaces/isis:interface" { "/isis:isis/isis:interfaces/isis:interface" {
when "rt:type = 'isis:isis'" { when "rt:type = 'isis:isis'" {
description description
"This augment ISIS routing protocol when used"; "This augment ISIS routing protocol when used";
} }
description description
skipping to change at page 111, line 11 skipping to change at page 112, line 26
Lhotka, L. and A. Lindem, "A YANG Data Model for Routing Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
Management", draft-ietf-netmod-routing-cfg-19 (work in Management", draft-ietf-netmod-routing-cfg-19 (work in
progress), May 2015. progress), May 2015.
[I-D.litkowski-spring-sr-yang] [I-D.litkowski-spring-sr-yang]
Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG
Data Model for Segment Routing", draft-litkowski-spring- Data Model for Segment Routing", draft-litkowski-spring-
sr-yang-01 (work in progress), June 2015. sr-yang-01 (work in progress), June 2015.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
Bierman, "Network Configuration Protocol (NETCONF)", RFC and A. Bierman, Ed., "Network Configuration Protocol
6241, June 2011. (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<http://www.rfc-editor.org/info/rfc6241>.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, June 2011. Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
<http://www.rfc-editor.org/info/rfc6242>.
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
Protocol (NETCONF) Access Control Model", RFC 6536, March Protocol (NETCONF) Access Control Model", RFC 6536,
2012. DOI 10.17487/RFC6536, March 2012,
<http://www.rfc-editor.org/info/rfc6536>.
Appendix A. Example: NETCONF <get> Reply Appendix A. Example: NETCONF <get> Reply
This section gives an example of a reply to the NETCONF <get> request This section gives an example of a reply to the NETCONF <get> request
for a device that implements the data model defined in this document. for a device that implements the data model defined in this document.
The example is written in XML. The example is written in XML.
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
 End of changes. 58 change blocks. 
82 lines changed or deleted 148 lines changed or added

This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/