mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-13 22:03:32 +01:00
Add 'VARP' as IP Role #10943
Closed
opened 2025-12-29 21:38:02 +01:00 by adam
·
26 comments
No Branch/Tag Specified
main
21050-device-oob-ip-may-become-orphaned
21102-fix-graphiql-explorer
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#10943
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 @PieterL75 on GitHub (Mar 24, 2025).
NetBox version
v4.1.11
Feature type
Data model extension
Proposed functionality
Add 'VARP' as in IP Role.
Use case
This type is used on distributed EVPN layer3 networks, and provides and active/active IP on all EVPN leafs.
the current selection of IP Roles don't really covers this
Database changes
None
External dependencies
No response
@jnovinger commented on GitHub (Mar 27, 2025):
What is the distinction between VARP and the existing VIP role?
@PieterL75 commented on GitHub (Mar 31, 2025):
a VIP is a 'floating' ip, active on one device of a cluster, and mainly referred to for load balancers.
a VARP is an IP that is active on multiple devices at the same time. There are no node-ips like with VRRP, only the VARP ip on the devices.
https://arista.my.site.com/AristaCommunity/s/article/active-active-router-redundancy-using-varp
@github-actions[bot] commented on GitHub (Apr 8, 2025):
This is a reminder that additional information is needed in order to further triage this issue. If the requested details are not provided, the issue will soon be closed automatically.
@PieterL75 commented on GitHub (Apr 8, 2025):
I can write the PR is needed
@bctiemann commented on GitHub (Apr 8, 2025):
Thanks @PieterL75 !
@pheus commented on GitHub (Apr 8, 2025):
Thank you for the proposal. I have some reservations about adding a VARP role. It seems that VARP is an Arista-specific term for what is essentially an anycast gateway, as noted in the linked reference. Since we already have an “Anycast” IP role, it might be more consistent to stick with the existing, vendor-neutral nomenclature. While we could consider adding an “Anycast Gateway” role if needed, I believe it’s best to avoid vendor-specific names to prevent potential confusion.
@bctiemann commented on GitHub (Apr 8, 2025):
@PieterL75 what do you think about changing this to be a more vendor-agnostic name like the "Anycast" suggested?
@PieterL75 commented on GitHub (Apr 8, 2025):
I checked 3 vendors on how they name the EVPN distributed router gateway intefaces:
I would like to keep the difference clear between a BGP Anycast IP (one IP living on multiple locations, announced over BGP)
and an ARP/VirtualMAC based EVPN Gateway.
What about EVPN VirtualIP, as this will be mainly seen in EVPN deployments
@jeremystretch commented on GitHub (Apr 8, 2025):
I can't recall ever hearing the term "anycast" used with regard to local segment first-hop routing; as suggested, I'd avoid using it here.
@pheus commented on GitHub (Apr 8, 2025):
I agree that it might be a good idea to differentiate between the “classical” anycast IP address and the first-hop IP address in a BGP EVPN VXLAN fabric. However, the more common term—even though no standard has been established—is "distributed IP anycast gateway." Keep in mind that in a layer 3/routed underlay, the first-hop IP address is distributed via BGP (in the case of a BGP EVPN VXLAN fabric). In fact, even the link provided by the author refers to an "anycast gateway." A quick search for "anycast gateway" reveals multiple discussions regarding BGP EVPN VXLAN fabrics, reinforcing that this term is widely used in practice.
Personally, I would suggest going with "Anycast Gateway" for clarity and consistency.
Of course, as the lead maintainer does have the final say, this perspective should be considered alongside the broader community's usage.
There are IETF documents that reference this concept:
https://datatracker.ietf.org/doc/rfc9135/
https://datatracker.ietf.org/doc/draft-malhotra-bess-evpn-centralized-anycast-gw/
@pheus commented on GitHub (Apr 8, 2025):
I'd like to highlight why the term "Anycast Gateway" makes complete sense. Consider a BGP EVPN VXLAN fabric, which often features a typical spine-leaf architecture in a data center. In this design, where a Layer 2 segment is extended over a Layer 3 underlay and multiple nodes share the same gateway IP address, it is very useful to route traffic at the nearest node holding that gateway IP address. This is exactly the kind of scenario that an anycast IP address is meant to address.
@PieterL75 commented on GitHub (Apr 8, 2025):
I disagree that the IP is distributed over BGP in an EVPN fabric and then used as a destination IP for the endhost.
The IP is made available to the endhosts via ARP and not BGP. That said...
I don't see this as an Anycast system, but rather a distributed ARP/layer2/IP
I would go for a less confusing EVPN VirtualIP or EVPN Virtual Gateway
@pheus commented on GitHub (Apr 8, 2025):
But I think we do agree on the key aspect here: the same IP address exists multiple times within the same Layer 2 segment, distributed across multiple nodes. And only the node nearest to the source responds to the ARP request and routes the traffic.
To me, this behavior matches very well with the fundamental concept of an anycast IP.
That’s why I still feel Anycast Gateway is a fitting and commonly understood term for this scenario.
@pheus commented on GitHub (Apr 9, 2025):
I’d like to correct myself regarding my earlier statement about there being "no standard" term for this concept.
RFC 9135 (Integrated Routing and Bridging in Ethernet VPN (EVPN)) actually refers to this as "anycast default gateway IP" (Section 4.1).
This matches exactly the use case we’re discussing here: multiple nodes (PEs) within the same EVPN fabric using the same gateway IP address — effectively providing an anycast gateway for the connected hosts.
Reference: https://datatracker.ietf.org/doc/html/rfc9135#section-4.1
This further reinforces my opinion that Anycast Gateway (or Anycast Default Gateway) is an established and technically correct term in the context of EVPN.
Hope this helps clarify my position!
@PieterL75 commented on GitHub (Apr 10, 2025):
I do follow the reasoning that this is a gateway that is 'multiplied' and resembles the logic of Anycast.
But as Anycast is commonly known and used for BGP announced IP's on global scale, it could confuse when a Layer2 local gateway is also referred to as 'Anycast gateway'
let's add EVPN then..
EVPN Anycast Gateway
(Dont add Default, as you don't know if that IP is the default for a subnet or just 'a' gateway)
@pheus commented on GitHub (Apr 10, 2025):
Thank you, @PieterL75, for taking the time to engage in this constructive discussion with me — I really appreciate the exchange of perspectives.
I absolutely understand where you’re coming from. While anycast is indeed often associated with globally routed IPs, I think it's great to see these concepts and technologies making their way into local fabrics as well.
Personally, I’m perfectly fine with EVPN Anycast Gateway and agree that leaving out Default makes sense here.
Looking forward to the final decision from the maintainers!
@PieterL75 commented on GitHub (Apr 13, 2025):
@pheus indeed, always nice to see different angles and perspectives to the same tech.
The only 'issue' I still have is the lengthy name, it will take up a lot of space in a table view
Should we short it to "EVPN AGW" ?
@pheus commented on GitHub (Apr 14, 2025):
I thought about this, and I agree that the full name can get a bit lengthy in table views. While an abbreviation like AGW might work well for compact displays, it is not a common name, so users won't immediately know what it means. It would be ideal to retain the full name in the selection during the creation or editing of the IP role field.
Achieving this might require a change to the ChoiceSet implementation, which may not be something the maintainers are looking to address at this time. Perhaps a better approach would be to allow configuration of the ChoiceSet via
configuration.py.I see four possible options:
configuration.py.A combination of options 2 and 3 is also possible, providing both a concise display in tables and the ability to adopt the full name where needed.
@DanSheps commented on GitHub (Apr 16, 2025):
Question, for all those involved, based on the fact that the chosen standard would follow the RFC and be "Anycast Gateway"
Why is the current "Anycast" role insufficient?
@PieterL75 commented on GitHub (Apr 16, 2025):
To differentiate between a BGP announced Anycast ip (which is a true layer 3 system) and an EVPN distributed/centralized gateway ip (which is a layer 2 solution)
@DanSheps commented on GitHub (Apr 17, 2025):
Not sure how I feel about this.
Presumable, your IP will be part of a prefix and that prefix will have a role denoting it as a BGP role, in which case you wouldn't need it. On the flip side, an IP will be assigned to a VLAN normally (or interface but interface wouldn't be as clear cut as a VLAN) where you would know that the role with "Anycast" means "Anycast Gateway" and not "Anycast BGP"
Not saying I am 100% against this, but I am also not sure if we want to add a new IP role just to cover this. Would like to hear some more thoughts on this.
@pheus commented on GitHub (Apr 24, 2025):
Personally, I think "Anycast" would generally be sufficient, as I don't expect many NetBox users to use both classical (BGP-based) Anycast and EVPN Anycast Gateway functionality within the same environment - at least not to the extent that it would cause confusion.
That said, as I mentioned earlier, I do see the value in having an explicit "Anycast Gateway" role. As more network engineers begin adopting EVPN fabrics, this distinction becomes more relevant, and being explicit could help improve clarity and reduce ambiguity for future users.
Would something like "Anycast GW" strike a good balance? It keeps things concise for table views, while still being more descriptive than just "Anycast."
Alternatively (or additionally), maybe we should consider allowing configuration of the ChoiceSet - just as we do with other customizable options? That could offer both flexibility and clarity.
@PieterL75 commented on GitHub (May 9, 2025):
I'll settle for "Anycast GW" in addition to the existing "Anycast" Role
@lodpp commented on GitHub (Jul 29, 2025):
Hello 😄
I wanted to follow up on this feature request.
From the comments on that particular issue, I see that VARP from Arista is discussed here as part of an EVPN fabric and so the more generic term of
anycast GWcan make sense.However, VARP is not used only in an EVPN context. The most basic usage of VARP is to be used as a FHRP like glbp/hsrp/vrrp, just way simpler to implement in configuration.
I would even argue that most of the deployment of VARP I've seen were not related to EVPN at all.
All this to say:
Creating an IP role VARP makes sense, like the other FHRP entries.
Thanks !
@jeremystretch commented on GitHub (Aug 7, 2025):
Thanks all for sharing your opinions. Unfortunately, no consensus has been reached on the topic, and after some discussion among the maintainers we are opting not to implement the proposed change.
@lodpp commented on GitHub (Aug 13, 2025):
To let a trace somewhere on how I will manage this to get something generic.
VIPfor all FHRP ips.varp,hsrp,vrrpand so on