| 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.1.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 boolean; |
| description |
| "When this leaf is set to true, the local system should |
| measure the bandwidth utilisation of SR traffic on interfaces |
| for which TED entries are being generated. |
| |
| In the case that this functionality is enabled, traffic |
| forwarded using LFIB entries that correspond to MPLS |
| labels which correspond to SR SIDs should be accounted |
| for."; |
| 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; |
| } |
| } |