module ietf-te-telemetry {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-te-telemetry";
prefix te-tel;
/* Import TE */
import ietf-te {
prefix te;
reference
"I-D.ietf-teas-yang-te: A YANG Data Model for Traffic
Engineering Tunnels and Interfaces";
}
/* Import TE Common types */
import ietf-te-types {
prefix te-types;
reference
"RFC 8776: Common YANG Data Types for Traffic Engineering";
}
organization
"IETF Traffic Engineering Architecture and Signaling (TEAS)
Working Group";
contact
"WG Web:
WG List:
Editor: Young Lee
Dhruv Dhody ";
description
"This module describes YANG data model for performance
monitoring telemetry for te tunnels.
Copyright (c) 2021 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 Simplified 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.";
/* Note: The RFC Editor will replace XXXX with the number
assigned to the RFC once draft-ietf-teas-pm-telemetry-
autonomics becomes an RFC.*/
revision 2021-08-25 {
description
"Initial revision.";
reference
"RFC XXXX: YANG models for VN/TE Performance Monitoring
Telemetry and Scaling Intent Autonomics";
}
identity telemetry-param-type {
description
"Base identity for telemetry param types";
}
identity one-way-delay {
base telemetry-param-type;
description
"To specify average Delay in one (forward) direction.
At the VN level, it is the max delay of the VN-members.
The threshold-value for this type is interpreted as
microseconds.";
reference
"RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions.
RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions.
RFC 7823: Performance-Based Path Selection for Explicitly
Routed Label Switched Paths (LSPs) Using TE Metric
Extensions";
}
identity two-way-delay {
base telemetry-param-type;
description
"To specify average Delay in both (forward and reverse)
directions.
At the VN level, it is the max delay of the VN-members.
The threshold-value for this type is interpreted as
microseconds.";
reference
"RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions.
RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions.
RFC 7823: Performance-Based Path Selection for Explicitly
Routed Label Switched Paths (LSPs) Using TE Metric
Extensions";
}
identity one-way-delay-variation {
base telemetry-param-type;
description
"To specify average Delay Variation in one (forward) direction.
At the VN level, it is the max delay variation of the
VN-members.
The threshold-value for this type is interpreted as
microseconds.";
reference
"RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions.
RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions.
RFC 7823: Performance-Based Path Selection for Explicitly
Routed Label Switched Paths (LSPs) Using TE Metric
Extensions";
}
identity two-way-delay-variation {
base telemetry-param-type;
description
"To specify average Delay Variation in both (forward and
reverse) directions.
At the VN level, it is the max delay variation of the
VN-members.
The threshold-value for this type is interpreted as
microseconds.";
reference
"RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions.
RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions.
RFC 7823: Performance-Based Path Selection for Explicitly
Routed Label Switched Paths (LSPs) Using TE Metric
Extensions";
}
identity utilized-bandwidth {
base telemetry-param-type;
description
"To specify utilized bandwidth over the specified source
and destination.
The threshold-value for this type is interpreted as
bytes per second.";
reference
"RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions.
RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions.
RFC 7823: Performance-Based Path Selection for Explicitly
Routed Label Switched Paths (LSPs) Using TE Metric
Extensions";
}
identity utilized-percentage {
base telemetry-param-type;
description
"To specify utilization percentage of the entity
(e.g., tunnel, link, etc.)";
}
identity scale-op {
description
"Base identity for scaling operation";
}
identity scale-capacity-up {
base scale-op;
description
"Scale up the bandwidth capacity";
}
identity scale-capacity-down {
base scale-op;
description
"Scale down the bandwidth capacity";
}
/* Typedef */
typedef telemetry-id {
type string;
description
"Identifier for the telemetry data.";
}
typedef scaling-criteria-operation {
type enumeration {
enum AND {
description
"AND operation";
}
enum OR {
description
"OR operation";
}
}
description
"Operations to analize list of scaling criterias";
}
grouping scaling-duration {
description
"Base scaling criteria durations";
leaf threshold-time {
type uint32;
units "seconds";
description
"The duration for which the criteria must hold true";
}
leaf cooldown-time {
type uint32;
units "seconds";
description
"The duration after a scaling-in/scaling-out action has been
triggered, for which there will be no further operation";
}
}
grouping scaling-criteria {
description
"Grouping for scaling criteria";
leaf performance-type {
type identityref {
base telemetry-param-type;
}
description
"Reference to the tunnel level telemetry type";
}
leaf threshold-value {
type string;
description
"Scaling threshold for the telemetry parameter type.";
}
}
grouping scaling-in-intent {
description
"Basic scaling in intent";
uses scaling-duration;
list scaling-condition {
key "performance-type";
description
"Scaling conditions";
uses scaling-criteria;
leaf scale-in-operation-type {
type scaling-criteria-operation;
default "AND";
description
"Operation to be applied to check between scaling criterias
to check if the scale in threshold condition has been met.
Defaults to AND";
}
}
leaf scale-in-op {
type identityref {
base scale-op;
}
default "scale-capacity-down";
description
"The scaling operation to be performed when scaling condition
is met";
}
leaf scale {
type string;
description
"Additional scaling-by information to be interpritted as per
the scale-in-op.";
}
}
grouping scaling-out-intent {
description
"Basic scaling out intent";
uses scaling-duration;
list scaling-condition {
key "performance-type";
description
"Scaling conditions";
uses scaling-criteria;
leaf scale-out-operation-type {
type scaling-criteria-operation;
default "OR";
description
"Operation to be applied to check between scaling criterias
to check if the scale out threshold condition has been met.
Defauls to OR";
}
}
leaf scale-out-op {
type identityref {
base scale-op;
}
default "scale-capacity-up";
description
"The scaling operation to be performed when scaling condition
is met";
}
leaf scale {
type string;
description
"Additional scaling-by information to be interpritted as per
the scale-out-op.";
}
}
augment "/te:te/te:tunnels/te:tunnel" {
description
"Augmentation parameters for config scaling-criteria TE
tunnel topologies. Scale in/out criteria might be used
for network autonomics in order the controller to react
to a certain set of monitored params.";
container te-scaling-intent {
description
"The scaling intent";
container scale-in-intent {
description
"scale-in";
uses scaling-in-intent;
}
container scale-out-intent {
description
"scale-out";
uses scaling-out-intent;
}
}
container te-telemetry {
config false;
description
"Telemetry Data";
leaf id {
type telemetry-id;
description
"ID of telemetry data used for easy reference";
}
uses te-types:performance-metrics-attributes;
}
}
}