mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
IPAM: Relate an IPv4 prefix to an IPv6 prefix without a VLAN #5681
Closed
opened 2025-12-29 19:31:25 +01:00 by adam
·
13 comments
No Branch/Tag Specified
main
update-changelog-comments-docs
feature-removal-issue-type
20911-dropdown
20239-plugin-menu-classes-mutable-state
21097-graphql-id-lookups
feature
fix_module_substitution
20923-dcim-templates
20044-elevation-stuck-lightmode
feature-ip-prefix-link
v4.5-beta1-release
20068-import-moduletype-attrs
20766-fix-german-translation-code-literals
20378-del-script
7604-filter-modifiers-v3
circuit-swap
12318-case-insensitive-uniqueness
20637-improve-device-q-filter
20660-script-load
19724-graphql
20614-update-ruff
14884-script
02496-max-page
19720-macaddress-interface-generic-relation
19408-circuit-terminations-export-templates
20203-openapi-check
fix-19669-api-image-download
7604-filter-modifiers
19275-fixes-interface-bulk-edit
fix-17794-get_field_value_return_list
11507-show-aggregate-and-rir-on-api
9583-add_column_specific_search_field_to_tables
v4.5.0
v4.4.10
v4.4.9
v4.5.0-beta1
v4.4.8
v4.4.7
v4.4.6
v4.4.5
v4.4.4
v4.4.3
v4.4.2
v4.4.1
v4.4.0
v4.3.7
v4.4.0-beta1
v4.3.6
v4.3.5
v4.3.4
v4.3.3
v4.3.2
v4.3.1
v4.3.0
v4.2.9
v4.3.0-beta2
v4.2.8
v4.3.0-beta1
v4.2.7
v4.2.6
v4.2.5
v4.2.4
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.11
v4.1.10
v4.1.9
v4.1.8
v4.2-beta1
v4.1.7
v4.1.6
v4.1.5
v4.1.4
v4.1.3
v4.1.2
v4.1.1
v4.1.0
v4.0.11
v4.0.10
v4.0.9
v4.1-beta1
v4.0.8
v4.0.7
v4.0.6
v4.0.5
v4.0.3
v4.0.2
v4.0.1
v4.0.0
v3.7.8
v3.7.7
v4.0-beta2
v3.7.6
v3.7.5
v4.0-beta1
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7.0
v3.6.9
v3.6.8
v3.6.7
v3.7-beta1
v3.6.6
v3.6.5
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.5.9
v3.6-beta2
v3.5.8
v3.6-beta1
v3.5.7
v3.5.6
v3.5.5
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.4.10
v3.4.9
v3.5-beta2
v3.4.8
v3.5-beta1
v3.4.7
v3.4.6
v3.4.5
v3.4.4
v3.4.3
v3.4.2
v3.4.1
v3.4.0
v3.3.10
v3.3.9
v3.4-beta1
v3.3.8
v3.3.7
v3.3.6
v3.3.5
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.2.9
v3.2.8
v3.3-beta2
v3.2.7
v3.3-beta1
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.1.11
v3.1.10
v3.2-beta2
v3.1.9
v3.2-beta1
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.0.12
v3.0.11
v3.0.10
v3.1-beta1
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.11.12
v3.0-beta2
v2.11.11
v2.11.10
v3.0-beta1
v2.11.9
v2.11.8
v2.11.7
v2.11.6
v2.11.5
v2.11.4
v2.11.3
v2.11.2
v2.11.1
v2.11.0
v2.10.10
v2.10.9
v2.11-beta1
v2.10.8
v2.10.7
v2.10.6
v2.10.5
v2.10.4
v2.10.3
v2.10.2
v2.10.1
v2.10.0
v2.9.11
v2.10-beta2
v2.9.10
v2.10-beta1
v2.9.9
v2.9.8
v2.9.7
v2.9.6
v2.9.5
v2.9.4
v2.9.3
v2.9.2
v2.9.1
v2.9.0
v2.9-beta2
v2.8.9
v2.9-beta1
v2.8.8
v2.8.7
v2.8.6
v2.8.5
v2.8.4
v2.8.3
v2.8.2
v2.8.1
v2.8.0
v2.7.12
v2.7.11
v2.7.10
v2.7.9
v2.7.8
v2.7.7
v2.7.6
v2.7.5
v2.7.4
v2.7.3
v2.7.2
v2.7.1
v2.7.0
v2.6.12
v2.6.11
v2.6.10
v2.6.9
v2.7-beta1
Solcon-2020-01-06
v2.6.8
v2.6.7
v2.6.6
v2.6.5
v2.6.4
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.13
v2.5.12
v2.6-beta1
v2.5.11
v2.5.10
v2.5.9
v2.5.8
v2.5.7
v2.5.6
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.9
v2.5-beta2
v2.4.8
v2.5-beta1
v2.4.7
v2.4.6
v2.4.5
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.7
v2.4-beta1
v2.3.6
v2.3.5
v2.3.4
v2.3.3
v2.3.2
v2.3.1
v2.3.0
v2.2.10
v2.3-beta2
v2.2.9
v2.3-beta1
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.6
v2.2-beta2
v2.1.5
v2.2-beta1
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.10
v2.1-beta1
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v2.0-beta3
v1.9.6
v1.9.5
v2.0-beta2
v1.9.4-r1
v1.9.3
v2.0-beta1
v1.9.2
v1.9.1
v1.9.0-r1
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.3
v1.7.2-r1
v1.7.1
v1.7.0
v1.6.3
v1.6.2-r1
v1.6.1-r1
1.6.1
v1.6.0
v1.5.2
v1.5.1
v1.5.0
v1.4.2
v1.4.1
v1.4.0
v1.3.2
v1.3.1
v1.3.0
v1.2.2
v1.2.1
v1.2.0
v1.1.0
v1.0.7-r1
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3-r1
v1.0.3
1.0.0
Labels
Clear labels
beta
breaking change
complexity: high
complexity: low
complexity: medium
needs milestone
netbox
pending closure
plugin candidate
pull-request
severity: high
severity: low
severity: medium
status: accepted
status: backlog
status: blocked
status: duplicate
status: needs owner
status: needs triage
status: revisions needed
status: under review
topic: GraphQL
topic: Internationalization
topic: OpenAPI
topic: UI/UX
topic: cabling
topic: event rules
topic: htmx navigation
topic: industrialization
topic: migrations
topic: plugins
topic: scripts
topic: templating
topic: testing
type: bug
type: deprecation
type: documentation
type: feature
type: housekeeping
type: translation
Mirrored from GitHub Pull Request
No Label
type: feature
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#5681
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @netgab on GitHub (Nov 17, 2021).
NetBox version
v3.0.10
Feature type
Change to existing functionality
Proposed functionality
Currently, an IPv4 and an IPv6 prefix can be related using a VLAN in Netbox. For most network topologies, this is sufficient and a very viable approach (good job).
I propose, that an IPv4 prefix and an IPv6 prefix may be associated with each other without the need of a VLAN.
Current relationship:
prefix(IPv4) --> vlan <-- prefix(IPv6)
Maybe a possible approach is to do kind of a relationship object (like a "cable"), which can be assigned to ip-prefix objects and vlan objects:
prefix(IPv4) ---> subnet-object <--- prefix(IPv6)
|
vlan
My intent is to start a discussion whether this is a commom use case for others. Maybe there are other technical approaches to solve this.
Use case
There may be cases, where there is a dual-stack subnet with an IPv4 and IPv6 prefix without a static VLAN relationship.
One example is Cisco ACI, where one subnet (bridge domain) has an IPv4 and IPv6 prefix, but it's not mandatory to assign a VLAN for this. Even worse: Each access port within a bridge domain (EPG) may be assigned to different VLANs, because the VLAN ID is not the primary definition for a subnet.
Database changes
No response
External dependencies
No response
@jeremystretch commented on GitHub (Nov 18, 2021):
I believe this proposal has already been addressed under #5767. Per my comment on that issue:
Your use case described above doesn't say how you would actually use the proposed relationship. In what situation do you have an IPv4 prefix and need to directly reference its associated IPv6 prefix(es) (or vice versa)?
@netgab commented on GitHub (Nov 18, 2021):
Hi @jeremystretch ,
thank you for the reply and sorry for double posting.
For the use case:
One IP subnet in Cisco ACI (e.g. Bridge Domain) has an IPv4 and an IPv6 prefix.
=> Dual-stack
If you want to assign an IPv4 and IPv6 address for a VM or device within this bridge domain, it's hard to find out which two prefixes belong to the same Bridge Domain (BD). In case of a traditional network, I only need to know the domain (vlan group) and the VLAN ID and I can see the related IPv4 and IPv6 prefix.
The reason is, that the concept of a single VLAN = a broadcast domain (IP subnet) is not always true for ACI. VLANs are relevant for Endpoint Groups (EPGs), which are assigned to a bridge domain. This means, that multiple VLANs may be used for one bridge domain.
I'm not quite sure whether in other fabric networks, this requirements will arise as well. Basically every time a VXLAN based overlay is used, the VLAN is only relevant for the path between the switch access port and the end device (and not for the IP subnet).
Basically loose relationships may be used like same IP prefix descriptions.
Of course one tag per BD may be used or assign a "dummy VLAN" in the ACI domain.
@jeremystretch commented on GitHub (Nov 18, 2021):
This sounds extremely product-specific, and probably exceeds what NetBox can currently model with regard to the proprietary concept of a bridge domain.
So you're actually trying to associate prefixes with a bridge domain, not one another. I would think that however you're mapping this association for IPv4 prefixes would work for IPv6 prefixes as well.
@DanSheps commented on GitHub (Nov 18, 2021):
@jeremystretch I know a tiny bit about ACI, and my understanding is it uses vxlan under the hood. Perhaps if/when we model vxlan we could use the vlan or the vni to correlate a ipv4 to a ipv6 in this scenario.
@netgab commented on GitHub (Nov 19, 2021):
@DanSheps: Maybe a good idea using the Virtual Network ID (VNID) in VXLAN as an object.
However the problem is, that in contrast to VLANs, the VXLAN environment (depending on the solution) is very dynamic. So in a traditional network, you'll create a VLAN a and map it to switch ports and IP interfaces and so on.
Using overlay technoligies utilizing VXLAN (e.g. ACI), the VXLAN topology is there but hidden from the user in regards of a configuration aspect. So you'll never assign a VNID to anything in ACI. So it's not possible to "design" a VXLAN based overlay in Netbox in advance / before the topology is actually built.
Furthermore a VNID in the VXLAN header is very flexible. Meaning it's not only intended to describe a layer-2 network. There are VNIDs, which describe a whole VRF.
So if you plan to model a VXLAN VNID (like a VLAN) in netbox, there may be multiple possible relationships:
@netgab commented on GitHub (Nov 19, 2021):
To be more generic:
Currently a VLAN represents a layer-2 domain in netbox. IP prefixes are related to a VLAN to indicate that these layer-3 networks belongs to the layer-2 domain.
However, from my point of view a VLAN is not the only technology, which describes a layer-2 domain.
For example:
==> Could be modeled using VLAN 1 (which is technically not true)
So from my point of view the relationship object between IP prefixes is not a VLAN - it's a representation for a layer-2 domain (which could be a VLAN and other stuff). This relationship object is more or less something like a cable in network (a multipoint cable). If not explicitely configured, this object is just sequentially numbered (like the cables in netbox). Of course there is the option to name them and attach some properties like the type and other stuff.
Data model:
Don't know if this makes sense ... you're the professionals :)
@DanSheps commented on GitHub (Nov 23, 2021):
Yes, well if it is a L3 routed port, then of course the only way to relate them would be through the interface assignment, whcih could be done much in the same way as the vlan/vni/etc.
@netgab commented on GitHub (Nov 23, 2021):
But you cannot see this relation over the IPAM in any way. If it's a VLAN you can see the relation of the prefixes using the ipam.vlan. So there are multiple different places and classes where a relationship may be managed.
Wouldn't it be cool if there is a single view for this and make this more generic?
@DanSheps commented on GitHub (Nov 23, 2021):
Yes, it might be useful, however we aren't going to introduce a new model for it (most likely) and still will stick to the "loose" coupling we normally do, if we even decide to do this.
However, you can just as easily do this yourself right now using the API without much effort.
@netgab commented on GitHub (Nov 24, 2021):
Hey @DanSheps,
I understand. It was worth a try (at least from my point of view) :)
@pobradovic08 commented on GitHub (Nov 25, 2021):
@DanSheps did you mean there won't be a new model for bridge domains or for this mapping between IPv4 and IPv6?
Although i don't see the need to map IPv4 to IPv6 I do see the need to differentiate between VLANs and bridge domains. Also I don't think this is ACI specific (maybe the microsegmentation explanation is) as those are the characteristics of VXLAN fabrics in general (and not just VXLAN fabrics). Few things that come to mind are:
@DanSheps commented on GitHub (Nov 25, 2021):
Mapping between ipv4 and ipv6
@jeremystretch commented on GitHub (Dec 1, 2021):
The original FR here was to introduce a new model for correlating IPv4 and IPv6 prefixes, which we've decided not to implement. As far as the rest of the discussion regarding VXLAN, a separate issue will need to be opened if there's interest in continuing that thread.