< draft-ietf-pce-pcep-yang-15.txt   draft-ietf-pce-pcep-yang-16.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: May 4, 2021 Metaswitch Expires: August 26, 2021 Metaswitch
V. Beeram V. Beeram
Juniper Networks Juniper Networks
J. Tantsura J. Tantsura
Apstra, Inc. Apstra, Inc.
October 31, 2020 February 22, 2021
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-15 draft-ietf-pce-pcep-yang-16
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 and state data. configuration and state data.
Status of This Memo Status of This Memo
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 May 4, 2021. This Internet-Draft will expire on August 26, 2021.
Copyright Notice Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the Copyright (c) 2021 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
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 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 . . . . . . . . . . . . . . . . . . . . . . 5 3.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4
3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5 3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5
3.3. Refrences in the Model . . . . . . . . . . . . . . . . . 5 3.3. Refrences in the Model . . . . . . . . . . . . . . . . . 5
4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 7 4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 7
5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 8 5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 7
5.1. The Overview of PCEP Data Model . . . . . . . . . . . . . 8 5.1. The Overview of PCEP Data Model . . . . . . . . . . . . . 8
5.2. The Entity . . . . . . . . . . . . . . . . . . . . . . . 9 5.2. The Entity . . . . . . . . . . . . . . . . . . . . . . . 9
5.3. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 13 5.3. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 13
5.4. The Session Lists . . . . . . . . . . . . . . . . . . . . 15 5.4. The Session Lists . . . . . . . . . . . . . . . . . . . . 15
5.5. Notifications . . . . . . . . . . . . . . . . . . . . . . 17 5.5. Notifications . . . . . . . . . . . . . . . . . . . . . . 16
5.6. RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 5.6. RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.7. The Full PCEP Data Model . . . . . . . . . . . . . . . . 18 6. The Design of PCEP Statistics Data Model . . . . . . . . . . 17
6. The Design of PCEP Statistics Data Model . . . . . . . . . . 24 7. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 20
7. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 27 7.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 21
7.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 27 8. Other Considerations . . . . . . . . . . . . . . . . . . . . 21
8. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 28 8.1. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 21
8.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 28 9. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 22
8.2. LSP-ID . . . . . . . . . . . . . . . . . . . . . . . . . 28 9.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 22
9. Other Considerations . . . . . . . . . . . . . . . . . . . . 28 9.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 76
9.1. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 28 10. Security Considerations . . . . . . . . . . . . . . . . . . . 94
10. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 28 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 95
10.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 28 12. Implementation Status . . . . . . . . . . . . . . . . . . . . 96
10.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 83 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 97
11. Security Considerations . . . . . . . . . . . . . . . . . . . 101 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 97
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 102 14.1. Normative References . . . . . . . . . . . . . . . . . . 97
13. Implementation Status . . . . . . . . . . . . . . . . . . . . 103 14.2. Informative References . . . . . . . . . . . . . . . . . 101
14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 104 Appendix A. The Full PCEP Data Model . . . . . . . . . . . . . . 102
15. References . . . . . . . . . . . . . . . . . . . . . . . . . 104 Appendix B. Example . . . . . . . . . . . . . . . . . . . . . . 108
15.1. Normative References . . . . . . . . . . . . . . . . . . 104 Appendix C. Contributor Addresses . . . . . . . . . . . . . . . 111
15.2. Informative References . . . . . . . . . . . . . . . . . 108 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 112
Appendix A. Example . . . . . . . . . . . . . . . . . . . . . . 109
Appendix B. Contributor Addresses . . . . . . . . . . . . . . . 112
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 113
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 3, line 31 skipping to change at page 3, line 25
This document defines a YANG [RFC7950] 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. data model includes configuration data and state data.
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
Architecture [RFC8342]. The origin of the data is indicated as per Architecture (NMDA) [RFC8342]. The origin of the data is indicated
the origin metadata annotation. as per the origin metadata annotation.
2. Requirements Language 2. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
3. Terminology and Notation 3. Terminology and Notation
skipping to change at page 5, line 24 skipping to change at page 5, line 18
are often used without a prefix, as long as it is clear from the are often used without a prefix, as long as it is clear from the
context in which YANG module each name is defined. Otherwise, names context in which YANG module each name is defined. Otherwise, names
are prefixed using the standard prefix associated with the are prefixed using the standard prefix associated with the
corresponding YANG module, as shown in Table 1. corresponding YANG module, as shown in Table 1.
+----------+------------------+-------------------------------------+ +----------+------------------+-------------------------------------+
| Prefix | YANG module | Reference | | Prefix | YANG module | Reference |
+----------+------------------+-------------------------------------+ +----------+------------------+-------------------------------------+
| yang | ietf-yang-types | [RFC6991] | | yang | ietf-yang-types | [RFC6991] |
| inet | ietf-inet-types | [RFC6991] | | inet | ietf-inet-types | [RFC6991] |
| te | ietf-te | [I-D.ietf-teas-yang-te] |
| te-types | ietf-te-types | [RFC8776] | | te-types | ietf-te-types | [RFC8776] |
| key- | ietf-key-chain | [RFC8177] | | key- | ietf-key-chain | [RFC8177] |
| chain | | | | chain | | |
| nacm | ietf-netconf-acm | [RFC8341] | | nacm | ietf-netconf-acm | [RFC8341] |
| tlss | ietf-tls-server | [I-D.ietf-netconf-tls-client-server | | tlss | ietf-tls-server | [I-D.ietf-netconf-tls-client-server |
| | | ] | | | | ] |
| tlsc | ietf-tls-client | [I-D.ietf-netconf-tls-client-server | | tlsc | ietf-tls-client | [I-D.ietf-netconf-tls-client-server |
| | | ] | | | | ] |
| ospf | ietf-ospf | [I-D.ietf-ospf-yang] | | ospf | ietf-ospf | [I-D.ietf-ospf-yang] |
| isis | ietf-isis | [I-D.ietf-isis-yang-isis-cfg] | | isis | ietf-isis | [I-D.ietf-isis-yang-isis-cfg] |
skipping to change at page 5, line 47 skipping to change at page 5, line 40
Table 1: Prefixes and corresponding YANG modules Table 1: Prefixes and corresponding YANG modules
3.3. Refrences in the Model 3.3. Refrences in the Model
Following documents are refrenced in the model defined in this Following documents are refrenced in the model defined in this
document - document -
+----------------------------+--------------------------------------+ +----------------------------+--------------------------------------+
| Documents | Reference | | Documents | Reference |
+----------------------------+--------------------------------------+ +----------------------------+--------------------------------------+
| RSVP-TE: Extensions to | [RFC3209] |
| RSVP for LSP Tunnels | |
| OSPF Protocol Extensions | [RFC5088] | | OSPF Protocol Extensions | [RFC5088] |
| for Path Computation | | | for Path Computation | |
| Element (PCE) Discovery | | | Element (PCE) Discovery | |
| IS-IS Protocol Extensions | [RFC5089] | | IS-IS Protocol Extensions | [RFC5089] |
| for Path Computation | | | for Path Computation | |
| Element (PCE) Discovery | | | Element (PCE) Discovery | |
| Path Computation Element | [RFC5440] | | Path Computation Element | [RFC5440] |
| (PCE) Communication | | | (PCE) Communication | |
| Protocol (PCEP) | | | Protocol (PCEP) | |
| Preserving Topology | [RFC5520] | | Preserving Topology | [RFC5520] |
skipping to change at page 8, line 9 skipping to change at page 8, line 4
o The data model should include read-only counters in order to o The data model should include read-only counters in order to
gather statistics for sent and received PCEP messages, received gather statistics for sent and received PCEP messages, received
messages with errors, and messages that could not be sent due to messages with errors, and messages that could not be sent due to
errors. This could be in a separate model which augments the base errors. This could be in a separate model which augments the base
data model. data model.
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
5.1. The Overview of PCEP Data Model 5.1. The Overview of PCEP Data Model
The PCEP YANG module defined in this document has all the common The PCEP YANG module defined in this document has all the common
building blocks for the PCEP protocol. building blocks for the PCEP protocol.
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 {sync-opt}?
| {stateful-sync-opt}? +--rw admin-status? boolean
+--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 capability
+--rw capability | ...
+--rw pce-info
| ... | +--rw scope
+--rw pce-info | | ...
| +--rw scope | +--rw neigh-domains
| | ... | | ...
| +--rw neigh-domains | +--rw path-key {path-key}?
| | ... | | ...
| +--rw path-key {path-key}? | ...
| ... +--ro lsp-db {stateful}?
| +--ro db-ver? uint64 {sync-opt}?
+--ro lsp-db {stateful}? | +--ro association-list*
| +--ro db-ver? uint64 | | [type id source global-source extended-id]
| | {stateful-sync-opt}? | | {association}?
| +--ro association-list* | | ...
| | [id source global-source extended-id] | | +--ro lsp* [plsp-id pcc-id lsp-id]
| | ... | | ...
| +--ro lsp* [plsp-id pcc-id lsp-id] | +--ro lsp* [plsp-id pcc-id lsp-id]
| ... | ...
+--ro path-keys {path-key}? +--ro path-keys {path-key}?
| +--ro path-keys* [path-key] | +--ro path-keys* [path-key]
| ... | +--...
+--rw peers | ...
+--rw peer* [addr] +--rw peers
+--rw peer* [addr]
+--ro sessions ...
+--ro session* [initiator] +--ro sessions
... +--ro session* [initiator]
...
rpcs: rpcs:
+---x trigger-resync {stateful,stateful-sync-opt}? +---x trigger-resync {stateful,sync-opt}?
+---w input +---w input
+---w pcc? -> /pcep/entity/peers/peer/addr +---w pcc? -> /pcep/entity/peers/peer/addr
notifications: notifications:
+---n pcep-session-up +---n pcep-session-up
| ... | ...
+---n pcep-session-down +---n pcep-session-down
| ... | ...
+---n pcep-session-local-overload +---n pcep-session-local-overload
| ... | ...
+---n pcep-session-local-overload-clear +---n pcep-session-local-overload-clear
| ... | ...
+---n pcep-session-peer-overload +---n pcep-session-peer-overload
| ... | ...
+---n pcep-session-peer-overload-clear +---n pcep-session-peer-overload-clear
... | ...
5.2. The Entity 5.2. 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 10, line 12 skipping to change at page 10, line 8
+--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 {sync-opt}? +--rw speaker-entity-id? string {sync-opt}?
+--rw admin-status? boolean +--rw admin-status? boolean
+--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 identityref
| +--rw domain domain | +--rw domain domain
+--rw capability +--rw capability
| +--rw capability? bits | +--rw capability? bits
| +--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 {stateful,sync-opt}?
| +--rw trigger-resync? boolean | +--rw trigger-initial-sync? boolean {stateful,sync-opt}?
| | {stateful,sync-opt}? | +--rw incremental-sync? boolean {stateful,sync-opt}?
| +--rw trigger-initial-sync? boolean
| | {stateful,sync-opt}?
| +--rw incremental-sync? boolean
| | {stateful,sync-opt}?
| +--rw sr {sr}? | +--rw sr {sr}?
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw msd-limit? boolean | +--rw msd-limit? boolean
| +--rw nai? boolean | +--rw nai? boolean
+--rw msd? uint8 {sr}? +--rw msd? uint8 {sr}?
+--rw pce-info +--rw pce-info
| +--rw scope | +--rw scope
| | +--rw path-scope? bits | | +--rw path-scope? bits
| | +--rw intra-area-pref? uint8 | | +--rw intra-area-pref? uint8
| | +--rw inter-area-pref? uint8 | | +--rw inter-area-pref? uint8
| | +--rw inter-as-pref? uint8 | | +--rw inter-as-pref? uint8
| | +--rw inter-layer-pref? uint8 | | +--rw inter-layer-pref? uint8
| +--rw neigh-domains | +--rw neigh-domains
| | +--rw domain* [domain-type domain] | | +--rw domain* [domain-type domain]
| | +--rw domain-type domain-type | | +--rw domain-type identityref
| | +--rw domain domain | | +--rw domain domain
| +--rw path-key {path-key}? | +--rw path-key {path-key}?
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw discard-timer? uint32 | +--rw discard-timer? uint32
| +--rw reuse-time? uint32 | +--rw reuse-time? uint32
| +--rw pce-id? inet:ip-address | +--rw pce-id? inet:ip-address
+--rw connect-timer? uint16 +--rw connect-timer? uint16
+--rw connect-max-retry? uint32 +--rw connect-max-retry? uint32
+--rw init-backoff-timer? uint16 +--rw init-backoff-timer? uint16
+--rw max-backoff-timer? uint32 +--rw max-backoff-timer? uint32
+--rw open-wait-timer? uint16 +--ro open-wait-timer? uint16
+--rw keep-wait-timer? uint16 +--ro keep-wait-timer? uint16
+--rw keep-alive-timer? uint8 +--rw keep-alive-timer? uint8
+--rw dead-timer? uint8 +--rw dead-timer? uint8
+--rw allow-negotiation? boolean +--rw allow-negotiation? boolean
+--rw max-keep-alive-timer? uint8 +--rw max-keep-alive-timer? uint8
+--rw max-dead-timer? uint8 +--rw max-dead-timer? uint8
+--rw min-keep-alive-timer? uint8 +--rw min-keep-alive-timer? uint8
+--rw min-dead-timer? uint8 +--rw min-dead-timer? uint8
+--rw sync-timer? uint16 {svec}? +--rw sync-timer? uint16 {svec}?
+--rw request-timer? uint16 +--rw request-timer? uint16
+--rw max-sessions? uint32 +--rw max-sessions? uint32
skipping to change at page 11, line 41 skipping to change at page 11, line 33
| | +--ro source inet:ip-address | | +--ro source inet:ip-address
| | +--ro global-source uint32 | | +--ro global-source uint32
| | +--ro extended-id string | | +--ro extended-id string
| | +--ro lsp* [plsp-id pcc-id lsp-id] | | +--ro lsp* [plsp-id pcc-id lsp-id]
| | +--ro plsp-id -> /pcep/entity/lsp-db/lsp/plsp-id | | +--ro plsp-id -> /pcep/entity/lsp-db/lsp/plsp-id
| | +--ro pcc-id -> /pcep/entity/lsp-db/lsp/pcc-id | | +--ro pcc-id -> /pcep/entity/lsp-db/lsp/pcc-id
| | +--ro lsp-id -> /pcep/entity/lsp-db/lsp/lsp-id | | +--ro lsp-id -> /pcep/entity/lsp-db/lsp/lsp-id
| +--ro lsp* [plsp-id pcc-id lsp-id] | +--ro lsp* [plsp-id pcc-id lsp-id]
| +--ro plsp-id uint32 | +--ro plsp-id uint32
| +--ro pcc-id inet:ip-address | +--ro pcc-id inet:ip-address
| +--ro source? | +--ro source? inet:ip-address
| | -> /te:te/lsps/lsp/source | +--ro destination? inet:ip-address
| +--ro destination? | +--ro tunnel-id? uint16
| | -> /te:te/lsps/lsp/destination | +--ro lsp-id uint16
| +--ro tunnel-id? | +--ro extended-tunnel-id? inet:ip-address
| | -> /te:te/lsps/lsp/tunnel-id
| +--ro lsp-id
| | -> /te:te/lsps/lsp/lsp-id
| +--ro extended-tunnel-id?
| | -> /te:te/lsps/lsp/extended-tunnel-id
| +--ro admin-state? boolean | +--ro admin-state? boolean
| +--ro operational-state? operational-state | +--ro operational-state? operational-state
| +--ro delegated | +--ro delegated
| | +--ro enabled? boolean | | +--ro enabled? boolean
| | +--ro peer? -> /pcep/entity/peers/peer/addr | | +--ro peer? -> /pcep/entity/peers/peer/addr
| | +--ro srp-id? uint32 | | +--ro srp-id? uint32
| +--ro initiation {pce-initiated}? | +--ro initiation {pce-initiated}?
| | +--ro enabled? boolean | | +--ro enabled? boolean
| | +--ro peer? -> /pcep/entity/peers/peer/addr | | +--ro peer? -> /pcep/entity/peers/peer/addr
| +--ro symbolic-path-name? string | +--ro symbolic-path-name? string
skipping to change at page 13, line 6 skipping to change at page 12, line 41
| | | +--ro node-id te-node-id | | | +--ro node-id te-node-id
| | | +--ro hop-type? te-hop-type | | | +--ro hop-type? te-hop-type
| | | +--ro direction? te-link-direction | | | +--ro direction? te-link-direction
| | +--:(as-number) | | +--:(as-number)
| | | +--ro as-number-hop | | | +--ro as-number-hop
| | | +--ro as-number inet:as-number | | | +--ro as-number inet:as-number
| | | +--ro hop-type? te-hop-type | | | +--ro hop-type? te-hop-type
| | +--:(label) | | +--:(label)
| | +--ro label-hop | | +--ro label-hop
| | +--ro te-label | | +--ro te-label
| | +--ro (technology)? | | ...
| | | +--:(generic)
| | | ...
| | +--ro direction?
| | te-label-direction
| +--ro pcc-original? -> /pcep/entity/peers/peer/addr | +--ro pcc-original? -> /pcep/entity/peers/peer/addr
| +--ro req-id? uint32 | +--ro req-id? uint32
| +--ro retrieved? boolean | +--ro retrieved? boolean
| +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr | +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr
| +--ro creation-time? yang:timestamp | +--ro creation-time? yang:timestamp
| +--ro discard-time? uint32 | +--ro discard-time? uint32
| +--ro reuse-time? uint32 | +--ro reuse-time? uint32
+--rw peers +--rw peers
+--rw peer* [addr] +--rw peer* [addr]
... ...
skipping to change at page 14, line 13 skipping to change at page 13, line 44
+--rw pcep! +--rw pcep!
+--rw entity +--rw entity
... ...
+--rw peers +--rw peers
+--rw peer* [addr] +--rw peer* [addr]
+--rw addr inet:ip-address +--rw addr inet:ip-address
+--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 identityref
| +--rw domain domain | +--rw domain domain
+--rw capability +--rw capability
| +--rw capability? bits | +--rw capability? bits
| +--rw pce-initiated? boolean | +--rw pce-initiated? boolean
| | {pce-initiated}? | | {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
skipping to change at page 14, line 41 skipping to change at page 14, line 23
+--rw msd? uint8 {sr}? +--rw msd? uint8 {sr}?
+--rw pce-info +--rw pce-info
| +--rw scope | +--rw scope
| | +--rw path-scope? bits | | +--rw path-scope? bits
| | +--rw intra-area-pref? uint8 | | +--rw intra-area-pref? uint8
| | +--rw inter-area-pref? uint8 | | +--rw inter-area-pref? uint8
| | +--rw inter-as-pref? uint8 | | +--rw inter-as-pref? uint8
| | +--rw inter-layer-pref? uint8 | | +--rw inter-layer-pref? uint8
| +--rw neigh-domains | +--rw neigh-domains
| +--rw domain* [domain-type domain] | +--rw domain* [domain-type domain]
| +--rw domain-type domain-type | +--rw domain-type identityref
| +--rw domain domain | +--rw domain domain
+--rw delegation-pref? uint8 {stateful}? +--rw delegation-pref? uint8 {stateful}?
+--rw auth +--rw auth
| +--rw (auth-type-selection)? | +--rw (auth-type-selection)?
| +--:(auth-key-chain) | +--:(auth-key-chain)
| | +--rw key-chain? | | +--rw key-chain?
| | key-chain:key-chain-ref | | key-chain:key-chain-ref
| +--:(auth-key) | +--:(auth-key)
| | +--rw crypto-algorithm identityref | | +--rw crypto-algorithm identityref
| | +--rw (key-string-style)? | | +--rw (key-string-style)?
skipping to change at page 18, line 5 skipping to change at page 17, line 46
5.6. RPC 5.6. RPC
This YANG model defines a RPC to trigger state resynchronization to a This YANG model defines a RPC to trigger state resynchronization to a
particular PCEP peer. particular PCEP peer.
rpcs: rpcs:
+---x trigger-resync {stateful,sync-opt}? +---x trigger-resync {stateful,sync-opt}?
+---w input +---w input
+---w pcc? -> /pcep/entity/peers/peer/addr +---w pcc? -> /pcep/entity/peers/peer/addr
5.7. The Full PCEP Data Model
The module, "ietf-pcep", defines the basic components of a PCE
speaker. The tree depth in the tree is set to 10.
module: ietf-pcep
+--rw pcep!
+--rw entity
+--rw addr inet:ip-address
+--rw enabled? boolean
+--rw role pcep-role
+--rw description? string
+--rw speaker-entity-id? string {sync-opt}?
+--rw admin-status? boolean
+--ro index? uint32
+--ro oper-status? pcep-oper-status
+--rw domain
| +--rw domain* [domain-type domain]
| +--rw domain-type domain-type
| +--rw domain domain
+--rw capability
| +--rw capability? bits
| +--rw pce-initiated? boolean {pce-initiated}?
| +--rw include-db-ver? boolean {stateful,sync-opt}?
| +--rw trigger-resync? boolean {stateful,sync-opt}?
| +--rw trigger-initial-sync? boolean {stateful,sync-opt}?
| +--rw incremental-sync? boolean {stateful,sync-opt}?
| +--rw sr {sr}?
| +--rw enabled? boolean
| +--rw msd-limit? boolean
| +--rw nai? boolean
+--rw msd? uint8 {sr}?
+--rw pce-info
| +--rw scope
| | +--rw path-scope? bits
| | +--rw intra-area-pref? uint8
| | +--rw inter-area-pref? uint8
| | +--rw inter-as-pref? uint8
| | +--rw inter-layer-pref? uint8
| +--rw neigh-domains
| | +--rw domain* [domain-type domain]
| | +--rw domain-type domain-type
| | +--rw domain domain
| +--rw path-key {path-key}?
| +--rw enabled? boolean
| +--rw discard-timer? uint32
| +--rw reuse-time? uint32
| +--rw pce-id? inet:ip-address
+--rw connect-timer? uint16
+--rw connect-max-retry? uint32
+--rw init-backoff-timer? uint16
+--rw max-backoff-timer? uint32
+--ro open-wait-timer? uint16
+--ro keep-wait-timer? uint16
+--rw keep-alive-timer? uint8
+--rw dead-timer? uint8
+--rw allow-negotiation? boolean
+--rw max-keep-alive-timer? uint8
+--rw max-dead-timer? uint8
+--rw min-keep-alive-timer? uint8
+--rw min-dead-timer? uint8
+--rw sync-timer? uint16 {svec}?
+--rw request-timer? uint16
+--rw max-sessions? uint32
+--rw max-unknown-reqs? uint32
+--rw max-unknown-msgs? uint32
+--rw pcep-notification-max-rate uint32
+--rw stateful-parameter {stateful}?
| +--rw state-timeout? uint32
| +--rw redelegation-timeout? uint32
| +--rw rpt-non-pcep-lsp? boolean
+--rw of-list {objective-function}?
| +--rw objective-function* [of]
| +--rw of identityref
+--ro lsp-db {stateful}?
| +--ro db-ver? uint64 {sync-opt}?
| +--ro association-list*
| | [type id source global-source extended-id]
| | {association}?
| | +--ro type identityref
| | +--ro id uint16
| | +--ro source inet:ip-address
| | +--ro global-source uint32
| | +--ro extended-id string
| | +--ro lsp* [plsp-id pcc-id lsp-id]
| | +--ro plsp-id -> /pcep/entity/lsp-db/lsp/plsp-id
| | +--ro pcc-id -> /pcep/entity/lsp-db/lsp/pcc-id
| | +--ro lsp-id -> /pcep/entity/lsp-db/lsp/lsp-id
| +--ro lsp* [plsp-id pcc-id lsp-id]
| +--ro plsp-id uint32
| +--ro pcc-id inet:ip-address
| +--ro source? -> /te:te/lsps/lsp/source
| +--ro destination?
| | -> /te:te/lsps/lsp/destination
| +--ro tunnel-id?
| | -> /te:te/lsps/lsp/tunnel-id
| +--ro lsp-id -> /te:te/lsps/lsp/lsp-id
| +--ro extended-tunnel-id?
| | -> /te:te/lsps/lsp/extended-tunnel-id
| +--ro admin-state? boolean
| +--ro operational-state? operational-state
| +--ro delegated
| | +--ro enabled? boolean
| | +--ro peer? -> /pcep/entity/peers/peer/addr
| | +--ro srp-id? uint32
| +--ro initiation {pce-initiated}?
| | +--ro enabled? boolean
| | +--ro peer? -> /pcep/entity/peers/peer/addr
| +--ro symbolic-path-name? string
| +--ro last-error? identityref
| +--ro pst? identityref
| +--ro association-list*
| [type id source global-source extended-id]
| {association}?
| +--ro type
| | -> /pcep/entity/lsp-db/association-list/type
| +--ro id
| | -> /pcep/entity/lsp-db/association-list/id
| +--ro source leafref
| +--ro global-source leafref
| +--ro extended-id leafref
+--ro path-keys {path-key}?
| +--ro path-keys* [path-key]
| +--ro path-key uint16
| +--ro cps
| | +--ro explicit-route-objects* [index]
| | +--ro index uint32
| | +--ro (type)?
| | +--:(numbered-node-hop)
| | | +--ro numbered-node-hop
| | | +--ro node-id te-node-id
| | | +--ro hop-type? te-hop-type
| | +--:(numbered-link-hop)
| | | +--ro numbered-link-hop
| | | +--ro link-tp-id te-tp-id
| | | +--ro hop-type? te-hop-type
| | | +--ro direction? te-link-direction
| | +--:(unnumbered-link-hop)
| | | +--ro unnumbered-link-hop
| | | +--ro link-tp-id te-tp-id
| | | +--ro node-id te-node-id
| | | +--ro hop-type? te-hop-type
| | | +--ro direction? te-link-direction
| | +--:(as-number)
| | | +--ro as-number-hop
| | | +--ro as-number inet:as-number
| | | +--ro hop-type? te-hop-type
| | +--:(label)
| | +--ro label-hop
| | +--ro te-label
| | ...
| +--ro pcc-original? -> /pcep/entity/peers/peer/addr
| +--ro req-id? uint32
| +--ro retrieved? boolean
| +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr
| +--ro creation-time? yang:timestamp
| +--ro discard-time? uint32
| +--ro reuse-time? uint32
+--rw peers
+--rw peer* [addr]
+--rw addr inet:ip-address
+--rw role pcep-role
+--rw description? string
+--rw domain
| +--rw domain* [domain-type domain]
| +--rw domain-type domain-type
| +--rw domain domain
+--rw capability
| +--rw capability? bits
| +--rw pce-initiated? boolean
| | {pce-initiated}?
| +--rw include-db-ver? boolean
| | {stateful,sync-opt}?
| +--rw trigger-resync? boolean
| | {stateful,sync-opt}?
| +--rw trigger-initial-sync? boolean
| | {stateful,sync-opt}?
| +--rw incremental-sync? boolean
| | {stateful,sync-opt}?
| +--rw sr {sr}?
| +--rw enabled? boolean
| +--rw msd-limit? boolean
| +--rw nai? boolean
+--rw msd? uint8 {sr}?
+--rw pce-info
| +--rw scope
| | +--rw path-scope? bits
| | +--rw intra-area-pref? uint8
| | +--rw inter-area-pref? uint8
| | +--rw inter-as-pref? uint8
| | +--rw inter-layer-pref? uint8
| +--rw neigh-domains
| +--rw domain* [domain-type domain]
| +--rw domain-type domain-type
| +--rw domain domain
+--rw delegation-pref? uint8 {stateful}?
+--rw auth
| +--rw (auth-type-selection)?
| +--:(auth-key-chain)
| | +--rw key-chain?
| | key-chain:key-chain-ref
| +--:(auth-key)
| | +--rw crypto-algorithm identityref
| | +--rw (key-string-style)?
| | +--:(keystring)
| | | +--rw keystring? string
| | +--:(hexadecimal)
| | {key-chain:hex-key-string}?
| | +--rw hexadecimal-string?
| | yang:hex-string
| +--:(auth-tls) {tls}?
| +--rw (role)?
| +--:(server)
| | +--rw tls-server
| | ...
| +--:(client)
| +--rw tls-client
| ...
+--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? uint8
+--ro remote-id? uint8
+--ro keepalive-timer? uint8
+--ro peer-keepalive-timer? uint8
+--ro dead-timer? uint8
+--ro peer-dead-timer? uint8
+--ro ka-hold-time-rem? uint8
+--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,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 {sync-opt}?
+--ro discontinuity-time? yang:timestamp
rpcs:
+---x trigger-resync {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
6. The Design of PCEP Statistics Data Model 6. The Design of PCEP Statistics Data Model
The module, "ietf-pcep-stats", augments the ietf-pcep module to The module, "ietf-pcep-stats", augments the ietf-pcep module to
include statistics at the PCEP peer and session level. include statistics at the PCEP peer and session level.
module: ietf-pcep-stats module: ietf-pcep-stats
augment /pcep:pcep/pcep:entity/pcep:peers/pcep:peer: augment /pcep:pcep/pcep:entity/pcep:peers/pcep:peer:
+--ro num-sess-setup-ok? yang:counter32 +--ro num-sess-setup-ok? yang:counter32
+--ro num-sess-setup-fail? yang:counter32 +--ro num-sess-setup-fail? yang:counter32
+--ro pcep-stats +--ro pcep-stats
+--ro avg-rsp-time? uint32 +--ro avg-rsp-time? uint32
+--ro lwm-rsp-time? uint32 +--ro lwm-rsp-time? uint32
+--ro hwm-rsp-time? uint32 +--ro hwm-rsp-time? uint32
+--ro num-pcreq-sent? yang:counter32 +--ro num-pcreq-sent? yang:counter32
+--ro num-pcreq-rcvd? yang:counter32 +--ro num-pcreq-rcvd? yang:counter32
+--ro num-pcrep-sent? yang:counter32 +--ro num-pcrep-sent? yang:counter32
+--ro num-pcrep-rcvd? yang:counter32 +--ro num-pcrep-rcvd? yang:counter32
skipping to change at page 28, line 5 skipping to change at page 21, line 32
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.
The PCEP data model contains the operational state of LSPs The PCEP data model contains the operational state of LSPs
(/pcep/entity/lsp-db/lsp/) with PCEP specific attributes. The (/pcep/entity/lsp-db/lsp/) with PCEP specific attributes. The
generic TE attributes of the LSP are defined in generic TE attributes of the LSP are defined in
[I-D.ietf-teas-yang-te]. A reference to LSP state in TE model is [I-D.ietf-teas-yang-te]. A reference to LSP state in TE model is
maintained. maintained.
8. Open Issues and Next Step 8. Other Considerations
This section is added so that open issues can be tracked. This
section would be removed when the document is ready for publication.
8.1. The PCE-Initiated LSP
The TE Model at [I-D.ietf-teas-yang-te] should support creating of
tunnels at the controller (PCE) and marking them as PCE-Initiated.
The LSP-DB in the PCEP Yang (/pcep/entity/lsp-db/lsp/initiation) also
marks the LSPs which are PCE-initiated.
8.2. LSP-ID
Use of lsp-id as a key in the LSPDB could be an issue for a non-RSVP-
TE path setup type. The lsp-id filed is currently a leafref to the
TE model [I-D.ietf-teas-yang-te]. Need to a confirm if this is
problematic.
9. Other Considerations
9.1. PCEP over TLS (PCEPS) 8.1. PCEP over TLS (PCEPS)
[RFC8253] describe the use of TLS in PCEP. The peer acting as the [RFC8253] describe the use of TLS in PCEP. The peer acting as the
PCEP client must act as the TLS client. The TLS client actively PCEP client must act as the TLS client. The TLS client actively
opens the TLS connection and the TLS server passively listens for the opens the TLS connection and the TLS server passively listens for the
incoming TLS connections. The well-known TCP port number 4189 is incoming TLS connections. The well-known TCP port number 4189 is
used by PCEP servers to listen for TCP connections established by used by PCEP servers to listen for TCP connections established by
PCEP over TLS clients. The TLS client sends the TLS ClientHello PCEP over TLS clients. The TLS client sends the TLS ClientHello
message to begin the TLS handshake. The TLS server sends a message to begin the TLS handshake. The TLS server sends a
CertificateRequest in order to request a certificate from the TLS CertificateRequest in order to request a certificate from the TLS
client. Once the TLS handshake has finished, the client and the client. Once the TLS handshake has finished, the client and the
server begin to exchange PCEP messages. Client and server identity server begin to exchange PCEP messages. Client and server identity
verification is done before the PCEP open message is sent. This verification is done before the PCEP open message is sent. This
means that the identity verification is completed before the PCEP means that the identity verification is completed before the PCEP
session is started. session is started.
10. PCEP YANG Modules 9. PCEP YANG Modules
10.1. ietf-pcep module 9.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@2020-10-31.yang" <CODE BEGINS> file "ietf-pcep@2021-02-22.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 reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
import ietf-te {
prefix te;
reference
"I-D.ietf-teas-yang-te: A YANG Data Model for Traffic
Engineering Tunnels and Interfaces";
}
import ietf-te-types { import ietf-te-types {
prefix te-types; prefix te-types;
reference reference
"RFC 8776: Common YANG Data Types for Traffic Engineering"; "RFC 8776: Common YANG Data Types for Traffic Engineering";
} }
import ietf-key-chain { import ietf-key-chain {
prefix key-chain; prefix key-chain;
reference reference
"RFC 8177: YANG Data Model for Key Chains"; "RFC 8177: YANG Data Model for Key Chains";
} }
skipping to change at page 30, line 33 skipping to change at page 23, line 38
description description
"The YANG module defines a generic configuration and "The YANG module defines a generic configuration and
operational model for PCEP. operational model for PCEP.
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as 'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
they appear in all capitals, as shown here. they appear in all capitals, as shown here.
Copyright (c) 2020 IETF Trust and the persons identified as Copyright (c) 2021 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
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
(https://trustee.ietf.org/license-info). (https://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 2020-10-31 { revision 2021-02-22 {
description description
"Initial revision."; "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 (PCEP)"; Element Communications Protocol (PCEP)";
} }
/* /*
* Typedefs * Typedefs
*/ */
typedef pcep-role { typedef pcep-role {
type enumeration { type enumeration {
enum unknown { enum unknown {
value 0; value 0;
skipping to change at page 31, line 45 skipping to change at page 24, line 49
description description
"The role of a PCEP speaker. "The role of a PCEP speaker.
Takes one of the following values Takes one of the following values
- unknown(0): the role is not known. - unknown(0): the role is not known.
- pcc(1): the role is of a Path Computation - pcc(1): the role is of a Path Computation
Client (PCC). Client (PCC).
- pce(2): the role is of a Path Computation - pce(2): the role is of a Path Computation
Server (PCE). Server (PCE).
- pccAndPce(3): the role is of both a PCC and - pccAndPce(3): the role is of both a PCC and
a PCE."; a PCE.";
reference
"RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)";
} }
typedef pcep-oper-status { typedef pcep-oper-status {
type enumeration { type enumeration {
enum oper-status-up { enum oper-status-up {
value 1; value 1;
description description
"The PCEP entity is active"; "The PCEP entity is active";
} }
enum oper-status-down { enum oper-status-down {
value 2; value 2;
description description
"The PCEP entity is inactive"; "The PCEP entity is inactive";
} }
enum oper-status-going-up { enum oper-status-going-up {
value 3; value 3;
description description
"The PCEP entity is activating"; "The PCEP entity is activating";
skipping to change at page 34, line 10 skipping to change at page 27, line 18
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 reference
"RFC 5440: Path Computation Element (PCE) Communication "RFC 5440: Path Computation Element (PCE) Communication
Protocol (PCEP)"; Protocol (PCEP)";
} }
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-ospf-area { typedef domain-ospf-area {
type ospf:area-id-type; type ospf:area-id-type;
description description
"OSPF Area ID."; "OSPF Area ID.";
reference reference
"I-D.ietf-ospf-yang: YANG Data Model for OSPF Protocol"; "I-D.ietf-ospf-yang: YANG Data Model for OSPF Protocol";
} }
typedef domain-isis-area { typedef domain-isis-area {
type isis:area-address; type isis:area-address;
skipping to change at page 38, line 48 skipping to change at page 31, line 35
reference reference
"RFC 8697: Path Computation Element Communication Protocol "RFC 8697: Path Computation Element Communication Protocol
(PCEP) Extensions for Establishing Relationships between (PCEP) Extensions for Establishing Relationships between
Sets of Label Switched Paths (LSPs)"; Sets of Label Switched Paths (LSPs)";
} }
/* /*
* Identities * Identities
*/ */
identity domain-type {
description
"Base Domain Type for PCE";
}
identity ospf-area {
base domain-type;
description
"The OSPF area.";
}
identity isis-area {
base domain-type;
description
"The IS-IS area.";
}
identity autonomous-system {
base domain-type;
description
"The Autonomous System (AS).";
}
identity lsp-error { identity lsp-error {
if-feature "stateful"; if-feature "stateful";
description description
"Base LSP error"; "Base LSP error";
reference reference
"RFC 8231: Path Computation Element Communication Protocol "RFC 8231: Path Computation Element Communication Protocol
(PCEP) Extensions for Stateful PCE"; (PCEP) Extensions for Stateful PCE";
} }
identity no-error-lsp-error { identity no-error-lsp-error {
if-feature "stateful"; if-feature "stateful";
base lsp-error; base lsp-error;
description description
"No error, LSP is fine."; "No error, LSP is fine.";
skipping to change at page 42, line 42 skipping to change at page 36, line 4
computation."; computation.";
} }
} }
//pce-scope //pce-scope
grouping domain { grouping domain {
description description
"This grouping specifies a Domain where the "This grouping specifies a Domain where the
PCEP speaker has topology visibility."; PCEP speaker has topology visibility.";
leaf domain-type { leaf domain-type {
type domain-type; type identityref {
base domain-type;
}
description description
"The domain type."; "The domain type.";
} }
leaf domain { leaf domain {
type domain; type domain;
description description
"The domain Information."; "The domain Information.";
} }
} }
//domain //domain
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 61, line 23 skipping to change at page 54, line 35
PLSP-ID is 20 bits with 0 and 0xFFFFF are PLSP-ID is 20 bits with 0 and 0xFFFFF are
reserved"; reserved";
} }
leaf pcc-id { leaf pcc-id {
type inet:ip-address; type inet:ip-address;
description description
"The local internet address of the PCC, that "The local internet address of the PCC, that
generated the PLSP-ID."; generated the PLSP-ID.";
} }
leaf source { leaf source {
type leafref { type inet:ip-address;
path "/te:te/te:lsps/te:lsp/te:source";
}
description description
"Tunnel sender address extracted from "Tunnel sender address extracted from
SENDER_TEMPLATE object"; LSP-IDENTIFIERS TLV";
reference reference
"RFC 3209: RSVP-TE: Extensions to RSVP for "RFC 8231: Path Computation Element
LSP Tunnels"; Communication Protocol (PCEP) Extensions
for Stateful PCE";
} }
leaf destination { leaf destination {
type leafref { type inet:ip-address;
path "/te:te/te:lsps/te:lsp/te:"
+ "destination";
}
description description
"Tunnel endpoint address extracted from "Tunnel endpoint address extracted from
SESSION object"; LSP-IDENTIFIERS TLV";
reference reference
"RFC 3209: RSVP-TE: Extensions to RSVP for "RFC 8231: Path Computation Element
LSP Tunnels"; Communication Protocol (PCEP) Extensions
for Stateful PCE";
} }
leaf tunnel-id { leaf tunnel-id {
type leafref { type uint16;
path "/te:te/te:lsps/te:lsp/te:tunnel-id";
}
description description
"Tunnel identifier used in the SESSION "Tunnel identifier used in the LSP-IDENTIFIERS
that remains constant over the life TLV that remains constant over the life
of the tunnel."; of the tunnel.";
reference reference
"RFC 3209: RSVP-TE: Extensions to RSVP for "RFC 8231: Path Computation Element
LSP Tunnels"; Communication Protocol (PCEP) Extensions
for Stateful PCE";
} }
leaf lsp-id { leaf lsp-id {
type leafref { type uint16;
path "/te:te/te:lsps/te:lsp/te:lsp-id";
}
description description
"Identifier used in the SENDER_TEMPLATE "Identifier used in the LSP-IDENTIFIERS TLV
and the FILTER_SPEC that can be changed that can be changed to allow a sender to share
to allow a sender to share resources with resources with itself.";
itself.";
reference reference
"RFC 3209: RSVP-TE: Extensions to RSVP for "RFC 8231: Path Computation Element
LSP Tunnels"; Communication Protocol (PCEP) Extensions
for Stateful PCE";
} }
leaf extended-tunnel-id { leaf extended-tunnel-id {
type leafref { type inet:ip-address;
path "/te:te/te:lsps/te:lsp/te:"
+ "extended-tunnel-id";
}
description description
"Extended Tunnel ID of the LSP."; "Extended Tunnel ID of the LSP in LSP-IDENTIFIERS
TLV.";
reference reference
"RFC 3209: RSVP-TE: Extensions to RSVP for "RFC 8231: Path Computation Element
LSP Tunnels"; Communication Protocol (PCEP) Extensions
for Stateful PCE";
} }
leaf admin-state { leaf admin-state {
type boolean; type boolean;
default "true";
description description
"The desired operational state"; "The desired operational state";
} }
leaf operational-state { leaf operational-state {
type operational-state; type operational-state;
description description
"The operational status of the LSP"; "The operational status of the LSP";
} }
container delegated { container delegated {
description description
skipping to change at page 62, line 46 skipping to change at page 56, line 4
"The desired operational state"; "The desired operational state";
} }
leaf operational-state { leaf operational-state {
type operational-state; type operational-state;
description description
"The operational status of the LSP"; "The operational status of the LSP";
} }
container delegated { container delegated {
description description
"The delegation related parameters"; "The delegation related parameters";
leaf enabled { leaf enabled {
type boolean; type boolean;
default "false";
description description
"LSP is delegated or not"; "LSP is delegated or not";
} }
leaf peer { leaf peer {
type leafref { type leafref {
path "/pcep/entity/peers/peer/addr"; path "/pcep/entity/peers/peer/addr";
} }
must '(../enabled = true())' { must '(../enabled = true())' {
error-message "The LSP must be delegated"; error-message "The LSP must be delegated";
} }
skipping to change at page 63, line 33 skipping to change at page 56, line 41
container initiation { container initiation {
if-feature "pce-initiated"; if-feature "pce-initiated";
description description
"The PCE initiation related parameters"; "The PCE initiation related parameters";
reference reference
"RFC 8281: Path Computation Element Communication "RFC 8281: Path Computation Element Communication
Protocol (PCEP) Extensions for PCE-Initiated LSP Protocol (PCEP) Extensions for PCE-Initiated LSP
Setup in a Stateful PCE Model"; Setup in a Stateful PCE Model";
leaf enabled { leaf enabled {
type boolean; type boolean;
default "false";
description description
"Set to true if this LSP is initiated by a PCE"; "Set to true if this LSP is initiated by a PCE";
} }
leaf peer { leaf peer {
type leafref { type leafref {
path "/pcep/entity/peers/peer/addr"; path "/pcep/entity/peers/peer/addr";
} }
must '(../enabled = true())' { must '(../enabled = true())' {
error-message "The LSP must be PCE-Initiated"; error-message "The LSP must be PCE-Initiated";
} }
skipping to change at page 83, line 21 skipping to change at page 76, line 29
"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.";
} }
} }
//input //input
} }
//rpc //rpc
} }
<CODE ENDS> <CODE ENDS>
10.2. ietf-pcep-stats module 9.2. ietf-pcep-stats module
<CODE BEGINS> file "ietf-pcep-stats@2020-10-31.yang" <CODE BEGINS> file "ietf-pcep-stats@2021-02-22.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 pcep-stats; prefix pcep-stats;
import ietf-pcep { import ietf-pcep {
prefix pcep; prefix pcep;
reference reference
"RFC XXXX: A YANG Data Model for Path Computation "RFC XXXX: A YANG Data Model for Path Computation
Element Communications Protocol (PCEP)"; Element Communications Protocol (PCEP)";
skipping to change at page 84, line 4 skipping to change at page 77, line 10
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
organization organization
"IETF PCE (Path Computation Element) Working Group"; "IETF PCE (Path Computation Element) Working Group";
contact contact
"WG Web: <https://tools.ietf.org/wg/pce/> "WG Web: <https://tools.ietf.org/wg/pce/>
WG List: <mailto:pce@ietf.org> WG List: <mailto:pce@ietf.org>
Editor: Dhruv Dhody Editor: Dhruv Dhody
<mailto:dhruv.ietf@gmail.com>"; <mailto:dhruv.ietf@gmail.com>";
description description
"The YANG module augments the PCEP yang operational "The YANG module augments the PCEP yang operational
model with statistics, counters and telemetry data. model with statistics, counters and telemetry data.
Copyright (c) 2020 IETF Trust and the persons identified as Copyright (c) 2021 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
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
(https://trustee.ietf.org/license-info). (https://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 2020-10-31 { revision 2021-02-22 {
description description
"Initial revision."; "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 (PCEP)"; Element Communications Protocol (PCEP)";
} }
/* /*
* Groupings * Groupings
*/ */
skipping to change at page 101, line 4 skipping to change at page 94, line 10
+ "pcep:sessions/pcep:session" { + "pcep:sessions/pcep:session" {
description description
"Augmenting the statistics"; "Augmenting the statistics";
container pcep-stats { container pcep-stats {
description description
"The container for all statistics at session level."; "The container for all statistics at session level.";
uses pcep-stats { uses pcep-stats {
description description
"The statistics contained are for the current sessions to "The statistics contained are for the current sessions to
that peer. These are lost when the session goes down."; that peer. These are lost when the session goes down.";
} }
} }
//pcep-stats //pcep-stats
} }
//augment //augment
} }
<CODE ENDS> <CODE ENDS>
11. Security Considerations 10. Security Considerations
The YANG modules defined in this document is designed to be accessed The YANG modules 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 [RFC8446] 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-
skipping to change at page 102, line 43 skipping to change at page 95, line 46
unauthorized parties; compromise of the key data would allow an unauthorized parties; compromise of the key data would allow an
attacker to forge PCEP traffic that would be accepted as authentic, attacker to forge PCEP traffic that would be accepted as authentic,
potentially compromising the TE domain. potentially compromising the TE domain.
The model describes several notifications, implementations must rate- The model describes several notifications, implementations must rate-
limit the generation of these notifications to avoid creating limit the generation of these notifications to avoid creating
significant notification load. Otherwise, this notification load may significant notification load. Otherwise, this notification load may
have some side effects on the system stability and may be exploited have some side effects on the system stability and may be exploited
as an attack vector. as an attack vector.
12. IANA Considerations 11. IANA Considerations
This document request the IANA to register two URIs in the "IETF XML This document request the IANA to register two URIs in the "IETF XML
Registry" [RFC3688]. Following the format in RFC 3688, the following Registry" [RFC3688]. Following the format in RFC 3688, the following
registrations are requested - registrations are requested -
URI: urn:ietf:params:xml:ns:yang:ietf-pcep URI: urn:ietf:params:xml:ns:yang:ietf-pcep
Registrant Contact: The IESG Registrant Contact: The IESG
XML: N/A; the requested URI is an XML namespace. XML: N/A; the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-pcep-stats URI: urn:ietf:params:xml:ns:yang:ietf-pcep-stats
Registrant Contact: The IESG Registrant Contact: The IESG
skipping to change at page 103, line 25 skipping to change at page 96, line 25
Name: ietf-pcep Name: ietf-pcep
Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep
Prefix: pcep Prefix: pcep
Reference: [This.I-D] Reference: [This.I-D]
Name: ietf-pcep-stats Name: ietf-pcep-stats
Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep-stats Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep-stats
Prefix: pcep-stats Prefix: pcep-stats
Reference: [This.I-D] Reference: [This.I-D]
13. Implementation Status 12. Implementation Status
[Note to the RFC Editor - remove this section before publication, as [Note to the RFC Editor - remove this section before publication, as
well as remove the reference to RFC 7942.] well as remove the reference to RFC 7942.]
This section records the status of known implementations of the This section records the status of known implementations of the
protocol defined by this specification at the time of posting of this protocol defined by this specification at the time of posting of this
Internet-Draft, and is based on a proposal described in [RFC7942]. Internet-Draft, and is based on a proposal described in [RFC7942].
The description of implementations in this section is intended to The description of implementations in this section is intended to
assist the IETF in its decision processes in progressing drafts to assist the IETF in its decision processes in progressing drafts to
RFCs. Please note that the listing of any individual implementation RFCs. Please note that the listing of any individual implementation
skipping to change at page 104, line 8 skipping to change at page 97, line 8
According to [RFC7942], "this will allow reviewers and working groups According to [RFC7942], "this will allow reviewers and working groups
to assign due consideration to documents that have the benefit of to assign due consideration to documents that have the benefit of
running code, which may serve as evidence of valuable experimentation running code, which may serve as evidence of valuable experimentation
and feedback that have made the implemented protocols more mature. and feedback that have made the implemented protocols more mature.
It is up to the individual working groups to use this information as It is up to the individual working groups to use this information as
they see fit". they see fit".
Currently, there are no known implementations of the YANG Module as Currently, there are no known implementations of the YANG Module as
specified. specified.
14. Acknowledgements 13. Acknowledgements
The initial document is based on the PCEP MIB [RFC7420]. We would The initial document is based on the PCEP MIB [RFC7420]. We would
like to thank the authors of aforementioned documents. like to thank the authors of aforementioned documents.
Thanks to Mahesh Jethmalani for the Yang Doctor review. Thanks to Mahesh Jethmalani for the Yang Doctor review.
Thanks to Martin Bjorklund and Tom Petch for providing guidance Thanks to Martin Bjorklund and Tom Petch for providing guidance
regarding the Yang guidelines. regarding the Yang guidelines.
15. References 14. References
15.1. Normative References 14.1. Normative References
[I-D.ietf-isis-yang-isis-cfg] [I-D.ietf-isis-yang-isis-cfg]
Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L.
Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf-
isis-yang-isis-cfg-42 (work in progress), October 2019. isis-yang-isis-cfg-42 (work in progress), October 2019.
[I-D.ietf-netconf-tls-client-server] [I-D.ietf-netconf-tls-client-server]
Watsen, K., "YANG Groupings for TLS Clients and TLS Watsen, K., "YANG Groupings for TLS Clients and TLS
Servers", draft-ietf-netconf-tls-client-server-22 (work in Servers", draft-ietf-netconf-tls-client-server-22 (work in
progress), August 2020. progress), August 2020.
skipping to change at page 104, line 48 skipping to change at page 97, line 48
Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin,
"A YANG Data Model for Traffic Engineering Tunnels, Label "A YANG Data Model for Traffic Engineering Tunnels, Label
Switched Paths and Interfaces", draft-ietf-teas-yang-te-25 Switched Paths and Interfaces", draft-ietf-teas-yang-te-25
(work in progress), July 2020. (work in progress), July 2020.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V.,
and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001,
<https://www.rfc-editor.org/info/rfc3209>.
[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>.
[RFC5088] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R. [RFC5088] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R.
Zhang, "OSPF Protocol Extensions for Path Computation Zhang, "OSPF Protocol Extensions for Path Computation
Element (PCE) Discovery", RFC 5088, DOI 10.17487/RFC5088, Element (PCE) Discovery", RFC 5088, DOI 10.17487/RFC5088,
January 2008, <https://www.rfc-editor.org/info/rfc5088>. January 2008, <https://www.rfc-editor.org/info/rfc5088>.
[RFC5089] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R. [RFC5089] Le Roux, JL., Ed., Vasseur, JP., Ed., Ikejiri, Y., and R.
skipping to change at page 108, line 5 skipping to change at page 101, line 5
"Common YANG Data Types for Traffic Engineering", "Common YANG Data Types for Traffic Engineering",
RFC 8776, DOI 10.17487/RFC8776, June 2020, RFC 8776, DOI 10.17487/RFC8776, June 2020,
<https://www.rfc-editor.org/info/rfc8776>. <https://www.rfc-editor.org/info/rfc8776>.
[RFC8779] Margaria, C., Ed., Gonzalez de Dios, O., Ed., and F. [RFC8779] Margaria, C., Ed., Gonzalez de Dios, O., Ed., and F.
Zhang, Ed., "Path Computation Element Communication Zhang, Ed., "Path Computation Element Communication
Protocol (PCEP) Extensions for GMPLS", RFC 8779, Protocol (PCEP) Extensions for GMPLS", RFC 8779,
DOI 10.17487/RFC8779, July 2020, DOI 10.17487/RFC8779, July 2020,
<https://www.rfc-editor.org/info/rfc8779>. <https://www.rfc-editor.org/info/rfc8779>.
15.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
(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,
skipping to change at page 109, line 5 skipping to change at page 102, line 5
[RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running [RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running
Code: The Implementation Status Section", BCP 205, Code: The Implementation Status Section", BCP 205,
RFC 7942, DOI 10.17487/RFC7942, July 2016, RFC 7942, DOI 10.17487/RFC7942, July 2016,
<https://www.rfc-editor.org/info/rfc7942>. <https://www.rfc-editor.org/info/rfc7942>.
[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
and R. Wilton, "Network Management Datastore Architecture and R. Wilton, "Network Management Datastore Architecture
(NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018,
<https://www.rfc-editor.org/info/rfc8342>. <https://www.rfc-editor.org/info/rfc8342>.
Appendix A. Example Appendix A. The Full PCEP Data Model
The module, "ietf-pcep", defines the basic components of a PCE
speaker. The tree depth in the tree is set to 10.
module: ietf-pcep
+--rw pcep!
+--rw entity
+--rw addr inet:ip-address
+--rw enabled? boolean
+--rw role pcep-role
+--rw description? string
+--rw speaker-entity-id? string {sync-opt}?
+--rw admin-status? boolean
+--ro index? uint32
+--ro oper-status? pcep-oper-status
+--rw domain
| +--rw domain* [domain-type domain]
| +--rw domain-type identityref
| +--rw domain domain
+--rw capability
| +--rw capability? bits
| +--rw pce-initiated? boolean {pce-initiated}?
| +--rw include-db-ver? boolean {stateful,sync-opt}?
| +--rw trigger-resync? boolean {stateful,sync-opt}?
| +--rw trigger-initial-sync? boolean {stateful,sync-opt}?
| +--rw incremental-sync? boolean {stateful,sync-opt}?
| +--rw sr {sr}?
| +--rw enabled? boolean
| +--rw msd-limit? boolean
| +--rw nai? boolean
+--rw msd? uint8 {sr}?
+--rw pce-info
| +--rw scope
| | +--rw path-scope? bits
| | +--rw intra-area-pref? uint8
| | +--rw inter-area-pref? uint8
| | +--rw inter-as-pref? uint8
| | +--rw inter-layer-pref? uint8
| +--rw neigh-domains
| | +--rw domain* [domain-type domain]
| | +--rw domain-type identityref
| | +--rw domain domain
| +--rw path-key {path-key}?
| +--rw enabled? boolean
| +--rw discard-timer? uint32
| +--rw reuse-time? uint32
| +--rw pce-id? inet:ip-address
+--rw connect-timer? uint16
+--rw connect-max-retry? uint32
+--rw init-backoff-timer? uint16
+--rw max-backoff-timer? uint32
+--ro open-wait-timer? uint16
+--ro keep-wait-timer? uint16
+--rw keep-alive-timer? uint8
+--rw dead-timer? uint8
+--rw allow-negotiation? boolean
+--rw max-keep-alive-timer? uint8
+--rw max-dead-timer? uint8
+--rw min-keep-alive-timer? uint8
+--rw min-dead-timer? uint8
+--rw sync-timer? uint16 {svec}?
+--rw request-timer? uint16
+--rw max-sessions? uint32
+--rw max-unknown-reqs? uint32
+--rw max-unknown-msgs? uint32
+--rw pcep-notification-max-rate uint32
+--rw stateful-parameter {stateful}?
| +--rw state-timeout? uint32
| +--rw redelegation-timeout? uint32
| +--rw rpt-non-pcep-lsp? boolean
+--rw of-list {objective-function}?
| +--rw objective-function* [of]
| +--rw of identityref
+--ro lsp-db {stateful}?
| +--ro db-ver? uint64 {sync-opt}?
| +--ro association-list*
| | [type id source global-source extended-id]
| | {association}?
| | +--ro type identityref
| | +--ro id uint16
| | +--ro source inet:ip-address
| | +--ro global-source uint32
| | +--ro extended-id string
| | +--ro lsp* [plsp-id pcc-id lsp-id]
| | +--ro plsp-id -> /pcep/entity/lsp-db/lsp/plsp-id
| | +--ro pcc-id -> /pcep/entity/lsp-db/lsp/pcc-id
| | +--ro lsp-id -> /pcep/entity/lsp-db/lsp/lsp-id
| +--ro lsp* [plsp-id pcc-id lsp-id]
| +--ro plsp-id uint32
| +--ro pcc-id inet:ip-address
| +--ro source? inet:ip-address
| +--ro destination? inet:ip-address
| +--ro tunnel-id? uint16
| +--ro lsp-id uint16
| +--ro extended-tunnel-id? inet:ip-address
| +--ro admin-state? boolean
| +--ro operational-state? operational-state
| +--ro delegated
| | +--ro enabled? boolean
| | +--ro peer? -> /pcep/entity/peers/peer/addr
| | +--ro srp-id? uint32
| +--ro initiation {pce-initiated}?
| | +--ro enabled? boolean
| | +--ro peer? -> /pcep/entity/peers/peer/addr
| +--ro symbolic-path-name? string
| +--ro last-error? identityref
| +--ro pst? identityref
| +--ro association-list*
| [type id source global-source extended-id]
| {association}?
| +--ro type
| | -> /pcep/entity/lsp-db/association-list/type
| +--ro id
| | -> /pcep/entity/lsp-db/association-list/id
| +--ro source leafref
| +--ro global-source leafref
| +--ro extended-id leafref
+--ro path-keys {path-key}?
| +--ro path-keys* [path-key]
| +--ro path-key uint16
| +--ro cps
| | +--ro explicit-route-objects* [index]
| | +--ro index uint32
| | +--ro (type)?
| | +--:(numbered-node-hop)
| | | +--ro numbered-node-hop
| | | +--ro node-id te-node-id
| | | +--ro hop-type? te-hop-type
| | +--:(numbered-link-hop)
| | | +--ro numbered-link-hop
| | | +--ro link-tp-id te-tp-id
| | | +--ro hop-type? te-hop-type
| | | +--ro direction? te-link-direction
| | +--:(unnumbered-link-hop)
| | | +--ro unnumbered-link-hop
| | | +--ro link-tp-id te-tp-id
| | | +--ro node-id te-node-id
| | | +--ro hop-type? te-hop-type
| | | +--ro direction? te-link-direction
| | +--:(as-number)
| | | +--ro as-number-hop
| | | +--ro as-number inet:as-number
| | | +--ro hop-type? te-hop-type
| | +--:(label)
| | +--ro label-hop
| | +--ro te-label
| | ...
| +--ro pcc-original? -> /pcep/entity/peers/peer/addr
| +--ro req-id? uint32
| +--ro retrieved? boolean
| +--ro pcc-retrieved? -> /pcep/entity/peers/peer/addr
| +--ro creation-time? yang:timestamp
| +--ro discard-time? uint32
| +--ro reuse-time? uint32
+--rw peers
+--rw peer* [addr]
+--rw addr inet:ip-address
+--rw role pcep-role
+--rw description? string
+--rw domain
| +--rw domain* [domain-type domain]
| +--rw domain-type identityref
| +--rw domain domain
+--rw capability
| +--rw capability? bits
| +--rw pce-initiated? boolean
| | {pce-initiated}?
| +--rw include-db-ver? boolean
| | {stateful,sync-opt}?
| +--rw trigger-resync? boolean
| | {stateful,sync-opt}?
| +--rw trigger-initial-sync? boolean
| | {stateful,sync-opt}?
| +--rw incremental-sync? boolean
| | {stateful,sync-opt}?
| +--rw sr {sr}?
| +--rw enabled? boolean
| +--rw msd-limit? boolean
| +--rw nai? boolean
+--rw msd? uint8 {sr}?
+--rw pce-info
| +--rw scope
| | +--rw path-scope? bits
| | +--rw intra-area-pref? uint8
| | +--rw inter-area-pref? uint8
| | +--rw inter-as-pref? uint8
| | +--rw inter-layer-pref? uint8
| +--rw neigh-domains
| +--rw domain* [domain-type domain]
| +--rw domain-type identityref
| +--rw domain domain
+--rw delegation-pref? uint8 {stateful}?
+--rw auth
| +--rw (auth-type-selection)?
| +--:(auth-key-chain)
| | +--rw key-chain?
| | key-chain:key-chain-ref
| +--:(auth-key)
| | +--rw crypto-algorithm identityref
| | +--rw (key-string-style)?
| | +--:(keystring)
| | | +--rw keystring? string
| | +--:(hexadecimal)
| | {key-chain:hex-key-string}?
| | +--rw hexadecimal-string?
| | yang:hex-string
| +--:(auth-tls) {tls}?
| +--rw (role)?
| +--:(server)
| | +--rw tls-server
| | ...
| +--:(client)
| +--rw tls-client
| ...
+--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? uint8
+--ro remote-id? uint8
+--ro keepalive-timer? uint8
+--ro peer-keepalive-timer? uint8
+--ro dead-timer? uint8
+--ro peer-dead-timer? uint8
+--ro ka-hold-time-rem? uint8
+--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,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 {sync-opt}?
+--ro discontinuity-time? yang:timestamp
rpcs:
+---x trigger-resync {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
Appendix B. Example
The example below provide an overview of PCEP peer session The example below provide an overview of PCEP peer session
informations and LSP-DB in the Yang Module. informations and LSP-DB in the Yang Module.
+-------+ +-------+ +-------+ +-------+
| | | | | | | |
| PCC1 |<---------------->| | | PCC1 |<---------------->| |
| | | | | | | |
+-------+ | | +-------+ | |
IP:192.0.2.1 | | IP:192.0.2.1 | |
skipping to change at page 111, line 47 skipping to change at page 111, line 4
"session": { "session": {
"initiator": "remote", "initiator": "remote",
"role": "pcc", "role": "pcc",
} }
} }
] ]
} }
} }
] ]
} }
} }
Appendix B. Contributor Addresses Appendix C. Contributor Addresses
Rohit Pobbathi Rohit Pobbathi
Huawei Technologies Huawei Technologies
Divyashree Techno Park, Whitefield Divyashree Techno Park, Whitefield
Bangalore, Karnataka 560066 Bangalore, Karnataka 560066
India India
EMail: rohit.pobbathi@huawei.com EMail: rohit.pobbathi@huawei.com
Vinod KumarS Vinod KumarS
 End of changes. 82 change blocks. 
523 lines changed or deleted 469 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/