draft-ietf-pce-pcep-yang-00.txt   draft-ietf-pce-pcep-yang-01.txt 
PCE Working Group D. Dhody, Ed. PCE Working Group D. Dhody, Ed.
Internet-Draft Huawei Technologies Internet-Draft Huawei Technologies
Intended status: Standards Track J. Hardwick Intended status: Standards Track J. Hardwick
Expires: March 16, 2017 Metaswitch Expires: April 30, 2017 Metaswitch
V. Beeram V. Beeram
Juniper Networks Juniper Networks
J. Tantsura J. Tantsura
September 12, 2016 October 27, 2016
A YANG Data Model for Path Computation Element Communications Protocol A YANG Data Model for Path Computation Element Communications Protocol
(PCEP) (PCEP)
draft-ietf-pce-pcep-yang-00 draft-ietf-pce-pcep-yang-01
Abstract Abstract
This document defines a YANG data model for the management of Path This document defines a YANG data model for the management of Path
Computation Element communications Protocol (PCEP) for communications Computation Element communications Protocol (PCEP) for communications
between a Path Computation Client (PCC) and a Path Computation between a Path Computation Client (PCC) and a Path Computation
Element (PCE), or between two PCEs. The data model includes Element (PCE), or between two PCEs. The data model includes
configuration data and state data (status information and counters configuration data and state data (status information and counters
for the collection of statistics). for the collection of statistics).
skipping to change at page 1, line 40 skipping to change at page 1, line 40
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on March 16, 2017. This Internet-Draft will expire on April 30, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 20 skipping to change at page 2, line 20
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3
3. Terminology and Notation . . . . . . . . . . . . . . . . . . 3 3. Terminology and Notation . . . . . . . . . . . . . . . . . . 3
3.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 3.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4
3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5 3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5
4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 5 4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 5
5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 6 5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 6
5.1. The Entity . . . . . . . . . . . . . . . . . . . . . . . 17 5.1. The Entity . . . . . . . . . . . . . . . . . . . . . . . 19
5.2. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 18 5.2. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 19
5.3. The Session Lists . . . . . . . . . . . . . . . . . . . . 18 5.3. The Session Lists . . . . . . . . . . . . . . . . . . . . 20
5.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 19 5.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 20
6. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 19 6. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 20
6.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 19 6.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 21
7. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 20 7. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 21
7.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 20 7.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 21
7.2. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 20 7.2. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 21
8. PCEP YANG Module . . . . . . . . . . . . . . . . . . . . . . 20 8. PCEP YANG Module . . . . . . . . . . . . . . . . . . . . . . 22
9. Security Considerations . . . . . . . . . . . . . . . . . . . 83 9. Security Considerations . . . . . . . . . . . . . . . . . . . 94
10. Manageability Considerations . . . . . . . . . . . . . . . . 84 10. Manageability Considerations . . . . . . . . . . . . . . . . 94
10.1. Control of Function and Policy . . . . . . . . . . . . . 84 10.1. Control of Function and Policy . . . . . . . . . . . . . 94
10.2. Information and Data Models . . . . . . . . . . . . . . 84 10.2. Information and Data Models . . . . . . . . . . . . . . 94
10.3. Liveness Detection and Monitoring . . . . . . . . . . . 84 10.3. Liveness Detection and Monitoring . . . . . . . . . . . 94
10.4. Verify Correct Operations . . . . . . . . . . . . . . . 84 10.4. Verify Correct Operations . . . . . . . . . . . . . . . 94
10.5. Requirements On Other Protocols . . . . . . . . . . . . 84 10.5. Requirements On Other Protocols . . . . . . . . . . . . 94
10.6. Impact On Network Operations . . . . . . . . . . . . . . 84 10.6. Impact On Network Operations . . . . . . . . . . . . . . 94
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 84 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 94
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 85 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 95
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 85 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 95
13.1. Normative References . . . . . . . . . . . . . . . . . . 85 13.1. Normative References . . . . . . . . . . . . . . . . . . 95
13.2. Informative References . . . . . . . . . . . . . . . . . 86 13.2. Informative References . . . . . . . . . . . . . . . . . 96
Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 88 Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 98
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 89 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 99
1. Introduction 1. Introduction
The Path Computation Element (PCE) defined in [RFC4655] is an entity The Path Computation Element (PCE) defined in [RFC4655] is an entity
that is capable of computing a network path or route based on a that is capable of computing a network path or route based on a
network graph, and applying computational constraints. A Path network graph, and applying computational constraints. A Path
Computation Client (PCC) may make requests to a PCE for paths to be Computation Client (PCC) may make requests to a PCE for paths to be
computed. computed.
PCEP is the communication protocol between a PCC and PCE and is PCEP is the communication protocol between a PCC and PCE and is
skipping to change at page 4, line 34 skipping to change at page 4, line 34
(PCInitiate). (PCInitiate).
[I-D.ietf-pce-lsp-setup-type] : [I-D.ietf-pce-lsp-setup-type] :
o Path Setup Type (PST). o Path Setup Type (PST).
[I-D.ietf-pce-segment-routing] : [I-D.ietf-pce-segment-routing] :
o Segment Routing (SR). o Segment Routing (SR).
o Segment Identifier (SID).
o Maximum SID Depth (MSD).
3.1. Tree Diagrams 3.1. Tree Diagrams
A graphical representation of the complete data tree is presented in A graphical representation of the complete data tree is presented in
Section 5. The meaning of the symbols in these diagrams is as Section 5. The meaning of the symbols in these diagrams is as
follows and as per [I-D.ietf-netmod-rfc6087bis]: follows and as per [I-D.ietf-netmod-rfc6087bis]:
o Brackets "[" and "]" enclose list keys. o Brackets "[" and "]" enclose list keys.
o Curly braces "{" and "}" contain names of optional features that
make the corresponding node conditional.
o Abbreviations before data node names: "rw" means configuration o Abbreviations before data node names: "rw" means configuration
(read-write), and "ro" state data (read-only). (read-write) and "ro" state data (read-only).
o Symbols after data node names: "?" means an optional node and "*" o Symbols after data node names: "?" means an optional node, "!"
denotes a "list" or "leaf-list". means a presence container, and "*" denotes a list and leaf-list.
o Parentheses enclose choice and case nodes, and case nodes are also o Parentheses enclose choice and case nodes, and case nodes are also
marked with a colon (":"). marked with a colon (":").
o Ellipsis ("...") stands for contents of subtrees that are not o Ellipsis ("...") stands for contents of subtrees that are not
shown. shown.
3.2. Prefixes in Data Node Names 3.2. Prefixes in Data Node Names
In this document, names of data nodes and other data model objects In this document, names of data nodes and other data model objects
are often used without a prefix, as long as it is clear from the are often used without a prefix, as long as it is clear from the
context in which YANG module each name is defined. Otherwise, names context in which YANG module each name is defined. Otherwise, names
are prefixed using the standard prefix associated with the are prefixed using the standard prefix associated with the
corresponding YANG module, as shown in Table 1. corresponding YANG module, as shown in Table 1.
+--------+-----------------+-----------+ +-----------+-----------------+---------------------------------+
| Prefix | YANG module | Reference | | Prefix | YANG module | Reference |
+--------+-----------------+-----------+ +-----------+-----------------+---------------------------------+
| yang | ietf-yang-types | [RFC6991] | | yang | ietf-yang-types | [RFC6991] |
| inet | ietf-inet-types | [RFC6991] | | inet | ietf-inet-types | [RFC6991] |
+--------+-----------------+-----------+ | te | ietf-te | [I-D.ietf-teas-yang-te] |
| te-types | ietf-te-types | [I-D.ietf-teas-yang-te] |
| key-chain | ietf-key-chain | [I-D.ietf-rtgwg-yang-key-chain] |
+-----------+-----------------+---------------------------------+
Table 1: Prefixes and corresponding YANG modules Table 1: Prefixes and corresponding YANG modules
4. Objectives 4. Objectives
This section describes some of the design objectives for the model: This section describes some of the design objectives for the model:
o In case of existing implementations, it needs to map the data o In case of existing implementations, it needs to map the data
model defined in this document to their proprietary native data model defined in this document to their proprietary native data
model. To facilitate such mappings, the data model should be model. To facilitate such mappings, the data model should be
skipping to change at page 6, line 20 skipping to change at page 6, line 17
The module, "ietf-pcep", defines the basic components of a PCE The module, "ietf-pcep", defines the basic components of a PCE
speaker. speaker.
module: ietf-pcep module: ietf-pcep
+--rw pcep! +--rw pcep!
| +--rw entity | +--rw entity
| +--rw addr inet:ip-address | +--rw addr inet:ip-address
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw role pcep-role | +--rw role pcep-role
| +--rw description? string | +--rw description? string
| +--rw speaker-entity-id? string {stateful-sync-opt}?
| +--rw domain | +--rw domain
| | +--rw domain* [domain-type domain] | | +--rw domain* [domain-type domain]
| | +--rw domain-type domain-type | | +--rw domain-type domain-type
| | +--rw domain domain | | +--rw domain domain
| +--rw capability | +--rw capability
| | +--rw gmpls? boolean {gmpls}? | | +--rw gmpls? boolean {gmpls}?
| | +--rw bi-dir? boolean | | +--rw bi-dir? boolean
| | +--rw diverse? boolean | | +--rw diverse? boolean
| | +--rw load-balance? boolean | | +--rw load-balance? boolean
| | +--rw synchronize? boolean {svec}? | | +--rw synchronize? boolean {svec}?
| | +--rw objective-function? boolean {obj-fn}? | | +--rw objective-function? boolean {objective-function}?
| | +--rw add-path-constraint? boolean | | +--rw add-path-constraint? boolean
| | +--rw prioritization? boolean | | +--rw prioritization? boolean
| | +--rw multi-request? boolean | | +--rw multi-request? boolean
| | +--rw gco? boolean {gco}? | | +--rw gco? boolean {gco}?
| | +--rw p2mp? boolean {p2mp}? | | +--rw p2mp? boolean {p2mp}?
| | +--rw stateful {stateful}? | | +--rw stateful {stateful}?
| | | +--rw enabled? boolean | | | +--rw enabled? boolean
| | | +--rw active? boolean | | | +--rw active? boolean
| | | +--rw pce-initiated? boolean {pce-initiated}? | | | +--rw pce-initiated? boolean {pce-initiated}?
| | | +--rw include-db-ver? boolean {stateful-sync-opt}?
| | | +--rw trigger-resync? boolean {stateful-sync-opt}?
| | | +--rw trigger-initial-sync? boolean {stateful-sync-opt}?
| | | +--rw incremental-sync? boolean {stateful-sync-opt}?
| | +--rw sr {sr}? | | +--rw sr {sr}?
| | +--rw enabled? boolean | | +--rw enabled? boolean
| | +--rw msd? uint8
| +--rw pce-info | +--rw pce-info
| | +--rw scope | | +--rw scope
| | | +--rw intra-area-scope? boolean | | | +--rw intra-area-scope? boolean
| | | +--rw intra-area-pref? uint8 | | | +--rw intra-area-pref? uint8
| | | +--rw inter-area-scope? boolean | | | +--rw inter-area-scope? boolean
| | | +--rw inter-area-scope-default? boolean | | | +--rw inter-area-scope-default? boolean
| | | +--rw inter-area-pref? uint8 | | | +--rw inter-area-pref? uint8
| | | +--rw inter-as-scope? boolean | | | +--rw inter-as-scope? boolean
| | | +--rw inter-as-scope-default? boolean | | | +--rw inter-as-scope-default? boolean
| | | +--rw inter-as-pref? uint8 | | | +--rw inter-as-pref? uint8
| | | +--rw inter-layer-scope? boolean | | | +--rw inter-layer-scope? boolean
| | | +--rw inter-layer-pref? uint8 | | | +--rw inter-layer-pref? uint8
| | +--rw neigh-domains | | +--rw neigh-domains
| | | +--rw domain* [domain-type domain] | | | +--rw domain* [domain-type domain]
| | | +--rw domain-type domain-type | | | +--rw domain-type domain-type
| | | +--rw domain domain | | | +--rw domain domain
| | +--rw (auth-type-selection)? | | +--rw path-key {path-key}?
| | +--:(auth-key-chain) | | +--rw enabled? boolean
| | | +--rw key-chain? key-chain:key-chain-ref | | +--rw discard-timer? uint32
| | +--:(auth-key) | | +--rw reuse-time? uint32
| | | +--rw key? string | | +--rw pce-id? inet:ip-address
| | | +--rw crypto-algorithm | +--rw (auth-type-selection)?
| | | +--rw (algorithm)? | | +--:(auth-key-chain)
| | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? | | | +--rw key-chain? key-chain:key-chain-ref
| | | | +--rw hmac-sha1-12? empty | | +--:(auth-key)
| | | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}? | | | +--rw key? string
| | | | +--rw aes-cmac-prf-128? empty | | | +--rw crypto-algorithm
| | | +--:(md5) | | | +--rw (algorithm)?
| | | | +--rw md5? empty | | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}?
| | | +--:(sha-1) | | | | +--rw hmac-sha1-12? empty
| | | | +--rw sha-1? empty | | | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}?
| | | +--:(hmac-sha-1) | | | | +--rw aes-cmac-prf-128? empty
| | | | +--rw hmac-sha-1? empty | | | +--:(md5)
| | | +--:(hmac-sha-256) | | | | +--rw md5? empty
| | | | +--rw hmac-sha-256? empty | | | +--:(sha-1)
| | | +--:(hmac-sha-384) | | | | +--rw sha-1? empty
| | | | +--rw hmac-sha-384? empty | | | +--:(hmac-sha-1)
| | | +--:(hmac-sha-512) | | | | +--rw hmac-sha-1? empty
| | | | +--rw hmac-sha-512? empty | | | +--:(hmac-sha-256)
| | | +--:(clear-text) {clear-text}? | | | | +--rw hmac-sha-256? empty
| | | | +--rw clear-text? empty | | | +--:(hmac-sha-384)
| | | +--:(replay-protection-only) {replay-protection-only}? | | | | +--rw hmac-sha-384? empty
| | | +--rw replay-protection-only? empty | | | +--:(hmac-sha-512)
| | +--:(auth-tls) {tls}? | | | | +--rw hmac-sha-512? empty
| | +--rw tls | | | +--:(clear-text) {clear-text}?
| | | | +--rw clear-text? empty
| | | +--:(replay-protection-only) {replay-protection-only}?
| | | +--rw replay-protection-only? empty
| | +--:(auth-tls) {tls}?
| | +--rw tls
| +--rw connect-timer? uint32 | +--rw connect-timer? uint32
| +--rw connect-max-retry? uint32 | +--rw connect-max-retry? uint32
| +--rw init-backoff-timer? uint32 | +--rw init-backoff-timer? uint32
| +--rw max-backoff-timer? uint32 | +--rw max-backoff-timer? uint32
| +--rw open-wait-timer? uint32 | +--rw open-wait-timer? uint32
| +--rw keep-wait-timer? uint32 | +--rw keep-wait-timer? uint32
| +--rw keep-alive-timer? uint32 | +--rw keep-alive-timer? uint32
| +--rw dead-timer? uint32 | +--rw dead-timer? uint32
| +--rw allow-negotiation? boolean | +--rw allow-negotiation? boolean
| +--rw max-keep-alive-timer? uint32 | +--rw max-keep-alive-timer? uint32
skipping to change at page 8, line 14 skipping to change at page 8, line 20
| +--rw sync-timer? uint32 {svec}? | +--rw sync-timer? uint32 {svec}?
| +--rw request-timer? uint32 | +--rw request-timer? uint32
| +--rw max-sessions? uint32 | +--rw max-sessions? uint32
| +--rw max-unknown-reqs? uint32 | +--rw max-unknown-reqs? uint32
| +--rw max-unknown-msgs? uint32 | +--rw max-unknown-msgs? uint32
| +--rw pcep-notification-max-rate uint32 | +--rw pcep-notification-max-rate uint32
| +--rw stateful-parameter {stateful}? | +--rw stateful-parameter {stateful}?
| | +--rw state-timeout? uint32 | | +--rw state-timeout? uint32
| | +--rw redelegation-timeout? uint32 | | +--rw redelegation-timeout? uint32
| | +--rw rpt-non-pcep-lsp? boolean | | +--rw rpt-non-pcep-lsp? boolean
| +--rw of-list {objective-function}?
| | +--rw objective-function* [of]
| | +--rw of objective-function
| +--rw peers | +--rw peers
| +--rw peer* [addr] | +--rw peer* [addr]
| +--rw addr inet:ip-address | +--rw addr inet:ip-address
| +--rw description? string | +--rw description? string
| +--rw domain | +--rw domain
| | +--rw domain* [domain-type domain] | | +--rw domain* [domain-type domain]
| | +--rw domain-type domain-type | | +--rw domain-type domain-type
| | +--rw domain domain | | +--rw domain domain
| +--rw capability | +--rw capability
| | +--rw gmpls? boolean {gmpls}? | | +--rw gmpls? boolean {gmpls}?
| | +--rw bi-dir? boolean | | +--rw bi-dir? boolean
| | +--rw diverse? boolean | | +--rw diverse? boolean
| | +--rw load-balance? boolean | | +--rw load-balance? boolean
| | +--rw synchronize? boolean {svec}? | | +--rw synchronize? boolean {svec}?
| | +--rw objective-function? boolean {obj-fn}? | | +--rw objective-function? boolean {objective-function}?
| | +--rw add-path-constraint? boolean | | +--rw add-path-constraint? boolean
| | +--rw prioritization? boolean | | +--rw prioritization? boolean
| | +--rw multi-request? boolean | | +--rw multi-request? boolean
| | +--rw gco? boolean {gco}? | | +--rw gco? boolean {gco}?
| | +--rw p2mp? boolean {p2mp}? | | +--rw p2mp? boolean {p2mp}?
| | +--rw stateful {stateful}? | | +--rw stateful {stateful}?
| | | +--rw enabled? boolean | | | +--rw enabled? boolean
| | | +--rw active? boolean | | | +--rw active? boolean
| | | +--rw pce-initiated? boolean {pce-initiated}? | | | +--rw pce-initiated? boolean {pce-initiated}?
| | | +--rw include-db-ver? boolean {stateful-sync-opt}?
| | | +--rw trigger-resync? boolean {stateful-sync-opt}?
| | | +--rw trigger-initial-sync? boolean {stateful-sync-opt}?
| | | +--rw incremental-sync? boolean {stateful-sync-opt}?
| | +--rw sr {sr}? | | +--rw sr {sr}?
| | +--rw enabled? boolean | | +--rw enabled? boolean
| | +--rw msd? uint8
| +--rw scope | +--rw scope
| | +--rw intra-area-scope? boolean | | +--rw intra-area-scope? boolean
| | +--rw intra-area-pref? uint8 | | +--rw intra-area-pref? uint8
| | +--rw inter-area-scope? boolean | | +--rw inter-area-scope? boolean
| | +--rw inter-area-scope-default? boolean | | +--rw inter-area-scope-default? boolean
| | +--rw inter-area-pref? uint8 | | +--rw inter-area-pref? uint8
| | +--rw inter-as-scope? boolean | | +--rw inter-as-scope? boolean
| | +--rw inter-as-scope-default? boolean | | +--rw inter-as-scope-default? boolean
| | +--rw inter-as-pref? uint8 | | +--rw inter-as-pref? uint8
| | +--rw inter-layer-scope? boolean | | +--rw inter-layer-scope? boolean
| | +--rw inter-layer-pref? uint8 | | +--rw inter-layer-pref? uint8
| +--rw neigh-domains | +--rw neigh-domains
| | +--rw domain* [domain-type domain] | | +--rw domain* [domain-type domain]
| | +--rw domain-type domain-type | | +--rw domain-type domain-type
| | +--rw domain domain | | +--rw domain domain
| +--rw delegation-pref? uint8 {stateful}? | +--rw delegation-pref? uint8 {stateful}?
| +--rw (auth-type-selection)? | +--rw (auth-type-selection)?
| +--:(auth-key-chain) | | +--:(auth-key-chain)
| | +--rw key-chain? key-chain:key-chain-ref | | | +--rw key-chain? key-chain:key-chain-ref
| +--:(auth-key) | | +--:(auth-key)
| | +--rw key? string | | | +--rw key? string
| | +--rw crypto-algorithm | | | +--rw crypto-algorithm
| | +--rw (algorithm)? | | | +--rw (algorithm)?
| | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? | | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}?
| | | +--rw hmac-sha1-12? empty | | | | +--rw hmac-sha1-12? empty
| | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}? | | | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}?
| | | +--rw aes-cmac-prf-128? empty | | | | +--rw aes-cmac-prf-128? empty
| | +--:(md5) | | | +--:(md5)
| | | +--rw md5? empty | | | | +--rw md5? empty
| | +--:(sha-1) | | | +--:(sha-1)
| | | +--rw sha-1? empty | | | | +--rw sha-1? empty
| | +--:(hmac-sha-1) | | | +--:(hmac-sha-1)
| | | +--rw hmac-sha-1? empty | | | | +--rw hmac-sha-1? empty
| | +--:(hmac-sha-256) | | | +--:(hmac-sha-256)
| | | +--rw hmac-sha-256? empty | | | | +--rw hmac-sha-256? empty
| | +--:(hmac-sha-384) | | | +--:(hmac-sha-384)
| | | +--rw hmac-sha-384? empty | | | | +--rw hmac-sha-384? empty
| | +--:(hmac-sha-512) | | | +--:(hmac-sha-512)
| | | +--rw hmac-sha-512? empty | | | | +--rw hmac-sha-512? empty
| | +--:(clear-text) {clear-text}? | | | +--:(clear-text) {clear-text}?
| | | +--rw clear-text? empty | | | | +--rw clear-text? empty
| | +--:(replay-protection-only) {replay-protection-only}? | | | +--:(replay-protection-only) {replay-protection-only}?
| | +--rw replay-protection-only? empty | | | +--rw replay-protection-only? empty
| +--:(auth-tls) {tls}? | | +--:(auth-tls) {tls}?
| +--rw tls | | +--rw tls
| +--rw of-list {objective-function}?
| +--rw objective-function* [of]
| +--rw of objective-function
+--ro pcep-state +--ro pcep-state
+--ro entity +--ro entity
+--ro addr? inet:ip-address +--ro addr? inet:ip-address
+--ro index? uint32 +--ro index? uint32
+--ro admin-status? pcep-admin-status +--ro admin-status? pcep-admin-status
+--ro oper-status? pcep-admin-status +--ro oper-status? pcep-admin-status
+--ro role? pcep-role +--ro role? pcep-role
+--ro description? string
+--ro speaker-entity-id? string {stateful-sync-opt}?
+--ro domain +--ro domain
| +--ro domain* [domain-type domain] | +--ro domain* [domain-type domain]
| +--ro domain-type domain-type | +--ro domain-type domain-type
| +--ro domain domain | +--ro domain domain
+--ro capability +--ro capability
| +--ro gmpls? boolean {gmpls}? | +--ro gmpls? boolean {gmpls}?
| +--ro bi-dir? boolean | +--ro bi-dir? boolean
| +--ro diverse? boolean | +--ro diverse? boolean
| +--ro load-balance? boolean | +--ro load-balance? boolean
| +--ro synchronize? boolean {svec}? | +--ro synchronize? boolean {svec}?
| +--ro objective-function? boolean {obj-fn}? | +--ro objective-function? boolean {objective-function}?
| +--ro add-path-constraint? boolean | +--ro add-path-constraint? boolean
| +--ro prioritization? boolean | +--ro prioritization? boolean
| +--ro multi-request? boolean | +--ro multi-request? boolean
| +--ro gco? boolean {gco}? | +--ro gco? boolean {gco}?
| +--ro p2mp? boolean {p2mp}? | +--ro p2mp? boolean {p2mp}?
| +--ro stateful {stateful}? | +--ro stateful {stateful}?
| | +--ro enabled? boolean | | +--ro enabled? boolean
| | +--ro active? boolean | | +--ro active? boolean
| | +--ro pce-initiated? boolean {pce-initiated}? | | +--ro pce-initiated? boolean {pce-initiated}?
| | +--ro include-db-ver? boolean {stateful-sync-opt}?
| | +--ro trigger-resync? boolean {stateful-sync-opt}?
| | +--ro trigger-initial-sync? boolean {stateful-sync-opt}?
| | +--ro incremental-sync? boolean {stateful-sync-opt}?
| +--ro sr {sr}? | +--ro sr {sr}?
| +--ro enabled? boolean | +--ro enabled? boolean
| +--ro msd? uint8
+--ro pce-info +--ro pce-info
| +--ro scope | +--ro scope
| | +--ro intra-area-scope? boolean | | +--ro intra-area-scope? boolean
| | +--ro intra-area-pref? uint8 | | +--ro intra-area-pref? uint8
| | +--ro inter-area-scope? boolean | | +--ro inter-area-scope? boolean
| | +--ro inter-area-scope-default? boolean | | +--ro inter-area-scope-default? boolean
| | +--ro inter-area-pref? uint8 | | +--ro inter-area-pref? uint8
| | +--ro inter-as-scope? boolean | | +--ro inter-as-scope? boolean
| | +--ro inter-as-scope-default? boolean | | +--ro inter-as-scope-default? boolean
| | +--ro inter-as-pref? uint8 | | +--ro inter-as-pref? uint8
| | +--ro inter-layer-scope? boolean | | +--ro inter-layer-scope? boolean
| | +--ro inter-layer-pref? uint8 | | +--ro inter-layer-pref? uint8
| +--ro neigh-domains | +--ro neigh-domains
| | +--ro domain* [domain-type domain] | | +--ro domain* [domain-type domain]
| | +--ro domain-type domain-type | | +--ro domain-type domain-type
| | +--ro domain domain | | +--ro domain domain
| +--ro (auth-type-selection)? | +--ro path-key {path-key}?
| +--:(auth-key-chain) | +--ro enabled? boolean
| | +--ro key-chain? key-chain:key-chain-ref | +--ro discard-timer? uint32
| +--:(auth-key) | +--ro reuse-time? uint32
| | +--ro key? string | +--ro pce-id? inet:ip-address
| | +--ro crypto-algorithm +--ro (auth-type-selection)?
| | +--ro (algorithm)? | +--:(auth-key-chain)
| | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? | | +--ro key-chain? key-chain:key-chain-ref
| | | +--ro hmac-sha1-12? empty | +--:(auth-key)
| | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}? | | +--ro key? string
| | | +--ro aes-cmac-prf-128? empty | | +--ro crypto-algorithm
| | +--:(md5) | | +--ro (algorithm)?
| | | +--ro md5? empty | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}?
| | +--:(sha-1) | | | +--ro hmac-sha1-12? empty
| | | +--ro sha-1? empty | | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}?
| | +--:(hmac-sha-1) | | | +--ro aes-cmac-prf-128? empty
| | | +--ro hmac-sha-1? empty | | +--:(md5)
| | +--:(hmac-sha-256) | | | +--ro md5? empty
| | | +--ro hmac-sha-256? empty | | +--:(sha-1)
| | +--:(hmac-sha-384) | | | +--ro sha-1? empty
| | | +--ro hmac-sha-384? empty | | +--:(hmac-sha-1)
| | +--:(hmac-sha-512) | | | +--ro hmac-sha-1? empty
| | | +--ro hmac-sha-512? empty | | +--:(hmac-sha-256)
| | +--:(clear-text) {clear-text}? | | | +--ro hmac-sha-256? empty
| | | +--ro clear-text? empty | | +--:(hmac-sha-384)
| | +--:(replay-protection-only) {replay-protection-only}? | | | +--ro hmac-sha-384? empty
| | +--ro replay-protection-only? empty | | +--:(hmac-sha-512)
| +--:(auth-tls) {tls}? | | | +--ro hmac-sha-512? empty
| +--ro tls | | +--:(clear-text) {clear-text}?
| | | +--ro clear-text? empty
| | +--:(replay-protection-only) {replay-protection-only}?
| | +--ro replay-protection-only? empty
| +--:(auth-tls) {tls}?
| +--ro tls
+--ro connect-timer? uint32 +--ro connect-timer? uint32
+--ro connect-max-retry? uint32 +--ro connect-max-retry? uint32
+--ro init-backoff-timer? uint32 +--ro init-backoff-timer? uint32
+--ro max-backoff-timer? uint32 +--ro max-backoff-timer? uint32
+--ro open-wait-timer? uint32 +--ro open-wait-timer? uint32
+--ro keep-wait-timer? uint32 +--ro keep-wait-timer? uint32
+--ro keep-alive-timer? uint32 +--ro keep-alive-timer? uint32
+--ro dead-timer? uint32 +--ro dead-timer? uint32
+--ro allow-negotiation? boolean +--ro allow-negotiation? boolean
+--ro max-keep-alive-timer? uint32 +--ro max-keep-alive-timer? uint32
skipping to change at page 11, line 40 skipping to change at page 12, line 17
+--ro sync-timer? uint32 {svec}? +--ro sync-timer? uint32 {svec}?
+--ro request-timer? uint32 +--ro request-timer? uint32
+--ro max-sessions? uint32 +--ro max-sessions? uint32
+--ro max-unknown-reqs? uint32 +--ro max-unknown-reqs? uint32
+--ro max-unknown-msgs? uint32 +--ro max-unknown-msgs? uint32
+--ro stateful-parameter {stateful}? +--ro stateful-parameter {stateful}?
| +--ro state-timeout? uint32 | +--ro state-timeout? uint32
| +--ro redelegation-timeout? uint32 | +--ro redelegation-timeout? uint32
| +--ro rpt-non-pcep-lsp? boolean | +--ro rpt-non-pcep-lsp? boolean
+--ro lsp-db {stateful}? +--ro lsp-db {stateful}?
| +--ro db-ver? uint64 {stateful-sync-opt}?
| +--ro association-list* [id source global-source extended-id] | +--ro association-list* [id source global-source extended-id]
| | +--ro type? assoc-type | | +--ro type? assoc-type
| | +--ro id uint16 | | +--ro id uint16
| | +--ro source inet:ip-address | | +--ro source inet:ip-address
| | +--ro global-source uint32 | | +--ro global-source uint32
| | +--ro extended-id string | | +--ro extended-id string
| | +--ro lsp* [plsp-id pcc-id] | | +--ro lsp* [plsp-id pcc-id]
| | +--ro plsp-id -> /pcep-state/entity/lsp-db/lsp/plsp-id | | +--ro plsp-id -> /pcep-state/entity/lsp-db/lsp/plsp-id
| | +--ro pcc-id -> /pcep-state/entity/lsp-db/lsp/pcc-id | | +--ro pcc-id -> /pcep-state/entity/lsp-db/lsp/pcc-id
| +--ro lsp* [plsp-id pcc-id] | +--ro lsp* [plsp-id pcc-id]
skipping to change at page 12, line 28 skipping to change at page 13, line 6
| | +--ro enabled? boolean | | +--ro enabled? boolean
| | +--ro pce? -> /pcep-state/entity/peers/peer/addr | | +--ro pce? -> /pcep-state/entity/peers/peer/addr
| +--ro symbolic-path-name? string | +--ro symbolic-path-name? string
| +--ro last-error? lsp-error | +--ro last-error? lsp-error
| +--ro pst? pst | +--ro pst? pst
| +--ro association-list* [id source global-source extended-id] | +--ro association-list* [id source global-source extended-id]
| +--ro id -> /pcep-state/entity/lsp-db/association-list/id | +--ro id -> /pcep-state/entity/lsp-db/association-list/id
| +--ro source -> /pcep-state/entity/lsp-db/association-list/source | +--ro source -> /pcep-state/entity/lsp-db/association-list/source
| +--ro global-source -> /pcep-state/entity/lsp-db/association-list/global-source | +--ro global-source -> /pcep-state/entity/lsp-db/association-list/global-source
| +--ro extended-id -> /pcep-state/entity/lsp-db/association-list/extended-id | +--ro extended-id -> /pcep-state/entity/lsp-db/association-list/extended-id
+--ro path-keys {path-key}?
| +--ro path-keys* [path-key]
| +--ro path-key uint16
| +--ro cps
| | +--ro explicit-route-objects* [index]
| | +--ro index uint8
| | +--ro explicit-route-usage? identityref
| | +--ro (type)?
| | +--:(ipv4-address)
| | | +--ro v4-address? inet:ipv4-address
| | | +--ro v4-prefix-length? uint8
| | | +--ro v4-loose? boolean
| | +--:(ipv6-address)
| | | +--ro v6-address? inet:ipv6-address
| | | +--ro v6-prefix-length? uint8
| | | +--ro v6-loose? boolean
| | +--:(as-number)
| | | +--ro as-number? uint16
| | +--:(unnumbered-link)
| | | +--ro router-id? inet:ip-address
| | | +--ro interface-id? uint32
| | +--:(label)
| | +--ro value? uint32
| +--ro pcc-original? -> /pcep-state/entity/peers/peer/addr
| +--ro req-id? uint32
| +--ro retrieved? boolean
| +--ro pcc-retrieved? -> /pcep-state/entity/peers/peer/addr
| +--ro creation-time? yang:timestamp
| +--ro discard-time? uint32
| +--ro reuse-time? uint32
+--ro of-list {objective-function}?
| +--ro objective-function* [of]
| +--ro of objective-function
+--ro peers +--ro peers
+--ro peer* [addr] +--ro peer* [addr]
+--ro addr inet:ip-address +--ro addr inet:ip-address
+--ro role? pcep-role +--ro role? pcep-role
+--ro domain +--ro domain
| +--ro domain* [domain-type domain] | +--ro domain* [domain-type domain]
| +--ro domain-type domain-type | +--ro domain-type domain-type
| +--ro domain domain | +--ro domain domain
+--ro capability +--ro capability
| +--ro gmpls? boolean {gmpls}? | +--ro gmpls? boolean {gmpls}?
| +--ro bi-dir? boolean | +--ro bi-dir? boolean
| +--ro diverse? boolean | +--ro diverse? boolean
| +--ro load-balance? boolean | +--ro load-balance? boolean
| +--ro synchronize? boolean {svec}? | +--ro synchronize? boolean {svec}?
| +--ro objective-function? boolean {obj-fn}? | +--ro objective-function? boolean {objective-function}?
| +--ro add-path-constraint? boolean | +--ro add-path-constraint? boolean
| +--ro prioritization? boolean | +--ro prioritization? boolean
| +--ro multi-request? boolean | +--ro multi-request? boolean
| +--ro gco? boolean {gco}? | +--ro gco? boolean {gco}?
| +--ro p2mp? boolean {p2mp}? | +--ro p2mp? boolean {p2mp}?
| +--ro stateful {stateful}? | +--ro stateful {stateful}?
| | +--ro enabled? boolean | | +--ro enabled? boolean
| | +--ro active? boolean | | +--ro active? boolean
| | +--ro pce-initiated? boolean {pce-initiated}? | | +--ro pce-initiated? boolean {pce-initiated}?
| | +--ro include-db-ver? boolean {stateful-sync-opt}?
| | +--ro trigger-resync? boolean {stateful-sync-opt}?
| | +--ro trigger-initial-sync? boolean {stateful-sync-opt}?
| | +--ro incremental-sync? boolean {stateful-sync-opt}?
| +--ro sr {sr}? | +--ro sr {sr}?
| +--ro enabled? boolean | +--ro enabled? boolean
| +--ro msd? uint8
+--ro pce-info +--ro pce-info
| +--ro scope | +--ro scope
| | +--ro intra-area-scope? boolean | | +--ro intra-area-scope? boolean
| | +--ro intra-area-pref? uint8 | | +--ro intra-area-pref? uint8
| | +--ro inter-area-scope? boolean | | +--ro inter-area-scope? boolean
| | +--ro inter-area-scope-default? boolean | | +--ro inter-area-scope-default? boolean
| | +--ro inter-area-pref? uint8 | | +--ro inter-area-pref? uint8
| | +--ro inter-as-scope? boolean | | +--ro inter-as-scope? boolean
| | +--ro inter-as-scope-default? boolean | | +--ro inter-as-scope-default? boolean
| | +--ro inter-as-pref? uint8 | | +--ro inter-as-pref? uint8
skipping to change at page 14, line 5 skipping to change at page 15, line 19
| | +--:(hmac-sha-384) | | +--:(hmac-sha-384)
| | | +--ro hmac-sha-384? empty | | | +--ro hmac-sha-384? empty
| | +--:(hmac-sha-512) | | +--:(hmac-sha-512)
| | | +--ro hmac-sha-512? empty | | | +--ro hmac-sha-512? empty
| | +--:(clear-text) {clear-text}? | | +--:(clear-text) {clear-text}?
| | | +--ro clear-text? empty | | | +--ro clear-text? empty
| | +--:(replay-protection-only) {replay-protection-only}? | | +--:(replay-protection-only) {replay-protection-only}?
| | +--ro replay-protection-only? empty | | +--ro replay-protection-only? empty
| +--:(auth-tls) {tls}? | +--:(auth-tls) {tls}?
| +--ro tls | +--ro tls
+--ro of-list {objective-function}?
| +--ro objective-function* [of]
| +--ro of objective-function
+--ro discontinuity-time? yang:timestamp +--ro discontinuity-time? yang:timestamp
+--ro initiate-session? boolean +--ro initiate-session? boolean
+--ro session-exists? boolean +--ro session-exists? boolean
+--ro num-sess-setup-ok? yang:counter32 +--ro num-sess-setup-ok? yang:counter32
+--ro num-sess-setup-fail? yang:counter32 +--ro num-sess-setup-fail? yang:counter32
+--ro session-up-time? yang:timestamp +--ro session-up-time? yang:timestamp
+--ro session-fail-time? yang:timestamp +--ro session-fail-time? yang:timestamp
+--ro session-fail-up-time? yang:timestamp +--ro session-fail-up-time? yang:timestamp
+--ro pcep-stats +--ro pcep-stats
| +--ro avg-rsp-time? uint32 | +--ro avg-rsp-time? uint32
skipping to change at page 15, line 22 skipping to change at page 16, line 39
| | +--ro num-upd-rcvd? yang:counter32 | | +--ro num-upd-rcvd? yang:counter32
| | +--ro num-upd-rcvd-unknown? yang:counter32 | | +--ro num-upd-rcvd-unknown? yang:counter32
| | +--ro num-upd-rcvd-undelegated? yang:counter32 | | +--ro num-upd-rcvd-undelegated? yang:counter32
| | +--ro num-upd-rcvd-error-sent? yang:counter32 | | +--ro num-upd-rcvd-error-sent? yang:counter32
| | +--ro initiation {pce-initiated}? | | +--ro initiation {pce-initiated}?
| | +--ro num-pcinitiate-sent? yang:counter32 | | +--ro num-pcinitiate-sent? yang:counter32
| | +--ro num-pcinitiate-rcvd? yang:counter32 | | +--ro num-pcinitiate-rcvd? yang:counter32
| | +--ro num-initiate-sent? yang:counter32 | | +--ro num-initiate-sent? yang:counter32
| | +--ro num-initiate-rcvd? yang:counter32 | | +--ro num-initiate-rcvd? yang:counter32
| | +--ro num-initiate-rcvd-error-sent? yang:counter32 | | +--ro num-initiate-rcvd-error-sent? yang:counter32
| +--ro path-key {path-key}?
| | +--ro num-unknown-path-key? yang:counter32
| | +--ro num-exp-path-key? yang:counter32
| | +--ro num-dup-path-key? yang:counter32
| | +--ro num-path-key-no-attempt? yang:counter32
| +--ro num-req-sent-closed? yang:counter32 | +--ro num-req-sent-closed? yang:counter32
| +--ro num-req-rcvd-closed? yang:counter32 | +--ro num-req-rcvd-closed? yang:counter32
+--ro sessions +--ro sessions
+--ro session* [initiator] +--ro session* [initiator]
+--ro initiator pcep-initiator +--ro initiator pcep-initiator
+--ro state-last-change? yang:timestamp +--ro state-last-change? yang:timestamp
+--ro state? pcep-sess-state +--ro state? pcep-sess-state
+--ro session-creation? yang:timestamp +--ro session-creation? yang:timestamp
+--ro connect-retry? yang:counter32 +--ro connect-retry? yang:counter32
+--ro local-id? uint32 +--ro local-id? uint32
skipping to change at page 15, line 43 skipping to change at page 17, line 17
+--ro keepalive-timer? uint32 +--ro keepalive-timer? uint32
+--ro peer-keepalive-timer? uint32 +--ro peer-keepalive-timer? uint32
+--ro dead-timer? uint32 +--ro dead-timer? uint32
+--ro peer-dead-timer? uint32 +--ro peer-dead-timer? uint32
+--ro ka-hold-time-rem? uint32 +--ro ka-hold-time-rem? uint32
+--ro overloaded? boolean +--ro overloaded? boolean
+--ro overload-time? uint32 +--ro overload-time? uint32
+--ro peer-overloaded? boolean +--ro peer-overloaded? boolean
+--ro peer-overload-time? uint32 +--ro peer-overload-time? uint32
+--ro lspdb-sync? sync-state {stateful}? +--ro lspdb-sync? sync-state {stateful}?
+--ro recv-db-ver? uint64 {stateful,stateful-sync-opt}?
+--ro of-list {objective-function}?
| +--ro objective-function* [of]
| +--ro of objective-function
+--ro speaker-entity-id? string {stateful-sync-opt}?
+--ro discontinuity-time? yang:timestamp +--ro discontinuity-time? yang:timestamp
+--ro pcep-stats +--ro pcep-stats
+--ro avg-rsp-time? uint32 +--ro avg-rsp-time? uint32
+--ro lwm-rsp-time? uint32 +--ro lwm-rsp-time? uint32
+--ro hwm-rsp-time? uint32 +--ro hwm-rsp-time? uint32
+--ro num-pcreq-sent? yang:counter32 +--ro num-pcreq-sent? yang:counter32
+--ro num-pcreq-rcvd? yang:counter32 +--ro num-pcreq-rcvd? yang:counter32
+--ro num-pcrep-sent? yang:counter32 +--ro num-pcrep-sent? yang:counter32
+--ro num-pcrep-rcvd? yang:counter32 +--ro num-pcrep-rcvd? yang:counter32
+--ro num-pcerr-sent? yang:counter32 +--ro num-pcerr-sent? yang:counter32
skipping to change at page 16, line 35 skipping to change at page 18, line 14
+--ro num-req-rcvd-error-sent? yang:counter32 +--ro num-req-rcvd-error-sent? yang:counter32
+--ro num-req-rcvd-cancel-rcvd? yang:counter32 +--ro num-req-rcvd-cancel-rcvd? yang:counter32
+--ro num-rep-rcvd-unknown? yang:counter32 +--ro num-rep-rcvd-unknown? yang:counter32
+--ro num-req-rcvd-unknown? yang:counter32 +--ro num-req-rcvd-unknown? yang:counter32
+--ro svec {svec}? +--ro svec {svec}?
| +--ro num-svec-sent? yang:counter32 | +--ro num-svec-sent? yang:counter32
| +--ro num-svec-req-sent? yang:counter32 | +--ro num-svec-req-sent? yang:counter32
| +--ro num-svec-rcvd? yang:counter32 | +--ro num-svec-rcvd? yang:counter32
| +--ro num-svec-req-rcvd? yang:counter32 | +--ro num-svec-req-rcvd? yang:counter32
+--ro stateful {stateful}? +--ro stateful {stateful}?
+--ro num-pcrpt-sent? yang:counter32 | +--ro num-pcrpt-sent? yang:counter32
+--ro num-pcrpt-rcvd? yang:counter32 | +--ro num-pcrpt-rcvd? yang:counter32
+--ro num-pcupd-sent? yang:counter32 | +--ro num-pcupd-sent? yang:counter32
+--ro num-pcupd-rcvd? yang:counter32 | +--ro num-pcupd-rcvd? yang:counter32
+--ro num-rpt-sent? yang:counter32 | +--ro num-rpt-sent? yang:counter32
+--ro num-rpt-rcvd? yang:counter32 | +--ro num-rpt-rcvd? yang:counter32
+--ro num-rpt-rcvd-error-sent? yang:counter32 | +--ro num-rpt-rcvd-error-sent? yang:counter32
+--ro num-upd-sent? yang:counter32 | +--ro num-upd-sent? yang:counter32
+--ro num-upd-rcvd? yang:counter32 | +--ro num-upd-rcvd? yang:counter32
+--ro num-upd-rcvd-unknown? yang:counter32 | +--ro num-upd-rcvd-unknown? yang:counter32
+--ro num-upd-rcvd-undelegated? yang:counter32 | +--ro num-upd-rcvd-undelegated? yang:counter32
+--ro num-upd-rcvd-error-sent? yang:counter32 | +--ro num-upd-rcvd-error-sent? yang:counter32
+--ro initiation {pce-initiated}? | +--ro initiation {pce-initiated}?
+--ro num-pcinitiate-sent? yang:counter32 | +--ro num-pcinitiate-sent? yang:counter32
+--ro num-pcinitiate-rcvd? yang:counter32 | +--ro num-pcinitiate-rcvd? yang:counter32
+--ro num-initiate-sent? yang:counter32 | +--ro num-initiate-sent? yang:counter32
+--ro num-initiate-rcvd? yang:counter32 | +--ro num-initiate-rcvd? yang:counter32
+--ro num-initiate-rcvd-error-sent? yang:counter32 | +--ro num-initiate-rcvd-error-sent? yang:counter32
+--ro path-key {path-key}?
+--ro num-unknown-path-key? yang:counter32
+--ro num-exp-path-key? yang:counter32
+--ro num-dup-path-key? yang:counter32
+--ro num-path-key-no-attempt? yang:counter32
notifications: notifications:
+---n pcep-session-up +---n pcep-session-up
| +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr | +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr
| +--ro session-initiator? -> /pcep-state/entity/peers/peer/sessions/session/initiator | +--ro session-initiator? -> /pcep-state/entity/peers/peer/sessions/session/initiator
| +--ro state-last-change? yang:timestamp | +--ro state-last-change? yang:timestamp
| +--ro state? pcep-sess-state | +--ro state? pcep-sess-state
+---n pcep-session-down +---n pcep-session-down
| +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr | +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr
| +--ro session-initiator? pcep-initiator | +--ro session-initiator? pcep-initiator
| +--ro state-last-change? yang:timestamp | +--ro state-last-change? yang:timestamp
skipping to change at page 20, line 33 skipping to change at page 22, line 11
A future version of this document would add TLS related A future version of this document would add TLS related
configurations. configurations.
8. PCEP YANG Module 8. PCEP YANG Module
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the RFC Ed.: In this section, replace all occurrences of 'XXXX' with the
actual RFC number and all occurrences of the revision date below with actual RFC number and all occurrences of the revision date below with
the date of RFC publication (and remove this note). the date of RFC publication (and remove this note).
<CODE BEGINS> file "ietf-pcep@2016-07-07.yang" <CODE BEGINS> file "ietf-pcep@2016-10-27.yang"
module ietf-pcep { module ietf-pcep {
namespace "urn:ietf:params:xml:ns:yang:ietf-pcep"; namespace "urn:ietf:params:xml:ns:yang:ietf-pcep";
prefix pcep; prefix pcep;
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
} }
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix "yang";
} }
import ietf-te { import ietf-te {
prefix "te"; prefix "te";
} }
import ietf-te-types {
prefix "te-types";
}
import ietf-key-chain { import ietf-key-chain {
prefix "key-chain"; prefix "key-chain";
} }
organization organization
"IETF PCE (Path Computation Element) Working Group"; "IETF PCE (Path Computation Element) Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/pce/> "WG Web: <http://tools.ietf.org/wg/pce/>
WG List: <mailto:pce@ietf.org> WG List: <mailto:pce@ietf.org>
WG Chair: JP Vasseur WG Chair: JP Vasseur
<mailto:jpv@cisco.com> <mailto:jpv@cisco.com>
skipping to change at page 21, line 27 skipping to change at page 23, line 10
WG Chair: Jonathan Hardwick WG Chair: Jonathan Hardwick
<mailto:Jonathan.Hardwick@metaswitch.com> <mailto:Jonathan.Hardwick@metaswitch.com>
Editor: Dhruv Dhody Editor: Dhruv Dhody
<mailto:dhruv.ietf@gmail.com>"; <mailto:dhruv.ietf@gmail.com>";
description description
"The YANG module defines a generic configuration and "The YANG module defines a generic configuration and
operational model for PCEP common across all of the operational model for PCEP common across all of the
vendor implementations."; vendor implementations.";
revision 2016-07-07 { revision 2016-10-27 {
description "Initial revision."; description "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for Path Computation "RFC XXXX: A YANG Data Model for Path Computation
Element Communications Protocol Element Communications Protocol
(PCEP)"; (PCEP)";
} }
/* /*
* Identities * Identities
*/ */
skipping to change at page 28, line 42 skipping to change at page 30, line 24
value "2"; value "2";
description description
"The state synchronization "The state synchronization
is finished."; is finished.";
} }
} }
description description
"The LSP-DB state synchronization operational status."; "The LSP-DB state synchronization operational status.";
} }
typedef pst{ typedef pst{
type enumeration{ type enumeration{
enum rsvp-te{ enum rsvp-te{
value "0"; value "0";
description
"RSVP-TE signaling protocol";
}
enum sr{
value "1";
description
"Segment Routing Traffic Engineering";
}
}
description description
"The Path Setup Type"; "RSVP-TE signaling protocol";
}
enum sr{
value "1";
description
"Segment Routing Traffic Engineering";
}
} }
description
"The Path Setup Type";
}
typedef assoc-type{ typedef assoc-type{
type enumeration{ type enumeration{
enum protection{ enum protection{
value "1"; value "1";
description description
"Path Protection Association Type"; "Path Protection Association Type";
} }
} }
description description
"The PCEP Association Type"; "The PCEP Association Type";
} }
typedef objective-function{
type enumeration{
enum mcp{
value "1";
description
"Minimum Cost Path (MCP)";
}
enum mlp{
value "2";
description
"Minimum Load Path (MLP)";
}
enum mbp{
value "3";
description
"Maximum residual Bandwidth Path (MBP)";
}
enum mbc{
value "4";
description
"Minimize aggregate Bandwidth Consumption (MBC)";
}
enum mll{
value "5";
description
"Minimize the Load of the most loaded Link (MLL)";
}
enum mcc{
value "6";
description
"Minimize the Cumulative Cost of a set of paths
(MCC)";
}
enum spt{
value "7";
description
"Shortest Path Tree (SPT)";
}
enum mct{
value "8";
description
"Minimum Cost Tree (MCT)";
}
enum mplp{
value "9";
description
"Minimum Packet Loss Path (MPLP)";
}
enum mup{
value "10";
description
"Maximum Under-Utilized Path (MUP)";
}
enum mrup{
value "11";
description
"Maximum Reserved Under-Utilized Path (MRUP)";
}
}
description
"The PCEP Objective functions";
}
/* /*
* Features * Features
*/ */
feature svec { feature svec {
description description
"Support synchronized path computation."; "Support synchronized path computation.";
} }
feature gmpls { feature gmpls {
description description
"Support GMPLS."; "Support GMPLS.";
} }
feature obj-fn { feature objective-function {
description description
"Support OF as per RFC 5541."; "Support OF as per RFC 5541.";
} }
feature gco { feature gco {
description description
"Support GCO as per RFC 5557."; "Support GCO as per RFC 5557.";
} }
feature pathkey { feature path-key {
description description
"Support pathkey as per RFC 5520."; "Support path-key as per RFC 5520.";
} }
feature p2mp { feature p2mp {
description description
"Support P2MP as per RFC 6006."; "Support P2MP as per RFC 6006.";
} }
feature stateful { feature stateful {
description description
"Support stateful PCE."; "Support stateful PCE.";
} }
feature stateful-sync-opt {
description
"Support stateful sync optimization";
}
feature pce-initiated { feature pce-initiated {
description description
"Support PCE-Initiated LSP."; "Support PCE-Initiated LSP.";
} }
feature tls { feature tls {
description description
"Support PCEP over TLS."; "Support PCEP over TLS.";
} }
feature sr { feature sr {
description description
"Support Segement Routing for PCE."; "Support Segment Routing for PCE.";
} }
/* /*
* Groupings * Groupings
*/ */
grouping pcep-entity-info{ grouping pcep-entity-info{
description description
"This grouping defines the attributes for PCEP entity."; "This grouping defines the attributes for PCEP entity.";
leaf connect-timer { leaf connect-timer {
skipping to change at page 33, line 15 skipping to change at page 36, line 15
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
leaf dead-timer { leaf dead-timer {
type uint32 { type uint32 {
range "0..255"; range "0..255";
} }
units "seconds"; units "seconds";
must ". >= ../keep-alive-timer" { must "(. > ../keep-alive-timer)" {
error-message "The dead timer must be " error-message "The dead timer must be "
+ "larger than the keep alive timer"; + "larger than the keep alive timer";
description description
"This value MUST be greater than "This value MUST be greater than
keep-alive-timer."; keep-alive-timer.";
} }
default 120; default 120;
description description
"The dead timer that this PCEP entity will propose "The dead timer that this PCEP entity will propose
skipping to change at page 35, line 16 skipping to change at page 38, line 16
description description
"The value of SyncTimer in seconds is used in the "The value of SyncTimer in seconds is used in the
case of synchronized path computation request case of synchronized path computation request
using the SVEC object. Consider the case where a using the SVEC object. Consider the case where a
PCReq message is received by a PCE that contains PCReq message is received by a PCE that contains
the SVEC object referring to M synchronized path the SVEC object referring to M synchronized path
computation requests. If after the expiration of computation requests. If after the expiration of
the SyncTimer all the M path computation requests the SyncTimer all the M path computation requests
have not been, received a protocol error is have not been, received a protocol error is
triggered and the PCE MUST cancel the whole set triggered and the PCE MUST cancel the whole set
of path computation requests. of path computation requests.
The aim of the SyncTimer is to avoid the storage The aim of the SyncTimer is to avoid the storage
of unused synchronized requests should one of of unused synchronized requests should one of
them get lost for some reasons (for example, a them get lost for some reasons (for example, a
misbehaving PCC). misbehaving PCC).
Zero means that the PCEP entity does not use the Zero means that the PCEP entity does not use the
SyncTimer."; SyncTimer.";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
skipping to change at page 36, line 32 skipping to change at page 39, line 32
"The maximum number of unknown messages that any "The maximum number of unknown messages that any
session on this PCEP entity is willing to accept session on this PCEP entity is willing to accept
per minute before terminating the session."; per minute before terminating the session.";
reference reference
"RFC 5440: Path Computation Element (PCE) "RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)"; Communication Protocol (PCEP)";
} }
}//pcep-entity-info }//pcep-entity-info
grouping pce-scope{ grouping pce-scope{
description description
"This grouping defines PCE path computation scope "This grouping defines PCE path computation scope
information which maybe relevant to PCE selection. information which maybe relevant to PCE selection.
This information corresponds to PCE auto-discovery This information corresponds to PCE auto-discovery
information."; information.";
reference reference
"RFC 5088: OSPF Protocol Extensions for Path "RFC 5088: OSPF Protocol Extensions for Path
Computation Element (PCE) Computation Element (PCE)
Discovery Discovery
RFC 5089: IS-IS Protocol Extensions for Path RFC 5089: IS-IS Protocol Extensions for Path
skipping to change at page 38, line 22 skipping to change at page 41, line 22
leaf inter-layer-pref{ leaf inter-layer-pref{
type uint8{ type uint8{
range "0..7"; range "0..7";
} }
description description
"The PCE's preference for inter-layer TE LSP "The PCE's preference for inter-layer TE LSP
computation."; computation.";
} }
}//pce-scope }//pce-scope
grouping domain{ grouping domain{
description description
"This grouping specifies a Domain where the "This grouping specifies a Domain where the
PCEP speaker has topology visibility."; PCEP speaker has topology visibility.";
leaf domain-type{ leaf domain-type{
type domain-type; type domain-type;
description description
"The domain type."; "The domain type.";
} }
leaf domain{ leaf domain{
type domain; type domain;
skipping to change at page 39, line 32 skipping to change at page 42, line 32
description description
"Load-balanced path computation."; "Load-balanced path computation.";
} }
leaf synchronize{ leaf synchronize{
if-feature svec; if-feature svec;
type boolean; type boolean;
description description
"Synchronized paths computation."; "Synchronized paths computation.";
} }
leaf objective-function{ leaf objective-function{
if-feature obj-fn; if-feature objective-function;
type boolean; type boolean;
description description
"Support for multiple objective functions."; "Support for multiple objective functions.";
} }
leaf add-path-constraint{ leaf add-path-constraint{
type boolean; type boolean;
description description
"Support for additive path constraints (max "Support for additive path constraints (max
hop count, etc.)."; hop count, etc.).";
} }
skipping to change at page 40, line 40 skipping to change at page 43, line 40
type boolean; type boolean;
description description
"Support for active stateful PCE."; "Support for active stateful PCE.";
} }
leaf pce-initiated{ leaf pce-initiated{
if-feature pce-initiated; if-feature pce-initiated;
type boolean; type boolean;
description description
"Support for PCE-initiated LSP."; "Support for PCE-initiated LSP.";
} }
leaf include-db-ver{
if-feature stateful-sync-opt;
type boolean;
description
"Support inclusion of LSP-DB-VERSION
in LSP object";
}
leaf trigger-resync{
if-feature stateful-sync-opt;
type boolean;
description
"Support PCE triggered re-synchronization";
}
leaf trigger-initial-sync{
if-feature stateful-sync-opt;
type boolean;
description
"PCE triggered initial synchronization";
}
leaf incremental-sync{
if-feature stateful-sync-opt;
type boolean;
description
"Support incremental (delta) sync";
}
} }
container sr{ container sr{
if-feature sr; if-feature sr;
description description
"If segment routing is supported"; "If segment routing is supported";
leaf enabled{ leaf enabled{
type boolean; type boolean;
description description
"Enabled or Disabled"; "Enabled or Disabled";
} }
leaf msd{ /*should be in MPLS yang model (?)*/
type uint8; }
must "((../../role == 'pcc')" +
" or " +
"(../../role == 'pcc-and-pce')))"
{
error-message
"The PCEP entity must be PCC";
description
"When PCEP entity is PCC for
MSD to be applicable";
}
description
"Maximum SID Depth";
}
}
}//capability }//capability
grouping info{ grouping info{
description description
"This grouping specifies all information which "This grouping specifies all information which
maybe relevant to both PCC and PCE. maybe relevant to both PCC and PCE.
This information corresponds to PCE auto-discovery This information corresponds to PCE auto-discovery
information."; information.";
container domain{ container domain{
description description
"The local domain for the PCEP entity"; "The local domain for the PCEP entity";
list domain{ list domain{
key "domain-type domain"; key "domain-type domain";
skipping to change at page 41, line 41 skipping to change at page 45, line 4
"The local domain."; "The local domain.";
uses domain{ uses domain{
description description
"The local domain for the PCEP entity."; "The local domain for the PCEP entity.";
} }
} }
} }
container capability{ container capability{
description description
"The PCEP entity capability"; "The PCEP entity capability";
uses capability{ uses capability{
description description
"The PCEP entity supported "The PCEP entity supported
capabilities."; capabilities.";
} }
} }
}//info }//info
grouping pce-info{ grouping pce-info{
description description
"This grouping specifies all PCE information "This grouping specifies all PCE information
which maybe relevant to the PCE selection. which maybe relevant to the PCE selection.
This information corresponds to PCE auto-discovery This information corresponds to PCE auto-discovery
information."; information.";
container scope{ container scope{
description description
"The path computation scope"; "The path computation scope";
uses pce-scope; uses pce-scope;
} }
skipping to change at page 42, line 31 skipping to change at page 45, line 44
description description
"The neighbour domain."; "The neighbour domain.";
uses domain{ uses domain{
description description
"The PCE neighbour domain."; "The PCE neighbour domain.";
} }
} }
} }
}//pce-info }//pce-info
grouping pcep-stats{ grouping pcep-stats{
description description
"This grouping defines statistics for PCEP. It is used "This grouping defines statistics for PCEP. It is used
for both peer and current session."; for both peer and current session.";
leaf avg-rsp-time{ leaf avg-rsp-time{
type uint32; type uint32;
units "milliseconds"; units "milliseconds";
must "(/pcep-state/entity/peers/peer/role != 'pcc'" + must "(/pcep-state/entity/peers/peer/role != 'pcc'" +
" or " + " or " +
"(/pcep-state/entity/peers/peer/role = 'pcc'" + "(/pcep-state/entity/peers/peer/role = 'pcc'" +
" and avg-rsp-time = 0))" { " and (. = 0)))" {
error-message error-message
"Invalid average response time"; "Invalid average response time";
description description
"If role is pcc then this leaf is meaningless "If role is pcc then this leaf is meaningless
and is set to zero."; and is set to zero.";
} }
description description
"The average response time. "The average response time.
If an average response time has not been If an average response time has not been
calculated then this leaf has the value zero."; calculated then this leaf has the value zero.";
skipping to change at page 43, line 4 skipping to change at page 46, line 17
error-message error-message
"Invalid average response time"; "Invalid average response time";
description description
"If role is pcc then this leaf is meaningless "If role is pcc then this leaf is meaningless
and is set to zero."; and is set to zero.";
} }
description description
"The average response time. "The average response time.
If an average response time has not been If an average response time has not been
calculated then this leaf has the value zero."; calculated then this leaf has the value zero.";
} }
leaf lwm-rsp-time{ leaf lwm-rsp-time{
type uint32; type uint32;
units "milliseconds"; units "milliseconds";
must "(/pcep-state/entity/peers/peer/role != 'pcc'" + must "(/pcep-state/entity/peers/peer/role != 'pcc'" +
" or " + " or " +
"(/pcep-state/entity/peers/peer/role = 'pcc'" + "(/pcep-state/entity/peers/peer/role = 'pcc'" +
" and lwm-rsp-time = 0))" { " and (. = 0)))" {
error-message error-message
"Invalid smallest (low-water mark) "Invalid smallest (low-water mark)
response time"; response time";
description description
"If role is pcc then this leaf is meaningless "If role is pcc then this leaf is meaningless
and is set to zero."; and is set to zero.";
} }
description description
"The smallest (low-water mark) response time seen. "The smallest (low-water mark) response time seen.
If no responses have been received then this If no responses have been received then this
leaf has the value zero."; leaf has the value zero.";
} }
leaf hwm-rsp-time{ leaf hwm-rsp-time{
type uint32; type uint32;
units "milliseconds"; units "milliseconds";
must "(/pcep-state/entity/peers/peer/role != 'pcc'" + must "(/pcep-state/entity/peers/peer/role != 'pcc'" +
" or " + " or " +
"(/pcep-state/entity/peers/peer/role = 'pcc'" + "(/pcep-state/entity/peers/peer/role = 'pcc'" +
" and hwm-rsp-time = 0))" { " and (. = 0)))" {
error-message error-message
"Invalid greatest (high-water mark) "Invalid greatest (high-water mark)
response time seen"; response time seen";
description description
"If role is pcc then this field is "If role is pcc then this field is
meaningless and is set to zero."; meaningless and is set to zero.";
} }
description description
"The greatest (high-water mark) response time seen. "The greatest (high-water mark) response time seen.
If no responses have been received then this object If no responses have been received then this object
has the value zero."; has the value zero.";
} }
leaf num-pcreq-sent{ leaf num-pcreq-sent{
type yang:counter32; type yang:counter32;
description description
skipping to change at page 46, line 6 skipping to change at page 49, line 18
Such responses indicate that a path was Such responses indicate that a path was
successfully computed by the peer."; successfully computed by the peer.";
} }
leaf num-req-sent-nopath-rcvd{ leaf num-req-sent-nopath-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of requests that have been sent for "The number of requests that have been sent for
which a response with a NO-PATH object was which a response with a NO-PATH object was
received. Such responses indicate that the peer received. Such responses indicate that the peer
could not find a path to satisfy the could not find a path to satisfy the
request."; request.";
} }
leaf num-req-sent-cancel-rcvd{ leaf num-req-sent-cancel-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of requests that were cancelled with "The number of requests that were cancelled with
a PCNtf message. a PCNtf message.
This might be different than num-pcntf-rcvd because This might be different than num-pcntf-rcvd because
not all PCNtf messages are used to cancel requests, not all PCNtf messages are used to cancel requests,
skipping to change at page 48, line 4 skipping to change at page 51, line 16
not all PCNtf messages are used to cancel requests, not all PCNtf messages are used to cancel requests,
and a single PCNtf message can cancel multiple and a single PCNtf message can cancel multiple
requests."; requests.";
} }
leaf num-req-rcvd-error-sent{ leaf num-req-rcvd-error-sent{
type yang:counter32; type yang:counter32;
description description
"The number of requests received that were cancelled "The number of requests received that were cancelled
by the local PCEP entity sending a PCErr message. by the local PCEP entity sending a PCErr message.
This might be different than num-pcerr-sent because This might be different than num-pcerr-sent because
not all PCErr messages are used to cancel requests, not all PCErr messages are used to cancel requests,
and a single PCErr message can cancel multiple and a single PCErr message can cancel multiple
requests."; requests.";
} }
leaf num-req-rcvd-cancel-rcvd{ leaf num-req-rcvd-cancel-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of requests that were received from the "The number of requests that were received from the
peer and explicitly cancelled by the peer sending peer and explicitly cancelled by the peer sending
a PCNtf."; a PCNtf.";
} }
leaf num-rep-rcvd-unknown{ leaf num-rep-rcvd-unknown{
type yang:counter32; type yang:counter32;
description description
"The number of responses to unknown requests "The number of responses to unknown requests
received. A response to an unknown request is a received. A response to an unknown request is a
response whose RP object does not contain the response whose RP object does not contain the
request ID of any request that is currently request ID of any request that is currently
outstanding on the session."; outstanding on the session.";
} }
leaf num-req-rcvd-unknown{ leaf num-req-rcvd-unknown{
type yang:counter32; type yang:counter32;
description description
"The number of unknown requests that have been "The number of unknown requests that have been
received. An unknown request is a request received. An unknown request is a request
whose RP object contains a request ID of whose RP object contains a request ID of
zero."; zero.";
} }
container svec{ container svec{
if-feature svec; if-feature svec;
skipping to change at page 50, line 24 skipping to change at page 53, line 36
type yang:counter32; type yang:counter32;
description description
"The number of LSP Reports received. A LSP report "The number of LSP Reports received. A LSP report
corresponds 1:1 with an LSP object in a PCRpt corresponds 1:1 with an LSP object in a PCRpt
message. message.
This might be greater than num-pcrpt-rcvd because This might be greater than num-pcrpt-rcvd because
multiple reports can be batched into a single multiple reports can be batched into a single
PCRpt message."; PCRpt message.";
} }
leaf num-rpt-rcvd-error-sent{ leaf num-rpt-rcvd-error-sent{
type yang:counter32; type yang:counter32;
description description
"The number of reports of LSPs received that were "The number of reports of LSPs received that were
responded by the local PCEP entity by sending a responded by the local PCEP entity by sending a
PCErr message."; PCErr message.";
} }
leaf num-upd-sent{ leaf num-upd-sent{
type yang:counter32; type yang:counter32;
description description
skipping to change at page 51, line 4 skipping to change at page 54, line 17
leaf num-upd-rcvd{ leaf num-upd-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of LSP Updates received. A LSP update "The number of LSP Updates received. A LSP update
corresponds 1:1 with an LSP object in a PCUpd corresponds 1:1 with an LSP object in a PCUpd
message. message.
This might be greater than num-pcupd-rcvd because This might be greater than num-pcupd-rcvd because
multiple updates can be batched into a single multiple updates can be batched into a single
PCUpd message."; PCUpd message.";
} }
leaf num-upd-rcvd-unknown{
leaf num-upd-rcvd-unknown{
type yang:counter32; type yang:counter32;
description description
"The number of updates to unknown LSPs "The number of updates to unknown LSPs
received. An update to an unknown LSP is a received. An update to an unknown LSP is a
update whose LSP object does not contain the update whose LSP object does not contain the
PLSP-ID of any LSP that is currently PLSP-ID of any LSP that is currently
present."; present.";
} }
leaf num-upd-rcvd-undelegated{ leaf num-upd-rcvd-undelegated{
type yang:counter32; type yang:counter32;
description description
"The number of updates to not delegated LSPs "The number of updates to not delegated LSPs
received. An update to an undelegated LSP is a received. An update to an undelegated LSP is a
update whose LSP object does not contain the update whose LSP object does not contain the
PLSP-ID of any LSP that is currently PLSP-ID of any LSP that is currently
delegated to current PCEP session."; delegated to current PCEP session.";
} }
leaf num-upd-rcvd-error-sent{ leaf num-upd-rcvd-error-sent{
type yang:counter32; type yang:counter32;
description description
"The number of updates to LSPs received that were "The number of updates to LSPs received that were
responded by the local PCEP entity by sending a responded by the local PCEP entity by sending a
PCErr message."; PCErr message.";
} }
container initiation { container initiation {
if-feature pce-initiated; if-feature pce-initiated;
description description
"PCE-Initiated related statistics"; "PCE-Initiated related statistics";
skipping to change at page 52, line 21 skipping to change at page 55, line 35
type yang:counter32; type yang:counter32;
description description
"The number of LSP Initiation received from "The number of LSP Initiation received from
PCE. A LSP initiation corresponds 1:1 with PCE. A LSP initiation corresponds 1:1 with
an LSP object in a PCInitiate message. This an LSP object in a PCInitiate message. This
might be greater than num-pcinitiate-rcvd might be greater than num-pcinitiate-rcvd
because multiple initiations can be batched because multiple initiations can be batched
into a single PCInitiate message."; into a single PCInitiate message.";
} }
leaf num-initiate-rcvd-error-sent{ leaf num-initiate-rcvd-error-sent{
type yang:counter32; type yang:counter32;
description description
"The number of initiations of LSPs received "The number of initiations of LSPs received
that were responded by the local PCEP entity that were responded by the local PCEP entity
by sending a PCErr message."; by sending a PCErr message.";
} }
} }
} }
container path-key {
if-feature path-key;
description
"If Path-Key is supported";
leaf num-unknown-path-key{
type yang:counter32;
description
"The number of attempts to expand an unknown
path-key.";
}
leaf num-exp-path-key{
type yang:counter32;
description
"The number of attempts to expand an expired
path-key.";
}
leaf num-dup-path-key{
type yang:counter32;
description
"The number of duplicate attempts to expand same
path-key.";
}
leaf num-path-key-no-attempt{
type yang:counter32;
description
"The number of expired path-keys with no attempt to
expand it.";
}
}
}//pcep-stats }//pcep-stats
grouping lsp-state{ grouping lsp-state{
description description
"This grouping defines the attributes for LSP in LSP-DB. "This grouping defines the attributes for LSP in LSP-DB.
These are the attributes specifically from the PCEP These are the attributes specifically from the PCEP
perspective"; perspective";
leaf plsp-id{ leaf plsp-id{
type uint32{ type uint32{
range "1..1048575"; range "1..1048575";
skipping to change at page 54, line 42 skipping to change at page 58, line 36
"The delegation related parameters"; "The delegation related parameters";
leaf enabled{ leaf enabled{
type boolean; type boolean;
description description
"LSP is delegated or not"; "LSP is delegated or not";
} }
leaf pce{ leaf pce{
type leafref { type leafref {
path "/pcep-state/entity/peers/peer/addr"; path "/pcep-state/entity/peers/peer/addr";
} }
must "((../enabled == true)" + must "(../enabled = true())"
" and " +
"((../../role == 'pcc')" +
" or " +
"(../../role == 'pcc-and-pce')))"
{ {
error-message error-message
"The PCEP entity must be PCC "The LSP must be delegated";
and the LSP be delegated";
description description
"When PCEP entity is PCC for "When LSP is a delegated LSP";
delegated LSP";
} }
description description
"The reference to the PCE peer to "The reference to the PCE peer to
which LSP is delegated"; which LSP is delegated";
} }
leaf srp-id{ leaf srp-id{
type uint32; type uint32;
description description
"The last SRP-ID-number associated with this "The last SRP-ID-number associated with this
LSP."; LSP.";
skipping to change at page 55, line 31 skipping to change at page 59, line 19
"The PCE initiation related parameters"; "The PCE initiation related parameters";
leaf enabled{ leaf enabled{
type boolean; type boolean;
description description
"LSP is PCE-initiated or not"; "LSP is PCE-initiated or not";
} }
leaf pce{ leaf pce{
type leafref { type leafref {
path "/pcep-state/entity/peers/peer/addr"; path "/pcep-state/entity/peers/peer/addr";
} }
must "(../enabled == true)" must "(../enabled = true())"
{ {
error-message error-message
"The LSP must be PCE-Initiated"; "The LSP must be PCE-Initiated";
description description
"When the LSP must be PCE-Initiated"; "When the LSP must be PCE-Initiated";
} }
description description
"The reference to the PCE "The reference to the PCE
that initiated this LSP"; that initiated this LSP";
} }
skipping to change at page 56, line 4 skipping to change at page 59, line 40
} }
leaf symbolic-path-name{ leaf symbolic-path-name{
type string; type string;
description description
"The symbolic path name associated with the LSP."; "The symbolic path name associated with the LSP.";
} }
leaf last-error{ leaf last-error{
type lsp-error; type lsp-error;
description description
"The last error for the LSP."; "The last error for the LSP.";
} }
leaf pst{ leaf pst{
type pst; type pst;
default "rsvp-te"; default "rsvp-te";
description description
"The Path Setup Type"; "The Path Setup Type";
} }
}//lsp-state }//lsp-state
grouping notification-instance-hdr { grouping notification-instance-hdr {
description description
"This group describes common instance specific data "This group describes common instance specific data
for notifications."; for notifications.";
leaf peer-addr { leaf peer-addr {
type leafref { type leafref {
skipping to change at page 57, line 14 skipping to change at page 60, line 49
description description
"When a PCEP session is terminated, a PCC "When a PCEP session is terminated, a PCC
waits for this time period before flushing waits for this time period before flushing
LSP state associated with that PCEP session LSP state associated with that PCEP session
and reverting to operator-defined default and reverting to operator-defined default
parameters or behaviours."; parameters or behaviours.";
} }
leaf redelegation-timeout{ leaf redelegation-timeout{
type uint32; type uint32;
units "seconds"; units "seconds";
must "((../role == 'pcc')" + must "((/pcep-state/entity/role = 'pcc')" +
" or " + " or " +
"(../role == 'pcc-and-pce'))" "(/pcep-state/entity/role = 'pcc-and-pce'))" +
" and " +
"(/pcep/entity/capability/stateful/active"
+ "= true())"
{ {
error-message "The PCEP entity must be PCC"; error-message "The PCEP entity must be PCC";
description description
"When PCEP entity is PCC"; "When PCEP entity is PCC";
} }
description description
"When a PCEP session is terminated, a PCC "When a PCEP session is terminated, a PCC
waits for this time period before revoking waits for this time period before revoking
LSP delegation to a PCE and attempting to LSP delegation to a PCE and attempting to
redelegate LSPs associated with the redelegate LSPs associated with the
terminated PCEP session to an alternate terminated PCEP session to an alternate
PCE."; PCE.";
} }
leaf rpt-non-pcep-lsp{ leaf rpt-non-pcep-lsp{
type boolean; type boolean;
must "((../role == 'pcc')" + must "((/pcep-state/entity/role = 'pcc')" +
" or " + " or " +
"(../role == 'pcc-and-pce'))" "(/pcep-state/entity/role = 'pcc-and-pce'))"
{ {
error-message "The PCEP entity must be PCC"; error-message "The PCEP entity must be PCC";
description description
"When PCEP entity is PCC"; "When PCEP entity is PCC";
} }
description description
"If set, a PCC reports LSPs that are not "If set, a PCC reports LSPs that are not
controlled by any PCE (for example, LSPs controlled by any PCE (for example, LSPs
that are statically configured at the that are statically configured at the
PCC). "; PCC). ";
skipping to change at page 58, line 36 skipping to change at page 62, line 26
case auth-tls { case auth-tls {
if-feature tls; if-feature tls;
container tls { container tls {
description description
"TLS related information - TBD"; "TLS related information - TBD";
} }
} }
} }
} }
grouping path-key {
description "Path-key related information";
leaf enabled{
type boolean;
description
"Enabled or Disabled";
}
leaf discard-timer {
type uint32;
units "minutes";
default 10;
description
"A timer to discard unwanted path-keys";
}
leaf reuse-time {
type uint32;
units "minutes";
default 30;
description
"A time after which the path-keys could be reused";
}
leaf pce-id {
type inet:ip-address;
description
"PCE Address to be used in each Path-Key Subobject
(PKS)";
}
}
grouping path-key-state {
description "Table to allow inspection of path-keys";
list path-keys{
key "path-key";
description
"The list of path-keys generated by the PCE";
leaf path-key {
type uint16;
description
"The identifier, or token used to represent
the Confidential Path Segment (CPS) within
the context of the PCE";
}
container cps {
description
"The Confidential Path Segment (CPS)";
list explicit-route-objects {
key "index";
description
"List of explicit route objects";
leaf index {
type uint8 {
range "0..255";
}
description
"Index of this explicit route object";
}
leaf explicit-route-usage {
type identityref {
base te-types:route-usage-type;
}
description
"An explicit-route hop action.";
}
uses te-types:explicit-route-subobject;
}
}
leaf pcc-original {
type leafref {
path "/pcep-state/entity/peers/peer/addr";
}
description
"Reference to PCC peer address of
the original request";
}
leaf req-id {
type uint32;
description
"The request ID of the original PCReq.";
}
leaf retrieved {
type boolean;
description
"If path-key has been retrieved yet";
}
leaf pcc-retrieved {
type leafref {
path "/pcep-state/entity/peers/peer/addr";
}
must "(../retrieved = true())"
{
error-message
"The Path-key should be retreived";
description
"When Path-Key has been retreived";
}
description
"Reference to PCC peer address which
retreived the path-key";
}
leaf creation-time {
type yang:timestamp;
description
"The timestamp value at the time this Path-Key was
created.";
}
leaf discard-time {
type uint32;
units "minutes";
description
"A time after which this path-keys will be
discarded";
}
leaf reuse-time {
type uint32;
units "minutes";
description
"A time after which this path-keys could be
reused";
}
}
}
grouping of-list {
description "List of OF";
list objective-function{
key "of";
description
"The list of authorized OF";
leaf of {
type objective-function;
description
"The OF authorized";
}
}
}
grouping association { grouping association {
description description
"Generic Association parameters"; "Generic Association parameters";
leaf type { leaf type {
type "assoc-type"; type "assoc-type";
description description
"The PCEP association type"; "The PCEP association type";
} }
leaf id { leaf id {
type uint16; type uint16;
skipping to change at page 61, line 25 skipping to change at page 68, line 10
a PCC and a PCE."; a PCC and a PCE.";
} }
leaf description { leaf description {
type string; type string;
description description
"Description of the PCEP entity configured "Description of the PCEP entity configured
by the user"; by the user";
} }
leaf speaker-entity-id{
if-feature stateful-sync-opt;
type string;
description
"The Speaker Entity Identifier";
}
uses info { uses info {
description description
"Local PCEP entity information"; "Local PCEP entity information";
} }
container pce-info { container pce-info {
must "((../role == 'pce')" + must "((/pcep-state/entity/role = 'pce')" +
" or " + " or " +
"(../role == 'pcc-and-pce'))" "(/pcep-state/entity/role = 'pcc-and-pce'))"
{ {
error-message "The PCEP entity must be PCE"; error-message "The PCEP entity must be PCE";
description description
"When PCEP entity is PCE"; "When PCEP entity is PCE";
} }
uses pce-info { uses pce-info {
description description
"Local PCE information"; "Local PCE information";
} }
uses authentication { container path-key {
description if-feature path-key;
"Local PCE authentication information"; uses path-key {
} description
"Path-Key Configuration";
}
description
"Path-Key Configuration";
}
description description
"The Local PCE Entity PCE information"; "The Local PCE Entity PCE information";
}
uses authentication {
description
"Local PCEP entity authentication information";
} }
uses pcep-entity-info { uses pcep-entity-info {
description description
"The configuration related to the PCEP "The configuration related to the PCEP
entity."; entity.";
} }
leaf pcep-notification-max-rate { leaf pcep-notification-max-rate {
type uint32; type uint32;
skipping to change at page 62, line 29 skipping to change at page 69, line 29
more rapidly, the implementation may simply fail more rapidly, the implementation may simply fail
to emit these notifications during that period, to emit these notifications during that period,
or may queue them until an appropriate time. A or may queue them until an appropriate time. A
value of 0 means no notifications are emitted value of 0 means no notifications are emitted
and all should be discarded (that is, not and all should be discarded (that is, not
queued)."; queued).";
} }
container stateful-parameter{ container stateful-parameter{
if-feature stateful; if-feature stateful;
must "(../info/capability/stateful/active == true)" must "(/pcep/entity/capability/stateful/enabled" +
" = true())"
{ {
error-message error-message
"The Active Stateful PCE must be enabled"; "The Stateful PCE must be enabled";
description description
"When PCEP entity is active stateful "When PCEP entity is stateful
enabled"; enabled";
} }
uses stateful-pce-parameter; uses stateful-pce-parameter;
description description
"The configured stateful parameters"; "The configured stateful parameters";
} }
container of-list{
if-feature objective-function;
must "((/pcep/entity/role = 'pce')" +
" or " +
"(/pcep/entity/role = 'pcc-and-pce'))"
{
error-message
"The PCEP entity must be PCE";
description
"The authorized OF-List at PCE";
}
uses of-list;
description
"The authorized OF-List at PCE for all peers";
}
container peers{ container peers{
must "((../role == 'pcc')" + must "((/pcep/entity/role = 'pcc')" +
" or " + " or " +
"(../role == 'pcc-and-pce'))" "(/pcep/entity/role = 'pcc-and-pce'))"
{ {
error-message error-message
"The PCEP entity must be PCC"; "The PCEP entity must be PCC";
description description
"When PCEP entity is PCC, as remote "When PCEP entity is PCC, as remote
PCE peers are configured."; PCE peers are configured.";
} }
description description
"The list of configured peers for the "The list of configured peers for the
entity (remote PCE)"; entity (remote PCE)";
list peer{ list peer{
key "addr"; key "addr";
skipping to change at page 63, line 46 skipping to change at page 71, line 17
uses pce-info { uses pce-info {
description description
"PCE Peer information"; "PCE Peer information";
} }
leaf delegation-pref{ leaf delegation-pref{
if-feature stateful; if-feature stateful;
type uint8{ type uint8{
range "0..7"; range "0..7";
} }
must "(../../info/capability/stateful/active" must "(/pcep/entity/capability/stateful/active"
+ "== true)" + "= true())"
{ {
error-message error-message
"The Active Stateful PCE must be "The Active Stateful PCE must be
enabled"; enabled";
description description
"When PCEP entity is active stateful "When PCEP entity is active stateful
enabled"; enabled";
} }
description description
"The PCE peer delegation preference."; "The PCE peer delegation preference.";
} }
uses authentication { uses authentication {
description description
"PCE Peer authentication"; "PCE Peer authentication";
} }
container of-list{
if-feature objective-function;
must "((/pcep/entity/role = 'pce')" +
" or " +
"(/pcep/entity/role = 'pcc-and-pce'))"
{
error-message
"The PCEP entity must be PCE";
description
"The authorized OF-List at PCE";
}
uses of-list;
description
"The authorized OF-List a specific peer";
}
}//peer }//peer
}//peers }//peers
}//entity }//entity
}//pcep }//pcep
/* /*
* Operational data nodes * Operational data nodes
*/ */
container pcep-state{ container pcep-state{
config false; config false;
description description
skipping to change at page 66, line 4 skipping to change at page 73, line 40
type pcep-role; type pcep-role;
description description
"The role that this entity can play. "The role that this entity can play.
Takes one of the following values. Takes one of the following values.
- unknown(0): this PCEP entity role is - unknown(0): this PCEP entity role is
not known. not known.
- pcc(1): this PCEP entity is a PCC. - pcc(1): this PCEP entity is a PCC.
- pce(2): this PCEP entity is a PCE. - pce(2): this PCEP entity is a PCE.
- pcc-and-pce(3): this PCEP entity is - pcc-and-pce(3): this PCEP entity is
both a PCC and a PCE."; both a PCC and a PCE.";
}
leaf description {
type string;
description
"Description of the PCEP entity configured
by the user";
}
leaf speaker-entity-id{
if-feature stateful-sync-opt;
type string;
description
"The Speaker Entity Identifier";
} }
uses info { uses info {
description description
"Local PCEP entity information"; "Local PCEP entity information";
} }
container pce-info { container pce-info {
when "((../role == 'pce')" + when "((/pcep-state/entity/role = 'pce')" +
" or " + " or " +
"(../role == 'pcc-and-pce'))" "(/pcep-state/entity/role = 'pcc-and-pce'))"
{ {
description description
"When PCEP entity is PCE"; "When PCEP entity is PCE";
} }
uses pce-info { uses pce-info {
description description
"Local PCE information"; "Local PCE information";
} }
uses authentication {
description container path-key {
"Local PCE authentication information"; if-feature path-key;
} uses path-key {
description
"Path-Key Configuration";
}
description
"Path-Key Configuration";
}
description description
"The Local PCE Entity PCE information"; "The Local PCE Entity PCE information";
} }
uses authentication {
description
"Local PCEP Entity authentication information";
}
uses pcep-entity-info{ uses pcep-entity-info{
description description
"The operational information related to the "The operational information related to the
PCEP entity."; PCEP entity.";
} }
container stateful-parameter{ container stateful-parameter{
if-feature stateful; if-feature stateful;
must "(../info/capability/stateful/active == true)" must "(/pcep/entity/capability/stateful/enabled" +
" = true())"
{ {
error-message error-message
"The Active Stateful PCE must be enabled"; "The Stateful PCE must be enabled";
description description
"When PCEP entity is active stateful "When PCEP entity is stateful
enabled"; enabled";
} }
uses stateful-pce-parameter; uses stateful-pce-parameter;
description description
"The operational stateful parameters"; "The operational stateful parameters";
} }
container lsp-db{ container lsp-db{
if-feature stateful; if-feature stateful;
description description
"The LSP-DB"; "The LSP-DB";
leaf db-ver{
if-feature stateful-sync-opt;
type uint64;
must "((/pcep/entity/role = 'pcc')" +
" or " +
"(/pcep/entity/role = 'pcc-and-pce'))"
{
error-message
"The PCEP entity must be PCC";
description
"When PCEP entity is PCC, as remote
PCE peers are configured.";
}
description
"The LSP State Database Version Number";
}
list association-list { list association-list {
key "id source global-source extended-id"; key "id source global-source extended-id";
description description
"List of all PCEP associations"; "List of all PCEP associations";
uses association { uses association {
description description
"The Association attributes"; "The Association attributes";
} }
list lsp { list lsp {
key "plsp-id pcc-id"; key "plsp-id pcc-id";
skipping to change at page 68, line 12 skipping to change at page 76, line 47
"List of all PCEP associations"; "List of all PCEP associations";
uses association-ref { uses association-ref {
description description
"Reference to the Association "Reference to the Association
attributes"; attributes";
} }
} }
} }
} }
container path-keys {
if-feature path-key;
must "((/pcep-state/entity/role = 'pce')" +
" or " +
"(/pcep-state/entity/role = 'pcc-and-pce'))"
{
error-message
"The PCEP entity must be PCE";
description
"When PCEP entity is PCE";
}
uses path-key-state;
description
"The path-keys generated by the PCE";
}
container of-list{
if-feature objective-function;
must "((/pcep/entity/role = 'pce')" +
" or " +
"(/pcep/entity/role = 'pcc-and-pce'))"
{
error-message
"The PCEP entity must be PCE";
description
"The authorized OF-List at PCE";
}
uses of-list;
description
"The authorized OF-List at PCE for all peers";
}
container peers{ container peers{
description description
"The list of peers for the entity"; "The list of peers for the entity";
list peer{ list peer{
key "addr"; key "addr";
description description
"The peer for the entity."; "The peer for the entity.";
skipping to change at page 68, line 48 skipping to change at page 78, line 19
- pcc-and-pce(3): this PCEP peer - pcc-and-pce(3): this PCEP peer
is both a PCC and a PCE."; is both a PCC and a PCE.";
} }
uses info { uses info {
description description
"PCEP peer information"; "PCEP peer information";
} }
container pce-info { container pce-info {
when "((../role == 'pce')" + when "((/pcep-state/entity/role = 'pcc')" +
" or " + " or " +
"(../role == 'pcc-and-pce'))" "(/pcep-state/entity/role " +
"= 'pcc-and-pce'))"
{ {
description description
"When PCEP entity is PCE"; "When PCEP entity is PCE";
} }
uses pce-info { uses pce-info {
description description
"PCE Peer information"; "PCE Peer information";
} }
description description
"The PCE Peer information"; "The PCE Peer information";
} }
leaf delegation-pref{ leaf delegation-pref{
if-feature stateful; if-feature stateful;
type uint8{ type uint8{
range "0..7"; range "0..7";
} }
must "((../../role == 'pcc')" + must "((/pcep-state/entity/role = 'pcc')" +
" or " + " or " +
"(../../role == 'pcc-and-pce'))" "(/pcep-state/entity/role" +
" = 'pcc-and-pce'))"
{ {
error-message error-message
"The PCEP entity must be PCC"; "The PCEP entity must be PCC";
description description
"When PCEP entity is PCC"; "When PCEP entity is PCC";
} }
must "(../../info/capability/stateful/active" must "(/pcep/entity/capability/stateful/active"
+ " == true)" + "= true())"
{ {
error-message error-message
"The Active Stateful PCE must be "The Active Stateful PCE must be
enabled"; enabled";
description description
"When PCEP entity is active stateful "When PCEP entity is active stateful
enabled"; enabled";
} }
description description
"The PCE peer delegation preference."; "The PCE peer delegation preference.";
} }
uses authentication { uses authentication {
description description
"PCE Peer authentication"; "PCE Peer authentication";
} }
container of-list{
if-feature objective-function;
must "((/pcep/entity/role = 'pce')" +
" or " +
"(/pcep/entity/role = 'pcc-and-pce'))"
{
error-message
"The PCEP entity must be PCE";
description
"The authorized OF-List at PCE";
}
uses of-list;
description
"The authorized OF-List of a specific
peer";
}
leaf discontinuity-time { leaf discontinuity-time {
type yang:timestamp; type yang:timestamp;
description description
"The timestamp of the time when the "The timestamp of the time when the
information and statistics were information and statistics were
last reset."; last reset.";
} }
leaf initiate-session { leaf initiate-session {
type boolean; type boolean;
skipping to change at page 70, line 51 skipping to change at page 80, line 40
that have been attempted but failed that have been attempted but failed
before being fully established. This before being fully established. This
counter is incremented each time a counter is incremented each time a
session retry to this peer fails."; session retry to this peer fails.";
} }
leaf session-up-time{ leaf session-up-time{
type yang:timestamp; type yang:timestamp;
must "(../num-sess-setup-ok != 0 or " + must "(../num-sess-setup-ok != 0 or " +
"(../num-sess-setup-ok = 0 and " + "(../num-sess-setup-ok = 0 and " +
"session-up-time = 0))" { "(. = 0)))" {
error-message error-message
"Invalid Session Up timestamp"; "Invalid Session Up timestamp";
description description
"If num-sess-setup-ok is zero, "If num-sess-setup-ok is zero,
then this leaf contains zero."; then this leaf contains zero.";
} }
description description
"The timestamp value of the last time a "The timestamp value of the last time a
session with this peer was successfully session with this peer was successfully
established."; established.";
skipping to change at page 71, line 15 skipping to change at page 81, line 4
"Invalid Session Up timestamp"; "Invalid Session Up timestamp";
description description
"If num-sess-setup-ok is zero, "If num-sess-setup-ok is zero,
then this leaf contains zero."; then this leaf contains zero.";
} }
description description
"The timestamp value of the last time a "The timestamp value of the last time a
session with this peer was successfully session with this peer was successfully
established."; established.";
} }
leaf session-fail-time{ leaf session-fail-time{
type yang:timestamp; type yang:timestamp;
must "(../num-sess-setup-fail != 0 or " + must "(../num-sess-setup-fail != 0 or " +
"(../num-sess-setup-fail = 0 and " + "(../num-sess-setup-fail = 0 and " +
"session-fail-time = 0))" { "(. = 0)))" {
error-message error-message
"Invalid Session Fail timestamp"; "Invalid Session Fail timestamp";
description description
"If num-sess-setup-fail is zero, "If num-sess-setup-fail is zero,
then this leaf contains zero."; then this leaf contains zero.";
} }
description description
"The timestamp value of the last time a "The timestamp value of the last time a
session with this peer failed to be session with this peer failed to be
established."; established.";
} }
leaf session-fail-up-time{ leaf session-fail-up-time{
type yang:timestamp; type yang:timestamp;
must "(../num-sess-setup-ok != 0 or " + must "(../num-sess-setup-ok != 0 or " +
"(../num-sess-setup-ok = 0 and " + "(../num-sess-setup-ok = 0 and " +
"session-fail-up-time = 0))" { "(. = 0)))" {
error-message error-message
"Invalid Session Fail from "Invalid Session Fail from
Up timestamp"; Up timestamp";
description description
"If num-sess-setup-ok is zero, "If num-sess-setup-ok is zero,
then this leaf contains zero."; then this leaf contains zero.";
} }
description description
"The timestamp value of the last time a "The timestamp value of the last time a
session with this peer failed from session with this peer failed from
skipping to change at page 72, line 27 skipping to change at page 82, line 16
leaf num-req-sent-closed{ leaf num-req-sent-closed{
type yang:counter32; type yang:counter32;
description description
"The number of requests that were "The number of requests that were
sent to the peer and implicitly sent to the peer and implicitly
cancelled when the session they were cancelled when the session they were
sent over was closed."; sent over was closed.";
} }
leaf num-req-rcvd-closed{ leaf num-req-rcvd-closed{
type yang:counter32; type yang:counter32;
description description
"The number of requests that were "The number of requests that were
received from the peer and received from the peer and
implicitly cancelled when the implicitly cancelled when the
session they were received over session they were received over
was closed."; was closed.";
} }
}//pcep-stats }//pcep-stats
skipping to change at page 75, line 9 skipping to change at page 84, line 44
type uint32 { type uint32 {
range "0..255"; range "0..255";
} }
must "((../state != 'tcp-pending'" + must "((../state != 'tcp-pending'" +
"and " + "and " +
"../state != 'open-wait' )" + "../state != 'open-wait' )" +
"or " + "or " +
"((../state = 'tcp-pending'" + "((../state = 'tcp-pending'" +
" or " + " or " +
"../state = 'open-wait' )" + "../state = 'open-wait' )" +
"and remote-id = 0))" { "and (. = 0)))" {
error-message error-message
"Invalid remote-id"; "Invalid remote-id";
description description
"If state is tcp-pending "If state is tcp-pending
or open-wait then this or open-wait then this
leaf is not used and leaf is not used and
MUST be set to zero."; MUST be set to zero.";
} }
description description
"The value of the PCEP session "The value of the PCEP session
ID used by the peer in its ID used by the peer in its
Open message for this Open message for this
session."; session.";
} }
leaf keepalive-timer { leaf keepalive-timer {
type uint32 { type uint32 {
skipping to change at page 75, line 33 skipping to change at page 85, line 21
} }
leaf keepalive-timer { leaf keepalive-timer {
type uint32 { type uint32 {
range "0..255"; range "0..255";
} }
units "seconds"; units "seconds";
must "(../state = 'session-up'" + must "(../state = 'session-up'" +
"or " + "or " +
"(../state != 'session-up'" + "(../state != 'session-up'" +
"and keepalive-timer = 0))" { "and (. = 0)))" {
error-message error-message
"Invalid keepalive "Invalid keepalive
timer"; timer";
description description
"This field is used if "This field is used if
and only if state is and only if state is
session-up. Otherwise, session-up. Otherwise,
it is not used and it is not used and
MUST be set to MUST be set to
zero."; zero.";
skipping to change at page 76, line 16 skipping to change at page 85, line 52
leaf peer-keepalive-timer { leaf peer-keepalive-timer {
type uint32 { type uint32 {
range "0..255"; range "0..255";
} }
units "seconds"; units "seconds";
must "(../state = 'session-up'" + must "(../state = 'session-up'" +
"or " + "or " +
"(../state != 'session-up'" + "(../state != 'session-up'" +
"and " + "and " +
"peer-keepalive-timer = 0))" { "(. = 0)))" {
error-message error-message
"Invalid Peer keepalive "Invalid Peer keepalive
timer"; timer";
description description
"This field is used if "This field is used if
and only if state is and only if state is
session-up. Otherwise, session-up. Otherwise,
it is not used and MUST it is not used and MUST
be set to zero."; be set to zero.";
} }
skipping to change at page 77, line 11 skipping to change at page 86, line 46
} }
units "seconds"; units "seconds";
must "((../state != 'tcp-pending'" + must "((../state != 'tcp-pending'" +
"and " + "and " +
"../state != 'open-wait' )" + "../state != 'open-wait' )" +
"or " + "or " +
"((../state = 'tcp-pending'" + "((../state = 'tcp-pending'" +
" or " + " or " +
"../state = 'open-wait' )" + "../state = 'open-wait' )" +
"and " + "and " +
"peer-dead-timer = 0))" { "(. = 0)))" {
error-message error-message
"Invalid Peer Dead "Invalid Peer Dead
timer"; timer";
description description
"If state is tcp- "If state is tcp-
pending or open-wait pending or open-wait
then this leaf is not then this leaf is not
used and MUST be set to used and MUST be set to
zero."; zero.";
} }
skipping to change at page 77, line 40 skipping to change at page 87, line 27
} }
units "seconds"; units "seconds";
must "((../state != 'tcp-pending'" + must "((../state != 'tcp-pending'" +
"and " + "and " +
"../state != 'open-wait' ) " + "../state != 'open-wait' ) " +
"or " + "or " +
"((../state = 'tcp-pending'" + "((../state = 'tcp-pending'" +
"or " + "or " +
"../state = 'open-wait' )" + "../state = 'open-wait' )" +
"and " + "and " +
"ka-hold-time-rem = 0))" { "(. = 0)))" {
error-message error-message
"Invalid Keepalive hold "Invalid Keepalive hold
time remaining"; time remaining";
description description
"If state is tcp-pending "If state is tcp-pending
or open-wait then this or open-wait then this
field is not used and field is not used and
MUST be set to zero."; MUST be set to zero.";
} }
description description
skipping to change at page 78, line 16 skipping to change at page 88, line 4
leaf overloaded { leaf overloaded {
type boolean; type boolean;
description description
"If the local PCEP entity has "If the local PCEP entity has
informed the peer that it is informed the peer that it is
currently overloaded, then this currently overloaded, then this
is set to true. Otherwise, it is set to true. Otherwise, it
is set to false."; is set to false.";
} }
leaf overload-time { leaf overload-time {
type uint32; type uint32;
units "seconds"; units "seconds";
must "(../overloaded = true or" + must "((../overloaded = true()) or" +
"(../overloaded != true and" + "((../overloaded != true()) and" +
" overload-time = 0))" { " (. = 0)))" {
error-message error-message
"Invalid overload-time"; "Invalid overload-time";
description description
"This field is only used "This field is only used
if overloaded is set to if overloaded is set to
true. Otherwise, it is true. Otherwise, it is
not used and MUST be set not used and MUST be set
to zero."; to zero.";
} }
description description
skipping to change at page 79, line 4 skipping to change at page 88, line 39
"If the peer has informed the "If the peer has informed the
local PCEP entity that it is local PCEP entity that it is
currently overloaded, then this currently overloaded, then this
is set to true. Otherwise, it is set to true. Otherwise, it
is set to false."; is set to false.";
} }
leaf peer-overload-time { leaf peer-overload-time {
type uint32; type uint32;
units "seconds"; units "seconds";
must "(../peer-overloaded = true" + must "((../peer-overloaded = true())" +
" or " + " or " +
"(../peer-overloaded != true" + "((../peer-overloaded != true())" +
" and " + " and " +
"peer-overload-time = 0))" { "(. = 0)))" {
error-message error-message
"Invalid peer overload "Invalid peer overload
time"; time";
description description
"This field is only used "This field is only used
if peer-overloaded is if peer-overloaded is
set to true. Otherwise, set to true. Otherwise,
it is not used and MUST it is not used and MUST
be set to zero."; be set to zero.";
} }
skipping to change at page 79, line 34 skipping to change at page 89, line 21
will stay in overloaded state, will stay in overloaded state,
this leaf is set to zero."; this leaf is set to zero.";
} }
leaf lspdb-sync { leaf lspdb-sync {
if-feature stateful; if-feature stateful;
type sync-state; type sync-state;
description description
"The LSP-DB state synchronization "The LSP-DB state synchronization
status."; status.";
} }
leaf recv-db-ver{
if-feature stateful;
if-feature stateful-sync-opt;
type uint64;
must "((/pcep-state/entity/peers/" +
"peer/role = 'pcc')" +
" or " +
"(/pcep-state/entity/peers/" +
"peer/role = 'pcc-and-pce'))"
{
error-message
"The PCEP peer must be PCC";
description
"The PCEP peer must be PCC";
}
description
"The last received LSP State
Database Version Number";
}
container of-list{
if-feature objective-function;
must "((/pcep/entity/role = 'pcc')" +
" or " +
"(/pcep/entity/role = 'pcc-and-pce'))"
{
error-message
"The PCEP entity must be PCC";
description
"The OF-list received on the
session";
}
uses of-list;
description
"Indicate the list of supported OF
on this session";
}
leaf speaker-entity-id{
if-feature stateful-sync-opt;
type string;
description
"The Speaker Entity Identifier";
}
leaf discontinuity-time { leaf discontinuity-time {
type yang:timestamp; type yang:timestamp;
description description
"The timestamp value of the time "The timestamp value of the time
when the statistics were last when the statistics were last
reset."; reset.";
} }
container pcep-stats { container pcep-stats {
description description
skipping to change at page 81, line 46 skipping to change at page 92, line 32
type boolean; type boolean;
description description
"If the local PCEP entity has informed the peer that "If the local PCEP entity has informed the peer that
it is currently overloaded, then this is set to it is currently overloaded, then this is set to
true. Otherwise, it is set to false."; true. Otherwise, it is set to false.";
} }
leaf overload-time { leaf overload-time {
type uint32; type uint32;
units "seconds"; units "seconds";
must "(../overloaded = true or " +
"(../overloaded != true and " +
"overload-time = 0))" {
error-message
"Invalid overload-time";
description
"This field is only used if overloaded is
set to true. Otherwise, it is not used
and MUST be set to zero.";
}
description description
"The interval of time that is remaining until the "The interval of time that is remaining until the
local PCEP entity will cease to be overloaded on local PCEP entity will cease to be overloaded on
this session."; this session.";
} }
} //notification } //notification
notification pcep-session-local-overload-clear { notification pcep-session-local-overload-clear {
description description
"This notification is sent when the local PCEP entity "This notification is sent when the local PCEP entity
skipping to change at page 82, line 51 skipping to change at page 93, line 28
type boolean; type boolean;
description description
"If the peer has informed the local PCEP entity that "If the peer has informed the local PCEP entity that
it is currently overloaded, then this is set to true. it is currently overloaded, then this is set to true.
Otherwise, it is set to false."; Otherwise, it is set to false.";
} }
leaf peer-overload-time { leaf peer-overload-time {
type uint32; type uint32;
units "seconds"; units "seconds";
must "(../peer-overloaded = true or " +
"(../peer-overloaded != true and " +
"peer-overload-time = 0))" {
error-message
"Invalid peer-overload-time";
description
"This field is only used if
peer-overloaded is set to true.
Otherwise, it is not used and MUST
be set to zero.";
}
description description
"The interval of time that is remaining until the "The interval of time that is remaining until the
peer will cease to be overloaded. If it is not known peer will cease to be overloaded. If it is not known
how long the peer will stay in overloaded state, this how long the peer will stay in overloaded state, this
leaf is set to zero."; leaf is set to zero.";
} }
} //notification } //notification
notification pcep-session-peer-overload-clear { notification pcep-session-peer-overload-clear {
description description
skipping to change at page 86, line 13 skipping to change at page 96, line 19
progress), July 2016. progress), July 2016.
[I-D.ietf-pce-lsp-setup-type] [I-D.ietf-pce-lsp-setup-type]
Sivabalan, S., Medved, J., Minei, I., Crabbe, E., Varga, Sivabalan, S., Medved, J., Minei, I., Crabbe, E., Varga,
R., Tantsura, J., and J. Hardwick, "Conveying path setup R., Tantsura, J., and J. Hardwick, "Conveying path setup
type in PCEP messages", draft-ietf-pce-lsp-setup-type-03 type in PCEP messages", draft-ietf-pce-lsp-setup-type-03
(work in progress), June 2015. (work in progress), June 2015.
[I-D.ietf-pce-segment-routing] [I-D.ietf-pce-segment-routing]
Sivabalan, S., Medved, J., Filsfils, C., Crabbe, E., Sivabalan, S., Medved, J., Filsfils, C., Crabbe, E.,
Lopez, V., Tantsura, J., Henderickx, W., and J. Hardwick, Raszuk, R., Lopez, V., Tantsura, J., Henderickx, W., and
"PCEP Extensions for Segment Routing", draft-ietf-pce- J. Hardwick, "PCEP Extensions for Segment Routing", draft-
segment-routing-07 (work in progress), March 2016. ietf-pce-segment-routing-08 (work in progress), October
2016.
[I-D.ietf-teas-yang-te]
Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H.,
Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data
Model for Traffic Engineering Tunnels and Interfaces",
draft-ietf-teas-yang-te-04 (work in progress), July 2016.
[I-D.ietf-rtgwg-yang-key-chain]
Lindem, A., Qu, Y., Yeung, D., Chen, I., Zhang, Z., and Y.
Yang, "Routing Key Chain YANG Data Model", draft-ietf-
rtgwg-yang-key-chain-09 (work in progress), September
2016.
13.2. Informative References 13.2. Informative References
[RFC4655] Farrel, A., Vasseur, J., and J. Ash, "A Path Computation [RFC4655] Farrel, A., Vasseur, J., and J. Ash, "A Path Computation
Element (PCE)-Based Architecture", RFC 4655, Element (PCE)-Based Architecture", RFC 4655,
DOI 10.17487/RFC4655, August 2006, DOI 10.17487/RFC4655, August 2006,
<http://www.rfc-editor.org/info/rfc4655>. <http://www.rfc-editor.org/info/rfc4655>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
skipping to change at page 86, line 46 skipping to change at page 97, line 18
<http://www.rfc-editor.org/info/rfc6536>. <http://www.rfc-editor.org/info/rfc6536>.
[RFC7420] Koushik, A., Stephan, E., Zhao, Q., King, D., and J. [RFC7420] Koushik, A., Stephan, E., Zhao, Q., King, D., and J.
Hardwick, "Path Computation Element Communication Protocol Hardwick, "Path Computation Element Communication Protocol
(PCEP) Management Information Base (MIB) Module", (PCEP) Management Information Base (MIB) Module",
RFC 7420, DOI 10.17487/RFC7420, December 2014, RFC 7420, DOI 10.17487/RFC7420, December 2014,
<http://www.rfc-editor.org/info/rfc7420>. <http://www.rfc-editor.org/info/rfc7420>.
[I-D.ietf-netmod-routing-cfg] [I-D.ietf-netmod-routing-cfg]
Lhotka, L. and A. Lindem, "A YANG Data Model for Routing Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
Management", draft-ietf-netmod-routing-cfg-23 (work in Management", draft-ietf-netmod-routing-cfg-24 (work in
progress), August 2016. progress), October 2016.
[I-D.ietf-netmod-rfc6087bis] [I-D.ietf-netmod-rfc6087bis]
Bierman, A., "Guidelines for Authors and Reviewers of YANG Bierman, A., "Guidelines for Authors and Reviewers of YANG
Data Model Documents", draft-ietf-netmod-rfc6087bis-08 Data Model Documents", draft-ietf-netmod-rfc6087bis-09
(work in progress), September 2016. (work in progress), October 2016.
[I-D.ietf-teas-yang-te]
Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H.,
Bryskin, I., Chen, X., Jones, R., and B. Wen, "A YANG Data
Model for Traffic Engineering Tunnels and Interfaces",
draft-ietf-teas-yang-te-04 (work in progress), July 2016.
Appendix A. Contributor Addresses Appendix A. Contributor Addresses
Rohit Pobbathi Rohit Pobbathi
Huawei Technologies Huawei Technologies
Divyashree Techno Park, Whitefield Divyashree Techno Park, Whitefield
Bangalore, Karnataka 560066 Bangalore, Karnataka 560066
India India
EMail: rohit.pobbathi@huawei.com EMail: rohit.pobbathi@huawei.com
 End of changes. 143 change blocks. 
339 lines changed or deleted 846 lines changed or added

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