| Internet-Draft | PCEP-SR-YANG | May 2026 |
| Li, et al. | Expires 14 November 2026 | [Page] |
This document augments a YANG data model for the management of Path Computation Element Communications Protocol (PCEP) for communications between a Path Computation Client (PCC) and a Path Computation Element (PCE), or between two PCEs in support for Segment Routing in IPv6 (SRv6) and SR Policy. The data model includes configuration data and state data (status information and counters for the collection of statistics).¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 14 November 2026.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
The Path Computation Element (PCE) defined in [RFC4655] is an entity that is capable of computing a network path or route based on a network graph, and applying computational constraints. A Path Computation Client (PCC) may make requests to a PCE for paths to be computed.¶
PCEP is the communication protocol between a PCC and PCE and is defined in [RFC5440]. PCEP interactions include path computation requests and path computation replies, as well as notifications of specific states related to the use of a PCE in the context of Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) Traffic Engineering (TE). [RFC8231] specifies extensions to PCEP to enable stateful control of MPLS TE LSPs.¶
[RFC9603] extends [RFC8664] to support SR for IPv6 data plane.¶
[RFC9826] defines a YANG [RFC7950] data model for the management of PCEP speakers. This document contains a specification of the PCEP-SRv6 YANG module, "ietf-pcep-srv6" which provides the PCEP-SRv6 [RFC9603] data model. This document also contains the PCEP SR Policy YANG module, "ietf-pcep-srpolicy" which provides a reference to SR Policies [RFC9256].¶
The PCEP operational state is included in the same tree as the PCEP configuration, consistent with Network Management Datastore Architecture (NMDA) [RFC8342]. The origin of the data is indicated as per the origin metadata annotation.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
This document also uses the following terms defined in [RFC7420]:¶
PCEP entity: a local PCEP speaker.¶
PCEP peer: a remote PCEP speaker.¶
PCEP speaker: where it is not necessary to distinguish between local and remote.¶
Further, this document also uses the following terms defined in [RFC8231] :¶
Stateful PCE, Passive Stateful PCE, Active Stateful PCE.¶
Delegation, Revocation, Redelegation.¶
LSP State Report, Path Computation Report message (PCRpt).¶
LSP State Update, Path Computation Update message (PCUpd).¶
PCE-initiated LSP, Path Computation LSP Initiate Message (PCInitiate).¶
Path Setup Type (PST).¶
Segment Routing (SR).¶
Segment Routing in IPv6 (SRv6).¶
SR Policy.¶
A simplified graphical representation of the data model is used in this document. The meaning of the symbols in these diagrams is defined in [RFC8340].¶
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 context in which the YANG module each name is defined. Otherwise, names are prefixed using the standard prefix associated with the corresponding YANG module, as shown in Table 1.¶
| Prefix | YANG module | Reference |
|---|---|---|
| inet | ietf-inet-types | [RFC6991] |
| te-types | ietf-te-types | [RFC8776] |
| iana-msd-types | iana-msd-types | [RFC9702] |
| pcep | ietf-pcep | [RFC9826] |
| srv6-types | ietf-srv6-types | [I-D.ietf-spring-srv6-yang] |
| sr-policy-types | ietf-sr-policy-types | [I-D.ietf-spring-sr-policy-yang] |
The following additional documents are referenced in the model defined in this document -¶
| Title | Reference |
|---|---|
| Path Computation Element Communication Protocol (PCEP) Extensions for IPv6 Segment Routing | [RFC9603] |
| Carrying Binding Label/Segment Identifier (SID) in PCE-based Networks | [RFC9604] |
| Segment Routing Policy Architecture | [RFC9256] |
| YANG Data Model for Maximum Segment Identifier (SID) Depth Types and MPLS Maximum SID Depth | [RFC9702] |
| PCEP Extensions for Signaling Multipath Information | [I-D.ietf-pce-multipath] |
| PCEP extension to support Segment Routing Policy Candidate Paths | [I-D.ietf-pce-segment-routing-policy-cp] |
| Carrying SR-Algorithm in Path Computation Element Communication Protocol (PCEP) | [I-D.ietf-pce-sid-algo] |
[I-D.ietf-pce-multipath] defines a mechanism to encode multiple paths for a single set of objectives and constraints. This is a generic PCEP mechanism, not specific to any path setup type or dataplane but the key usecase is SR.¶
Further discussion is needed on how to model it in PCEP YANG.¶
The PCEP-SRv6 YANG module defined in this document has all the common building blocks for the PCEP-SRv6 extension. The model augments PCEP SRv6 capabilities including support for NAI, Algorithm, MSD at the Entity and peer level. The SID structure is added at the entity level.¶
module: ietf-pcep-srv6
augment /pcep:pcep/pcep:entity/pcep:capabilities:
+--rw srv6 {srv6}?
| +--rw enabled? boolean
| +--rw nai? boolean
| +--rw algo? boolean {algo}?
| +--ro srv6-msd* [msd-type]
| +--ro msd-type identityref
| +--ro msd-value? uint8
+--rw sid-str {sid-str}?
+--rw lb? uint8
+--rw ln? uint8
+--rw fn? uint8
+--rw an? uint8
augment /pcep:pcep/pcep:entity/pcep:peers/pcep:peer
/pcep:capabilities:
+--rw srv6 {srv6}?
+--rw enabled? boolean
+--rw nai? boolean
+--rw algo? boolean {algo}?
+--ro srv6-msd* [msd-type]
+--ro msd-type identityref
+--ro msd-value? uint8
¶
The PCEP-SRPolicy YANG module defined in this document has all the common building blocks for the PCEP-SR Policy extension. The model augments the LSP in the LSPDB to have information refering to the SR Policy and the candidate path. Further, the SR segment list information is added at the LSP in the LSP-DB.¶
module: ietf-pcep-srpolicy
augment /pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp:
+--ro sr-policy
+--ro headend? inet:ip-address-no-zone
+--ro color? sr-policy-types:color-type
+--ro endpoint? inet:ip-address-no-zone
+--ro name? sr-policy-types:name-type
+--ro cp
+--ro protocol-origin? identityref
+--ro originator? string
+--ro discriminator? uint32
+--ro name? string
augment /pcep:pcep/pcep:entity/pcep:capabilities
/pcep:sr-mpls:
+--rw algo? boolean {algo}?
augment /pcep:pcep/pcep:entity/pcep:peers/pcep:peer
/pcep:capabilities/pcep:sr-mpls:
+--rw algo? boolean {algo}?
augment /pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp:
+--ro sr
+--ro segment-list* [path-id]
+--ro path-id uint32
+--ro segment* [index]
+--ro index uint32
+--ro sid-value?
| sr-policy-types:sid-value-type
+--ro nai-type?
| identityref
+--ro (nai)?
| +--:(ipv4-node-id)
| | +--ro ipv4-node-id
| | inet:ipv4-address-no-zone
| +--:(ipv6-node-id)
| | +--ro ipv6-node-id
| | inet:ipv6-address-no-zone
| +--:(ipv4-adjacency)
| | +--ro ipv4-adjacency
| | +--ro local
| | | inet:ipv4-address-no-zone
| | +--ro remote
| | inet:ipv4-address-no-zone
| +--:(ipv6-adjacency-global)
| | +--ro ipv6-adjacency-global
| | +--ro local
| | | inet:ipv6-address-no-zone
| | +--ro remote
| | inet:ipv6-address-no-zone
| +--:(unnumbered-adjacency-ipv4-node-id)
| | +--ro unnumbered-adjacency
| | +--ro local
| | | +--ro node-id
| | | | inet:ipv4-address-no-zone
| | | +--ro if-id uint32
| | +--ro remote
| | +--ro node-id
| | | inet:ipv4-address-no-zone
| | +--ro if-id uint32
| +--:(ipv6-adjacency-linklocal)
| | +--ro ipv6-adjacency-linklocal
| | +--ro local
| | | +--ro global-address
| | | | inet:ipv6-address-no-zone
| | | +--ro if-id uint32
| | +--ro remote
| | +--ro global-address
| | | inet:ipv6-address-no-zone
| | +--ro if-id uint32
| +--:(absent)
+--ro algorithm? uint8
+--ro srv6 {pcep-srv6:srv6}?
+--ro sid-str {sid-str}?
| +--ro lb? uint8
| +--ro ln? uint8
| +--ro fn? uint8
| +--ro an? uint8
+--ro endpoint-behavior? identityref
¶
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the actual RFC number and all occurrences of the revision date below with the date of RFC publication (and remove this note).¶
<CODE BEGINS> file "ietf-pcep-srv6@2026-05-03.yang"
module ietf-pcep-srv6 {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-pcep-srv6";
prefix pcep-srv6;
import ietf-te-types {
prefix te-types;
reference
"RFC 8776: Common YANG Data Types for Traffic Engineering";
}
import iana-msd-types {
prefix iana-msd-types;
reference
"RFC 9702: YANG Data Model for Maximum Segment Identifier (SID)
Depth Types and MPLS Maximum SID Depth";
}
import ietf-pcep {
prefix pcep;
reference
"RFC 9826: A YANG Data Model for Path
Computation Element Communications Protocol (PCEP)";
}
organization
"IETF PCE (Path Computation Element) Working Group";
contact
"WG Web: <https://datatracker.ietf.org/wg/pce/>
WG List: <mailto:pce@ietf.org>
Editor: Cheng Li
<mailto:c.l@huawei.com>
Shuping Peng
<mailto:pengshuping@huawei.com>";
description
"The YANG module augments the Path Computation Element
Communications Protocol (PCEP) YANG operational model
with Segment Routing in IPv6 (SRv6).
Copyright (c) 2026 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Revised BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see the
RFC itself for full legal notices.";
revision 2026-05-03 {
description
"Initial revision.";
reference
"RFC XXXX: A YANG Data Model for Segment Routing (SR) Policy
and SRv6 support in Path Computation Element Communications
Protocol (PCEP)";
}
/* Features */
feature srv6 {
description
"Support Segment Routing in IPv6 (SRv6) for PCE.";
reference
"RFC 9603: Path Computation Element Communication Protocol
(PCEP) Extensions for IPv6 Segment Routing";
}
feature bsid {
description
"Support Binding SID for PCE.";
reference
"RFC 9604: Carrying Binding Label/SID in PCE-Based Networks";
}
feature sid-str {
description
"Support for SID Structure";
reference
"RFC 9603: Path Computation Element Communication Protocol
(PCEP) Extensions for IPv6 Segment Routing";
}
feature algo {
description
"Support for SR Algorithm";
reference
"I-D.ietf-pce-sid-algo: Carrying SR-Algorithm in Path
Computation Element Communication Protocol (PCEP)";
}
/* Identity */
identity path-setup-srv6 {
if-feature "srv6";
base te-types:path-signaling-type;
description
"SRv6 path setup type";
}
/* Groupings */
grouping srv6-msd {
description
"SRv6 MSD";
leaf msd-type {
type identityref {
base iana-msd-types:msd-base-srh;
}
description
"SRv6 Maximum Segment Depth (MSD) Type";
reference
"RFC 9702: YANG Data Model for Maximum Segment Identifier (SID)
Depth Types and MPLS Maximum SID Depth";
}
leaf msd-value {
type uint8;
description
"SRv6 MSD value for the type";
}
reference
"RFC 9603: Path Computation Element Communication Protocol
(PCEP) Extensions for IPv6 Segment Routing";
}
grouping srv6 {
description
"SRv6";
container srv6 {
if-feature "srv6";
description
"If SRv6 is supported";
leaf enabled {
type boolean;
description
"Enabled or Disabled; set to true when
Enabled";
}
leaf nai {
type boolean;
default "false";
description
"True indicates capability to resolve Node or
Adjacency Identifier (NAI) to SRv6 Segment
Identifier (SID)";
}
leaf algo {
if-feature "algo";
type boolean;
default "false";
description
"Indicates capability for SRv6 Algorithm";
}
list srv6-msd {
key "msd-type";
config false;
description
"list of SRv6 MSD";
uses srv6-msd;
}
}
}
grouping sid-str {
description
"The default SID Structure";
container sid-str {
if-feature "sid-str";
description
"The default SID Structure";
leaf lb {
type uint8;
description
"SRv6 SID Locator Block length in bits";
}
leaf ln {
type uint8;
description
"SRv6 SID Locator Node length in bits";
}
leaf fn {
type uint8;
description
"SRv6 SID Function length in bits";
}
leaf an {
type uint8;
description
"SRv6 SID Arguments length in bits";
}
}
}
/*
* Augment modules to add SRv6
*/
augment "/pcep:pcep/pcep:entity/pcep:capabilities" {
description
"Augmenting SRv6 capabilities";
uses srv6;
uses sid-str;
}
augment "/pcep:pcep/pcep:entity/pcep:peers/pcep:peer"
+ "/pcep:capabilities" {
description
"Augmenting SRv6 capabilities for peer";
uses srv6;
}
}
<CODE ENDS>¶
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the actual RFC number and all occurrences of the revision date below with the date of RFC publication (and remove this note).¶
<CODE BEGINS> file "ietf-pcep-srpolicy@2026-05-03.yang"
module ietf-pcep-srpolicy {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-pcep-srpolicy";
prefix pcep-srp;
import ietf-inet-types {
prefix inet;
reference
"RFC 6991: Common YANG Data Types";
}
import ietf-te-types {
prefix te-types;
reference
"RFC 8776: Common YANG Data Types for Traffic Engineering";
}
import ietf-pcep {
prefix pcep;
reference
"RFC 9826: A YANG Data Model for Path
Computation Element Communications Protocol (PCEP)";
}
import ietf-sr-policy-types {
prefix sr-policy-types;
reference
"I-D.ietf-spring-sr-policy-yang: YANG Data Model for
Segment Routing Policy";
}
import ietf-srv6-types {
prefix srv6-types;
reference
"I-D.ietf-spring-srv6-yang: YANG Data Model for SRv6
Base and Static";
}
import ietf-pcep-srv6 {
prefix pcep-srv6;
reference
"I-D.ietf-pce-pcep-srv6-yang: A YANG Data Model for
Segment Routing (SR) Policy and SR in IPv6 (SRv6)
support in Path Computation Element Communications
Protocol (PCEP)";
}
organization
"IETF PCE (Path Computation Element) Working Group";
contact
"WG Web: <https://datatracker.ietf.org/wg/pce/>
WG List: <mailto:pce@ietf.org>
Editor: Cheng Li
<mailto:c.l@huawei.com>
Shuping Peng
<mailto:pengshuping@huawei.com>";
description
"The YANG module augments the Path Computation Element
Communications Protocol (PCEP) YANG model with Segment
Routing (SR) Policy.
Copyright (c) 2026 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Revised BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see the
RFC itself for full legal notices.";
revision 2026-05-03 {
description
"Initial revision.";
reference
"RFC XXXX: A YANG Data Model for Segment Routing (SR) Policy
and SRv6 support in Path Computation Element Communications
Protocol (PCEP)";
}
/* Features */
feature multipath {
description
"Support for multipath ERO.";
reference
"I-D.ietf-pce-multipath: PCEP Extensions for Signaling
Multipath Information";
}
feature algo {
description
"Support for SR Algorithm";
reference
"I-D.ietf-pce-sid-algo: Carrying SR-Algorithm in Path
Computation Element Communication Protocol (PCEP)";
}
/* Identities */
identity sr-policy {
base te-types:association-type;
description
"SR Policy Association";
reference
"I-D.ietf-pce-segment-routing-policy-cp: PCEP extension to
support Segment Routing Policy Candidate Paths";
}
identity nai-type {
description
"Base identity for NAI (Node or Adjacency Identifier) Type
(NT)";
reference
"Derived from the specification of NAI Type (NT) field in
[I-D/related document section].";
}
identity nai-type-absent {
base nai-type;
description
"NT=0: The NAI is absent.";
}
identity nai-type-ipv4-node-id {
base nai-type;
description
"NT=1: The NAI is an IPv4 node ID.";
}
identity nai-type-ipv6-node-id {
base nai-type;
description
"NT=2: The NAI is an IPv6 node ID.";
}
identity nai-type-ipv4-adjacency {
base nai-type;
description
"NT=3: The NAI is an IPv4 adjacency.";
}
identity nai-type-ipv6-adjacency-global {
base nai-type;
description
"NT=4: The NAI is an IPv6 adjacency with global IPv6
addresses.";
}
identity nai-type-unnumbered-adjacency-ipv4-node-id {
base nai-type;
description
"NT=5: The NAI is an unnumbered adjacency with IPv4 node
IDs.";
}
identity nai-type-ipv6-adjacency-linklocal {
base nai-type;
description
"NT=6: The NAI is an IPv6 adjacency with link-local
IPv6 addresses.";
}
/* Groupings */
grouping sr-policy {
description
"Segment Routing Policy grouping";
leaf headend {
type inet:ip-address-no-zone;
description
"SR Policy headend";
reference
"RFC 9256: Segment Routing Policy Architecture";
}
leaf color {
type sr-policy-types:color-type;
description
"SR Policy Color";
reference
"RFC 9256: Segment Routing Policy Architecture";
}
leaf endpoint {
type inet:ip-address-no-zone;
description
"SR Policy Endpoint";
reference
"RFC 9256: Segment Routing Policy Architecture";
}
leaf name {
type sr-policy-types:name-type;
description
"SR Policy name";
reference
"RFC 9256: Segment Routing Policy Architecture";
}
}
grouping sr-policy-cp {
description
"Segment Routing Policy Candidate Path grouping";
leaf protocol-origin {
type identityref {
base sr-policy-types:protocol-origin-type;
}
description
"SR Policy Candidate Path Protocol";
reference
"RFC 9256: Segment Routing Policy Architecture";
}
leaf originator {
type string;
description
"SR Policy Candidate Path Originator";
reference
"RFC 9256: Segment Routing Policy Architecture";
}
leaf discriminator {
type uint32 {
range "1..max";
}
description
"SR Policy Candidate Path Discriminator";
reference
"RFC 9256: Segment Routing Policy Architecture";
}
leaf name {
type string;
description
"SR Policy Candidate Path name";
reference
"RFC 9256: Segment Routing Policy Architecture";
}
}
grouping segment-lists {
description
"Segment list grouping";
list segment-list {
key "path-id";
leaf path-id {
type uint32;
description
"Uniquely identify a path or segment-list within
a candidate path";
}
description
"Segment list";
list segment {
key "index";
description
"Configure Segment/hop at the index";
uses segment-properties;
}
}
}
grouping segment-properties {
description
"Segment properties grouping";
leaf index {
type uint32;
description
"Segment index";
}
leaf sid-value {
type sr-policy-types:sid-value-type;
description
"SID value";
reference
"RFC 8664:Path Computation Element Communication Protocol
(PCEP) Extensions for Segment Routing
RFC 9603:Path Computation Element Communication Protocol
(PCEP) Extensions for IPv6 Segment Routing";
}
leaf nai-type {
type identityref {
base nai-type;
}
description
"Indicates the type and format of the NAI";
}
choice nai {
description
"Choice for NAI Types";
case ipv4-node-id {
when "derived-from-or-self(./nai-type,
'pcep-srp:nai-type-ipv4-node-id')";
leaf ipv4-node-id {
type inet:ipv4-address-no-zone;
mandatory true;
description
"NT=1: IPv4 Node ID.";
}
}
case ipv6-node-id {
when "derived-from-or-self(./nai-type,
'pcep-srp:nai-type-ipv6-node-id')";
leaf ipv6-node-id {
type inet:ipv6-address-no-zone;
mandatory true;
description
"NT=2: IPv6 Node ID.";
}
}
case ipv4-adjacency {
when "derived-from-or-self(./nai-type,
'pcep-srp:nai-type-ipv4-adjacency')";
container ipv4-adjacency {
description
"NT=3: pair of IPv4 addresses (local, remote).";
leaf local {
type inet:ipv4-address-no-zone;
mandatory true;
description
"local IPv4 address.";
}
leaf remote {
type inet:ipv4-address-no-zone;
mandatory true;
description
"remote IPv4 address.";
}
}
}
case ipv6-adjacency-global {
when "derived-from-or-self(./nai-type,
'pcep-srp:nai-type-ipv6-adjacency-global')";
container ipv6-adjacency-global {
description
"NT=4: pair of global IPv6 addresses (local, remote).";
leaf local {
type inet:ipv6-address-no-zone;
mandatory true;
description
"local IPv6 address.";
}
leaf remote {
type inet:ipv6-address-no-zone;
mandatory true;
description
"remote IPv6 address.";
}
}
}
case unnumbered-adjacency-ipv4-node-id {
when "derived-from-or-self(./nai-type,
'pcep-srp:nai-type-unnumbered-adjacency-ipv4-node-id')";
container unnumbered-adjacency {
description
"NT=5: (node ID, interface ID) tuples for local and
remote.";
container local {
description
"local";
leaf node-id {
type inet:ipv4-address-no-zone;
mandatory true;
description
"local node ID.";
}
leaf if-id {
type uint32;
mandatory true;
description
"local interface ID.";
}
}
container remote {
description
"remote";
leaf node-id {
type inet:ipv4-address-no-zone;
mandatory true;
description
"remote node ID.";
}
leaf if-id {
type uint32;
mandatory true;
description
"remote interface ID.";
}
}
}
}
case ipv6-adjacency-linklocal {
when "derived-from-or-self(./nai-type,
'pcep-srp:nai-type-ipv6-adjacency-linklocal')";
container ipv6-adjacency-linklocal {
description
"NT=6: (global IPv6 address, interface ID) tuples for
local/remote.";
container local {
description
"local";
leaf global-address {
type inet:ipv6-address-no-zone;
mandatory true;
description
"local global address.";
}
leaf if-id {
type uint32;
mandatory true;
description
"local interface ID.";
}
}
container remote {
description
"remote";
leaf global-address {
type inet:ipv6-address-no-zone;
mandatory true;
description
"remote global address.";
}
leaf if-id {
type uint32;
mandatory true;
description
"remote interface ID.";
}
}
}
}
case absent {
when "derived-from-or-self(./nai-type,
'pcep-srp:nai-type-absent')";
description
"NT=0: NAI absent; no payload.";
}
}
leaf algorithm {
type uint8;
description
"SID algorithm identifier";
}
container srv6 {
when "derived-from-or-self
(/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp/pcep:pst,
'path-setup-srv6')" {
description
"For SRv6 path";
}
if-feature "pcep-srv6:srv6";
uses pcep-srv6:sid-str;
leaf endpoint-behavior {
type identityref {
base srv6-types:srv6-endpoint-type;
}
description
"The behavior associated with the SRv6 SIDs.";
}
description
"SRv6 specific parameters";
}
}
augment "/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp" {
description
"Augmenting SR Policy";
container sr-policy {
when "derived-from-or-self
(/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp/pcep:pst,
'path-setup-sr') or
derived-from-or-self
(/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp/pcep:pst,
'path-setup-srv6')" {
description
"Applicable for SR or SRv6";
}
uses sr-policy;
container cp {
uses sr-policy-cp;
description
"SR Policy Candidate Path Information";
}
description
"SR Policy information";
}
}
augment "/pcep:pcep/pcep:entity/pcep:capabilities"
+ "/pcep:sr-mpls" {
description
"Augmenting Algorithm Capability";
leaf algo {
if-feature "algo";
type boolean;
default "false";
description
"Indicates capability for SR-MPLS Algorithm";
}
}
augment "/pcep:pcep/pcep:entity/pcep:peers/pcep:peer"
+ "/pcep:capabilities/pcep:sr-mpls" {
description
"Augmenting Algorithm Capability";
leaf algo {
if-feature "algo";
type boolean;
default "false";
description
"Indicates capability for SR-MPLS Algorithm";
}
}
augment "/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp" {
description
"Augmenting SR-MPLS for LSP";
container sr {
when "derived-from-or-self
(/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp/pcep:pst,
'path-setup-sr') or
derived-from-or-self
(/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp/pcep:pst,
'path-setup-srv6')" {
description
"Applicable for SR or SRv6";
}
uses segment-lists;
description
"SR information";
}
}
}
<CODE ENDS>¶
The YANG modules defined in this document are designed to be accessed via a network management protocol such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport layer and the mandatory-to-implement secure transport is SSH [RFC6242]. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS [RFC8446].¶
The NETCONF access control model [RFC8341] 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 modules which are writable/creatable/deletable (i.e., config true, which is the default). These data nodes may be considered sensitive or vulnerable in some network environments. Write operations (e.g., <edit-config>) to these data nodes without proper protection can have a negative effect on network operations. These are the subtrees and data nodes and their sensitivity/vulnerability:¶
/pcep:pcep/pcep:entity/pcep:capabilities/pcep-srv6:srv6 - configures local SRv6 capabilities and parameters.¶
/pcep:pcep/pcep:entity/pcep:capabilities/pcep-srv6:sid-str - configures SRv6 SID structure parameters.¶
/pcep:pcep/pcep:entity/pcep:capabilities/pcep:sr-mpls/pcep-srp:algo - configures supported SR algorithm capabilities.¶
/pcep:pcep/pcep:entity/pcep:peers/pcep:peer/pcep:capabilities/pcep-srv6:srv6 - configures peer SRv6 capabilities and parameters.¶
Unauthorized access to the above data nodes can adversely affect the PCEP session between the local entity and its peers. This may lead to incorrect capability advertisement, inability to compute new paths, or incorrect stateful operations on delegated as well as PCE-initiated LSPs.¶
Some of the readable data nodes in these YANG modules may be considered sensitive or vulnerable in some network environments. It is thus important to control read access (e.g., via <get>, <get-config>, or notifications) to these data nodes. These are the subtrees and data nodes and their sensitivity/vulnerability:¶
/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp/pcep-srpolicy:sr - exposes SR segment list information information, which may reveal path and topology information.¶
/pcep:pcep/pcep:entity/pcep:lsp-db/pcep:lsp/pcep-srpolicy:sr-policy - exposes SR Policy information, which may reveal policy usage and traffic steering behavior.¶
The YANG modules defined in this document do not define any RPC or action operations.¶
These modules augment the base PCEP YANG model defined in [RFC9826]. The security considerations of that document also apply to these modules.¶
This document registers a URI in the "IETF XML Registry" [RFC3688]. Following the format in RFC 3688, the following registration has been made.¶
This document registers a YANG module in the "YANG Module Names" registry [RFC6020].¶
Name: ietf-pcep-srv6
Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep-srv6
Prefix: pcep-srv6
Reference: This I-D
Name: ietf-pcep-srpolicy
Namespace: urn:ietf:params:xml:ns:yang:ietf-pcep-srpolicy
Prefix: pcep-srp
Reference: This I-D
¶
The authors would like to thank TBD.¶
The following have contributed:¶
Dhruv Dhody Huawei India Email: dhruv.ietf@gmail.com Samuel Sidor Cisco Slovakia Email: ssidor@cisco.com¶