draft-ietf-pce-pcep-yang-08.txt   draft-ietf-pce-pcep-yang-09.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: December 24, 2018 Metaswitch Expires: April 18, 2019 Metaswitch
V. Beeram V. Beeram
Juniper Networks Juniper Networks
J. Tantsura J. Tantsura
June 22, 2018 October 15, 2018
A YANG Data Model for Path Computation Element Communications Protocol A YANG Data Model for Path Computation Element Communications Protocol
(PCEP) (PCEP)
draft-ietf-pce-pcep-yang-08 draft-ietf-pce-pcep-yang-09
Abstract Abstract
This document defines a YANG data model for the management of Path This document defines a YANG data model for the management of Path
Computation Element communications Protocol (PCEP) for communications Computation Element communications Protocol (PCEP) for communications
between a Path Computation Client (PCC) and a Path Computation between a Path Computation Client (PCC) and a Path Computation
Element (PCE), or between two PCEs. The data model includes Element (PCE), or between two PCEs. The data model includes
configuration data and state data (status information and counters configuration data and state data (status information and counters
for the collection of statistics). for the collection of statistics).
skipping to change at page 1, line 40 skipping to change at page 1, line 40
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 24, 2018. This Internet-Draft will expire on April 18, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 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
(https://trustee.ietf.org/license-info) in effect on the date of (https://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 28 skipping to change at page 2, line 28
4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 5 4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 5
5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 6 5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 6
5.1. The Overview of PCEP Data Model . . . . . . . . . . . . . 6 5.1. The Overview of PCEP Data Model . . . . . . . . . . . . . 6
5.2. The Full PCEP Data Model . . . . . . . . . . . . . . . . 7 5.2. The Full PCEP Data Model . . . . . . . . . . . . . . . . 7
5.3. The Entity . . . . . . . . . . . . . . . . . . . . . . . 22 5.3. The Entity . . . . . . . . . . . . . . . . . . . . . . . 22
5.4. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 22 5.4. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 22
5.5. The Session Lists . . . . . . . . . . . . . . . . . . . . 23 5.5. The Session Lists . . . . . . . . . . . . . . . . . . . . 23
5.6. Notifications . . . . . . . . . . . . . . . . . . . . . . 23 5.6. Notifications . . . . . . . . . . . . . . . . . . . . . . 23
5.7. RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 5.7. RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6. The Design of PCEP Statistics Data Model . . . . . . . . . . 23 6. The Design of PCEP Statistics Data Model . . . . . . . . . . 23
7. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 27 7. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 28
7.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 28 7.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 28
8. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 28 8. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 28
8.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 28 8.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 29
9. Other Considerations . . . . . . . . . . . . . . . . . . . . 29 9. Other Considerations . . . . . . . . . . . . . . . . . . . . 29
9.1. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 29 9.1. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 29
10. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 29 10. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 29
10.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 29 10.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 29
10.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 87 10.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 86
11. Security Considerations . . . . . . . . . . . . . . . . . . . 107 11. Security Considerations . . . . . . . . . . . . . . . . . . . 106
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 108 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 107
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 109 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 107
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 109 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 108
14.1. Normative References . . . . . . . . . . . . . . . . . . 109 14.1. Normative References . . . . . . . . . . . . . . . . . . 108
14.2. Informative References . . . . . . . . . . . . . . . . . 111 14.2. Informative References . . . . . . . . . . . . . . . . . 110
Appendix A. Example . . . . . . . . . . . . . . . . . . . . . . 112 Appendix A. Example . . . . . . . . . . . . . . . . . . . . . . 111
Appendix B. Contributor Addresses . . . . . . . . . . . . . . . 115 Appendix B. Contributor Addresses . . . . . . . . . . . . . . . 114
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 116 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 115
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
defined in [RFC5440]. PCEP interactions include path computation defined in [RFC5440]. PCEP interactions include path computation
requests and path computation replies as well as notifications of requests and path computation replies as well as notifications of
specific states related to the use of a PCE in the context of specific states related to the use of a PCE in the context of
Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS)
Traffic Engineering (TE). [RFC8231] specifies extensions to PCEP to Traffic Engineering (TE). [RFC8231] specifies extensions to PCEP to
enable stateful control of MPLS TE LSPs. enable stateful control of MPLS TE LSPs.
This document defines a YANG [RFC6020] data model for the management This document defines a YANG [RFC7950] data model for the management
of PCEP speakers. It is important to establish a common data model of PCEP speakers. It is important to establish a common data model
for how PCEP speakers are identified, configured, and monitored. The for how PCEP speakers are identified, configured, and monitored. The
data model includes configuration data and state data (status data model includes configuration data and state data (status
information and counters for the collection of statistics). information and counters for the collection of statistics).
This document contains a specification of the PCEP YANG module, This document contains a specification of the PCEP YANG module,
"ietf-pcep" which provides the PCEP [RFC5440] data model. "ietf-pcep" which provides the PCEP [RFC5440] data model.
The PCEP operational state is included in the same tree as the PCEP The PCEP operational state is included in the same tree as the PCEP
configuration consistent with Network Management Datastore configuration consistent with Network Management Datastore
skipping to change at page 4, line 34 skipping to change at page 4, line 34
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).
[RFC8281] : [RFC8281] :
o PCE-initiated LSP, Path Computation LSP Initiate Message o PCE-initiated LSP, Path Computation LSP Initiate Message
(PCInitiate). (PCInitiate).
[I-D.ietf-pce-lsp-setup-type] : [RFC8408] :
o Path Setup Type (PST). o Path Setup Type (PST).
[I-D.ietf-pce-segment-routing] : [I-D.ietf-pce-segment-routing] :
o Segment Routing (SR). o Segment Routing (SR).
3.1. Tree Diagrams 3.1. Tree Diagrams
A simplified graphical representation of the data model is used in A simplified graphical representation of the data model is used in
skipping to change at page 7, line 32 skipping to change at page 7, line 32
| ... | ...
+---n pcep-session-peer-overload-clear +---n pcep-session-peer-overload-clear
... ...
5.2. The Full PCEP Data Model 5.2. The Full 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 speaker-entity-id? string +--rw speaker-entity-id? string
| {stateful-sync-opt}? | {stateful-sync-opt}?
+--rw admin-status? pcep-admin-status +--rw admin-status? pcep-admin-status
+--ro index? uint32 +--ro index? uint32
+--ro oper-status? pcep-oper-status +--ro oper-status? pcep-oper-status
+--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 | +--rw objective-function? boolean {objective-function}?
| | {objective-function}? | +--rw add-path-constraint? boolean
| +--rw add-path-constraint? boolean | +--rw prioritization? boolean
| +--rw prioritization? boolean | +--rw multi-request? boolean
| +--rw multi-request? boolean | +--rw gco? boolean {gco}?
| +--rw gco? boolean {gco}? | +--rw p2mp? boolean {p2mp}?
| +--rw p2mp? boolean {p2mp}? | +--rw stateful {stateful}?
| +--rw stateful {stateful}? | | +--rw enabled? boolean
| | +--rw enabled? boolean | | +--rw active? boolean
| | +--rw active? boolean | | +--rw pce-initiated? boolean {pce-initiated}?
| | +--rw pce-initiated? boolean {pce-initiated}? | | +--rw include-db-ver? boolean
| | +--rw include-db-ver? boolean | | | {stateful-sync-opt}?
| | | {stateful-sync-opt}? | | +--rw trigger-resync? boolean
| | +--rw trigger-resync? boolean | | | {stateful-sync-opt}?
| | | {stateful-sync-opt}? | | +--rw trigger-initial-sync? boolean
| | +--rw trigger-initial-sync? boolean | | | {stateful-sync-opt}?
| | | {stateful-sync-opt}? | | +--rw incremental-sync? boolean
| | +--rw incremental-sync? boolean | | {stateful-sync-opt}?
| | {stateful-sync-opt}? | +--rw sr {sr}?
| +--rw sr {sr}? | +--rw enabled? boolean
| +--rw enabled? boolean | +--rw msd? uint8
+--rw pce-info | +--rw msd-limit? boolean
| +--rw scope | +--rw nai? boolean
| | +--rw intra-area-scope? boolean +--rw pce-info
| | +--rw intra-area-pref? uint8 | +--rw scope
| | +--rw inter-area-scope? boolean | | +--rw intra-area-scope? boolean
| | +--rw inter-area-scope-default? boolean | | +--rw intra-area-pref? uint8
| | +--rw inter-area-pref? uint8 | | +--rw inter-area-scope? boolean
| | +--rw inter-as-scope? boolean | | +--rw inter-area-scope-default? boolean
| | +--rw inter-as-scope-default? boolean | | +--rw inter-area-pref? uint8
| | +--rw inter-as-pref? uint8 | | +--rw inter-as-scope? boolean
| | +--rw inter-layer-scope? boolean | | +--rw inter-as-scope-default? boolean
| | +--rw inter-layer-pref? uint8 | | +--rw inter-as-pref? uint8
| +--rw neigh-domains | | +--rw inter-layer-scope? boolean
| | +--rw domain* [domain-type domain] | | +--rw inter-layer-pref? uint8
| | +--rw domain-type domain-type | +--rw neigh-domains
| | +--rw domain domain | | +--rw domain* [domain-type domain]
| +--rw path-key {path-key}? | | +--rw domain-type domain-type
| +--rw enabled? boolean | | +--rw domain domain
| +--rw discard-timer? uint32 | +--rw path-key {path-key}?
| +--rw reuse-time? uint32 | +--rw enabled? boolean
| +--rw pce-id? inet:ip-address | +--rw discard-timer? uint32
+--rw connect-timer? uint32 | +--rw reuse-time? uint32
+--rw connect-max-retry? uint32 | +--rw pce-id? inet:ip-address
+--rw init-backoff-timer? uint32 +--rw connect-timer? uint32
+--rw max-backoff-timer? uint32 +--rw connect-max-retry? uint32
+--rw open-wait-timer? uint32 +--rw init-backoff-timer? uint32
+--rw keep-wait-timer? uint32 +--rw max-backoff-timer? uint32
+--rw keep-alive-timer? uint32 +--rw open-wait-timer? uint32
+--rw dead-timer? uint32 +--rw keep-wait-timer? uint32
+--rw allow-negotiation? boolean +--rw keep-alive-timer? uint32
+--rw max-keep-alive-timer? uint32 +--rw dead-timer? uint32
+--rw max-dead-timer? uint32 +--rw allow-negotiation? boolean
+--rw min-keep-alive-timer? uint32 +--rw max-keep-alive-timer? uint32
+--rw min-dead-timer? uint32 +--rw max-dead-timer? uint32
+--rw sync-timer? uint32 {svec}? +--rw min-keep-alive-timer? uint32
+--rw request-timer? uint32 +--rw min-dead-timer? uint32
+--rw max-sessions? uint32 +--rw sync-timer? uint32 {svec}?
+--rw max-unknown-reqs? uint32 +--rw request-timer? uint32
+--rw max-unknown-msgs? uint32 +--rw max-sessions? uint32
+--rw pcep-notification-max-rate uint32 +--rw max-unknown-reqs? uint32
+--rw stateful-parameter {stateful}? +--rw max-unknown-msgs? uint32
| +--rw state-timeout? uint32 +--rw pcep-notification-max-rate uint32
| +--rw redelegation-timeout? uint32 +--rw stateful-parameter {stateful}?
| +--rw rpt-non-pcep-lsp? boolean | +--rw state-timeout? uint32
+--rw of-list {objective-function}? | +--rw redelegation-timeout? uint32
| +--rw objective-function* [of] | +--rw rpt-non-pcep-lsp? boolean
| +--rw of objective-function +--rw of-list {objective-function}?
+--ro lsp-db {stateful}? | +--rw objective-function* [of]
| +--ro db-ver? uint64 {stateful-sync-opt}? | +--rw of identityref
| +--ro association-list* +--ro lsp-db {stateful}?
| | [type id source global-source extended-id] | +--ro db-ver? uint64 {stateful-sync-opt}?
| | {association}? | +--ro association-list*
| | +--ro type assoc-type | | [type id source global-source extended-id]
| | +--ro id uint16 | | {association}?
| | +--ro source inet:ip-address | | +--ro type identityref
| | +--ro global-source uint32 | | +--ro id uint16
| | +--ro extended-id string | | +--ro source inet:ip-address
| | +--ro lsp* [plsp-id pcc-id] | | +--ro global-source uint32
| | +--ro plsp-id -> /pcep/entity/lsp-db/lsp/plsp-id | | +--ro extended-id string
| | +--ro pcc-id -> /pcep/entity/lsp-db/lsp/pcc-id | | +--ro lsp* [plsp-id pcc-id]
| +--ro lsp* [plsp-id pcc-id] | | +--ro plsp-id -> /pcep/entity/lsp-db/lsp/plsp-id
| +--ro plsp-id uint32 | | +--ro pcc-id -> /pcep/entity/lsp-db/lsp/pcc-id
| +--ro pcc-id inet:ip-address | +--ro lsp* [plsp-id pcc-id]
| +--ro lsp-ref | +--ro plsp-id uint32
| | +--ro source? | +--ro pcc-id inet:ip-address
| | | -> /te:te/lsps-state/lsp/source | +--ro lsp-ref
| | +--ro destination? | | +--ro source?
| | | -> /te:te/lsps-state/lsp/destination | | | -> /te:te/lsps-state/lsp/source
| | +--ro tunnel-id? | | +--ro destination?
| | | -> /te:te/lsps-state/lsp/tunnel-id | | | -> /te:te/lsps-state/lsp/destination
| | +--ro lsp-id? | | +--ro tunnel-id?
| | | -> /te:te/lsps-state/lsp/lsp-id | | | -> /te:te/lsps-state/lsp/tunnel-id
| | +--ro extended-tunnel-id? | | +--ro lsp-id?
| | -> /te:te/lsps-state/lsp/extended-tunnel-id | | | -> /te:te/lsps-state/lsp/lsp-id
| +--ro admin-state? boolean | | +--ro extended-tunnel-id?
| +--ro operational-state? operational-state | | -> /te:te/lsps-state/lsp/extended-tunnel-id
| +--ro delegated | +--ro admin-state? boolean
| | +--ro enabled? boolean | +--ro operational-state? operational-state
| | +--ro peer? -> /pcep/entity/peers/peer/addr | +--ro delegated
| | +--ro srp-id? uint32 | | +--ro enabled? boolean
| +--ro initiation {pce-initiated}? | | +--ro peer? -> /pcep/entity/peers/peer/addr
| | +--ro enabled? boolean | | +--ro srp-id? uint32
| | +--ro peer? -> /pcep/entity/peers/peer/addr | +--ro initiation {pce-initiated}?
| +--ro symbolic-path-name? string | | +--ro enabled? boolean
| +--ro last-error? lsp-error | | +--ro peer? -> /pcep/entity/peers/peer/addr
| +--ro pst? pst | +--ro symbolic-path-name? string
| +--ro association-list* | +--ro last-error? identityref
| [type id source global-source extended-id] | +--ro pst? identityref
| {association}? | +--ro association-list*
| +--ro type | [type id source global-source extended-id]
| | -> /pcep/entity/lsp-db/association-list/type | {association}?
| +--ro id | +--ro type
| | -> /pcep/entity/lsp-db/association-list/id | | -> /pcep/entity/lsp-db/association-list/type
| +--ro source leafref | +--ro id
| +--ro global-source leafref | | -> /pcep/entity/lsp-db/association-list/id
| +--ro extended-id leafref | +--ro source
+--ro path-keys {path-key}? | | -> /pcep/entity/lsp-db/association-list/source
| +--ro path-keys* [path-key] | +--ro global-source leafref
| +--ro path-key uint16 | +--ro extended-id leafref
| +--ro cps +--ro path-keys {path-key}?
| | +--ro explicit-route-objects* [index] | +--ro path-keys* [path-key]
| | +--ro index uint32 | +--ro path-key uint16
| | +--ro (type)? | +--ro cps
| | +--:(num-unnum-hop) | | +--ro explicit-route-objects* [index]
| | | +--ro num-unnum-hop | | +--ro index uint32
| | | +--ro node-id? te-types:te-node-id | | +--ro (type)?
| | | +--ro link-tp-id? te-types:te-tp-id | | +--:(num-unnum-hop)
| | | +--ro hop-type? te-hop-type | | | +--ro num-unnum-hop
| | | +--ro direction? te-link-direction | | | +--ro node-id? te-types:te-node-id
| | +--:(as-number) | | | +--ro link-tp-id? te-types:te-tp-id
| | | +--ro as-number-hop | | | +--ro hop-type? te-hop-type
| | | +--ro as-number? binary | | | +--ro direction? te-link-direction
| | | +--ro hop-type? te-hop-type | | +--:(as-number)
| | +--:(label) | | | +--ro as-number-hop
| | +--ro label-hop | | | +--ro as-number? binary
| | +--ro te-label | | | +--ro hop-type? te-hop-type
| | +--ro (technology)? | | +--:(label)
| | | +--:(generic) | | +--ro label-hop
| | | +--ro generic? | | +--ro te-label
| | | rt-types:generalized-label | | +--ro (technology)?
| | +--ro direction? | | | +--:(generic)
| | te-label-direction | | | +--ro generic?
| +--ro pcc-original? -> /pcep/entity/peers/peer/addr | | | rt-types:generalized-label
| +--ro req-id? uint32 | | +--ro direction? te-label-direction
| +--ro retrieved? boolean | +--ro pcc-original? -> /pcep/entity/peers/peer/addr
| +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr | +--ro req-id? uint32
| +--ro creation-time? yang:timestamp | +--ro retrieved? boolean
| +--ro discard-time? uint32 | +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr
| +--ro reuse-time? uint32 | +--ro creation-time? yang:timestamp
+--rw peers | +--ro discard-time? uint32
+--rw peer* [addr] | +--ro reuse-time? uint32
+--rw addr inet:ip-address +--rw peers
+--rw role pcep-role +--rw peer* [addr]
+--rw description? string +--rw addr inet:ip-address
+--rw domain +--rw role pcep-role
| +--rw domain* [domain-type domain] +--rw description? string
| +--rw domain-type domain-type +--rw domain
| +--rw domain domain | +--rw domain* [domain-type domain]
+--rw capability | +--rw domain-type domain-type
| +--rw gmpls? boolean {gmpls}? | +--rw domain domain
| +--rw bi-dir? boolean +--rw capability
| +--rw diverse? boolean | +--rw gmpls? boolean {gmpls}?
| +--rw load-balance? boolean | +--rw bi-dir? boolean
| +--rw synchronize? boolean {svec}? | +--rw diverse? boolean
| +--rw objective-function? boolean | +--rw load-balance? boolean
| | {objective-function}? | +--rw synchronize? boolean {svec}?
| +--rw add-path-constraint? boolean | +--rw objective-function? boolean
| +--rw prioritization? boolean | | {objective-function}?
| +--rw multi-request? boolean | +--rw add-path-constraint? boolean
| +--rw gco? boolean {gco}? | +--rw prioritization? boolean
| +--rw p2mp? boolean {p2mp}? | +--rw multi-request? boolean
| +--rw stateful {stateful}? | +--rw gco? boolean {gco}?
| | +--rw enabled? boolean | +--rw p2mp? boolean {p2mp}?
| | +--rw active? boolean | +--rw stateful {stateful}?
| | +--rw pce-initiated? boolean | | +--rw enabled? boolean
| | | {pce-initiated}? | | +--rw active? boolean
| | +--rw include-db-ver? boolean | | +--rw pce-initiated? boolean
| | | {stateful-sync-opt}? | | | {pce-initiated}?
| | +--rw trigger-resync? boolean | | +--rw include-db-ver? boolean
| | | {stateful-sync-opt}? | | | {stateful-sync-opt}?
| | +--rw trigger-initial-sync? boolean | | +--rw trigger-resync? boolean
| | | {stateful-sync-opt}? | | | {stateful-sync-opt}?
| | +--rw incremental-sync? boolean | | +--rw trigger-initial-sync? boolean
| | {stateful-sync-opt}? | | | {stateful-sync-opt}?
| +--rw sr {sr}? | | +--rw incremental-sync? boolean
| +--rw enabled? boolean | | {stateful-sync-opt}?
+--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 msd-limit? boolean
| | +--rw inter-area-scope? boolean | +--rw nai? boolean
| | +--rw inter-area-scope-default? boolean +--rw pce-info
| | +--rw inter-area-pref? uint8 | +--rw scope
| | +--rw inter-as-scope? boolean | | +--rw intra-area-scope? boolean
| | +--rw inter-as-scope-default? boolean | | +--rw intra-area-pref? uint8
| | +--rw inter-as-pref? uint8 | | +--rw inter-area-scope? boolean
| | +--rw inter-layer-scope? boolean | | +--rw inter-area-scope-default? boolean
| | +--rw inter-layer-pref? uint8 | | +--rw inter-area-pref? uint8
| +--rw neigh-domains | | +--rw inter-as-scope? boolean
| +--rw domain* [domain-type domain] | | +--rw inter-as-scope-default? boolean
| +--rw domain-type domain-type | | +--rw inter-as-pref? uint8
| +--rw domain domain | | +--rw inter-layer-scope? boolean
+--rw delegation-pref? uint8 {stateful}? | | +--rw inter-layer-pref? uint8
+--rw auth | +--rw neigh-domains
| +--rw (auth-type-selection)? | +--rw domain* [domain-type domain]
| +--:(auth-key-chain) | +--rw domain-type domain-type
| | +--rw key-chain? | +--rw domain domain
| | key-chain:key-chain-ref +--rw delegation-pref? uint8 {stateful}?
| +--:(auth-key) +--rw auth
| | +--rw crypto-algorithm identityref | +--rw (auth-type-selection)?
| | +--rw key-string | +--:(auth-key-chain)
| | +--rw (key-string-style)? | | +--rw key-chain? key-chain:key-chain-ref
| | +--:(keystring) | +--:(auth-key)
| | | +--rw keystring? string | | +--rw crypto-algorithm identityref
| | +--:(hexadecimal) | | +--rw key? string
| | {key-chain:hex-key-string}? | +--:(auth-tls) {tls}?
| | +--rw hexadecimal-string? | +--rw (role)?
| | yang:hex-string | +--:(server)
| +--:(auth-tls) {tls}? | | +--rw tls-server
| +--rw (role)? | | +--rw server-identity
| +--:(server) | | | +--rw (local-or-keystore)
| | +--rw tls-server | | | +--:(local)
| | +--rw server-identity | | | | +--rw algorithm
| | | +--rw (local-or-keystore) | | | | | ct:key-algorithm-ref
| | | +--:(local) | | | | +--rw public-key
| | | | +--rw algorithm | | | | | binary
| | | | | ct:key-algorithm-ref | | | | +--rw private-key
| | | | +--rw public-key | | | | | union
| | | | | binary | | | | +--rw cert
| | | | +--rw private-key | | | | | ct:end-entity-cert-cms
| | | | | union | | | | +---n certificate-expiration
| | | | +--rw cert | | | | +---- expiration-date?
| | | | | ct:end-entity-cert-cms | | | | yang:date-and-time
| | | | +---n certificate-expiration | | | +--:(keystore)
| | | | +-- expiration-date? | | | {keystore-implemented}?
| | | | yang:date-and-time | | | +--rw reference
| | | +--:(keystore) | | | ks:asymmetric-key-certificate-ref
| | | {keystore-implemented}? | | +--rw client-auth
| | | +--rw reference | | | +--rw pinned-ca-certs?
| | | ks:asymmetric-key-certificate-ref | | | | ta:pinned-certificates-ref
| | +--rw client-auth | | | +--rw pinned-client-certs?
| | | +--rw pinned-ca-certs? | | | ta:pinned-certificates-ref
| | | | ta:pinned-certificates-ref | | +--rw hello-params
| | | +--rw pinned-client-certs? | | {tls-server-hello-params-config}?
| | | ta:pinned-certificates-ref | | +--rw tls-versions
| | +--rw hello-params | | | +--rw tls-version* identityref
| | {tls-server-hello-params-config}? | | +--rw cipher-suites
| | +--rw tls-versions | | +--rw cipher-suite* identityref
| | | +--rw tls-version* | +--:(client)
| | | identityref | +--rw tls-client
| | +--rw cipher-suites | +--rw client-identity
| | +--rw cipher-suite* | | +--rw (auth-type)?
| | identityref | | +--:(certificate)
| +--:(client) | | +--rw certificate
| +--rw tls-client | | +--rw (local-or-keystore)
| +--rw client-identity | | +--:(local)
| | +--rw (auth-type)? | | | +--rw algorithm
| | +--:(certificate) | | | | ct:key-algorithm-ref
| | +--rw certificate | | | +--rw public-key
| | +--rw (local-or-keystore) | | | | binary
| | +--:(local) | | | +--rw private-key
| | | +--rw algorithm | | | | union
| | | | ct:key-algorithm-ref | | | +--rw cert
| | | +--rw public-key | | | | ct:end-entity-cert-cms
| | | | binary | | | +---n certificate-expiration
| | | +--rw private-key | | | +---- expiration-date?
| | | | union | | | yang:date-and-time
| | | +--rw cert | | +--:(keystore)
| | | | ct:end-entity-cert-cms | | {keystore-implemented}?
| | | +---n certificate-expiration | | +--rw reference
| | | +-- expiration-date? | | ks:asymmetric-key-certificate-ref
| | | yang:date-and-time | +--rw server-auth
| | +--:(keystore) | | +--rw pinned-ca-certs?
| | {keystore-implemented}? | | | ta:pinned-certificates-ref
| | +--rw reference | | +--rw pinned-server-certs?
| | ks:asymmetric-key-certificate-ref | | ta:pinned-certificates-ref
| +--rw server-auth | +--rw hello-params
| | +--rw pinned-ca-certs? | {tls-client-hello-params-config}?
| | | ta:pinned-certificates-ref | +--rw tls-versions
| | +--rw pinned-server-certs? | | +--rw tls-version* identityref
| | ta:pinned-certificates-ref | +--rw cipher-suites
| +--rw hello-params | +--rw cipher-suite* identityref
| {tls-client-hello-params-config}? +--ro discontinuity-time? yang:timestamp
| +--rw tls-versions +--ro initiate-session? boolean
| | +--rw tls-version* +--ro session-exists? boolean
| | identityref +--ro session-up-time? yang:timestamp
| +--rw cipher-suites +--ro session-fail-time? yang:timestamp
| +--rw cipher-suite* +--ro session-fail-up-time? yang:timestamp
| identityref +--ro sessions
+--ro session* [initiator]
+--ro initiator pcep-initiator
+--ro role? -> /pcep/entity/role
+--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 recv-db-ver? uint64
| {stateful,stateful-sync-opt}?
+--ro of-list {objective-function}?
| +--ro objective-function* [of]
| +--ro of identityref
+--ro pst-list
| +--ro path-setup-type* [pst]
| +--ro pst identityref
+--ro assoc-type-list {association}?
| +--ro assoc-type* [at]
| +--ro at identityref
+--ro speaker-entity-id? string
| {stateful-sync-opt}?
+--ro discontinuity-time? yang:timestamp
rpcs:
+---x trigger-resync {stateful,stateful-sync-opt}?
+---w input
+---w pcc? -> /pcep/entity/peers/peer/addr
notifications:
+---n pcep-session-up
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro session-initiator?
| | -> /pcep/entity/peers/peer/sessions/session/initiator
| +--ro state-last-change? yang:timestamp
| +--ro state? pcep-sess-state
+---n pcep-session-down
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro session-initiator? pcep-initiator
| +--ro state-last-change? yang:timestamp
| +--ro state? pcep-sess-state
+---n pcep-session-local-overload
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro session-initiator?
| | -> /pcep/entity/peers/peer/sessions/session/initiator
| +--ro overloaded? boolean
| +--ro overload-time? uint32
+---n pcep-session-local-overload-clear
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro overloaded? boolean
+---n pcep-session-peer-overload
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro session-initiator?
| | -> /pcep/entity/peers/peer/sessions/session/initiator
| +--ro peer-overloaded? boolean
| +--ro peer-overload-time? uint32
+---n pcep-session-peer-overload-clear
+--ro peer-addr? -> /pcep/entity/peers/peer/addr
+--ro peer-overloaded? boolean
groupings:
info
+---- domain
| +---- domain* [domain-type domain]
| +---- domain-type? domain-type
| +---- domain? domain
+---- capability
+---- gmpls? boolean {gmpls}?
+---- bi-dir? boolean
+---- diverse? boolean
+---- load-balance? boolean
+---- synchronize? boolean {svec}?
+---- objective-function? boolean {objective-function}?
+---- add-path-constraint? boolean
+---- prioritization? boolean
+---- multi-request? boolean
+---- gco? boolean {gco}?
+---- p2mp? boolean {p2mp}?
+---- stateful {stateful}?
| +---- enabled? boolean
| +---- active? boolean
| +---- pce-initiated? boolean {pce-initiated}?
| +---- include-db-ver? boolean {stateful-sync-opt}?
| +---- trigger-resync? boolean {stateful-sync-opt}?
| +---- trigger-initial-sync? boolean {stateful-sync-opt}?
| +---- incremental-sync? boolean {stateful-sync-opt}?
+---- sr {sr}?
+---- enabled? boolean
+---- msd? uint8
+---- msd-limit? boolean
+---- nai? boolean
lsp-state
+---- plsp-id? uint32
+---- pcc-id? inet:ip-address
+---- lsp-ref
| +---- source? -> /te:te/lsps-state/lsp/source
| +---- destination? -> /te:te/lsps-state/lsp/destination
| +---- tunnel-id? -> /te:te/lsps-state/lsp/tunnel-id
| +---- lsp-id? -> /te:te/lsps-state/lsp/lsp-id
| +---- extended-tunnel-id?
| -> /te:te/lsps-state/lsp/extended-tunnel-id
+---- admin-state? boolean
+---- operational-state? operational-state
+---- delegated
| +---- enabled? boolean
| +---- peer? -> /pcep/entity/peers/peer/addr
| +---- srp-id? uint32
+---- initiation {pce-initiated}?
| +---- enabled? boolean
| +---- peer? -> /pcep/entity/peers/peer/addr
+---- symbolic-path-name? string
+---- last-error? identityref
+---- pst? identityref
pce-scope
+---- intra-area-scope? boolean
+---- intra-area-pref? uint8
+---- inter-area-scope? boolean
+---- inter-area-scope-default? boolean
+---- inter-area-pref? uint8
+---- inter-as-scope? boolean
+---- inter-as-scope-default? boolean
+---- inter-as-pref? uint8
+---- inter-layer-scope? boolean
+---- inter-layer-pref? uint8
of-list
+---- objective-function* [of]
+---- of? identityref
pst-list
+---- path-setup-type* [pst]
+---- pst? identityref
session-grouping
+--ro sessions
+--ro session* [initiator]
+--ro initiator? pcep-initiator
+--ro role? -> /pcep/entity/role
+--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 recv-db-ver? uint64
| {stateful,stateful-sync-opt}?
+--ro of-list {objective-function}?
| +--ro objective-function* [of]
| +--ro of? identityref
+--ro pst-list
| +--ro path-setup-type* [pst]
| +--ro pst? identityref
+--ro assoc-type-list {association}?
| +--ro assoc-type* [at]
| +--ro at? identityref
+--ro speaker-entity-id? string {stateful-sync-opt}?
+--ro discontinuity-time? yang:timestamp +--ro discontinuity-time? yang:timestamp
+--ro initiate-session? boolean
+--ro session-exists? boolean
+--ro session-up-time? yang:timestamp
+--ro session-fail-time? yang:timestamp
+--ro session-fail-up-time? yang:timestamp
+--ro sessions
+--ro session* [initiator]
+--ro initiator pcep-initiator
+--ro role?
| -> /pcep/entity/role
+--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 recv-db-ver? uint64
| {stateful,stateful-sync-opt}?
+--ro of-list {objective-function}?
| +--ro objective-function* [of]
| +--ro of objective-function
+--ro pst-list
| +--ro path-setup-type* [pst]
| +--ro pst pst
+--ro assoc-type-list {association}?
| +--ro assoc-type* [at]
| +--ro at assoc-type
+--ro speaker-entity-id? string
| {stateful-sync-opt}?
+--ro discontinuity-time? yang:timestamp
rpcs: pcep-entity-info
+---x trigger-resync {stateful,stateful-sync-opt}? +---- connect-timer? uint32
+---w input +---- connect-max-retry? uint32
+---w pcc? -> /pcep/entity/peers/peer/addr +---- init-backoff-timer? uint32
+---- max-backoff-timer? uint32
+---- open-wait-timer? uint32
+---- keep-wait-timer? uint32
+---- keep-alive-timer? uint32
+---- dead-timer? uint32
+---- allow-negotiation? boolean
+---- max-keep-alive-timer? uint32
+---- max-dead-timer? uint32
+---- min-keep-alive-timer? uint32
+---- min-dead-timer? uint32
+---- sync-timer? uint32 {svec}?
+---- request-timer? uint32
+---- max-sessions? uint32
+---- max-unknown-reqs? uint32
+---- max-unknown-msgs? uint32
notifications: path-key
+---n pcep-session-up +---- enabled? boolean
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr +---- discard-timer? uint32
| +--ro session-initiator? +---- reuse-time? uint32
| | -> /pcep/entity/peers/peer/sessions/session/initiator +---- pce-id? inet:ip-address
| +--ro state-last-change? yang:timestamp
| +--ro state? pcep-sess-state
+---n pcep-session-down
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro session-initiator? pcep-initiator
| +--ro state-last-change? yang:timestamp
| +--ro state? pcep-sess-state
+---n pcep-session-local-overload
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro session-initiator?
| | -> /pcep/entity/peers/peer/sessions/session/initiator
| +--ro overloaded? boolean
| +--ro overload-time? uint32
+---n pcep-session-local-overload-clear
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro overloaded? boolean
+---n pcep-session-peer-overload
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr
| +--ro session-initiator?
| | -> /pcep/entity/peers/peer/sessions/session/initiator
| +--ro peer-overloaded? boolean
| +--ro peer-overload-time? uint32
+---n pcep-session-peer-overload-clear
+--ro peer-addr? -> /pcep/entity/peers/peer/addr
+--ro peer-overloaded? boolean
grouping info capability
+-- domain +---- gmpls? boolean {gmpls}?
| +-- domain* [domain-type domain] +---- bi-dir? boolean
| +-- domain-type? domain-type +---- diverse? boolean
| +-- domain? domain +---- load-balance? boolean
+-- capability +---- synchronize? boolean {svec}?
+-- gmpls? boolean {gmpls}? +---- objective-function? boolean {objective-function}?
+-- bi-dir? boolean +---- add-path-constraint? boolean
+-- diverse? boolean +---- prioritization? boolean
+-- load-balance? boolean +---- multi-request? boolean
+-- synchronize? boolean {svec}? +---- gco? boolean {gco}?
+-- objective-function? boolean {objective-function}? +---- p2mp? boolean {p2mp}?
+-- add-path-constraint? boolean +---- stateful {stateful}?
+-- prioritization? boolean | +---- enabled? boolean
+-- multi-request? boolean | +---- active? boolean
+-- gco? boolean {gco}? | +---- pce-initiated? boolean {pce-initiated}?
+-- p2mp? boolean {p2mp}? | +---- include-db-ver? boolean {stateful-sync-opt}?
+-- stateful {stateful}? | +---- trigger-resync? boolean {stateful-sync-opt}?
| +-- enabled? boolean | +---- trigger-initial-sync? boolean {stateful-sync-opt}?
| +-- active? boolean | +---- incremental-sync? boolean {stateful-sync-opt}?
| +-- pce-initiated? boolean {pce-initiated}? +---- sr {sr}?
| +-- include-db-ver? boolean {stateful-sync-opt}? +---- enabled? boolean
| +-- trigger-resync? boolean {stateful-sync-opt}? +---- msd? uint8
| +-- trigger-initial-sync? boolean {stateful-sync-opt}? +---- msd-limit? boolean
| +-- incremental-sync? boolean {stateful-sync-opt}? +---- nai? boolean
+-- sr {sr}?
+-- enabled? boolean path-key-state
grouping lsp-state +---- path-keys* [path-key]
+-- plsp-id? uint32 +---- path-key? uint16
+-- pcc-id? inet:ip-address +---- cps
+-- lsp-ref | +---- explicit-route-objects* [index]
| +-- source? -> /te:te/lsps-state/lsp/source | +---- index? uint32
| +-- destination? | +---- (type)?
| | -> /te:te/lsps-state/lsp/destination | +--:(num-unnum-hop)
| +-- tunnel-id? -> /te:te/lsps-state/lsp/tunnel-id | | +---- num-unnum-hop
| +-- lsp-id? -> /te:te/lsps-state/lsp/lsp-id | | +---- node-id? te-types:te-node-id
| +-- extended-tunnel-id? | | +---- link-tp-id? te-types:te-tp-id
| -> /te:te/lsps-state/lsp/extended-tunnel-id | | +---- hop-type? te-hop-type
+-- admin-state? boolean | | +---- direction? te-link-direction
+-- operational-state? operational-state | +--:(as-number)
+-- delegated | | +---- as-number-hop
| +-- enabled? boolean | | +---- as-number? binary
| +-- peer? -> /pcep/entity/peers/peer/addr | | +---- hop-type? te-hop-type
| +-- srp-id? uint32 | +--:(label)
+-- initiation {pce-initiated}? | +---- label-hop
| +-- enabled? boolean | +---- te-label
| +-- peer? -> /pcep/entity/peers/peer/addr | +---- (technology)?
+-- symbolic-path-name? string | | +--:(generic)
+-- last-error? lsp-error | | +---- generic?
+-- pst? pst | | rt-types:generalized-label
grouping pce-scope | +---- direction? te-label-direction
+-- intra-area-scope? boolean +---- pcc-original? -> /pcep/entity/peers/peer/addr
+-- intra-area-pref? uint8 +---- req-id? uint32
+-- inter-area-scope? boolean +---- retrieved? boolean
+-- inter-area-scope-default? boolean +---- pcc-retrieved? -> /pcep/entity/peers/peer/addr
+-- inter-area-pref? uint8 +---- creation-time? yang:timestamp
+-- inter-as-scope? boolean +---- discard-time? uint32
+-- inter-as-scope-default? boolean +---- reuse-time? uint32
+-- inter-as-pref? uint8
+-- inter-layer-scope? boolean authentication
+-- inter-layer-pref? uint8 +---- auth
grouping of-list +---- (auth-type-selection)?
+-- objective-function* [of] +--:(auth-key-chain)
+-- of? objective-function | +---- key-chain? key-chain:key-chain-ref
grouping pst-list +--:(auth-key)
+-- path-setup-type* [pst] | +---- crypto-algorithm identityref
+-- pst? pst | +---- key? string
grouping session-grouping +--:(auth-tls) {tls}?
+--ro sessions +---- (role)?
+--ro session* [initiator] +--:(server)
+--ro initiator? pcep-initiator | +---- tls-server
+--ro role? -> /pcep/entity/role | +---- server-identity
+--ro state-last-change? yang:timestamp | | +---- (local-or-keystore)
+--ro state? pcep-sess-state | | +--:(local)
+--ro session-creation? yang:timestamp | | | +---- algorithm
+--ro connect-retry? yang:counter32 | | | | ct:key-algorithm-ref
+--ro local-id? uint32 | | | +---- public-key binary
+--ro remote-id? uint32 | | | +---- private-key union
+--ro keepalive-timer? uint32 | | | +---- cert
+--ro peer-keepalive-timer? uint32 | | | | ct:end-entity-cert-cms
+--ro dead-timer? uint32 | | | +---n certificate-expiration
+--ro peer-dead-timer? uint32 | | | +---- expiration-date?
+--ro ka-hold-time-rem? uint32 | | | yang:date-and-time
+--ro overloaded? boolean | | +--:(keystore) {keystore-implemented}?
+--ro overload-time? uint32 | | +---- reference
+--ro peer-overloaded? boolean | | ks:asymmetric-key-certificate-ref
+--ro peer-overload-time? uint32 | +---- client-auth
+--ro lspdb-sync? sync-state {stateful}? | | +---- pinned-ca-certs?
+--ro recv-db-ver? uint64 | | | ta:pinned-certificates-ref
| {stateful,stateful-sync-opt}? | | +---- pinned-client-certs?
+--ro of-list {objective-function}? | | ta:pinned-certificates-ref
| +--ro objective-function* [of] | +---- hello-params
| +--ro of? objective-function | {tls-server-hello-params-config}?
+--ro pst-list | +---- tls-versions
| +--ro path-setup-type* [pst] | | +---- tls-version* identityref
| +--ro pst? pst | +---- cipher-suites
+--ro assoc-type-list {association}? | +---- cipher-suite* identityref
| +--ro assoc-type* [at] +--:(client)
| +--ro at? assoc-type +---- tls-client
+--ro speaker-entity-id? string {stateful-sync-opt}? +---- client-identity
+--ro discontinuity-time? yang:timestamp | +---- (auth-type)?
grouping pcep-entity-info | +--:(certificate)
+-- connect-timer? uint32 | +---- certificate
+-- connect-max-retry? uint32 | +---- (local-or-keystore)
+-- init-backoff-timer? uint32 | +--:(local)
+-- max-backoff-timer? uint32 | | +---- algorithm
+-- open-wait-timer? uint32 | | | ct:key-algorithm-ref
+-- keep-wait-timer? uint32 | | +---- public-key
+-- keep-alive-timer? uint32 | | | binary
+-- dead-timer? uint32 | | +---- private-key
+-- allow-negotiation? boolean | | | union
+-- max-keep-alive-timer? uint32 | | +---- cert
+-- max-dead-timer? uint32 | | | ct:end-entity-cert-cms
+-- min-keep-alive-timer? uint32 | | +---n certificate-expiration
+-- min-dead-timer? uint32 | | +---- expiration-date?
+-- sync-timer? uint32 {svec}? | | yang:date-and-time
+-- request-timer? uint32 | +--:(keystore)
+-- max-sessions? uint32 | {keystore-implemented}?
+-- max-unknown-reqs? uint32 | +---- reference
+-- max-unknown-msgs? uint32 | ks:asymmetric-key-certificate-ref
grouping path-key +---- server-auth
+-- enabled? boolean | +---- pinned-ca-certs?
+-- discard-timer? uint32 | | ta:pinned-certificates-ref
+-- reuse-time? uint32 | +---- pinned-server-certs?
+-- pce-id? inet:ip-address | ta:pinned-certificates-ref
grouping capability +---- hello-params
+-- gmpls? boolean {gmpls}? {tls-client-hello-params-config}?
+-- bi-dir? boolean
+-- diverse? boolean +---- tls-versions
+-- load-balance? boolean | +---- tls-version* identityref
+-- synchronize? boolean {svec}? +---- cipher-suites
+-- objective-function? boolean {objective-function}? +---- cipher-suite* identityref
+-- add-path-constraint? boolean
+-- prioritization? boolean notification-session-hdr
+-- multi-request? boolean +---- session-initiator?
+-- gco? boolean {gco}? -> /pcep/entity/peers/peer/sessions/session/initiator
+-- p2mp? boolean {p2mp}?
+-- stateful {stateful}? assoc-type-list
| +-- enabled? boolean +---- assoc-type* [at]
| +-- active? boolean +---- at? identityref
| +-- pce-initiated? boolean {pce-initiated}?
| +-- include-db-ver? boolean {stateful-sync-opt}? association
| +-- trigger-resync? boolean {stateful-sync-opt}? +---- type? identityref
| +-- trigger-initial-sync? boolean {stateful-sync-opt}? +---- id? uint16
| +-- incremental-sync? boolean {stateful-sync-opt}? +---- source? inet:ip-address
+-- sr {sr}? +---- global-source? uint32
+-- enabled? boolean +---- extended-id? string
grouping path-key-state
+-- path-keys* [path-key] domain
+-- path-key? uint16 +---- domain-type? domain-type
+-- cps +---- domain? domain
| +-- explicit-route-objects* [index]
| +-- index? uint32 association-ref
| +-- (type)? +---- type? -> /pcep/entity/lsp-db/association-list/type
| +--:(num-unnum-hop) +---- id? -> /pcep/entity/lsp-db/association-list/id
| | +-- num-unnum-hop +---- source? -> /pcep/entity/lsp-db/association-list/source
| | +-- node-id? te-types:te-node-id +---- global-source?
| | +-- link-tp-id? te-types:te-tp-id | -> /pcep/entity/lsp-db/association-list/global-source
| | +-- hop-type? te-hop-type +---- extended-id?
| | +-- direction? te-link-direction -> /pcep/entity/lsp-db/association-list/extended-id
| +--:(as-number)
| | +-- as-number-hop notification-instance-hdr
| | +-- as-number? binary +---- peer-addr? -> /pcep/entity/peers/peer/addr
| | +-- hop-type? te-hop-type
| +--:(label) pce-info
| +-- label-hop +---- scope
| +-- te-label | +---- intra-area-scope? boolean
| +-- (technology)? | +---- intra-area-pref? uint8
| | +--:(generic) | +---- inter-area-scope? boolean
| | +-- generic? | +---- inter-area-scope-default? boolean
| | rt-types:generalized-label | +---- inter-area-pref? uint8
| +-- direction? te-label-direction | +---- inter-as-scope? boolean
+-- pcc-original? -> /pcep/entity/peers/peer/addr | +---- inter-as-scope-default? boolean
+-- req-id? uint32 | +---- inter-as-pref? uint8
+-- retrieved? boolean | +---- inter-layer-scope? boolean
+-- pcc-retrieved? -> /pcep/entity/peers/peer/addr | +---- inter-layer-pref? uint8
+-- creation-time? yang:timestamp +---- neigh-domains
+-- discard-time? uint32 +---- domain* [domain-type domain]
+-- reuse-time? uint32 +---- domain-type? domain-type
grouping authentication +---- domain? domain
+-- auth
+-- (auth-type-selection)? stateful-pce-parameter
+--:(auth-key-chain) +---- state-timeout? uint32
| +-- key-chain? key-chain:key-chain-ref +---- redelegation-timeout? uint32
+--:(auth-key) +---- rpt-non-pcep-lsp? boolean
| +-- crypto-algorithm identityref
| +-- key-string
| +-- (key-string-style)?
| +--:(keystring)
| | +-- keystring? string
| +--:(hexadecimal) {key-chain:hex-key-string}?
| +-- hexadecimal-string? yang:hex-string
+--:(auth-tls) {tls}?
+-- (role)?
+--:(server)
| +-- tls-server
| +-- server-identity
| | +-- (local-or-keystore)
| | +--:(local)
| | | +-- algorithm
| | | | ct:key-algorithm-ref
| | | +-- public-key binary
| | | +-- private-key union
| | | +-- cert
| | | | ct:end-entity-cert-cms
| | | +---n certificate-expiration
| | | +-- expiration-date?
| | | yang:date-and-time
| | +--:(keystore) {keystore-implemented}?
| | +-- reference
| | ks:asymmetric-key-certificate-ref
| +-- client-auth
| | +-- pinned-ca-certs?
| | | ta:pinned-certificates-ref
| | +-- pinned-client-certs?
| | ta:pinned-certificates-ref
| +-- hello-params
| {tls-server-hello-params-config}?
| +-- tls-versions
| | +-- tls-version* identityref
| +-- cipher-suites
| +-- cipher-suite* identityref
+--:(client)
+-- tls-client
+-- client-identity
| +-- (auth-type)?
| +--:(certificate)
| +-- certificate
| +-- (local-or-keystore)
| +--:(local)
| | +-- algorithm
| | | ct:key-algorithm-ref
| | +-- public-key
| | | binary
| | +-- private-key
| | | union
| | +-- cert
| | | ct:end-entity-cert-cms
| | +---n certificate-expiration
| | +-- expiration-date?
| | yang:date-and-time
| +--:(keystore)
| {keystore-implemented}?
| +-- reference
| ks:asymmetric-key-certificate-ref
+-- server-auth
| +-- pinned-ca-certs?
| | ta:pinned-certificates-ref
| +-- pinned-server-certs?
| ta:pinned-certificates-ref
+-- hello-params
{tls-client-hello-params-config}?
+-- tls-versions
| +-- tls-version* identityref
+-- cipher-suites
+-- cipher-suite* identityref
grouping notification-session-hdr
+-- session-initiator?
-> /pcep/entity/peers/peer/sessions/session/initiator
grouping assoc-type-list
+-- assoc-type* [at]
+-- at? assoc-type
grouping association
+-- type? assoc-type
+-- id? uint16
+-- source? inet:ip-address
+-- global-source? uint32
+-- extended-id? string
grouping domain
+-- domain-type? domain-type
+-- domain? domain
grouping association-ref
+-- type?
| -> /pcep/entity/lsp-db/association-list/type
+-- id? -> /pcep/entity/lsp-db/association-list/id
+-- source?
| -> /pcep/entity/lsp-db/association-list/source
+-- global-source?
| -> /pcep/entity/lsp-db/association-list/global-source
+-- extended-id?
-> /pcep/entity/lsp-db/association-list/extended-id
grouping notification-instance-hdr
+-- peer-addr? -> /pcep/entity/peers/peer/addr
grouping pce-info
+-- scope
| +-- intra-area-scope? boolean
| +-- intra-area-pref? uint8
| +-- inter-area-scope? boolean
| +-- inter-area-scope-default? boolean
| +-- inter-area-pref? uint8
| +-- inter-as-scope? boolean
| +-- inter-as-scope-default? boolean
| +-- inter-as-pref? uint8
| +-- inter-layer-scope? boolean
| +-- inter-layer-pref? uint8
+-- neigh-domains
+-- domain* [domain-type domain]
+-- domain-type? domain-type
+-- domain? domain
grouping stateful-pce-parameter
+-- state-timeout? uint32
+-- redelegation-timeout? uint32
+-- rpt-non-pcep-lsp? boolean
5.3. The Entity 5.3. 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 26, line 29 skipping to change at page 26, line 36
| +--ro num-pcinitiate-sent? yang:counter32 | +--ro num-pcinitiate-sent? yang:counter32
| +--ro num-pcinitiate-rcvd? yang:counter32 | +--ro num-pcinitiate-rcvd? yang:counter32
| +--ro num-initiate-sent? yang:counter32 | +--ro num-initiate-sent? yang:counter32
| +--ro num-initiate-rcvd? yang:counter32 | +--ro num-initiate-rcvd? yang:counter32
| +--ro num-initiate-rcvd-error-sent? yang:counter32 | +--ro num-initiate-rcvd-error-sent? yang:counter32
+--ro path-key {p:path-key}? +--ro path-key {p:path-key}?
+--ro num-unknown-path-key? yang:counter32 +--ro num-unknown-path-key? yang:counter32
+--ro num-exp-path-key? yang:counter32 +--ro num-exp-path-key? yang:counter32
+--ro num-dup-path-key? yang:counter32 +--ro num-dup-path-key? yang:counter32
+--ro num-path-key-no-attempt? yang:counter32 +--ro num-path-key-no-attempt? yang:counter32
groupings:
grouping pcep-stats pcep-stats
+-- avg-rsp-time? uint32 +---- avg-rsp-time? uint32
+-- lwm-rsp-time? uint32 +---- lwm-rsp-time? uint32
+-- hwm-rsp-time? uint32 +---- hwm-rsp-time? uint32
+-- num-pcreq-sent? yang:counter32 +---- num-pcreq-sent? yang:counter32
+-- num-pcreq-rcvd? yang:counter32 +---- num-pcreq-rcvd? yang:counter32
+-- num-pcrep-sent? yang:counter32 +---- num-pcrep-sent? yang:counter32
+-- num-pcrep-rcvd? yang:counter32 +---- num-pcrep-rcvd? yang:counter32
+-- num-pcerr-sent? yang:counter32 +---- num-pcerr-sent? yang:counter32
+-- num-pcerr-rcvd? yang:counter32 +---- num-pcerr-rcvd? yang:counter32
+-- num-pcntf-sent? yang:counter32 +---- num-pcntf-sent? yang:counter32
+-- num-pcntf-rcvd? yang:counter32 +---- num-pcntf-rcvd? yang:counter32
+-- num-keepalive-sent? yang:counter32 +---- num-keepalive-sent? yang:counter32
+-- num-keepalive-rcvd? yang:counter32 +---- num-keepalive-rcvd? yang:counter32
+-- num-unknown-rcvd? yang:counter32 +---- num-unknown-rcvd? yang:counter32
+-- num-corrupt-rcvd? yang:counter32 +---- num-corrupt-rcvd? yang:counter32
+-- num-req-sent? yang:counter32 +---- num-req-sent? yang:counter32
+-- num-req-sent-pend-rep? yang:counter32 +---- num-req-sent-pend-rep? yang:counter32
+-- num-req-sent-ero-rcvd? yang:counter32 +---- num-req-sent-ero-rcvd? yang:counter32
+-- num-req-sent-nopath-rcvd? yang:counter32 +---- num-req-sent-nopath-rcvd? yang:counter32
+-- num-req-sent-cancel-rcvd? yang:counter32 +---- num-req-sent-cancel-rcvd? yang:counter32
+-- num-req-sent-error-rcvd? yang:counter32 +---- num-req-sent-error-rcvd? yang:counter32
+-- num-req-sent-timeout? yang:counter32 +---- num-req-sent-timeout? yang:counter32
+-- num-req-sent-cancel-sent? yang:counter32 +---- num-req-sent-cancel-sent? yang:counter32
+-- num-req-rcvd? yang:counter32 +---- num-req-rcvd? yang:counter32
+-- num-req-rcvd-pend-rep? yang:counter32 +---- num-req-rcvd-pend-rep? yang:counter32
+-- num-req-rcvd-ero-sent? yang:counter32 +---- num-req-rcvd-ero-sent? yang:counter32
+-- num-req-rcvd-nopath-sent? yang:counter32 +---- num-req-rcvd-nopath-sent? yang:counter32
+-- num-req-rcvd-cancel-sent? yang:counter32 +---- num-req-rcvd-cancel-sent? yang:counter32
+-- num-req-rcvd-error-sent? yang:counter32 +---- num-req-rcvd-error-sent? yang:counter32
+-- num-req-rcvd-cancel-rcvd? yang:counter32 +---- num-req-rcvd-cancel-rcvd? yang:counter32
+-- num-rep-rcvd-unknown? yang:counter32 +---- num-rep-rcvd-unknown? yang:counter32
+-- num-req-rcvd-unknown? yang:counter32 +---- num-req-rcvd-unknown? yang:counter32
+-- svec {p:svec}? +---- svec {p:svec}?
| +-- num-svec-sent? yang:counter32 | +---- num-svec-sent? yang:counter32
| +-- num-svec-req-sent? yang:counter32 | +---- num-svec-req-sent? yang:counter32
| +-- num-svec-rcvd? yang:counter32 | +---- num-svec-rcvd? yang:counter32
| +-- num-svec-req-rcvd? yang:counter32 | +---- num-svec-req-rcvd? yang:counter32
+-- stateful {p:stateful}? +---- stateful {p:stateful}?
| +-- num-pcrpt-sent? yang:counter32 | +---- num-pcrpt-sent? yang:counter32
| +-- num-pcrpt-rcvd? yang:counter32 | +---- num-pcrpt-rcvd? yang:counter32
| +-- num-pcupd-sent? yang:counter32 | +---- num-pcupd-sent? yang:counter32
| +-- num-pcupd-rcvd? yang:counter32 | +---- num-pcupd-rcvd? yang:counter32
| +-- num-rpt-sent? yang:counter32 | +---- num-rpt-sent? yang:counter32
| +-- num-rpt-rcvd? yang:counter32 | +---- num-rpt-rcvd? yang:counter32
| +-- num-rpt-rcvd-error-sent? yang:counter32 | +---- num-rpt-rcvd-error-sent? yang:counter32
| +-- num-upd-sent? yang:counter32 | +---- num-upd-sent? yang:counter32
| +-- num-upd-rcvd? yang:counter32 | +---- num-upd-rcvd? yang:counter32
| +-- num-upd-rcvd-unknown? yang:counter32 | +---- num-upd-rcvd-unknown? yang:counter32
| +-- num-upd-rcvd-undelegated? yang:counter32 | +---- num-upd-rcvd-undelegated? yang:counter32
| +-- num-upd-rcvd-error-sent? yang:counter32 | +---- num-upd-rcvd-error-sent? yang:counter32
| +-- initiation {p:pce-initiated}? | +---- initiation {p:pce-initiated}?
| +-- num-pcinitiate-sent? yang:counter32 | +---- num-pcinitiate-sent? yang:counter32
| +-- num-pcinitiate-rcvd? yang:counter32 | +---- num-pcinitiate-rcvd? yang:counter32
| +-- num-initiate-sent? yang:counter32 | +---- num-initiate-sent? yang:counter32
| +-- num-initiate-rcvd? yang:counter32 | +---- num-initiate-rcvd? yang:counter32
| +-- num-initiate-rcvd-error-sent? yang:counter32 | +---- num-initiate-rcvd-error-sent? yang:counter32
+-- path-key {p:path-key}? +---- path-key {p:path-key}?
+-- num-unknown-path-key? yang:counter32 +---- num-unknown-path-key? yang:counter32
+-- num-exp-path-key? yang:counter32 +---- num-exp-path-key? yang:counter32
+-- num-dup-path-key? yang:counter32 +---- num-dup-path-key? yang:counter32
+-- num-path-key-no-attempt? yang:counter32 +---- num-path-key-no-attempt? yang:counter32
7. Advanced PCE Features 7. Advanced PCE Features
This document contains a specification of the base PCEP YANG module, This document contains a specification of the base PCEP YANG module,
"ietf-pcep" which provides the basic PCEP [RFC5440] data model. "ietf-pcep" which provides the basic PCEP [RFC5440] data model.
This document further handles advanced PCE features like - This document further handles advanced PCE features like -
o Capability and Scope o Capability and Scope
o Domain information (local/neighbour) o Domain information (local/neighbour)
o Path-Key o Path-Key
o OF o OF
o GCO o GCO
skipping to change at page 29, line 31 skipping to change at page 29, line 38
PCEP session is started.. PCEP session is started..
10. PCEP YANG Modules 10. PCEP YANG Modules
10.1. ietf-pcep module 10.1. ietf-pcep 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@2018-06-22.yang" <CODE BEGINS> file "ietf-pcep@2018-10-15.yang"
module ietf-pcep { module ietf-pcep {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-pcep"; namespace "urn:ietf:params:xml:ns:yang:ietf-pcep";
prefix pcep; prefix pcep;
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
reference "RFC 6991"; reference "RFC 6991";
skipping to change at page 30, line 19 skipping to change at page 30, line 25
reference "RFC XXXX"; reference "RFC XXXX";
} }
import ietf-key-chain { import ietf-key-chain {
prefix "key-chain"; prefix "key-chain";
reference "RFC 8177"; reference "RFC 8177";
} }
import ietf-netconf-acm { import ietf-netconf-acm {
prefix "nacm"; prefix "nacm";
reference "RFC 8341"; reference "RFC 6536";
} }
import ietf-tls-server { import ietf-tls-server {
prefix "tls-server"; prefix "tls-server";
reference "RFC XXXX"; reference "RFC XXXX";
} }
import ietf-tls-client { import ietf-tls-client {
prefix "tls-client"; prefix "tls-client";
reference "RFC XXXX"; reference "RFC XXXX";
skipping to change at page 31, line 10 skipping to change at page 31, line 18
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see the This version of this YANG module is part of RFC XXXX; see the
RFC itself for full legal notices."; RFC itself for full legal notices.";
revision 2018-06-22 { revision 2018-10-15 {
description "Initial revision."; description "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for Path Computation "RFC XXXX: A YANG Data Model for Path Computation
Element Communications Protocol Element Communications Protocol
(PCEP)"; (PCEP)";
} }
/* /*
* Identities * Identities
*/ */
skipping to change at page 34, line 50 skipping to change at page 35, line 10
} }
description description
"The current state of the session. "The current state of the session.
The set of possible states excludes the idle state The set of possible states excludes the idle state
since entries do not exist in the idle state. since entries do not exist in the idle state.
Takes one of the following values Takes one of the following values
- tcp-pending(1): PCEP TCP Pending state - tcp-pending(1): PCEP TCP Pending state
- open-wait(2): PCEP Open Wait state - open-wait(2): PCEP Open Wait state
- keep-wait(3): PCEP Keep Wait state - keep-wait(3): PCEP Keep Wait state
- session-up(4): PCEP Session Up state"; - session-up(4): PCEP Session Up state";
reference
"RFC 5440";
} }
typedef domain-type { typedef domain-type {
type enumeration { type enumeration {
enum ospf-area { enum ospf-area {
value "1"; value "1";
description description
"The OSPF area."; "The OSPF area.";
} }
enum isis-area { enum isis-area {
skipping to change at page 36, line 42 skipping to change at page 37, line 4
being released."; being released.";
} }
enum going-up { enum going-up {
value "4"; value "4";
description description
"LSP is being signalled."; "LSP is being signalled.";
} }
} }
description description
"The operational status of the LSP"; "The operational status of the LSP";
}
typedef lsp-error {
type enumeration {
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.";
} }
typedef sync-state { typedef sync-state {
type enumeration { type enumeration {
enum pending { enum pending {
value "0"; value "0";
description description
"The state synchronization "The state synchronization
has not started."; has not started.";
} }
skipping to change at page 38, line 26 skipping to change at page 37, line 33
description description
"The state synchronization "The state synchronization
is finished."; is finished.";
} }
} }
description description
"The LSP-DB state synchronization operational "The LSP-DB state synchronization operational
status."; status.";
} }
typedef pst{
type enumeration{
enum rsvp-te{
value "0";
description
"RSVP-TE signaling protocol";
}
enum sr{
value "1";
description
"Segment Routing Traffic Engineering";
}
}
description
"The Path Setup Type";
}
typedef assoc-type{
type enumeration{
enum protection{
value "1";
description
"Path Protection Association Type";
}
enum policy{
value "2";
description
"Policy Association Type";
}
enum double-bidir{
value "3";
description
"Double-Sided Bidirectional
Association Type";
}
enum single-bidir{
value "4";
description
"Single-Sided Bidirectional
Association Type";
}
enum diversity{
value "5";
description
"Diversity Association Type";
}
}
description
"The PCEP Association Type";
}
typedef objective-function{
type enumeration{
enum mcp{
value "1";
description
"Minimum Cost Path (MCP)";
}
enum mlp{
value "2";
description
"Minimum Load Path (MLP)";
}
enum mbp{
value "3";
description
"Maximum residual Bandwidth Path (MBP)";
}
enum mbc{
value "4";
description
"Minimize aggregate Bandwidth Consumption
(MBC)";
}
enum mll{
value "5";
description
"Minimize the Load of the most loaded Link
(MLL)";
}
enum mcc{
value "6";
description
"Minimize the Cumulative Cost of a set of
paths (MCC)";
}
enum spt{
value "7";
description
"Shortest Path Tree (SPT)";
}
enum mct{
value "8";
description
"Minimum Cost Tree (MCT)";
}
enum mplp{
value "9";
description
"Minimum Packet Loss Path (MPLP)";
}
enum mup{
value "10";
description
"Maximum Under-Utilized Path (MUP)";
}
enum mrup{
value "11";
description
"Maximum Reserved Under-Utilized Path
(MRUP)";
}
}
description
"The PCEP Objective functions";
reference
"RFC 5541";
}
/* /*
* Features * Features
*/ */
feature svec { feature svec {
description description
"Support synchronized path computation."; "Support synchronized path computation.";
reference reference
"RFC 5440"; "RFC 5440";
} }
skipping to change at page 42, line 36 skipping to change at page 39, line 20
feature sr { feature sr {
description description
"Support Segment Routing for PCE."; "Support Segment Routing for PCE.";
} }
feature association { feature association {
description description
"Support Association in PCEP."; "Support Association in PCEP.";
} }
/*
* Identities
*/
identity lsp-error {
if-feature stateful;
description
"Base LSP error";
reference "RFC8231";
}
identity no-error-lsp-error {
base lsp-error;
if-feature stateful;
description
"No error, LSP is fine.";
reference "RFC8231";
}
identity unknown-lsp-error {
base lsp-error;
if-feature stateful;
description
"Unknown reason.";
reference "RFC8231";
}
identity limit-lsp-error {
base lsp-error;
if-feature stateful;
description
"Limit reached for PCE-controlled LSPs.";
reference "RFC8231";
}
identity pending-lsp-error {
base lsp-error;
if-feature stateful;
description
"Too many pending LSP update requests.";
reference "RFC8231";
}
identity unacceptable-lsp-error {
base lsp-error;
if-feature stateful;
description
"Unacceptable parameters.";
reference "RFC8231";
}
identity internal-lsp-error {
base lsp-error;
if-feature stateful;
description
"Internal error.";
reference "RFC8231";
}
identity admin-lsp-error {
base lsp-error;
if-feature stateful;
description
"LSP administratively brought down.";
reference "RFC8231";
}
identity preempted-lsp-error {
base lsp-error;
if-feature stateful;
description
"LSP preempted.";
reference "RFC8231";
}
identity rsvp-lsp-error {
base lsp-error;
if-feature stateful;
description
"RSVP signaling error.";
reference "RFC8231";
}
/* /*
* Groupings * Groupings
*/ */
grouping pcep-entity-info{ grouping pcep-entity-info{
description description
"This grouping defines the attributes for PCEP entity."; "This grouping defines the attributes for PCEP entity.";
leaf connect-timer { leaf connect-timer {
type uint32 { type uint32 {
range "1..65535"; range "1..65535";
} }
skipping to change at page 53, line 29 skipping to change at page 51, line 52
} }
container sr{ container sr{
if-feature sr; if-feature sr;
description description
"If segment routing is supported"; "If segment routing is supported";
leaf enabled{ leaf enabled{
type boolean; type boolean;
description description
"Enabled or Disabled"; "Enabled or Disabled";
} }
leaf msd{
type uint8;
description
"Maximum SID Depth";
}
leaf msd-limit{
type boolean;
default false;
description
"True indicates no limit on MSD, the
leaf msd is ignored";
}
leaf nai{
type boolean;
default false;
description
"True indicates capability to resolve NAI
to SID";
}
} }
}//capability }//capability
grouping info{ grouping info{
description description
"This grouping specifies all information which "This grouping specifies all information which
maybe relevant to both PCC and PCE. maybe relevant to both PCC and PCE.
This information corresponds to PCE auto-discovery This information corresponds to PCE auto-discovery
information."; information.";
skipping to change at page 58, line 7 skipping to change at page 56, line 48
reference to the PCEP peer where the LSP reference to the PCEP peer where the LSP
is initiated"; is initiated";
} }
} }
leaf symbolic-path-name{ leaf symbolic-path-name{
type string; type string;
description description
"The symbolic path name associated with the LSP."; "The symbolic path name associated with the LSP.";
} }
leaf last-error{ leaf last-error{
type lsp-error; type identityref {
base lsp-error;
}
description description
"The last error for the LSP."; "The last error for the LSP.";
} }
leaf pst{ leaf pst{
type pst; type identityref{
default "rsvp-te"; base te-types:path-signaling-type;
}
default "te-types:path-setup-rsvp";
description description
"The Path Setup Type"; "The Path Setup Type";
} }
}//lsp-state }//lsp-state
grouping notification-instance-hdr { grouping notification-instance-hdr {
description description
"This group describes common instance specific data "This group describes common instance specific data
skipping to change at page 60, line 31 skipping to change at page 59, line 27
} }
case auth-key { case auth-key {
leaf crypto-algorithm { leaf crypto-algorithm {
type identityref { type identityref {
base key-chain:crypto-algorithm; base key-chain:crypto-algorithm;
} }
mandatory true; mandatory true;
description description
"Cryptographic algorithm associated with key."; "Cryptographic algorithm associated with key.";
} }
container key-string { leaf key {
description
"The key string.";
nacm:default-deny-all; nacm:default-deny-all;
choice key-string-style { type string;
description description
"Key string styles"; "This leaf specifies the authentication key.";
case keystring {
leaf keystring {
type string;
description
"Key string in ASCII format.";
}
}
case hexadecimal {
if-feature "key-chain:hex-key-string";
leaf hexadecimal-string {
type yang:hex-string;
description
"Key in hexadecimal string format. When
compared to ASCII, specification in
hexadecimal affords greater key
entropy with the same number of
octets. Additionally, it discourages
usage of well-known words or
numbers.";
}
}
}
} }
} }
case auth-tls { case auth-tls {
if-feature tls; if-feature tls;
choice role{ choice role{
description description
"The role of the local entity"; "The role of the local entity";
case server { case server {
container tls-server { container tls-server {
uses tls-server:tls-server-grouping { uses tls-server:tls-server-grouping {
skipping to change at page 62, line 47 skipping to change at page 61, line 20
the Confidential Path Segment (CPS) within the Confidential Path Segment (CPS) within
the context of the PCE"; the context of the PCE";
} }
container cps { container cps {
description description
"The Confidential Path Segment (CPS)"; "The Confidential Path Segment (CPS)";
list explicit-route-objects { list explicit-route-objects {
key "index"; key "index";
description description
"List of explicit route objects"; "List of explicit route objects";
leaf index {
type uint32;
description
"ERO subobject index";
}
uses te-types:explicit-route-hop; uses te-types:explicit-route-hop;
} }
} }
leaf pcc-original { leaf pcc-original {
type leafref { type leafref {
path "/pcep/entity/peers/peer/addr"; path "/pcep/entity/peers/peer/addr";
} }
description description
"Reference to PCC peer address of "Reference to PCC peer address of
the original request"; the original request";
skipping to change at page 64, line 20 skipping to change at page 62, line 45
grouping of-list { grouping of-list {
description "List of OF"; description "List of OF";
list objective-function{ list objective-function{
key "of"; key "of";
description description
"The list of authorized OF"; "The list of authorized OF";
leaf of { leaf of {
type objective-function; type identityref{
base te-types:objective-function-type;
}
description description
"The OF authorized"; "The OF authorized";
} }
} }
} }
grouping pst-list { grouping pst-list {
description "List of PST"; description "List of PST";
list path-setup-type{ list path-setup-type{
key "pst"; key "pst";
description description
"The list of authorized PST"; "The list of authorized PST";
skipping to change at page 64, line 36 skipping to change at page 63, line 16
grouping pst-list { grouping pst-list {
description "List of PST"; description "List of PST";
list path-setup-type{ list path-setup-type{
key "pst"; key "pst";
description description
"The list of authorized PST"; "The list of authorized PST";
leaf pst { leaf pst {
type pst; type identityref{
base te-types:path-signaling-type;
}
description description
"The PST authorized"; "The PST authorized";
} }
} }
} }
grouping assoc-type-list { grouping assoc-type-list {
description "List of Association Type"; description "List of Association Type";
list assoc-type{ list assoc-type{
key "at"; key "at";
description description
"The list of authorized association "The list of authorized association
types"; types";
leaf at { leaf at {
type assoc-type; type identityref {
base te-types:association-type;
}
description description
"The association type authorized"; "The association type authorized";
} }
} }
} }
grouping association { grouping association {
description description
"Generic Association parameters"; "Generic Association parameters";
leaf type { leaf type {
type "assoc-type"; type identityref {
base te-types:association-type;
}
description description
"The PCEP association type"; "The PCEP association type";
} }
leaf id { leaf id {
type uint16; type uint16;
description description
"PCEP Association ID"; "PCEP Association ID";
} }
leaf source { leaf source {
type inet:ip-address; type inet:ip-address;
description description
"PCEP Association Source."; "PCEP Association Source.";
skipping to change at page 87, line 18 skipping to change at page 86, line 4
input { input {
leaf pcc { leaf pcc {
type leafref { type leafref {
path "/pcep/entity/peers/peer/addr"; path "/pcep/entity/peers/peer/addr";
} }
description description
"The IP address to identify the PCC. The state "The IP address to identify the PCC. The state
syncronization is re-triggered for all LSPs from syncronization is re-triggered for all LSPs from
the PCC. The rpc on the PCC will be ignored."; the PCC. The rpc on the PCC will be ignored.";
} }
} }
}//rpc }//rpc
}//module }//module
<CODE ENDS> <CODE ENDS>
10.2. ietf-pcep-stats module 10.2. ietf-pcep-stats module
<CODE BEGINS> file "ietf-pcep-stats@2018-06-22.yang" <CODE BEGINS> file "ietf-pcep-stats@2018-10-15.yang"
module ietf-pcep-stats { module ietf-pcep-stats {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-pcep-stats"; namespace "urn:ietf:params:xml:ns:yang:ietf-pcep-stats";
prefix ps; prefix ps;
import ietf-pcep { import ietf-pcep {
prefix p; prefix p;
reference "RFC XXXX";
} }
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix "yang";
reference "RFC 6991"; reference "RFC 6991";
} }
organization organization
"IETF PCE (Path Computation Element) Working Group"; "IETF PCE (Path Computation Element) Working Group";
skipping to change at page 88, line 24 skipping to change at page 87, line 13
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info). (http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see the This version of this YANG module is part of RFC XXXX; see the
RFC itself for full legal notices."; RFC itself for full legal notices.";
revision 2018-06-22 { revision 2018-10-15 {
description "Initial revision."; description "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for Path Computation "RFC XXXX: A YANG Data Model for Path Computation
Element Communications Protocol Element Communications Protocol
(PCEP)"; (PCEP)";
} }
/* /*
* Groupings * Groupings
*/ */
skipping to change at page 107, line 39 skipping to change at page 106, line 28
<CODE ENDS> <CODE ENDS>
11. Security Considerations 11. Security Considerations
The YANG module defined in this document is designed to be accessed The YANG module defined in this document is designed to be accessed
via network management protocol such as NETCONF [RFC6241] or RESTCONF via network management protocol such as NETCONF [RFC6241] or RESTCONF
[RFC8040]. The lowest NETCONF layer is the secure transport layer [RFC8040]. The lowest NETCONF layer is the secure transport layer
and the mandatory-to-implement secure transport is SSH [RFC6242]. and the mandatory-to-implement secure transport is SSH [RFC6242].
The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement
secure transport is TLS [RFC5246] secure transport is TLS [RFC8446]
The NETCONF access control model [RFC8341] provides the means to The NETCONF access control model [RFC8341] provides the means to
restrict access for particular NETCONF or RESTCONF users to a pre- restrict access for particular NETCONF or RESTCONF users to a pre-
configured subset of all available NETCONF or RESTCONF protocol configured subset of all available NETCONF or RESTCONF protocol
operations and content. operations and content.
There are a number of data nodes defined in the YANG module which are There are a number of data nodes defined in the YANG module which are
writable/creatable/deletable (i.e., config true, which is the writable/creatable/deletable (i.e., config true, which is the
default). These data nodes may be considered sensitive or vulnerable default). These data nodes may be considered sensitive or vulnerable
in some network environments. Write operations (e.g., <edit-config>) in some network environments. Write operations (e.g., <edit-config>)
skipping to change at page 109, line 33 skipping to change at page 108, line 23
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>. <https://www.rfc-editor.org/info/rfc3688>.
[RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation [RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation
Element (PCE) Communication Protocol (PCEP)", RFC 5440, Element (PCE) Communication Protocol (PCEP)", RFC 5440,
DOI 10.17487/RFC5440, March 2009, DOI 10.17487/RFC5440, March 2009,
<https://www.rfc-editor.org/info/rfc5440>. <https://www.rfc-editor.org/info/rfc5440>.
[RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security
(TLS) Protocol Version 1.2", RFC 5246,
DOI 10.17487/RFC5246, August 2008,
<https://www.rfc-editor.org/info/rfc5246>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010,
<https://www.rfc-editor.org/info/rfc6020>. <https://www.rfc-editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
<https://www.rfc-editor.org/info/rfc6242>. <https://www.rfc-editor.org/info/rfc6242>.
[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,
<https://www.rfc-editor.org/info/rfc6991>. <https://www.rfc-editor.org/info/rfc6991>.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016,
<https://www.rfc-editor.org/info/rfc7950>.
[RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J.
Zhang, "YANG Data Model for Key Chains", RFC 8177, Zhang, "YANG Data Model for Key Chains", RFC 8177,
DOI 10.17487/RFC8177, June 2017, DOI 10.17487/RFC8177, June 2017,
<https://www.rfc-editor.org/info/rfc8177>. <https://www.rfc-editor.org/info/rfc8177>.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
<https://www.rfc-editor.org/info/rfc8040>. <https://www.rfc-editor.org/info/rfc8040>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
skipping to change at page 110, line 43 skipping to change at page 109, line 30
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
<https://www.rfc-editor.org/info/rfc8340>. <https://www.rfc-editor.org/info/rfc8340>.
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
Access Control Model", STD 91, RFC 8341, Access Control Model", STD 91, RFC 8341,
DOI 10.17487/RFC8341, March 2018, DOI 10.17487/RFC8341, March 2018,
<https://www.rfc-editor.org/info/rfc8341>. <https://www.rfc-editor.org/info/rfc8341>.
[I-D.ietf-pce-lsp-setup-type] [RFC8408] Sivabalan, S., Tantsura, J., Minei, I., Varga, R., and J.
Sivabalan, S., Tantsura, J., Minei, I., Varga, R., and J. Hardwick, "Conveying Path Setup Type in PCE Communication
Hardwick, "Conveying path setup type in PCEP messages", Protocol (PCEP) Messages", RFC 8408, DOI 10.17487/RFC8408,
draft-ietf-pce-lsp-setup-type-10 (work in progress), May July 2018, <https://www.rfc-editor.org/info/rfc8408>.
2018.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>.
[I-D.ietf-pce-segment-routing] [I-D.ietf-pce-segment-routing]
Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W., Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W.,
and J. Hardwick, "PCEP Extensions for Segment Routing", and J. Hardwick, "PCEP Extensions for Segment Routing",
draft-ietf-pce-segment-routing-11 (work in progress), draft-ietf-pce-segment-routing-14 (work in progress),
November 2017. October 2018.
[I-D.ietf-teas-yang-te] [I-D.ietf-teas-yang-te]
Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and
I. Bryskin, "A YANG Data Model for Traffic Engineering I. Bryskin, "A YANG Data Model for Traffic Engineering
Tunnels and Interfaces", draft-ietf-teas-yang-te-15 (work Tunnels and Interfaces", draft-ietf-teas-yang-te-16 (work
in progress), June 2018. in progress), July 2018.
[I-D.ietf-netconf-tls-client-server] [I-D.ietf-netconf-tls-client-server]
Watsen, K. and G. Wu, "YANG Groupings for TLS Clients and Watsen, K. and G. Wu, "YANG Groupings for TLS Clients and
TLS Servers", draft-ietf-netconf-tls-client-server-06 TLS Servers", draft-ietf-netconf-tls-client-server-07
(work in progress), June 2018. (work in progress), September 2018.
14.2. Informative References 14.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,
<https://www.rfc-editor.org/info/rfc4655>. <https://www.rfc-editor.org/info/rfc4655>.
[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
 End of changes. 47 change blocks. 
998 lines changed or deleted 941 lines changed or added

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