< draft-pkd-pce-pcep-yang-05.txt   draft-pkd-pce-pcep-yang-06.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: July 31, 2016 Metaswitch Expires: January 8, 2017 Metaswitch
V. Beeram V. Beeram
Juniper Networks Juniper Networks
J. Tantsura J. Tantsura
Ericsson July 7, 2016
January 28, 2016
A YANG Data Model for Path Computation Element Communications Protocol A YANG Data Model for Path Computation Element Communications Protocol
(PCEP) (PCEP)
draft-pkd-pce-pcep-yang-05 draft-pkd-pce-pcep-yang-06
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 41 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 July 31, 2016. This Internet-Draft will expire on January 8, 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 18 skipping to change at page 2, line 17
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
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 . . . . . . . . . . . . . . . 4 3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5
4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 5 4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 5
5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 5 5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 6
5.1. The Entity . . . . . . . . . . . . . . . . . . . . . . . 13 5.1. The Entity . . . . . . . . . . . . . . . . . . . . . . . 17
5.2. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 14 5.2. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 18
5.3. The Session Lists . . . . . . . . . . . . . . . . . . . . 14 5.3. The Session Lists . . . . . . . . . . . . . . . . . . . . 18
5.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 15 5.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 19
6. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 15 6. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 19
6.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 16 6.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 19
7. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 16 7. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 20
7.1. The LSP Database . . . . . . . . . . . . . . . . . . . . 16 7.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 20
8. PCEP YANG Module . . . . . . . . . . . . . . . . . . . . . . 16 7.2. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 20
9. Security Considerations . . . . . . . . . . . . . . . . . . . 72 8. PCEP YANG Module . . . . . . . . . . . . . . . . . . . . . . 20
10. Manageability Considerations . . . . . . . . . . . . . . . . 73 9. Security Considerations . . . . . . . . . . . . . . . . . . . 83
10.1. Control of Function and Policy . . . . . . . . . . . . . 73 10. Manageability Considerations . . . . . . . . . . . . . . . . 84
10.2. Information and Data Models . . . . . . . . . . . . . . 73 10.1. Control of Function and Policy . . . . . . . . . . . . . 84
10.3. Liveness Detection and Monitoring . . . . . . . . . . . 73 10.2. Information and Data Models . . . . . . . . . . . . . . 84
10.4. Verify Correct Operations . . . . . . . . . . . . . . . 73 10.3. Liveness Detection and Monitoring . . . . . . . . . . . 84
10.5. Requirements On Other Protocols . . . . . . . . . . . . 73 10.4. Verify Correct Operations . . . . . . . . . . . . . . . 84
10.6. Impact On Network Operations . . . . . . . . . . . . . . 73 10.5. Requirements On Other Protocols . . . . . . . . . . . . 84
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 73 10.6. Impact On Network Operations . . . . . . . . . . . . . . 84
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 73 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 84
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 73 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 85
13.1. Normative References . . . . . . . . . . . . . . . . . . 73 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 85
13.2. Informative References . . . . . . . . . . . . . . . . . 74 13.1. Normative References . . . . . . . . . . . . . . . . . . 85
Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 76 13.2. Informative References . . . . . . . . . . . . . . . . . 86
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 77 Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 88
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 89
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 21 skipping to change at page 4, line 21
[I-D.ietf-pce-stateful-pce] : [I-D.ietf-pce-stateful-pce] :
o Stateful PCE, Passive Stateful PCE, Active Stateful PCE o Stateful PCE, Passive Stateful PCE, Active Stateful PCE
o Delegation, Revocation, Redelegation o Delegation, Revocation, Redelegation
o LSP State Report, Path Computation Report message (PCRpt). o LSP State Report, Path Computation Report message (PCRpt).
o LSP State Update, Path Computation Update message (PCUpd). o LSP State Update, Path Computation Update message (PCUpd).
[I-D.ietf-pce-pce-initiated-lsp] :
o PCE-initiated LSP, Path Computation LSP Initiate Message
(PCInitiate).
[I-D.ietf-pce-lsp-setup-type] :
o Path Setup Type (PST).
[I-D.ietf-pce-segment-routing] :
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 o Curly braces "{" and "}" contain names of optional features that
make the corresponding node conditional. make the corresponding node conditional.
skipping to change at page 5, line 44 skipping to change at page 6, line 14
o It should be fairly straightforward to augment the base data model o It should be fairly straightforward to augment the base data model
for advanced PCE features. for advanced PCE features.
5. The Design of PCEP Data Model 5. The Design of PCEP Data Model
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 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 {obj-fn}?
| | +--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 | | | +--rw pce-initiated? boolean {pce-initiated}?
| +--rw pce-info | | +--rw sr {sr}?
| | +--rw scope | | +--rw enabled? boolean
| | | +--rw intra-area-scope? boolean | | +--rw msd? uint8
| | | +--rw intra-area-pref? uint8 | +--rw pce-info
| | | +--rw inter-area-scope? boolean | | +--rw scope
| | | +--rw inter-area-scope-default? boolean | | | +--rw intra-area-scope? boolean
| | | +--rw inter-area-pref? uint8 | | | +--rw intra-area-pref? uint8
| | | +--rw inter-as-scope? boolean | | | +--rw inter-area-scope? boolean
| | | +--rw inter-as-scope-default? boolean | | | +--rw inter-area-scope-default? boolean
| | | +--rw inter-as-pref? uint8 | | | +--rw inter-area-pref? uint8
| | | +--rw inter-layer-scope? boolean | | | +--rw inter-as-scope? boolean
| | | +--rw inter-layer-pref? uint8 | | | +--rw inter-as-scope-default? boolean
| | +--rw neigh-domains | | | +--rw inter-as-pref? uint8
| | +--rw domain* [domain-type domain] | | | +--rw inter-layer-scope? boolean
| | +--rw domain-type domain-type | | | +--rw inter-layer-pref? uint8
| | +--rw domain domain | | +--rw neigh-domains
| +--rw connect-timer? uint32 | | | +--rw domain* [domain-type domain]
| +--rw connect-max-retry? uint32 | | | +--rw domain-type domain-type
| +--rw init-backoff-timer? uint32 | | | +--rw domain domain
| +--rw max-backoff-timer? uint32 | | +--rw (auth-type-selection)?
| +--rw open-wait-timer? uint32 | | +--:(auth-key-chain)
| +--rw keep-wait-timer? uint32 | | | +--rw key-chain? key-chain:key-chain-ref
| +--rw keep-alive-timer? uint32 | | +--:(auth-key)
| +--rw dead-timer? uint32 | | | +--rw key? string
| +--rw allow-negotiation? boolean | | | +--rw crypto-algorithm
| +--rw max-keep-alive-timer? uint32 | | | +--rw (algorithm)?
| +--rw max-dead-timer? uint32 | | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}?
| +--rw min-keep-alive-timer? uint32 | | | | +--rw hmac-sha1-12? empty
| +--rw min-dead-timer? uint32 | | | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}?
| +--rw sync-timer? uint32 {svec}? | | | | +--rw aes-cmac-prf-128? empty
| +--rw request-timer? uint32 | | | +--:(md5)
| +--rw max-sessions? uint32 | | | | +--rw md5? empty
| +--rw max-unknown-reqs? uint32 | | | +--:(sha-1)
| +--rw max-unknown-msgs? uint32 | | | | +--rw sha-1? empty
| +--rw pcep-notification-max-rate uint32 | | | +--:(hmac-sha-1)
| +--rw stateful-parameter {stateful}? | | | | +--rw hmac-sha-1? empty
| | +--rw state-timeout? uint32 | | | +--:(hmac-sha-256)
| | +--rw redelegation-timeout? uint32 | | | | +--rw hmac-sha-256? empty
| | +--rw rpt-non-pcep-lsp? boolean | | | +--:(hmac-sha-384)
| +--rw peers | | | | +--rw hmac-sha-384? empty
| +--rw peer* [addr] | | | +--:(hmac-sha-512)
| +--rw addr inet:ip-address | | | | +--rw hmac-sha-512? empty
| +--rw description? string | | | +--:(clear-text) {clear-text}?
| +--rw domain | | | | +--rw clear-text? empty
| | +--rw domain* [domain-type domain] | | | +--:(replay-protection-only) {replay-protection-only}?
| | +--rw domain-type domain-type | | | +--rw replay-protection-only? empty
| | +--rw domain domain | | +--:(auth-tls) {tls}?
| +--rw capability | | +--rw tls
| | +--rw gmpls? boolean {gmpls}? | +--rw connect-timer? uint32
| | +--rw bi-dir? boolean | +--rw connect-max-retry? uint32
| | +--rw diverse? boolean | +--rw init-backoff-timer? uint32
| | +--rw load-balance? boolean | +--rw max-backoff-timer? uint32
| | +--rw synchronize? boolean {svec}? | +--rw open-wait-timer? uint32
| | +--rw objective-function? boolean {obj-fn}? | +--rw keep-wait-timer? uint32
| | +--rw add-path-constraint? boolean | +--rw keep-alive-timer? uint32
| | +--rw prioritization? boolean | +--rw dead-timer? uint32
| | +--rw multi-request? boolean | +--rw allow-negotiation? boolean
| | +--rw gco? boolean {gco}? | +--rw max-keep-alive-timer? uint32
| | +--rw p2mp? boolean {p2mp}? | +--rw max-dead-timer? uint32
| | +--rw stateful {stateful}? | +--rw min-keep-alive-timer? uint32
| | +--rw enabled? boolean | +--rw min-dead-timer? uint32
| | +--rw active? boolean | +--rw sync-timer? uint32 {svec}?
| | +--rw pce-initiated? boolean | +--rw request-timer? uint32
| +--rw scope | +--rw max-sessions? uint32
| | +--rw intra-area-scope? boolean | +--rw max-unknown-reqs? uint32
| | +--rw intra-area-pref? uint8 | +--rw max-unknown-msgs? uint32
| | +--rw inter-area-scope? boolean | +--rw pcep-notification-max-rate uint32
| | +--rw inter-area-scope-default? boolean | +--rw stateful-parameter {stateful}?
| | +--rw inter-area-pref? uint8 | | +--rw state-timeout? uint32
| | +--rw inter-as-scope? boolean | | +--rw redelegation-timeout? uint32
| | +--rw inter-as-scope-default? boolean | | +--rw rpt-non-pcep-lsp? boolean
| | +--rw inter-as-pref? uint8 | +--rw peers
| | +--rw inter-layer-scope? boolean | +--rw peer* [addr]
| | +--rw inter-layer-pref? uint8 | +--rw addr inet:ip-address
| +--rw neigh-domains | +--rw description? string
| | +--rw domain* [domain-type domain] | +--rw domain
| | +--rw domain-type domain-type | | +--rw domain* [domain-type domain]
| | +--rw domain domain | | +--rw domain-type domain-type
| +--rw delegation-pref? uint8 {stateful}? | | +--rw domain domain
+--ro pcep-state | +--rw capability
+--ro entity | | +--rw gmpls? boolean {gmpls}?
+--ro addr? inet:ip-address | | +--rw bi-dir? boolean
+--ro index? uint32 | | +--rw diverse? boolean
+--ro admin-status? pcep-admin-status | | +--rw load-balance? boolean
+--ro oper-status? pcep-admin-status | | +--rw synchronize? boolean {svec}?
+--ro role? pcep-role | | +--rw objective-function? boolean {obj-fn}?
+--ro domain | | +--rw add-path-constraint? boolean
| +--ro domain* [domain-type domain] | | +--rw prioritization? boolean
| +--ro domain-type domain-type | | +--rw multi-request? boolean
| +--ro domain domain | | +--rw gco? boolean {gco}?
+--ro capability | | +--rw p2mp? boolean {p2mp}?
| +--ro gmpls? boolean {gmpls}? | | +--rw stateful {stateful}?
| +--ro bi-dir? boolean | | | +--rw enabled? boolean
| +--ro diverse? boolean | | | +--rw active? boolean
| +--ro load-balance? boolean | | | +--rw pce-initiated? boolean {pce-initiated}?
| +--ro synchronize? boolean {svec}? | | +--rw sr {sr}?
| +--ro objective-function? boolean {obj-fn}? | | +--rw enabled? boolean
| +--ro add-path-constraint? boolean | | +--rw msd? uint8
| +--ro prioritization? boolean | +--rw scope
| +--ro multi-request? boolean | | +--rw intra-area-scope? boolean
| +--ro gco? boolean {gco}? | | +--rw intra-area-pref? uint8
| +--ro p2mp? boolean {p2mp}? | | +--rw inter-area-scope? boolean
| +--ro stateful {stateful}? | | +--rw inter-area-scope-default? boolean
| +--ro enabled? boolean | | +--rw inter-area-pref? uint8
| +--ro active? boolean | | +--rw inter-as-scope? boolean
| +--ro pce-initiated? boolean | | +--rw inter-as-scope-default? boolean
+--ro pce-info | | +--rw inter-as-pref? uint8
| +--ro scope | | +--rw inter-layer-scope? boolean
| | +--ro intra-area-scope? boolean | | +--rw inter-layer-pref? uint8
| | +--ro intra-area-pref? uint8 | +--rw neigh-domains
| | +--ro inter-area-scope? boolean | | +--rw domain* [domain-type domain]
| | +--ro inter-area-scope-default? boolean | | +--rw domain-type domain-type
| | +--ro inter-area-pref? uint8 | | +--rw domain domain
| | +--ro inter-as-scope? boolean | +--rw delegation-pref? uint8 {stateful}?
| | +--ro inter-as-scope-default? boolean | +--rw (auth-type-selection)?
| | +--ro inter-as-pref? uint8 | +--:(auth-key-chain)
| | +--ro inter-layer-scope? boolean | | +--rw key-chain? key-chain:key-chain-ref
| | +--ro inter-layer-pref? uint8 | +--:(auth-key)
| +--ro neigh-domains | | +--rw key? string
| +--ro domain* [domain-type domain] | | +--rw crypto-algorithm
| +--ro domain-type domain-type | | +--rw (algorithm)?
| +--ro domain domain | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}?
+--ro connect-timer? uint32 | | | +--rw hmac-sha1-12? empty
+--ro connect-max-retry? uint32 | | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}?
+--ro init-backoff-timer? uint32 | | | +--rw aes-cmac-prf-128? empty
+--ro max-backoff-timer? uint32 | | +--:(md5)
+--ro open-wait-timer? uint32 | | | +--rw md5? empty
+--ro keep-wait-timer? uint32 | | +--:(sha-1)
+--ro keep-alive-timer? uint32 | | | +--rw sha-1? empty
+--ro dead-timer? uint32 | | +--:(hmac-sha-1)
+--ro allow-negotiation? boolean | | | +--rw hmac-sha-1? empty
+--ro max-keep-alive-timer? uint32 | | +--:(hmac-sha-256)
+--ro max-dead-timer? uint32 | | | +--rw hmac-sha-256? empty
+--ro min-keep-alive-timer? uint32 | | +--:(hmac-sha-384)
+--ro min-dead-timer? uint32 | | | +--rw hmac-sha-384? empty
+--ro sync-timer? uint32 {svec}? | | +--:(hmac-sha-512)
+--ro request-timer? uint32 | | | +--rw hmac-sha-512? empty
+--ro max-sessions? uint32 | | +--:(clear-text) {clear-text}?
+--ro max-unknown-reqs? uint32 | | | +--rw clear-text? empty
+--ro max-unknown-msgs? uint32 | | +--:(replay-protection-only) {replay-protection-only}?
+--ro stateful-parameter {stateful}? | | +--rw replay-protection-only? empty
| +--ro state-timeout? uint32 | +--:(auth-tls) {tls}?
| +--ro redelegation-timeout? uint32 | +--rw tls
| +--ro rpt-non-pcep-lsp? boolean +--ro pcep-state
+--ro lsp-db {stateful}? +--ro entity
| +--ro lsp* [plsp-id pcc-id] +--ro addr? inet:ip-address
| +--ro plsp-id uint32 +--ro index? uint32
| +--ro pcc-id inet:ip-address +--ro admin-status? pcep-admin-status
| +--ro admin-state? boolean +--ro oper-status? pcep-admin-status
| +--ro operational-state? operational-state +--ro role? pcep-role
| +--ro delegated +--ro domain
| | +--ro enabled? boolean | +--ro domain* [domain-type domain]
| | +--ro pce? leafref | +--ro domain-type domain-type
| | +--ro srp-id? uint32 | +--ro domain domain
| +--ro symbolic-path-name? string +--ro capability
| +--ro last-error? lsp-error | +--ro gmpls? boolean {gmpls}?
+--ro peers | +--ro bi-dir? boolean
+--ro peer* [addr] | +--ro diverse? boolean
+--ro addr inet:ip-address | +--ro load-balance? boolean
+--ro role? pcep-role | +--ro synchronize? boolean {svec}?
+--ro domain | +--ro objective-function? boolean {obj-fn}?
| +--ro domain* [domain-type domain] | +--ro add-path-constraint? boolean
| +--ro domain-type domain-type | +--ro prioritization? boolean
| +--ro domain domain | +--ro multi-request? boolean
+--ro capability | +--ro gco? boolean {gco}?
| +--ro gmpls? boolean {gmpls}? | +--ro p2mp? boolean {p2mp}?
| +--ro bi-dir? boolean | +--ro stateful {stateful}?
| +--ro diverse? boolean | | +--ro enabled? boolean
| +--ro load-balance? boolean | | +--ro active? boolean
| +--ro synchronize? boolean {svec}? | | +--ro pce-initiated? boolean {pce-initiated}?
| +--ro objective-function? boolean {obj-fn}? | +--ro sr {sr}?
| +--ro add-path-constraint? boolean | +--ro enabled? boolean
| +--ro prioritization? boolean | +--ro msd? uint8
| +--ro multi-request? boolean +--ro pce-info
| +--ro gco? boolean {gco}? | +--ro scope
| +--ro p2mp? boolean {p2mp}? | | +--ro intra-area-scope? boolean
| +--ro stateful {stateful}? | | +--ro intra-area-pref? uint8
| +--ro enabled? boolean | | +--ro inter-area-scope? boolean
| +--ro active? boolean | | +--ro inter-area-scope-default? boolean
| +--ro pce-initiated? boolean | | +--ro inter-area-pref? uint8
+--ro pce-info | | +--ro inter-as-scope? boolean
| +--ro scope | | +--ro inter-as-scope-default? boolean
| | +--ro intra-area-scope? boolean | | +--ro inter-as-pref? uint8
| | +--ro intra-area-pref? uint8 | | +--ro inter-layer-scope? boolean
| | +--ro inter-area-scope? boolean | | +--ro inter-layer-pref? uint8
| | +--ro inter-area-scope-default? boolean | +--ro neigh-domains
| | +--ro inter-area-pref? uint8 | | +--ro domain* [domain-type domain]
| | +--ro inter-as-scope? boolean | | +--ro domain-type domain-type
| | +--ro inter-as-scope-default? boolean | | +--ro domain domain
| | +--ro inter-as-pref? uint8 | +--ro (auth-type-selection)?
| | +--ro inter-layer-scope? boolean | +--:(auth-key-chain)
| | +--ro inter-layer-pref? uint8 | | +--ro key-chain? key-chain:key-chain-ref
| +--ro neigh-domains | +--:(auth-key)
| +--ro domain* [domain-type domain] | | +--ro key? string
| +--ro domain-type domain-type | | +--ro crypto-algorithm
| +--ro domain domain | | +--ro (algorithm)?
+--ro delegation-pref? uint8 {stateful}? | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}?
+--ro discontinuity-time? yang:timestamp | | | +--ro hmac-sha1-12? empty
+--ro initiate-session? boolean | | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}?
+--ro session-exists? boolean | | | +--ro aes-cmac-prf-128? empty
+--ro num-sess-setup-ok? yang:counter32 | | +--:(md5)
+--ro num-sess-setup-fail? yang:counter32 | | | +--ro md5? empty
+--ro session-up-time? yang:timestamp | | +--:(sha-1)
+--ro session-fail-time? yang:timestamp | | | +--ro sha-1? empty
+--ro session-fail-up-time? yang:timestamp | | +--:(hmac-sha-1)
+--ro pcep-stats | | | +--ro hmac-sha-1? empty
| +--ro avg-rsp-time? uint32 | | +--:(hmac-sha-256)
| +--ro lwm-rsp-time? uint32 | | | +--ro hmac-sha-256? empty
| +--ro hwm-rsp-time? uint32 | | +--:(hmac-sha-384)
| +--ro num-pcreq-sent? yang:counter32 | | | +--ro hmac-sha-384? empty
| +--ro num-pcreq-rcvd? yang:counter32 | | +--:(hmac-sha-512)
| +--ro num-pcrep-sent? yang:counter32 | | | +--ro hmac-sha-512? empty
| +--ro num-pcrep-rcvd? yang:counter32 | | +--:(clear-text) {clear-text}?
| +--ro num-pcerr-sent? yang:counter32 | | | +--ro clear-text? empty
| +--ro num-pcerr-rcvd? yang:counter32 | | +--:(replay-protection-only) {replay-protection-only}?
| +--ro num-pcntf-sent? yang:counter32 | | +--ro replay-protection-only? empty
| +--ro num-pcntf-rcvd? yang:counter32 | +--:(auth-tls) {tls}?
| +--ro num-keepalive-sent? yang:counter32 | +--ro tls
| +--ro num-keepalive-rcvd? yang:counter32 +--ro connect-timer? uint32
| +--ro num-unknown-rcvd? yang:counter32 +--ro connect-max-retry? uint32
| +--ro num-corrupt-rcvd? yang:counter32 +--ro init-backoff-timer? uint32
| +--ro num-req-sent? yang:counter32 +--ro max-backoff-timer? uint32
| +--ro num-req-sent-pend-rep? yang:counter32 +--ro open-wait-timer? uint32
| +--ro num-req-sent-ero-rcvd? yang:counter32 +--ro keep-wait-timer? uint32
| +--ro num-req-sent-nopath-rcvd? yang:counter32 +--ro keep-alive-timer? uint32
| +--ro num-req-sent-cancel-rcvd? yang:counter32 +--ro dead-timer? uint32
| +--ro num-req-sent-error-rcvd? yang:counter32 +--ro allow-negotiation? boolean
| +--ro num-req-sent-timeout? yang:counter32 +--ro max-keep-alive-timer? uint32
| +--ro num-req-sent-cancel-sent? yang:counter32 +--ro max-dead-timer? uint32
| +--ro num-req-rcvd? yang:counter32 +--ro min-keep-alive-timer? uint32
| +--ro num-req-rcvd-pend-rep? yang:counter32 +--ro min-dead-timer? uint32
| +--ro num-req-rcvd-ero-sent? yang:counter32 +--ro sync-timer? uint32 {svec}?
| +--ro num-req-rcvd-nopath-sent? yang:counter32 +--ro request-timer? uint32
| +--ro num-req-rcvd-cancel-sent? yang:counter32 +--ro max-sessions? uint32
| +--ro num-req-rcvd-error-sent? yang:counter32 +--ro max-unknown-reqs? uint32
| +--ro num-req-rcvd-cancel-rcvd? yang:counter32 +--ro max-unknown-msgs? uint32
| +--ro num-rep-rcvd-unknown? yang:counter32 +--ro stateful-parameter {stateful}?
| +--ro num-req-rcvd-unknown? yang:counter32 | +--ro state-timeout? uint32
| +--ro svec {svec}? | +--ro redelegation-timeout? uint32
| | +--ro num-svec-sent? yang:counter32 | +--ro rpt-non-pcep-lsp? boolean
| | +--ro num-svec-req-sent? yang:counter32 +--ro lsp-db {stateful}?
| | +--ro num-svec-rcvd? yang:counter32 | +--ro association-list* [id source global-source extended-id]
| | +--ro num-svec-req-rcvd? yang:counter32 | | +--ro type? assoc-type
| +--ro stateful {stateful}? | | +--ro id uint16
| | +--ro num-pcrpt-sent? yang:counter32 | | +--ro source inet:ip-address
| | +--ro num-pcrpt-rcvd? yang:counter32 | | +--ro global-source uint32
| | +--ro num-pcupd-sent? yang:counter32 | | +--ro extended-id string
| | +--ro num-pcupd-rcvd? yang:counter32 | | +--ro lsp* [plsp-id pcc-id]
| | +--ro num-rpt-sent? yang:counter32 | | +--ro plsp-id -> /pcep-state/entity/lsp-db/lsp/plsp-id
| | +--ro num-rpt-rcvd? yang:counter32 | | +--ro pcc-id -> /pcep-state/entity/lsp-db/lsp/pcc-id
| | +--ro num-rpt-rcvd-error-sent? yang:counter32 | +--ro lsp* [plsp-id pcc-id]
| | +--ro num-upd-sent? yang:counter32 | +--ro plsp-id uint32
| | +--ro num-upd-rcvd? yang:counter32 | +--ro pcc-id inet:ip-address
| | +--ro num-upd-rcvd-unknown? yang:counter32 | +--ro lsp-ref
| | +--ro num-upd-rcvd-undelegated? yang:counter32 | | +--ro source? -> /te:te/lsps-state/lsp/source
| | +--ro num-upd-rcvd-error-sent? yang:counter32 | | +--ro destination? -> /te:te/lsps-state/lsp/destination
| +--ro num-req-sent-closed? yang:counter32 | | +--ro tunnel-id? -> /te:te/lsps-state/lsp/tunnel-id
| +--ro num-req-rcvd-closed? yang:counter32 | | +--ro lsp-id? -> /te:te/lsps-state/lsp/lsp-id
+--ro sessions | | +--ro extended-tunnel-id? -> /te:te/lsps-state/lsp/extended-tunnel-id
+--ro session* [initiator] | | +--ro type? -> /te:te/lsps-state/lsp/type
+--ro initiator pcep-initiator | +--ro admin-state? boolean
+--ro state-last-change? yang:timestamp | +--ro operational-state? operational-state
+--ro state? pcep-sess-state | +--ro delegated
+--ro session-creation? yang:timestamp | | +--ro enabled? boolean
+--ro connect-retry? yang:counter32 | | +--ro pce? -> /pcep-state/entity/peers/peer/addr
+--ro local-id? uint32 | | +--ro srp-id? uint32
+--ro remote-id? uint32 | +--ro initiation {pce-initiated}?
+--ro keepalive-timer? uint32 | | +--ro enabled? boolean
+--ro peer-keepalive-timer? uint32 | | +--ro pce? -> /pcep-state/entity/peers/peer/addr
+--ro dead-timer? uint32 | +--ro symbolic-path-name? string
+--ro peer-dead-timer? uint32 | +--ro last-error? lsp-error
+--ro ka-hold-time-rem? uint32 | +--ro pst? pst
+--ro overloaded? boolean | +--ro association-list* [id source global-source extended-id]
+--ro overload-time? uint32 | +--ro id -> /pcep-state/entity/lsp-db/association-list/id
+--ro peer-overloaded? boolean | +--ro source -> /pcep-state/entity/lsp-db/association-list/source
+--ro peer-overload-time? uint32 | +--ro global-source -> /pcep-state/entity/lsp-db/association-list/global-source
+--ro lspdb-sync? sync-state {stateful}? | +--ro extended-id -> /pcep-state/entity/lsp-db/association-list/extended-id
+--ro discontinuity-time? yang:timestamp +--ro peers
+--ro pcep-stats +--ro peer* [addr]
+--ro avg-rsp-time? uint32 +--ro addr inet:ip-address
+--ro lwm-rsp-time? uint32 +--ro role? pcep-role
+--ro hwm-rsp-time? uint32 +--ro domain
+--ro num-pcreq-sent? yang:counter32 | +--ro domain* [domain-type domain]
+--ro num-pcreq-rcvd? yang:counter32 | +--ro domain-type domain-type
+--ro num-pcrep-sent? yang:counter32 | +--ro domain domain
+--ro num-pcrep-rcvd? yang:counter32 +--ro capability
+--ro num-pcerr-sent? yang:counter32 | +--ro gmpls? boolean {gmpls}?
+--ro num-pcerr-rcvd? yang:counter32 | +--ro bi-dir? boolean
+--ro num-pcntf-sent? yang:counter32 | +--ro diverse? boolean
+--ro num-pcntf-rcvd? yang:counter32 | +--ro load-balance? boolean
+--ro num-keepalive-sent? yang:counter32 | +--ro synchronize? boolean {svec}?
+--ro num-keepalive-rcvd? yang:counter32 | +--ro objective-function? boolean {obj-fn}?
+--ro num-unknown-rcvd? yang:counter32 | +--ro add-path-constraint? boolean
+--ro num-corrupt-rcvd? yang:counter32 | +--ro prioritization? boolean
+--ro num-req-sent? yang:counter32 | +--ro multi-request? boolean
+--ro num-req-sent-pend-rep? yang:counter32 | +--ro gco? boolean {gco}?
+--ro num-req-sent-ero-rcvd? yang:counter32 | +--ro p2mp? boolean {p2mp}?
+--ro num-req-sent-nopath-rcvd? yang:counter32 | +--ro stateful {stateful}?
+--ro num-req-sent-cancel-rcvd? yang:counter32 | | +--ro enabled? boolean
+--ro num-req-sent-error-rcvd? yang:counter32 | | +--ro active? boolean
+--ro num-req-sent-timeout? yang:counter32 | | +--ro pce-initiated? boolean {pce-initiated}?
+--ro num-req-sent-cancel-sent? yang:counter32 | +--ro sr {sr}?
+--ro num-req-rcvd? yang:counter32 | +--ro enabled? boolean
+--ro num-req-rcvd-pend-rep? yang:counter32 | +--ro msd? uint8
+--ro num-req-rcvd-ero-sent? yang:counter32 +--ro pce-info
+--ro num-req-rcvd-nopath-sent? yang:counter32 | +--ro scope
+--ro num-req-rcvd-cancel-sent? yang:counter32 | | +--ro intra-area-scope? boolean
+--ro num-req-rcvd-error-sent? yang:counter32 | | +--ro intra-area-pref? uint8
+--ro num-req-rcvd-cancel-rcvd? yang:counter32 | | +--ro inter-area-scope? boolean
+--ro num-rep-rcvd-unknown? yang:counter32 | | +--ro inter-area-scope-default? boolean
+--ro num-req-rcvd-unknown? yang:counter32 | | +--ro inter-area-pref? uint8
+--ro svec {svec}? | | +--ro inter-as-scope? boolean
| +--ro num-svec-sent? yang:counter32 | | +--ro inter-as-scope-default? boolean
| +--ro num-svec-req-sent? yang:counter32 | | +--ro inter-as-pref? uint8
| +--ro num-svec-rcvd? yang:counter32 | | +--ro inter-layer-scope? boolean
| +--ro num-svec-req-rcvd? yang:counter32 | | +--ro inter-layer-pref? uint8
+--ro stateful {stateful}? | +--ro neigh-domains
+--ro num-pcrpt-sent? yang:counter32 | +--ro domain* [domain-type domain]
+--ro num-pcrpt-rcvd? yang:counter32 | +--ro domain-type domain-type
+--ro num-pcupd-sent? yang:counter32 | +--ro domain domain
+--ro num-pcupd-rcvd? yang:counter32 +--ro delegation-pref? uint8 {stateful}?
+--ro num-rpt-sent? yang:counter32 +--ro (auth-type-selection)?
+--ro num-rpt-rcvd? yang:counter32 | +--:(auth-key-chain)
+--ro num-rpt-rcvd-error-sent? yang:counter32 | | +--ro key-chain? key-chain:key-chain-ref
+--ro num-upd-sent? yang:counter32 | +--:(auth-key)
+--ro num-upd-rcvd? yang:counter32 | | +--ro key? string
+--ro num-upd-rcvd-unknown? yang:counter32 | | +--ro crypto-algorithm
+--ro num-upd-rcvd-undelegated? yang:counter32 | | +--ro (algorithm)?
+--ro num-upd-rcvd-error-sent? yang:counter32 | | +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}?
| | | +--ro hmac-sha1-12? empty
| | +--:(aes-cmac-prf-128) {aes-cmac-prf-128}?
| | | +--ro aes-cmac-prf-128? empty
| | +--:(md5)
| | | +--ro md5? empty
| | +--:(sha-1)
| | | +--ro sha-1? empty
| | +--:(hmac-sha-1)
| | | +--ro hmac-sha-1? empty
| | +--:(hmac-sha-256)
| | | +--ro hmac-sha-256? empty
| | +--:(hmac-sha-384)
| | | +--ro hmac-sha-384? empty
| | +--:(hmac-sha-512)
| | | +--ro hmac-sha-512? empty
| | +--:(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 discontinuity-time? yang:timestamp
+--ro initiate-session? boolean
+--ro session-exists? boolean
+--ro num-sess-setup-ok? yang:counter32
+--ro num-sess-setup-fail? yang:counter32
+--ro session-up-time? yang:timestamp
+--ro session-fail-time? yang:timestamp
+--ro session-fail-up-time? yang:timestamp
+--ro pcep-stats
| +--ro avg-rsp-time? uint32
| +--ro lwm-rsp-time? uint32
| +--ro hwm-rsp-time? uint32
| +--ro num-pcreq-sent? yang:counter32
| +--ro num-pcreq-rcvd? yang:counter32
| +--ro num-pcrep-sent? yang:counter32
| +--ro num-pcrep-rcvd? yang:counter32
| +--ro num-pcerr-sent? yang:counter32
| +--ro num-pcerr-rcvd? yang:counter32
| +--ro num-pcntf-sent? yang:counter32
| +--ro num-pcntf-rcvd? yang:counter32
| +--ro num-keepalive-sent? yang:counter32
| +--ro num-keepalive-rcvd? yang:counter32
| +--ro num-unknown-rcvd? yang:counter32
| +--ro num-corrupt-rcvd? yang:counter32
| +--ro num-req-sent? yang:counter32
| +--ro num-req-sent-pend-rep? yang:counter32
| +--ro num-req-sent-ero-rcvd? yang:counter32
| +--ro num-req-sent-nopath-rcvd? yang:counter32
| +--ro num-req-sent-cancel-rcvd? yang:counter32
| +--ro num-req-sent-error-rcvd? yang:counter32
| +--ro num-req-sent-timeout? yang:counter32
| +--ro num-req-sent-cancel-sent? yang:counter32
| +--ro num-req-rcvd? yang:counter32
| +--ro num-req-rcvd-pend-rep? yang:counter32
| +--ro num-req-rcvd-ero-sent? yang:counter32
| +--ro num-req-rcvd-nopath-sent? yang:counter32
| +--ro num-req-rcvd-cancel-sent? yang:counter32
| +--ro num-req-rcvd-error-sent? yang:counter32
| +--ro num-req-rcvd-cancel-rcvd? yang:counter32
| +--ro num-rep-rcvd-unknown? yang:counter32
| +--ro num-req-rcvd-unknown? yang:counter32
| +--ro svec {svec}?
| | +--ro num-svec-sent? yang:counter32
| | +--ro num-svec-req-sent? yang:counter32
| | +--ro num-svec-rcvd? yang:counter32
| | +--ro num-svec-req-rcvd? yang:counter32
| +--ro stateful {stateful}?
| | +--ro num-pcrpt-sent? yang:counter32
| | +--ro num-pcrpt-rcvd? yang:counter32
| | +--ro num-pcupd-sent? yang:counter32
| | +--ro num-pcupd-rcvd? yang:counter32
| | +--ro num-rpt-sent? yang:counter32
| | +--ro num-rpt-rcvd? yang:counter32
| | +--ro num-rpt-rcvd-error-sent? yang:counter32
| | +--ro num-upd-sent? yang:counter32
| | +--ro num-upd-rcvd? yang:counter32
| | +--ro num-upd-rcvd-unknown? yang:counter32
| | +--ro num-upd-rcvd-undelegated? yang:counter32
| | +--ro num-upd-rcvd-error-sent? yang:counter32
| | +--ro initiation {pce-initiated}?
| | +--ro num-pcinitiate-sent? yang:counter32
| | +--ro num-pcinitiate-rcvd? yang:counter32
| | +--ro num-initiate-sent? yang:counter32
| | +--ro num-initiate-rcvd? yang:counter32
| | +--ro num-initiate-rcvd-error-sent? yang:counter32
| +--ro num-req-sent-closed? yang:counter32
| +--ro num-req-rcvd-closed? yang:counter32
+--ro sessions
+--ro session* [initiator]
+--ro initiator pcep-initiator
+--ro state-last-change? yang:timestamp
+--ro state? pcep-sess-state
+--ro session-creation? yang:timestamp
+--ro connect-retry? yang:counter32
+--ro local-id? uint32
+--ro remote-id? uint32
+--ro keepalive-timer? uint32
+--ro peer-keepalive-timer? uint32
+--ro dead-timer? uint32
+--ro peer-dead-timer? uint32
+--ro ka-hold-time-rem? uint32
+--ro overloaded? boolean
+--ro overload-time? uint32
+--ro peer-overloaded? boolean
+--ro peer-overload-time? uint32
+--ro lspdb-sync? sync-state {stateful}?
+--ro discontinuity-time? yang:timestamp
+--ro pcep-stats
+--ro avg-rsp-time? uint32
+--ro lwm-rsp-time? uint32
+--ro hwm-rsp-time? uint32
+--ro num-pcreq-sent? yang:counter32
+--ro num-pcreq-rcvd? yang:counter32
+--ro num-pcrep-sent? yang:counter32
+--ro num-pcrep-rcvd? yang:counter32
+--ro num-pcerr-sent? yang:counter32
+--ro num-pcerr-rcvd? yang:counter32
+--ro num-pcntf-sent? yang:counter32
+--ro num-pcntf-rcvd? yang:counter32
+--ro num-keepalive-sent? yang:counter32
+--ro num-keepalive-rcvd? yang:counter32
+--ro num-unknown-rcvd? yang:counter32
+--ro num-corrupt-rcvd? yang:counter32
+--ro num-req-sent? yang:counter32
+--ro num-req-sent-pend-rep? yang:counter32
+--ro num-req-sent-ero-rcvd? yang:counter32
+--ro num-req-sent-nopath-rcvd? yang:counter32
+--ro num-req-sent-cancel-rcvd? yang:counter32
+--ro num-req-sent-error-rcvd? yang:counter32
+--ro num-req-sent-timeout? yang:counter32
+--ro num-req-sent-cancel-sent? yang:counter32
+--ro num-req-rcvd? yang:counter32
+--ro num-req-rcvd-pend-rep? yang:counter32
+--ro num-req-rcvd-ero-sent? yang:counter32
+--ro num-req-rcvd-nopath-sent? yang:counter32
+--ro num-req-rcvd-cancel-sent? yang:counter32
+--ro num-req-rcvd-error-sent? yang:counter32
+--ro num-req-rcvd-cancel-rcvd? yang:counter32
+--ro num-rep-rcvd-unknown? yang:counter32
+--ro num-req-rcvd-unknown? yang:counter32
+--ro svec {svec}?
| +--ro num-svec-sent? yang:counter32
| +--ro num-svec-req-sent? yang:counter32
| +--ro num-svec-rcvd? yang:counter32
| +--ro num-svec-req-rcvd? yang:counter32
+--ro stateful {stateful}?
+--ro num-pcrpt-sent? yang:counter32
+--ro num-pcrpt-rcvd? yang:counter32
+--ro num-pcupd-sent? yang:counter32
+--ro num-pcupd-rcvd? yang:counter32
+--ro num-rpt-sent? yang:counter32
+--ro num-rpt-rcvd? yang:counter32
+--ro num-rpt-rcvd-error-sent? yang:counter32
+--ro num-upd-sent? yang:counter32
+--ro num-upd-rcvd? yang:counter32
+--ro num-upd-rcvd-unknown? yang:counter32
+--ro num-upd-rcvd-undelegated? yang:counter32
+--ro num-upd-rcvd-error-sent? yang:counter32
+--ro initiation {pce-initiated}?
+--ro num-pcinitiate-sent? yang:counter32
+--ro num-pcinitiate-rcvd? yang:counter32
+--ro num-initiate-sent? yang:counter32
+--ro num-initiate-rcvd? yang:counter32
+--ro num-initiate-rcvd-error-sent? yang:counter32
notifications: notifications:
+---n pcep-session-up +---n pcep-session-up
| +--ro peer-addr? leafref | +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr
| +--ro session-initiator? leafref | +--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? leafref | +--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
| +--ro state? pcep-sess-state | +--ro state? pcep-sess-state
+---n pcep-session-local-overload +---n pcep-session-local-overload
| +--ro peer-addr? leafref | +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr
| +--ro session-initiator? leafref | +--ro session-initiator? -> /pcep-state/entity/peers/peer/sessions/session/initiator
| +--ro overloaded? boolean | +--ro overloaded? boolean
| +--ro overload-time? uint32 | +--ro overload-time? uint32
+---n pcep-session-local-overload-clear +---n pcep-session-local-overload-clear
| +--ro peer-addr? leafref | +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr
| +--ro overloaded? boolean | +--ro overloaded? boolean
+---n pcep-session-peer-overload +---n pcep-session-peer-overload
| +--ro peer-addr? leafref | +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr
| +--ro session-initiator? leafref | +--ro session-initiator? -> /pcep-state/entity/peers/peer/sessions/session/initiator
| +--ro peer-overloaded? boolean | +--ro peer-overloaded? boolean
| +--ro peer-overload-time? uint32 | +--ro peer-overload-time? uint32
+---n pcep-session-peer-overload-clear +---n pcep-session-peer-overload-clear
+--ro peer-addr? leafref +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr
+--ro peer-overloaded? boolean +--ro peer-overloaded? boolean
5.1. The Entity 5.1. The Entity
The PCEP yang module may contain status information for the local The PCEP yang module may contain status information for the local
PCEP entity. PCEP entity.
The entity has an IP address (using ietf-inet-types [RFC6991]) and a The entity has an IP address (using ietf-inet-types [RFC6991]) and a
"role" leaf (the local entity PCEP role) as mandatory. "role" leaf (the local entity PCEP role) as mandatory.
Note that, the PCEP MIB module [RFC7420] uses an entity list and a Note that, the PCEP MIB module [RFC7420] uses an entity list and a
skipping to change at page 16, line 11 skipping to change at page 20, line 5
o Authentication including PCEPS (TLS) o Authentication including PCEPS (TLS)
[Editor's Note - Some of them would be added in a future revision.] [Editor's Note - Some of them would be added in a future revision.]
6.1. Stateful PCE's LSP-DB 6.1. Stateful PCE's LSP-DB
In the operational state of PCEP which supports stateful PCE mode, In the operational state of PCEP which supports stateful PCE mode,
the list of LSP state are maintained in LSP-DB. The key is the PLSP- the list of LSP state are maintained in LSP-DB. The key is the PLSP-
ID and the PCC IP address. ID and the PCC IP address.
[Editor's Note - The document currently contains PCEP specific The PCEP data model contains the operational state of LSPs (/pcep-
attributes only. The generic LSP attributes need to added after state/entity/lsp-db/lsp/) with PCEP specific attributes. The generic
discussion with the TE Yang draft authors.] TE attributes of the LSP are defined in [I-D.ietf-teas-yang-te]. A
reference to LSP state in TE model is maintained.
7. Open Issues and Next Step 7. Open Issues and Next Step
This section is added so that open issues can be tracked. This This section is added so that open issues can be tracked. This
section would be removed when the document is ready for publication. section would be removed when the document is ready for publication.
7.1. The LSP Database 7.1. The PCE-Initiated LSP
The current version of data model contains the operational state of The TE Model at [I-D.ietf-teas-yang-te] should support creationg of
LSPs (/pcep-state/entity/lsp-db/lsp/) with PCEP specific attributes. tunnels at the controller (PCE) and marking them as PCE-Initiated.
The generic TE attributes of the LSP would be defined in other The LSP-DB in the PCEP Yang (/pcep-state/entity/lsp-db/lsp/
documents [I-D.ietf-teas-yang-te]. In its current form, initiation) also marks the LSPs which are PCE-initiated.
[I-D.ietf-teas-yang-te] models the LSP state from a device centric
view (ingress, transit, egress) which is not suitable at a PCE
server.
[Editor's Note: - The same issues would be amplified when PCE- 7.2. PCEP over TLS (PCEPS)
Initiated LSP are supported and require LSP provisioning on PCE
server rather than on the device.] A future version of this document would add TLS related
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-01-28.yang" <CODE BEGINS> file "ietf-pcep@2016-07-07.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 {
prefix inet;
}
import ietf-yang-types {
prefix yang;
}
organization
"IETF PCE (Path Computation Element) Working Group";
contact import ietf-inet-types {
"WG Web: <http://tools.ietf.org/wg/pce/> prefix "inet";
WG List: <mailto:pce@ietf.org> }
WG Chair: JP Vasseur import ietf-yang-types {
<mailto:jpv@cisco.com> prefix "yang";
}
WG Chair: Julien Meuric import ietf-te {
<mailto:julien.meuric@orange.com> prefix "te";
}
WG Chair: Jonathan Hardwick import ietf-key-chain {
<mailto:Jonathan.Hardwick@metaswitch.com> prefix "key-chain";
Editor: Dhruv Dhody }
<mailto:dhruv.ietf@gmail.com>";
description organization
"The YANG module defines a generic configuration and "IETF PCE (Path Computation Element) Working Group";
operational model for PCEP common across all of the
vendor implementations.";
revision 2016-01-28 { contact
description "Initial revision."; "WG Web: <http://tools.ietf.org/wg/pce/>
reference WG List: <mailto:pce@ietf.org>
"RFC XXXX: A YANG Data Model for Path Computation WG Chair: JP Vasseur
Element Communications Protocol <mailto:jpv@cisco.com>
(PCEP)"; WG Chair: Julien Meuric
} <mailto:julien.meuric@orange.com>
WG Chair: Jonathan Hardwick
<mailto:Jonathan.Hardwick@metaswitch.com>
Editor: Dhruv Dhody
<mailto:dhruv.ietf@gmail.com>";
/* description
* Identities "The YANG module defines a generic configuration and
*/ operational model for PCEP common across all of the
vendor implementations.";
identity pcep { revision 2016-07-07 {
description "Identity for the PCEP protocol."; description "Initial revision.";
} reference
"RFC XXXX: A YANG Data Model for Path Computation
Element Communications Protocol
(PCEP)";
}
/* /*
* Typedefs * Identities
*/ */
typedef pcep-role {
type enumeration {
enum unknown {
value "0";
description
"An unknown role";
}
enum pcc {
value "1";
description
"The role of a Path Computation Client";
}
enum pce {
value "2";
description
"The role of Path Computation Element";
}
enum pcc-and-pce {
value "3";
description
"The role of both Path Computation Client and
Path Computation Element";
}
}
description identity pcep {
"The role of a PCEP speaker. description "Identity for the PCEP protocol.";
Takes one of the following values }
- unknown(0): the role is not known.
- pcc(1): the role is of a Path Computation
Client (PCC).
- pce(2): the role is of a Path Computation
Server (PCE).
- pccAndPce(3): the role is of both a PCC and
a PCE.";
} /*
* Typedefs
*/
typedef pcep-role {
type enumeration {
enum unknown {
value "0";
description
"An unknown role";
}
enum pcc {
value "1";
description
"The role of a Path Computation Client";
}
enum pce {
value "2";
description
"The role of Path Computation Element";
}
enum pcc-and-pce {
value "3";
description
"The role of both Path Computation Client and
Path Computation Element";
}
}
typedef pcep-admin-status { description
type enumeration { "The role of a PCEP speaker.
enum admin-status-up { Takes one of the following values
value "1"; - unknown(0): the role is not known.
description - pcc(1): the role is of a Path Computation
"Admin Status is Up"; Client (PCC).
} - pce(2): the role is of a Path Computation
enum admin-status-down { Server (PCE).
value "2"; - pccAndPce(3): the role is of both a PCC and
description a PCE.";
"Admin Status is Down";
}
}
description
"The Admin Status of the PCEP entity.
Takes one of the following values
- admin-status-up(1): Admin Status is Up.
- admin-status-down(2): Admin Status is Down";
}
typedef pcep-oper-status { }
type enumeration {
enum oper-status-up {
value "1";
description
"The PCEP entity is active";
}
enum oper-status-down {
value "2";
description
"The PCEP entity is inactive";
}
enum oper-status-going-up {
value "3";
description
"The PCEP entity is activating";
}
enum oper-status-going-down {
value "4";
description
"The PCEP entity is deactivating";
}
enum oper-status-failed {
value "5";
description
"The PCEP entity has failed and will recover
when possible.";
}
enum oper-status-failed-perm {
value "6";
description
"The PCEP entity has failed and will not recover
without operator intervention";
}
}
description
"The operational status of the PCEP entity.
Takes one of the following values
- oper-status-up(1): Active
- oper-status-down(2): Inactive
- oper-status-going-up(3): Activating
- oper-status-going-down(4): Deactivating
- oper-status-failed(5): Failed
- oper-status-failed-perm(6): Failed Permanantly";
}
typedef pcep-initiator { typedef pcep-admin-status {
type enumeration { type enumeration {
enum local { enum admin-status-up {
value "1"; value "1";
description description
"The local PCEP entity initiated the session"; "Admin Status is Up";
} }
enum admin-status-down {
value "2";
description
"Admin Status is Down";
}
}
enum remote { description
value "2"; "The Admin Status of the PCEP entity.
description Takes one of the following values
"The remote PCEP peer initiated the session"; - admin-status-up(1): Admin Status is Up.
} - admin-status-down(2): Admin Status is Down";
} }
description
"The initiator of the session, that is, whether the TCP
connection was initiated by the local PCEP entity or
the remote peer.
Takes one of the following values
- local(1): Initiated locally
- remote(2): Initiated remotely";
}
typedef pcep-sess-state { typedef pcep-oper-status {
type enumeration { type enumeration {
enum tcp-pending { enum oper-status-up {
value "1"; value "1";
description description
"The tcp-pending state of PCEP session."; "The PCEP entity is active";
} }
enum oper-status-down {
value "2";
description
"The PCEP entity is inactive";
}
enum oper-status-going-up {
value "3";
description
"The PCEP entity is activating";
}
enum oper-status-going-down {
value "4";
description
"The PCEP entity is deactivating";
}
enum oper-status-failed {
value "5";
description
"The PCEP entity has failed and will recover
when possible.";
}
enum oper-status-failed-perm {
value "6";
description
"The PCEP entity has failed and will not recover
without operator intervention";
}
}
description
"The operational status of the PCEP entity.
Takes one of the following values
- oper-status-up(1): Active
- oper-status-down(2): Inactive
- oper-status-going-up(3): Activating
- oper-status-going-down(4): Deactivating
- oper-status-failed(5): Failed
- oper-status-failed-perm(6): Failed Permanantly";
}
enum open-wait { typedef pcep-initiator {
value "2"; type enumeration {
description enum local {
"The open-wait state of PCEP session."; value "1";
} description
"The local PCEP entity initiated the session";
}
enum keep-wait { enum remote {
value "3"; value "2";
description description
"The keep-wait state of PCEP session."; "The remote PCEP peer initiated the session";
} }
enum session-up { }
value "4"; description
description "The initiator of the session, that is, whether the TCP
"The session-up state of PCEP session."; connection was initiated by the local PCEP entity or
} the remote peer.
} Takes one of the following values
description - local(1): Initiated locally
"The current state of the session. - remote(2): Initiated remotely";
}
The set of possible states excludes the idle state typedef pcep-sess-state {
since entries do not exist in the idle state. type enumeration {
Takes one of the following values enum tcp-pending {
- tcp-pending(1): PCEP TCP Pending state value "1";
- open-wait(2): PCEP Open Wait state description
- keep-wait(3): PCEP Keep Wait state "The tcp-pending state of PCEP session.";
- session-up(4): PCEP Session Up state"; }
}
typedef domain-type { enum open-wait {
type enumeration { value "2";
enum ospf-area { description
value "1"; "The open-wait state of PCEP session.";
description }
"The OSPF area.";
}
enum isis-area {
value "2";
description
"The IS-IS area.";
}
enum as {
value "3";
description
"The Autonomous System (AS).";
}
}
description
"The PCE Domain Type";
}
typedef domain-ospf-area { enum keep-wait {
type union { value "3";
type uint32; description
type yang:dotted-quad; "The keep-wait state of PCEP session.";
} }
description
"OSPF Area ID.";
}
typedef domain-isis-area {
type string {
pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}';
}
description
"IS-IS Area ID.";
}
typedef domain-as { enum session-up {
type uint32; value "4";
description description
"Autonomous System number."; "The session-up state of PCEP session.";
}
}
description
"The current state of the session.
The set of possible states excludes the idle state
since entries do not exist in the idle state.
Takes one of the following values
- tcp-pending(1): PCEP TCP Pending state
- open-wait(2): PCEP Open Wait state
- keep-wait(3): PCEP Keep Wait state
- session-up(4): PCEP Session Up state";
}
} typedef domain-type {
type enumeration {
enum ospf-area {
value "1";
description
"The OSPF area.";
}
enum isis-area {
value "2";
description
"The IS-IS area.";
}
enum as {
value "3";
description
"The Autonomous System (AS).";
}
}
description
"The PCE Domain Type";
}
typedef domain { typedef domain-ospf-area {
type union { type union {
type domain-ospf-area; type uint32;
type domain-isis-area; type yang:dotted-quad;
type domain-as;
}
description
"The Domain Information";
} }
description
"OSPF Area ID.";
}
typedef operational-state { typedef domain-isis-area {
type enumeration { type string {
enum down { pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}';
value "0"; }
description description
"not active."; "IS-IS Area ID.";
} }
enum up {
value "1";
description
"signalled.";
}
enum active {
value "2";
description
"up and carrying traffic.";
}
enum going-down {
value "3";
description
"LSP is being torn down, resources are
being released.";
}
enum going-up {
value "4";
description
"LSP is being signalled.";
}
}
description
"The operational status of the LSP";
}
typedef lsp-error { typedef domain-as {
type enumeration { type uint32;
enum no-error { description
value "0"; "Autonomous System number.";
description
"No error, LSP is fine.";
}
enum unknown {
value "1";
description
"Unknown reason.";
}
enum limit {
value "2";
description
"Limit reached for PCE-controlled LSPs.";
}
enum pending {
value "3";
description
"Too many pending LSP update requests.";
}
enum unacceptable {
value "4";
description
"Unacceptable parameters.";
}
enum internal {
value "5";
description
"Internal error.";
}
enum admin {
value "6";
description
"LSP administratively brought down.";
}
enum preempted {
value "7";
description
"LSP preempted.";
}
enum rsvp {
value "8";
description
"RSVP signaling error.";
}
}
description
"The LSP Error Codes.";
}
typedef sync-state { }
type enumeration {
enum pending {
value "0";
description
"The state synchronization
has not started.";
}
enum ongoing {
value "1";
description
"The state synchronization
is ongoing.";
}
enum finished {
value "2";
description
"The state synchronization
is finished.";
}
}
description
"The LSP-DB state synchronization operational status.";
}
/*
* Features
*/
feature svec { typedef domain {
description type union {
"Support synchronized path computation."; type domain-ospf-area;
} type domain-isis-area;
type domain-as;
}
description
"The Domain Information";
}
feature gmpls { typedef operational-state {
description type enumeration {
"Support GMPLS."; enum down {
} value "0";
description
"not active.";
}
enum up {
value "1";
description
"signalled.";
}
enum active {
value "2";
description
"up and carrying traffic.";
}
enum going-down {
value "3";
description
"LSP is being torn down, resources are
being released.";
}
enum going-up {
value "4";
description
"LSP is being signalled.";
}
}
description
"The operational status of the LSP";
}
feature obj-fn { typedef lsp-error {
description type enumeration {
"Support OF as per RFC 5541."; enum no-error {
} value "0";
description
"No error, LSP is fine.";
}
enum unknown {
value "1";
description
"Unknown reason.";
}
enum limit {
value "2";
description
"Limit reached for PCE-controlled LSPs.";
}
enum pending {
value "3";
description
"Too many pending LSP update requests.";
}
enum unacceptable {
value "4";
description
"Unacceptable parameters.";
}
enum internal {
value "5";
description
"Internal error.";
}
enum admin {
value "6";
description
"LSP administratively brought down.";
}
enum preempted {
value "7";
description
"LSP preempted.";
}
enum rsvp {
value "8";
description
"RSVP signaling error.";
}
}
description
"The LSP Error Codes.";
}
feature gco { typedef sync-state {
description type enumeration {
"Support GCO as per RFC 5557."; enum pending {
} value "0";
description
"The state synchronization
has not started.";
}
enum ongoing {
value "1";
description
"The state synchronization
is ongoing.";
}
enum finished {
value "2";
description
"The state synchronization
is finished.";
}
}
description
"The LSP-DB state synchronization operational status.";
}
feature pathkey { typedef pst{
description type enumeration{
"Support pathkey as per RFC 5520."; enum rsvp-te{
} value "0";
description
"RSVP-TE signaling protocol";
}
enum sr{
value "1";
description
"Segment Routing Traffic Engineering";
}
}
description
"The Path Setup Type";
}
feature p2mp { typedef assoc-type{
description type enumeration{
"Support P2MP as per RFC 6006."; enum protection{
} value "1";
description
"Path Protection Association Type";
}
}
description
"The PCEP Association Type";
}
feature stateful { /*
description * Features
"Support stateful PCE."; */
}
/* feature svec {
* Groupings description
*/ "Support synchronized path computation.";
}
grouping pcep-entity-info{ feature gmpls {
description description
"This grouping defines the attributes for PCEP entity."; "Support GMPLS.";
leaf connect-timer { }
type uint32 {
range "1..65535";
}
units "seconds";
default 60;
description
"The time in seconds that the PCEP entity will wait
to establish a TCP connection with a peer. If a
TCP connection is not established within this time
then PCEP aborts the session setup attempt.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf connect-max-retry { feature obj-fn {
type uint32; description
default 5; "Support OF as per RFC 5541.";
description }
"The maximum number of times the system tries to
establish a TCP connection to a peer before the
session with the peer transitions to the idle
state.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf init-backoff-timer { feature gco {
type uint32 { description
range "1..65535"; "Support GCO as per RFC 5557.";
} }
units "seconds";
description
"The initial back-off time in seconds for retrying
a failed session setup attempt to a peer.
The back-off time increases for each failed feature pathkey {
session setup attempt, until a maximum back-off description
time is reached. The maximum back-off time is "Support pathkey as per RFC 5520.";
max-backoff-timer."; }
} feature p2mp {
description
"Support P2MP as per RFC 6006.";
}
leaf max-backoff-timer { feature stateful {
type uint32; description
units "seconds"; "Support stateful PCE.";
description }
"The maximum back-off time in seconds for retrying
a failed session setup attempt to a peer.
The back-off time increases for each failed session feature pce-initiated {
setup attempt, until this maximum value is reached. description
Session setup attempts then repeat periodically "Support PCE-Initiated LSP.";
without any further increase in back-off time."; }
}
leaf open-wait-timer {
type uint32 {
range "1..65535";
}
units "seconds";
default 60;
description
"The time in seconds that the PCEP entity will wait
to receive an Open message from a peer after the
TCP connection has come up.
If no Open message is received within this time then feature tls {
PCEP terminates the TCP connection and deletes the description
associated sessions."; "Support PCEP over TLS.";
reference }
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf keep-wait-timer { feature sr {
type uint32 { description
range "1..65535"; "Support Segement Routing for PCE.";
} }
units "seconds";
default 60;
description
"The time in seconds that the PCEP entity will wait
to receive a Keepalive or PCErr message from a peer
during session initialization after receiving an
Open message. If no Keepalive or PCErr message is
received within this time then PCEP terminates the
TCP connection and deletes the associated
sessions.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf keep-alive-timer { /*
type uint32 { * Groupings
range "0..255"; */
}
units "seconds";
default 30;
description
"The keep alive transmission timer that this PCEP
entity will propose in the initial OPEN message of
each session it is involved in. This is the
maximum time between two consecutive messages sent
to a peer. Zero means that the PCEP entity prefers
not to send Keepalives at all.
Note that the actual Keepalive transmission grouping pcep-entity-info{
intervals, in either direction of an active PCEP description
session, are determined by negotiation between the "This grouping defines the attributes for PCEP entity.";
peers as specified by RFC 5440, and so may differ leaf connect-timer {
from this configured value."; type uint32 {
reference range "1..65535";
"RFC 5440: Path Computation Element (PCE) }
Communication Protocol (PCEP)"; units "seconds";
} default 60;
description
"The time in seconds that the PCEP entity will wait
to establish a TCP connection with a peer. If a
TCP connection is not established within this time
then PCEP aborts the session setup attempt.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
leaf dead-timer { }
type uint32 {
range "0..255";
}
units "seconds";
must ". >= ../keep-alive-timer" {
error-message "The dead timer must be "
+ "larger than the keep alive timer";
description
"This value MUST be greater than
keep-alive-timer.";
} leaf connect-max-retry {
default 120; type uint32;
description default 5;
"The dead timer that this PCEP entity will propose description
in the initial OPEN message of each session it is "The maximum number of times the system tries to
involved in. This is the time after which a peer establish a TCP connection to a peer before the
should declare a session down if it does not session with the peer transitions to the idle
receive any PCEP messages. Zero suggests that the state.";
peer does not run a dead timer at all." ; reference
reference "RFC 5440: Path Computation Element (PCE)
"RFC 5440: Path Computation Element (PCE) Communication Protocol (PCEP)";
Communication Protocol (PCEP)"; }
}
leaf allow-negotiation{ leaf init-backoff-timer {
type boolean; type uint32 {
description range "1..65535";
"Whether the PCEP entity will permit negotiation of }
session parameters."; units "seconds";
} description
"The initial back-off time in seconds for retrying
a failed session setup attempt to a peer.
The back-off time increases for each failed
session setup attempt, until a maximum back-off
time is reached. The maximum back-off time is
max-backoff-timer.";
}
leaf max-keep-alive-timer{ leaf max-backoff-timer {
type uint32 { type uint32;
range "0..255"; units "seconds";
} description
units "seconds"; "The maximum back-off time in seconds for retrying
description a failed session setup attempt to a peer.
"In PCEP session parameter negotiation in seconds, The back-off time increases for each failed session
the maximum value that this PCEP entity will setup attempt, until this maximum value is reached.
accept from a peer for the interval between Session setup attempts then repeat periodically
Keepalive transmissions. Zero means that the PCEP without any further increase in back-off time.";
entity will allow no Keepalive transmission at }
all." ;
}
leaf max-dead-timer{ leaf open-wait-timer {
type uint32 { type uint32 {
range "0..255"; range "1..65535";
} }
units "seconds"; units "seconds";
description default 60;
"In PCEP session parameter negotiation in seconds, description
the maximum value that this PCEP entity will accept "The time in seconds that the PCEP entity will wait
from a peer for the Dead timer. Zero means that to receive an Open message from a peer after the
the PCEP entity will allow not running a Dead TCP connection has come up.
timer."; If no Open message is received within this time then
} PCEP terminates the TCP connection and deletes the
associated sessions.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf min-keep-alive-timer{ leaf keep-wait-timer {
type uint32 { type uint32 {
range "0..255"; range "1..65535";
} }
units "seconds"; units "seconds";
description default 60;
"In PCEP session parameter negotiation in seconds, description
the minimum value that this PCEP entity will "The time in seconds that the PCEP entity will wait
accept for the interval between Keepalive to receive a Keepalive or PCErr message from a peer
transmissions. Zero means that the PCEP entity during session initialization after receiving an
insists on no Keepalive transmission at all."; Open message. If no Keepalive or PCErr message is
} received within this time then PCEP terminates the
TCP connection and deletes the associated
sessions.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf min-dead-timer{ leaf keep-alive-timer {
type uint32 { type uint32 {
range "0..255"; range "0..255";
} }
units "seconds"; units "seconds";
description default 30;
"In PCEP session parameter negotiation in description
seconds, the minimum value that this PCEP entity "The keep alive transmission timer that this PCEP
will accept for the Dead timer. Zero means that entity will propose in the initial OPEN message of
the PCEP entity insists on not running a Dead each session it is involved in. This is the
timer."; maximum time between two consecutive messages sent
} to a peer. Zero means that the PCEP entity prefers
not to send Keepalives at all.
Note that the actual Keepalive transmission
intervals, in either direction of an active PCEP
session, are determined by negotiation between the
peers as specified by RFC 5440, and so may differ
from this configured value.";
leaf sync-timer{ reference
if-feature svec; "RFC 5440: Path Computation Element (PCE)
type uint32 { Communication Protocol (PCEP)";
range "0..65535"; }
}
units "seconds";
default 60;
description
"The value of SyncTimer in seconds is used in the
case of synchronized path computation request
using the SVEC object. Consider the case where a
PCReq message is received by a PCE that contains
the SVEC object referring to M synchronized path
computation requests. If after the expiration of
the SyncTimer all the M path computation requests
have not been, received a protocol error is
triggered and the PCE MUST cancel the whole set
of path computation requests.
The aim of the SyncTimer is to avoid the storage leaf dead-timer {
of unused synchronized requests should one of type uint32 {
them get lost for some reasons (for example, a range "0..255";
misbehaving PCC). }
units "seconds";
must ". >= ../keep-alive-timer" {
error-message "The dead timer must be "
+ "larger than the keep alive timer";
description
"This value MUST be greater than
keep-alive-timer.";
Zero means that the PCEP entity does not use the }
SyncTimer."; default 120;
reference description
"RFC 5440: Path Computation Element (PCE) "The dead timer that this PCEP entity will propose
Communication Protocol (PCEP)"; in the initial OPEN message of each session it is
} involved in. This is the time after which a peer
should declare a session down if it does not
receive any PCEP messages. Zero suggests that the
peer does not run a dead timer at all." ;
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
leaf request-timer{ leaf allow-negotiation{
type uint32 { type boolean;
range "1..65535"; description
} "Whether the PCEP entity will permit negotiation of
units "seconds"; session parameters.";
description }
"The maximum time that the PCEP entity will wait
for a response to a PCReq message.";
}
leaf max-sessions{ leaf max-keep-alive-timer{
type uint32; type uint32 {
description range "0..255";
"Maximum number of sessions involving this PCEP }
entity that can exist at any time."; units "seconds";
} description
"In PCEP session parameter negotiation in seconds,
the maximum value that this PCEP entity will
accept from a peer for the interval between
Keepalive transmissions. Zero means that the PCEP
entity will allow no Keepalive transmission at
all." ;
}
leaf max-unknown-reqs{ leaf max-dead-timer{
type uint32; type uint32 {
default 5; range "0..255";
description }
"The maximum number of unrecognized requests and units "seconds";
replies that any session on this PCEP entity is description
willing to accept per minute before terminating "In PCEP session parameter negotiation in seconds,
the session. the maximum value that this PCEP entity will accept
from a peer for the Dead timer. Zero means that
the PCEP entity will allow not running a Dead
timer.";
}
A PCRep message contains an unrecognized reply leaf min-keep-alive-timer{
if it contains an RP object whose request ID type uint32 {
does not correspond to any in-progress request range "0..255";
sent by this PCEP entity. }
units "seconds";
description
"In PCEP session parameter negotiation in seconds,
the minimum value that this PCEP entity will
accept for the interval between Keepalive
transmissions. Zero means that the PCEP entity
insists on no Keepalive transmission at all.";
}
A PCReq message contains an unrecognized request leaf min-dead-timer{
if it contains an RP object whose request ID is type uint32 {
zero."; range "0..255";
reference }
"RFC 5440: Path Computation Element (PCE) units "seconds";
Communication Protocol (PCEP)"; description
} "In PCEP session parameter negotiation in
seconds, the minimum value that this PCEP entity
will accept for the Dead timer. Zero means that
the PCEP entity insists on not running a Dead
timer.";
}
leaf max-unknown-msgs{ leaf sync-timer{
type uint32; if-feature svec;
default 5; type uint32 {
description range "0..65535";
"The maximum number of unknown messages that any }
session on this PCEP entity is willing to accept units "seconds";
per minute before terminating the session."; default 60;
reference description
"RFC 5440: Path Computation Element (PCE) "The value of SyncTimer in seconds is used in the
Communication Protocol (PCEP)"; case of synchronized path computation request
} using the SVEC object. Consider the case where a
PCReq message is received by a PCE that contains
the SVEC object referring to M synchronized path
computation requests. If after the expiration of
the SyncTimer all the M path computation requests
have not been, received a protocol error is
triggered and the PCE MUST cancel the whole set
of path computation requests.
The aim of the SyncTimer is to avoid the storage
of unused synchronized requests should one of
them get lost for some reasons (for example, a
misbehaving PCC).
Zero means that the PCEP entity does not use the
SyncTimer.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
}//pcep-entity-info leaf request-timer{
type uint32 {
range "1..65535";
}
units "seconds";
description
"The maximum time that the PCEP entity will wait
for a response to a PCReq message.";
}
grouping pce-scope{ leaf max-sessions{
description type uint32;
"This grouping defines PCE path computation scope description
information which maybe relevant to PCE selection. "Maximum number of sessions involving this PCEP
This information corresponds to PCE auto-discovery entity that can exist at any time.";
information."; }
reference
"RFC 5088: OSPF Protocol Extensions for Path
Computation Element (PCE)
Discovery
RFC 5089: IS-IS Protocol Extensions for Path
Computation Element (PCE)
Discovery";
leaf intra-area-scope{
type boolean;
default true;
description
"PCE can compute intra-area paths.";
}
leaf intra-area-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for intra-area TE LSP
computation.";
}
leaf inter-area-scope{
type boolean;
default false;
description
"PCE can compute inter-area paths.";
}
leaf inter-area-scope-default{
type boolean;
default false;
description
"PCE can act as a default PCE for inter-area
path computation.";
}
leaf inter-area-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for inter-area TE LSP
computation.";
}
leaf inter-as-scope{
type boolean;
default false;
description
"PCE can compute inter-AS paths.";
}
leaf inter-as-scope-default{
type boolean;
default false;
description
"PCE can act as a default PCE for inter-AS
path computation.";
}
leaf inter-as-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for inter-AS TE LSP
computation.";
}
leaf inter-layer-scope{
type boolean;
default false;
description
"PCE can compute inter-layer paths.";
}
leaf inter-layer-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for inter-layer TE LSP
computation.";
}
}//pce-scope
grouping domain{ leaf max-unknown-reqs{
description type uint32;
"This grouping specifies a Domain where the default 5;
PCEP speaker has topology visibility."; description
leaf domain-type{ "The maximum number of unrecognized requests and
type domain-type; replies that any session on this PCEP entity is
description willing to accept per minute before terminating
"The domain type."; the session.
} A PCRep message contains an unrecognized reply
leaf domain{ if it contains an RP object whose request ID
type domain; does not correspond to any in-progress request
description sent by this PCEP entity.
"The domain Information."; A PCReq message contains an unrecognized request
} if it contains an RP object whose request ID is
}//domain zero.";
reference
"RFC 5440: Path Computation Element (PCE)
Communication Protocol (PCEP)";
}
grouping capability{ leaf max-unknown-msgs{
description type uint32;
"This grouping specifies a capability default 5;
information of local PCEP entity. This maybe description
relevant to PCE selection as well. This "The maximum number of unknown messages that any
information corresponds to PCE auto-discovery session on this PCEP entity is willing to accept
information."; per minute before terminating the session.";
reference reference
"RFC 5088: OSPF Protocol Extensions for Path "RFC 5440: Path Computation Element (PCE)
Computation Element (PCE) Communication Protocol (PCEP)";
Discovery }
RFC 5089: IS-IS Protocol Extensions for Path
Computation Element (PCE)
Discovery";
leaf gmpls{
if-feature gmpls;
type boolean;
description
"Path computation with GMPLS link
constraints.";
}
leaf bi-dir{
type boolean;
description
"Bidirectional path computation.";
}
leaf diverse{
type boolean;
description
"Diverse path computation.";
}
leaf load-balance{
type boolean;
description
"Load-balanced path computation.";
}
leaf synchronize{
if-feature svec;
type boolean;
description
"Synchronized paths computation.";
}
leaf objective-function{
if-feature obj-fn;
type boolean;
description
"Support for multiple objective functions.";
}
leaf add-path-constraint{
type boolean;
description
"Support for additive path constraints (max
hop count, etc.).";
}
leaf prioritization{
type boolean;
description
"Support for request prioritization.";
}
leaf multi-request{
type boolean;
description
"Support for multiple requests per message.";
}
leaf gco{
if-feature gco;
type boolean;
description
"Support for Global Concurrent Optimization
(GCO).";
}
leaf p2mp{
if-feature p2mp;
type boolean;
description
"Support for P2MP path computation.";
}
container stateful{ }//pcep-entity-info
if-feature stateful;
description
"If stateful PCE feature is present";
leaf enabled{
type boolean;
description
"Enabled or Disabled";
}
leaf active{
type boolean;
description
"Support for active stateful PCE.";
}
leaf pce-initiated{
type boolean;
description
"Support for PCE-initiated LSP.";
}
}
}//capability grouping pce-scope{
description
"This grouping defines PCE path computation scope
information which maybe relevant to PCE selection.
This information corresponds to PCE auto-discovery
information.";
reference
"RFC 5088: OSPF Protocol Extensions for Path
Computation Element (PCE)
Discovery
RFC 5089: IS-IS Protocol Extensions for Path
Computation Element (PCE)
Discovery";
leaf intra-area-scope{
type boolean;
default true;
description
"PCE can compute intra-area paths.";
}
leaf intra-area-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for intra-area TE LSP
computation.";
}
leaf inter-area-scope{
type boolean;
default false;
description
"PCE can compute inter-area paths.";
}
leaf inter-area-scope-default{
type boolean;
default false;
description
"PCE can act as a default PCE for inter-area
path computation.";
}
leaf inter-area-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for inter-area TE LSP
computation.";
}
leaf inter-as-scope{
type boolean;
default false;
description
"PCE can compute inter-AS paths.";
}
leaf inter-as-scope-default{
type boolean;
default false;
description
"PCE can act as a default PCE for inter-AS
path computation.";
}
leaf inter-as-pref{
type uint8{
range "0..7";
}
description
"The PCE's preference for inter-AS TE LSP
computation.";
grouping info{ }
description leaf inter-layer-scope{
"This grouping specifies all information which type boolean;
maybe relevant to both PCC and PCE. default false;
This information corresponds to PCE auto-discovery description
information."; "PCE can compute inter-layer paths.";
container domain{ }
description leaf inter-layer-pref{
"The local domain for the PCEP entity"; type uint8{
list domain{ range "0..7";
key "domain-type domain"; }
description description
"The local domain."; "The PCE's preference for inter-layer TE LSP
uses domain{ computation.";
description }
"The local domain for the PCEP entity."; }//pce-scope
}
}
}
container capability{
description
"The PCEP entity capability";
uses capability{
description
"The PCEP entity supported
capabilities.";
}
}
}//info
grouping pce-info{ grouping domain{
description description
"This grouping specifies all PCE information "This grouping specifies a Domain where the
which maybe relevant to the PCE selection. PCEP speaker has topology visibility.";
This information corresponds to PCE auto-discovery leaf domain-type{
information."; type domain-type;
container scope{ description
description "The domain type.";
"The path computation scope"; }
uses pce-scope; leaf domain{
} type domain;
description
"The domain Information.";
}
}//domain
container neigh-domains{ grouping capability{
description description
"The list of neighbour PCE-Domain "This grouping specifies a capability
toward which a PCE can compute information of local PCEP entity. This maybe
paths"; relevant to PCE selection as well. This
list domain{ information corresponds to PCE auto-discovery
key "domain-type domain"; information.";
reference
"RFC 5088: OSPF Protocol Extensions for Path
Computation Element (PCE)
Discovery
RFC 5089: IS-IS Protocol Extensions for Path
Computation Element (PCE)
Discovery";
leaf gmpls{
if-feature gmpls;
type boolean;
description
"Path computation with GMPLS link
constraints.";
}
leaf bi-dir{
type boolean;
description
"Bidirectional path computation.";
}
leaf diverse{
type boolean;
description
"Diverse path computation.";
}
leaf load-balance{
type boolean;
description
"Load-balanced path computation.";
}
leaf synchronize{
if-feature svec;
type boolean;
description
"Synchronized paths computation.";
}
leaf objective-function{
if-feature obj-fn;
type boolean;
description
"Support for multiple objective functions.";
}
leaf add-path-constraint{
type boolean;
description
"Support for additive path constraints (max
hop count, etc.).";
}
leaf prioritization{
type boolean;
description
"Support for request prioritization.";
}
leaf multi-request{
type boolean;
description
"Support for multiple requests per message.";
description }
"The neighbour domain."; leaf gco{
uses domain{ if-feature gco;
description type boolean;
"The PCE neighbour domain."; description
} "Support for Global Concurrent Optimization
} (GCO).";
} }
}//pce-info leaf p2mp{
if-feature p2mp;
type boolean;
description
"Support for P2MP path computation.";
}
grouping pcep-stats{ container stateful{
description if-feature stateful;
"This grouping defines statistics for PCEP. It is used description
for both peer and current session."; "If stateful PCE feature is present";
leaf avg-rsp-time{ leaf enabled{
type uint32; type boolean;
units "milliseconds"; description
must "(/pcep-state/entity/peers/peer/role != 'pcc'" + "Enabled or Disabled";
" or " + }
"(/pcep-state/entity/peers/peer/role = 'pcc'" + leaf active{
" and avg-rsp-time = 0))" { type boolean;
error-message description
"Invalid average response time"; "Support for active stateful PCE.";
description }
"If role is pcc then this leaf is meaningless leaf pce-initiated{
and is set to zero."; if-feature pce-initiated;
} type boolean;
description description
"The average response time. "Support for PCE-initiated LSP.";
}
}
container sr{
if-feature sr;
description
"If segment routing is supported";
leaf enabled{
type boolean;
description
"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
If an average response time has not been grouping info{
calculated then this leaf has the value zero."; description
} "This grouping specifies all information which
maybe relevant to both PCC and PCE.
This information corresponds to PCE auto-discovery
information.";
container domain{
description
"The local domain for the PCEP entity";
list domain{
key "domain-type domain";
description
"The local domain.";
uses domain{
description
"The local domain for the PCEP entity.";
}
}
}
container capability{
description
"The PCEP entity capability";
uses capability{
description
"The PCEP entity supported
capabilities.";
}
}
}//info
leaf lwm-rsp-time{ grouping pce-info{
type uint32; description
units "milliseconds"; "This grouping specifies all PCE information
must "(/pcep-state/entity/peers/peer/role != 'pcc'" + which maybe relevant to the PCE selection.
" or " + This information corresponds to PCE auto-discovery
"(/pcep-state/entity/peers/peer/role = 'pcc'" + information.";
" and lwm-rsp-time = 0))" { container scope{
error-message description
"Invalid smallest (low-water mark) "The path computation scope";
response time"; uses pce-scope;
}
description container neigh-domains{
"If role is pcc then this leaf is meaningless description
and is set to zero."; "The list of neighbour PCE-Domain
} toward which a PCE can compute
description paths";
"The smallest (low-water mark) response time seen. list domain{
key "domain-type domain";
If no responses have been received then this description
leaf has the value zero."; "The neighbour domain.";
} uses domain{
description
"The PCE neighbour domain.";
}
}
}
}//pce-info
leaf hwm-rsp-time{ grouping pcep-stats{
type uint32; description
units "milliseconds"; "This grouping defines statistics for PCEP. It is used
must "(/pcep-state/entity/peers/peer/role != 'pcc'" + for both peer and current session.";
" or " + leaf avg-rsp-time{
"(/pcep-state/entity/peers/peer/role = 'pcc'" + type uint32;
" and hwm-rsp-time = 0))" { units "milliseconds";
error-message must "(/pcep-state/entity/peers/peer/role != 'pcc'" +
"Invalid greatest (high-water mark) " or " +
response time seen"; "(/pcep-state/entity/peers/peer/role = 'pcc'" +
description " and avg-rsp-time = 0))" {
"If role is pcc then this field is error-message
meaningless and is set to zero."; "Invalid average response time";
} description
description "If role is pcc then this leaf is meaningless
"The greatest (high-water mark) response time seen. and is set to zero.";
}
description
"The average response time.
If an average response time has not been
calculated then this leaf has the value zero.";
If no responses have been received then this object }
has the value zero.";
}
leaf num-pcreq-sent{ leaf lwm-rsp-time{
type yang:counter32; type uint32;
description units "milliseconds";
"The number of PCReq messages sent."; must "(/pcep-state/entity/peers/peer/role != 'pcc'" +
} " or " +
"(/pcep-state/entity/peers/peer/role = 'pcc'" +
" and lwm-rsp-time = 0))" {
error-message
"Invalid smallest (low-water mark)
response time";
description
"If role is pcc then this leaf is meaningless
and is set to zero.";
}
description
"The smallest (low-water mark) response time seen.
If no responses have been received then this
leaf has the value zero.";
}
leaf num-pcreq-rcvd{ leaf hwm-rsp-time{
type yang:counter32; type uint32;
description units "milliseconds";
"The number of PCReq messages received."; must "(/pcep-state/entity/peers/peer/role != 'pcc'" +
} " or " +
"(/pcep-state/entity/peers/peer/role = 'pcc'" +
" and hwm-rsp-time = 0))" {
error-message
"Invalid greatest (high-water mark)
response time seen";
description
"If role is pcc then this field is
meaningless and is set to zero.";
}
description
"The greatest (high-water mark) response time seen.
If no responses have been received then this object
has the value zero.";
}
leaf num-pcrep-sent{ leaf num-pcreq-sent{
type yang:counter32; type yang:counter32;
description description
"The number of PCRep messages sent."; "The number of PCReq messages sent.";
}
leaf num-pcreq-rcvd{
type yang:counter32;
description
"The number of PCReq messages received.";
}
} leaf num-pcrep-sent{
type yang:counter32;
description
"The number of PCRep messages sent.";
}
leaf num-pcrep-rcvd{ leaf num-pcrep-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of PCRep messages received."; "The number of PCRep messages received.";
} }
leaf num-pcerr-sent{ leaf num-pcerr-sent{
type yang:counter32; type yang:counter32;
description description
"The number of PCErr messages sent."; "The number of PCErr messages sent.";
} }
leaf num-pcerr-rcvd{ leaf num-pcerr-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of PCErr messages received."; "The number of PCErr messages received.";
} }
leaf num-pcntf-sent{ leaf num-pcntf-sent{
type yang:counter32; type yang:counter32;
description description
"The number of PCNtf messages sent."; "The number of PCNtf messages sent.";
} }
leaf num-pcntf-rcvd{ leaf num-pcntf-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of PCNtf messages received."; "The number of PCNtf messages received.";
} }
leaf num-keepalive-sent{ leaf num-keepalive-sent{
type yang:counter32; type yang:counter32;
description description
"The number of Keepalive messages sent."; "The number of Keepalive messages sent.";
} }
leaf num-keepalive-rcvd{
type yang:counter32;
description
"The number of Keepalive messages received.";
}
leaf num-keepalive-rcvd{ leaf num-unknown-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of Keepalive messages received."; "The number of unknown messages received.";
} }
leaf num-unknown-rcvd{ leaf num-corrupt-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of unknown messages received."; "The number of corrupted PCEP message received.";
}
} leaf num-req-sent{
type yang:counter32;
description
"The number of requests sent. A request corresponds
1:1 with an RP object in a PCReq message. This might
be greater than num-pcreq-sent because multiple
requests can be batched into a single PCReq
message.";
}
leaf num-corrupt-rcvd{ leaf num-req-sent-pend-rep{
type yang:counter32; type yang:counter32;
description description
"The number of corrupted PCEP message received."; "The number of requests that have been sent for
} which a response is still pending.";
}
leaf num-req-sent{ leaf num-req-sent-ero-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of requests sent. A request corresponds "The number of requests that have been sent for
1:1 with an RP object in a PCReq message. This might which a response with an ERO object was received.
be greater than num-pcreq-sent because multiple Such responses indicate that a path was
requests can be batched into a single PCReq successfully computed by the peer.";
message."; }
}
leaf num-req-sent-pend-rep{ 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 is still pending."; which a response with a NO-PATH object was
} received. Such responses indicate that the peer
could not find a path to satisfy the
request.";
}
leaf num-req-sent-ero-rcvd{ leaf num-req-sent-cancel-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of requests that have been sent for "The number of requests that were cancelled with
which a response with an ERO object was received. a PCNtf message.
Such responses indicate that a path was This might be different than num-pcntf-rcvd because
successfully computed by the peer."; not all PCNtf messages are used to cancel requests,
} and a single PCNtf message can cancel multiple
requests.";
}
leaf num-req-sent-nopath-rcvd{ leaf num-req-sent-error-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of requests that have been sent for "The number of requests that were rejected with a
which a response with a NO-PATH object was PCErr message.
received. Such responses indicate that the peer This might be different than num-pcerr-rcvd because
could not find a path to satisfy the not all PCErr messages are used to reject requests,
request."; and a single PCErr message can reject multiple
} requests.";
}
leaf num-req-sent-cancel-rcvd{ leaf num-req-sent-timeout{
type yang:counter32; type yang:counter32;
description description
"The number of requests that were cancelled with "The number of requests that have been sent to a peer
a PCNtf message. and have been abandoned because the peer has taken too
long to respond to them.";
}
This might be different than num-pcntf-rcvd because leaf num-req-sent-cancel-sent{
not all PCNtf messages are used to cancel requests, type yang:counter32;
and a single PCNtf message can cancel multiple description
requests."; "The number of requests that were sent to the peer and
} explicitly cancelled by the local PCEP entity sending
a PCNtf.";
}
leaf num-req-sent-error-rcvd{ leaf num-req-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of requests that were rejected with a "The number of requests received. A request
PCErr message. corresponds 1:1 with an RP object in a PCReq
message.
This might be greater than num-pcreq-rcvd because
multiple requests can be batched into a single
PCReq message.";
}
This might be different than num-pcerr-rcvd because leaf num-req-rcvd-pend-rep{
not all PCErr messages are used to reject requests, type yang:counter32;
and a single PCErr message can reject multiple description
requests."; "The number of requests that have been received for
} which a response is still pending.";
}
leaf num-req-sent-timeout{ leaf num-req-rcvd-ero-sent{
type yang:counter32; type yang:counter32;
description description
"The number of requests that have been sent to a peer "The number of requests that have been received for
and have been abandoned because the peer has taken too which a response with an ERO object was sent. Such
long to respond to them."; responses indicate that a path was successfully
} computed by the local PCEP entity.";
}
leaf num-req-sent-cancel-sent{ leaf num-req-rcvd-nopath-sent{
type yang:counter32; type yang:counter32;
description description
"The number of requests that were sent to the peer and "The number of requests that have been received for
explicitly cancelled by the local PCEP entity sending which a response with a NO-PATH object was sent. Such
a PCNtf."; responses indicate that the local PCEP entity could
} not find a path to satisfy the request.";
}
leaf num-req-rcvd{ leaf num-req-rcvd-cancel-sent{
type yang:counter32; type yang:counter32;
description description
"The number of requests received. A request "The number of requests received that were cancelled
corresponds 1:1 with an RP object in a PCReq by the local PCEP entity sending a PCNtf message.
message. This might be different than num-pcntf-sent because
not all PCNtf messages are used to cancel requests,
and a single PCNtf message can cancel multiple
requests.";
}
This might be greater than num-pcreq-rcvd because leaf num-req-rcvd-error-sent{
multiple requests can be batched into a single type yang:counter32;
PCReq message."; description
} "The number of requests received that were cancelled
leaf num-req-rcvd-pend-rep{ by the local PCEP entity sending a PCErr message.
type yang:counter32;
description
"The number of requests that have been received for
which a response is still pending.";
}
leaf num-req-rcvd-ero-sent{ This might be different than num-pcerr-sent because
type yang:counter32; not all PCErr messages are used to cancel requests,
description and a single PCErr message can cancel multiple
"The number of requests that have been received for requests.";
which a response with an ERO object was sent. Such }
responses indicate that a path was successfully
computed by the local PCEP entity.";
}
leaf num-req-rcvd-nopath-sent{ leaf num-req-rcvd-cancel-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of requests that have been received for "The number of requests that were received from the
which a response with a NO-PATH object was sent. Such peer and explicitly cancelled by the peer sending
responses indicate that the local PCEP entity could a PCNtf.";
not find a path to satisfy the request."; }
}
leaf num-req-rcvd-cancel-sent{ leaf num-rep-rcvd-unknown{
type yang:counter32; type yang:counter32;
description description
"The number of requests received that were cancelled "The number of responses to unknown requests
by the local PCEP entity sending a PCNtf message. received. A response to an unknown request is a
response whose RP object does not contain the
request ID of any request that is currently
outstanding on the session.";
}
This might be different than num-pcntf-sent because leaf num-req-rcvd-unknown{
not all PCNtf messages are used to cancel requests, type yang:counter32;
and a single PCNtf message can cancel multiple description
requests."; "The number of unknown requests that have been
} received. An unknown request is a request
whose RP object contains a request ID of
zero.";
}
leaf num-req-rcvd-error-sent{ container svec{
type yang:counter32; if-feature svec;
description description
"The number of requests received that were cancelled "If synchronized path computation is supported";
by the local PCEP entity sending a PCErr message. leaf num-svec-sent{
type yang:counter32;
description
"The number of SVEC objects sent in PCReq messages.
An SVEC object represents a set of synchronized
requests.";
}
This might be different than num-pcerr-sent because leaf num-svec-req-sent{
not all PCErr messages are used to cancel requests, type yang:counter32;
and a single PCErr message can cancel multiple description
requests."; "The number of requests sent that appeared in one
} or more SVEC objects.";
leaf num-req-rcvd-cancel-rcvd{ }
type yang:counter32;
description
"The number of requests that were received from the
peer and explicitly cancelled by the peer sending
a PCNtf.";
}
leaf num-rep-rcvd-unknown{ leaf num-svec-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of responses to unknown requests "The number of SVEC objects received in PCReq
received. A response to an unknown request is a messages. An SVEC object represents a set of
response whose RP object does not contain the synchronized requests.";
request ID of any request that is currently }
outstanding on the session.";
}
leaf num-req-rcvd-unknown{ leaf num-svec-req-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of unknown requests that have been "The number of requests received that appeared
received. An unknown request is a request in one or more SVEC objects.";
whose RP object contains a request ID of }
zero."; }
} container stateful{
if-feature stateful;
description
"Stateful PCE related statistics";
leaf num-pcrpt-sent{
type yang:counter32;
description
"The number of PCRpt messages sent.";
}
container svec{ leaf num-pcrpt-rcvd{
if-feature svec; type yang:counter32;
description description
"If synchronized path computation is supported"; "The number of PCRpt messages received.";
leaf num-svec-sent{ }
type yang:counter32;
description
"The number of SVEC objects sent in PCReq messages.
An SVEC object represents a set of synchronized
requests.";
}
leaf num-svec-req-sent{ leaf num-pcupd-sent{
type yang:counter32; type yang:counter32;
description description
"The number of requests sent that appeared in one "The number of PCUpd messages sent.";
or more SVEC objects."; }
}
leaf num-svec-rcvd{ leaf num-pcupd-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of SVEC objects received in PCReq "The number of PCUpd messages received.";
messages. An SVEC object represents a set of }
synchronized requests.";
}
leaf num-svec-req-rcvd{ leaf num-rpt-sent{
type yang:counter32; type yang:counter32;
description description
"The number of requests received that appeared "The number of LSP Reports sent. A LSP report
in one or more SVEC objects."; corresponds 1:1 with an LSP object in a PCRpt
} message. This might be greater than
} num-pcrpt-sent because multiple reports can
container stateful{ be batched into a single PCRpt message.";
if-feature stateful; }
description
"Stateful PCE related statistics";
leaf num-pcrpt-sent{
type yang:counter32;
description
"The number of PCRpt messages sent.";
}
leaf num-pcrpt-rcvd{ leaf num-rpt-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of PCRpt messages received."; "The number of LSP Reports received. A LSP report
} corresponds 1:1 with an LSP object in a PCRpt
message.
This might be greater than num-pcrpt-rcvd because
multiple reports can be batched into a single
PCRpt message.";
}
leaf num-pcupd-sent{ leaf num-rpt-rcvd-error-sent{
type yang:counter32; type yang:counter32;
description description
"The number of PCUpd messages sent."; "The number of reports of LSPs received that were
} responded by the local PCEP entity by sending a
PCErr message.";
}
leaf num-pcupd-rcvd{ leaf num-upd-sent{
type yang:counter32; type yang:counter32;
description description
"The number of PCUpd messages received."; "The number of LSP updates sent. A LSP update
} corresponds 1:1 with an LSP object in a PCUpd
message. This might be greater than
num-pcupd-sent because multiple updates can
be batched into a single PCUpd message.";
}
leaf num-rpt-sent{ leaf num-upd-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of LSP Reports sent. A LSP report "The number of LSP Updates received. A LSP update
corresponds 1:1 with an LSP object in a PCRpt corresponds 1:1 with an LSP object in a PCUpd
message. This might be greater than message.
num-pcrpt-sent because multiple reports can This might be greater than num-pcupd-rcvd because
be batched into a single PCRpt message."; multiple updates can be batched into a single
} PCUpd message.";
}
leaf num-upd-rcvd-unknown{
type yang:counter32;
description
"The number of updates to unknown LSPs
received. An update to an unknown LSP is a
update whose LSP object does not contain the
PLSP-ID of any LSP that is currently
present.";
}
leaf num-rpt-rcvd{ leaf num-upd-rcvd-undelegated{
type yang:counter32; type yang:counter32;
description description
"The number of LSP Reports received. A LSP report "The number of updates to not delegated LSPs
corresponds 1:1 with an LSP object in a PCRpt received. An update to an undelegated LSP is a
message. update whose LSP object does not contain the
PLSP-ID of any LSP that is currently
delegated to current PCEP session.";
}
This might be greater than num-pcrpt-rcvd because leaf num-upd-rcvd-error-sent{
multiple reports can be batched into a single type yang:counter32;
PCRpt message."; description
} "The number of updates to LSPs received that were
responded by the local PCEP entity by sending a
PCErr message.";
}
container initiation {
if-feature pce-initiated;
description
"PCE-Initiated related statistics";
leaf num-pcinitiate-sent{
type yang:counter32;
description
"The number of PCInitiate messages sent.";
}
leaf num-rpt-rcvd-error-sent{ leaf num-pcinitiate-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of reports of LSPs received that were "The number of PCInitiate messages received.";
responded by the local PCEP entity by sending a }
PCErr message.";
}
leaf num-upd-sent{ leaf num-initiate-sent{
type yang:counter32; type yang:counter32;
description description
"The number of LSP updates sent. A LSP update "The number of LSP Initiation sent via PCE.
corresponds 1:1 with an LSP object in a PCUpd A LSP initiation corresponds 1:1 with an LSP
message. This might be greater than object in a PCInitiate message. This might be
num-pcupd-sent because multiple updates can greater than num-pcinitiate-sent because
be batched into a single PCUpd message."; multiple initiations can be batched into a
} single PCInitiate message.";
}
leaf num-upd-rcvd{ leaf num-initiate-rcvd{
type yang:counter32; type yang:counter32;
description description
"The number of LSP Updates received. A LSP update "The number of LSP Initiation received from
corresponds 1:1 with an LSP object in a PCUpd PCE. A LSP initiation corresponds 1:1 with
message. an LSP object in a PCInitiate message. This
might be greater than num-pcinitiate-rcvd
because multiple initiations can be batched
into a single PCInitiate message.";
}
This might be greater than num-pcupd-rcvd because leaf num-initiate-rcvd-error-sent{
multiple updates can be batched into a single type yang:counter32;
PCUpd message."; description
} "The number of initiations of LSPs received
that were responded by the local PCEP entity
by sending a PCErr message.";
}
}
}
}//pcep-stats
leaf num-upd-rcvd-unknown{ grouping lsp-state{
type yang:counter32; description
description "This grouping defines the attributes for LSP in LSP-DB.
"The number of updates to unknown LSPs These are the attributes specifically from the PCEP
received. An update to an unknown LSP is a perspective";
update whose LSP object does not contain the leaf plsp-id{
PLSP-ID of any LSP that is currently type uint32{
present."; range "1..1048575";
} }
description
"A PCEP-specific identifier for the LSP. A PCC
creates a unique PLSP-ID for each LSP that is
constant for the lifetime of a PCEP session.
PLSP-ID is 20 bits with 0 and 0xFFFFF are
reserved";
}
leaf pcc-id{
type inet:ip-address;
description
"The local internet address of the PCC, that
generated the PLSP-ID.";
}
leaf num-upd-rcvd-undelegated{ container lsp-ref{
type yang:counter32; description
description "reference to ietf-te lsp state";
"The number of updates to not delegated LSPs
received. An update to an undelegated LSP is a
update whose LSP object does not contain the
PLSP-ID of any LSP that is currently
delegated to current PCEP session.";
}
leaf num-upd-rcvd-error-sent{ leaf source {
type yang:counter32; type leafref {
description path "/te:te/te:lsps-state/te:lsp/te:source";
"The number of updates to LSPs received that were }
responded by the local PCEP entity by sending a description
PCErr message."; "Tunnel sender address extracted from
} SENDER_TEMPLATE object";
} reference "RFC3209";
}//pcep-stats }
leaf destination {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:"
+ "destination";
}
description
"Tunnel endpoint address extracted from
SESSION object";
reference "RFC3209";
}
leaf tunnel-id {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:tunnel-id";
}
description
"Tunnel identifier used in the SESSION
that remains constant over the life
of the tunnel.";
reference "RFC3209";
}
leaf lsp-id {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:lsp-id";
}
description
"Identifier used in the SENDER_TEMPLATE
and the FILTER_SPEC that can be changed
to allow a sender to share resources with
itself.";
reference "RFC3209";
}
leaf extended-tunnel-id {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:"
+ "extended-tunnel-id";
}
description
"Extended Tunnel ID of the LSP.";
reference "RFC3209";
}
leaf type {
type leafref {
path "/te:te/te:lsps-state/te:lsp/te:type";
}
description "LSP type P2P or P2MP";
}
}
grouping lsp-state{ leaf admin-state{
description type boolean;
"This grouping defines the attributes for LSP in LSP-DB. description
These are the attributes specifically from the PCEP "The desired operational state";
perspective"; }
leaf plsp-id{ leaf operational-state{
type uint32{ type operational-state;
range "1..1048575"; description
} "The operational status of the LSP";
description }
"A PCEP-specific identifier for the LSP. A PCC container delegated{
creates a unique PLSP-ID for each LSP that is description
constant for the lifetime of a PCEP session. "The delegation related parameters";
PLSP-ID is 20 bits with 0 and 0xFFFFF are leaf enabled{
reserved"; type boolean;
} description
leaf pcc-id{ "LSP is delegated or not";
type inet:ip-address; }
description leaf pce{
"The local internet address of the PCC, that type leafref {
generated the PLSP-ID."; path "/pcep-state/entity/peers/peer/addr";
}
must "((../enabled == true)" +
" and " +
"((../../role == 'pcc')" +
" or " +
"(../../role == 'pcc-and-pce')))"
{
error-message
"The PCEP entity must be PCC
and the LSP be delegated";
description
"When PCEP entity is PCC for
delegated LSP";
}
description
"The reference to the PCE peer to
which LSP is delegated";
}
leaf srp-id{
type uint32;
description
"The last SRP-ID-number associated with this
LSP.";
}
}
container initiation {
if-feature pce-initiated;
description
"The PCE initiation related parameters";
leaf enabled{
type boolean;
description
"LSP is PCE-initiated or not";
}
leaf pce{
type leafref {
path "/pcep-state/entity/peers/peer/addr";
}
must "(../enabled == true)"
{
error-message
"The LSP must be PCE-Initiated";
description
"When the LSP must be PCE-Initiated";
}
description
"The reference to the PCE
that initiated this LSP";
}
}
leaf symbolic-path-name{
type string;
description
"The symbolic path name associated with the LSP.";
}
leaf last-error{
type lsp-error;
description
"The last error for the LSP.";
} }
leaf pst{
type pst;
default "rsvp-te";
description
"The Path Setup Type";
leaf admin-state{ }
type boolean;
description
"The desired operational state";
}
leaf operational-state{
type operational-state;
description
"The operational status of the LSP";
}
container delegated{
description
"The delegation related parameters";
leaf enabled{
type boolean;
description
"LSP is delegated or not";
}
leaf pce{
type leafref {
path "/pcep-state/entity/peers/peer/addr";
}
must "((../enabled == true)" +
" and " +
"((../../role == 'pcc')" +
" or " +
"(../../role == 'pcc-and-pce')))"
{
error-message
"The PCEP entity must be PCC
and the LSP be delegated";
description
"When PCEP entity is PCC for
delegated LSP";
}
description
"The reference to the PCE peer to
which LSP is delegated";
}
leaf srp-id{
type uint32;
description
"The last SRP-ID-number associated with this
LSP.";
}
}
leaf symbolic-path-name{
type string;
description
"The symbolic path name associated with the LSP.";
}
leaf last-error{
type lsp-error;
description
"The last error for the LSP.";
}
}//lsp-state
grouping notification-instance-hdr { }//lsp-state
description
"This group describes common instance specific data
for notifications.";
leaf peer-addr { grouping notification-instance-hdr {
type leafref { description
path "/pcep-state/entity/peers/peer/addr"; "This group describes common instance specific data
} for notifications.";
description
"Reference to peer address";
}
}// notification-instance-hdr leaf peer-addr {
type leafref {
path "/pcep-state/entity/peers/peer/addr";
}
description
"Reference to peer address";
}
grouping notification-session-hdr { }// notification-instance-hdr
description
"This group describes common session instance specific
data for notifications.";
leaf session-initiator { grouping notification-session-hdr {
type leafref { description
path "/pcep-state/entity/peers/peer/sessions/" + "This group describes common session instance specific
"session/initiator"; data for notifications.";
}
description
"Reference to pcep session initiator leaf";
}
}// notification-session-hdr
grouping stateful-pce-parameter { leaf session-initiator {
description type leafref {
"This group describes stateful PCE specific path "/pcep-state/entity/peers/peer/sessions/" +
parameters."; "session/initiator";
leaf state-timeout{ }
type uint32; description
units "seconds"; "Reference to pcep session initiator leaf";
description }
"When a PCEP session is terminated, a PCC }// notification-session-hdr
waits for this time period before flushing
LSP state associated with that PCEP session
and reverting to operator-defined default
parameters or behaviours.";
}
leaf redelegation-timeout{
type uint32;
units "seconds";
must "((../role == 'pcc')" +
" or " +
"(../role == 'pcc-and-pce'))"
{
error-message "The PCEP entity must be PCC";
description
"When PCEP entity is PCC";
}
description
"When a PCEP session is terminated, a PCC
waits for this time period before revoking
LSP delegation to a PCE and attempting to
redelegate LSPs associated with the
terminated PCEP session to an alternate
PCE.";
}
leaf rpt-non-pcep-lsp{
type boolean;
must "((../role == 'pcc')" +
" or " +
"(../role == 'pcc-and-pce'))"
{
error-message "The PCEP entity must be PCC";
description
"When PCEP entity is PCC";
}
description
"If set, a PCC reports LSPs that are not
controlled by any PCE (for example, LSPs
that are statically configured at the
PCC). ";
}
} grouping stateful-pce-parameter {
description
"This group describes stateful PCE specific
parameters.";
leaf state-timeout{
type uint32;
units "seconds";
description
"When a PCEP session is terminated, a PCC
waits for this time period before flushing
LSP state associated with that PCEP session
and reverting to operator-defined default
parameters or behaviours.";
}
leaf redelegation-timeout{
type uint32;
units "seconds";
must "((../role == 'pcc')" +
" or " +
"(../role == 'pcc-and-pce'))"
{
error-message "The PCEP entity must be PCC";
description
"When PCEP entity is PCC";
}
description
"When a PCEP session is terminated, a PCC
waits for this time period before revoking
LSP delegation to a PCE and attempting to
redelegate LSPs associated with the
terminated PCEP session to an alternate
PCE.";
}
leaf rpt-non-pcep-lsp{
type boolean;
must "((../role == 'pcc')" +
" or " +
"(../role == 'pcc-and-pce'))"
{
error-message "The PCEP entity must be PCC";
description
"When PCEP entity is PCC";
}
description
"If set, a PCC reports LSPs that are not
controlled by any PCE (for example, LSPs
that are statically configured at the
PCC). ";
}
/* }
* Configuration data nodes
*/
container pcep{
description grouping authentication {
"Parameters for list of configured PCEP entities description "Authentication Information";
on the device."; choice auth-type-selection {
description
"Options for expressing authentication setting.";
case auth-key-chain {
leaf key-chain {
type key-chain:key-chain-ref;
description
"key-chain name.";
}
}
case auth-key {
leaf key {
type string;
description
"Key string in ASCII format.";
}
container crypto-algorithm {
uses key-chain:crypto-algorithm-types;
description
"Cryptographic algorithm associated
with key.";
}
}
case auth-tls {
if-feature tls;
container tls {
description
"TLS related information - TBD";
}
}
}
}
container entity { grouping association {
description
"Generic Association parameters";
leaf type {
type "assoc-type";
description
"The PCEP association type";
}
leaf id {
type uint16;
description
"PCEP Association ID";
}
leaf source {
type inet:ip-address;
description
"PCEP Association Source.";
}
leaf global-source {
type uint32;
description
"PCEP Association Global
Source.";
}
leaf extended-id{
type string;
description
"Additional information to
support unique identification.";
}
}
grouping association-ref {
description
"Generic Association parameters";
leaf id {
type leafref {
path "/pcep-state/entity/lsp-db/"
+ "association-list/id";
}
description
"PCEP Association ID";
}
leaf source {
type leafref {
path "/pcep-state/entity/lsp-db/"
+ "association-list/source";
}
description
"PCEP Association Source.";
}
leaf global-source {
type leafref {
path "/pcep-state/entity/lsp-db/"
+ "association-list/global-source";
}
description
"PCEP Association Global
Source.";
}
leaf extended-id{
type leafref {
path "/pcep-state/entity/lsp-db/"
+ "association-list/extended-id";
}
description
"Additional information to
support unique identification.";
}
}
/*
* Configuration data nodes
*/
container pcep{
description presence
"The configured PCEP entity on the device."; "The PCEP is enabled";
leaf addr { description
type inet:ip-address; "Parameters for list of configured PCEP entities
mandatory true; on the device.";
description
"The local Internet address of this PCEP
entity.
If operating as a PCE server, the PCEP container entity {
entity listens on this address.
If operating as a PCC, the PCEP entity description
binds outgoing TCP connections to this "The configured PCEP entity on the device.";
address.
It is possible for the PCEP entity to leaf addr {
operate both as a PCC and a PCE Server, in type inet:ip-address;
which case it uses this address both to mandatory true;
listen for incoming TCP connections and to description
bind outgoing TCP connections."; "The local Internet address of this PCEP
} entity.
If operating as a PCE server, the PCEP
entity listens on this address.
If operating as a PCC, the PCEP entity
binds outgoing TCP connections to this
address.
It is possible for the PCEP entity to
operate both as a PCC and a PCE Server, in
which case it uses this address both to
listen for incoming TCP connections and to
bind outgoing TCP connections.";
}
leaf enabled { leaf enabled {
type boolean; type boolean;
default true; default true;
description description
"The administrative status of this PCEP "The administrative status of this PCEP
Entity."; Entity.";
} }
leaf role {
type pcep-role;
mandatory true;
description
"The role that this entity can play.
Takes one of the following values.
- unknown(0): this PCEP Entity role is not
known.
- pcc(1): this PCEP Entity is a PCC.
- pce(2): this PCEP Entity is a PCE.
- pcc-and-pce(3): this PCEP Entity is both
a PCC and a PCE.";
}
leaf role { leaf description {
type pcep-role; type string;
mandatory true; description
description "Description of the PCEP entity configured
"The role that this entity can play. by the user";
Takes one of the following values. }
- unknown(0): this PCEP Entity role is not
known.
- pcc(1): this PCEP Entity is a PCC.
- pce(2): this PCEP Entity is a PCE.
- pcc-and-pce(3): this PCEP Entity is both
a PCC and a PCE.";
}
leaf description { uses info {
type string; description
description "Local PCEP entity information";
"Description of the PCEP entity configured }
by the user";
}
uses info { container pce-info {
description must "((../role == 'pce')" +
"Local PCEP entity information"; " or " +
} "(../role == 'pcc-and-pce'))"
{
error-message "The PCEP entity must be PCE";
description
"When PCEP entity is PCE";
}
uses pce-info {
description
"Local PCE information";
}
uses authentication {
description
"Local PCE authentication information";
}
container pce-info { description
must "((../role == 'pce')" + "The Local PCE Entity PCE information";
" or " +
"(../role == 'pcc-and-pce'))"
{
error-message "The PCEP entity must be PCE";
description
"When PCEP entity is PCE";
}
uses pce-info {
description
"Local PCE information";
}
description
"The Local PCE Entity PCE information";
}
uses pcep-entity-info { }
description
"The configuration related to the PCEP
entity.";
}
leaf pcep-notification-max-rate { uses pcep-entity-info {
type uint32; description
mandatory true; "The configuration related to the PCEP
description entity.";
"This variable indicates the maximum number of }
notifications issued per second. If events occur
more rapidly, the implementation may simply fail
to emit these notifications during that period,
or may queue them until an appropriate time. A
value of 0 means no notifications are emitted
and all should be discarded (that is, not
queued).";
}
container stateful-parameter{ leaf pcep-notification-max-rate {
if-feature stateful; type uint32;
must "(../info/capability/stateful/active == true)" mandatory true;
{ description
error-message "This variable indicates the maximum number of
"The Active Stateful PCE must be enabled"; notifications issued per second. If events occur
description more rapidly, the implementation may simply fail
"When PCEP entity is active stateful to emit these notifications during that period,
enabled"; or may queue them until an appropriate time. A
} value of 0 means no notifications are emitted
uses stateful-pce-parameter; and all should be discarded (that is, not
queued).";
}
description container stateful-parameter{
"The configured stateful parameters"; if-feature stateful;
} must "(../info/capability/stateful/active == true)"
{
error-message
"The Active Stateful PCE must be enabled";
description
"When PCEP entity is active stateful
enabled";
}
uses stateful-pce-parameter;
container peers{ description
must "((../role == 'pcc')" + "The configured stateful parameters";
" or " + }
"(../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 list of configured peers for the
entity (remote PCE)";
list peer{
key "addr";
description container peers{
"The peer configured for the entity. must "((../role == 'pcc')" +
(remote PCE)"; " or " +
"(../role == 'pcc-and-pce'))"
{
error-message
"The PCEP entity must be PCC";
leaf addr { description
type inet:ip-address; "When PCEP entity is PCC, as remote
description PCE peers are configured.";
"The local Internet address of this }
PCEP peer."; description
} "The list of configured peers for the
entity (remote PCE)";
list peer{
key "addr";
leaf description { description
type string; "The peer configured for the entity.
description (remote PCE)";
"Description of the PCEP peer
configured by the user";
}
uses info {
description
"PCE Peer information";
}
uses pce-info {
description
"PCE Peer information";
}
leaf delegation-pref{ leaf addr {
if-feature stateful; type inet:ip-address;
type uint8{ description
range "0..7"; "The local Internet address of this
} PCEP peer.";
must "(../../info/capability/stateful/active" }
+ "== true)"
{
error-message
"The Active Stateful PCE must be
enabled";
description
"When PCEP entity is active stateful
enabled";
}
description
"The PCE peer delegation preference.";
}
}//peer
}//peers
}//entity
}//pcep
/* leaf description {
* Operational data nodes type string;
*/ description
"Description of the PCEP peer
configured by the user";
}
uses info {
description
"PCE Peer information";
}
uses pce-info {
description
"PCE Peer information";
}
container pcep-state{ leaf delegation-pref{
config false; if-feature stateful;
description type uint8{
"The list of operational PCEP entities on the range "0..7";
device."; }
must "(../../info/capability/stateful/active"
+ "== true)"
{
error-message
"The Active Stateful PCE must be
enabled";
description
"When PCEP entity is active stateful
enabled";
}
description
"The PCE peer delegation preference.";
}
uses authentication {
description
"PCE Peer authentication";
}
}//peer
}//peers
}//entity
}//pcep
container entity{ /*
description * Operational data nodes
"The operational PCEP entity on the device."; */
leaf addr { container pcep-state{
type inet:ip-address; config false;
description description
"The local Internet address of this PCEP "The list of operational PCEP entities on the
entity. device.";
If operating as a PCE server, the PCEP container entity{
entity listens on this address. description
"The operational PCEP entity on the device.";
If operating as a PCC, the PCEP entity leaf addr {
binds outgoing TCP connections to this type inet:ip-address;
address. description
"The local Internet address of this PCEP
entity.
If operating as a PCE server, the PCEP
entity listens on this address.
If operating as a PCC, the PCEP entity
binds outgoing TCP connections to this
address.
It is possible for the PCEP entity to
operate both as a PCC and a PCE Server, in
which case it uses this address both to
listen for incoming TCP connections and to
bind outgoing TCP connections.";
}
It is possible for the PCEP entity to leaf index{
operate both as a PCC and a PCE Server, in type uint32;
which case it uses this address both to description
listen for incoming TCP connections and to "The index of the operational PECP
bind outgoing TCP connections."; entity";
} }
leaf index{ leaf admin-status {
type uint32; type pcep-admin-status;
description description
"The index of the operational PECP "The administrative status of this PCEP Entity.
entity"; This is the desired operational status as
} currently set by an operator or by default in
the implementation. The value of enabled
represents the current status of an attempt
to reach this desired status.";
}
leaf admin-status { leaf oper-status {
type pcep-admin-status; type pcep-admin-status;
description description
"The administrative status of this PCEP Entity. "The operational status of the PCEP entity.
This is the desired operational status as Takes one of the following values.
currently set by an operator or by default in - oper-status-up(1): the PCEP entity is
the implementation. The value of enabled active.
represents the current status of an attempt - oper-status-down(2): the PCEP entity is
to reach this desired status."; inactive.
} - oper-status-going-up(3): the PCEP entity is
leaf oper-status { activating.
type pcep-admin-status; - oper-status-going-down(4): the PCEP entity is
description deactivating.
"The operational status of the PCEP entity. - oper-status-failed(5): the PCEP entity has
Takes one of the following values. failed and will recover when possible.
- oper-status-up(1): the PCEP entity is - oper-status-failed-perm(6): the PCEP entity
active. has failed and will not recover without
- oper-status-down(2): the PCEP entity is operator intervention.";
inactive. }
- oper-status-going-up(3): the PCEP entity is
activating.
- oper-status-going-down(4): the PCEP entity is
deactivating.
- oper-status-failed(5): the PCEP entity has
failed and will recover when possible.
- oper-status-failed-perm(6): the PCEP entity
has failed and will not recover without
operator intervention.";
}
leaf role { leaf role {
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.";
}
uses info { }
description
"Local PCEP entity information";
}
container pce-info { uses info {
when "((../role == 'pce')" + description
" or " + "Local PCEP entity information";
"(../role == 'pcc-and-pce'))" }
{
description
"When PCEP entity is PCE";
}
uses pce-info {
description
"Local PCE information";
}
description
"The Local PCE Entity PCE information";
}
uses pcep-entity-info{ container pce-info {
description when "((../role == 'pce')" +
"The operational information related to the " or " +
PCEP entity."; "(../role == 'pcc-and-pce'))"
} {
description
"When PCEP entity is PCE";
}
uses pce-info {
description
"Local PCE information";
}
uses authentication {
description
"Local PCE authentication information";
}
description
"The Local PCE Entity PCE information";
}
container stateful-parameter{ uses pcep-entity-info{
if-feature stateful; description
must "(../info/capability/stateful/active == true)" "The operational information related to the
{ PCEP entity.";
error-message }
"The Active Stateful PCE must be enabled";
description
"When PCEP entity is active stateful
enabled";
}
uses stateful-pce-parameter;
description container stateful-parameter{
"The operational stateful parameters"; if-feature stateful;
} must "(../info/capability/stateful/active == true)"
{
error-message
"The Active Stateful PCE must be enabled";
description
"When PCEP entity is active stateful
enabled";
}
uses stateful-pce-parameter;
container lsp-db{ description
if-feature stateful; "The operational stateful parameters";
description }
"The LSP-DB"; container lsp-db{
list lsp{ if-feature stateful;
key "plsp-id pcc-id"; description
description "The LSP-DB";
"List of all LSPs in LSP-DB"; list association-list {
uses lsp-state{ key "id source global-source extended-id";
description description
"The PCEP specific attributes for "List of all PCEP associations";
LSP-DB."; uses association {
} description
// To Do - add groupings and useful information "The Association attributes";
// from TE yang model, once ready }
} list lsp {
} key "plsp-id pcc-id";
container peers{ description
description "List of all LSP in this association";
"The list of peers for the entity"; leaf plsp-id {
type leafref {
path "/pcep-state/entity/lsp-db/"
+ "lsp/plsp-id";
}
description
"Reference to PLSP-ID in LSP-DB";
}
leaf pcc-id {
type leafref {
path "/pcep-state/entity/lsp-db/"
+ "lsp/pcc-id";
}
description
"Reference to PCC-ID in LSP-DB";
}
}
}
list lsp{
key "plsp-id pcc-id";
description
"List of all LSPs in LSP-DB";
uses lsp-state{
description
"The PCEP specific attributes for
LSP-DB.";
}
list association-list {
key "id source global-source extended-id";
description
"List of all PCEP associations";
uses association-ref {
description
"Reference to the Association
attributes";
}
}
list peer{ }
key "addr"; }
container peers{
description
"The list of peers for the entity";
description list peer{
"The peer for the entity."; key "addr";
leaf addr { description
type inet:ip-address; "The peer for the entity.";
description
"The local Internet address of this PCEP
peer.";
}
leaf role { leaf addr {
type pcep-role; type inet:ip-address;
description description
"The role of the PCEP Peer. "The local Internet address of this PCEP
Takes one of the following values. peer.";
- unknown(0): this PCEP peer role }
is not known.
- pcc(1): this PCEP peer is a PCC.
- pce(2): this PCEP peer is a PCE.
- pcc-and-pce(3): this PCEP peer
is both a PCC and a PCE.";
}
uses info { leaf role {
description type pcep-role;
"PCEP peer information"; description
} "The role of the PCEP Peer.
Takes one of the following values.
- unknown(0): this PCEP peer role
is not known.
- pcc(1): this PCEP peer is a PCC.
- pce(2): this PCEP peer is a PCE.
- pcc-and-pce(3): this PCEP peer
is both a PCC and a PCE.";
}
container pce-info { uses info {
when "((../role == 'pce')" + description
" or " + "PCEP peer information";
"(../role == 'pcc-and-pce'))" }
{
description
"When PCEP entity is PCE";
}
uses pce-info {
description
"PCE Peer information";
} container pce-info {
description when "((../role == 'pce')" +
"The PCE Peer information"; " or " +
} "(../role == 'pcc-and-pce'))"
{
description
"When PCEP entity is PCE";
}
uses pce-info {
description
"PCE Peer information";
}
description
"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 "((../../role == 'pcc')" +
" or " + " or " +
"(../../role == 'pcc-and-pce'))" "(../../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 "(../../info/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.";
} }
leaf discontinuity-time {
type yang:timestamp;
description
"The timestamp of the time when the
information and statistics were
last reset.";
}
leaf initiate-session { uses authentication {
type boolean; description
description "PCE Peer authentication";
"Indicates whether the local PCEP }
entity initiates sessions to this peer,
or waits for the peer to initiate a
session.";
}
leaf session-exists{
type boolean;
description
"Indicates whether a session with
this peer currently exists.";
}
leaf num-sess-setup-ok{ leaf discontinuity-time {
type yang:counter32; type yang:timestamp;
description description
"The number of PCEP sessions successfully "The timestamp of the time when the
successfully established with the peer, information and statistics were
including any current session. This last reset.";
counter is incremented each time a }
session with this peer is successfully
established.";
}
leaf num-sess-setup-fail{ leaf initiate-session {
type yang:counter32; type boolean;
description description
"The number of PCEP sessions with the peer "Indicates whether the local PCEP
that have been attempted but failed entity initiates sessions to this peer,
before being fully established. This or waits for the peer to initiate a
counter is incremented each time a session.";
session retry to this peer fails."; }
}
leaf session-up-time{ leaf session-exists{
type yang:timestamp; type boolean;
must "(../num-sess-setup-ok != 0 or " + description
"(../num-sess-setup-ok = 0 and " + "Indicates whether a session with
"session-up-time = 0))" { this peer currently exists.";
error-message }
"Invalid Session Up timestamp";
description
"If num-sess-setup-ok is zero,
then this leaf contains zero.";
}
description
"The timestamp value of the last time a
session with this peer was successfully
established.";
}
leaf session-fail-time{ leaf num-sess-setup-ok{
type yang:timestamp; type yang:counter32;
must "(../num-sess-setup-fail != 0 or " + description
"(../num-sess-setup-fail = 0 and " + "The number of PCEP sessions successfully
"session-fail-time = 0))" { successfully established with the peer,
error-message including any current session. This
"Invalid Session Fail timestamp"; counter is incremented each time a
description session with this peer is successfully
"If num-sess-setup-fail is zero, established.";
then this leaf contains zero."; }
}
description
"The timestamp value of the last time a
session with this peer failed to be
established.";
}
leaf session-fail-up-time{ leaf num-sess-setup-fail{
type yang:timestamp; type yang:counter32;
must "(../num-sess-setup-ok != 0 or " + description
"(../num-sess-setup-ok = 0 and " + "The number of PCEP sessions with the peer
"session-fail-up-time = 0))" { that have been attempted but failed
error-message before being fully established. This
"Invalid Session Fail from counter is incremented each time a
Up timestamp"; session retry to this peer fails.";
description }
"If num-sess-setup-ok is zero,
then this leaf contains zero.";
}
description
"The timestamp value of the last time a
session with this peer failed from
active.";
}
container pcep-stats { leaf session-up-time{
description type yang:timestamp;
"The container for all statistics at peer must "(../num-sess-setup-ok != 0 or " +
level."; "(../num-sess-setup-ok = 0 and " +
uses pcep-stats{ "session-up-time = 0))" {
description error-message
"Since PCEP sessions can be "Invalid Session Up timestamp";
ephemeral, the peer statistics tracks description
a peer even when no PCEP session "If num-sess-setup-ok is zero,
currently exists to that peer. The then this leaf contains zero.";
statistics contained are an aggregate }
of the statistics for all successive description
sessions to that peer."; "The timestamp value of the last time a
} session with this peer was successfully
established.";
}
leaf num-req-sent-closed{ leaf session-fail-time{
type yang:counter32; type yang:timestamp;
description must "(../num-sess-setup-fail != 0 or " +
"The number of requests that were "(../num-sess-setup-fail = 0 and " +
sent to the peer and implicitly "session-fail-time = 0))" {
cancelled when the session they were error-message
sent over was closed."; "Invalid Session Fail timestamp";
} description
"If num-sess-setup-fail is zero,
then this leaf contains zero.";
}
description
"The timestamp value of the last time a
session with this peer failed to be
established.";
}
leaf num-req-rcvd-closed{ leaf session-fail-up-time{
type yang:counter32; type yang:timestamp;
description must "(../num-sess-setup-ok != 0 or " +
"The number of requests that were "(../num-sess-setup-ok = 0 and " +
received from the peer and "session-fail-up-time = 0))" {
implicitly cancelled when the error-message
session they were received over "Invalid Session Fail from
was closed."; Up timestamp";
} description
}//pcep-stats "If num-sess-setup-ok is zero,
then this leaf contains zero.";
}
description
"The timestamp value of the last time a
session with this peer failed from
active.";
}
container sessions { container pcep-stats {
description description
"This entry represents a single PCEP "The container for all statistics at peer
session in which the local PCEP entity level.";
participates. uses pcep-stats{
description
"Since PCEP sessions can be
ephemeral, the peer statistics tracks
a peer even when no PCEP session
currently exists to that peer. The
statistics contained are an aggregate
of the statistics for all successive
sessions to that peer.";
}
This entry exists only if the leaf num-req-sent-closed{
corresponding PCEP session has been type yang:counter32;
initialized by some event, such as description
manual user configuration, auto- "The number of requests that were
discovery of a peer, or an incoming sent to the peer and implicitly
TCP connection."; cancelled when the session they were
sent over was closed.";
}
list session { leaf num-req-rcvd-closed{
key "initiator"; type yang:counter32;
description
"The number of requests that were
received from the peer and
implicitly cancelled when the
session they were received over
was closed.";
}
}//pcep-stats
description container sessions {
"The list of sessions, note that description
for a time being two sessions "This entry represents a single PCEP
may exist for a peer"; session in which the local PCEP entity
participates.
This entry exists only if the
corresponding PCEP session has been
initialized by some event, such as
manual user configuration, auto-
discovery of a peer, or an incoming
TCP connection.";
leaf initiator { list session {
type pcep-initiator; key "initiator";
description
"The initiator of the session,
that is, whether the TCP
connection was initiated by
the local PCEP entity or the
peer.
There is a window during description
session initialization where "The list of sessions, note that
two sessions can exist between for a time being two sessions
a pair of PCEP speakers, each may exist for a peer";
initiated by one of the
speakers. One of these
sessions is always discarded
before it leaves OpenWait state.
However, before it is discarded,
two sessions to the given peer
appear transiently in this MIB
module. The sessions are
distinguished by who initiated
them, and so this field is the
key.";
}
leaf state-last-change { leaf initiator {
type yang:timestamp; type pcep-initiator;
description description
"The timestamp value at the "The initiator of the session,
time this session entered its that is, whether the TCP
current state as denoted by connection was initiated by
the state leaf."; the local PCEP entity or the
} peer.
There is a window during
session initialization where
two sessions can exist between
a pair of PCEP speakers, each
initiated by one of the
speakers. One of these
sessions is always discarded
before it leaves OpenWait state.
However, before it is discarded,
two sessions to the given peer
appear transiently in this MIB
module. The sessions are
distinguished by who initiated
them, and so this field is the
key.";
}
leaf state { leaf state-last-change {
type pcep-sess-state; type yang:timestamp;
description description
"The current state of the "The timestamp value at the
session. time this session entered its
current state as denoted by
the state leaf.";
}
The set of possible states leaf state {
excludes the idle state since type pcep-sess-state;
entries do not exist in the description
idle state."; "The current state of the
} session.
The set of possible states
excludes the idle state since
entries do not exist in the
idle state.";
}
leaf session-creation { leaf session-creation {
type yang:timestamp; type yang:timestamp;
description description
"The timestamp value at the "The timestamp value at the
time this session was time this session was
created."; created.";
} }
leaf connect-retry {
type yang:counter32;
description
"The number of times that the
local PCEP entity has
attempted to establish a TCP
connection for this session
without success. The PCEP
entity gives up when this
reaches connect-max-retry.";
}
leaf local-id { leaf connect-retry {
type uint32 { type yang:counter32;
range "0..255"; description
} "The number of times that the
description local PCEP entity has
"The value of the PCEP session attempted to establish a TCP
ID used by the local PCEP connection for this session
entity in the Open message without success. The PCEP
for this session. entity gives up when this
reaches connect-max-retry.";
}
If state is tcp-pending then leaf local-id {
this is the session ID that type uint32 {
will be used in the Open range "0..255";
message. Otherwise, this is }
the session ID that was sent description
in the Open message."; "The value of the PCEP session
} ID used by the local PCEP
entity in the Open message
for this session.
If state is tcp-pending then
this is the session ID that
will be used in the Open
message. Otherwise, this is
the session ID that was sent
in the Open message.";
}
leaf remote-id { leaf remote-id {
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 remote-id = 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 {
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 keepalive-timer = 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.";
} }
description description
"The agreed maximum interval at "The agreed maximum interval at
which the local PCEP entity which the local PCEP entity
transmits PCEP messages on this transmits PCEP messages on this
PCEP session. Zero means that PCEP session. Zero means that
the local PCEP entity never the local PCEP entity never
sends Keepalives on this sends Keepalives on this
session."; session.";
} }
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))" { "peer-keepalive-timer = 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.";
} }
description description
"The agreed maximum interval at "The agreed maximum interval at
which the peer transmits PCEP which the peer transmits PCEP
messages on this PCEP session. messages on this PCEP session.
Zero means that the peer never Zero means that the peer never
sends Keepalives on this sends Keepalives on this
session."; session.";
} }
leaf dead-timer { leaf dead-timer {
type uint32 { type uint32 {
range "0..255"; range "0..255";
} }
units "seconds"; units "seconds";
description description
"The dead timer interval for "The dead timer interval for
this PCEP session."; this PCEP session.";
} }
leaf peer-dead-timer { leaf peer-dead-timer {
type uint32 { type uint32 {
range "0..255"; range "0..255";
} }
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))" { "peer-dead-timer = 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.";
} }
description description
"The peer's dead-timer interval "The peer's dead-timer interval
for this PCEP session."; for this PCEP session.";
} }
leaf ka-hold-time-rem { leaf ka-hold-time-rem {
type uint32 { type uint32 {
range "0..255"; range "0..255";
} }
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))" { "ka-hold-time-rem = 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
"The keep alive hold time "The keep alive hold time
remaining for this session."; remaining for this session.";
} }
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 {
type uint32;
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
"The interval of time that is
remaining until the local PCEP
entity will cease to be
overloaded on this session.";
}
leaf peer-overloaded { leaf overload-time {
type boolean; type uint32;
description units "seconds";
"If the peer has informed the must "(../overloaded = true or" +
local PCEP entity that it is "(../overloaded != true and" +
currently overloaded, then this " overload-time = 0))" {
is set to true. Otherwise, it error-message
is set to false."; "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
"The interval of time that is
remaining until the local PCEP
entity will cease to be
overloaded on this session.";
}
leaf peer-overload-time { leaf peer-overloaded {
type uint32; type boolean;
units "seconds"; description
must "(../peer-overloaded = true" + "If the peer has informed the
" or " + local PCEP entity that it is
"(../peer-overloaded != true" + currently overloaded, then this
" and " + is set to true. Otherwise, it
"peer-overload-time = 0))" { is set to false.";
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
"The interval of time that is
remaining until the peer will
cease to be overloaded. If it
is not known how long the peer
will stay in overloaded state,
this leaf is set to zero.";
}
leaf lspdb-sync {
if-feature stateful;
type sync-state;
description
"The LSP-DB state synchronization
status.";
}
leaf discontinuity-time {
type yang:timestamp;
description
"The timestamp value of the time
when the statistics were last
reset.";
}
container pcep-stats { leaf peer-overload-time {
description type uint32;
"The container for all statistics units "seconds";
at session level."; must "(../peer-overloaded = true" +
uses pcep-stats{ " or " +
description "(../peer-overloaded != true" +
"The statistics contained are " and " +
for the current sessions to "peer-overload-time = 0))" {
that peer. These are lost error-message
when the session goes down. "Invalid peer overload
"; time";
} description
}//pcep-stats "This field is only used
if peer-overloaded is
set to true. Otherwise,
it is not used and MUST
be set to zero.";
}
description
"The interval of time that is
remaining until the peer will
cease to be overloaded. If it
is not known how long the peer
will stay in overloaded state,
this leaf is set to zero.";
}
leaf lspdb-sync {
if-feature stateful;
type sync-state;
description
"The LSP-DB state synchronization
status.";
}
leaf discontinuity-time {
type yang:timestamp;
description
"The timestamp value of the time
when the statistics were last
reset.";
}
} // session container pcep-stats {
} // sessions description
}//peer "The container for all statistics
}//peers at session level.";
}//entity uses pcep-stats{
}//pcep-state description
"The statistics contained are
for the current sessions to
that peer. These are lost
when the session goes down.
/* ";
* Notifications }
*/ }//pcep-stats
notification pcep-session-up {
description
"This notification is sent when the value of
'/pcep/pcep-state/peers/peer/sessions/session/state'
enters the 'session-up' state.";
uses notification-instance-hdr; } // session
} // sessions
}//peer
}//peers
}//entity
}//pcep-state
uses notification-session-hdr; /*
* Notifications
*/
notification pcep-session-up {
description
"This notification is sent when the value of
'/pcep/pcep-state/peers/peer/sessions/session/state'
enters the 'session-up' state.";
leaf state-last-change { uses notification-instance-hdr;
type yang:timestamp;
description
"The timestamp value at the time this session entered
its current state as denoted by the state leaf.";
}
leaf state { uses notification-session-hdr;
type pcep-sess-state;
description
"The current state of the session.
The set of possible states excludes the idle state leaf state-last-change {
since entries do not exist in the idle state."; type yang:timestamp;
} description
} //notification "The timestamp value at the time this session entered
its current state as denoted by the state leaf.";
}
notification pcep-session-down { leaf state {
description type pcep-sess-state;
"This notification is sent when the value of description
'/pcep/pcep-state/peers/peer/sessions/session/state' "The current state of the session.
leaves the 'session-up' state."; The set of possible states excludes the idle state
since entries do not exist in the idle state.";
}
} //notification
uses notification-instance-hdr; notification pcep-session-down {
description
"This notification is sent when the value of
'/pcep/pcep-state/peers/peer/sessions/session/state'
leaves the 'session-up' state.";
leaf session-initiator { uses notification-instance-hdr;
type pcep-initiator; leaf session-initiator {
description type pcep-initiator;
"The initiator of the session."; description
} "The initiator of the session.";
}
leaf state-last-change { leaf state-last-change {
type yang:timestamp; type yang:timestamp;
description description
"The timestamp value at the time this session entered "The timestamp value at the time this session entered
its current state as denoted by the state leaf."; its current state as denoted by the state leaf.";
} }
leaf state {
type pcep-sess-state;
description
"The current state of the session.
The set of possible states excludes the idle state leaf state {
since entries do not exist in the idle state."; type pcep-sess-state;
} description
} //notification "The current state of the session.
The set of possible states excludes the idle state
since entries do not exist in the idle state.";
}
} //notification
notification pcep-session-local-overload { notification pcep-session-local-overload {
description description
"This notification is sent when the local PCEP entity "This notification is sent when the local PCEP entity
enters overload state for a peer."; enters overload state for a peer.";
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-session-hdr; uses notification-session-hdr;
leaf overloaded { leaf overloaded {
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 " + must "(../overloaded = true or " +
"(../overloaded != true and " + "(../overloaded != true and " +
"overload-time = 0))" { "overload-time = 0))" {
error-message error-message
"Invalid overload-time"; "Invalid overload-time";
description description
"This field is only used if overloaded is "This field is only used if overloaded is
set to true. Otherwise, it is not used set to true. Otherwise, it is not used
and MUST be set to zero."; 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
leaves overload state for a peer."; leaves overload state for a peer.";
uses notification-instance-hdr; uses notification-instance-hdr;
leaf overloaded { leaf overloaded {
type boolean; type boolean;
description description
"If the local PCEP entity has informed the peer "If the local PCEP entity has informed the peer
that it is currently overloaded, then this is set that it is currently overloaded, then this is set
to true. Otherwise, it is set to false."; to true. Otherwise, it is set to false.";
} }
} //notification } //notification
notification pcep-session-peer-overload { notification pcep-session-peer-overload {
description description
"This notification is sent when a peer enters overload "This notification is sent when a peer enters overload
state."; state.";
uses notification-instance-hdr; uses notification-instance-hdr;
uses notification-session-hdr; uses notification-session-hdr;
leaf peer-overloaded { leaf peer-overloaded {
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 " + must "(../peer-overloaded = true or " +
"(../peer-overloaded != true and " + "(../peer-overloaded != true and " +
"peer-overload-time = 0))" { "peer-overload-time = 0))" {
error-message error-message
"Invalid peer-overload-time"; "Invalid peer-overload-time";
description description
"This field is only used if "This field is only used if
peer-overloaded is set to true. peer-overloaded is set to true.
Otherwise, it is not used and MUST Otherwise, it is not used and MUST
be set to zero."; 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
"This notification is sent when a peer leaves overload "This notification is sent when a peer leaves overload
state."; state.";
uses notification-instance-hdr; uses notification-instance-hdr;
leaf peer-overloaded { leaf peer-overloaded {
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.";
} }
} //notification } //notification
}//module }//module
<CODE ENDS> <CODE ENDS>
9. Security Considerations 9. Security Considerations
The YANG module defined in this memo is designed to be accessed via The YANG module defined in this memo is designed to be accessed via
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the
secure transport layer and the mandatory-to-implement secure secure transport layer and the mandatory-to-implement secure
transport is SSH [RFC6242]. The NETCONF access control model transport is SSH [RFC6242]. The NETCONF access control model
[RFC6536] provides the means to restrict access for particular [RFC6536] provides the means to restrict access for particular
NETCONF users to a pre-configured subset of all available NETCONF NETCONF users to a pre-configured subset of all available NETCONF
protocol operations and content. protocol operations and content.
skipping to change at page 74, line 31 skipping to change at page 85, line 42
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010,
<http://www.rfc-editor.org/info/rfc6020>. <http://www.rfc-editor.org/info/rfc6020>.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
RFC 6991, DOI 10.17487/RFC6991, July 2013, RFC 6991, DOI 10.17487/RFC6991, July 2013,
<http://www.rfc-editor.org/info/rfc6991>. <http://www.rfc-editor.org/info/rfc6991>.
[I-D.ietf-pce-stateful-pce] [I-D.ietf-pce-stateful-pce]
Crabbe, E., Minei, I., Medved, J., and R. Varga, "PCEP Crabbe, E., Minei, I., Medved, J., and R. Varga, "PCEP
Extensions for Stateful PCE", draft-ietf-pce-stateful- Extensions for Stateful PCE", draft-ietf-pce-stateful-
pce-13 (work in progress), December 2015. pce-14 (work in progress), March 2016.
[I-D.ietf-pce-pce-initiated-lsp]
Crabbe, E., Minei, I., Sivabalan, S., and R. Varga, "PCEP
Extensions for PCE-initiated LSP Setup in a Stateful PCE
Model", draft-ietf-pce-pce-initiated-lsp-05 (work in
progress), October 2015.
[I-D.ietf-pce-lsp-setup-type]
Sivabalan, S., Medved, J., Minei, I., Crabbe, E., Varga,
R., Tantsura, J., and J. Hardwick, "Conveying path setup
type in PCEP messages", draft-ietf-pce-lsp-setup-type-03
(work in progress), June 2015.
[I-D.ietf-pce-segment-routing]
Sivabalan, S., Medved, J., Filsfils, C., Crabbe, E.,
Lopez, V., Tantsura, J., Henderickx, W., and J. Hardwick,
"PCEP Extensions for Segment Routing", draft-ietf-pce-
segment-routing-07 (work in progress), March 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 75, line 13 skipping to change at page 86, line 46
<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-20 (work in Management", draft-ietf-netmod-routing-cfg-22 (work in
progress), October 2015. progress), July 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-05 Data Model Documents", draft-ietf-netmod-rfc6087bis-06
(work in progress), October 2015. (work in progress), March 2016.
[I-D.ietf-teas-yang-te] [I-D.ietf-teas-yang-te]
Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., Chen, Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., Chen,
X., Jones, R., and B. Wen, "A YANG Data Model for Traffic X., Jones, R., and B. Wen, "A YANG Data Model for Traffic
Engineering Tunnels and Interfaces", draft-ietf-teas-yang- Engineering Tunnels and Interfaces", draft-ietf-teas-yang-
te-02 (work in progress), October 2015. te-03 (work in progress), March 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 560037 Bangalore, Karnataka 560066
India India
EMail: rohit.pobbathi@huawei.com EMail: rohit.pobbathi@huawei.com
Vinod KumarS Vinod KumarS
Huawei Technologies Huawei Technologies
Divyashree Techno Park, Whitefield Divyashree Techno Park, Whitefield
Bangalore, Karnataka 560037 Bangalore, Karnataka 560066
India India
EMail: vinods.kumar@huawei.com EMail: vinods.kumar@huawei.com
Zafar Ali Zafar Ali
Cisco Systems Cisco Systems
Canada Canada
EMail: zali@cisco.com EMail: zali@cisco.com
skipping to change at page 76, line 48 skipping to change at page 88, line 48
Huawei Technologies Huawei Technologies
5340 Legacy Drive, Building 3 5340 Legacy Drive, Building 3
Plano, TX 75023, USA Plano, TX 75023, USA
Phone: (469) 277-5838 Phone: (469) 277-5838
EMail: leeyoung@huawei.com EMail: leeyoung@huawei.com
Udayasree Palle Udayasree Palle
Huawei Technologies Huawei Technologies
Divyashree Techno Park, Whitefield Divyashree Techno Park, Whitefield
Bangalore, Karnataka 560037 Bangalore, Karnataka 560066
India India
EMail: udayasree.palle@huawei.com EMail: udayasree.palle@huawei.com
Xian Zhang Xian Zhang
Huawei Technologies Huawei Technologies
Bantian, Longgang District Bantian, Longgang District
Shenzhen 518129 Shenzhen 518129
P.R.China P.R.China
EMail: zhang.xian@huawei.com EMail: zhang.xian@huawei.com
Avantika Avantika
Huawei Technologies Huawei Technologies
Divyashree Techno Park, Whitefield Divyashree Techno Park, Whitefield
Bangalore, Karnataka 560037 Bangalore, Karnataka 560066
India India
EMail: avantika.sushilkumar@huawei.com EMail: avantika.sushilkumar@huawei.com
Authors' Addresses Authors' Addresses
Dhruv Dhody (editor) Dhruv Dhody (editor)
Huawei Technologies Huawei Technologies
Divyashree Techno Park, Whitefield Divyashree Techno Park, Whitefield
Bangalore, Karnataka 560037 Bangalore, Karnataka 560066
India India
EMail: dhruv.ietf@gmail.com EMail: dhruv.ietf@gmail.com
Jonathan Hardwick Jonathan Hardwick
Metaswitch Metaswitch
100 Church Street 100 Church Street
Enfield EN2 6BQ Enfield EN2 6BQ
UK UK
skipping to change at page 78, line 4 skipping to change at page 89, line 43
Enfield EN2 6BQ Enfield EN2 6BQ
UK UK
EMail: jonathan.hardwick@metaswitch.com EMail: jonathan.hardwick@metaswitch.com
Vishnu Pavan Beeram Vishnu Pavan Beeram
Juniper Networks Juniper Networks
USA USA
EMail: vbeeram@juniper.net EMail: vbeeram@juniper.net
Jeff Tantsura Jeff Tantsura
Ericsson USA
300 Holger Way
San Jose, CA 95134
US
EMail: Jeff.Tantsura@ericsson.com EMail: jefftant@gmail.com
 End of changes. 273 change blocks. 
2857 lines changed or deleted 3414 lines changed or added

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