| < draft-ietf-pce-pcep-yang-02.txt | draft-ietf-pce-pcep-yang-03.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: September 13, 2017 Metaswitch | Expires: December 31, 2017 Metaswitch | |||
| V. Beeram | V. Beeram | |||
| Juniper Networks | Juniper Networks | |||
| J. Tantsura | J. Tantsura | |||
| March 12, 2017 | June 29, 2017 | |||
| 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-02 | draft-ietf-pce-pcep-yang-03 | |||
| Abstract | Abstract | |||
| This document defines a YANG data model for the management of Path | This document defines a YANG data model for the management of Path | |||
| Computation Element communications Protocol (PCEP) for communications | Computation Element communications Protocol (PCEP) for communications | |||
| between a Path Computation Client (PCC) and a Path Computation | between a Path Computation Client (PCC) and a Path Computation | |||
| Element (PCE), or between two PCEs. The data model includes | Element (PCE), or between two PCEs. The data model includes | |||
| configuration data and state data (status information and counters | configuration data and state data (status information and counters | |||
| for the collection of statistics). | for the collection of statistics). | |||
| skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 40 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on September 13, 2017. | This Internet-Draft will expire on December 31, 2017. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 20 ¶ | skipping to change at page 2, line 20 ¶ | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 | 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Terminology and Notation . . . . . . . . . . . . . . . . . . 3 | 3. Terminology and Notation . . . . . . . . . . . . . . . . . . 3 | |||
| 3.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 | 3.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5 | 3.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5 | |||
| 4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 4. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 6 | 5. The Design of PCEP Data Model . . . . . . . . . . . . . . . . 6 | |||
| 5.1. The Entity . . . . . . . . . . . . . . . . . . . . . . . 17 | 5.1. The Entity . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 5.2. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 17 | 5.2. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 5.3. The Session Lists . . . . . . . . . . . . . . . . . . . . 18 | 5.3. The Session Lists . . . . . . . . . . . . . . . . . . . . 16 | |||
| 5.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 18 | 5.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 5.5. RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 5.5. RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 6. The Design of PCEP Statistics Data Model . . . . . . . . . . 19 | 6. The Design of PCEP Statistics Data Model . . . . . . . . . . 16 | |||
| 7. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 22 | 7. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 19 | |||
| 7.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 22 | 7.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 20 | |||
| 8. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 22 | 8. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 20 | |||
| 8.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 23 | 8.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 20 | |||
| 8.2. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 23 | 9. Other Considerations . . . . . . . . . . . . . . . . . . . . 20 | |||
| 9. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 23 | 9.1. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 20 | |||
| 9.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 23 | 10. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 9.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 83 | 10.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 21 | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 103 | 10.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 77 | |||
| 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 104 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 97 | |||
| 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 105 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 98 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 105 | 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 98 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . 105 | 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 98 | |||
| 13.2. Informative References . . . . . . . . . . . . . . . . . 106 | 14.1. Normative References . . . . . . . . . . . . . . . . . . 98 | |||
| Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 108 | 14.2. Informative References . . . . . . . . . . . . . . . . . 100 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 109 | Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 102 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 103 | ||||
| 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 22 ¶ | skipping to change at page 3, line 22 ¶ | |||
| This document defines a YANG [RFC6020] data model for the management | This document defines a YANG [RFC6020] 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 | ||||
| configuration consistent with Network Management Datastore | ||||
| Architecture [I-D.ietf-netmod-revised-datastores]. The origin of the | ||||
| data is indicated 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", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| 3. Terminology and Notation | 3. Terminology and Notation | |||
| This document uses the terminology defined in [RFC4655] and | This document uses the terminology defined in [RFC4655] and | |||
| [RFC5440]. In particular, it uses the following acronyms. | [RFC5440]. In particular, it uses the following acronyms. | |||
| skipping to change at page 6, line 5 ¶ | skipping to change at page 6, line 5 ¶ | |||
| printed within curly brackets and a question mark "{...}? | printed within curly brackets and a question mark "{...}? | |||
| 3.2. Prefixes in Data Node Names | 3.2. Prefixes in Data Node Names | |||
| In this document, names of data nodes and other data model objects | In this document, names of data nodes and other data model objects | |||
| are often used without a prefix, as long as it is clear from the | are often used without a prefix, as long as it is clear from the | |||
| context in which YANG module each name is defined. Otherwise, names | context in which YANG module each name is defined. Otherwise, names | |||
| are prefixed using the standard prefix associated with the | are prefixed using the standard prefix associated with the | |||
| corresponding YANG module, as shown in Table 1. | corresponding YANG module, as shown in Table 1. | |||
| +-----------+------------------+---------------------------------+ | +-----------+-----------------+-------------------------------------+ | |||
| | Prefix | YANG module | Reference | | | Prefix | YANG module | Reference | | |||
| +-----------+------------------+---------------------------------+ | +-----------+-----------------+-------------------------------------+ | |||
| | yang | ietf-yang-types | [RFC6991] | | | yang | ietf-yang-types | [RFC6991] | | |||
| | inet | ietf-inet-types | [RFC6991] | | | inet | ietf-inet-types | [RFC6991] | | |||
| | te | ietf-te | [I-D.ietf-teas-yang-te] | | | te | ietf-te | [I-D.ietf-teas-yang-te] | | |||
| | te-types | ietf-te-types | [I-D.ietf-teas-yang-te] | | | te-types | ietf-te-types | [I-D.ietf-teas-yang-te] | | |||
| | key-chain | ietf-key-chain | [I-D.ietf-rtgwg-yang-key-chain] | | | key-chain | ietf-key-chain | [RFC8177] | | |||
| | nacm | ietf-netconf-acm | [RFC6536] | | | nacm | ietf-netconf- | [RFC6536] | | |||
| +-----------+------------------+---------------------------------+ | | | acm | | | |||
| | tls- | ietf-tls-server | [I-D.ietf-netconf-tls-client-server | | ||||
| | server | | ] | | ||||
| | tls- | ietf-tls-client | [I-D.ietf-netconf-tls-client-server | | ||||
| | client | | ] | | ||||
| +-----------+-----------------+-------------------------------------+ | ||||
| Table 1: Prefixes and corresponding YANG modules | Table 1: Prefixes and corresponding YANG modules | |||
| 4. Objectives | 4. Objectives | |||
| This section describes some of the design objectives for the model: | This section describes some of the design objectives for the model: | |||
| o In case of existing implementations, it needs to map the data | o In case of existing implementations, it needs to map the data | |||
| model defined in this document to their proprietary native data | model defined in this document to their proprietary native data | |||
| model. To facilitate such mappings, the data model should be | model. To facilitate such mappings, the data model should be | |||
| skipping to change at page 6, line 50 ¶ | skipping to change at page 7, line 7 ¶ | |||
| o It should be fairly straightforward to augment the base data model | o It should be fairly straightforward to augment the base data model | |||
| for advanced PCE features. | for advanced PCE features. | |||
| 5. The Design of PCEP Data Model | 5. The Design of PCEP Data Model | |||
| The module, "ietf-pcep", defines the basic components of a PCE | The module, "ietf-pcep", defines the basic components of a PCE | |||
| speaker. | speaker. | |||
| module: ietf-pcep | module: ietf-pcep | |||
| +--rw pcep! | +--rw pcep! | |||
| | +--rw entity | +--rw entity | |||
| | +--rw addr inet:ip-address | +--rw addr inet:ip-address | |||
| | +--rw enabled? boolean | +--rw enabled? boolean | |||
| | +--rw role pcep-role | +--rw role pcep-role | |||
| | +--rw description? string | +--rw description? string | |||
| | +--rw speaker-entity-id? string | +--rw speaker-entity-id? string | |||
| | | {stateful-sync-opt}? | ||||
| | +--rw domain | ||||
| | | +--rw domain* [domain-type domain] | ||||
| | | +--rw domain-type domain-type | ||||
| | | +--rw domain domain | ||||
| | +--rw capability | ||||
| | | +--rw gmpls? boolean {gmpls}? | ||||
| | | +--rw bi-dir? boolean | ||||
| | | +--rw diverse? boolean | ||||
| | | +--rw load-balance? boolean | ||||
| | | +--rw synchronize? boolean {svec}? | ||||
| | | +--rw objective-function? boolean | ||||
| | | | {objective-function}? | ||||
| | | +--rw add-path-constraint? boolean | ||||
| | | +--rw prioritization? boolean | ||||
| | | +--rw multi-request? boolean | ||||
| | | +--rw gco? boolean {gco}? | ||||
| | | +--rw p2mp? boolean {p2mp}? | ||||
| | | +--rw stateful {stateful}? | ||||
| | | | +--rw enabled? boolean | ||||
| | | | +--rw active? boolean | ||||
| | | | +--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 pce-info | ||||
| | | +--rw scope | ||||
| | | | +--rw intra-area-scope? boolean | ||||
| | | | +--rw intra-area-pref? uint8 | ||||
| | | | +--rw inter-area-scope? boolean | ||||
| | | | +--rw inter-area-scope-default? boolean | ||||
| | | | +--rw inter-area-pref? uint8 | ||||
| | | | +--rw inter-as-scope? boolean | ||||
| | | | +--rw inter-as-scope-default? boolean | ||||
| | | | +--rw inter-as-pref? uint8 | ||||
| | | | +--rw inter-layer-scope? boolean | ||||
| | | | +--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 (auth-type-selection)? | ||||
| | | +--:(auth-key-chain) | ||||
| | | | +--rw key-chain? | ||||
| | | | key-chain:key-chain-ref | ||||
| | | +--:(auth-key) | ||||
| | | | +--rw crypto-algorithm identityref | ||||
| | | | +--rw key-string | ||||
| | | | +--rw (key-string-style)? | ||||
| | | | +--:(keystring) | ||||
| | | | | +--rw keystring? string | ||||
| | | | +--:(hexadecimal) | ||||
| | | | {key-chain:hex-key-string}? | ||||
| | | | +--rw hexadecimal-string? yang:hex-string | ||||
| | | +--:(auth-tls) {tls}? | ||||
| | | +--rw tls | ||||
| | +--rw connect-timer? uint32 | ||||
| | +--rw connect-max-retry? uint32 | ||||
| | +--rw init-backoff-timer? uint32 | ||||
| | +--rw max-backoff-timer? uint32 | ||||
| | +--rw open-wait-timer? uint32 | ||||
| | +--rw keep-wait-timer? uint32 | ||||
| | +--rw keep-alive-timer? uint32 | ||||
| | +--rw dead-timer? uint32 | ||||
| | +--rw allow-negotiation? boolean | ||||
| | +--rw max-keep-alive-timer? uint32 | ||||
| | +--rw max-dead-timer? uint32 | ||||
| | +--rw min-keep-alive-timer? uint32 | ||||
| | +--rw min-dead-timer? uint32 | ||||
| | +--rw sync-timer? uint32 {svec}? | ||||
| | +--rw request-timer? uint32 | ||||
| | +--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 objective-function | ||||
| | +--rw peers | ||||
| | +--rw peer* [addr] | ||||
| | +--rw addr inet:ip-address | ||||
| | +--rw description? string | ||||
| | +--rw domain | ||||
| | | +--rw domain* [domain-type domain] | ||||
| | | +--rw domain-type domain-type | ||||
| | | +--rw domain domain | ||||
| | +--rw capability | ||||
| | | +--rw gmpls? boolean {gmpls}? | ||||
| | | +--rw bi-dir? boolean | ||||
| | | +--rw diverse? boolean | ||||
| | | +--rw load-balance? boolean | ||||
| | | +--rw synchronize? boolean {svec}? | ||||
| | | +--rw objective-function? boolean | ||||
| | | | {objective-function}? | ||||
| | | +--rw add-path-constraint? boolean | ||||
| | | +--rw prioritization? boolean | ||||
| | | +--rw multi-request? boolean | ||||
| | | +--rw gco? boolean {gco}? | ||||
| | | +--rw p2mp? boolean {p2mp}? | ||||
| | | +--rw stateful {stateful}? | ||||
| | | | +--rw enabled? boolean | ||||
| | | | +--rw active? boolean | ||||
| | | | +--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 scope | ||||
| | | +--rw intra-area-scope? boolean | ||||
| | | +--rw intra-area-pref? uint8 | ||||
| | | +--rw inter-area-scope? boolean | ||||
| | | +--rw inter-area-scope-default? boolean | ||||
| | | +--rw inter-area-pref? uint8 | ||||
| | | +--rw inter-as-scope? boolean | ||||
| | | +--rw inter-as-scope-default? boolean | ||||
| | | +--rw inter-as-pref? uint8 | ||||
| | | +--rw inter-layer-scope? boolean | ||||
| | | +--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-type-selection)? | ||||
| | +--:(auth-key-chain) | ||||
| | | +--rw key-chain? | ||||
| | | key-chain:key-chain-ref | ||||
| | +--:(auth-key) | ||||
| | | +--rw crypto-algorithm identityref | ||||
| | | +--rw key-string | ||||
| | | +--rw (key-string-style)? | ||||
| | | +--:(keystring) | ||||
| | | | +--rw keystring? string | ||||
| | | +--:(hexadecimal) | ||||
| | | {key-chain:hex-key-string}? | ||||
| | | +--rw hexadecimal-string? | ||||
| | | yang:hex-string | ||||
| | +--:(auth-tls) {tls}? | ||||
| | +--rw tls | ||||
| +--ro pcep-state | ||||
| +--ro entity | ||||
| +--ro addr? inet:ip-address | ||||
| +--ro index? uint32 | ||||
| +--ro admin-status? pcep-admin-status | ||||
| +--ro oper-status? pcep-admin-status | ||||
| +--ro role? pcep-role | ||||
| +--ro description? string | ||||
| +--ro speaker-entity-id? string | ||||
| | {stateful-sync-opt}? | | {stateful-sync-opt}? | |||
| +--ro domain | +--rw admin-status? pcep-admin-status | |||
| | +--ro domain* [domain-type domain] | +--ro index? uint32 | |||
| | +--ro domain-type domain-type | +--ro oper-status? pcep-oper-status | |||
| | +--ro domain domain | +--rw domain | |||
| +--ro capability | | +--rw domain* [domain-type domain] | |||
| | +--ro gmpls? boolean {gmpls}? | | +--rw domain-type domain-type | |||
| | +--ro bi-dir? boolean | | +--rw domain domain | |||
| | +--ro diverse? boolean | +--rw capability | |||
| | +--ro load-balance? boolean | | +--rw gmpls? boolean {gmpls}? | |||
| | +--ro synchronize? boolean {svec}? | | +--rw bi-dir? boolean | |||
| | +--ro objective-function? boolean | | +--rw diverse? boolean | |||
| | +--rw load-balance? boolean | ||||
| | +--rw synchronize? boolean {svec}? | ||||
| | +--rw objective-function? boolean | ||||
| | | {objective-function}? | | | {objective-function}? | |||
| | +--ro add-path-constraint? boolean | | +--rw add-path-constraint? boolean | |||
| | +--ro prioritization? boolean | | +--rw prioritization? boolean | |||
| | +--ro multi-request? boolean | | +--rw multi-request? boolean | |||
| | +--ro gco? boolean {gco}? | | +--rw gco? boolean {gco}? | |||
| | +--ro p2mp? boolean {p2mp}? | | +--rw p2mp? boolean {p2mp}? | |||
| | +--ro stateful {stateful}? | | +--rw stateful {stateful}? | |||
| | | +--ro enabled? boolean | | | +--rw enabled? boolean | |||
| | | +--ro active? boolean | | | +--rw active? boolean | |||
| | | +--ro pce-initiated? boolean | | | +--rw pce-initiated? boolean | |||
| | | | {pce-initiated}? | | | | {pce-initiated}? | |||
| | | +--ro include-db-ver? boolean | | | +--rw include-db-ver? boolean | |||
| | | | {stateful-sync-opt}? | | | | {stateful-sync-opt}? | |||
| | | +--ro trigger-resync? boolean | | | +--rw trigger-resync? boolean | |||
| | | | {stateful-sync-opt}? | | | | {stateful-sync-opt}? | |||
| | | +--ro trigger-initial-sync? boolean | | | +--rw trigger-initial-sync? boolean | |||
| | | | {stateful-sync-opt}? | | | | {stateful-sync-opt}? | |||
| | | +--ro incremental-sync? boolean | | | +--rw incremental-sync? boolean | |||
| | | {stateful-sync-opt}? | | | {stateful-sync-opt}? | |||
| | +--ro sr {sr}? | | +--rw sr {sr}? | |||
| | +--ro enabled? boolean | | +--rw enabled? boolean | |||
| +--ro pce-info | +--rw pce-info | |||
| | +--ro scope | | +--rw scope | |||
| | | +--ro intra-area-scope? boolean | | | +--rw intra-area-scope? boolean | |||
| | | +--ro intra-area-pref? uint8 | | | +--rw intra-area-pref? uint8 | |||
| | | +--ro inter-area-scope? boolean | | | +--rw inter-area-scope? boolean | |||
| | | +--ro inter-area-scope-default? boolean | | | +--rw inter-area-scope-default? boolean | |||
| | | +--ro inter-area-pref? uint8 | | | +--rw inter-area-pref? uint8 | |||
| | | +--ro inter-as-scope? boolean | | | +--rw inter-as-scope? boolean | |||
| | | +--ro inter-as-scope-default? boolean | | | +--rw inter-as-scope-default? boolean | |||
| | | +--ro inter-as-pref? uint8 | | | +--rw inter-as-pref? uint8 | |||
| | | +--ro inter-layer-scope? boolean | | | +--rw inter-layer-scope? boolean | |||
| | | +--ro inter-layer-pref? uint8 | | | +--rw inter-layer-pref? uint8 | |||
| | +--ro neigh-domains | | +--rw neigh-domains | |||
| | | +--ro domain* [domain-type domain] | | | +--rw domain* [domain-type domain] | |||
| | | +--ro domain-type domain-type | | | +--rw domain-type domain-type | |||
| | | +--ro domain domain | | | +--rw domain domain | |||
| | +--ro path-key {path-key}? | | +--rw path-key {path-key}? | |||
| | +--ro enabled? boolean | | +--rw enabled? boolean | |||
| | +--ro discard-timer? uint32 | | +--rw discard-timer? uint32 | |||
| | +--ro reuse-time? uint32 | | +--rw reuse-time? uint32 | |||
| | +--ro pce-id? inet:ip-address | | +--rw pce-id? inet:ip-address | |||
| +--ro (auth-type-selection)? | +--rw (auth-type-selection)? | |||
| | +--:(auth-key-chain) | | +--:(auth-key-chain) | |||
| | | +--ro key-chain? | | | +--rw key-chain? | |||
| | | key-chain:key-chain-ref | | | key-chain:key-chain-ref | |||
| | +--:(auth-key) | | +--:(auth-key) | |||
| | | +--ro crypto-algorithm identityref | | | +--rw crypto-algorithm identityref | |||
| | | +--ro key-string | | | +--rw key-string | |||
| | | +--ro (key-string-style)? | | | +--rw (key-string-style)? | |||
| | | +--:(keystring) | | | +--:(keystring) | |||
| | | | +--ro keystring? string | | | | +--rw keystring? string | |||
| | | +--:(hexadecimal) | | | +--:(hexadecimal) | |||
| | | {key-chain:hex-key-string}? | | | {key-chain:hex-key-string}? | |||
| | | +--ro hexadecimal-string? yang:hex-string | | | +--rw hexadecimal-string? | |||
| | | yang:hex-string | ||||
| | +--:(auth-tls) {tls}? | | +--:(auth-tls) {tls}? | |||
| | +--ro tls | | +--rw tls-pce | |||
| +--ro connect-timer? uint32 | | | +--rw certificates | |||
| +--ro connect-max-retry? uint32 | | | | +--rw certificate* [name] | |||
| +--ro init-backoff-timer? uint32 | | | | +--rw name leafref | |||
| +--ro max-backoff-timer? uint32 | | | +--rw client-auth | |||
| +--ro open-wait-timer? uint32 | | | | +--rw trusted-ca-certs? leafref | |||
| +--ro keep-wait-timer? uint32 | | | | +--rw trusted-client-certs? leafref | |||
| +--ro keep-alive-timer? uint32 | | | +--rw hello-params | |||
| +--ro dead-timer? uint32 | | | {tls-server-hello-params-config}? | |||
| +--ro allow-negotiation? boolean | | | +--rw tls-versions | |||
| +--ro max-keep-alive-timer? uint32 | | | | +--rw tls-version* identityref | |||
| +--ro max-dead-timer? uint32 | | | +--rw cipher-suites | |||
| +--ro min-keep-alive-timer? uint32 | | | +--rw cipher-suite* identityref | |||
| +--ro min-dead-timer? uint32 | | +--rw tls-pcc | |||
| +--ro sync-timer? uint32 {svec}? | | +--rw server-auth | |||
| +--ro request-timer? uint32 | | | +--rw trusted-ca-certs? leafref | |||
| +--ro max-sessions? uint32 | | | +--rw trusted-server-certs? leafref | |||
| +--ro max-unknown-reqs? uint32 | | +--rw client-auth | |||
| +--ro max-unknown-msgs? uint32 | | | +--rw (auth-type)? | |||
| +--ro stateful-parameter {stateful}? | | | +--:(certificate) | |||
| | +--ro state-timeout? uint32 | | | +--rw certificate? leafref | |||
| | +--ro redelegation-timeout? uint32 | | +--rw hello-params | |||
| | +--ro rpt-non-pcep-lsp? boolean | | {tls-client-hello-params-config}? | |||
| | +--rw tls-versions | ||||
| | | +--rw tls-version* identityref | ||||
| | +--rw cipher-suites | ||||
| | +--rw cipher-suite* identityref | ||||
| +--rw connect-timer? uint32 | ||||
| +--rw connect-max-retry? uint32 | ||||
| +--rw init-backoff-timer? uint32 | ||||
| +--rw max-backoff-timer? uint32 | ||||
| +--rw open-wait-timer? uint32 | ||||
| +--rw keep-wait-timer? uint32 | ||||
| +--rw keep-alive-timer? uint32 | ||||
| +--rw dead-timer? uint32 | ||||
| +--rw allow-negotiation? boolean | ||||
| +--rw max-keep-alive-timer? uint32 | ||||
| +--rw max-dead-timer? uint32 | ||||
| +--rw min-keep-alive-timer? uint32 | ||||
| +--rw min-dead-timer? uint32 | ||||
| +--rw sync-timer? uint32 {svec}? | ||||
| +--rw request-timer? uint32 | ||||
| +--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 objective-function | ||||
| +--ro lsp-db {stateful}? | +--ro lsp-db {stateful}? | |||
| | +--ro db-ver? uint64 | | +--ro db-ver? uint64 | |||
| | | {stateful-sync-opt}? | | | {stateful-sync-opt}? | |||
| | +--ro association-list* | | +--ro association-list* | |||
| | | [id source global-source extended-id] | | | [id source global-source extended-id] | |||
| | | +--ro type? assoc-type | | | +--ro type? assoc-type | |||
| | | +--ro id uint16 | | | +--ro id uint16 | |||
| | | +--ro source inet:ip-address | | | +--ro source inet:ip-address | |||
| | | +--ro global-source uint32 | | | +--ro global-source uint32 | |||
| | | +--ro extended-id string | | | +--ro extended-id string | |||
| | | +--ro lsp* [plsp-id pcc-id] | | | +--ro lsp* [plsp-id pcc-id] | |||
| | | +--ro plsp-id leafref | | | +--ro plsp-id | |||
| | | +--ro pcc-id leafref | | | | -> /pcep/entity/lsp-db/lsp/plsp-id | |||
| | | +--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 uint32 | | +--ro plsp-id uint32 | |||
| | +--ro pcc-id inet:ip-address | | +--ro pcc-id inet:ip-address | |||
| | +--ro lsp-ref | | +--ro lsp-ref | |||
| | | +--ro source? | | | +--ro source? | |||
| | | | -> /te:te/lsps-state/lsp/source | | | | -> /te:te/lsps-state/lsp/source | |||
| | | +--ro destination? | | | +--ro destination? | |||
| | | | -> /te:te/lsps-state/lsp/destination | | | | -> /te:te/lsps-state/lsp/destination | |||
| | | +--ro tunnel-id? | | | +--ro tunnel-id? | |||
| | | | -> /te:te/lsps-state/lsp/tunnel-id | | | | -> /te:te/lsps-state/lsp/tunnel-id | |||
| | | +--ro lsp-id? | | | +--ro lsp-id? | |||
| | | | -> /te:te/lsps-state/lsp/lsp-id | | | | -> /te:te/lsps-state/lsp/lsp-id | |||
| | | +--ro extended-tunnel-id? leafref | | | +--ro extended-tunnel-id? leafref | |||
| | | +--ro type? | | | +--ro type? | |||
| | | -> /te:te/lsps-state/lsp/type | | | -> /te:te/lsps-state/lsp/type | |||
| | +--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? | | | +--ro peer? -> /pcep/entity/peers/peer/addr | |||
| | | | -> /pcep-state/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? | | | +--ro peer? -> /pcep/entity/peers/peer/addr | |||
| | | -> /pcep-state/entity/peers/peer/addr | ||||
| | +--ro symbolic-path-name? string | | +--ro symbolic-path-name? string | |||
| | +--ro last-error? lsp-error | | +--ro last-error? lsp-error | |||
| | +--ro pst? pst | | +--ro pst? pst | |||
| | +--ro association-list* | | +--ro association-list* | |||
| | [id source global-source extended-id] | | [id source global-source extended-id] | |||
| | +--ro id leafref | | +--ro id leafref | |||
| | +--ro source leafref | | +--ro source leafref | |||
| | +--ro global-source leafref | | +--ro global-source leafref | |||
| | +--ro extended-id leafref | | +--ro extended-id leafref | |||
| +--ro path-keys {path-key}? | +--ro path-keys {path-key}? | |||
| skipping to change at page 13, line 48 ¶ | skipping to change at page 11, line 11 ¶ | |||
| | | +--:(ip-address) | | | +--:(ip-address) | |||
| | | | +--ro ip-address-hop | | | | +--ro ip-address-hop | |||
| | | | +--ro address? inet:ip-address | | | | +--ro address? inet:ip-address | |||
| | | | +--ro hop-type? te-hop-type | | | | +--ro hop-type? te-hop-type | |||
| | | +--:(as-number) | | | +--:(as-number) | |||
| | | | +--ro as-number-hop | | | | +--ro as-number-hop | |||
| | | | +--ro as-number? binary | | | | +--ro as-number? binary | |||
| | | | +--ro hop-type? te-hop-type | | | | +--ro hop-type? te-hop-type | |||
| | | +--:(unnumbered-link) | | | +--:(unnumbered-link) | |||
| | | | +--ro unnumbered-hop | | | | +--ro unnumbered-hop | |||
| | | | +--ro router-id? inet:ip-address | | | | +--ro router-id? | |||
| | | | | inet:ip-address | ||||
| | | | +--ro interface-id? uint32 | | | | +--ro interface-id? uint32 | |||
| | | | +--ro hop-type? te-hop-type | | | | +--ro hop-type? te-hop-type | |||
| | | +--:(label) | | | +--:(label) | |||
| | | | +--ro label-hop | | | | +--ro label-hop | |||
| | | | +--ro value? | | | | +--ro value? | |||
| | | | rt-types:generalized-label | | | | rt-types:generalized-label | |||
| | | +--:(sid) | | | +--:(sid) | |||
| | | +--ro sid-hop | | | +--ro sid-hop | |||
| | | +--ro sid? | | | +--ro sid? | |||
| | | rt-types:generalized-label | | | rt-types:generalized-label | |||
| | +--ro pcc-original? | | +--ro pcc-original? | |||
| | | -> /pcep-state/entity/peers/peer/addr | | | -> /pcep/entity/peers/peer/addr | |||
| | +--ro req-id? uint32 | | +--ro req-id? uint32 | |||
| | +--ro retrieved? boolean | | +--ro retrieved? boolean | |||
| | +--ro pcc-retrieved? | | +--ro pcc-retrieved? | |||
| | | -> /pcep-state/entity/peers/peer/addr | | | -> /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 | |||
| +--ro of-list {objective-function}? | +--rw peers | |||
| | +--ro objective-function* [of] | +--rw peer* [addr] | |||
| | +--ro of objective-function | +--rw addr inet:ip-address | |||
| +--ro peers | ||||
| +--ro peer* [addr] | ||||
| +--ro addr inet:ip-address | ||||
| +--ro role? pcep-role | +--ro role? pcep-role | |||
| +--ro domain | +--rw description? string | |||
| | +--ro domain* [domain-type domain] | +--rw domain | |||
| | +--ro domain-type domain-type | | +--rw domain* [domain-type domain] | |||
| | +--ro domain domain | | +--rw domain-type domain-type | |||
| +--ro capability | | +--rw domain domain | |||
| | +--ro gmpls? boolean {gmpls}? | +--rw capability | |||
| | +--ro bi-dir? boolean | | +--rw gmpls? boolean | |||
| | +--ro diverse? boolean | | | {gmpls}? | |||
| | +--ro load-balance? boolean | | +--rw bi-dir? boolean | |||
| | +--ro synchronize? boolean {svec}? | | +--rw diverse? boolean | |||
| | +--ro objective-function? boolean | | +--rw load-balance? boolean | |||
| | +--rw synchronize? boolean {svec}? | ||||
| | +--rw objective-function? boolean | ||||
| | | {objective-function}? | | | {objective-function}? | |||
| | +--ro add-path-constraint? boolean | | +--rw add-path-constraint? boolean | |||
| | +--ro prioritization? boolean | | +--rw prioritization? boolean | |||
| | +--ro multi-request? boolean | | +--rw multi-request? boolean | |||
| | +--ro gco? boolean {gco}? | | +--rw gco? boolean {gco}? | |||
| | +--ro p2mp? boolean {p2mp}? | | +--rw p2mp? boolean {p2mp}? | |||
| | +--ro stateful {stateful}? | | +--rw stateful {stateful}? | |||
| | | +--ro enabled? boolean | | | +--rw enabled? boolean | |||
| | | +--ro active? boolean | | | +--rw active? boolean | |||
| | | +--ro pce-initiated? boolean | | | +--rw pce-initiated? boolean | |||
| | | | {pce-initiated}? | | | | {pce-initiated}? | |||
| | | +--ro include-db-ver? boolean | | | +--rw include-db-ver? boolean | |||
| | | | {stateful-sync-opt}? | | | | {stateful-sync-opt}? | |||
| | | +--ro trigger-resync? boolean | | | +--rw trigger-resync? boolean | |||
| | | | {stateful-sync-opt}? | | | | {stateful-sync-opt}? | |||
| | | +--ro trigger-initial-sync? boolean | | | +--rw trigger-initial-sync? boolean | |||
| | | | {stateful-sync-opt}? | | | | {stateful-sync-opt}? | |||
| | | +--ro incremental-sync? boolean | | | +--rw incremental-sync? boolean | |||
| | | {stateful-sync-opt}? | | | {stateful-sync-opt}? | |||
| | +--ro sr {sr}? | | +--rw sr {sr}? | |||
| | +--ro enabled? boolean | | +--rw enabled? boolean | |||
| +--ro pce-info | +--rw pce-info | |||
| | +--ro scope | | +--rw scope | |||
| | | +--ro intra-area-scope? boolean | | | +--rw intra-area-scope? boolean | |||
| | | +--ro intra-area-pref? uint8 | | | +--rw intra-area-pref? uint8 | |||
| | | +--ro inter-area-scope? boolean | | | +--rw inter-area-scope? boolean | |||
| | | +--ro inter-area-scope-default? boolean | | | +--rw inter-area-scope-default? boolean | |||
| | | +--ro inter-area-pref? uint8 | | | +--rw inter-area-pref? uint8 | |||
| | | +--ro inter-as-scope? boolean | | | +--rw inter-as-scope? boolean | |||
| | | +--ro inter-as-scope-default? boolean | | | +--rw inter-as-scope-default? boolean | |||
| | | +--ro inter-as-pref? uint8 | | | +--rw inter-as-pref? uint8 | |||
| | | +--ro inter-layer-scope? boolean | | | +--rw inter-layer-scope? boolean | |||
| | | +--ro inter-layer-pref? uint8 | | | +--rw inter-layer-pref? uint8 | |||
| | +--ro neigh-domains | | +--rw neigh-domains | |||
| | +--ro domain* [domain-type domain] | | +--rw domain* [domain-type domain] | |||
| | +--ro domain-type domain-type | | +--rw domain-type domain-type | |||
| | +--ro domain domain | | +--rw domain domain | |||
| +--ro delegation-pref? uint8 {stateful}? | +--rw delegation-pref? uint8 {stateful}? | |||
| +--ro (auth-type-selection)? | +--rw (auth-type-selection)? | |||
| | +--:(auth-key-chain) | | +--:(auth-key-chain) | |||
| | | +--ro key-chain? | | | +--rw key-chain? | |||
| | | key-chain:key-chain-ref | | | key-chain:key-chain-ref | |||
| | +--:(auth-key) | | +--:(auth-key) | |||
| | | +--ro crypto-algorithm identityref | | | +--rw crypto-algorithm identityref | |||
| | | +--ro key-string | | | +--rw key-string | |||
| | | +--ro (key-string-style)? | | | +--rw (key-string-style)? | |||
| | | +--:(keystring) | | | +--:(keystring) | |||
| | | | +--ro keystring? string | | | | +--rw keystring? string | |||
| | | +--:(hexadecimal) | | | +--:(hexadecimal) | |||
| | | {key-chain:hex-key-string}? | | | {key-chain:hex-key-string}? | |||
| | | +--ro hexadecimal-string? | | | +--rw hexadecimal-string? | |||
| | | yang:hex-string | | | yang:hex-string | |||
| | +--:(auth-tls) {tls}? | | +--:(auth-tls) {tls}? | |||
| | +--ro tls | | +--rw tls-pce | |||
| | | +--rw certificates | ||||
| | | | +--rw certificate* [name] | ||||
| | | | +--rw name leafref | ||||
| | | +--rw client-auth | ||||
| | | | +--rw trusted-ca-certs? leafref | ||||
| | | | +--rw trusted-client-certs? leafref | ||||
| | | +--rw hello-params | ||||
| | | {tls-server-hello-params-config}? | ||||
| | | +--rw tls-versions | ||||
| | | | +--rw tls-version* identityref | ||||
| | | +--rw cipher-suites | ||||
| | | +--rw cipher-suite* identityref | ||||
| | +--rw tls-pcc | ||||
| | +--rw server-auth | ||||
| | | +--rw trusted-ca-certs? leafref | ||||
| | | +--rw trusted-server-certs? leafref | ||||
| | +--rw client-auth | ||||
| | | +--rw (auth-type)? | ||||
| | | +--:(certificate) | ||||
| | | +--rw certificate? leafref | ||||
| | +--rw hello-params | ||||
| | {tls-client-hello-params-config}? | ||||
| | +--rw tls-versions | ||||
| | | +--rw tls-version* identityref | ||||
| | +--rw cipher-suites | ||||
| | +--rw cipher-suite* identityref | ||||
| +--ro discontinuity-time? yang:timestamp | +--ro discontinuity-time? yang:timestamp | |||
| +--ro initiate-session? boolean | +--ro initiate-session? boolean | |||
| +--ro session-exists? boolean | +--ro session-exists? boolean | |||
| +--ro session-up-time? yang:timestamp | +--ro session-up-time? yang:timestamp | |||
| +--ro session-fail-time? yang:timestamp | +--ro session-fail-time? yang:timestamp | |||
| +--ro session-fail-up-time? yang:timestamp | +--ro session-fail-up-time? yang:timestamp | |||
| +--ro sessions | +--ro sessions | |||
| +--ro session* [initiator] | +--ro session* [initiator] | |||
| +--ro initiator pcep-initiator | +--ro initiator pcep-initiator | |||
| +--ro role? -> ../../../role | +--ro role? | |||
| | -> /pcep/entity/role | ||||
| +--ro state-last-change? yang:timestamp | +--ro state-last-change? yang:timestamp | |||
| +--ro state? pcep-sess-state | +--ro state? pcep-sess-state | |||
| +--ro session-creation? yang:timestamp | +--ro session-creation? yang:timestamp | |||
| +--ro connect-retry? yang:counter32 | +--ro connect-retry? yang:counter32 | |||
| +--ro local-id? uint32 | +--ro local-id? uint32 | |||
| +--ro remote-id? uint32 | +--ro remote-id? uint32 | |||
| +--ro keepalive-timer? uint32 | +--ro keepalive-timer? uint32 | |||
| +--ro peer-keepalive-timer? uint32 | +--ro peer-keepalive-timer? uint32 | |||
| +--ro dead-timer? uint32 | +--ro dead-timer? uint32 | |||
| +--ro peer-dead-timer? uint32 | +--ro peer-dead-timer? uint32 | |||
| +--ro ka-hold-time-rem? uint32 | +--ro ka-hold-time-rem? uint32 | |||
| +--ro overloaded? boolean | ||||
| +--ro overload-time? uint32 | +--ro overload-time? uint32 | |||
| +--ro peer-overloaded? boolean | +--ro peer-overloaded? boolean | |||
| +--ro peer-overload-time? uint32 | +--ro peer-overload-time? uint32 | |||
| +--ro lspdb-sync? sync-state | +--ro lspdb-sync? sync-state | |||
| | {stateful}? | | {stateful}? | |||
| +--ro recv-db-ver? uint64 | +--ro recv-db-ver? uint64 | |||
| | {stateful,stateful-sync-opt}? | | {stateful,stateful-sync-opt}? | |||
| +--ro of-list {objective-function}? | +--ro of-list {objective-function}? | |||
| | +--ro objective-function* [of] | | +--ro objective-function* [of] | |||
| | +--ro of objective-function | | +--ro of objective-function | |||
| +--ro speaker-entity-id? string | +--ro speaker-entity-id? string | |||
| | {stateful-sync-opt}? | | {stateful-sync-opt}? | |||
| +--ro discontinuity-time? yang:timestamp | +--ro discontinuity-time? yang:timestamp | |||
| rpcs: | rpcs: | |||
| +---x trigger-resync {stateful,stateful-sync-opt}? | +---x trigger-resync {stateful,stateful-sync-opt}? | |||
| +---w input | +---w input | |||
| +---w pcc? -> /pcep-state/entity/peers/peer/addr | +---w pcc? -> /pcep/entity/peers/peer/addr | |||
| notifications: | notifications: | |||
| +---n pcep-session-up | +---n pcep-session-up | |||
| | +--ro peer-addr? | | +--ro peer-addr? -> /pcep/entity/peers/peer/addr | |||
| | | -> /pcep-state/entity/peers/peer/addr | ||||
| | +--ro session-initiator? leafref | | +--ro session-initiator? leafref | |||
| | +--ro state-last-change? yang:timestamp | | +--ro state-last-change? yang:timestamp | |||
| | +--ro state? pcep-sess-state | | +--ro state? pcep-sess-state | |||
| +---n pcep-session-down | +---n pcep-session-down | |||
| | +--ro peer-addr? | | +--ro peer-addr? -> /pcep/entity/peers/peer/addr | |||
| | | -> /pcep-state/entity/peers/peer/addr | ||||
| | +--ro session-initiator? pcep-initiator | | +--ro session-initiator? pcep-initiator | |||
| | +--ro state-last-change? yang:timestamp | | +--ro state-last-change? yang:timestamp | |||
| | +--ro state? pcep-sess-state | | +--ro state? pcep-sess-state | |||
| +---n pcep-session-local-overload | +---n pcep-session-local-overload | |||
| | +--ro peer-addr? | | +--ro peer-addr? -> /pcep/entity/peers/peer/addr | |||
| | | -> /pcep-state/entity/peers/peer/addr | ||||
| | +--ro session-initiator? leafref | | +--ro session-initiator? leafref | |||
| | +--ro overloaded? boolean | | +--ro overloaded? boolean | |||
| | +--ro overload-time? uint32 | | +--ro overload-time? uint32 | |||
| +---n pcep-session-local-overload-clear | +---n pcep-session-local-overload-clear | |||
| | +--ro peer-addr? -> /pcep-state/entity/peers/peer/addr | | +--ro peer-addr? -> /pcep/entity/peers/peer/addr | |||
| | +--ro overloaded? boolean | | +--ro overloaded? boolean | |||
| +---n pcep-session-peer-overload | +---n pcep-session-peer-overload | |||
| | +--ro peer-addr? | | +--ro peer-addr? -> /pcep/entity/peers/peer/addr | |||
| | | -> /pcep-state/entity/peers/peer/addr | ||||
| | +--ro session-initiator? leafref | | +--ro session-initiator? leafref | |||
| | +--ro peer-overloaded? boolean | | +--ro peer-overloaded? boolean | |||
| | +--ro peer-overload-time? uint32 | | +--ro peer-overload-time? uint32 | |||
| +---n pcep-session-peer-overload-clear | +---n pcep-session-peer-overload-clear | |||
| +--ro peer-addr? | +--ro peer-addr? -> /pcep/entity/peers/peer/addr | |||
| | -> /pcep-state/entity/peers/peer/addr | ||||
| +--ro peer-overloaded? boolean | +--ro peer-overloaded? boolean | |||
| 5.1. The Entity | 5.1. The Entity | |||
| The PCEP yang module may contain status information for the local | The PCEP yang module may contain status information for the local | |||
| PCEP entity. | PCEP entity. | |||
| The entity has an IP address (using ietf-inet-types [RFC6991]) and a | The entity has an IP address (using ietf-inet-types [RFC6991]) and a | |||
| "role" leaf (the local entity PCEP role) as mandatory. | "role" leaf (the local entity PCEP role) as mandatory. | |||
| skipping to change at page 18, line 13 ¶ | skipping to change at page 15, line 41 ¶ | |||
| successive sessions to that peer. | successive sessions to that peer. | |||
| To limit the quantity of information that is stored, an | To limit the quantity of information that is stored, an | |||
| implementation MAY choose to discard this information if and only if | implementation MAY choose to discard this information if and only if | |||
| no PCEP session exists to the corresponding peer. | no PCEP session exists to the corresponding peer. | |||
| The data model for PCEP peer presented in this document uses a flat | The data model for PCEP peer presented in this document uses a flat | |||
| list of peers. Each peer in the list is identified by its IP address | list of peers. Each peer in the list is identified by its IP address | |||
| (addr-type, addr). | (addr-type, addr). | |||
| There is one list for static peer configuration ("/pcep/entity/ | There is a list for static peer configuration and operational state | |||
| peers"), and a separate list for the operational state of all peers | of all peers (i.e.static as well as discovered)("/pcep/entity/ | |||
| (i.e. static as well as discovered)("/pcep-state/entity/peers"). | peers"). The list is used to enable remote PCE configuration at PCC | |||
| The former is used to enable remote PCE configuration at PCC (or PCE) | (or PCE) and has the operational state of these peers as well as the | |||
| while the latter has the operational state of these peers as well as | remote PCE peer which were discovered and PCC peers that have | |||
| the remote PCE peer which were discovered and PCC peers that have | ||||
| initiated session. | initiated session. | |||
| 5.3. The Session Lists | 5.3. The Session Lists | |||
| The session list contains PCEP session that the PCEP entity (PCE or | The session list contains PCEP session that the PCEP entity (PCE or | |||
| PCC) is currently participating in. The statistics in session are | PCC) is currently participating in. The statistics in session are | |||
| semantically different from those in peer since the former applies to | semantically different from those in peer since the former applies to | |||
| the current session only, whereas the latter is the aggregate for all | the current session only, whereas the latter is the aggregate for all | |||
| sessions that have existed to that peer. | sessions that have existed to that peer. | |||
| skipping to change at page 18, line 42 ¶ | skipping to change at page 16, line 26 ¶ | |||
| pair, one representing a session initiated by the local PCEP entity | pair, one representing a session initiated by the local PCEP entity | |||
| and the other representing a session initiated by the peer. If | and the other representing a session initiated by the peer. If | |||
| either of these sessions reaches active state first, then the other | either of these sessions reaches active state first, then the other | |||
| is discarded. | is discarded. | |||
| The data model for PCEP session presented in this document uses a | The data model for PCEP session presented in this document uses a | |||
| flat list of sessions. Each session in the list is identified by its | flat list of sessions. Each session in the list is identified by its | |||
| initiator. This index allows two sessions to exist transiently for a | initiator. This index allows two sessions to exist transiently for a | |||
| given peer, as discussed above. | given peer, as discussed above. | |||
| There is only one list for the operational state of all sessions | ||||
| ("/pcep-state/entity/peers/peer/sessions/session"). | ||||
| 5.4. Notifications | 5.4. Notifications | |||
| This YANG model defines a list of notifications to inform client of | This YANG model defines a list of notifications to inform client of | |||
| important events detected during the protocol operation. The | important events detected during the protocol operation. The | |||
| notifications defined cover the PCEP MIB notifications. | notifications defined cover the PCEP MIB notifications. | |||
| 5.5. RPC | 5.5. 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. | |||
| 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 /p:pcep-state/p:entity/p:peers/p:peer: | augment /p:pcep/p:entity/p:peers/p: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 20, line 34 ¶ | skipping to change at page 18, line 13 ¶ | |||
| | +--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 | |||
| +--ro num-req-sent-closed? yang:counter32 | +--ro num-req-sent-closed? yang:counter32 | |||
| +--ro num-req-rcvd-closed? yang:counter32 | +--ro num-req-rcvd-closed? yang:counter32 | |||
| augment /p:pcep-state/p:entity/p:peers/p:peer/p:sessions/p:session: | augment /p:pcep/p:entity/p:peers/p:peer/p:sessions/p:session: | |||
| +--ro pcep-stats | +--ro pcep-stats | |||
| +--ro avg-rsp-time? uint32 | +--ro avg-rsp-time? uint32 | |||
| +--ro lwm-rsp-time? uint32 | +--ro lwm-rsp-time? uint32 | |||
| +--ro hwm-rsp-time? uint32 | +--ro hwm-rsp-time? uint32 | |||
| +--ro num-pcreq-sent? yang:counter32 | +--ro num-pcreq-sent? yang:counter32 | |||
| +--ro num-pcreq-rcvd? yang:counter32 | +--ro num-pcreq-rcvd? yang:counter32 | |||
| +--ro num-pcrep-sent? yang:counter32 | +--ro num-pcrep-sent? yang:counter32 | |||
| +--ro num-pcrep-rcvd? yang:counter32 | +--ro num-pcrep-rcvd? yang:counter32 | |||
| +--ro num-pcerr-sent? yang:counter32 | +--ro num-pcerr-sent? yang:counter32 | |||
| +--ro num-pcerr-rcvd? yang:counter32 | +--ro num-pcerr-rcvd? yang:counter32 | |||
| skipping to change at page 22, line 27 ¶ | skipping to change at page 20, line 4 ¶ | |||
| o OF | o OF | |||
| o GCO | o GCO | |||
| o P2MP | o P2MP | |||
| o GMPLS | o GMPLS | |||
| o Inter-Layer | o Inter-Layer | |||
| o Stateful PCE | o Stateful PCE | |||
| o Segement Routing | o Segement Routing | |||
| o Authentication including PCEPS (TLS) | o Authentication including PCEPS (TLS) | |||
| [Editor's Note - TLS would be added in a future revision] | ||||
| 7.1. Stateful PCE's LSP-DB | 7.1. Stateful PCE's LSP-DB | |||
| In the operational state of PCEP which supports stateful PCE mode, | In the operational state of PCEP which supports stateful PCE mode, | |||
| the list of LSP state are maintained in LSP-DB. The key is the PLSP- | the list of LSP state are maintained in LSP-DB. The key is the PLSP- | |||
| ID and the PCC IP address. | ID and the PCC IP address. | |||
| The PCEP data model contains the operational state of LSPs (/pcep- | The PCEP data model contains the operational state of LSPs | |||
| state/entity/lsp-db/lsp/) with PCEP specific attributes. The generic | (/pcep/entity/lsp-db/lsp/) with PCEP specific attributes. The | |||
| TE attributes of the LSP are defined in [I-D.ietf-teas-yang-te]. A | generic TE attributes of the LSP are defined in | |||
| reference to LSP state in TE model is maintained. | [I-D.ietf-teas-yang-te]. A reference to LSP state in TE model is | |||
| maintained. | ||||
| 8. Open Issues and Next Step | 8. Open Issues and Next Step | |||
| This section is added so that open issues can be tracked. This | This section is added so that open issues can be tracked. This | |||
| section would be removed when the document is ready for publication. | section would be removed when the document is ready for publication. | |||
| 8.1. The PCE-Initiated LSP | 8.1. The PCE-Initiated LSP | |||
| The TE Model at [I-D.ietf-teas-yang-te] should support creationg of | 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. | tunnels at the controller (PCE) and marking them as PCE-Initiated. | |||
| The LSP-DB in the PCEP Yang (/pcep-state/entity/lsp-db/lsp/ | The LSP-DB in the PCEP Yang (/pcep/entity/lsp-db/lsp/initiation) also | |||
| initiation) also marks the LSPs which are PCE-initiated. | marks the LSPs which are PCE-initiated. | |||
| 8.2. PCEP over TLS (PCEPS) | 9. Other Considerations | |||
| A future version of this document would add TLS related | 9.1. PCEP over TLS (PCEPS) | |||
| configurations. | ||||
| 9. PCEP YANG Modules | [I-D.ietf-pce-pceps] describe the use of TLS in PCEP. The peer | |||
| acting as the PCEP client MUST act as the TLS client. The TLS client | ||||
| actively opens the TLS connection and the TLS server passively | ||||
| listens for the incoming TLS connections. The well-known TCP port | ||||
| number 4189 is used by PCEP servers to listen for TCP connections | ||||
| established by PCEP over TLS clients. The TLS client MUST send the | ||||
| TLS ClientHello message to begin the TLS handshake. The TLS server | ||||
| MUST send a CertificateRequest in order to request a certificate from | ||||
| the TLS client. Once the TLS handshake has finished, the client and | ||||
| the server MAY begin to exchange PCEP messages. Client and server | ||||
| identity verification is done before the PCEP open message is sent. | ||||
| This means that the identity verification is completed before the | ||||
| PCEP session is started.. | ||||
| 9.1. ietf-pcep module | 10. PCEP YANG Modules | |||
| 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@2017-03-12.yang" | <CODE BEGINS> file "ietf-pcep@2017-06-29.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"; | |||
| } | } | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix "yang"; | prefix "yang"; | |||
| } | } | |||
| import ietf-te { | import ietf-te { | |||
| prefix "te"; | prefix "te"; | |||
| } | } | |||
| import ietf-te-types { | import ietf-te-types { | |||
| prefix "te-types"; | prefix "te-types"; | |||
| } | } | |||
| import ietf-key-chain { | import ietf-key-chain { | |||
| prefix "key-chain"; | prefix "key-chain"; | |||
| } | } | |||
| import ietf-netconf-acm { | import ietf-netconf-acm { | |||
| prefix nacm; | prefix "nacm"; | |||
| } | } | |||
| organization | import ietf-tls-server { | |||
| "IETF PCE (Path Computation Element) Working Group"; | prefix "tls-server"; | |||
| } | ||||
| contact | import ietf-tls-client { | |||
| "WG Web: <http://tools.ietf.org/wg/pce/> | prefix "tls-client"; | |||
| WG List: <mailto:pce@ietf.org> | } | |||
| WG Chair: JP Vasseur | organization | |||
| <mailto:jpv@cisco.com> | "IETF PCE (Path Computation Element) Working Group"; | |||
| WG Chair: Julien Meuric | ||||
| <mailto:julien.meuric@orange.com> | ||||
| WG Chair: Jonathan Hardwick | ||||
| <mailto:Jonathan.Hardwick@metaswitch.com> | ||||
| Editor: Dhruv Dhody | ||||
| <mailto:dhruv.ietf@gmail.com>"; | ||||
| description | contact | |||
| "The YANG module defines a generic configuration and | "WG Web: <http://tools.ietf.org/wg/pce/> | |||
| operational model for PCEP common across all of the | WG List: <mailto:pce@ietf.org> | |||
| vendor implementations."; | WG Chair: JP Vasseur | |||
| <mailto:jpv@cisco.com> | ||||
| WG Chair: Julien Meuric | ||||
| <mailto:julien.meuric@orange.com> | ||||
| WG Chair: Jonathan Hardwick | ||||
| <mailto:Jonathan.Hardwick@metaswitch.com> | ||||
| Editor: Dhruv Dhody | ||||
| <mailto:dhruv.ietf@gmail.com>"; | ||||
| revision 2017-03-12 { | description | |||
| description "Initial revision."; | "The YANG module defines a generic configuration and | |||
| reference | operational model for PCEP common across all of the | |||
| "RFC XXXX: A YANG Data Model for Path Computation | vendor implementations."; | |||
| Element Communications Protocol | ||||
| (PCEP)"; | ||||
| } | ||||
| /* | revision 2017-06-29 { | |||
| * Identities | description "Initial revision."; | |||
| */ | reference | |||
| "RFC XXXX: A YANG Data Model for Path Computation | ||||
| Element Communications Protocol | ||||
| (PCEP)"; | ||||
| } | ||||
| identity pcep { | /* | |||
| description "Identity for the PCEP protocol."; | * Identities | |||
| } | */ | |||
| /* | identity pcep { | |||
| * Typedefs | description "Identity for the PCEP protocol."; | |||
| */ | } | |||
| typedef pcep-role { | /* | |||
| type enumeration { | * Typedefs | |||
| enum unknown { | */ | |||
| value "0"; | typedef pcep-role { | |||
| description | type enumeration { | |||
| "An unknown role"; | enum unknown { | |||
| } | value "0"; | |||
| enum pcc { | description | |||
| value "1"; | "An unknown role"; | |||
| description | } | |||
| "The role of a Path Computation Client"; | enum pcc { | |||
| } | value "1"; | |||
| enum pce { | description | |||
| value "2"; | "The role of a Path Computation Client"; | |||
| description | } | |||
| "The role of Path Computation Element"; | enum pce { | |||
| } | value "2"; | |||
| enum pcc-and-pce { | description | |||
| value "3"; | "The role of Path Computation Element"; | |||
| description | } | |||
| "The role of both Path Computation Client and | enum pcc-and-pce { | |||
| Path Computation Element"; | value "3"; | |||
| } | description | |||
| } | "The role of both Path Computation Client and | |||
| Path Computation Element"; | ||||
| } | ||||
| } | ||||
| 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."; | |||
| } | } | |||
| typedef pcep-admin-status { | typedef pcep-admin-status { | |||
| type enumeration { | type enumeration { | |||
| enum admin-status-up { | enum admin-status-up { | |||
| value "1"; | value "1"; | |||
| description | description | |||
| "Admin Status is Up"; | "Admin Status is Up"; | |||
| } | } | |||
| enum admin-status-down { | enum admin-status-down { | |||
| value "2"; | value "2"; | |||
| description | description | |||
| "Admin Status is Down"; | "Admin Status is Down"; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "The Admin Status of the PCEP entity. | "The Admin Status of the PCEP entity. | |||
| Takes one of the following values | Takes one of the following values | |||
| - admin-status-up(1): Admin Status is Up. | - admin-status-up(1): Admin Status is Up. | |||
| - admin-status-down(2): Admin Status is Down"; | ||||
| } | ||||
| typedef pcep-oper-status { | - admin-status-down(2): Admin Status is Down"; | |||
| type enumeration { | } | |||
| enum oper-status-up { | ||||
| value "1"; | ||||
| description | ||||
| "The PCEP entity is active"; | ||||
| } | ||||
| enum oper-status-down { | ||||
| value "2"; | ||||
| description | ||||
| "The PCEP entity is inactive"; | ||||
| } | ||||
| enum oper-status-going-up { | ||||
| value "3"; | ||||
| description | ||||
| "The PCEP entity is activating"; | ||||
| } | ||||
| enum oper-status-going-down { | ||||
| value "4"; | ||||
| description | ||||
| "The PCEP entity is deactivating"; | ||||
| } | ||||
| enum oper-status-failed { | ||||
| value "5"; | ||||
| description | ||||
| "The PCEP entity has failed and will recover | ||||
| when possible."; | ||||
| } | ||||
| enum oper-status-failed-perm { | ||||
| value "6"; | ||||
| description | ||||
| "The PCEP entity has failed and will not recover | ||||
| without operator intervention"; | ||||
| } | ||||
| } | ||||
| description | ||||
| "The operational status of the PCEP entity. | ||||
| Takes one of the following values | typedef pcep-oper-status { | |||
| - oper-status-up(1): Active | type enumeration { | |||
| - oper-status-down(2): Inactive | enum oper-status-up { | |||
| - oper-status-going-up(3): Activating | value "1"; | |||
| - oper-status-going-down(4): Deactivating | description | |||
| - oper-status-failed(5): Failed | "The PCEP entity is active"; | |||
| - oper-status-failed-perm(6): Failed Permanantly"; | } | |||
| } | enum oper-status-down { | |||
| value "2"; | ||||
| description | ||||
| "The PCEP entity is inactive"; | ||||
| } | ||||
| enum oper-status-going-up { | ||||
| value "3"; | ||||
| description | ||||
| "The PCEP entity is activating"; | ||||
| } | ||||
| enum oper-status-going-down { | ||||
| value "4"; | ||||
| description | ||||
| "The PCEP entity is deactivating"; | ||||
| } | ||||
| enum oper-status-failed { | ||||
| value "5"; | ||||
| description | ||||
| "The PCEP entity has failed and will recover | ||||
| when possible."; | ||||
| } | ||||
| enum oper-status-failed-perm { | ||||
| value "6"; | ||||
| description | ||||
| "The PCEP entity has failed and will not recover | ||||
| without operator intervention"; | ||||
| } | ||||
| } | ||||
| description | ||||
| "The operational status of the PCEP entity. | ||||
| Takes one of the following values | ||||
| - oper-status-up(1): Active | ||||
| - oper-status-down(2): Inactive | ||||
| - oper-status-going-up(3): Activating | ||||
| - oper-status-going-down(4): Deactivating | ||||
| - oper-status-failed(5): Failed | ||||
| - oper-status-failed-perm(6): Failed Permanantly"; | ||||
| } | ||||
| typedef pcep-initiator { | ||||
| type enumeration { | ||||
| enum local { | ||||
| value "1"; | ||||
| description | ||||
| "The local PCEP entity initiated the session"; | ||||
| } | ||||
| typedef pcep-initiator { | enum remote { | |||
| type enumeration { | value "2"; | |||
| enum local { | description | |||
| value "1"; | "The remote PCEP peer initiated the session"; | |||
| description | } | |||
| "The local PCEP entity initiated the session"; | } | |||
| } | description | |||
| "The initiator of the session, that is, whether the TCP | ||||
| connection was initiated by the local PCEP entity or | ||||
| the remote peer. | ||||
| Takes one of the following values | ||||
| - local(1): Initiated locally | ||||
| - remote(2): Initiated remotely"; | ||||
| } | ||||
| enum remote { | typedef pcep-sess-state { | |||
| value "2"; | type enumeration { | |||
| description | enum tcp-pending { | |||
| "The remote PCEP peer initiated the session"; | value "1"; | |||
| } | description | |||
| } | "The tcp-pending state of PCEP session."; | |||
| description | } | |||
| "The initiator of the session, that is, whether the TCP | ||||
| connection was initiated by the local PCEP entity or | ||||
| the remote peer. | ||||
| Takes one of the following values | ||||
| - local(1): Initiated locally | ||||
| - remote(2): Initiated remotely"; | ||||
| } | ||||
| typedef pcep-sess-state { | enum open-wait { | |||
| type enumeration { | value "2"; | |||
| enum tcp-pending { | description | |||
| value "1"; | "The open-wait state of PCEP session."; | |||
| description | } | |||
| "The tcp-pending state of PCEP session."; | ||||
| } | ||||
| enum open-wait { | enum keep-wait { | |||
| value "2"; | value "3"; | |||
| description | description | |||
| "The open-wait state of PCEP session."; | "The keep-wait state of PCEP session."; | |||
| } | } | |||
| enum keep-wait { | enum session-up { | |||
| value "3"; | value "4"; | |||
| description | description | |||
| "The keep-wait state of PCEP session."; | "The session-up state of PCEP session."; | |||
| } | } | |||
| enum session-up { | } | |||
| value "4"; | description | |||
| description | "The current state of the session. | |||
| "The session-up state of PCEP session."; | The set of possible states excludes the idle state | |||
| } | since entries do not exist in the idle state. | |||
| } | Takes one of the following values | |||
| description | - tcp-pending(1): PCEP TCP Pending state | |||
| "The current state of the session. | - open-wait(2): PCEP Open Wait state | |||
| The set of possible states excludes the idle state | - keep-wait(3): PCEP Keep Wait state | |||
| since entries do not exist in the idle state. | - session-up(4): PCEP Session Up state"; | |||
| Takes one of the following values | } | |||
| - tcp-pending(1): PCEP TCP Pending state | ||||
| - open-wait(2): PCEP Open Wait state | ||||
| - keep-wait(3): PCEP Keep Wait state | ||||
| - session-up(4): PCEP Session Up state"; | ||||
| } | ||||
| typedef domain-type { | 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 { | |||
| value "2"; | value "2"; | |||
| description | description | |||
| "The IS-IS area."; | "The IS-IS area."; | |||
| } | } | |||
| enum as { | enum as { | |||
| value "3"; | value "3"; | |||
| description | description | |||
| "The Autonomous System (AS)."; | "The Autonomous System (AS)."; | |||
| } | } | |||
| } | } | |||
| description | description | |||
| "The PCE Domain Type"; | "The PCE Domain Type"; | |||
| } | } | |||
| typedef domain-ospf-area { | typedef domain-ospf-area { | |||
| type union { | type union { | |||
| type uint32; | type uint32; | |||
| type yang:dotted-quad; | type yang:dotted-quad; | |||
| } | ||||
| description | ||||
| "OSPF Area ID."; | ||||
| } | } | |||
| description | ||||
| "OSPF Area ID."; | ||||
| } | ||||
| typedef domain-isis-area { | typedef domain-isis-area { | |||
| type string { | type string { | |||
| pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; | pattern '[0-9A-Fa-f]{2}\.([0-9A-Fa-f]{4}\.){0,3}'; | |||
| } | } | |||
| description | description | |||
| "IS-IS Area ID."; | "IS-IS Area ID."; | |||
| } | } | |||
| typedef domain-as { | typedef domain-as { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Autonomous System number."; | "Autonomous System number."; | |||
| } | } | |||
| typedef domain { | typedef domain { | |||
| type union { | type union { | |||
| type domain-ospf-area; | type domain-ospf-area; | |||
| type domain-isis-area; | type domain-isis-area; | |||
| type domain-as; | type domain-as; | |||
| } | } | |||
| description | description | |||
| "The Domain Information"; | "The Domain Information"; | |||
| } | } | |||
| typedef operational-state { | typedef operational-state { | |||
| type enumeration { | type enumeration { | |||
| enum down { | enum down { | |||
| value "0"; | value "0"; | |||
| description | description | |||
| "not active."; | "not active."; | |||
| } | } | |||
| enum up { | enum up { | |||
| value "1"; | value "1"; | |||
| description | description | |||
| "signalled."; | "signalled."; | |||
| } | } | |||
| enum active { | enum active { | |||
| value "2"; | value "2"; | |||
| description | description | |||
| "up and carrying traffic."; | "up and carrying traffic."; | |||
| } | } | |||
| enum going-down { | enum going-down { | |||
| value "3"; | value "3"; | |||
| description | description | |||
| "LSP is being torn down, resources are | "LSP is being torn down, resources are | |||
| 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 | ||||
| "The operational status of the LSP"; | ||||
| } | ||||
| typedef lsp-error { | } | |||
| type enumeration { | description | |||
| enum no-error { | "The operational status of the LSP"; | |||
| 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 lsp-error { | |||
| type enumeration { | type enumeration { | |||
| enum pending { | enum no-error { | |||
| value "0"; | value "0"; | |||
| description | description | |||
| "The state synchronization | "No error, LSP is fine."; | |||
| has not started."; | } | |||
| } | enum unknown { | |||
| enum ongoing { | value "1"; | |||
| value "1"; | description | |||
| description | "Unknown reason."; | |||
| "The state synchronization | } | |||
| is ongoing."; | enum limit { | |||
| } | value "2"; | |||
| enum finished { | description | |||
| value "2"; | "Limit reached for PCE-controlled LSPs."; | |||
| description | } | |||
| "The state synchronization | enum pending { | |||
| is finished."; | value "3"; | |||
| } | description | |||
| } | "Too many pending LSP update requests."; | |||
| description | } | |||
| "The LSP-DB state synchronization operational | enum unacceptable { | |||
| status."; | 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 pst{ | typedef sync-state { | |||
| type enumeration{ | type enumeration { | |||
| enum rsvp-te{ | enum pending { | |||
| value "0"; | value "0"; | |||
| description | description | |||
| "RSVP-TE signaling protocol"; | "The state synchronization | |||
| } | has not started."; | |||
| enum sr{ | } | |||
| value "1"; | enum ongoing { | |||
| description | value "1"; | |||
| "Segment Routing Traffic Engineering"; | description | |||
| } | "The state synchronization | |||
| } | is ongoing."; | |||
| description | } | |||
| "The Path Setup Type"; | enum finished { | |||
| } | value "2"; | |||
| description | ||||
| "The state synchronization | ||||
| is finished."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "The LSP-DB state synchronization operational | ||||
| status."; | ||||
| } | ||||
| typedef assoc-type{ | typedef pst{ | |||
| type enumeration{ | type enumeration{ | |||
| enum protection{ | enum rsvp-te{ | |||
| value "1"; | value "0"; | |||
| description | description | |||
| "Path Protection Association Type"; | "RSVP-TE signaling protocol"; | |||
| } | } | |||
| enum policy{ | enum sr{ | |||
| value "2"; | value "1"; | |||
| description | description | |||
| "Policy Association Type"; | "Segment Routing Traffic Engineering"; | |||
| } | } | |||
| enum diversity{ | } | |||
| value "3"; | description | |||
| description | "The Path Setup Type"; | |||
| "Diversity Association Type"; | } | |||
| } | ||||
| } | ||||
| description | ||||
| "The PCEP Association Type"; | ||||
| } | ||||
| typedef objective-function{ | typedef assoc-type{ | |||
| type enumeration{ | type enumeration{ | |||
| enum mcp{ | enum protection{ | |||
| value "1"; | value "1"; | |||
| description | description | |||
| "Minimum Cost Path (MCP)"; | "Path Protection Association Type"; | |||
| } | } | |||
| enum mlp{ | enum policy{ | |||
| value "2"; | value "2"; | |||
| description | description | |||
| "Minimum Load Path (MLP)"; | "Policy Association Type"; | |||
| } | } | |||
| enum mbp{ | enum diversity{ | |||
| value "3"; | value "3"; | |||
| description | description | |||
| "Maximum residual Bandwidth Path (MBP)"; | "Diversity Association Type"; | |||
| } | } | |||
| enum mbc{ | } | |||
| value "4"; | description | |||
| description | "The PCEP Association Type"; | |||
| "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)"; | ||||
| } | ||||
| } | typedef objective-function{ | |||
| description | type enumeration{ | |||
| "The PCEP Objective functions"; | 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)"; | ||||
| /* | } | |||
| * Features | 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"; | ||||
| } | ||||
| feature svec { | /* | |||
| description | * Features | |||
| "Support synchronized path computation."; | */ | |||
| } | ||||
| feature gmpls { | feature svec { | |||
| description | description | |||
| "Support GMPLS."; | "Support synchronized path computation."; | |||
| } | } | |||
| feature objective-function { | feature gmpls { | |||
| description | description | |||
| "Support OF as per RFC 5541."; | "Support GMPLS."; | |||
| } | } | |||
| feature gco { | feature objective-function { | |||
| description | description | |||
| "Support GCO as per RFC 5557."; | "Support OF as per RFC 5541."; | |||
| } | } | |||
| feature path-key { | feature gco { | |||
| description | description | |||
| "Support path-key as per RFC 5520."; | "Support GCO as per RFC 5557."; | |||
| } | } | |||
| feature p2mp { | feature path-key { | |||
| description | description | |||
| "Support P2MP as per RFC 6006."; | "Support path-key as per RFC 5520."; | |||
| } | } | |||
| feature stateful { | feature p2mp { | |||
| description | description | |||
| "Support stateful PCE."; | "Support P2MP as per RFC 6006."; | |||
| } | } | |||
| feature stateful-sync-opt { | feature stateful { | |||
| description | description | |||
| "Support stateful sync optimization"; | "Support stateful PCE."; | |||
| } | } | |||
| feature pce-initiated { | ||||
| description | ||||
| "Support PCE-Initiated LSP."; | ||||
| } | ||||
| feature tls { | feature stateful-sync-opt { | |||
| description | description | |||
| "Support PCEP over TLS."; | "Support stateful sync optimization"; | |||
| } | } | |||
| feature sr { | feature pce-initiated { | |||
| description | description | |||
| "Support Segment Routing for PCE."; | "Support PCE-Initiated LSP."; | |||
| } | } | |||
| /* | feature tls { | |||
| * Groupings | description | |||
| */ | "Support PCEP over TLS."; | |||
| grouping pcep-entity-info{ | } | |||
| description | ||||
| "This grouping defines the attributes for PCEP entity."; | ||||
| leaf connect-timer { | ||||
| type uint32 { | ||||
| range "1..65535"; | ||||
| } | ||||
| units "seconds"; | ||||
| default 60; | ||||
| description | ||||
| "The time in seconds that the PCEP entity will wait | ||||
| to establish a TCP connection with a peer. If a | ||||
| TCP connection is not established within this time | ||||
| then PCEP aborts the session setup attempt."; | ||||
| reference | ||||
| "RFC 5440: Path Computation Element (PCE) | ||||
| Communication Protocol (PCEP)"; | ||||
| } | ||||
| leaf connect-max-retry { | feature sr { | |||
| type uint32; | description | |||
| default 5; | "Support Segment Routing for PCE."; | |||
| description | } | |||
| "The maximum number of times the system tries to | ||||
| establish a TCP connection to a peer before the | ||||
| session with the peer transitions to the idle | ||||
| state."; | ||||
| reference | /* | |||
| "RFC 5440: Path Computation Element (PCE) | * Groupings | |||
| Communication Protocol (PCEP)"; | */ | |||
| } | grouping pcep-entity-info{ | |||
| description | ||||
| "This grouping defines the attributes for PCEP entity."; | ||||
| leaf connect-timer { | ||||
| type uint32 { | ||||
| range "1..65535"; | ||||
| } | ||||
| units "seconds"; | ||||
| default 60; | ||||
| description | ||||
| "The time in seconds that the PCEP entity will wait | ||||
| to establish a TCP connection with a peer. If a | ||||
| TCP connection is not established within this time | ||||
| then PCEP aborts the session setup attempt."; | ||||
| reference | ||||
| "RFC 5440: Path Computation Element (PCE) | ||||
| Communication Protocol (PCEP)"; | ||||
| } | ||||
| leaf init-backoff-timer { | leaf connect-max-retry { | |||
| type uint32 { | type uint32; | |||
| range "1..65535"; | default 5; | |||
| } | description | |||
| units "seconds"; | "The maximum number of times the system tries to | |||
| description | establish a TCP connection to a peer before the | |||
| "The initial back-off time in seconds for retrying | session with the peer transitions to the idle | |||
| a failed session setup attempt to a peer. | state."; | |||
| The back-off time increases for each failed | reference | |||
| session setup attempt, until a maximum back-off | "RFC 5440: Path Computation Element (PCE) | |||
| time is reached. The maximum back-off time is | Communication Protocol (PCEP)"; | |||
| max-backoff-timer."; | } | |||
| } | ||||
| leaf max-backoff-timer { | leaf init-backoff-timer { | |||
| type uint32; | type uint32 { | |||
| units "seconds"; | range "1..65535"; | |||
| description | } | |||
| "The maximum back-off time in seconds for retrying | units "seconds"; | |||
| a failed session setup attempt to a peer. | description | |||
| The back-off time increases for each failed session | "The initial back-off time in seconds for retrying | |||
| setup attempt, until this maximum value is reached. | a failed session setup attempt to a peer. | |||
| Session setup attempts then repeat periodically | The back-off time increases for each failed | |||
| without any further increase in back-off time."; | session setup attempt, until a maximum back-off | |||
| } | time is reached. The maximum back-off time is | |||
| max-backoff-timer."; | ||||
| } | ||||
| leaf open-wait-timer { | leaf max-backoff-timer { | |||
| type uint32 { | type uint32; | |||
| range "1..65535"; | units "seconds"; | |||
| } | description | |||
| units "seconds"; | "The maximum back-off time in seconds for retrying | |||
| default 60; | a failed session setup attempt to a peer. | |||
| description | The back-off time increases for each failed session | |||
| "The time in seconds that the PCEP entity will wait | setup attempt, until this maximum value is reached. | |||
| to receive an Open message from a peer after the | Session setup attempts then repeat periodically | |||
| TCP connection has come up. | without any further increase in back-off time."; | |||
| If no Open message is received within this time then | } | |||
| PCEP terminates the TCP connection and deletes the | ||||
| associated sessions."; | ||||
| reference | ||||
| "RFC 5440: Path Computation Element (PCE) | ||||
| Communication Protocol (PCEP)"; | ||||
| } | ||||
| leaf keep-wait-timer { | ||||
| type uint32 { | ||||
| range "1..65535"; | ||||
| } | ||||
| units "seconds"; | ||||
| default 60; | ||||
| description | ||||
| "The time in seconds that the PCEP entity will wait | ||||
| to receive a Keepalive or PCErr message from a peer | ||||
| during session initialization after receiving an | ||||
| Open message. If no Keepalive or PCErr message is | ||||
| received within this time then PCEP terminates the | ||||
| TCP connection and deletes the associated | ||||
| sessions."; | ||||
| reference | ||||
| "RFC 5440: Path Computation Element (PCE) | ||||
| Communication Protocol (PCEP)"; | ||||
| } | ||||
| leaf keep-alive-timer { | leaf open-wait-timer { | |||
| type uint32 { | type uint32 { | |||
| range "0..255"; | range "1..65535"; | |||
| } | } | |||
| units "seconds"; | units "seconds"; | |||
| default 30; | default 60; | |||
| description | description | |||
| "The keep alive transmission timer that this PCEP | "The time in seconds that the PCEP entity will wait | |||
| entity will propose in the initial OPEN message of | to receive an Open message from a peer after the | |||
| each session it is involved in. This is the | TCP connection has come up. | |||
| maximum time between two consecutive messages sent | If no Open message is received within this time then | |||
| to a peer. Zero means that the PCEP entity prefers | PCEP terminates the TCP connection and deletes the | |||
| not to send Keepalives at all. | associated sessions."; | |||
| Note that the actual Keepalive transmission | reference | |||
| intervals, in either direction of an active PCEP | "RFC 5440: Path Computation Element (PCE) | |||
| session, are determined by negotiation between the | Communication Protocol (PCEP)"; | |||
| peers as specified by RFC 5440, and so may differ | } | |||
| from this configured value."; | ||||
| reference | ||||
| "RFC 5440: Path Computation Element (PCE) | ||||
| Communication Protocol (PCEP)"; | ||||
| } | ||||
| leaf dead-timer { | leaf keep-wait-timer { | |||
| type uint32 { | type uint32 { | |||
| range "0..255"; | range "1..65535"; | |||
| } | } | |||
| units "seconds"; | units "seconds"; | |||
| must "(. > ../keep-alive-timer)" { | default 60; | |||
| error-message "The dead timer must be " | description | |||
| + "larger than the keep alive timer"; | "The time in seconds that the PCEP entity will wait | |||
| description | to receive a Keepalive or PCErr message from a peer | |||
| "This value MUST be greater than | during session initialization after receiving an | |||
| keep-alive-timer."; | Open message. If no Keepalive or PCErr message is | |||
| received within this time then PCEP terminates the | ||||
| TCP connection and deletes the associated | ||||
| sessions."; | ||||
| reference | ||||
| "RFC 5440: Path Computation Element (PCE) | ||||
| Communication Protocol (PCEP)"; | ||||
| } | ||||
| } | leaf keep-alive-timer { | |||
| default 120; | type uint32 { | |||
| description | range "0..255"; | |||
| "The dead timer that this PCEP entity will propose | } | |||
| in the initial OPEN message of each session it is | units "seconds"; | |||
| involved in. This is the time after which a peer | default 30; | |||
| should declare a session down if it does not | description | |||
| receive any PCEP messages. Zero suggests that the | "The keep alive transmission timer that this PCEP | |||
| peer does not run a dead timer at all." ; | entity will propose in the initial OPEN message of | |||
| reference | each session it is involved in. This is the | |||
| "RFC 5440: Path Computation Element (PCE) | maximum time between two consecutive messages sent | |||
| Communication Protocol (PCEP)"; | to a peer. Zero means that the PCEP entity prefers | |||
| } | not to send Keepalives at all. | |||
| Note that the actual Keepalive transmission | ||||
| intervals, in either direction of an active PCEP | ||||
| session, are determined by negotiation between the | ||||
| peers as specified by RFC 5440, and so may differ | ||||
| from this configured value."; | ||||
| reference | ||||
| "RFC 5440: Path Computation Element (PCE) | ||||
| Communication Protocol (PCEP)"; | ||||
| } | ||||
| leaf allow-negotiation{ | leaf dead-timer { | |||
| type boolean; | type uint32 { | |||
| description | range "0..255"; | |||
| "Whether the PCEP entity will permit negotiation of | } | |||
| session parameters."; | units "seconds"; | |||
| } | must "(. > ../keep-alive-timer)" { | |||
| error-message "The dead timer must be " | ||||
| + "larger than the keep alive timer"; | ||||
| description | ||||
| "This value MUST be greater than | ||||
| keep-alive-timer."; | ||||
| leaf max-keep-alive-timer{ | } | |||
| type uint32 { | default 120; | |||
| range "0..255"; | description | |||
| } | "The dead timer that this PCEP entity will propose | |||
| units "seconds"; | in the initial OPEN message of each session it is | |||
| description | involved in. This is the time after which a peer | |||
| "In PCEP session parameter negotiation in seconds, | should declare a session down if it does not | |||
| the maximum value that this PCEP entity will | receive any PCEP messages. Zero suggests that the | |||
| accept from a peer for the interval between | peer does not run a dead timer at all." ; | |||
| Keepalive transmissions. Zero means that the PCEP | reference | |||
| entity will allow no Keepalive transmission at | "RFC 5440: Path Computation Element (PCE) | |||
| all." ; | Communication Protocol (PCEP)"; | |||
| } | } | |||
| leaf max-dead-timer{ | leaf allow-negotiation{ | |||
| type uint32 { | type boolean; | |||
| range "0..255"; | description | |||
| } | "Whether the PCEP entity will permit negotiation of | |||
| units "seconds"; | session parameters."; | |||
| description | } | |||
| "In PCEP session parameter negotiation in seconds, | ||||
| the maximum value that this PCEP entity will accept | ||||
| from a peer for the Dead timer. Zero means that | ||||
| the PCEP entity will allow not running a Dead | ||||
| timer."; | ||||
| } | ||||
| leaf min-keep-alive-timer{ | leaf max-keep-alive-timer{ | |||
| type uint32 { | type uint32 { | |||
| range "0..255"; | range "0..255"; | |||
| } | } | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "In PCEP session parameter negotiation in seconds, | "In PCEP session parameter negotiation in seconds, | |||
| the minimum value that this PCEP entity will | the maximum value that this PCEP entity will | |||
| accept for the interval between Keepalive | accept from a peer for the interval between | |||
| transmissions. Zero means that the PCEP entity | Keepalive transmissions. Zero means that the PCEP | |||
| insists on no Keepalive transmission at all."; | entity will allow no Keepalive transmission at | |||
| } | all." ; | |||
| } | ||||
| leaf min-dead-timer{ | leaf max-dead-timer{ | |||
| type uint32 { | type uint32 { | |||
| range "0..255"; | range "0..255"; | |||
| } | } | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "In PCEP session parameter negotiation in | "In PCEP session parameter negotiation in seconds, | |||
| seconds, the minimum value that this PCEP entity | the maximum value that this PCEP entity will accept | |||
| will accept for the Dead timer. Zero means that | from a peer for the Dead timer. Zero means that | |||
| the PCEP entity insists on not running a Dead | the PCEP entity will allow not running a Dead | |||
| timer."; | timer."; | |||
| } | } | |||
| leaf sync-timer{ | leaf min-keep-alive-timer{ | |||
| if-feature svec; | type uint32 { | |||
| type uint32 { | range "0..255"; | |||
| range "0..65535"; | } | |||
| } | units "seconds"; | |||
| units "seconds"; | description | |||
| default 60; | "In PCEP session parameter negotiation in seconds, | |||
| description | the minimum value that this PCEP entity will | |||
| "The value of SyncTimer in seconds is used in the | accept for the interval between Keepalive | |||
| case of synchronized path computation request | transmissions. Zero means that the PCEP entity | |||
| using the SVEC object. Consider the case where a | insists on no Keepalive transmission at all."; | |||
| PCReq message is received by a PCE that contains | } | |||
| the SVEC object referring to M synchronized path | ||||
| computation requests. If after the expiration of | ||||
| the SyncTimer all the M path computation requests | ||||
| have not been, received a protocol error is | ||||
| triggered and the PCE MUST cancel the whole set | ||||
| of path computation requests. | ||||
| The aim of the SyncTimer is to avoid the storage | ||||
| of unused synchronized requests should one of | ||||
| them get lost for some reasons (for example, a | ||||
| misbehaving PCC). | ||||
| Zero means that the PCEP entity does not use the | ||||
| SyncTimer."; | ||||
| reference | ||||
| "RFC 5440: Path Computation Element (PCE) | ||||
| Communication Protocol (PCEP)"; | ||||
| } | ||||
| leaf request-timer{ | leaf min-dead-timer{ | |||
| type uint32 { | type uint32 { | |||
| range "1..65535"; | range "0..255"; | |||
| } | } | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "The maximum time that the PCEP entity will wait | "In PCEP session parameter negotiation in | |||
| for a response to a PCReq message."; | seconds, the minimum value that this PCEP entity | |||
| } | will accept for the Dead timer. Zero means that | |||
| the PCEP entity insists on not running a Dead | ||||
| timer."; | ||||
| } | ||||
| leaf max-sessions{ | leaf sync-timer{ | |||
| type uint32; | if-feature svec; | |||
| description | type uint32 { | |||
| "Maximum number of sessions involving this PCEP | range "0..65535"; | |||
| entity that can exist at any time."; | } | |||
| } | units "seconds"; | |||
| default 60; | ||||
| description | ||||
| "The value of SyncTimer in seconds is used in the | ||||
| case of synchronized path computation request | ||||
| using the SVEC object. Consider the case where a | ||||
| PCReq message is received by a PCE that contains | ||||
| the SVEC object referring to M synchronized path | ||||
| computation requests. If after the expiration of | ||||
| the SyncTimer all the M path computation requests | ||||
| have not been, received a protocol error is | ||||
| triggered and the PCE MUST cancel the whole set | ||||
| of path computation requests. | ||||
| The aim of the SyncTimer is to avoid the storage | ||||
| of unused synchronized requests should one of | ||||
| them get lost for some reasons (for example, a | ||||
| misbehaving PCC). | ||||
| Zero means that the PCEP entity does not use the | ||||
| SyncTimer."; | ||||
| reference | ||||
| "RFC 5440: Path Computation Element (PCE) | ||||
| Communication Protocol (PCEP)"; | ||||
| } | ||||
| leaf max-unknown-reqs{ | leaf request-timer{ | |||
| type uint32; | type uint32 { | |||
| default 5; | range "1..65535"; | |||
| description | } | |||
| "The maximum number of unrecognized requests and | units "seconds"; | |||
| replies that any session on this PCEP entity is | description | |||
| willing to accept per minute before terminating | "The maximum time that the PCEP entity will wait | |||
| the session. | for a response to a PCReq message."; | |||
| A PCRep message contains an unrecognized reply | } | |||
| if it contains an RP object whose request ID | ||||
| does not correspond to any in-progress request | ||||
| sent by this PCEP entity. | ||||
| A PCReq message contains an unrecognized request | ||||
| if it contains an RP object whose request ID is | ||||
| zero."; | ||||
| reference | ||||
| "RFC 5440: Path Computation Element (PCE) | ||||
| Communication Protocol (PCEP)"; | ||||
| } | ||||
| leaf max-unknown-msgs{ | leaf max-sessions{ | |||
| type uint32; | type uint32; | |||
| default 5; | description | |||
| description | "Maximum number of sessions involving this PCEP | |||
| "The maximum number of unknown messages that any | entity that can exist at any time."; | |||
| session on this PCEP entity is willing to accept | } | |||
| per minute before terminating the session."; | ||||
| reference | ||||
| "RFC 5440: Path Computation Element (PCE) | ||||
| Communication Protocol (PCEP)"; | ||||
| } | ||||
| }//pcep-entity-info | leaf max-unknown-reqs{ | |||
| type uint32; | ||||
| default 5; | ||||
| description | ||||
| "The maximum number of unrecognized requests and | ||||
| replies that any session on this PCEP entity is | ||||
| willing to accept per minute before terminating | ||||
| the session. | ||||
| A PCRep message contains an unrecognized reply | ||||
| if it contains an RP object whose request ID | ||||
| does not correspond to any in-progress request | ||||
| sent by this PCEP entity. | ||||
| A PCReq message contains an unrecognized request | ||||
| if it contains an RP object whose request ID is | ||||
| zero."; | ||||
| reference | ||||
| "RFC 5440: Path Computation Element (PCE) | ||||
| Communication Protocol (PCEP)"; | ||||
| } | ||||
| grouping pce-scope{ | leaf max-unknown-msgs{ | |||
| description | type uint32; | |||
| "This grouping defines PCE path computation scope | default 5; | |||
| information which maybe relevant to PCE selection. | description | |||
| This information corresponds to PCE auto-discovery | "The maximum number of unknown messages that any | |||
| information."; | session on this PCEP entity is willing to accept | |||
| reference | per minute before terminating the session."; | |||
| "RFC 5088: OSPF Protocol Extensions for Path | ||||
| Computation Element (PCE) | ||||
| Discovery | ||||
| RFC 5089: IS-IS Protocol Extensions for Path | ||||
| Computation Element (PCE) | ||||
| Discovery"; | ||||
| leaf intra-area-scope{ | ||||
| type boolean; | ||||
| default true; | ||||
| description | ||||
| "PCE can compute intra-area paths."; | ||||
| } | ||||
| leaf intra-area-pref{ | ||||
| type uint8{ | ||||
| range "0..7"; | ||||
| } | ||||
| description | ||||
| "The PCE's preference for intra-area TE LSP | ||||
| computation."; | ||||
| } | ||||
| leaf inter-area-scope{ | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "PCE can compute inter-area paths."; | ||||
| } | ||||
| leaf inter-area-scope-default{ | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "PCE can act as a default PCE for inter-area | ||||
| path computation."; | ||||
| } | ||||
| leaf inter-area-pref{ | ||||
| type uint8{ | ||||
| range "0..7"; | ||||
| } | ||||
| description | ||||
| "The PCE's preference for inter-area TE LSP | ||||
| computation."; | ||||
| } | ||||
| leaf inter-as-scope{ | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "PCE can compute inter-AS paths."; | ||||
| } | ||||
| leaf inter-as-scope-default{ | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "PCE can act as a default PCE for inter-AS | ||||
| path computation."; | ||||
| } | ||||
| leaf inter-as-pref{ | ||||
| type uint8{ | ||||
| range "0..7"; | ||||
| } | ||||
| description | ||||
| "The PCE's preference for inter-AS TE LSP | ||||
| computation."; | ||||
| } | ||||
| leaf inter-layer-scope{ | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "PCE can compute inter-layer paths."; | ||||
| } | ||||
| leaf inter-layer-pref{ | ||||
| type uint8{ | ||||
| range "0..7"; | ||||
| } | ||||
| description | ||||
| "The PCE's preference for inter-layer TE LSP | ||||
| computation."; | ||||
| } | ||||
| }//pce-scope | ||||
| grouping domain{ | reference | |||
| description | "RFC 5440: Path Computation Element (PCE) | |||
| "This grouping specifies a Domain where the | Communication Protocol (PCEP)"; | |||
| PCEP speaker has topology visibility."; | } | |||
| leaf domain-type{ | ||||
| type domain-type; | ||||
| description | ||||
| "The domain type."; | ||||
| } | ||||
| leaf domain{ | ||||
| type domain; | ||||
| description | ||||
| "The domain Information."; | ||||
| } | ||||
| }//domain | ||||
| grouping capability{ | }//pcep-entity-info | |||
| description | ||||
| "This grouping specifies a capability | ||||
| information of local PCEP entity. This maybe | ||||
| relevant to PCE selection as well. This | ||||
| information corresponds to PCE auto-discovery | ||||
| information."; | ||||
| reference | ||||
| "RFC 5088: OSPF Protocol Extensions for Path | ||||
| Computation Element (PCE) | ||||
| Discovery | ||||
| RFC 5089: IS-IS Protocol Extensions for Path | ||||
| Computation Element (PCE) | ||||
| Discovery"; | ||||
| leaf gmpls{ | ||||
| if-feature gmpls; | ||||
| type boolean; | ||||
| description | ||||
| "Path computation with GMPLS link | ||||
| constraints."; | ||||
| } | ||||
| leaf bi-dir{ | ||||
| type boolean; | ||||
| description | ||||
| "Bidirectional path computation."; | ||||
| } | ||||
| leaf diverse{ | ||||
| type boolean; | ||||
| description | ||||
| "Diverse path computation."; | ||||
| } | ||||
| leaf load-balance{ | ||||
| type boolean; | ||||
| description | ||||
| "Load-balanced path computation."; | ||||
| } | ||||
| leaf synchronize{ | ||||
| if-feature svec; | ||||
| type boolean; | ||||
| description | ||||
| "Synchronized paths computation."; | ||||
| } | ||||
| leaf objective-function{ | ||||
| if-feature objective-function; | ||||
| type boolean; | ||||
| description | ||||
| "Support for multiple objective functions."; | ||||
| } | ||||
| leaf add-path-constraint{ | ||||
| type boolean; | ||||
| description | ||||
| "Support for additive path constraints (max | ||||
| hop count, etc.)."; | ||||
| } | ||||
| leaf prioritization{ | ||||
| type boolean; | ||||
| description | ||||
| "Support for request prioritization."; | ||||
| } | ||||
| leaf multi-request{ | ||||
| type boolean; | ||||
| description | ||||
| "Support for multiple requests per message."; | ||||
| } | ||||
| leaf gco{ | ||||
| if-feature gco; | ||||
| type boolean; | ||||
| description | ||||
| "Support for Global Concurrent Optimization | ||||
| (GCO)."; | ||||
| } | ||||
| leaf p2mp{ | ||||
| if-feature p2mp; | ||||
| type boolean; | ||||
| description | ||||
| "Support for P2MP path computation."; | ||||
| } | ||||
| container stateful{ | grouping pce-scope{ | |||
| if-feature stateful; | description | |||
| description | "This grouping defines PCE path computation scope | |||
| "If stateful PCE feature is present"; | information which maybe relevant to PCE selection. | |||
| leaf enabled{ | This information corresponds to PCE auto-discovery | |||
| type boolean; | information."; | |||
| description | reference | |||
| "Enabled or Disabled"; | "RFC 5088: OSPF Protocol Extensions for Path | |||
| } | Computation Element (PCE) | |||
| leaf active{ | Discovery | |||
| type boolean; | RFC 5089: IS-IS Protocol Extensions for Path | |||
| description | Computation Element (PCE) | |||
| "Support for active stateful PCE."; | Discovery"; | |||
| } | leaf intra-area-scope{ | |||
| leaf pce-initiated{ | type boolean; | |||
| if-feature pce-initiated; | default true; | |||
| type boolean; | description | |||
| description | "PCE can compute intra-area paths."; | |||
| "Support for PCE-initiated LSP."; | } | |||
| } | leaf intra-area-pref{ | |||
| leaf include-db-ver{ | type uint8{ | |||
| if-feature stateful-sync-opt; | range "0..7"; | |||
| type boolean; | } | |||
| description | description | |||
| "Support inclusion of LSP-DB-VERSION | "The PCE's preference for intra-area TE LSP | |||
| in LSP object"; | computation."; | |||
| } | } | |||
| leaf trigger-resync{ | leaf inter-area-scope{ | |||
| if-feature stateful-sync-opt; | type boolean; | |||
| type boolean; | default false; | |||
| description | description | |||
| "Support PCE triggered re-synchronization"; | "PCE can compute inter-area paths."; | |||
| } | } | |||
| leaf trigger-initial-sync{ | leaf inter-area-scope-default{ | |||
| if-feature stateful-sync-opt; | type boolean; | |||
| type boolean; | default false; | |||
| description | description | |||
| "PCE triggered initial synchronization"; | "PCE can act as a default PCE for inter-area | |||
| } | path computation."; | |||
| leaf incremental-sync{ | } | |||
| if-feature stateful-sync-opt; | leaf inter-area-pref{ | |||
| type boolean; | type uint8{ | |||
| description | range "0..7"; | |||
| "Support incremental (delta) sync"; | } | |||
| description | ||||
| "The PCE's preference for inter-area TE LSP | ||||
| computation."; | ||||
| } | ||||
| leaf inter-as-scope{ | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "PCE can compute inter-AS paths."; | ||||
| } | ||||
| leaf inter-as-scope-default{ | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "PCE can act as a default PCE for inter-AS | ||||
| path computation."; | ||||
| } | ||||
| leaf inter-as-pref{ | ||||
| type uint8{ | ||||
| range "0..7"; | ||||
| } | ||||
| description | ||||
| "The PCE's preference for inter-AS TE LSP | ||||
| computation."; | ||||
| } | ||||
| leaf inter-layer-scope{ | ||||
| type boolean; | ||||
| default false; | ||||
| description | ||||
| "PCE can compute inter-layer paths."; | ||||
| } | ||||
| leaf inter-layer-pref{ | ||||
| type uint8{ | ||||
| range "0..7"; | ||||
| } | ||||
| description | ||||
| "The PCE's preference for inter-layer TE LSP | ||||
| computation."; | ||||
| } | ||||
| }//pce-scope | ||||
| } | grouping domain{ | |||
| } | description | |||
| container sr{ | "This grouping specifies a Domain where the | |||
| if-feature sr; | PCEP speaker has topology visibility."; | |||
| description | ||||
| "If segment routing is supported"; | ||||
| leaf enabled{ | ||||
| type boolean; | ||||
| description | ||||
| "Enabled or Disabled"; | ||||
| } | ||||
| } | leaf domain-type{ | |||
| }//capability | type domain-type; | |||
| description | ||||
| "The domain type."; | ||||
| } | ||||
| leaf domain{ | ||||
| type domain; | ||||
| description | ||||
| "The domain Information."; | ||||
| } | ||||
| }//domain | ||||
| grouping info{ | grouping capability{ | |||
| description | description | |||
| "This grouping specifies all information which | "This grouping specifies a capability | |||
| maybe relevant to both PCC and PCE. | information of local PCEP entity. This maybe | |||
| This information corresponds to PCE auto-discovery | relevant to PCE selection as well. This | |||
| information."; | information corresponds to PCE auto-discovery | |||
| container domain{ | information."; | |||
| description | reference | |||
| "The local domain for the PCEP entity"; | "RFC 5088: OSPF Protocol Extensions for Path | |||
| list domain{ | Computation Element (PCE) | |||
| key "domain-type domain"; | Discovery | |||
| description | RFC 5089: IS-IS Protocol Extensions for Path | |||
| "The local domain."; | Computation Element (PCE) | |||
| uses domain{ | Discovery"; | |||
| description | leaf gmpls{ | |||
| "The local domain for the PCEP entity."; | if-feature gmpls; | |||
| } | type boolean; | |||
| } | description | |||
| } | "Path computation with GMPLS link | |||
| container capability{ | constraints."; | |||
| description | } | |||
| "The PCEP entity capability"; | leaf bi-dir{ | |||
| uses capability{ | type boolean; | |||
| description | description | |||
| "The PCEP entity supported | "Bidirectional path computation."; | |||
| capabilities."; | } | |||
| } | leaf diverse{ | |||
| } | type boolean; | |||
| description | ||||
| "Diverse path computation."; | ||||
| } | ||||
| leaf load-balance{ | ||||
| type boolean; | ||||
| description | ||||
| "Load-balanced path computation."; | ||||
| } | ||||
| leaf synchronize{ | ||||
| if-feature svec; | ||||
| type boolean; | ||||
| description | ||||
| "Synchronized paths computation."; | ||||
| } | ||||
| leaf objective-function{ | ||||
| if-feature objective-function; | ||||
| type boolean; | ||||
| description | ||||
| "Support for multiple objective functions."; | ||||
| } | ||||
| leaf add-path-constraint{ | ||||
| type boolean; | ||||
| description | ||||
| "Support for additive path constraints (max | ||||
| hop count, etc.)."; | ||||
| } | ||||
| leaf prioritization{ | ||||
| type boolean; | ||||
| description | ||||
| "Support for request prioritization."; | ||||
| } | ||||
| leaf multi-request{ | ||||
| type boolean; | ||||
| description | ||||
| "Support for multiple requests per message."; | ||||
| } | ||||
| leaf gco{ | ||||
| if-feature gco; | ||||
| type boolean; | ||||
| description | ||||
| "Support for Global Concurrent Optimization | ||||
| (GCO)."; | ||||
| } | ||||
| leaf p2mp{ | ||||
| if-feature p2mp; | ||||
| type boolean; | ||||
| description | ||||
| "Support for P2MP path computation."; | ||||
| } | ||||
| }//info | container stateful{ | |||
| if-feature stateful; | ||||
| description | ||||
| "If stateful PCE feature is present"; | ||||
| leaf enabled{ | ||||
| type boolean; | ||||
| description | ||||
| "Enabled or Disabled"; | ||||
| } | ||||
| leaf active{ | ||||
| type boolean; | ||||
| description | ||||
| "Support for active stateful PCE."; | ||||
| } | ||||
| leaf pce-initiated{ | ||||
| if-feature pce-initiated; | ||||
| type boolean; | ||||
| description | ||||
| "Support for PCE-initiated LSP."; | ||||
| } | ||||
| leaf include-db-ver{ | ||||
| if-feature stateful-sync-opt; | ||||
| type boolean; | ||||
| description | ||||
| "Support inclusion of LSP-DB-VERSION | ||||
| in LSP object"; | ||||
| } | ||||
| leaf trigger-resync{ | ||||
| if-feature stateful-sync-opt; | ||||
| type boolean; | ||||
| description | ||||
| "Support PCE triggered re-synchronization"; | ||||
| } | ||||
| leaf trigger-initial-sync{ | ||||
| if-feature stateful-sync-opt; | ||||
| type boolean; | ||||
| description | ||||
| "PCE triggered initial synchronization"; | ||||
| } | ||||
| leaf incremental-sync{ | ||||
| if-feature stateful-sync-opt; | ||||
| type boolean; | ||||
| description | ||||
| "Support incremental (delta) sync"; | ||||
| } | ||||
| } | ||||
| container sr{ | ||||
| if-feature sr; | ||||
| description | ||||
| "If segment routing is supported"; | ||||
| leaf enabled{ | ||||
| type boolean; | ||||
| description | ||||
| "Enabled or Disabled"; | ||||
| grouping pce-info{ | } | |||
| description | ||||
| "This grouping specifies all PCE information | ||||
| which maybe relevant to the PCE selection. | ||||
| This information corresponds to PCE auto-discovery | ||||
| information."; | ||||
| container scope{ | ||||
| description | ||||
| "The path computation scope"; | ||||
| uses pce-scope; | ||||
| } | ||||
| container neigh-domains{ | } | |||
| description | }//capability | |||
| "The list of neighbour PCE-Domain | ||||
| toward which a PCE can compute | ||||
| paths"; | ||||
| list domain{ | ||||
| key "domain-type domain"; | ||||
| description | grouping info{ | |||
| "The neighbour domain."; | description | |||
| uses domain{ | "This grouping specifies all information which | |||
| description | maybe relevant to both PCC and PCE. | |||
| "The PCE neighbour domain."; | This information corresponds to PCE auto-discovery | |||
| } | information."; | |||
| } | container domain{ | |||
| } | description | |||
| }//pce-info | "The local domain for the PCEP entity"; | |||
| list domain{ | ||||
| key "domain-type domain"; | ||||
| description | ||||
| "The local domain."; | ||||
| uses domain{ | ||||
| description | ||||
| "The local domain for the PCEP entity."; | ||||
| } | ||||
| } | ||||
| } | ||||
| container capability{ | ||||
| description | ||||
| "The PCEP entity capability"; | ||||
| uses capability{ | ||||
| description | ||||
| "The PCEP entity supported | ||||
| capabilities."; | ||||
| } | ||||
| } | ||||
| grouping lsp-state{ | }//info | |||
| description | ||||
| "This grouping defines the attributes for LSP in LSP-DB. | ||||
| These are the attributes specifically from the PCEP | ||||
| perspective"; | ||||
| leaf plsp-id{ | ||||
| type uint32{ | ||||
| range "1..1048575"; | ||||
| } | ||||
| description | ||||
| "A PCEP-specific identifier for the LSP. A PCC | ||||
| creates a unique PLSP-ID for each LSP that is | ||||
| constant for the lifetime of a PCEP session. | ||||
| PLSP-ID is 20 bits with 0 and 0xFFFFF are | ||||
| reserved"; | ||||
| } | ||||
| leaf pcc-id{ | ||||
| type inet:ip-address; | ||||
| description | ||||
| "The local internet address of the PCC, that | ||||
| generated the PLSP-ID."; | ||||
| } | ||||
| container lsp-ref{ | grouping pce-info{ | |||
| description | description | |||
| "reference to ietf-te lsp state"; | "This grouping specifies all PCE information | |||
| which maybe relevant to the PCE selection. | ||||
| This information corresponds to PCE auto-discovery | ||||
| information."; | ||||
| container scope{ | ||||
| description | ||||
| "The path computation scope"; | ||||
| uses pce-scope; | ||||
| } | ||||
| container neigh-domains{ | ||||
| description | ||||
| "The list of neighbour PCE-Domain | ||||
| toward which a PCE can compute | ||||
| paths"; | ||||
| list domain{ | ||||
| key "domain-type domain"; | ||||
| leaf source { | description | |||
| type leafref { | "The neighbour domain."; | |||
| path "/te:te/te:lsps-state/te:lsp/te:source"; | uses domain{ | |||
| } | description | |||
| description | "The PCE neighbour domain."; | |||
| "Tunnel sender address extracted from | } | |||
| SENDER_TEMPLATE object"; | } | |||
| reference "RFC3209"; | } | |||
| } | }//pce-info | |||
| leaf destination { | ||||
| type leafref { | ||||
| path "/te:te/te:lsps-state/te:lsp/te:" | ||||
| + "destination"; | ||||
| } | ||||
| description | ||||
| "Tunnel endpoint address extracted from | ||||
| SESSION object"; | ||||
| reference "RFC3209"; | ||||
| } | ||||
| leaf tunnel-id { | ||||
| type leafref { | ||||
| path "/te:te/te:lsps-state/te:lsp/te:tunnel-id"; | ||||
| } | ||||
| description | ||||
| "Tunnel identifier used in the SESSION | ||||
| that remains constant over the life | ||||
| of the tunnel."; | ||||
| reference "RFC3209"; | ||||
| } | ||||
| leaf lsp-id { | ||||
| type leafref { | ||||
| path "/te:te/te:lsps-state/te:lsp/te:lsp-id"; | ||||
| } | ||||
| description | ||||
| "Identifier used in the SENDER_TEMPLATE | ||||
| and the FILTER_SPEC that can be changed | ||||
| to allow a sender to share resources with | ||||
| itself."; | ||||
| reference "RFC3209"; | ||||
| } | ||||
| leaf extended-tunnel-id { | ||||
| type leafref { | ||||
| path "/te:te/te:lsps-state/te:lsp/te:" | ||||
| + "extended-tunnel-id"; | ||||
| } | ||||
| description | ||||
| "Extended Tunnel ID of the LSP."; | ||||
| reference "RFC3209"; | ||||
| } | ||||
| leaf type { | ||||
| type leafref { | ||||
| path "/te:te/te:lsps-state/te:lsp/te:type"; | ||||
| } | ||||
| description "LSP type P2P or P2MP"; | ||||
| } | ||||
| } | ||||
| leaf admin-state{ | grouping lsp-state{ | |||
| type boolean; | description | |||
| description | "This grouping defines the attributes for LSP in LSP-DB. | |||
| "The desired operational state"; | These are the attributes specifically from the PCEP | |||
| } | perspective"; | |||
| leaf operational-state{ | leaf plsp-id{ | |||
| type operational-state; | type uint32{ | |||
| description | range "1..1048575"; | |||
| "The operational status of the LSP"; | } | |||
| } | description | |||
| container delegated{ | "A PCEP-specific identifier for the LSP. A PCC | |||
| description | creates a unique PLSP-ID for each LSP that is | |||
| "The delegation related parameters"; | constant for the lifetime of a PCEP session. | |||
| leaf enabled{ | PLSP-ID is 20 bits with 0 and 0xFFFFF are | |||
| type boolean; | reserved"; | |||
| description | } | |||
| "LSP is delegated or not"; | leaf pcc-id{ | |||
| } | type inet:ip-address; | |||
| leaf peer{ | description | |||
| type leafref { | "The local internet address of the PCC, that | |||
| path "/pcep-state/entity/peers/peer/addr"; | generated the PLSP-ID."; | |||
| } | } | |||
| must "(../enabled = true())" | ||||
| { | ||||
| error-message | ||||
| "The LSP must be delegated"; | ||||
| description | ||||
| "When LSP is a delegated LSP"; | ||||
| } | ||||
| description | ||||
| "At the PCC, the reference to the PCEP peer to | ||||
| which LSP is delegated; At the PCE, the | ||||
| reference to the PCEP peer which delegated this | ||||
| LSP"; | ||||
| } | ||||
| leaf srp-id{ | ||||
| type uint32; | ||||
| description | ||||
| "The last SRP-ID-number associated with this | ||||
| LSP."; | ||||
| } | ||||
| } | ||||
| container initiation { | ||||
| if-feature pce-initiated; | ||||
| description | ||||
| "The PCE initiation related parameters"; | ||||
| leaf enabled{ | ||||
| type boolean; | ||||
| description | ||||
| "LSP is PCE-initiated or not"; | ||||
| } | ||||
| leaf peer{ | ||||
| type leafref { | ||||
| path "/pcep-state/entity/peers/peer/addr"; | ||||
| } | ||||
| must "(../enabled = true())" | ||||
| { | ||||
| error-message | ||||
| "The LSP must be PCE-Initiated"; | ||||
| description | ||||
| "When the LSP must be PCE-Initiated"; | ||||
| } | ||||
| description | ||||
| "At the PCC, the reference to the PCEP peer | ||||
| that initiated this LSP; At the PCE, the | ||||
| reference to the PCEP peer where the LSP | ||||
| is initiated"; | ||||
| } | ||||
| } | ||||
| leaf symbolic-path-name{ | ||||
| type string; | ||||
| description | ||||
| "The symbolic path name associated with the LSP."; | ||||
| } | ||||
| leaf last-error{ | ||||
| type lsp-error; | ||||
| description | ||||
| "The last error for the LSP."; | ||||
| } | ||||
| leaf pst{ | ||||
| type pst; | ||||
| default "rsvp-te"; | ||||
| description | ||||
| "The Path Setup Type"; | ||||
| } | container lsp-ref{ | |||
| description | ||||
| "reference to ietf-te lsp state"; | ||||
| }//lsp-state | leaf source { | |||
| type leafref { | ||||
| path "/te:te/te:lsps-state/te:lsp/te:source"; | ||||
| grouping notification-instance-hdr { | } | |||
| description | description | |||
| "This group describes common instance specific data | "Tunnel sender address extracted from | |||
| for notifications."; | SENDER_TEMPLATE object"; | |||
| reference "RFC3209"; | ||||
| } | ||||
| leaf destination { | ||||
| type leafref { | ||||
| path "/te:te/te:lsps-state/te:lsp/te:" | ||||
| + "destination"; | ||||
| } | ||||
| description | ||||
| "Tunnel endpoint address extracted from | ||||
| SESSION object"; | ||||
| reference "RFC3209"; | ||||
| } | ||||
| leaf tunnel-id { | ||||
| type leafref { | ||||
| path "/te:te/te:lsps-state/te:lsp/te:tunnel-id"; | ||||
| } | ||||
| description | ||||
| "Tunnel identifier used in the SESSION | ||||
| that remains constant over the life | ||||
| of the tunnel."; | ||||
| reference "RFC3209"; | ||||
| } | ||||
| leaf lsp-id { | ||||
| type leafref { | ||||
| path "/te:te/te:lsps-state/te:lsp/te:lsp-id"; | ||||
| } | ||||
| description | ||||
| "Identifier used in the SENDER_TEMPLATE | ||||
| and the FILTER_SPEC that can be changed | ||||
| to allow a sender to share resources with | ||||
| itself."; | ||||
| reference "RFC3209"; | ||||
| } | ||||
| leaf extended-tunnel-id { | ||||
| type leafref { | ||||
| path "/te:te/te:lsps-state/te:lsp/te:" | ||||
| + "extended-tunnel-id"; | ||||
| } | ||||
| description | ||||
| "Extended Tunnel ID of the LSP."; | ||||
| reference "RFC3209"; | ||||
| } | ||||
| leaf type { | ||||
| type leafref { | ||||
| path "/te:te/te:lsps-state/te:lsp/te:type"; | ||||
| } | ||||
| description "LSP type P2P or P2MP"; | ||||
| } | ||||
| } | ||||
| leaf peer-addr { | leaf admin-state{ | |||
| type leafref { | type boolean; | |||
| path "/pcep-state/entity/peers/peer/addr"; | description | |||
| } | "The desired operational state"; | |||
| description | } | |||
| "Reference to peer address"; | leaf operational-state{ | |||
| } | type operational-state; | |||
| description | ||||
| "The operational status of the LSP"; | ||||
| } | ||||
| container delegated{ | ||||
| description | ||||
| "The delegation related parameters"; | ||||
| leaf enabled{ | ||||
| type boolean; | ||||
| description | ||||
| "LSP is delegated or not"; | ||||
| } | ||||
| leaf peer{ | ||||
| type leafref { | ||||
| path "/pcep/entity/peers/peer/addr"; | ||||
| } | ||||
| must "(../enabled = true())" | ||||
| { | ||||
| error-message | ||||
| "The LSP must be delegated"; | ||||
| description | ||||
| "When LSP is a delegated LSP"; | ||||
| } | ||||
| description | ||||
| "At the PCC, the reference to the PCEP peer to | ||||
| which LSP is delegated; At the PCE, the | ||||
| reference to the PCEP peer which delegated this | ||||
| LSP"; | ||||
| } | ||||
| leaf srp-id{ | ||||
| type uint32; | ||||
| description | ||||
| "The last SRP-ID-number associated with this | ||||
| LSP."; | ||||
| } | ||||
| } | ||||
| container initiation { | ||||
| if-feature pce-initiated; | ||||
| description | ||||
| "The PCE initiation related parameters"; | ||||
| leaf enabled{ | ||||
| type boolean; | ||||
| description | ||||
| "LSP is PCE-initiated or not"; | ||||
| } | ||||
| leaf peer{ | ||||
| type leafref { | ||||
| path "/pcep/entity/peers/peer/addr"; | ||||
| } | ||||
| must "(../enabled = true())" | ||||
| { | ||||
| error-message | ||||
| "The LSP must be PCE-Initiated"; | ||||
| description | ||||
| "When the LSP must be PCE-Initiated"; | ||||
| } | ||||
| description | ||||
| "At the PCC, the reference to the PCEP peer | ||||
| that initiated this LSP; At the PCE, the | ||||
| reference to the PCEP peer where the LSP | ||||
| is initiated"; | ||||
| } | ||||
| } | ||||
| leaf symbolic-path-name{ | ||||
| type string; | ||||
| description | ||||
| "The symbolic path name associated with the LSP."; | ||||
| } | ||||
| leaf last-error{ | ||||
| type lsp-error; | ||||
| description | ||||
| "The last error for the LSP."; | ||||
| } | ||||
| leaf pst{ | ||||
| type pst; | ||||
| default "rsvp-te"; | ||||
| description | ||||
| "The Path Setup Type"; | ||||
| }// notification-instance-hdr | } | |||
| grouping notification-session-hdr { | }//lsp-state | |||
| description | ||||
| "This group describes common session instance specific | ||||
| data for notifications."; | ||||
| leaf session-initiator { | grouping notification-instance-hdr { | |||
| type leafref { | description | |||
| path "/pcep-state/entity/peers/peer/sessions/" + | "This group describes common instance specific data | |||
| "session/initiator"; | for notifications."; | |||
| } | ||||
| description | ||||
| "Reference to pcep session initiator leaf"; | ||||
| } | ||||
| }// notification-session-hdr | ||||
| grouping stateful-pce-parameter { | leaf peer-addr { | |||
| description | type leafref { | |||
| "This group describes stateful PCE specific | path "/pcep/entity/peers/peer/addr"; | |||
| parameters."; | } | |||
| leaf state-timeout{ | description | |||
| type uint32; | "Reference to peer address"; | |||
| units "seconds"; | } | |||
| description | ||||
| "When a PCEP session is terminated, a PCC | ||||
| waits for this time period before flushing | ||||
| LSP state associated with that PCEP session | ||||
| and reverting to operator-defined default | ||||
| parameters or behaviours."; | ||||
| } | ||||
| leaf redelegation-timeout{ | ||||
| when "../../role = 'pcc'" + | ||||
| "or " + | ||||
| "../../role = 'pcc-and-pce'" | ||||
| { | ||||
| description | ||||
| "Valid at PCC"; | ||||
| } | ||||
| type uint32; | ||||
| units "seconds"; | ||||
| description | ||||
| "When a PCEP session is terminated, a PCC | ||||
| waits for this time period before revoking | ||||
| LSP delegation to a PCE and attempting to | ||||
| redelegate LSPs associated with the | ||||
| terminated PCEP session to an alternate | ||||
| PCE."; | ||||
| } | ||||
| leaf rpt-non-pcep-lsp{ | ||||
| when "../../role = 'pcc'" + | ||||
| "or " + | ||||
| "../../role = 'pcc-and-pce'" | ||||
| { | ||||
| description | ||||
| "Valid at PCC"; | ||||
| } | ||||
| type boolean; | ||||
| default true; | ||||
| description | ||||
| "If set, a PCC reports LSPs that are not | ||||
| controlled by any PCE (for example, LSPs | ||||
| that are statically configured at the | ||||
| PCC). "; | ||||
| } | ||||
| } | }// notification-instance-hdr | |||
| grouping authentication { | grouping notification-session-hdr { | |||
| description "Authentication Information"; | description | |||
| choice auth-type-selection { | "This group describes common session instance specific | |||
| description | data for notifications."; | |||
| "Options for expressing authentication setting."; | ||||
| case auth-key-chain { | leaf session-initiator { | |||
| leaf key-chain { | type leafref { | |||
| type key-chain:key-chain-ref; | path "/pcep/entity/peers/peer/sessions/" + | |||
| description | "session/initiator"; | |||
| "key-chain name."; | } | |||
| } | description | |||
| } | "Reference to pcep session initiator leaf"; | |||
| case auth-key { | } | |||
| leaf crypto-algorithm { | }// notification-session-hdr | |||
| type identityref { | ||||
| base key-chain:crypto-algorithm; | ||||
| } | ||||
| mandatory true; | ||||
| description | ||||
| "Cryptographic algorithm associated with key."; | ||||
| } | ||||
| container key-string { | ||||
| description | ||||
| "The key string."; | ||||
| nacm:default-deny-all; | ||||
| choice key-string-style { | ||||
| description | ||||
| "Key string styles"; | ||||
| 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 { | ||||
| if-feature tls; | ||||
| container tls { | ||||
| description | ||||
| "TLS related information - TBD"; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping path-key { | grouping stateful-pce-parameter { | |||
| description "Path-key related information"; | description | |||
| leaf enabled{ | "This group describes stateful PCE specific | |||
| type boolean; | parameters."; | |||
| description | leaf state-timeout{ | |||
| "Enabled or Disabled"; | type uint32; | |||
| } | units "seconds"; | |||
| leaf discard-timer { | description | |||
| type uint32; | "When a PCEP session is terminated, a PCC | |||
| units "minutes"; | waits for this time period before flushing | |||
| default 10; | LSP state associated with that PCEP session | |||
| description | and reverting to operator-defined default | |||
| "A timer to discard unwanted path-keys"; | parameters or behaviours."; | |||
| } | } | |||
| leaf reuse-time { | leaf redelegation-timeout{ | |||
| type uint32; | when "../../role = 'pcc'" + | |||
| units "minutes"; | "or " + | |||
| default 30; | "../../role = 'pcc-and-pce'" | |||
| description | { | |||
| "A time after which the path-keys could be reused"; | description | |||
| } | "Valid at PCC"; | |||
| leaf pce-id { | } | |||
| type inet:ip-address; | type uint32; | |||
| description | units "seconds"; | |||
| "PCE Address to be used in each Path-Key Subobject | description | |||
| (PKS)"; | "When a PCEP session is terminated, a PCC | |||
| } | waits for this time period before revoking | |||
| } | LSP delegation to a PCE and attempting to | |||
| redelegate LSPs associated with the | ||||
| terminated PCEP session to an alternate | ||||
| PCE."; | ||||
| } | ||||
| leaf rpt-non-pcep-lsp{ | ||||
| when "../../role = 'pcc'" + | ||||
| "or " + | ||||
| "../../role = 'pcc-and-pce'" | ||||
| { | ||||
| description | ||||
| "Valid at PCC"; | ||||
| } | ||||
| type boolean; | ||||
| default true; | ||||
| description | ||||
| "If set, a PCC reports LSPs that are not | ||||
| controlled by any PCE (for example, LSPs | ||||
| that are statically configured at the | ||||
| PCC). "; | ||||
| } | ||||
| grouping path-key-state { | } | |||
| description "Table to allow inspection of path-keys"; | ||||
| list path-keys{ | ||||
| key "path-key"; | ||||
| description | grouping authentication { | |||
| "The list of path-keys generated by the PCE"; | description "Authentication Information"; | |||
| choice auth-type-selection { | ||||
| description | ||||
| "Options for expressing authentication setting."; | ||||
| case auth-key-chain { | ||||
| leaf key-chain { | ||||
| type key-chain:key-chain-ref; | ||||
| description | ||||
| "key-chain name."; | ||||
| } | ||||
| } | ||||
| case auth-key { | ||||
| leaf crypto-algorithm { | ||||
| type identityref { | ||||
| base key-chain:crypto-algorithm; | ||||
| leaf path-key { | } | |||
| type uint16; | mandatory true; | |||
| description | description | |||
| "The identifier, or token used to represent | "Cryptographic algorithm associated with key."; | |||
| the Confidential Path Segment (CPS) within | ||||
| the context of the PCE"; | ||||
| } | } | |||
| container cps { | container key-string { | |||
| description | ||||
| "The key string."; | ||||
| nacm:default-deny-all; | ||||
| choice key-string-style { | ||||
| description | description | |||
| "The Confidential Path Segment (CPS)"; | "Key string styles"; | |||
| list explicit-route-objects { | case keystring { | |||
| key "index"; | leaf keystring { | |||
| type string; | ||||
| description | description | |||
| "List of explicit route objects"; | "Key string in ASCII format."; | |||
| } | ||||
| leaf explicit-route-usage { | ||||
| type identityref { | ||||
| base te-types:route-usage-type; | ||||
| } | ||||
| description | ||||
| "An explicit-route hop action."; | ||||
| } | ||||
| uses te-types:explicit-route-hop_config; | ||||
| } | ||||
| } | ||||
| leaf pcc-original { | ||||
| type leafref { | ||||
| path "/pcep-state/entity/peers/peer/addr"; | ||||
| } | ||||
| description | ||||
| "Reference to PCC peer address of | ||||
| the original request"; | ||||
| } | ||||
| leaf req-id { | ||||
| type uint32; | ||||
| description | ||||
| "The request ID of the original PCReq."; | ||||
| } | ||||
| leaf retrieved { | ||||
| type boolean; | ||||
| description | ||||
| "If path-key has been retrieved yet"; | ||||
| } | ||||
| leaf pcc-retrieved { | ||||
| type leafref { | ||||
| path "/pcep-state/entity/peers/peer/addr"; | ||||
| } | } | |||
| must "(../retrieved = true())" | case hexadecimal { | |||
| { | if-feature "key-chain:hex-key-string"; | |||
| error-message | leaf hexadecimal-string { | |||
| "The Path-key should be retreived"; | type yang:hex-string; | |||
| description | description | |||
| "When Path-Key has been retreived"; | "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."; | ||||
| } | ||||
| } | } | |||
| description | } | |||
| "Reference to PCC peer address which | ||||
| retreived the path-key"; | ||||
| } | ||||
| leaf creation-time { | ||||
| type yang:timestamp; | ||||
| description | ||||
| "The timestamp value at the time this Path-Key | ||||
| was created."; | ||||
| } | ||||
| leaf discard-time { | ||||
| type uint32; | ||||
| units "minutes"; | ||||
| description | ||||
| "A time after which this path-keys will be | ||||
| discarded"; | ||||
| } | ||||
| leaf reuse-time { | ||||
| type uint32; | ||||
| units "minutes"; | ||||
| description | ||||
| "A time after which this path-keys could be | ||||
| reused"; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping of-list { | ||||
| description "List of OF"; | ||||
| list objective-function{ | ||||
| key "of"; | ||||
| description | ||||
| "The list of authorized OF"; | ||||
| leaf of { | ||||
| type objective-function; | ||||
| description | ||||
| "The OF authorized"; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping association { | ||||
| description | ||||
| "Generic Association parameters"; | ||||
| leaf type { | ||||
| type "assoc-type"; | ||||
| description | ||||
| "The PCEP association type"; | ||||
| } | ||||
| leaf id { | ||||
| type uint16; | ||||
| description | ||||
| "PCEP Association ID"; | ||||
| } | ||||
| leaf source { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "PCEP Association Source."; | ||||
| } | ||||
| leaf global-source { | ||||
| type uint32; | ||||
| description | ||||
| "PCEP Association Global | ||||
| Source."; | ||||
| } | ||||
| leaf extended-id{ | ||||
| type string; | ||||
| description | ||||
| "Additional information to | ||||
| support unique identification."; | ||||
| } | ||||
| } | ||||
| grouping association-ref { | ||||
| description | ||||
| "Generic Association parameters"; | ||||
| leaf id { | ||||
| type leafref { | ||||
| path "/pcep-state/entity/lsp-db/" | ||||
| + "association-list/id"; | ||||
| } | ||||
| description | ||||
| "PCEP Association ID"; | ||||
| } | ||||
| leaf source { | ||||
| type leafref { | ||||
| path "/pcep-state/entity/lsp-db/" | ||||
| + "association-list/source"; | ||||
| } | } | |||
| description | } | |||
| "PCEP Association Source."; | case auth-tls { | |||
| if-feature tls; | ||||
| container tls-pce { | ||||
| when "../role = 'pce' " | ||||
| + "or ../role = 'pcc-and-pce'" { | ||||
| description | ||||
| "Valid for PCEP Peer as PCE/PCC-PCE"; | ||||
| } | ||||
| } | uses tls-server:tls-server-grouping { | |||
| leaf global-source { | description | |||
| type leafref { | "Server TLS information."; | |||
| path "/pcep-state/entity/lsp-db/" | ||||
| + "association-list/global-source"; | ||||
| } | ||||
| description | ||||
| "PCEP Association Global | ||||
| Source."; | ||||
| } | ||||
| leaf extended-id{ | ||||
| type leafref { | ||||
| path "/pcep-state/entity/lsp-db/" | ||||
| + "association-list/extended-id"; | ||||
| } | ||||
| description | ||||
| "Additional information to | ||||
| support unique identification."; | ||||
| } | ||||
| } | ||||
| /* | ||||
| * Configuration data nodes | ||||
| */ | ||||
| container pcep{ | ||||
| presence | } | |||
| "The PCEP is enabled"; | description | |||
| "TLS related information"; | ||||
| } | ||||
| description | container tls-pcc { | |||
| "Parameters for list of configured PCEP entities | when "../role = 'pcc' " | |||
| on the device."; | + "or ../role = 'pcc-and-pce'" { | |||
| description | ||||
| "Valid for PCEP Peer as PCC/PCC_PCE"; | ||||
| } | ||||
| container entity { | uses tls-client:tls-client-grouping { | |||
| description | ||||
| "Client TLS information."; | ||||
| } | ||||
| description | description | |||
| "The configured PCEP entity on the device."; | "TLS related information"; | |||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| leaf addr { | grouping path-key { | |||
| type inet:ip-address; | description "Path-key related information"; | |||
| mandatory true; | leaf enabled{ | |||
| description | type boolean; | |||
| "The local Internet address of this PCEP | description | |||
| entity. | "Enabled or Disabled"; | |||
| If operating as a PCE server, the PCEP | } | |||
| entity listens on this address. | leaf discard-timer { | |||
| If operating as a PCC, the PCEP entity | type uint32; | |||
| binds outgoing TCP connections to this | units "minutes"; | |||
| address. | default 10; | |||
| description | ||||
| "A timer to discard unwanted path-keys"; | ||||
| } | ||||
| leaf reuse-time { | ||||
| type uint32; | ||||
| units "minutes"; | ||||
| default 30; | ||||
| description | ||||
| "A time after which the path-keys could be reused"; | ||||
| } | ||||
| leaf pce-id { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "PCE Address to be used in each Path-Key Subobject | ||||
| (PKS)"; | ||||
| } | ||||
| } | ||||
| It is possible for the PCEP entity to | grouping path-key-state { | |||
| operate both as a PCC and a PCE Server, in | description "Table to allow inspection of path-keys"; | |||
| which case it uses this address both to | list path-keys{ | |||
| listen for incoming TCP connections and to | key "path-key"; | |||
| bind outgoing TCP connections."; | ||||
| } | ||||
| leaf enabled { | description | |||
| type boolean; | "The list of path-keys generated by the PCE"; | |||
| default true; | ||||
| description | ||||
| "The administrative status of this PCEP | ||||
| Entity."; | ||||
| } | ||||
| leaf role { | leaf path-key { | |||
| type pcep-role; | type uint16; | |||
| mandatory true; | description | |||
| description | "The identifier, or token used to represent | |||
| "The role that this entity can play. | the Confidential Path Segment (CPS) within | |||
| Takes one of the following values. | the context of the PCE"; | |||
| - unknown(0): this PCEP Entity role is not | } | |||
| known. | container cps { | |||
| - pcc(1): this PCEP Entity is a PCC. | description | |||
| - pce(2): this PCEP Entity is a PCE. | "The Confidential Path Segment (CPS)"; | |||
| - pcc-and-pce(3): this PCEP Entity is both | list explicit-route-objects { | |||
| a PCC and a PCE."; | key "index"; | |||
| } | description | |||
| "List of explicit route objects"; | ||||
| leaf description { | leaf explicit-route-usage { | |||
| type string; | type identityref { | |||
| description | base te-types:route-usage-type; | |||
| "Description of the PCEP entity configured | } | |||
| by the user"; | description | |||
| } | "An explicit-route hop action."; | |||
| } | ||||
| leaf speaker-entity-id{ | uses te-types:explicit-route-hop_config; | |||
| if-feature stateful-sync-opt; | } | |||
| type string; | } | |||
| description | leaf pcc-original { | |||
| "The Speaker Entity Identifier"; | type leafref { | |||
| } | path "/pcep/entity/peers/peer/addr"; | |||
| } | ||||
| description | ||||
| "Reference to PCC peer address of | ||||
| the original request"; | ||||
| } | ||||
| leaf req-id { | ||||
| type uint32; | ||||
| description | ||||
| "The request ID of the original PCReq."; | ||||
| } | ||||
| leaf retrieved { | ||||
| type boolean; | ||||
| description | ||||
| "If path-key has been retrieved yet"; | ||||
| } | ||||
| leaf pcc-retrieved { | ||||
| type leafref { | ||||
| path "/pcep/entity/peers/peer/addr"; | ||||
| } | ||||
| must "(../retrieved = true())" | ||||
| { | ||||
| error-message | ||||
| "The Path-key should be retreived"; | ||||
| description | ||||
| "When Path-Key has been retreived"; | ||||
| } | ||||
| description | ||||
| "Reference to PCC peer address which | ||||
| retreived the path-key"; | ||||
| } | ||||
| leaf creation-time { | ||||
| type yang:timestamp; | ||||
| description | ||||
| "The timestamp value at the time this Path-Key | ||||
| was created."; | ||||
| } | ||||
| leaf discard-time { | ||||
| type uint32; | ||||
| units "minutes"; | ||||
| description | ||||
| "A time after which this path-keys will be | ||||
| discarded"; | ||||
| } | ||||
| leaf reuse-time { | ||||
| type uint32; | ||||
| units "minutes"; | ||||
| description | ||||
| "A time after which this path-keys could be | ||||
| reused"; | ||||
| } | ||||
| } | ||||
| } | ||||
| uses info { | grouping of-list { | |||
| description | description "List of OF"; | |||
| "Local PCEP entity information"; | list objective-function{ | |||
| } | key "of"; | |||
| container pce-info { | ||||
| when "../role = 'pce'" + | ||||
| "or " + | ||||
| "../role = 'pcc-and-pce'" | ||||
| { | ||||
| description | ||||
| "Valid at PCE"; | ||||
| } | ||||
| uses pce-info { | ||||
| description | ||||
| "Local PCE information"; | ||||
| } | ||||
| container path-key { | ||||
| if-feature path-key; | ||||
| uses path-key { | ||||
| description | ||||
| "Path-Key Configuration"; | ||||
| } | ||||
| description | ||||
| "Path-Key Configuration"; | ||||
| } | ||||
| description | description | |||
| "The Local PCE Entity PCE information"; | "The list of authorized OF"; | |||
| } | ||||
| uses authentication { | leaf of { | |||
| description | type objective-function; | |||
| "Local PCEP entity authentication information"; | description | |||
| } | "The OF authorized"; | |||
| } | ||||
| } | ||||
| } | ||||
| grouping association { | ||||
| description | ||||
| "Generic Association parameters"; | ||||
| leaf type { | ||||
| type "assoc-type"; | ||||
| description | ||||
| "The PCEP association type"; | ||||
| } | ||||
| leaf id { | ||||
| type uint16; | ||||
| description | ||||
| "PCEP Association ID"; | ||||
| } | ||||
| leaf source { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "PCEP Association Source."; | ||||
| } | ||||
| leaf global-source { | ||||
| type uint32; | ||||
| description | ||||
| "PCEP Association Global | ||||
| Source."; | ||||
| } | ||||
| leaf extended-id{ | ||||
| type string; | ||||
| description | ||||
| "Additional information to | ||||
| support unique identification."; | ||||
| } | ||||
| } | ||||
| grouping association-ref { | ||||
| description | ||||
| "Generic Association parameters"; | ||||
| uses pcep-entity-info { | leaf id { | |||
| description | type leafref { | |||
| "The configuration related to the PCEP | path "/pcep/entity/lsp-db/" | |||
| entity."; | + "association-list/id"; | |||
| } | } | |||
| description | ||||
| "PCEP Association ID"; | ||||
| } | ||||
| leaf source { | ||||
| type leafref { | ||||
| path "/pcep/entity/lsp-db/" | ||||
| + "association-list/source"; | ||||
| } | ||||
| description | ||||
| "PCEP Association Source."; | ||||
| } | ||||
| leaf global-source { | ||||
| type leafref { | ||||
| path "/pcep/entity/lsp-db/" | ||||
| + "association-list/global-source"; | ||||
| } | ||||
| description | ||||
| "PCEP Association Global | ||||
| Source."; | ||||
| } | ||||
| leaf extended-id{ | ||||
| type leafref { | ||||
| path "/pcep/entity/lsp-db/" | ||||
| + "association-list/extended-id"; | ||||
| } | ||||
| description | ||||
| "Additional information to | ||||
| support unique identification."; | ||||
| } | ||||
| } | ||||
| leaf pcep-notification-max-rate { | grouping session-grouping { | |||
| type uint32; | description | |||
| mandatory true; | "Session grouping"; | |||
| description | container sessions { | |||
| "This variable indicates the maximum number of | config false; | |||
| notifications issued per second. If events | description | |||
| occur more rapidly, the implementation may | "This entry represents a single PCEP | |||
| simply fail to emit these notifications during | session in which the local PCEP entity participates. | |||
| that period, or may queue them until an | This entry exists only if the corresponding PCEP | |||
| appropriate time. A value of 0 means no | session has been initialized by some event, such as | |||
| notifications are emitted and all should be | manual user configuration, auto-discovery of a peer, | |||
| discarded (that is, not queued)."; | or an incoming TCP connection."; | |||
| } | ||||
| container stateful-parameter{ | list session { | |||
| if-feature stateful; | key "initiator"; | |||
| must "(/pcep/entity/capability/stateful/enabled" + | description | |||
| " = true())" | "The list of sessions, note that | |||
| { | for a time being two sessions | |||
| error-message | may exist for a peer"; | |||
| "The Stateful PCE must be enabled"; | ||||
| description | ||||
| "When PCEP entity is stateful | ||||
| enabled"; | ||||
| } | ||||
| uses stateful-pce-parameter; | ||||
| description | leaf initiator { | |||
| "The configured stateful parameters"; | type pcep-initiator; | |||
| } | description | |||
| "The initiator of the session,that is, whether | ||||
| the TCP connection was initiated by the local | ||||
| PCEP entity or the peer. | ||||
| There is a window during session | ||||
| initialization where two sessions can exist | ||||
| between a pair of PCEP speakers, each | ||||
| initiated by one of the speakers. One of | ||||
| these sessions is always discarded before it | ||||
| leaves OpenWait state. However, before it is | ||||
| discarded, two sessions to the given peer | ||||
| appear transiently in this MIB module. The | ||||
| sessions are distinguished by who initiated | ||||
| them, and so this field is the key."; | ||||
| } | ||||
| container of-list{ | leaf role { | |||
| when "../role = 'pce'" + | type leafref { | |||
| "or " + | path "/pcep/entity/role"; | |||
| "../role = 'pcc-and-pce'" | } | |||
| { | description | |||
| description | "The reference to peer role ."; | |||
| "Valid at PCE"; | } | |||
| } | ||||
| if-feature objective-function; | ||||
| uses of-list; | leaf state-last-change { | |||
| type yang:timestamp; | ||||
| description | ||||
| "The timestamp value at the time this | ||||
| session entered its current state as | ||||
| denoted by the state leaf."; | ||||
| } | ||||
| description | leaf state { | |||
| "The authorized OF-List at PCE for all peers"; | type pcep-sess-state; | |||
| } | description | |||
| "The current state of the session. | ||||
| The set of possible states excludes the | ||||
| idle state since entries do not exist | ||||
| in the idle state."; | ||||
| container peers{ | } | |||
| when "../role = 'pcc'" + | ||||
| "or " + | ||||
| "../role = 'pcc-and-pce'" | ||||
| { | ||||
| description | ||||
| "Valid at PCC"; | ||||
| } | ||||
| description | ||||
| "The list of configured peers for the | ||||
| entity (remote PCE)"; | ||||
| list peer{ | ||||
| key "addr"; | ||||
| description | leaf session-creation { | |||
| "The peer configured for the entity. | type yang:timestamp; | |||
| (remote PCE)"; | description | |||
| "The timestamp value at the time this | ||||
| session was created."; | ||||
| } | ||||
| leaf addr { | leaf connect-retry { | |||
| type inet:ip-address; | type yang:counter32; | |||
| description | description | |||
| "The local Internet address of this | "The number of times that the local PCEP | |||
| PCEP peer."; | entity has attempted to establish a TCP | |||
| } | connection for this session without | |||
| success. The PCEP entity gives up when | ||||
| this reaches connect-max-retry."; | ||||
| } | ||||
| leaf description { | leaf local-id { | |||
| type string; | type uint32 { | |||
| description | range "0..255"; | |||
| "Description of the PCEP peer | } | |||
| configured by the user"; | description | |||
| } | "The value of the PCEP session ID used by | |||
| uses info { | the local PCEP entity in the Open message | |||
| description | for this session. If state is tcp-pending | |||
| "PCE Peer information"; | then this is the session ID that will be | |||
| } | used in the Open message. Otherwise, this | |||
| uses pce-info { | is the session ID that was sent in the | |||
| description | Open message."; | |||
| "PCE Peer information"; | } | |||
| } | ||||
| leaf delegation-pref{ | leaf remote-id { | |||
| if-feature stateful; | type uint32 { | |||
| type uint8{ | range "0..255"; | |||
| range "0..7"; | } | |||
| } | must "((../state != 'tcp-pending'" + | |||
| must "(/pcep/entity/capability/stateful" + | "and " + | |||
| "/active = true())" | "../state != 'open-wait' )" + | |||
| { | "or " + | |||
| error-message | "((../state = 'tcp-pending'" + | |||
| "The Active Stateful PCE must be | " or " + | |||
| enabled"; | "../state = 'open-wait' )" + | |||
| description | "and (. = 0)))" { | |||
| "When PCEP entity is active stateful | error-message | |||
| enabled"; | "Invalid remote-id"; | |||
| } | ||||
| description | ||||
| "The PCE peer delegation preference."; | ||||
| } | ||||
| uses authentication { | ||||
| description | description | |||
| "PCE Peer authentication"; | "If state is tcp- | |||
| } | pending or open-wait | |||
| }//peer | then this leaf is not | |||
| }//peers | used and MUST be set | |||
| }//entity | to zero."; | |||
| }//pcep | } | |||
| description | ||||
| /* | "The value of the PCEP session | |||
| * Operational data nodes | ID used by the peer in its | |||
| */ | Open message for this | |||
| session."; | ||||
| container pcep-state{ | } | |||
| config false; | ||||
| description | ||||
| "The list of operational PCEP entities on the | ||||
| device."; | ||||
| container entity{ | ||||
| description | ||||
| "The operational PCEP entity on the device."; | ||||
| leaf addr { | ||||
| type inet:ip-address; | ||||
| description | ||||
| "The local Internet address of this PCEP | ||||
| entity. | ||||
| If operating as a PCE server, the PCEP | ||||
| entity listens on this address. | ||||
| If operating as a PCC, the PCEP entity | ||||
| binds outgoing TCP connections to this | ||||
| address. | ||||
| It is possible for the PCEP entity to | ||||
| operate both as a PCC and a PCE Server, in | ||||
| which case it uses this address both to | ||||
| listen for incoming TCP connections and to | ||||
| bind outgoing TCP connections."; | ||||
| } | ||||
| leaf index{ | ||||
| type uint32; | ||||
| description | ||||
| "The index of the operational PECP | ||||
| entity"; | ||||
| } | ||||
| leaf admin-status { | ||||
| type pcep-admin-status; | ||||
| description | ||||
| "The administrative status of this PCEP Entity. | ||||
| This is the desired operational status as | ||||
| currently set by an operator or by default in | ||||
| the implementation. The value of enabled | ||||
| represents the current status of an attempt | ||||
| to reach this desired status."; | ||||
| } | ||||
| leaf oper-status { | leaf keepalive-timer { | |||
| type pcep-admin-status; | type uint32 { | |||
| description | range "0..255"; | |||
| "The operational status of the PCEP entity. | } | |||
| Takes one of the following values. | units "seconds"; | |||
| - oper-status-up(1): the PCEP entity is | must "(../state = 'session-up'" + | |||
| active. | "or " + | |||
| - oper-status-down(2): the PCEP entity is | "(../state != 'session-up'" + | |||
| inactive. | "and (. = 0)))" { | |||
| - oper-status-going-up(3): the PCEP entity is | error-message | |||
| activating. | "Invalid keepalive | |||
| - oper-status-going-down(4): the PCEP entity is | timer"; | |||
| deactivating. | description | |||
| - oper-status-failed(5): the PCEP entity has | "This field is used if | |||
| failed and will recover when possible. | and only if state is | |||
| - oper-status-failed-perm(6): the PCEP entity | session-up. Otherwise, | |||
| has failed and will not recover without | it is not used and | |||
| operator intervention."; | MUST be set to | |||
| } | zero."; | |||
| } | ||||
| description | ||||
| "The agreed maximum interval at | ||||
| which the local PCEP entity | ||||
| transmits PCEP messages on | ||||
| this PCEP session. Zero means | ||||
| that the local PCEP entity | ||||
| never sends Keepalives on this | ||||
| session."; | ||||
| } | ||||
| leaf role { | leaf peer-keepalive-timer { | |||
| type pcep-role; | type uint32 { | |||
| range "0..255"; | ||||
| } | ||||
| units "seconds"; | ||||
| must "(../state = 'session-up'" + | ||||
| "or " + | ||||
| "(../state != 'session-up'" + | ||||
| "and " + | ||||
| "(. = 0)))" { | ||||
| error-message | ||||
| "Invalid Peer keepalive | ||||
| timer"; | ||||
| description | ||||
| "This field is used if | ||||
| and only if state is | ||||
| session-up. Otherwise, | ||||
| it is not used and MUST | ||||
| be set to zero."; | ||||
| } | ||||
| description | description | |||
| "The role that this entity can play. | "The agreed maximum interval at | |||
| Takes one of the following values. | which the peer transmits PCEP | |||
| - unknown(0): this PCEP entity role is | messages on this PCEP session. | |||
| not known. | Zero means that the peer never | |||
| - pcc(1): this PCEP entity is a PCC. | sends Keepalives on this | |||
| - pce(2): this PCEP entity is a PCE. | session."; | |||
| - pcc-and-pce(3): this PCEP entity is | } | |||
| both a PCC and a PCE."; | ||||
| } | ||||
| leaf description { | leaf dead-timer { | |||
| type string; | type uint32 { | |||
| description | range "0..255"; | |||
| "Description of the PCEP entity configured | } | |||
| by the user"; | units "seconds"; | |||
| } | description | |||
| "The dead timer interval for | ||||
| this PCEP session."; | ||||
| } | ||||
| leaf speaker-entity-id{ | leaf peer-dead-timer { | |||
| if-feature stateful-sync-opt; | type uint32 { | |||
| type string; | range "0..255"; | |||
| description | } | |||
| "The Speaker Entity Identifier"; | units "seconds"; | |||
| } | must "((../state != 'tcp-pending'" + | |||
| "and " + | ||||
| "../state != 'open-wait' )" + | ||||
| "or " + | ||||
| "((../state = 'tcp-pending'" + | ||||
| " or " + | ||||
| "../state = 'open-wait' )" + | ||||
| "and " + | ||||
| "(. = 0)))" { | ||||
| error-message | ||||
| "Invalid Peer Dead | ||||
| timer"; | ||||
| description | ||||
| "If state is tcp- | ||||
| pending or open-wait | ||||
| then this leaf is not | ||||
| used and MUST be set to | ||||
| zero."; | ||||
| } | ||||
| description | ||||
| "The peer's dead-timer interval | ||||
| for this PCEP session."; | ||||
| } | ||||
| uses info { | leaf ka-hold-time-rem { | |||
| description | type uint32 { | |||
| "Local PCEP entity information"; | range "0..255"; | |||
| } | } | |||
| units "seconds"; | ||||
| must "((../state != 'tcp-pending'" + | ||||
| "and " + | ||||
| "../state != 'open-wait' ) " + | ||||
| "or " + | ||||
| "((../state = 'tcp-pending'" + | ||||
| "or " + | ||||
| "../state = 'open-wait' )" + | ||||
| "and " + | ||||
| "(. = 0)))" { | ||||
| error-message | ||||
| "Invalid Keepalive hold | ||||
| time remaining"; | ||||
| description | ||||
| "If state is tcp-pending | ||||
| or open-wait then this | ||||
| field is not used and | ||||
| MUST be set to zero."; | ||||
| } | ||||
| description | ||||
| "The keep alive hold time | ||||
| remaining for this session."; | ||||
| } | ||||
| container pce-info { | leaf overload-time { | |||
| when "../role = 'pce'" + | type uint32; | |||
| "or " + | units "seconds"; | |||
| "../role = 'pcc-and-pce'" | must "((../overloaded = true()) " + | |||
| { | "or ((../overloaded != true()) " + | |||
| description | "and (. = 0)))" { | |||
| "Valid at PCE"; | error-message | |||
| } | "Invalid overload-time"; | |||
| uses pce-info { | description | |||
| description | "This field is only used | |||
| "Local PCE information"; | if overloaded is set to | |||
| } | true. Otherwise, it is | |||
| not used and MUST be | ||||
| set to zero."; | ||||
| } | ||||
| description | ||||
| "The interval of time that is | ||||
| remaining until the local PCEP | ||||
| entity will cease to be | ||||
| overloaded on this session."; | ||||
| } | ||||
| container path-key { | leaf peer-overloaded { | |||
| if-feature path-key; | type boolean; | |||
| uses path-key { | description | |||
| description | "If the peer has informed the | |||
| "Path-Key Configuration"; | local PCEP entity that it is | |||
| } | currently overloaded, then | |||
| description | this is set to true. | |||
| "Path-Key Configuration"; | Otherwise, it is set to | |||
| } | false."; | |||
| } | ||||
| description | leaf peer-overload-time { | |||
| "The Local PCE Entity PCE information"; | type uint32; | |||
| } | units "seconds"; | |||
| must "((../peer-overloaded = " + | ||||
| "true()) or " + | ||||
| "((../peer-overloaded !=" + | ||||
| "true())" + | ||||
| " and " + | ||||
| "(. = 0)))" { | ||||
| error-message | ||||
| "Invalid peer overload | ||||
| time"; | ||||
| description | ||||
| "This field is only used | ||||
| if peer-overloaded is | ||||
| set to true. Otherwise, | ||||
| it is not used and MUST | ||||
| be set to zero."; | ||||
| } | ||||
| description | ||||
| "The interval of time that is | ||||
| remaining until the peer will | ||||
| cease to be overloaded. If it | ||||
| is not known how long the peer | ||||
| will stay in overloaded state, | ||||
| this leaf is set to zero."; | ||||
| } | ||||
| uses authentication { | leaf lspdb-sync { | |||
| description | if-feature stateful; | |||
| "Local PCEP Entity authentication information"; | type sync-state; | |||
| } | description | |||
| "The LSP-DB state | ||||
| synchronization status."; | ||||
| } | ||||
| uses pcep-entity-info{ | leaf recv-db-ver{ | |||
| description | when "../role = 'pcc'" + | |||
| "The operational information related to the | "or " + | |||
| PCEP entity."; | "../role = 'pcc-and-pce'" | |||
| } | { | |||
| description | ||||
| "Valid for PCEP Peer as | ||||
| PCC"; | ||||
| } | ||||
| container stateful-parameter{ | if-feature stateful; | |||
| if-feature stateful; | if-feature stateful-sync-opt; | |||
| must "(/pcep/entity/capability/stateful/enabled" + | ||||
| " = true())" | ||||
| { | ||||
| error-message | ||||
| "The Stateful PCE must be enabled"; | ||||
| description | ||||
| "When PCEP entity is stateful | ||||
| enabled"; | ||||
| } | ||||
| uses stateful-pce-parameter; | ||||
| description | type uint64; | |||
| "The operational stateful parameters"; | ||||
| } | ||||
| container lsp-db{ | description | |||
| if-feature stateful; | "The last received LSP State | |||
| description | Database Version Number"; | |||
| "The LSP-DB"; | } | |||
| leaf db-ver{ | ||||
| when "../../role = 'pcc'" + | ||||
| "or " + | ||||
| "../../role = 'pcc-and-pce'" | ||||
| { | ||||
| description | ||||
| "Valid at PCC"; | ||||
| } | ||||
| if-feature stateful-sync-opt; | ||||
| type uint64; | ||||
| description | ||||
| "The LSP State Database Version Number"; | ||||
| } | ||||
| list association-list { | ||||
| key "id source global-source extended-id"; | ||||
| description | ||||
| "List of all PCEP associations"; | ||||
| uses association { | ||||
| description | ||||
| "The Association attributes"; | ||||
| } | container of-list{ | |||
| list lsp { | when "../role = 'pce'" + | |||
| key "plsp-id pcc-id"; | "or " + | |||
| description | "../role = 'pcc-and-pce'" | |||
| "List of all LSP in this association"; | { | |||
| leaf plsp-id { | description | |||
| type leafref { | "Valid for PCEP Peer as | |||
| path "/pcep-state/entity/lsp-db/" | PCE"; | |||
| + "lsp/plsp-id"; | } | |||
| } | if-feature objective-function; | |||
| description | ||||
| "Reference to PLSP-ID in LSP-DB"; | ||||
| } | ||||
| leaf pcc-id { | ||||
| type leafref { | ||||
| path "/pcep-state/entity/lsp-db/" | ||||
| + "lsp/pcc-id"; | ||||
| } | ||||
| description | ||||
| "Reference to PCC-ID in LSP-DB"; | ||||
| } | ||||
| } | ||||
| } | ||||
| list lsp{ | ||||
| key "plsp-id pcc-id"; | ||||
| description | ||||
| "List of all LSPs in LSP-DB"; | ||||
| uses lsp-state{ | ||||
| description | ||||
| "The PCEP specific attributes for | ||||
| LSP-DB."; | ||||
| } | ||||
| list association-list { | ||||
| key "id source global-source extended-id"; | ||||
| description | ||||
| "List of all PCEP associations"; | ||||
| uses association-ref { | ||||
| description | ||||
| "Reference to the Association | ||||
| attributes"; | ||||
| } | ||||
| } | ||||
| } | uses of-list; | |||
| } | description | |||
| container path-keys { | "Indicate the list of supported | |||
| when "../role = 'pce'" + | OF on this session"; | |||
| "or " + | } | |||
| "../role = 'pcc-and-pce'" | ||||
| { | ||||
| description | ||||
| "Valid at PCE"; | ||||
| } | ||||
| if-feature path-key; | ||||
| uses path-key-state; | ||||
| description | ||||
| "The path-keys generated by the PCE"; | ||||
| } | ||||
| container of-list{ | ||||
| when "../role = 'pce'" + | ||||
| "or " + | ||||
| "../role = 'pcc-and-pce'" | ||||
| { | ||||
| description | ||||
| "Valid at PCE"; | ||||
| } | ||||
| if-feature objective-function; | ||||
| uses of-list; | leaf speaker-entity-id{ | |||
| if-feature stateful-sync-opt; | ||||
| type string; | ||||
| description | ||||
| "The Speaker Entity Identifier"; | ||||
| } | ||||
| description | leaf discontinuity-time { | |||
| "The authorized OF-List at PCE for all peers"; | type yang:timestamp; | |||
| } | description | |||
| container peers{ | "The timestamp value of the | |||
| description | time when the statistics were | |||
| "The list of peers for the entity"; | last reset."; | |||
| } | ||||
| } // session | ||||
| } // sessions | ||||
| } | ||||
| /* | ||||
| * Configuration data nodes | ||||
| */ | ||||
| container pcep{ | ||||
| list peer{ | presence | |||
| key "addr"; | "The PCEP is enabled"; | |||
| description | description | |||
| "The peer for the entity."; | "Parameters for list of configured PCEP entities | |||
| on the device."; | ||||
| leaf addr { | container entity { | |||
| type inet:ip-address; | ||||
| description | ||||
| "The local Internet address of this PCEP | ||||
| peer."; | ||||
| } | ||||
| leaf role { | description | |||
| type pcep-role; | "The configured PCEP entity on the device."; | |||
| description | ||||
| "The role of the PCEP Peer. | ||||
| Takes one of the following values. | ||||
| - unknown(0): this PCEP peer role | ||||
| is not known. | ||||
| - pcc(1): this PCEP peer is a PCC. | ||||
| - pce(2): this PCEP peer is a PCE. | ||||
| - pcc-and-pce(3): this PCEP peer | ||||
| is both a PCC and a PCE."; | ||||
| } | ||||
| uses info { | leaf addr { | |||
| description | type inet:ip-address; | |||
| "PCEP peer information"; | mandatory true; | |||
| } | description | |||
| "The local Internet address of this PCEP | ||||
| entity. | ||||
| If operating as a PCE server, the PCEP | ||||
| entity listens on this address. | ||||
| container pce-info { | If operating as a PCC, the PCEP entity | |||
| when "../role = 'pce'" + | binds outgoing TCP connections to this | |||
| "or " + | address. | |||
| "../role = 'pcc-and-pce'" | It is possible for the PCEP entity to | |||
| { | operate both as a PCC and a PCE Server, in | |||
| description | which case it uses this address both to | |||
| "When the peer is PCE"; | listen for incoming TCP connections and to | |||
| } | bind outgoing TCP connections."; | |||
| } | ||||
| uses pce-info { | leaf enabled { | |||
| description | type boolean; | |||
| "PCE Peer information"; | default true; | |||
| } | description | |||
| description | "The administrative status of this PCEP | |||
| "The PCE Peer information"; | Entity."; | |||
| } | } | |||
| leaf delegation-pref{ | leaf role { | |||
| when "../role = 'pce'" + | type pcep-role; | |||
| "or " + | mandatory true; | |||
| "../role = 'pcc-and-pce'" | description | |||
| { | "The role that this entity can play. | |||
| description | Takes one of the following values. | |||
| "When the peer is PCE"; | - unknown(0): this PCEP Entity role is not | |||
| } | known. | |||
| if-feature stateful; | - pcc(1): this PCEP Entity is a PCC. | |||
| type uint8{ | - pce(2): this PCEP Entity is a PCE. | |||
| range "0..7"; | - pcc-and-pce(3): this PCEP Entity is both | |||
| } | a PCC and a PCE."; | |||
| must "(/pcep/entity/capability/stateful" + | } | |||
| "/active = true())" | ||||
| { | ||||
| error-message | ||||
| "The Active Stateful PCE must be | ||||
| enabled"; | ||||
| description | ||||
| "When PCEP entity is active stateful | ||||
| enabled"; | ||||
| } | ||||
| description | ||||
| "The PCE peer delegation preference."; | ||||
| } | ||||
| uses authentication { | leaf description { | |||
| description | type string; | |||
| "PCE Peer authentication"; | description | |||
| } | "Description of the PCEP entity configured | |||
| by the user"; | ||||
| } | ||||
| leaf discontinuity-time { | leaf speaker-entity-id{ | |||
| type yang:timestamp; | if-feature stateful-sync-opt; | |||
| description | type string; | |||
| "The timestamp of the time when the | description | |||
| information and statistics were | "The Speaker Entity Identifier"; | |||
| last reset."; | } | |||
| } | ||||
| leaf initiate-session { | leaf admin-status { | |||
| type boolean; | type pcep-admin-status; | |||
| description | description | |||
| "Indicates whether the local PCEP | "The administrative status of this PCEP Entity. | |||
| entity initiates sessions to this peer, | This is the desired operational status as | |||
| or waits for the peer to initiate a | currently set by an operator or by default in | |||
| session."; | the implementation. The value of enabled | |||
| } | represents the current status of an attempt | |||
| to reach this desired status."; | ||||
| } | ||||
| leaf session-exists{ | leaf index{ | |||
| type boolean; | type uint32; | |||
| description | config "false"; | |||
| "Indicates whether a session with | description | |||
| this peer currently exists."; | "The index of the operational PECP entity"; | |||
| } | } | |||
| leaf session-up-time{ | leaf oper-status { | |||
| type yang:timestamp; | type pcep-oper-status; | |||
| description | config "false"; | |||
| "The timestamp value of the last time a | description | |||
| session with this peer was successfully | "The operational status of the PCEP entity. | |||
| established."; | Takes one of the following values. | |||
| } | - oper-status-up(1): the PCEP entity is active. | |||
| - oper-status-down(2): the PCEP entity is inactive. | ||||
| - oper-status-going-up(3): the PCEP entity is | ||||
| activating. | ||||
| - oper-status-going-down(4): the PCEP entity is | ||||
| deactivating. | ||||
| - oper-status-failed(5): the PCEP entity has | ||||
| failed and will recover when possible. | ||||
| - oper-status-failed-perm(6): the PCEP entity | ||||
| has failed and will not recover without | ||||
| operator intervention."; | ||||
| } | ||||
| leaf session-fail-time{ | uses info { | |||
| type yang:timestamp; | description | |||
| description | "Local PCEP entity information"; | |||
| "The timestamp value of the last time a | } | |||
| session with this peer failed to be | ||||
| established."; | ||||
| } | ||||
| leaf session-fail-up-time{ | container pce-info { | |||
| type yang:timestamp; | when "../role = 'pce'" + | |||
| description | "or " + | |||
| "The timestamp value of the last time a | "../role = 'pcc-and-pce'" | |||
| session with this peer failed from | { | |||
| active."; | description | |||
| } | "Valid at PCE"; | |||
| container sessions { | } | |||
| description | uses pce-info { | |||
| "This entry represents a single PCEP | description | |||
| session in which the local PCEP entity | "Local PCE information"; | |||
| participates. | } | |||
| This entry exists only if the | container path-key { | |||
| corresponding PCEP session has been | if-feature path-key; | |||
| initialized by some event, such as | uses path-key { | |||
| manual user configuration, auto- | description | |||
| discovery of a peer, or an incoming | "Path-Key Configuration"; | |||
| TCP connection."; | } | |||
| description | ||||
| "Path-Key Configuration"; | ||||
| } | ||||
| list session { | description | |||
| key "initiator"; | "The Local PCE Entity PCE information"; | |||
| } | ||||
| description | uses authentication { | |||
| "The list of sessions, note that | description | |||
| for a time being two sessions | "Local PCEP entity authentication information"; | |||
| may exist for a peer"; | } | |||
| leaf initiator { | uses pcep-entity-info { | |||
| type pcep-initiator; | description | |||
| description | "The configuration related to the PCEP | |||
| "The initiator of the session, | entity."; | |||
| that is, whether the TCP | } | |||
| connection was initiated by | ||||
| the local PCEP entity or the | ||||
| peer. | ||||
| There is a window during | ||||
| session initialization where | ||||
| two sessions can exist between | ||||
| a pair of PCEP speakers, each | ||||
| initiated by one of the | ||||
| speakers. One of these | ||||
| sessions is always discarded | ||||
| before it leaves OpenWait | ||||
| state. However, before it is | ||||
| discarded, two sessions to the | ||||
| given peer appear transiently | ||||
| in this MIB module. The | ||||
| sessions are distinguished by | ||||
| who initiated them, and so this | ||||
| field is the key."; | ||||
| } | ||||
| leaf role { | ||||
| type leafref { | ||||
| path "../../../role"; | ||||
| } | ||||
| description | ||||
| "The reference to peer role ."; | ||||
| } | ||||
| leaf state-last-change { | leaf pcep-notification-max-rate { | |||
| type yang:timestamp; | type uint32; | |||
| description | mandatory true; | |||
| "The timestamp value at the | description | |||
| time this session entered its | "This variable indicates the maximum number of | |||
| current state as denoted by | notifications issued per second. If events | |||
| the state leaf."; | occur more rapidly, the implementation may | |||
| } | simply fail to emit these notifications during | |||
| that period, or may queue them until an | ||||
| appropriate time. A value of 0 means no | ||||
| notifications are emitted and all should be | ||||
| discarded (that is, not queued)."; | ||||
| } | ||||
| leaf state { | container stateful-parameter{ | |||
| type pcep-sess-state; | if-feature stateful; | |||
| description | must "(/pcep/entity/capability/stateful/enabled" + | |||
| "The current state of the | " = true())" | |||
| session. | ||||
| The set of possible states | ||||
| excludes the idle state since | ||||
| entries do not exist in the | ||||
| idle state."; | ||||
| } | ||||
| leaf session-creation { | { | |||
| type yang:timestamp; | error-message | |||
| description | "The Stateful PCE must be enabled"; | |||
| "The timestamp value at the | description | |||
| time this session was | "When PCEP entity is stateful | |||
| created."; | enabled"; | |||
| } | ||||
| uses stateful-pce-parameter; | ||||
| } | description | |||
| "The configured stateful parameters"; | ||||
| } | ||||
| leaf connect-retry { | container of-list{ | |||
| type yang:counter32; | when "../role = 'pce'" + | |||
| description | "or " + | |||
| "The number of times that the | "../role = 'pcc-and-pce'" | |||
| local PCEP entity has | { | |||
| attempted to establish a TCP | description | |||
| connection for this session | "Valid at PCE"; | |||
| without success. The PCEP | } | |||
| entity gives up when this | if-feature objective-function; | |||
| reaches connect-max-retry."; | ||||
| } | ||||
| leaf local-id { | uses of-list; | |||
| type uint32 { | ||||
| range "0..255"; | ||||
| } | ||||
| description | ||||
| "The value of the PCEP session | ||||
| ID used by the local PCEP | ||||
| entity in the Open message | ||||
| for this session. | ||||
| If state is tcp-pending then | ||||
| this is the session ID that | ||||
| will be used in the Open | ||||
| message. Otherwise, this is | ||||
| the session ID that was sent | ||||
| in the Open message."; | ||||
| } | ||||
| leaf remote-id { | description | |||
| type uint32 { | "The authorized OF-List at PCE for all peers"; | |||
| range "0..255"; | } | |||
| } | ||||
| must "((../state != 'tcp-pending'" + | ||||
| "and " + | ||||
| "../state != 'open-wait' )" + | ||||
| "or " + | ||||
| "((../state = 'tcp-pending'" + | ||||
| " or " + | ||||
| "../state = 'open-wait' )" + | ||||
| "and (. = 0)))" { | ||||
| error-message | ||||
| "Invalid remote-id"; | ||||
| description | ||||
| "If state is tcp- | ||||
| pending or open-wait | ||||
| then this leaf is not | ||||
| used and MUST be set | ||||
| to zero."; | ||||
| } | ||||
| description | ||||
| "The value of the PCEP session | ||||
| ID used by the peer in its | ||||
| Open message for this | ||||
| session."; | ||||
| } | ||||
| leaf keepalive-timer { | container lsp-db{ | |||
| type uint32 { | if-feature stateful; | |||
| range "0..255"; | config false; | |||
| } | description | |||
| units "seconds"; | "The LSP-DB"; | |||
| must "(../state = 'session-up'" + | leaf db-ver{ | |||
| "or " + | when "../../role = 'pcc'" + | |||
| "(../state != 'session-up'" + | "or " + | |||
| "and (. = 0)))" { | "../../role = 'pcc-and-pce'" | |||
| error-message | { | |||
| "Invalid keepalive | description | |||
| timer"; | "Valid at PCC"; | |||
| description | } | |||
| "This field is used if | if-feature stateful-sync-opt; | |||
| and only if state is | type uint64; | |||
| session-up. Otherwise, | description | |||
| it is not used and | "The LSP State Database Version Number"; | |||
| MUST be set to | } | |||
| zero."; | list association-list { | |||
| } | key "id source global-source extended-id"; | |||
| description | description | |||
| "The agreed maximum interval at | "List of all PCEP associations"; | |||
| which the local PCEP entity | uses association { | |||
| transmits PCEP messages on | description | |||
| this PCEP session. Zero means | "The Association attributes"; | |||
| that the local PCEP entity | } | |||
| never sends Keepalives on this | list lsp { | |||
| session."; | key "plsp-id pcc-id"; | |||
| } | description | |||
| "List of all LSP in this association"; | ||||
| leaf plsp-id { | ||||
| type leafref { | ||||
| path "/pcep/entity/lsp-db/" | ||||
| + "lsp/plsp-id"; | ||||
| } | ||||
| description | ||||
| "Reference to PLSP-ID in LSP-DB"; | ||||
| } | ||||
| leaf pcc-id { | ||||
| type leafref { | ||||
| path "/pcep/entity/lsp-db/" | ||||
| + "lsp/pcc-id"; | ||||
| } | ||||
| description | ||||
| "Reference to PCC-ID in LSP-DB"; | ||||
| } | ||||
| } | ||||
| } | ||||
| list lsp { | ||||
| key "plsp-id pcc-id"; | ||||
| description | ||||
| "List of all LSPs in LSP-DB"; | ||||
| uses lsp-state { | ||||
| description | ||||
| "The PCEP specific attributes for | ||||
| LSP-DB."; | ||||
| } | ||||
| list association-list { | ||||
| key "id source global-source extended-id"; | ||||
| description | ||||
| "List of all PCEP associations"; | ||||
| uses association-ref { | ||||
| description | ||||
| "Reference to the Association | ||||
| attributes"; | ||||
| } | ||||
| } | ||||
| leaf peer-keepalive-timer { | } | |||
| type uint32 { | } | |||
| range "0..255"; | ||||
| } | ||||
| units "seconds"; | ||||
| must "(../state = 'session-up'" + | ||||
| "or " + | ||||
| "(../state != 'session-up'" + | ||||
| "and " + | ||||
| "(. = 0)))" { | ||||
| error-message | ||||
| "Invalid Peer keepalive | ||||
| timer"; | ||||
| description | ||||
| "This field is used if | ||||
| and only if state is | ||||
| session-up. Otherwise, | ||||
| it is not used and MUST | ||||
| be set to zero."; | ||||
| } | ||||
| description | ||||
| "The agreed maximum interval at | ||||
| which the peer transmits PCEP | ||||
| messages on this PCEP session. | ||||
| Zero means that the peer never | ||||
| sends Keepalives on this | ||||
| session."; | ||||
| } | ||||
| leaf dead-timer { | container path-keys { | |||
| type uint32 { | when "../role = 'pce' or ../role = 'pcc-and-pce'" { | |||
| range "0..255"; | description | |||
| } | "Valid at PCE"; | |||
| units "seconds"; | } | |||
| description | if-feature path-key; | |||
| "The dead timer interval for | config false; | |||
| this PCEP session."; | uses path-key-state; | |||
| } | description | |||
| "The path-keys generated by the PCE"; | ||||
| } | ||||
| leaf peer-dead-timer { | container peers{ | |||
| type uint32 { | description | |||
| range "0..255"; | "The list of configured peers for the | |||
| } | entity (remote PCE)"; | |||
| units "seconds"; | list peer{ | |||
| must "((../state != 'tcp-pending'" + | key "addr"; | |||
| "and " + | ||||
| "../state != 'open-wait' )" + | ||||
| "or " + | ||||
| "((../state = 'tcp-pending'" + | ||||
| " or " + | ||||
| "../state = 'open-wait' )" + | ||||
| "and " + | ||||
| "(. = 0)))" { | ||||
| error-message | ||||
| "Invalid Peer Dead | ||||
| timer"; | ||||
| description | ||||
| "If state is tcp- | ||||
| pending or open-wait | ||||
| then this leaf is not | ||||
| used and MUST be set to | ||||
| zero."; | ||||
| } | ||||
| description | ||||
| "The peer's dead-timer interval | ||||
| for this PCEP session."; | ||||
| } | ||||
| leaf ka-hold-time-rem { | description | |||
| type uint32 { | "The peer configured for the entity. | |||
| range "0..255"; | (remote PCE)"; | |||
| } | ||||
| units "seconds"; | ||||
| must "((../state != 'tcp-pending'" + | ||||
| "and " + | ||||
| "../state != 'open-wait' ) " + | ||||
| "or " + | ||||
| "((../state = 'tcp-pending'" + | ||||
| "or " + | ||||
| "../state = 'open-wait' )" + | ||||
| "and " + | ||||
| "(. = 0)))" { | ||||
| error-message | ||||
| "Invalid Keepalive hold | ||||
| time remaining"; | ||||
| description | ||||
| "If state is tcp-pending | ||||
| or open-wait then this | ||||
| field is not used and | ||||
| MUST be set to zero."; | ||||
| } | ||||
| description | ||||
| "The keep alive hold time | ||||
| remaining for this session."; | ||||
| } | ||||
| leaf overloaded { | leaf addr { | |||
| type boolean; | type inet:ip-address; | |||
| description | description | |||
| "If the local PCEP entity has | "The local Internet address of this | |||
| informed the peer that it is | PCEP peer."; | |||
| currently overloaded, then | } | |||
| this is set to true. | ||||
| Otherwise, it is set to | leaf role { | |||
| false."; | type pcep-role; | |||
| } | config false; | |||
| description | ||||
| "The role of the PCEP Peer. | ||||
| Takes one of the following values. | ||||
| - unknown(0): this PCEP peer role is not | ||||
| known. | ||||
| - pcc(1): this PCEP peer is a PCC. | ||||
| - pce(2): this PCEP peer is a PCE. | ||||
| - pcc-and-pce(3): this PCEP peer | ||||
| is both a PCC and a PCE."; | ||||
| } | ||||
| leaf overload-time { | leaf description { | |||
| type uint32; | type string; | |||
| units "seconds"; | description | |||
| must "((../overloaded = true()) " + | "Description of the PCEP peer | |||
| "or ((../overloaded != true()) " + | configured by the user"; | |||
| "and (. = 0)))" { | } | |||
| error-message | uses info { | |||
| "Invalid overload-time"; | description | |||
| description | "PCE Peer information"; | |||
| "This field is only used | } | |||
| if overloaded is set to | ||||
| true. Otherwise, it is | ||||
| not used and MUST be | ||||
| set to zero."; | ||||
| } | ||||
| description | ||||
| "The interval of time that is | ||||
| remaining until the local PCEP | ||||
| entity will cease to be | ||||
| overloaded on this session."; | ||||
| } | ||||
| leaf peer-overloaded { | container pce-info { | |||
| type boolean; | when "../role = 'pce'" + | |||
| description | "or " + | |||
| "If the peer has informed the | "../role = 'pcc-and-pce'" | |||
| local PCEP entity that it is | { | |||
| currently overloaded, then | description | |||
| this is set to true. | "When the peer is PCE"; | |||
| Otherwise, it is set to | } | |||
| false."; | ||||
| } | ||||
| leaf peer-overload-time { | uses pce-info { | |||
| type uint32; | description | |||
| units "seconds"; | "PCE Peer information"; | |||
| must "((../peer-overloaded = " + | } | |||
| "true()) or " + | description | |||
| "((../peer-overloaded !=" + | "The PCE Peer information"; | |||
| "true())" + | } | |||
| " and " + | ||||
| "(. = 0)))" { | ||||
| error-message | ||||
| "Invalid peer overload | ||||
| time"; | ||||
| description | ||||
| "This field is only used | ||||
| if peer-overloaded is | ||||
| set to true. Otherwise, | ||||
| it is not used and MUST | ||||
| be set to zero."; | ||||
| } | ||||
| description | ||||
| "The interval of time that is | ||||
| remaining until the peer will | ||||
| cease to be overloaded. If it | ||||
| is not known how long the peer | ||||
| will stay in overloaded state, | ||||
| this leaf is set to zero."; | ||||
| } | ||||
| leaf lspdb-sync { | ||||
| if-feature stateful; | ||||
| type sync-state; | ||||
| description | ||||
| "The LSP-DB state | ||||
| synchronization status."; | ||||
| } | ||||
| leaf recv-db-ver{ | ||||
| when "../role = 'pcc'" + | ||||
| "or " + | ||||
| "../role = 'pcc-and-pce'" | ||||
| { | ||||
| description | ||||
| "Valid for PCEP Peer as | ||||
| PCC"; | ||||
| } | ||||
| if-feature stateful; | leaf delegation-pref{ | |||
| if-feature stateful-sync-opt; | if-feature stateful; | |||
| type uint8{ | ||||
| range "0..7"; | ||||
| } | ||||
| must "(/pcep/entity/capability/stateful" + | ||||
| "/active = true())" | ||||
| { | ||||
| error-message | ||||
| "The Active Stateful PCE must be | ||||
| enabled"; | ||||
| description | ||||
| "When PCEP entity is active stateful | ||||
| enabled"; | ||||
| } | ||||
| description | ||||
| "The PCE peer delegation preference."; | ||||
| } | ||||
| uses authentication { | ||||
| description | ||||
| "PCE Peer authentication"; | ||||
| type uint64; | } | |||
| leaf discontinuity-time { | ||||
| type yang:timestamp; | ||||
| config false; | ||||
| description | ||||
| "The timestamp of the time when the | ||||
| information and statistics were last | ||||
| reset."; | ||||
| } | ||||
| description | leaf initiate-session { | |||
| "The last received LSP State | type boolean; | |||
| Database Version Number"; | config false; | |||
| } | description | |||
| "Indicates whether the local PCEP | ||||
| entity initiates sessions to this peer, | ||||
| or waits for the peer to initiate a | ||||
| session."; | ||||
| } | ||||
| container of-list{ | leaf session-exists{ | |||
| when "../role = 'pce'" + | type boolean; | |||
| "or " + | config false; | |||
| "../role = 'pcc-and-pce'" | description | |||
| { | "Indicates whether a session with | |||
| description | this peer currently exists."; | |||
| "Valid for PCEP Peer as | } | |||
| PCE"; | ||||
| } | ||||
| if-feature objective-function; | ||||
| uses of-list; | leaf session-up-time{ | |||
| type yang:timestamp; | ||||
| config false; | ||||
| description | ||||
| "The timestamp value of the last time a | ||||
| session with this peer was successfully | ||||
| established."; | ||||
| } | ||||
| description | leaf session-fail-time{ | |||
| "Indicate the list of supported | type yang:timestamp; | |||
| OF on this session"; | config false; | |||
| } | description | |||
| "The timestamp value of the last time a | ||||
| session with this peer failed to be | ||||
| established."; | ||||
| } | ||||
| leaf speaker-entity-id{ | leaf session-fail-up-time{ | |||
| if-feature stateful-sync-opt; | type yang:timestamp; | |||
| type string; | config false; | |||
| description | description | |||
| "The Speaker Entity Identifier"; | "The timestamp value of the last time a | |||
| } | session with this peer failed from | |||
| active."; | ||||
| } | ||||
| leaf discontinuity-time { | uses session-grouping { | |||
| type yang:timestamp; | description | |||
| description | "session information"; | |||
| "The timestamp value of the | } | |||
| time when the statistics were | }//peer | |||
| last reset."; | }//peers | |||
| } | }//entity | |||
| } // session | }//pcep | |||
| } // sessions | ||||
| }//peer | ||||
| }//peers | ||||
| }//entity | ||||
| }//pcep-state | ||||
| /* | /* | |||
| * Notifications | * Notifications | |||
| */ | */ | |||
| notification pcep-session-up { | notification pcep-session-up { | |||
| description | description | |||
| "This notification is sent when the value of | "This notification is sent when the value of | |||
| '/pcep/pcep-state/peers/peer/sessions/session/state' | '/pcep/peers/peer/sessions/session/state' | |||
| enters the 'session-up' state."; | enters the 'session-up' state."; | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| uses notification-session-hdr; | uses notification-session-hdr; | |||
| leaf state-last-change { | leaf state-last-change { | |||
| type yang:timestamp; | type yang:timestamp; | |||
| description | description | |||
| "The timestamp value at the time this session | "The timestamp value at the time this session | |||
| entered its current state as denoted by the state | entered its current state as denoted by the state | |||
| leaf."; | leaf."; | |||
| } | } | |||
| leaf state { | leaf state { | |||
| type pcep-sess-state; | type pcep-sess-state; | |||
| 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."; | |||
| } | } | |||
| } //notification | } //notification | |||
| notification pcep-session-down { | notification pcep-session-down { | |||
| description | description | |||
| "This notification is sent when the value of | "This notification is sent when the value of | |||
| '/pcep/pcep-state/peers/peer/sessions/session/state' | '/pcep/peers/peer/sessions/session/state' | |||
| leaves the 'session-up' state."; | leaves the 'session-up' state."; | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| leaf session-initiator { | leaf session-initiator { | |||
| type pcep-initiator; | type pcep-initiator; | |||
| description | description | |||
| "The initiator of the session."; | "The initiator of the session."; | |||
| } | } | |||
| leaf state-last-change { | leaf state-last-change { | |||
| type yang:timestamp; | type yang:timestamp; | |||
| description | description | |||
| "The timestamp value at the time this session | "The timestamp value at the time this session | |||
| entered its current state as denoted by the state | entered its current state as denoted by the state | |||
| leaf."; | leaf."; | |||
| } | } | |||
| leaf state { | leaf state { | |||
| type pcep-sess-state; | type pcep-sess-state; | |||
| 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."; | |||
| } | } | |||
| } //notification | } //notification | |||
| notification pcep-session-local-overload { | notification pcep-session-local-overload { | |||
| description | description | |||
| "This notification is sent when the local PCEP entity | "This notification is sent when the local PCEP entity | |||
| enters overload state for a peer."; | enters overload state for a peer."; | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| uses notification-session-hdr; | uses notification-session-hdr; | |||
| leaf overloaded { | leaf overloaded { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "If the local PCEP entity has informed the peer | "If the local PCEP entity has informed the peer | |||
| that it is currently overloaded, then this is set | that it is currently overloaded, then this is set | |||
| to true. Otherwise, it is set to false."; | to true. Otherwise, it is set to false."; | |||
| } | } | |||
| leaf overload-time { | leaf overload-time { | |||
| type uint32; | type uint32; | |||
| units "seconds"; | units "seconds"; | |||
| description | description | |||
| "The interval of time that is remaining until the | "The interval of time that is remaining until the | |||
| local PCEP entity will cease to be overloaded on | local PCEP entity will cease to be overloaded on | |||
| this session."; | this session."; | |||
| } | } | |||
| } //notification | } //notification | |||
| notification pcep-session-local-overload-clear { | notification pcep-session-local-overload-clear { | |||
| description | description | |||
| "This notification is sent when the local PCEP entity | "This notification is sent when the local PCEP entity | |||
| leaves overload state for a peer."; | leaves overload state for a peer."; | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| leaf overloaded { | leaf overloaded { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "If the local PCEP entity has informed the peer | "If the local PCEP entity has informed the peer | |||
| that it is currently overloaded, then this is set | that it is currently overloaded, then this is set | |||
| to true. Otherwise, it is set to false."; | to true. Otherwise, it is set to false."; | |||
| } | } | |||
| } //notification | } //notification | |||
| notification pcep-session-peer-overload { | notification pcep-session-peer-overload { | |||
| description | description | |||
| "This notification is sent when a peer enters overload | "This notification is sent when a peer enters overload | |||
| state."; | state."; | |||
| uses notification-instance-hdr; | uses notification-instance-hdr; | |||
| uses notification-session-hdr; | ||||
| leaf peer-overloaded { | uses notification-session-hdr; | |||
| type boolean; | ||||
| description | ||||
| "If the peer has informed the local PCEP entity that | ||||
| it is currently overloaded, then this is set to | ||||
| true. Otherwise, it is set to false."; | ||||
| } | ||||
| leaf peer-overload-time { | leaf peer-overloaded { | |||
| type uint32; | type boolean; | |||
| units "seconds"; | description | |||
| description | "If the peer has informed the local PCEP entity that | |||
| "The interval of time that is remaining until the | it is currently overloaded, then this is set to | |||
| peer will cease to be overloaded. If it is not | true. Otherwise, it is set to false."; | |||
| known how long the peer will stay in overloaded | } | |||
| state, this leaf is set to zero."; | ||||
| } | ||||
| } //notification | ||||
| notification pcep-session-peer-overload-clear { | leaf peer-overload-time { | |||
| description | type uint32; | |||
| "This notification is sent when a peer leaves overload | units "seconds"; | |||
| state."; | description | |||
| "The interval of time that is remaining until the | ||||
| peer will cease to be overloaded. If it is not | ||||
| known how long the peer will stay in overloaded | ||||
| state, this leaf is set to zero."; | ||||
| } | ||||
| } //notification | ||||
| uses notification-instance-hdr; | notification pcep-session-peer-overload-clear { | |||
| description | ||||
| "This notification is sent when a peer leaves overload | ||||
| state."; | ||||
| leaf peer-overloaded { | uses notification-instance-hdr; | |||
| type boolean; | ||||
| description | ||||
| "If the peer has informed the local PCEP entity that | ||||
| it is currently overloaded, then this is set to | ||||
| true. Otherwise, it is set to false."; | ||||
| } | ||||
| } //notification | ||||
| /* | leaf peer-overloaded { | |||
| * RPC | type boolean; | |||
| */ | description | |||
| "If the peer has informed the local PCEP entity that | ||||
| it is currently overloaded, then this is set to | ||||
| true. Otherwise, it is set to false."; | ||||
| } | ||||
| } //notification | ||||
| rpc trigger-resync { | /* | |||
| if-feature stateful; | * RPC | |||
| if-feature stateful-sync-opt; | */ | |||
| description | ||||
| "Trigger the resyncrinization at the PCE"; | ||||
| input { | ||||
| leaf pcc { | ||||
| type leafref { | ||||
| path "/pcep-state/entity/peers/peer/addr"; | ||||
| } | ||||
| description | ||||
| "The IP address to identify the PCC. The state | ||||
| syncronization is re-triggered for all LSPs from | ||||
| the PCC. The rpc on the PCC will be ignored."; | ||||
| } | ||||
| } | ||||
| }//rpc | ||||
| }//module | rpc trigger-resync { | |||
| if-feature stateful; | ||||
| if-feature stateful-sync-opt; | ||||
| description | ||||
| "Trigger the resyncrinization at the PCE"; | ||||
| input { | ||||
| leaf pcc { | ||||
| type leafref { | ||||
| path "/pcep/entity/peers/peer/addr"; | ||||
| } | ||||
| description | ||||
| "The IP address to identify the PCC. The state | ||||
| syncronization is re-triggered for all LSPs from | ||||
| the PCC. The rpc on the PCC will be ignored."; | ||||
| } | ||||
| } | ||||
| }//rpc | ||||
| <CODE ENDS> | }//module | |||
| 9.2. ietf-pcep-stats module | <CODE ENDS> | |||
| 10.2. ietf-pcep-stats module | ||||
| <CODE BEGINS> file "ietf-pcep-stats@2017-03-12.yang" | <CODE BEGINS> file "ietf-pcep-stats@2017-06-29.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; | |||
| } | } | |||
| skipping to change at page 84, line 4 ¶ | skipping to change at page 77, line 30 ¶ | |||
| } | } | |||
| organization | organization | |||
| "IETF PCE (Path Computation Element) Working Group"; | "IETF PCE (Path Computation Element) Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/pce/> | "WG Web: <http://tools.ietf.org/wg/pce/> | |||
| WG List: <mailto:pce@ietf.org> | WG List: <mailto:pce@ietf.org> | |||
| WG Chair: JP Vasseur | WG Chair: JP Vasseur | |||
| <mailto:jpv@cisco.com> | <mailto:jpv@cisco.com> | |||
| WG Chair: Julien Meuric | WG Chair: Julien Meuric | |||
| <mailto:julien.meuric@orange.com> | <mailto:julien.meuric@orange.com> | |||
| WG Chair: Jonathan Hardwick | WG Chair: Jonathan Hardwick | |||
| <mailto:Jonathan.Hardwick@metaswitch.com> | <mailto:Jonathan.Hardwick@metaswitch.com> | |||
| Editor: Dhruv Dhody | Editor: Dhruv Dhody | |||
| <mailto:dhruv.ietf@gmail.com>"; | <mailto:dhruv.ietf@gmail.com>"; | |||
| description | description | |||
| "The YANG module 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"; | |||
| revision 2017-03-12 { | revision 2017-06-29 { | |||
| 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 | |||
| */ | */ | |||
| grouping pcep-stats{ | grouping pcep-stats{ | |||
| description | description | |||
| "This grouping defines statistics for PCEP. It is used | "This grouping defines statistics for PCEP. It is used | |||
| for both peer and current session."; | for both peer and current session."; | |||
| skipping to change at page 101, line 4 ¶ | skipping to change at page 94, line 36 ¶ | |||
| type yang:counter32; | type yang:counter32; | |||
| description | description | |||
| "The number of attempts to expand an unknown | "The number of attempts to expand an unknown | |||
| path-key."; | path-key."; | |||
| } | } | |||
| leaf num-exp-path-key{ | leaf num-exp-path-key{ | |||
| type yang:counter32; | type yang:counter32; | |||
| description | description | |||
| "The number of attempts to expand an expired | "The number of attempts to expand an expired | |||
| path-key."; | path-key."; | |||
| } | } | |||
| leaf num-dup-path-key{ | leaf num-dup-path-key{ | |||
| type yang:counter32; | type yang:counter32; | |||
| description | description | |||
| "The number of duplicate attempts to expand same | "The number of duplicate attempts to expand same | |||
| path-key."; | path-key."; | |||
| } | } | |||
| leaf num-path-key-no-attempt{ | leaf num-path-key-no-attempt{ | |||
| type yang:counter32; | type yang:counter32; | |||
| description | description | |||
| "The number of expired path-keys with no attempt to | "The number of expired path-keys with no attempt to | |||
| expand it."; | expand it."; | |||
| } | } | |||
| } | } | |||
| }//pcep-stats | }//pcep-stats | |||
| /* | /* | |||
| * Augment modules to add statistics | * Augment modules to add statistics | |||
| */ | */ | |||
| augment "/p:pcep-state/p:entity/p:peers/p:peer" { | augment "/p:pcep/p:entity/p:peers/p:peer" { | |||
| description | description | |||
| "Augmenting the statistics"; | "Augmenting the statistics"; | |||
| leaf num-sess-setup-ok{ | leaf num-sess-setup-ok{ | |||
| type yang:counter32; | type yang:counter32; | |||
| config false; | ||||
| description | description | |||
| "The number of PCEP sessions successfully | "The number of PCEP sessions successfully | |||
| successfully established with the peer, | successfully established with the peer, | |||
| including any current session. This | including any current session. This | |||
| counter is incremented each time a | counter is incremented each time a | |||
| session with this peer is successfully | session with this peer is successfully | |||
| established."; | established."; | |||
| } | } | |||
| leaf num-sess-setup-fail{ | leaf num-sess-setup-fail{ | |||
| type yang:counter32; | type yang:counter32; | |||
| config false; | ||||
| description | description | |||
| "The number of PCEP sessions with the peer | "The number of PCEP sessions with the peer | |||
| that have been attempted but failed | that have been attempted but failed | |||
| before being fully established. This | before being fully established. This | |||
| counter is incremented each time a | counter is incremented each time a | |||
| session retry to this peer fails."; | session retry to this peer fails."; | |||
| } | } | |||
| container pcep-stats { | container pcep-stats { | |||
| config false; | ||||
| description | description | |||
| "The container for all statistics at peer | "The container for all statistics at peer | |||
| level."; | level."; | |||
| uses pcep-stats{ | uses pcep-stats{ | |||
| description | description | |||
| "Since PCEP sessions can be | "Since PCEP sessions can be | |||
| ephemeral, the peer statistics tracks | ephemeral, the peer statistics tracks | |||
| a peer even when no PCEP session | a peer even when no PCEP session | |||
| currently exists to that peer. The | currently exists to that peer. The | |||
| statistics contained are an aggregate | statistics contained are an aggregate | |||
| skipping to change at page 102, line 49 ¶ | skipping to change at page 96, line 36 ¶ | |||
| description | description | |||
| "The number of requests that were | "The number of requests that were | |||
| received from the peer and | received from the peer and | |||
| implicitly cancelled when the | implicitly cancelled when the | |||
| session they were received over | session they were received over | |||
| was closed."; | was closed."; | |||
| } | } | |||
| }//pcep-stats | }//pcep-stats | |||
| }//augment | }//augment | |||
| augment "/p:pcep-state/p:entity/p:peers/p:peer/" + | augment "/p:pcep/p:entity/p:peers/p:peer/" + | |||
| "p:sessions/p:session" { | "p:sessions/p:session" { | |||
| description | description | |||
| "Augmenting the statistics"; | "Augmenting the statistics"; | |||
| container pcep-stats { | container pcep-stats { | |||
| description | description | |||
| "The container for all statistics | "The container for all statistics | |||
| at session level."; | at session level."; | |||
| uses pcep-stats{ | uses pcep-stats{ | |||
| description | description | |||
| "The statistics contained are | "The statistics contained are | |||
| skipping to change at page 103, line 18 ¶ | skipping to change at page 97, line 4 ¶ | |||
| at session level."; | at session level."; | |||
| uses pcep-stats{ | uses pcep-stats{ | |||
| description | description | |||
| "The statistics contained are | "The statistics contained are | |||
| for the current sessions to | for the current sessions to | |||
| that peer. These are lost | that peer. These are lost | |||
| when the session goes down. | when the session goes down. | |||
| "; | "; | |||
| } | } | |||
| }//pcep-stats | }//pcep-stats | |||
| }//augment | }//augment | |||
| }//module | }//module | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 10. Security Considerations | 11. Security Considerations | |||
| The YANG module defined in this memo is designed to be accessed via | The YANG module defined in this document is designed to be accessed | |||
| the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the | via network management protocol such as NETCONF [RFC6241] or RESTCONF | |||
| secure transport layer and the mandatory-to-implement secure | [RFC8040]. The lowest NETCONF layer is the secure transport layer | |||
| transport is SSH [RFC6242]. The NETCONF access control model | and the mandatory-to-implement secure transport is SSH [RFC6242]. | |||
| [RFC6536] provides the means to restrict access for particular | The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement | |||
| NETCONF users to a pre-configured subset of all available NETCONF | secure transport is TLS [RFC5246] | |||
| protocol operations and content. | ||||
| The NETCONF access control model [RFC6536] provides the means to | ||||
| restrict access for particular NETCONF or RESTCONF users to a pre- | ||||
| configured subset of all available NETCONF or RESTCONF protocol | ||||
| 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>) | |||
| to these data nodes without proper protection can have a negative | to these data nodes without proper protection can have a negative | |||
| effect on network operations. These are the subtrees and data nodes | effect on network operations. These are the subtrees and data nodes | |||
| and their sensitivity/vulnerability: | and their sensitivity/vulnerability: | |||
| /pcep/entity/ - configure local parameters, capabilities etc. | /pcep/entity/ - configure local parameters, capabilities etc. | |||
| skipping to change at page 104, line 13 ¶ | skipping to change at page 97, line 48 ¶ | |||
| session between the local entity and the peers. This may lead to | session between the local entity and the peers. This may lead to | |||
| inability to compute new paths, stateful operations on the delegated | inability to compute new paths, stateful operations on the delegated | |||
| as well as PCE-initiated LSPs. | as well as PCE-initiated LSPs. | |||
| Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in this YANG module may be considered | |||
| sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
| important to control read access (e.g., via get, get-config, or | important to control read access (e.g., via get, get-config, or | |||
| notification) to these data nodes. These are the subtrees and data | notification) to these data nodes. These are the subtrees and data | |||
| nodes and their sensitivity/vulnerability: | nodes and their sensitivity/vulnerability: | |||
| /pcep-state/lsp-db - All the LSPs in the network. Unauthorized | /pcep/lsp-db - All the LSPs in the network. Unauthorized access | |||
| access to this could provide the all path and network usage | to this could provide the all path and network usage information. | |||
| information. | ||||
| /pcep-state/path-keys/ - The Confidential Path Segments (CPS) are | /pcep/path-keys/ - The Confidential Path Segments (CPS) are hidden | |||
| hidden using path-keys. Unauthorized access to this could leak | using path-keys. Unauthorized access to this could leak | |||
| confidential path information. | confidential path information. | |||
| Some of the RPC operations in this YANG module may be considered | Some of the RPC operations in this YANG module may be considered | |||
| sensitive or vulnerable in some network environments. It is thus | sensitive or vulnerable in some network environments. It is thus | |||
| important to control access to these operations. These are the | important to control access to these operations. These are the | |||
| operations and their sensitivity/vulnerability: | operations and their sensitivity/vulnerability: | |||
| trigger-resync - trigger resynchronization with the PCE. | trigger-resync - trigger resynchronization with the PCE. | |||
| Unauthorized access to this could force a PCEP session into | Unauthorized access to this could force a PCEP session into | |||
| continuous state synchronization. | continuous state synchronization. | |||
| 11. IANA Considerations | 12. IANA Considerations | |||
| This document registers a URI in the "IETF XML Registry" [RFC3688]. | This document registers a URI in the "IETF XML Registry" [RFC3688]. | |||
| Following the format in RFC 3688, the following registration has been | Following the format in RFC 3688, the following registration has been | |||
| made. | made. | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-pcep | URI: urn:ietf:params:xml:ns:yang:ietf-pcep | |||
| Registrant Contact: The PCE WG of the IETF. | Registrant Contact: The PCE WG of the IETF. | |||
| XML: N/A; the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
| This document registers a YANG module in the "YANG Module Names" | This document registers a YANG module in the "YANG Module Names" | |||
| registry [RFC6020]. | registry [RFC6020]. | |||
| 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 | |||
| 12. Acknowledgements | 13. Acknowledgements | |||
| The initial document is based on the PCEP MIB [RFC7420]. Further | The initial document is based on the PCEP MIB [RFC7420]. We would | |||
| this document structure is based on Routing Yang Module | like to thank the authors of aforementioned documents. | |||
| [I-D.ietf-netmod-routing-cfg]. We would like to thank the authors of | ||||
| aforementioned documents. | ||||
| 13. References | 14. References | |||
| 13.1. Normative References | 14.1. Normative References | |||
| [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, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [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, | |||
| <http://www.rfc-editor.org/info/rfc3688>. | <http://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, | |||
| <http://www.rfc-editor.org/info/rfc5440>. | <http://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, | ||||
| <http://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, | |||
| <http://www.rfc-editor.org/info/rfc6020>. | <http://www.rfc-editor.org/info/rfc6020>. | |||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | ||||
| and A. Bierman, Ed., "Network Configuration Protocol | ||||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
| <http://www.rfc-editor.org/info/rfc6241>. | ||||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | ||||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | ||||
| <http://www.rfc-editor.org/info/rfc6242>. | ||||
| [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | |||
| Protocol (NETCONF) Access Control Model", RFC 6536, | Protocol (NETCONF) Access Control Model", RFC 6536, | |||
| DOI 10.17487/RFC6536, March 2012, | DOI 10.17487/RFC6536, March 2012, | |||
| <http://www.rfc-editor.org/info/rfc6536>. | <http://www.rfc-editor.org/info/rfc6536>. | |||
| [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
| RFC 6991, DOI 10.17487/RFC6991, July 2013, | RFC 6991, DOI 10.17487/RFC6991, July 2013, | |||
| <http://www.rfc-editor.org/info/rfc6991>. | <http://www.rfc-editor.org/info/rfc6991>. | |||
| [RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. | ||||
| Zhang, "YANG Data Model for Key Chains", RFC 8177, | ||||
| DOI 10.17487/RFC8177, June 2017, | ||||
| <http://www.rfc-editor.org/info/rfc8177>. | ||||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | ||||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | ||||
| <http://www.rfc-editor.org/info/rfc8040>. | ||||
| [I-D.ietf-pce-stateful-pce] | [I-D.ietf-pce-stateful-pce] | |||
| Crabbe, E., Minei, I., Medved, J., and R. Varga, "PCEP | Crabbe, E., Minei, I., Medved, J., and R. Varga, "PCEP | |||
| Extensions for Stateful PCE", draft-ietf-pce-stateful- | Extensions for Stateful PCE", draft-ietf-pce-stateful- | |||
| pce-18 (work in progress), December 2016. | pce-21 (work in progress), June 2017. | |||
| [I-D.ietf-pce-pce-initiated-lsp] | [I-D.ietf-pce-pce-initiated-lsp] | |||
| Crabbe, E., Minei, I., Sivabalan, S., and R. Varga, "PCEP | Crabbe, E., Minei, I., Sivabalan, S., and R. Varga, "PCEP | |||
| Extensions for PCE-initiated LSP Setup in a Stateful PCE | Extensions for PCE-initiated LSP Setup in a Stateful PCE | |||
| Model", draft-ietf-pce-pce-initiated-lsp-09 (work in | Model", draft-ietf-pce-pce-initiated-lsp-10 (work in | |||
| progress), March 2017. | progress), June 2017. | |||
| [I-D.ietf-pce-lsp-setup-type] | [I-D.ietf-pce-lsp-setup-type] | |||
| Sivabalan, S., Medved, J., Minei, I., Crabbe, E., Varga, | Sivabalan, S., Tantsura, J., Minei, I., Varga, R., and J. | |||
| R., Tantsura, J., and J. Hardwick, "Conveying path setup | Hardwick, "Conveying path setup type in PCEP messages", | |||
| type in PCEP messages", draft-ietf-pce-lsp-setup-type-03 | draft-ietf-pce-lsp-setup-type-04 (work in progress), April | |||
| (work in progress), June 2015. | 2017. | |||
| [I-D.ietf-pce-segment-routing] | [I-D.ietf-pce-segment-routing] | |||
| Sivabalan, S., Medved, J., Filsfils, C., Crabbe, E., | Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W., | |||
| Raszuk, R., Lopez, V., Tantsura, J., Henderickx, W., and | and J. Hardwick, "PCEP Extensions for Segment Routing", | |||
| J. Hardwick, "PCEP Extensions for Segment Routing", draft- | draft-ietf-pce-segment-routing-09 (work in progress), | |||
| ietf-pce-segment-routing-08 (work in progress), October | April 2017. | |||
| 2016. | ||||
| [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-06 (work | Tunnels and Interfaces", draft-ietf-teas-yang-te-06 (work | |||
| in progress), March 2017. | in progress), March 2017. | |||
| [I-D.ietf-rtgwg-yang-key-chain] | [I-D.ietf-netconf-tls-client-server] | |||
| Lindem, A., Qu, Y., Yeung, D., Chen, I., Zhang, Z., and Y. | Watsen, K. and G. Wu, "TLS Client and Server Models", | |||
| Yang, "Routing Key Chain YANG Data Model", draft-ietf- | draft-ietf-netconf-tls-client-server-03 (work in | |||
| rtgwg-yang-key-chain-15 (work in progress), February 2017. | progress), June 2017. | |||
| 13.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, | |||
| <http://www.rfc-editor.org/info/rfc4655>. | <http://www.rfc-editor.org/info/rfc4655>. | |||
| [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | ||||
| and A. Bierman, Ed., "Network Configuration Protocol | ||||
| (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, | ||||
| <http://www.rfc-editor.org/info/rfc6241>. | ||||
| [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | ||||
| Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, | ||||
| <http://www.rfc-editor.org/info/rfc6242>. | ||||
| [RFC7420] Koushik, A., Stephan, E., Zhao, Q., King, D., and J. | [RFC7420] Koushik, A., Stephan, E., Zhao, Q., King, D., and J. | |||
| Hardwick, "Path Computation Element Communication Protocol | Hardwick, "Path Computation Element Communication Protocol | |||
| (PCEP) Management Information Base (MIB) Module", | (PCEP) Management Information Base (MIB) Module", | |||
| RFC 7420, DOI 10.17487/RFC7420, December 2014, | RFC 7420, DOI 10.17487/RFC7420, December 2014, | |||
| <http://www.rfc-editor.org/info/rfc7420>. | <http://www.rfc-editor.org/info/rfc7420>. | |||
| [I-D.ietf-netmod-routing-cfg] | ||||
| Lhotka, L. and A. Lindem, "A YANG Data Model for Routing | ||||
| Management", draft-ietf-netmod-routing-cfg-25 (work in | ||||
| progress), November 2016. | ||||
| [I-D.ietf-netmod-rfc6087bis] | [I-D.ietf-netmod-rfc6087bis] | |||
| Bierman, A., "Guidelines for Authors and Reviewers of YANG | Bierman, A., "Guidelines for Authors and Reviewers of YANG | |||
| Data Model Documents", draft-ietf-netmod-rfc6087bis-12 | Data Model Documents", draft-ietf-netmod-rfc6087bis-13 | |||
| (work in progress), March 2017. | (work in progress), June 2017. | |||
| [I-D.ietf-netmod-revised-datastores] | ||||
| Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | ||||
| and R. Wilton, "Network Management Datastore | ||||
| Architecture", draft-ietf-netmod-revised-datastores-02 | ||||
| (work in progress), May 2017. | ||||
| [I-D.ietf-pce-pceps] | ||||
| Lopez, D., Dios, O., Wu, Q., and D. Dhody, "Secure | ||||
| Transport for PCEP", draft-ietf-pce-pceps-14 (work in | ||||
| progress), May 2017. | ||||
| Appendix A. Contributor Addresses | Appendix A. Contributor Addresses | |||
| Rohit Pobbathi | Rohit Pobbathi | |||
| Huawei Technologies | Huawei Technologies | |||
| Divyashree Techno Park, Whitefield | Divyashree Techno Park, Whitefield | |||
| Bangalore, Karnataka 560066 | Bangalore, Karnataka 560066 | |||
| India | India | |||
| EMail: rohit.pobbathi@huawei.com | EMail: rohit.pobbathi@huawei.com | |||
| skipping to change at page 108, line 51 ¶ | skipping to change at page 102, line 51 ¶ | |||
| Phone: (469) 277-5838 | Phone: (469) 277-5838 | |||
| EMail: leeyoung@huawei.com | EMail: leeyoung@huawei.com | |||
| Udayasree Palle | Udayasree Palle | |||
| Huawei Technologies | Huawei Technologies | |||
| Divyashree Techno Park, Whitefield | Divyashree Techno Park, Whitefield | |||
| Bangalore, Karnataka 560066 | Bangalore, Karnataka 560066 | |||
| India | India | |||
| EMail: udayasree.palle@huawei.com | EMail: udayasreereddy@gmail.com | |||
| Xian Zhang | Xian Zhang | |||
| Huawei Technologies | Huawei Technologies | |||
| Bantian, Longgang District | Bantian, Longgang District | |||
| Shenzhen 518129 | Shenzhen 518129 | |||
| P.R.China | P.R.China | |||
| EMail: zhang.xian@huawei.com | EMail: zhang.xian@huawei.com | |||
| Avantika | Avantika | |||
| Huawei Technologies | Huawei Technologies | |||
| Divyashree Techno Park, Whitefield | Divyashree Techno Park, Whitefield | |||
| Bangalore, Karnataka 560066 | Bangalore, Karnataka 560066 | |||
| India | India | |||
| EMail: avantika.sushilkumar@huawei.com | EMail: s.avantika.avantika@gmail.com | |||
| Shashikanth | ||||
| Huawei Technologies | ||||
| Divyashree Techno Park, Whitefield | ||||
| Bangalore, Karnataka 560066 | ||||
| India | ||||
| EMail: shashikanth.vh@huawei.com | ||||
| Authors' Addresses | Authors' Addresses | |||
| Dhruv Dhody (editor) | Dhruv Dhody (editor) | |||
| Huawei Technologies | Huawei Technologies | |||
| Divyashree Techno Park, Whitefield | Divyashree Techno Park, Whitefield | |||
| Bangalore, Karnataka 560066 | Bangalore, Karnataka 560066 | |||
| India | India | |||
| EMail: dhruv.ietf@gmail.com | EMail: dhruv.ietf@gmail.com | |||
| End of changes. 326 change blocks. | ||||
| 3094 lines changed or deleted | 2852 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/ | ||||