Proper use of Active vs. Container; tracking real utilization in an ISP enviroment

1,101 views
Skip to first unread message

speders...@gmail.com

unread,
Feb 14, 2018, 10:32:27 AM2/14/18
to NetBox
From the docs:
  • Container - A summary of child prefixes
  • Active - Provisioned and in use
  • Reserved - Designated for future use
  • Deprecated - No longer in use
My question centers around how utilization is calculated. As an ISP, we often have to look at utilization levels across multiple levels of a prefix hierarchy.

An aggregate will count child prefixes as 100% utilized regardless of status or IP addresses created. A container prefix will count any child prefix under it as "used," regardless of the total utilization of the child prefixes themselves. An active prefix will count IP addresses created under that prefix. Containers are ideal because once we allocate prefixes to customers we do not track their use at an individual IP level.

It doesn't seem to be possible to calculate real "nested utilization." If the top level prefix is set as Active, it shows 0% utilization because there are no IPs created under that /22. If set to Container, it will show utilization based on the /24s created under it, so 100%.

Set to Active:


Prefix                       Status      Utilization
172.16.0.0/22                Active      0%
   
172.16.0.0/24            Container   65%
       
172.16.0.0/30        Active      -
       
172.16.0.4/30        Active      -
       
...
       
172.16.0.16/28       Active      -
       
172.16.0.62/28       Active      -
       
...
       
172.16.0.128/25      Active      -
   
172.16.1.0/24            Container   50%
       
172.16.1.0/25        Active      -
   
172.16.2.0/24            Container   0%
   
172.16.3.0/24            Container   0%
   
Set to Container:
   
Prefix                       Status      Utilization
172.16.0.0/22                Container   100%
   
172.16.0.0/24            Container   65%
       
172.16.0.0/30        Active      -
       
172.16.0.4/30        Active      -
       
...
       
172.16.0.16/28       Active      -
       
172.16.0.62/28       Active      -
       
...
       
172.16.0.128/25      Active      -
   
172.16.1.0/24            Container   50%
       
172.16.1.0/25        Active      -
   
172.16.2.0/24            Container   0%
   
172.16.3.0/24            Container   0%
   
Is there a means to show progressive utilization up the hierarchy? This would be useful because the /22 may be an allocation from ARIN, while each /24 may be internally assigned to one of four physical locations. Is there a way to see total utilization at the highest prefix or aggregate? I tried a number of combinations of Container and Active and can't seem to make it happen, regardless of prefix or aggregate. What I'd like to be able to do is set something up like this:

Prefix                       Status      Utilization
172.16.0.0/22                - ? -       28%
   
172.16.0.0/24            Container   65%
       
172.16.0.0/30        Active      -
       
172.16.0.4/30        Active      -
       
...
       
172.16.0.16/28       Active      -
       
172.16.0.62/28       Active      -
       
...
       
172.16.0.128/25      Active      -
   
172.16.1.0/24            Container   50%
       
172.16.1.0/25        Active      -
   
172.16.2.0/24            Container   0%
   
172.16.3.0/24            Container   0%

I suppose "worst case" scenario is that we train people to look at multiple levels for correct utilization, i.e. utilization at the aggregate level means we've assigned all possible prefixes to physical locations for distribution to customers, while utilization at the prefix level actually reflects use per-site, and so on.

The only problem with that is when we take a /18 and break it up into smaller prefixes, the prefix list would contain all of those individual /20s, /22s, etc. when ideally I'd rather see them under one prefix - the /18. But to create the /18 as a prefix, the same aggregate /18 will show 100% utilized.


Aggregate                Status       Utilization
172.16.0.0/18            -            18%

Prefix                   Status       Utilization
172.16.0.0/22            Container    100%
172.16.4.0/22            Container    0%
172.16.8.0/22            Container    0%

vs.

Aggregate                Status       Utilization
172.16.0.0/18            -            100%

Prefix                   Status       Utilization
172.16.0.0/18            Container    18%
   
172.16.0.0/22        Container    100%
       
172.16.0.0/24    Container    65%
       
172.16.1.0/24    Container    50%
       
172.16.2.0/24    Container    0%
       
172.16.3.0/24    Container    0%
   
172.16.4.0/22        Container    0%
   
172.16.8.0/22        Container    0%

Have I gone cross-eyed? Am I playing 3D chess when checkers would do?

Jeremy Stretch

unread,
Feb 23, 2018, 10:25:52 AM2/23/18
to speders...@gmail.com, NetBox
> An aggregate will count child prefixes as 100% utilized regardless of status or IP addresses created. A container prefix will count any child prefix under it as "used," regardless of the total utilization of the child prefixes themselves.

Right, because once you've allocated, for instance, a /24 within a /22, that /22 is now considered 25% utilized: You can only get three more /24s out of it, regardless of how the first /24 is utilized.


> An active prefix will count IP addresses created under that prefix.

An active prefix (unlike a container) is meant to represent an actual routed segment assigned to an interface, which is not further subdivided into child prefixes. Thus, all we care about is the number of individual IPs available within it.

The problem with the approach in your third example is that it can be very confusing. For instance, suppose I define the following:

Prefix                       Status      Utilization
172.16.0.0/22                Container   25%
    172.16.0.0/24            Container   25%
        172.16.0.0/26        Active      -
    172.16.1.0/24            Container   25%
        172.16.1.0/26        Active      -
    172.16.2.0/24            Container   25%
        172.16.2.0/26        Active      -
    172.16.3.0/24            Container   25%
        172.16.3.0/26        Active      -



Now if I'm looking at the hierarchy root trying to find space for a /24, I see 172.16.0.0/22 is only 25% utilized and think "cool, that should have room." But it doesn't.

Maybe it would be feasible to annotate both direct utilization (the current approach) and indirect utilization (your suggestion) in parallel, but calculating the utilization of each prefix is already fairly taxing. I'm happy to look into it more at some point if you want to open a feature request for it.

Jeremy


--
You received this message because you are subscribed to the Google Groups "NetBox" group.
To unsubscribe from this group and stop receiving emails from it, send an email to netbox-discuss+unsubscribe@googlegroups.com.
To post to this group, send email to netbox-discuss@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/netbox-discuss/c5f9a4b3-3751-4e94-b828-3884b0d3dfad%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

speders...@gmail.com

unread,
Feb 23, 2018, 11:49:14 AM2/23/18
to NetBox
An active prefix (unlike a container) is meant to represent an actual routed segment assigned to an interface, which is not further subdivided into child prefixes.

Yep, that's how I've been setting them up.

Now if I'm looking at the hierarchy root trying to find space for a /24, I see 172.16.0.0/22 is only 25% utilized and think "cool, that should have room." But it doesn't.

I think I see your point, but in our case we would not assume 25% utilization of a /22 means "I should have 3x /24s free," since that 25% could represent a multitude of different allocation scenarios. However, we could also adjust how we look at utilization and containers vs. active prefixes. One of the great things about NetBox is the ability to switch between container and active without rebuilding anything, so I can switch stuff around as much as I need to until we found what we like.

I'll open a feature request, if only to see if others have input and if it's possible to pull off without too much fuss.
Reply all
Reply to author
Forward
0 new messages