Skip to content

Semantic overload on residual_bandwidth link property #286

@italovalcy

Description

@italovalcy

According to the Topology Data Model spec, the residual_bandwidth is defined as:

The residual_bandwidth attribute describes the average bandwidth available for the Link object. The representation of the residual_bandwidth must be provided in percentage from 0 to 100 of the bandwidth attribute. For instance, if bandwidth is 40Gbps and the Link average utilization is 25Gbps (or 62.5%), the residual_bandwidth must have value 37.5, meaning 37.5%. The OXP operator is responsible for defining the time interval to be based, for instance, the last 30 days, the last day, or the last 12 hours. This specification suggests that residual_bandwidth to be based on the last 7 to 14 days for better accuracy and decision making.

This means that the residual_bandwidth will be updated by OXP according to their local policy and based on measured bandwidth utilization of the link.

On the other hand, PCE is using residual_bandwidth property with a "semantic overload" to also store information about "residual reserved bandwidth".

With this scenario, we may ended up in situations where:

  1. Execution starts with Link.residual_bandwidth = 100%
  2. A L2VPN request is made to use 90% of the link. Then PCE updates Link.residual_bandwidth = 10%
  3. A Topology update from OXP is received, and the OXP sets the residual_bandwith to 100% (because, for instance, at that point the link bandwidth was reserved but it is not being used -- or another scenario where OXP is not really monitoring bandwidth utilization at that point)
  4. Upon receiving the topology update of step 2, PCE updates (replace=True) the Link.residual_bandwidth = 100%
  5. A DELETE L2VPN request is received for the L2VPN created on step 1 (min_bw = 90%). Then PCE updates Link.residual_bandwidth = 190% (!)

Even though we can discuss establishing a ceil function to Link, there are corner cases where this won't be valid.

We need to remove this semantic overload and store information about link bandwidth reservation in another attribute

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions