Replies: 1 comment
-
I just stumble on this "problem" myself, and more so: I can't seem to assign a full network to a pool??? ie. According to the prefix rules: |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
I have been using Nautobot for over a year now and since the introduction of 2.0, there is a Hierarchy for how the different Prefix Types are supposed to be nested within each other. This isn't yet strictly enforced but it sounds like it will be eventually. This is referenced here the documentation: https://docs.nautobot.com/projects/core/en/stable/user-guide/core-data-model/ipam/prefix/#prefix-hierarchy
I disagree with the notion that a Pool should only be contained within a Network, and I think it makes it hard to represent some network designs. I think a Pool should also be allowed underneath a Container because there are instances where it doesn't make sense for a Pool to be strictly tied to a Network.
In the documentation, it states that a Pool is just a range of IPs where every single IP address is valid to be assigned and it uses a NAT Pool as an example of this. A network on the other hand considers the first and last IP address as unusable (at least when counting utilization). In my eyes, a "Network" is meant to represent a standard subnet that overlays a layer 2 broadcast domain.
Based on that though, it doesn't make a lot of sense to me why a Pool has to be confined within a network (it could be, but shouldn't have to be), since there are plenty of reasons why a Pool of IP addresses wouldn't be allocated inside of an existing Network. Even using the example of a NAT Pool, it's very common to build a NAT Pool over a routed handoff versus the NAT pool existing as a subset of a standard Network.
For example (especially when doing CG-NAT), I have a NAT appliance that advertises an entire /24 of Public IP space via BGP over /31s in a separate IP space. That entire /24 is allocated for CG-NAT (including the .0 and .255), but I will reserve individual IPs for specific downstream clients, so it would make the most sense to allocate this as a Pool in Nautobot (since Containers also shouldn't directly contain IP addresses). But if I have a /21 of total Public IP space that I want to represent as a Container to track how many Child Prefixes I've allocated, that is considered invalid by Nautobot. I can make it "valid" by representing the CGN Pool as a Network, but that makes the documentation less accurate when that Pool isn't really a typical "Network" as intended by Nautobot.
Another use-case that I see this used for is allocating a Pool of Loopback IPs. For example if I want to specify that a specific /24 contains all of my loopback IPs, I can't represent this as a Pool if it's a direct child of a larger /16 allocated as a Container. What I would have to do is specify that the /24 is actually a container, then define a /32 Prefix as a Network, then the actual IP address inside the Prefix. While that feels more reasonable than my NAT example, it feels extremely excessive versus defining a Pool and then allocating IPs directly from it.
I would like to know if anyone else has encountered issues like this and whether it makes sense to propose an update to the Hierarchy that allows Pools to exist as direct children to Containers.
Beta Was this translation helpful? Give feedback.
All reactions