mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
VRF route target import/export tracking #191
Closed
opened 2025-12-29 16:19:08 +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
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#191
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 @LukeDRussell on GitHub (Jul 11, 2016).
Originally assigned to: @jeremystretch on GitHub.
After #43 we would like to be able to stop duplicate addresses across different VRFs, in an arbitrary manner.
Some of our customers have multiple VRFs for security reasons but they shouldn't be NATing between VRFs. We also have some customers wanting to talk to each other directly (not via the internet). We would also want to reserve some RFC1918 to never overlap with any VRF for certain UC and network services.
I imagine there would be some sort of linking of multiple VRFs to a "address space", with an option to prevent duplicate IPs within the namespace. I'm seeing "address space" as being seperate from "tenant".
@jeremystretch commented on GitHub (Jul 11, 2016):
This is probably best served by introducing import/export tracking among VRFs. This is something I've had in the back of my mind for a while as a long-term goal. Not sure what the timeline would be.
@LukeDRussell commented on GitHub (Jul 11, 2016):
Yeh that fits with the technology too. In our case it's all done via firewalls instead of MPLS import/export, but it's the same concept.
It's probably not a common use case, I just wanted to get it on the pipeline.
@bdlamprecht commented on GitHub (Oct 23, 2017):
I'd like to see this get added as well... (so bump?)
I'm trying to model the VRF
RT(or "route-target") into the existing VRFRD(or "route-distinguisher"), but it doesn't work very well and I end up doing a lot of hacks to make it work.I don't think it would be too complex to implement, but don't want to assume things as I tend to not fully conceptualize how things are modeled and how those changes impact the DB and overall application performance.
@nward commented on GitHub (Jan 30, 2018):
This is a tricky one, as there are instances where you have a VRF or routing instance configured which has different import/exports than other routers. Or, you might have two VRFs on one router with very similar exports and imports, but maybe a couple of differences.
I generally dislike the idea of modelling a network-wide "VRF" or IPVPN or whatever construct. The only way to accurately model it is to model:
At that point you can inspect a VRF on a router and see what other VRFs on the network it interacts with.
Right now VRFs have a network wide "RD" which is how I got to this issue - on many (most modern?) networks, RD is unique per VRF per router.
@afics commented on GitHub (Feb 23, 2018):
@nward We use L3VPN extensively, so we would need a way to tie a VRF to a group of routers.
In our network VRF import/export is configured the same on all of those. On each of these routers only the VRFs which are actually used on a specific router are configured.
To summarize, what we'd need are per group-of-routers VRFs and VRF import/export information. We could then use that to automatically provision required VRFs to a router if an L3 interface with a prefix in a certain VRF is added to it.
@steffann commented on GitHub (Mar 4, 2020):
What ideas do you already have? A per-prefix list of "also exported to VRF x", or more on a "VRF y is imported into VRF z" level? I wouldn't mind spending some brain cycles on this…
@nward commented on GitHub (Mar 5, 2020):
Having thought more about this from last time I posted on the subject, I don't think that Netbox can or should model VRF import/export stuff. Different vendors and options and so on really makes this too complex a problem to solve, and there will always be deficiencies.
I think the original poster's suggestion is reasonable. I (and others I know) use the term "addressing domain" to describe an area of a network where addresses cannot overlap. I think that to achieve this, we could re-purpose netbox's "VRF" concept as an "Addressing Domain" and remove "RD" and other parameters from the VRF model.
Then, we should add in links between Addressing Domains, for example:
I think this is the most flexible, and doesn't impose any limitations or network specific concepts about what a "VRF" is. It means users can define however many addressing domains they like, including zero.
@steffann commented on GitHub (Mar 5, 2020):
Euhm, No, we actively use the VRF information in NetBox. And I'm sure others do as well.
@jeremystretch commented on GitHub (Mar 5, 2020):
The scope of this issue is the implementation of route target modeling to inform the import/export of prefixes among VRFs. This is all well-defined in RFC 4364 so the implementation should be fairly straightforward.
@LukeDRussell commented on GitHub (Mar 5, 2020):
Will that include the functionality to prevent overlapping addresses across VRFs?
An arbitrary “VRF group” might be another seperate option. IIRC @jeremystretch you changed the title of this Issue way back.
It’s simple enough to implement a report that would show overlaps, but it wouldn’t prevent users creating those prefixes in the first place.
@jsenecal commented on GitHub (Jun 2, 2020):
@jeremystretch I could start working on this and submit a PR if nobody has already started working on this.
I had planned to map what VRFs are leaked into another and augment the uniqueness validation to what has been mentionned earlier in this issue.
Do we need/want to track the directionality of the leaking? ie. Import vs Export ?
@jeremystretch commented on GitHub (Sep 23, 2020):
Seems like we jumped the gun a bit by tagging this for v2.10 without having a firm model in place. Below is a quick draft of my proposal:
This adds a new RouteTarget model and provides two relationships from VRF to it (for import and export). It then becomes possible to query all the prefixes or IP addresses that one would expect to be visible by any given VRF:
I like this approach because it's relatively simple and it very closely mirrors how route targets work in reality. We'd probably extend the RouteTarget model to support tenancy and tags as well.
@LukeDRussell commented on GitHub (Sep 24, 2020):
Love your work @jeremystretch