VRF "Global" at first level of IP hierarchy #397

Closed
opened 2026-04-05 16:29:30 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @m0nkeyc0de on 2/9/2026

NetBox version

v4.5.2

Feature type

Change to existing functionality

Proposed functionality

Use the VRF "Global" (no VRF set) as the way to have a global addressing plan. To achieve that it must be considered as the root level of the hierarchy when computing the prefix hierarchy.

Curently the VRF "Global" (no VRF set) is handled the same way as a specific VRF, which doesn't allow to manage prefixes that actually need to be splitted into several VRFs (like interconnection prefixes).

A global configuration flag could be added to explicitely enable this behavior, so that people who are happy with current implentation don't have unwanted side effects.

Use case

Netbox doesn't allow to have a global addressing plan that is above VRFs (what the word "Global" could actually stand for). Some prefixes needs to be managed globally. As VRFs can relate to other VRFs by beeing interconnected (neighbor VRFs), a way to globally manage the IP adressing plan is needed.

This is an example of a hierarchy where a "Global" master prefix is splitted into several VRFs:

- 10.0.0.0/16 (Global) : Master RFC1918 prefix
  - 10.255.0.0/16 (Global) : Interconnection prefixes
    - 10.255.0.0/31  (VRF1) : Interco with VRF1
        - 10.255.0.0 : Interface 1
        - 10.255.0.1 : Interface 2
    - 10.255.0.2/31 (VRF2) : Interco with VRF2
        - 10.255.0.2 : Interface 3
        - 10.255.0.3 : Interface 4
        
  - 10.1.0.0/16 (VRF 1) : Master prefix VRF 1
    - 10.1.1.0/24 (VRF 1) : VRF 1 Prefix 1
    - 10.1.2.0/24 (VRF 1) : VRF 1 Prefix 2

Note: Prefixes that interconnect several VRFs may still have some display issues due to #21382 (official solution so far: duplicate the prefixes).

The current implementation considers the VRF "Global" as completely separate VRF and breaks IP hierarchy when doing global prefix planning:

- 10.0.0.0/16 (Global) : Master RFC1918 prefix
  - 10.255.0.0/16 (Global) : Interconnection prefixes
  
- 10.255.0.0/31  (VRF1) : Interco with VRF1
    - 10.255.0.0 : Interface 1
    - 10.255.0.1 : Interface 2
- 10.255.0.2/31 (VRF2) : Interco with VRF2
    - 10.255.0.2 : Interface 3
    - 10.255.0.3 : Interface 4
        
- 10.1.0.0/16 (VRF 1) : Master prefix VRF 1
  - 10.1.1.0/24 (VRF 1) : VRF 1 Prefix 1
  - 10.1.2.0/24 (VRF 1) : VRF 1 Prefix 2

Database changes

At first glance it only seems to be a logic change, except maybe the configuration flag.

External dependencies

No external dependencies.

*Originally created by @m0nkeyc0de on 2/9/2026* ### NetBox version v4.5.2 ### Feature type Change to existing functionality ### Proposed functionality Use the VRF "Global" (no VRF set) as the way to have a global addressing plan. To achieve that it must be considered as the root level of the hierarchy when computing the prefix hierarchy. Curently the VRF "Global" (no VRF set) is handled the same way as a specific VRF, which doesn't allow to manage prefixes that actually need to be splitted into several VRFs (like interconnection prefixes). A global configuration flag could be added to explicitely enable this behavior, so that people who are happy with current implentation don't have unwanted side effects. ### Use case Netbox doesn't allow to have a global addressing plan that is above VRFs (what the word "Global" could actually stand for). Some prefixes needs to be managed globally. As VRFs can relate to other VRFs by beeing interconnected (neighbor VRFs), a way to globally manage the IP adressing plan is needed. This is an example of a hierarchy where a "Global" master prefix is splitted into several VRFs: ``` - 10.0.0.0/16 (Global) : Master RFC1918 prefix - 10.255.0.0/16 (Global) : Interconnection prefixes - 10.255.0.0/31 (VRF1) : Interco with VRF1 - 10.255.0.0 : Interface 1 - 10.255.0.1 : Interface 2 - 10.255.0.2/31 (VRF2) : Interco with VRF2 - 10.255.0.2 : Interface 3 - 10.255.0.3 : Interface 4 - 10.1.0.0/16 (VRF 1) : Master prefix VRF 1 - 10.1.1.0/24 (VRF 1) : VRF 1 Prefix 1 - 10.1.2.0/24 (VRF 1) : VRF 1 Prefix 2 ``` *Note: Prefixes that interconnect several VRFs may still have some display issues due to #21382 (official solution so far: duplicate the prefixes).* The current implementation considers the VRF "Global" as completely separate VRF and breaks IP hierarchy when doing global prefix planning: ``` - 10.0.0.0/16 (Global) : Master RFC1918 prefix - 10.255.0.0/16 (Global) : Interconnection prefixes - 10.255.0.0/31 (VRF1) : Interco with VRF1 - 10.255.0.0 : Interface 1 - 10.255.0.1 : Interface 2 - 10.255.0.2/31 (VRF2) : Interco with VRF2 - 10.255.0.2 : Interface 3 - 10.255.0.3 : Interface 4 - 10.1.0.0/16 (VRF 1) : Master prefix VRF 1 - 10.1.1.0/24 (VRF 1) : VRF 1 Prefix 1 - 10.1.2.0/24 (VRF 1) : VRF 1 Prefix 2 ``` ### Database changes At first glance it only seems to be a logic change, except maybe the configuration flag. ### External dependencies No external dependencies.
MrUnknownDE added the type: featurenetboxtype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featuretype: featurenetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetbox labels 2026-04-05 16:29:35 +02:00
Sign in to join this conversation.
No Label netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature type: feature
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/netbox#397