draft-ietf-pce-pcep-yang-03.txt   draft-ietf-pce-pcep-yang-04.txt 
PCE Working Group D. Dhody, Ed. PCE Working Group D. Dhody, Ed.
Internet-Draft Huawei Technologies Internet-Draft Huawei Technologies
Intended status: Standards Track J. Hardwick Intended status: Standards Track J. Hardwick
Expires: December 31, 2017 Metaswitch Expires: January 1, 2018 Metaswitch
V. Beeram V. Beeram
Juniper Networks Juniper Networks
J. Tantsura J. Tantsura
June 29, 2017 June 30, 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-03 draft-ietf-pce-pcep-yang-04
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 December 31, 2017. This Internet-Draft will expire on January 1, 2018.
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 . . . . . . . . . . . . . . . . . . . . . . . 15 5.1. The Entity . . . . . . . . . . . . . . . . . . . . . . . 14
5.2. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 15 5.2. The Peer Lists . . . . . . . . . . . . . . . . . . . . . 14
5.3. The Session Lists . . . . . . . . . . . . . . . . . . . . 16 5.3. The Session Lists . . . . . . . . . . . . . . . . . . . . 15
5.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 16 5.4. Notifications . . . . . . . . . . . . . . . . . . . . . . 15
5.5. RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 5.5. RPC . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6. The Design of PCEP Statistics Data Model . . . . . . . . . . 16 6. The Design of PCEP Statistics Data Model . . . . . . . . . . 15
7. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 19 7. Advanced PCE Features . . . . . . . . . . . . . . . . . . . . 18
7.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 20 7.1. Stateful PCE's LSP-DB . . . . . . . . . . . . . . . . . . 19
8. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 20 8. Open Issues and Next Step . . . . . . . . . . . . . . . . . . 19
8.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 20 8.1. The PCE-Initiated LSP . . . . . . . . . . . . . . . . . . 19
9. Other Considerations . . . . . . . . . . . . . . . . . . . . 20 9. Other Considerations . . . . . . . . . . . . . . . . . . . . 19
9.1. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 20 9.1. PCEP over TLS (PCEPS) . . . . . . . . . . . . . . . . . . 19
10. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 21 10. PCEP YANG Modules . . . . . . . . . . . . . . . . . . . . . . 20
10.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 21 10.1. ietf-pcep module . . . . . . . . . . . . . . . . . . . . 20
10.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 77 10.2. ietf-pcep-stats module . . . . . . . . . . . . . . . . . 76
11. Security Considerations . . . . . . . . . . . . . . . . . . . 97 11. Security Considerations . . . . . . . . . . . . . . . . . . . 96
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 98 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 97
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 98 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 97
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 98 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 98
14.1. Normative References . . . . . . . . . . . . . . . . . . 98 14.1. Normative References . . . . . . . . . . . . . . . . . . 98
14.2. Informative References . . . . . . . . . . . . . . . . . 100 14.2. Informative References . . . . . . . . . . . . . . . . . 99
Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 102 Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 101
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 103 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 102
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 7, line 5 skipping to change at page 7, line 5
data model. data model.
o It should be fairly straightforward to augment the base data model o It should be fairly straightforward to augment the base data model
for advanced PCE features. for advanced PCE features.
5. The Design of PCEP Data Model 5. The Design of PCEP Data Model
The module, "ietf-pcep", defines the basic components of a PCE The module, "ietf-pcep", defines the basic components of a PCE
speaker. speaker.
module: ietf-pcep module: ietf-pcep
+--rw pcep! +--rw pcep!
+--rw entity +--rw entity
+--rw addr inet:ip-address +--rw addr inet:ip-address
+--rw enabled? boolean +--rw enabled? boolean
+--rw role pcep-role +--rw role pcep-role
+--rw description? string +--rw description? string
+--rw speaker-entity-id? string +--rw speaker-entity-id? string
| {stateful-sync-opt}? | {stateful-sync-opt}?
+--rw admin-status? pcep-admin-status +--rw admin-status? pcep-admin-status
+--ro index? uint32 +--ro index? uint32
+--ro oper-status? pcep-oper-status +--ro oper-status? pcep-oper-status
+--rw domain +--rw domain
| +--rw domain* [domain-type domain] | +--rw domain* [domain-type domain]
| +--rw domain-type domain-type | +--rw domain-type domain-type
| +--rw domain domain | +--rw domain domain
+--rw capability +--rw capability
| +--rw gmpls? boolean {gmpls}? | +--rw gmpls? boolean {gmpls}?
| +--rw bi-dir? boolean | +--rw bi-dir? boolean
| +--rw diverse? boolean | +--rw diverse? boolean
| +--rw load-balance? boolean | +--rw load-balance? boolean
| +--rw synchronize? boolean {svec}? | +--rw synchronize? boolean {svec}?
| +--rw objective-function? boolean | +--rw objective-function? boolean
| | {objective-function}? | | {objective-function}?
| +--rw add-path-constraint? boolean | +--rw add-path-constraint? boolean
| +--rw prioritization? boolean | +--rw prioritization? boolean
| +--rw multi-request? boolean | +--rw multi-request? boolean
| +--rw gco? boolean {gco}? | +--rw gco? boolean {gco}?
| +--rw p2mp? boolean {p2mp}? | +--rw p2mp? boolean {p2mp}?
| +--rw stateful {stateful}? | +--rw stateful {stateful}?
| | +--rw enabled? boolean | | +--rw enabled? boolean
| | +--rw active? boolean | | +--rw active? boolean
| | +--rw pce-initiated? boolean | | +--rw pce-initiated? boolean
| | | {pce-initiated}? | | | {pce-initiated}?
| | +--rw include-db-ver? boolean | | +--rw include-db-ver? boolean
| | | {stateful-sync-opt}? | | | {stateful-sync-opt}?
| | +--rw trigger-resync? boolean | | +--rw trigger-resync? boolean
| | | {stateful-sync-opt}? | | | {stateful-sync-opt}?
| | +--rw trigger-initial-sync? boolean | | +--rw trigger-initial-sync? boolean
| | | {stateful-sync-opt}? | | | {stateful-sync-opt}?
| | +--rw incremental-sync? boolean | | +--rw incremental-sync? boolean
| | {stateful-sync-opt}? | | {stateful-sync-opt}?
| +--rw sr {sr}? | +--rw sr {sr}?
| +--rw enabled? boolean | +--rw enabled? boolean
+--rw pce-info +--rw pce-info
| +--rw scope | +--rw scope
| | +--rw intra-area-scope? boolean | | +--rw intra-area-scope? boolean
| | +--rw intra-area-pref? uint8 | | +--rw intra-area-pref? uint8
| | +--rw inter-area-scope? boolean | | +--rw inter-area-scope? boolean
| | +--rw inter-area-scope-default? boolean | | +--rw inter-area-scope-default? boolean
| | +--rw inter-area-pref? uint8 | | +--rw inter-area-pref? uint8
| | +--rw inter-as-scope? boolean | | +--rw inter-as-scope? boolean
| | +--rw inter-as-scope-default? boolean | | +--rw inter-as-scope-default? boolean
| | +--rw inter-as-pref? uint8 | | +--rw inter-as-pref? uint8
| | +--rw inter-layer-scope? boolean | | +--rw inter-layer-scope? boolean
| | +--rw inter-layer-pref? uint8 | | +--rw inter-layer-pref? uint8
| +--rw neigh-domains | +--rw neigh-domains
| | +--rw domain* [domain-type domain] | | +--rw domain* [domain-type domain]
| | +--rw domain-type domain-type | | +--rw domain-type domain-type
| | +--rw domain domain | | +--rw domain domain
| +--rw path-key {path-key}? | +--rw path-key {path-key}?
| +--rw enabled? boolean | +--rw enabled? boolean
| +--rw discard-timer? uint32 | +--rw discard-timer? uint32
| +--rw reuse-time? uint32 | +--rw reuse-time? uint32
| +--rw pce-id? inet:ip-address | +--rw pce-id? inet:ip-address
+--rw (auth-type-selection)? +--rw connect-timer? uint32
| +--:(auth-key-chain) +--rw connect-max-retry? uint32
| | +--rw key-chain? +--rw init-backoff-timer? uint32
| | key-chain:key-chain-ref +--rw max-backoff-timer? uint32
| +--:(auth-key) +--rw open-wait-timer? uint32
| | +--rw crypto-algorithm identityref +--rw keep-wait-timer? uint32
| | +--rw key-string +--rw keep-alive-timer? uint32
| | +--rw (key-string-style)? +--rw dead-timer? uint32
| | +--:(keystring) +--rw allow-negotiation? boolean
| | | +--rw keystring? string +--rw max-keep-alive-timer? uint32
| | +--:(hexadecimal) +--rw max-dead-timer? uint32
| | {key-chain:hex-key-string}? +--rw min-keep-alive-timer? uint32
| | +--rw hexadecimal-string? +--rw min-dead-timer? uint32
| | yang:hex-string +--rw sync-timer? uint32 {svec}?
| +--:(auth-tls) {tls}? +--rw request-timer? uint32
| +--rw tls-pce +--rw max-sessions? uint32
| | +--rw certificates +--rw max-unknown-reqs? uint32
| | | +--rw certificate* [name] +--rw max-unknown-msgs? uint32
| | | +--rw name leafref +--rw pcep-notification-max-rate uint32
| | +--rw client-auth +--rw stateful-parameter {stateful}?
| | | +--rw trusted-ca-certs? leafref | +--rw state-timeout? uint32
| | | +--rw trusted-client-certs? leafref | +--rw redelegation-timeout? uint32
| | +--rw hello-params | +--rw rpt-non-pcep-lsp? boolean
| | {tls-server-hello-params-config}? +--rw of-list {objective-function}?
| | +--rw tls-versions | +--rw objective-function* [of]
| | | +--rw tls-version* identityref | +--rw of objective-function
| | +--rw cipher-suites +--ro lsp-db {stateful}?
| | +--rw cipher-suite* identityref | +--ro db-ver? uint64
| +--rw tls-pcc | | {stateful-sync-opt}?
| +--rw server-auth | +--ro association-list*
| | +--rw trusted-ca-certs? leafref | | [id source global-source extended-id]
| | +--rw trusted-server-certs? leafref | | +--ro type? assoc-type
| +--rw client-auth | | +--ro id uint16
| | +--rw (auth-type)? | | +--ro source inet:ip-address
| | +--:(certificate) | | +--ro global-source uint32
| | +--rw certificate? leafref | | +--ro extended-id string
| +--rw hello-params | | +--ro lsp* [plsp-id pcc-id]
| {tls-client-hello-params-config}? | | +--ro plsp-id
| +--rw tls-versions | | | -> /pcep/entity/lsp-db/lsp/plsp-id
| | +--rw tls-version* identityref | | +--ro pcc-id -> /pcep/entity/lsp-db/lsp/pcc-id
| +--rw cipher-suites | +--ro lsp* [plsp-id pcc-id]
| +--rw cipher-suite* identityref | +--ro plsp-id uint32
+--rw connect-timer? uint32 | +--ro pcc-id inet:ip-address
+--rw connect-max-retry? uint32 | +--ro lsp-ref
+--rw init-backoff-timer? uint32 | | +--ro source?
+--rw max-backoff-timer? uint32 | | | -> /te:te/lsps-state/lsp/source
+--rw open-wait-timer? uint32 | | +--ro destination?
+--rw keep-wait-timer? uint32 | | | -> /te:te/lsps-state/lsp/destination
+--rw keep-alive-timer? uint32 | | +--ro tunnel-id?
+--rw dead-timer? uint32 | | | -> /te:te/lsps-state/lsp/tunnel-id
+--rw allow-negotiation? boolean | | +--ro lsp-id?
+--rw max-keep-alive-timer? uint32 | | | -> /te:te/lsps-state/lsp/lsp-id
+--rw max-dead-timer? uint32 | | +--ro extended-tunnel-id? leafref
+--rw min-keep-alive-timer? uint32 | | +--ro type?
+--rw min-dead-timer? uint32 | | -> /te:te/lsps-state/lsp/type
+--rw sync-timer? uint32 {svec}? | +--ro admin-state? boolean
+--rw request-timer? uint32 | +--ro operational-state? operational-state
+--rw max-sessions? uint32 | +--ro delegated
+--rw max-unknown-reqs? uint32 | | +--ro enabled? boolean
+--rw max-unknown-msgs? uint32 | | +--ro peer? -> /pcep/entity/peers/peer/addr
+--rw pcep-notification-max-rate uint32 | | +--ro srp-id? uint32
+--rw stateful-parameter {stateful}? | +--ro initiation {pce-initiated}?
| +--rw state-timeout? uint32 | | +--ro enabled? boolean
| +--rw redelegation-timeout? uint32 | | +--ro peer? -> /pcep/entity/peers/peer/addr
| +--rw rpt-non-pcep-lsp? boolean | +--ro symbolic-path-name? string
+--rw of-list {objective-function}? | +--ro last-error? lsp-error
| +--rw objective-function* [of] | +--ro pst? pst
| +--rw of objective-function | +--ro association-list*
+--ro lsp-db {stateful}? | [id source global-source extended-id]
| +--ro db-ver? uint64 | +--ro id leafref
| | {stateful-sync-opt}? | +--ro source leafref
| +--ro association-list* | +--ro global-source leafref
| | [id source global-source extended-id] | +--ro extended-id leafref
| | +--ro type? assoc-type +--ro path-keys {path-key}?
| | +--ro id uint16 | +--ro path-keys* [path-key]
| | +--ro source inet:ip-address | +--ro path-key uint16
| | +--ro global-source uint32 | +--ro cps
| | +--ro extended-id string | | +--ro explicit-route-objects* [index]
| | +--ro lsp* [plsp-id pcc-id] | | +--ro explicit-route-usage? identityref
| | +--ro plsp-id | | +--ro index uint32
| | | -> /pcep/entity/lsp-db/lsp/plsp-id | | +--ro (type)?
| | +--ro pcc-id | | +--:(numbered)
| | -> /pcep/entity/lsp-db/lsp/pcc-id | | | +--ro numbered-hop
| +--ro lsp* [plsp-id pcc-id] | | | +--ro address? te-types:te-tp-id
| +--ro plsp-id uint32 | | | +--ro hop-type? te-hop-type
| +--ro pcc-id inet:ip-address | | +--:(as-number)
| +--ro lsp-ref | | | +--ro as-number-hop
| | +--ro source? | | | +--ro as-number? binary
| | | -> /te:te/lsps-state/lsp/source | | | +--ro hop-type? te-hop-type
| | +--ro destination? | | +--:(unnumbered)
| | | -> /te:te/lsps-state/lsp/destination | | | +--ro unnumbered-hop
| | +--ro tunnel-id? | | | +--ro node-id?
| | | -> /te:te/lsps-state/lsp/tunnel-id | | | | te-types:te-node-id
| | +--ro lsp-id? | | | +--ro link-tp-id? te-types:te-tp-id
| | | -> /te:te/lsps-state/lsp/lsp-id | | | +--ro hop-type? te-hop-type
| | +--ro extended-tunnel-id? leafref | | +--:(label)
| | +--ro type? | | | +--ro label-hop
| | -> /te:te/lsps-state/lsp/type | | | +--ro value?
| +--ro admin-state? boolean | | | rt-types:generalized-label
| +--ro operational-state? operational-state | | +--:(sid)
| +--ro delegated | | +--ro sid-hop
| | +--ro enabled? boolean | | +--ro sid?
| | +--ro peer? -> /pcep/entity/peers/peer/addr | | rt-types:generalized-label
| | +--ro srp-id? uint32 | +--ro pcc-original?
| +--ro initiation {pce-initiated}? | | -> /pcep/entity/peers/peer/addr
| | +--ro enabled? boolean | +--ro req-id? uint32
| | +--ro peer? -> /pcep/entity/peers/peer/addr | +--ro retrieved? boolean
| +--ro symbolic-path-name? string | +--ro pcc-retrieved?
| +--ro last-error? lsp-error | | -> /pcep/entity/peers/peer/addr
| +--ro pst? pst | +--ro creation-time? yang:timestamp
| +--ro association-list* | +--ro discard-time? uint32
| [id source global-source extended-id] | +--ro reuse-time? uint32
| +--ro id leafref +--rw peers
| +--ro source leafref +--rw peer* [addr]
| +--ro global-source leafref +--rw addr inet:ip-address
| +--ro extended-id leafref +--rw role? pcep-role
+--ro path-keys {path-key}? +--rw description? string
| +--ro path-keys* [path-key] +--rw domain
| +--ro path-key uint16 | +--rw domain* [domain-type domain]
| +--ro cps | +--rw domain-type domain-type
| | +--ro explicit-route-objects* [index] | +--rw domain domain
| | +--ro explicit-route-usage? identityref +--rw capability
| | +--ro index uint32 | +--rw gmpls? boolean {gmpls}?
| | +--ro (type)? | +--rw bi-dir? boolean
| | +--:(ip-address) | +--rw diverse? boolean
| | | +--ro ip-address-hop | +--rw load-balance? boolean
| | | +--ro address? inet:ip-address | +--rw synchronize? boolean {svec}?
| | | +--ro hop-type? te-hop-type | +--rw objective-function? boolean
| | +--:(as-number) | | {objective-function}?
| | | +--ro as-number-hop | +--rw add-path-constraint? boolean
| | | +--ro as-number? binary | +--rw prioritization? boolean
| | | +--ro hop-type? te-hop-type | +--rw multi-request? boolean
| | +--:(unnumbered-link) | +--rw gco? boolean {gco}?
| | | +--ro unnumbered-hop | +--rw p2mp? boolean {p2mp}?
| | | +--ro router-id? | +--rw stateful {stateful}?
| | | | inet:ip-address | | +--rw enabled? boolean
| | | +--ro interface-id? uint32 | | +--rw active? boolean
| | | +--ro hop-type? te-hop-type | | +--rw pce-initiated? boolean
| | +--:(label) | | | {pce-initiated}?
| | | +--ro label-hop | | +--rw include-db-ver? boolean
| | | +--ro value? | | | {stateful-sync-opt}?
| | | rt-types:generalized-label | | +--rw trigger-resync? boolean
| | +--:(sid) | | | {stateful-sync-opt}?
| | +--ro sid-hop | | +--rw trigger-initial-sync? boolean
| | +--ro sid? | | | {stateful-sync-opt}?
| | rt-types:generalized-label | | +--rw incremental-sync? boolean
| +--ro pcc-original? | | {stateful-sync-opt}?
| | -> /pcep/entity/peers/peer/addr | +--rw sr {sr}?
| +--ro req-id? uint32 | +--rw enabled? boolean
| +--ro retrieved? boolean +--rw pce-info
| +--ro pcc-retrieved? | +--rw scope
| | -> /pcep/entity/peers/peer/addr | | +--rw intra-area-scope? boolean
| +--ro creation-time? yang:timestamp | | +--rw intra-area-pref? uint8
| +--ro discard-time? uint32 | | +--rw inter-area-scope? boolean
| +--ro reuse-time? uint32 | | +--rw inter-area-scope-default? boolean
+--rw peers | | +--rw inter-area-pref? uint8
+--rw peer* [addr] | | +--rw inter-as-scope? boolean
+--rw addr inet:ip-address | | +--rw inter-as-scope-default? boolean
+--ro role? pcep-role | | +--rw inter-as-pref? uint8
+--rw description? string | | +--rw inter-layer-scope? boolean
+--rw domain | | +--rw inter-layer-pref? uint8
| +--rw domain* [domain-type domain] | +--rw neigh-domains
| +--rw domain-type domain-type | +--rw domain* [domain-type domain]
| +--rw domain domain | +--rw domain-type domain-type
+--rw capability | +--rw domain domain
| +--rw gmpls? boolean +--rw delegation-pref? uint8 {stateful}?
| | {gmpls}? +--rw auth
| +--rw bi-dir? boolean | +--rw (auth-type-selection)?
| +--rw diverse? boolean | +--:(auth-key-chain)
| +--rw load-balance? boolean | | +--rw key-chain?
| +--rw synchronize? boolean {svec}? | | key-chain:key-chain-ref
| +--rw objective-function? boolean | +--:(auth-key)
| | {objective-function}? | | +--rw crypto-algorithm identityref
| +--rw add-path-constraint? boolean | | +--rw key-string
| +--rw prioritization? boolean | | +--rw (key-string-style)?
| +--rw multi-request? boolean | | +--:(keystring)
| +--rw gco? boolean {gco}? | | | +--rw keystring? string
| +--rw p2mp? boolean {p2mp}? | | +--:(hexadecimal)
| +--rw stateful {stateful}? | | {key-chain:hex-key-string}?
| | +--rw enabled? boolean | | +--rw hexadecimal-string?
| | +--rw active? boolean | | yang:hex-string
| | +--rw pce-initiated? boolean | +--:(auth-tls) {tls}?
| | | {pce-initiated}? | +--rw (role)?
| | +--rw include-db-ver? boolean | +--:(server)
| | | {stateful-sync-opt}? | | +--rw tls-server
| | +--rw trigger-resync? boolean | | +--rw certificates
| | | {stateful-sync-opt}? | | | +--rw certificate* [name]
| | +--rw trigger-initial-sync? boolean | | | +--rw name leafref
| | | {stateful-sync-opt}? | | +--rw client-auth
| | +--rw incremental-sync? boolean | | | +--rw trusted-ca-certs? leafref
| | {stateful-sync-opt}? | | | +--rw trusted-client-certs? leafref
| +--rw sr {sr}? | | +--rw hello-params
| +--rw enabled? boolean | | {tls-server-hello-params-config}?
+--rw pce-info | | +--rw tls-versions
| +--rw scope | | | +--rw tls-version*
| | +--rw intra-area-scope? boolean | | | identityref
| | +--rw intra-area-pref? uint8 | | +--rw cipher-suites
| | +--rw inter-area-scope? boolean | | +--rw cipher-suite*
| | +--rw inter-area-scope-default? boolean | | identityref
| | +--rw inter-area-pref? uint8 | +--:(client)
| | +--rw inter-as-scope? boolean | +--rw tls-client
| | +--rw inter-as-scope-default? boolean | +--rw server-auth
| | +--rw inter-as-pref? uint8 | | +--rw trusted-ca-certs? leafref
| | +--rw inter-layer-scope? boolean | | +--rw trusted-server-certs? leafref
| | +--rw inter-layer-pref? uint8 | +--rw client-auth
| +--rw neigh-domains | | +--rw (auth-type)?
| +--rw domain* [domain-type domain] | | +--:(certificate)
| +--rw domain-type domain-type | | +--rw certificate? leafref
| +--rw domain domain | +--rw hello-params
+--rw delegation-pref? uint8 {stateful}? | {tls-client-hello-params-config}?
+--rw (auth-type-selection)? | +--rw tls-versions
| +--:(auth-key-chain) | | +--rw tls-version*
| | +--rw key-chain? | | identityref
| | key-chain:key-chain-ref | +--rw cipher-suites
| +--:(auth-key) | +--rw cipher-suite*
| | +--rw crypto-algorithm identityref | identityref
| | +--rw key-string +--ro discontinuity-time? yang:timestamp
| | +--rw (key-string-style)? +--ro initiate-session? boolean
| | +--:(keystring) +--ro session-exists? boolean
| | | +--rw keystring? string +--ro session-up-time? yang:timestamp
| | +--:(hexadecimal) +--ro session-fail-time? yang:timestamp
| | {key-chain:hex-key-string}? +--ro session-fail-up-time? yang:timestamp
| | +--rw hexadecimal-string? +--ro sessions
| | yang:hex-string +--ro session* [initiator]
| +--:(auth-tls) {tls}? +--ro initiator pcep-initiator
| +--rw tls-pce +--ro role?
| | +--rw certificates | -> /pcep/entity/role
| | | +--rw certificate* [name] +--ro state-last-change? yang:timestamp
| | | +--rw name leafref +--ro state? pcep-sess-state
| | +--rw client-auth +--ro session-creation? yang:timestamp
| | | +--rw trusted-ca-certs? leafref +--ro connect-retry? yang:counter32
| | | +--rw trusted-client-certs? leafref +--ro local-id? uint32
| | +--rw hello-params +--ro remote-id? uint32
| | {tls-server-hello-params-config}? +--ro keepalive-timer? uint32
| | +--rw tls-versions +--ro peer-keepalive-timer? uint32
| | | +--rw tls-version* identityref +--ro dead-timer? uint32
| | +--rw cipher-suites +--ro peer-dead-timer? uint32
| | +--rw cipher-suite* identityref +--ro ka-hold-time-rem? uint32
| +--rw tls-pcc +--ro overloaded? boolean
| +--rw server-auth +--ro overload-time? uint32
| | +--rw trusted-ca-certs? leafref +--ro peer-overloaded? boolean
| | +--rw trusted-server-certs? leafref +--ro peer-overload-time? uint32
| +--rw client-auth +--ro lspdb-sync? sync-state
| | +--rw (auth-type)? | {stateful}?
| | +--:(certificate) +--ro recv-db-ver? uint64
| | +--rw certificate? leafref | {stateful,stateful-sync-opt}?
| +--rw hello-params +--ro of-list {objective-function}?
| {tls-client-hello-params-config}? | +--ro objective-function* [of]
| +--rw tls-versions | +--ro of objective-function
| | +--rw tls-version* identityref +--ro speaker-entity-id? string
| +--rw cipher-suites | {stateful-sync-opt}?
| +--rw cipher-suite* identityref +--ro discontinuity-time? yang:timestamp
+--ro discontinuity-time? yang:timestamp
+--ro initiate-session? boolean
+--ro session-exists? boolean
+--ro session-up-time? yang:timestamp
+--ro session-fail-time? yang:timestamp
+--ro session-fail-up-time? yang:timestamp
+--ro sessions
+--ro session* [initiator]
+--ro initiator pcep-initiator
+--ro role?
| -> /pcep/entity/role
+--ro state-last-change? yang:timestamp
+--ro state? pcep-sess-state
+--ro session-creation? yang:timestamp
+--ro connect-retry? yang:counter32
+--ro local-id? uint32
+--ro remote-id? uint32
+--ro keepalive-timer? uint32
+--ro peer-keepalive-timer? uint32
+--ro dead-timer? uint32
+--ro peer-dead-timer? uint32
+--ro ka-hold-time-rem? uint32
+--ro overload-time? uint32
+--ro peer-overloaded? boolean
+--ro peer-overload-time? uint32
+--ro lspdb-sync? sync-state
| {stateful}?
+--ro recv-db-ver? uint64
| {stateful,stateful-sync-opt}?
+--ro of-list {objective-function}?
| +--ro objective-function* [of]
| +--ro of objective-function
+--ro speaker-entity-id? string
| {stateful-sync-opt}?
+--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/entity/peers/peer/addr +---w pcc? -> /pcep/entity/peers/peer/addr
notifications: notifications:
+---n pcep-session-up +---n pcep-session-up
| +--ro peer-addr? -> /pcep/entity/peers/peer/addr | +--ro peer-addr? -> /pcep/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? -> /pcep/entity/peers/peer/addr | +--ro peer-addr? -> /pcep/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? -> /pcep/entity/peers/peer/addr | +--ro peer-addr? -> /pcep/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/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? -> /pcep/entity/peers/peer/addr | +--ro peer-addr? -> /pcep/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? -> /pcep/entity/peers/peer/addr +--ro peer-addr? -> /pcep/entity/peers/peer/addr
+--ro peer-overloaded? boolean +--ro peer-overloaded? boolean
5.1. The Entity 5.1. The Entity
The PCEP yang module may contain status information for the local The PCEP yang module may contain status information for the local
PCEP entity. PCEP entity.
The entity has an IP address (using ietf-inet-types [RFC6991]) and a The entity has an IP address (using ietf-inet-types [RFC6991]) and a
"role" leaf (the local entity PCEP role) as mandatory. "role" leaf (the local entity PCEP role) as mandatory.
Note that, the PCEP MIB module [RFC7420] uses an entity list and a Note that, the PCEP MIB module [RFC7420] uses an entity list and a
skipping to change at page 21, line 13 skipping to change at page 20, line 22
PCEP session is started.. PCEP session is started..
10. PCEP YANG Modules 10. PCEP YANG Modules
10.1. ietf-pcep module 10.1. ietf-pcep module
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the RFC Ed.: In this section, replace all occurrences of 'XXXX' with the
actual RFC number and all occurrences of the revision date below with actual RFC number and all occurrences of the revision date below with
the date of RFC publication (and remove this note). the date of RFC publication (and remove this note).
<CODE BEGINS> file "ietf-pcep@2017-06-29.yang" <CODE BEGINS> file "ietf-pcep@2017-06-30.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";
} }
skipping to change at page 22, line 24 skipping to change at page 21, line 35
WG Chair: Jonathan Hardwick WG Chair: Jonathan Hardwick
<mailto:Jonathan.Hardwick@metaswitch.com> <mailto:Jonathan.Hardwick@metaswitch.com>
Editor: Dhruv Dhody Editor: Dhruv Dhody
<mailto:dhruv.ietf@gmail.com>"; <mailto:dhruv.ietf@gmail.com>";
description description
"The YANG module defines a generic configuration and "The YANG module defines a generic configuration and
operational model for PCEP common across all of the operational model for PCEP common across all of the
vendor implementations."; vendor implementations.";
revision 2017-06-29 { revision 2017-06-30 {
description "Initial revision."; description "Initial revision.";
reference reference
"RFC XXXX: A YANG Data Model for Path Computation "RFC XXXX: A YANG Data Model for Path Computation
Element Communications Protocol Element Communications Protocol
(PCEP)"; (PCEP)";
} }
/* /*
* Identities * Identities
*/ */
skipping to change at page 50, line 38 skipping to change at page 49, line 49
"If set, a PCC reports LSPs that are not "If set, a PCC reports LSPs that are not
controlled by any PCE (for example, LSPs controlled by any PCE (for example, LSPs
that are statically configured at the that are statically configured at the
PCC). "; PCC). ";
} }
} }
grouping authentication { grouping authentication {
description "Authentication Information"; description "Authentication Information";
choice auth-type-selection { container auth {
description description
"Options for expressing authentication setting."; "The Authentication options";
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;
} choice auth-type-selection {
mandatory true; description
description "Options for expressing authentication setting.";
"Cryptographic algorithm associated with key."; case auth-key-chain {
} leaf key-chain {
container key-string { type key-chain:key-chain-ref;
description description
"The key string."; "key-chain name.";
nacm:default-deny-all; }
choice key-string-style { }
description case auth-key {
"Key string styles"; leaf crypto-algorithm {
case keystring { type identityref {
leaf keystring { base key-chain:crypto-algorithm;
type string;
description
"Key string in ASCII format.";
} }
mandatory true;
description
"Cryptographic algorithm associated with key.";
} }
case hexadecimal { container key-string {
if-feature "key-chain:hex-key-string"; description
leaf hexadecimal-string { "The key string.";
type yang:hex-string; nacm:default-deny-all;
choice key-string-style {
description description
"Key in hexadecimal string format. When "Key string styles";
compared to ASCII, specification in case keystring {
hexadecimal affords greater key leaf keystring {
entropy with the same number of type string;
octets. Additionally, it discourages description
usage of well-known words or "Key string in ASCII format.";
numbers."; }
}
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-pce {
when "../role = 'pce' "
+ "or ../role = 'pcc-and-pce'" {
description
"Valid for PCEP Peer as PCE/PCC-PCE";
}
uses tls-server:tls-server-grouping { }
description
"Server TLS information.";
}
description
"TLS related information";
} }
case auth-tls {
container tls-pcc { if-feature tls;
when "../role = 'pcc' " choice role{
+ "or ../role = 'pcc-and-pce'" {
description
"Valid for PCEP Peer as PCC/PCC_PCE";
}
uses tls-client:tls-client-grouping {
description description
"Client TLS information."; "The role of the local entity";
case server {
container tls-server {
uses tls-server:tls-server-grouping {
description
"Server TLS information.";
}
description
"TLS related information";
}
}
case client{
container tls-client {
uses tls-client:tls-client-grouping {
description
"Client TLS information.";
}
description
"TLS related information";
}
}
} }
description
"TLS related information";
} }
} }
} }
} }
grouping path-key { grouping path-key {
description "Path-key related information"; description "Path-key related information";
leaf enabled{ leaf enabled{
type boolean; type boolean;
description description
skipping to change at page 61, line 42 skipping to change at page 61, line 4
"(. = 0)))" { "(. = 0)))" {
error-message error-message
"Invalid Keepalive hold "Invalid Keepalive hold
time remaining"; time remaining";
description description
"If state is tcp-pending "If state is tcp-pending
or open-wait then this or open-wait then this
field is not used and field is not used and
MUST be set to zero."; MUST be set to zero.";
} }
description description
"The keep alive hold time "The keep alive hold time
remaining for this session."; remaining for this session.";
} }
leaf overloaded {
type boolean;
description
"If the local PCEP entity has
informed the peer that it is
currently overloaded, then
this is set to true.
Otherwise, it is set to
false.";
}
leaf overload-time { leaf overload-time {
type uint32; type uint32;
units "seconds"; units "seconds";
must "((../overloaded = true()) " + must "((../overloaded = true()) " +
"or ((../overloaded != true()) " + "or ((../overloaded != true()) " +
"and (. = 0)))" { "and (. = 0)))" {
error-message error-message
"Invalid overload-time"; "Invalid overload-time";
description description
"This field is only used "This field is only used
skipping to change at page 67, line 24 skipping to change at page 66, line 43
"Path-Key Configuration"; "Path-Key Configuration";
} }
description description
"Path-Key Configuration"; "Path-Key Configuration";
} }
description description
"The Local PCE Entity PCE information"; "The Local PCE Entity PCE information";
} }
uses authentication {
description
"Local PCEP entity authentication information";
}
uses pcep-entity-info { uses pcep-entity-info {
description description
"The configuration related to the PCEP "The configuration related to the PCEP
entity."; entity.";
} }
leaf pcep-notification-max-rate { leaf pcep-notification-max-rate {
type uint32; type uint32;
mandatory true; mandatory true;
description description
skipping to change at page 70, line 37 skipping to change at page 70, line 4
description description
"The peer configured for the entity. "The peer configured for the entity.
(remote PCE)"; (remote PCE)";
leaf addr { leaf addr {
type inet:ip-address; type inet:ip-address;
description description
"The local Internet address of this "The local Internet address of this
PCEP peer."; PCEP peer.";
} }
leaf role { leaf role {
type pcep-role; type pcep-role;
config false;
description description
"The role of the PCEP Peer. "The role of the PCEP Peer.
Takes one of the following values. Takes one of the following values.
- unknown(0): this PCEP peer role is not - unknown(0): this PCEP peer role is not
known. known.
- pcc(1): this PCEP peer is a PCC. - pcc(1): this PCEP peer is a PCC.
- pce(2): this PCEP peer is a PCE. - pce(2): this PCEP peer is a PCE.
- pcc-and-pce(3): this PCEP peer - pcc-and-pce(3): this PCEP peer
is both a PCC and a PCE."; is both a PCC and a PCE.";
} }
skipping to change at page 71, line 20 skipping to change at page 70, line 34
description description
"PCE Peer information"; "PCE Peer information";
} }
container pce-info { container pce-info {
when "../role = 'pce'" + when "../role = 'pce'" +
"or " + "or " +
"../role = 'pcc-and-pce'" "../role = 'pcc-and-pce'"
{ {
description description
"When the peer is PCE"; "Valid at PCE";
} }
uses pce-info { uses pce-info {
description description
"PCE Peer information"; "PCE Peer information";
} }
description description
"The PCE Peer information"; "The PCE Peer information";
} }
skipping to change at page 76, line 38 skipping to change at page 76, line 4
rpc trigger-resync { rpc trigger-resync {
if-feature stateful; if-feature stateful;
if-feature stateful-sync-opt; if-feature stateful-sync-opt;
description description
"Trigger the resyncrinization at the PCE"; "Trigger the resyncrinization at the PCE";
input { input {
leaf pcc { leaf pcc {
type leafref { type leafref {
path "/pcep/entity/peers/peer/addr"; path "/pcep/entity/peers/peer/addr";
} }
description description
"The IP address to identify the PCC. The state "The IP address to identify the PCC. The state
syncronization is re-triggered for all LSPs from syncronization is re-triggered for all LSPs from
the PCC. The rpc on the PCC will be ignored."; the PCC. The rpc on the PCC will be ignored.";
} }
} }
}//rpc }//rpc
}//module }//module
<CODE ENDS> <CODE ENDS>
10.2. ietf-pcep-stats module 10.2. ietf-pcep-stats module
<CODE BEGINS> file "ietf-pcep-stats@2017-06-29.yang" <CODE BEGINS> file "ietf-pcep-stats@2017-06-30.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 77, line 41 skipping to change at page 77, line 9
<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-06-29 { revision 2017-06-30 {
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.";
 End of changes. 34 change blocks. 
496 lines changed or deleted 462 lines changed or added

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