A YANG Data Model for the Path Computation Element Communication Protocol (PCEP)
Extracted elements (25)
Segment Routing in the IPv6 data plane (SRv6) is explicitly out of scope for this document; a separate YANG module (YANG-PCEP-SRv6) is referenced for PCEP-SRv6 management. This keeps the base module focused on MPLS-based SR (RFC 8664).
The session list uses 'initiator' (local vs. remote) as the key rather than a single entry per peer because RFC 5440 allows two sessions to coexist transiently during establishment — one initiated locally and one by the remote — until one reaches the active state and the other is discarded.
Timer names in the YANG module use hyphens (e.g., dead-timer, keepalive-timer) in contrast to the camelCase used in the PCEP protocol specification RFC 5440 (e.g., DeadTimer), following standard YANG identifier conventions.
The YANG modules conform to NMDA (RFC 8342); the origin of data is indicated using the origin metadata annotation, allowing management clients to distinguish configured data from operational state derived from the running protocol.
The YANG notifications cover the same events as the PCEP MIB (RFC 7420) notifications, and Appendix D discusses the relationship with the MIB in detail, providing a migration path from SNMP-based to YANG/NETCONF-based PCEP management.
TLS 1.2 (RFC 5246) remains in common use for PCEP and can still be enabled via the 'tls12' YANG feature even though it is marked with status 'deprecated' in RFC 9645. RFC 9645 recommends TLS 1.3 only; early data (0-RTT) is disallowed when using TLS 1.3 with PCEP.
An implementation MAY choose to discard peer information if and only if no PCEP session exists for the corresponding peer, to limit the quantity of stored state.
If the reset-all mechanism (reset-pcep-statistics-all RPC) is not supported, implementations must reset PCEP statistics by invoking the 'reset-statistics' action for each individual peer and session.
Six YANG notifications are defined: pcep-session-up, pcep-session-down, pcep-session-local-overload, pcep-session-local-overload-clear, pcep-session-peer-overload, and pcep-session-peer-overload-clear. These are semantic equivalents of the PCEP MIB (RFC 7420) notifications.
The auth grouping offers three mutually exclusive authentication choices: auth-key-chain (referencing an ietf-key-chain key-chain-ref), auth-key (inline key with identityref crypto-algorithm plus keystring or hexadecimal-string), and auth-tls (RFC 9645 TLS server or client groupings). The same grouping is reused for both the entity and per-peer configuration.
The capability bits leaf encodes PCEP speaker capabilities including gmpls, bi-dir, diverse, load-balance, synchronize, objective-function, add-path-constraint, prioritization, multi-request, global-concurrent, p2mp, active/passive stateful, flowspec, tcp-ao, and tls bits, aligning with the IANA IGP PCE Capability Flags registry.
The 'ietf-pcep-stats' YANG module augments 'ietf-pcep' at the peer and session levels to add counters for PCReq, PCRep, PCErr, PCNtf, keepalive, unknown, and corrupt messages, plus PCE response time (avg/lwm/hwm) and stateful/path-key-specific counters. It provides a per-peer/session reset-statistics action and a global reset-pcep-statistics-all RPC.
The 'ietf-pcep' YANG module (namespace 'urn:ietf:params:xml:ns:yang:ietf-pcep') defines a generic configuration and operational data model for PCEP, covering the local entity, peers, sessions, notifications, and RPCs. It conforms to YANG 1.1 (RFC 7950) and NMDA (RFC 8342).
The LSP-DB container (read-only, gated by the 'stateful' feature) maintains operational state for all LSPs at a stateful PCE, keyed by PLSP-ID, PCC IP address, and LSP-ID. Each entry includes delegation state, initiation state, operational-state (down/up/active/going-down/going-up), symbolic path name, last error, path setup type, and association membership.
The pce-info container captures PCE auto-discovery attributes: path-scope bits (intra-area, inter-area, inter-as, inter-layer scopes and defaults), preference fields (intra-area-pref, inter-area-pref, inter-as-pref, inter-layer-pref, range 0–7), neighbor-domains, and path-key configuration (enabled, discard-timer, reuse-time, pce-id).
The PCEP entity container models the local PCEP speaker with mandatory 'addr' (ip-address-no-zone) and 'role' (pcc, pce, pcc-and-pce, or unknown) leaves, plus sub-trees for capabilities, auth, pce-info, timer parameters (keepalive-timer, dead-timer, connect-timer, etc.), and optional stateful, SR-MPLS, TLS, and H-PCE features.
The peer list is a flat read-write list keyed by IP address that tracks both explicitly configured and dynamically learned peers (e.g., via IGP PCE discovery). Entries persist even when no session exists, and per-peer statistics are aggregated across all successive sessions to that peer.
The session list is a read-only flat list keyed by 'initiator' (local or remote), enabling two sessions to transiently coexist for the same peer during the establishment window. Session-level statistics apply only to the current session, distinct from the aggregate peer-level statistics.
The 'trigger-resync' RPC (gated by features stateful and sync-opt) accepts a PCC address as input and triggers an LSP-DB state resynchronization at the PCE for a sanity check with that specific PCC, as defined in RFC 8232.
IANA registered two YANG modules: 'ietf-pcep' under namespace 'urn:ietf:params:xml:ns:yang:ietf-pcep' and 'ietf-pcep-stats' under 'urn:ietf:params:xml:ns:yang:ietf-pcep-stats' in the IANA XML Registry, with RFC 9826 as the reference.
PCEP speakers should use TLS (PCEPS per RFC 8253) for transport security, configured via the auth-tls choice; the StartTLS procedure completes identity verification before the PCEP session is established. A single PCEP speaker may act as both TLS client (PCC role) and TLS server (PCE role) depending on session context.
The YANG module imports ietf-netconf-acm (RFC 8341) to apply NACM annotations; security-sensitive nodes such as authentication keys and TLS configuration carry nacm:default-deny-all or nacm:default-deny-write to prevent unauthorized access via NETCONF/RESTCONF management interfaces.
The 'oper-status' typedef enumerates six operational states for the PCEP entity: oper-status-up(1), oper-status-down(2), oper-status-going-up(3), oper-status-going-down(4), oper-status-failed(5, will recover), and oper-status-failed-perm(6, requires operator intervention).
The 'sess-state' typedef enumerates four PCEP session states: tcp-pending(1), open-wait(2), keep-wait(3), and session-up(4). The idle state is excluded because session list entries do not exist in the idle state; transitions follow the session establishment procedure defined in RFC 5440.
The 'sync-state' typedef tracks LSP-DB state synchronization with three values: pending(0, not started), ongoing(1), and finished(2), as defined for stateful PCE synchronization in RFC 8231. The 'lspdb-sync' leaf in the session node uses this type.