diff options
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-rsvp-sr-ext.yang')
-rw-r--r-- | src/plugins/yang/openconfig/openconfig-rsvp-sr-ext.yang | 400 |
1 files changed, 400 insertions, 0 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-rsvp-sr-ext.yang b/src/plugins/yang/openconfig/openconfig-rsvp-sr-ext.yang new file mode 100644 index 0000000..f9af96d --- /dev/null +++ b/src/plugins/yang/openconfig/openconfig-rsvp-sr-ext.yang @@ -0,0 +1,400 @@ +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.2.0"; + + 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"; + } + + 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 represented in nanoseconds since the Unix epoch."; + } + + 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."; + } + + 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, expressed in nanoseconds since the epoch, 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; + } +} |