419 lines
14 KiB
YANG
419 lines
14 KiB
YANG
module openconfig-rsvp-sr-ext {
|
|
yang-version "1";
|
|
|
|
namespace "http://openconfig.net/yang/rsvp-sr-ext";
|
|
prefix "oc-sr-rsvp-ext";
|
|
|
|
import openconfig-extensions { prefix "oc-ext"; }
|
|
import openconfig-types { prefix "oc-types"; }
|
|
import openconfig-network-instance { prefix "oc-ni"; }
|
|
|
|
organization
|
|
"OpenConfig working group";
|
|
|
|
contact
|
|
"OpenConfig working group
|
|
www.openconfig.net";
|
|
|
|
description
|
|
"This module adds extensions to the OpenConfig MPLS models to
|
|
provide extensions which allow the coexistence of RSVP-TE and
|
|
Segment Routing (SR) within the same network. It augments the
|
|
existing OpenConfig segment routing (SR) and RSVP-TE models
|
|
where required.";
|
|
|
|
oc-ext:openconfig-version "0.3.0";
|
|
|
|
revision "2019-07-09" {
|
|
description
|
|
"Clarify the base for measurements using timeticks64.";
|
|
reference "0.3.0";
|
|
}
|
|
|
|
revision "2018-11-21" {
|
|
description
|
|
"Add OpenConfig module metadata extensions.";
|
|
reference "0.2.1";
|
|
}
|
|
|
|
revision 2018-04-13 {
|
|
description
|
|
"Replace boolean with modes for measure-sr-traffic.";
|
|
reference "0.2.0";
|
|
}
|
|
|
|
revision 2017-03-06 {
|
|
description
|
|
"Initial revision.";
|
|
reference "0.1.0";
|
|
}
|
|
|
|
// OpenConfig specific extensions for module metadata.
|
|
oc-ext:regexp-posix;
|
|
oc-ext:catalog-organization "openconfig";
|
|
oc-ext:origin "openconfig";
|
|
|
|
grouping bandwidth-measurement-global-state {
|
|
description
|
|
"Operational state parameters for bandwidth measurement which
|
|
apply globally to the device.";
|
|
|
|
leaf effective-adjustment-interval {
|
|
type uint32;
|
|
units "seconds";
|
|
description
|
|
"The effective adjustment interval that is being used by
|
|
the system. In the case that the adjustment-interval leaf
|
|
is set to a non-integer multiple of the collection-interval,
|
|
and the system does not support this, the value of this leaf
|
|
should reflect the effective value of the adjustment interval
|
|
that it has selected. In the case where no rounding of the
|
|
adjustment interval has occurred, this value should have the
|
|
same value as the adjustment-inerval leaf.";
|
|
}
|
|
}
|
|
|
|
grouping bandwidth-measurement-global-config {
|
|
description
|
|
"Configuration parameters for bandwidth measurement which apply
|
|
globally to the device.";
|
|
|
|
leaf measure-sr-traffic {
|
|
type enumeration {
|
|
enum MEASURE_ONLY {
|
|
description
|
|
"Only measure the SR traffic being sent via an interface,
|
|
and do not flood it into the IGP.";
|
|
}
|
|
enum MEASURE_AND_FLOOD {
|
|
description
|
|
"Measure the SR traffic being sent via an interface and
|
|
flood it into the IGP.";
|
|
}
|
|
}
|
|
description
|
|
"Parameter enabling SR traffic measurement
|
|
and optional flooding into IGP.";
|
|
reference
|
|
"draft-sitaraman-sr-rsvp-coexistence-rec-01";
|
|
}
|
|
|
|
// TODO(robjs): For future extension, traffic accounting for
|
|
// non-SR, non-RSVP traffic could be added here. e.g., LDP,
|
|
// BGP-LU etc.
|
|
|
|
leaf collection-interval {
|
|
type uint32;
|
|
units "seconds";
|
|
description
|
|
"The interval at which the collection of interface
|
|
statistics relating to non-RSVP-TE traffic should be
|
|
performed";
|
|
reference
|
|
"draft-sitaraman-sr-rsvp-coexistence-rec-01";
|
|
}
|
|
|
|
leaf adjustment-interval {
|
|
type uint32;
|
|
units "seconds";
|
|
description
|
|
"The interval after which an adjustment to the utilised
|
|
bandwidth on the interface is made. This value must be
|
|
greater than, or equal to, the collection interval for
|
|
statistics. This value is referred to as N in
|
|
draft-sitaraman-sr-rsvp-coexistence-rec-01.
|
|
|
|
After N seconds have expired, the
|
|
arithmetic mean of the samples is taken, and this is
|
|
considered as the non-RSVP-TE utilisation of the
|
|
interface. In the case that the adjustment interval is
|
|
an integer >1 multiple of the collection interval, this
|
|
serves to provide smoothing of the collected bandwidth
|
|
statistics.";
|
|
reference
|
|
"draft-sitaraman-sr-rsvp-coexistence-rec-01";
|
|
}
|
|
|
|
leaf bandwidth-multiplier {
|
|
type decimal64 {
|
|
fraction-digits 4;
|
|
}
|
|
default 1.0000;
|
|
description
|
|
"A multiplier applied to the sampled bandwidth which
|
|
determines the value that is propagated to the IGP TED.
|
|
By default this value is 1.0000, and hence the actual
|
|
sampled value is flooded.";
|
|
}
|
|
}
|
|
|
|
grouping bandwidth-measurement-update-config {
|
|
description
|
|
"Configuration parameters related to when the bandwidth
|
|
measurement information is used to update the IGP TED.";
|
|
|
|
leaf update-trigger {
|
|
type enumeration {
|
|
enum ADJUSTED_MAX_RESERVABLE_PCT {
|
|
description
|
|
"Update of a new maximum reservable bandwidth IGP
|
|
TLV is based on the value changing >= X% of
|
|
the currently flooded adjusted-absolute-subscription-bw.
|
|
The percentage of this value that is used is specified
|
|
by the adjusted-max-reservable-bw-pct leaf.";
|
|
}
|
|
enum SR_TRAFFIC_PCT {
|
|
description
|
|
"Update of the new maximum reservable bandwidth IGP
|
|
TLV is based on the value changing >= X% of the last
|
|
calculated segment routing traffic utilisation for the
|
|
interface. The percentage delta of this value is
|
|
specified by the sr-traffic-pct leaf.";
|
|
}
|
|
}
|
|
description
|
|
"The trigger that should be used to determine when the IGP
|
|
TED is updated with new information as to the effective
|
|
maximum reservable bandwidth
|
|
(adjusted-absolute-subscription-bw)";
|
|
}
|
|
|
|
leaf adjusted-max-reservable-bw-pct {
|
|
when "../update-trigger = 'ADJUSTED_MAX_RESERVABLE_PCT'" {
|
|
description
|
|
"Only allow the adjusted-max-reservable-bw update trigger
|
|
to be specified when the update-trigger mode is specified
|
|
to be a percentage of the currently flooded value.";
|
|
}
|
|
type oc-types:percentage;
|
|
description
|
|
"The delta in the adjusted-max-reservable-bandwidth that
|
|
should trigger an update in the value which is flooded
|
|
through the IGP TED.
|
|
The delta is measured as a percentage of the
|
|
current adjusted value of the maximum reservable bandwidth
|
|
of the interface, as specified by the
|
|
adjusted-absolute-subscription-bw RSVP-TE leaf.";
|
|
reference
|
|
"draft-sitaraman-sr-rsvp-coexistence-rec-01";
|
|
}
|
|
|
|
leaf sr-traffic-pct {
|
|
when "../update-trigger = 'SR_TRAFFIC_PCT'" {
|
|
description
|
|
"Only allow the SR traffic percentage trigger to be
|
|
specified when the update trigger is defined to be a
|
|
percentage of the last calculated SR traffic value.";
|
|
}
|
|
type oc-types:percentage;
|
|
description
|
|
"The change in the calculated SR traffic on the interface
|
|
that should trigger an update in the value of the
|
|
maximum reservable bandwidth flooded through the IGP TED.
|
|
The value is specified as a percentage of the
|
|
last-calculated-sr-traffic state leaf.";
|
|
}
|
|
}
|
|
|
|
grouping bandwidth-measurement-global-structural {
|
|
description
|
|
"Structural grouping for the measurement of segment routing
|
|
traffic, and its advertisement into the IGP TED.";
|
|
|
|
container bandwidth-measurement {
|
|
description
|
|
"Configuration and operational state parameters related to
|
|
how bandwidth utilisation is measured and flooded into the
|
|
IGP.";
|
|
|
|
container config {
|
|
description
|
|
"Configuration parameters relating to bandwidth
|
|
measurement.";
|
|
|
|
uses bandwidth-measurement-global-config;
|
|
}
|
|
|
|
container state {
|
|
config false;
|
|
description
|
|
"Operational state parameters relating to bandwidth
|
|
measurement";
|
|
|
|
uses bandwidth-measurement-global-config;
|
|
uses bandwidth-measurement-global-state;
|
|
}
|
|
|
|
container update-trigger {
|
|
description
|
|
"Configuration and operational state parameters related
|
|
to the update trigger for flooding new bandwidth
|
|
information into the IGP.";
|
|
|
|
container config {
|
|
description
|
|
"Configuration parameters related to the bandwidth
|
|
measurement update trigger.";
|
|
|
|
uses bandwidth-measurement-update-config;
|
|
}
|
|
|
|
container state {
|
|
config false;
|
|
description
|
|
"Operational state parameters related to the bandwidth
|
|
measurement update trigger.";
|
|
|
|
uses bandwidth-measurement-update-config;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
augment "/oc-ni:network-instances/oc-ni:network-instance/" +
|
|
"oc-ni:mpls/oc-ni:te-global-attributes" {
|
|
description
|
|
"Add the bandwidth measurement parameters to MPLS global
|
|
traffic engineering hierarchy.";
|
|
|
|
uses bandwidth-measurement-global-structural;
|
|
}
|
|
|
|
grouping bandwidth-measurement-rsvp-te-adjusted-state {
|
|
description
|
|
"Logical grouping augmented into the RSVP-TE hierarchy to
|
|
provide an operational state value which reflects the
|
|
adjusted RSVP-TE available bandwidth.";
|
|
|
|
leaf adjusted-absolute-subscription-bw {
|
|
type uint64;
|
|
units "kbps";
|
|
description
|
|
"The adjusted absolute value (in kbps) of the
|
|
bandwidth which is reservable to RSVP-TE on the
|
|
local system. In the case that the bandwidth-measurement
|
|
configuration does not account for non-RSVP-TE traffic
|
|
then this value is equal to the
|
|
calculated-absolute-subscription-bw, in the case that
|
|
non-RSVP-TE traffic is being accounted for, it is lower
|
|
such that calculated-absolute-subscription-bw -
|
|
adjusted-absolute-subscription-bw = the current calculated
|
|
non-RSVP-TE traffic.
|
|
|
|
This value reflects the last flooded value of the maximum
|
|
reservable bandwidth, or subscription.";
|
|
}
|
|
}
|
|
|
|
augment "/oc-ni:network-instances/oc-ni:network-instance/" +
|
|
"oc-ni:mpls/oc-ni:signaling-protocols/oc-ni:rsvp-te/" +
|
|
"oc-ni:interface-attributes/oc-ni:interface/" +
|
|
"oc-ni:subscription/oc-ni:state" {
|
|
|
|
description
|
|
"Augmentation to add the adjusted RSVP-TE available bandwidth
|
|
state to the RSVP-TE signaling protocol.";
|
|
|
|
uses bandwidth-measurement-rsvp-te-adjusted-state;
|
|
}
|
|
|
|
grouping bandwidth-measurement-intf-structural {
|
|
description
|
|
"Structural grouping containing interface bandwidth
|
|
measurement configuration and operational state
|
|
parameters.";
|
|
|
|
container bandwidth-measurement {
|
|
description
|
|
"Configuration and operational state parameters relating to
|
|
per-interface bandwidth measurement. These parameters are
|
|
used in the case that RSVP-TE coexists with other MPLS
|
|
signaling protocols on an interface.";
|
|
|
|
container state {
|
|
config false;
|
|
description
|
|
"Operational state parameters relating to the containing
|
|
interface's bandwidth measurement.";
|
|
|
|
uses bandwidth-measurement-intf-state;
|
|
}
|
|
}
|
|
}
|
|
|
|
grouping bandwidth-measurement-intf-state {
|
|
description
|
|
"Operational state parameters per-interface for the measured
|
|
bandwidth on an interface";
|
|
|
|
leaf last-sample-time {
|
|
type oc-types:timeticks64;
|
|
description
|
|
"The time at which the last sample of bandwidth utilisation
|
|
for both RSVP-TE and non-RSVP-TE traffic was taken. This value
|
|
is relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
|
|
}
|
|
|
|
leaf last-sample-measured-rsvp-util {
|
|
type uint64;
|
|
units "kbps";
|
|
description
|
|
"The measured RSVP-TE bandwidth utilisation at the last sample
|
|
(whose time is indicated in last-sample-time). This value is
|
|
expressed as a 64-bit unsigned integer representing the number
|
|
of kilobits per second that RSVP-TE traffic is consuming on
|
|
the interface.";
|
|
}
|
|
|
|
leaf last-sample-measured-sr-util {
|
|
type uint64;
|
|
units "kbps";
|
|
description
|
|
"The measured Segment Routing bandwidth utilisation at the
|
|
last sample (whose time is indicated in last-sample-time).
|
|
This value is expressed as a 64-bit unsigned integer
|
|
representing the number of kilobits per second that Segment
|
|
Routing traffic is consuming on the interface.";
|
|
}
|
|
|
|
leaf last-calculated-time {
|
|
type oc-types:timeticks64;
|
|
description
|
|
"The time at which the last calculated value for bandwidth
|
|
utilisation was performed. The value is expressed relative
|
|
to the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
|
|
}
|
|
|
|
leaf last-calculated-sr-utilisation {
|
|
type uint64;
|
|
description
|
|
"The last calculated value of the Segment Routing utilisation
|
|
(taken post any averaging or adjustment that occurs). This
|
|
value is updated regardless of whether the value was flooded
|
|
or not.";
|
|
}
|
|
|
|
leaf last-flooded-time {
|
|
type oc-types:timeticks64;
|
|
description
|
|
"The time, relative to the Unix Epoch (Jan 1 1970 00:00:00 UTC),
|
|
at which the bandwidth utilisation of non-RSVP-TE traffic resulted
|
|
in the value being flooded in the IGP. If the configuration of the
|
|
local system specifies a 0% change requires flooding, this leaf
|
|
will always reflect the value of the last-calculated-time. In
|
|
systems that have suppression due to a >0% delta being required
|
|
then it indicates the last time that the percentage threshold
|
|
was exceeded.";
|
|
}
|
|
}
|
|
|
|
augment "/oc-ni:network-instances/oc-ni:network-instance/oc-ni:mpls" +
|
|
"/oc-ni:te-interface-attributes/oc-ni:interface" {
|
|
description
|
|
"Augment the per-interface bandwidth measurement parameters into the
|
|
MPLS hierarchy of network instance.";
|
|
|
|
uses bandwidth-measurement-intf-structural;
|
|
}
|
|
}
|