mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Link Aggregation created in a switch assigned to a virtual chassis is not available for the second switch #4962
Closed
opened 2025-12-29 19:22:40 +01:00 by adam
·
10 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
status: under review
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#4962
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 @jcralbino on GitHub (Jun 3, 2021).
NetBox version
v2.11.4
Python version
3.8
Steps to Reproduce
Using the GUI we performed this:
Created a virtual chassis: stack-1-withoutmaster
Create first switch: stack1-sw1
Create second switch: stack1-sw2
Associate them to the stack-1-withoutmaster, without selecting a master.
As i do not associate a master both switches have only their own interfaces
Create Link Aggregation type (lag-stack1-port1) in stack1-sw1
Associate lag-stack-port1 to stack1-sw1 interface e1/1
Failed to associate lag-stack-port1 on stack1-sw2.
This is not possible now in 2.11.4 , It was possible in 2.11.2
Expected Behavior
Created a virtual chassis: stack-1-withoutmaster
Create first switch: stack1-sw1
Create second switch: stack1-sw2
Associate them to the stack-1-withoutmaster, without selecting a master.
As i do not associate a master both switches have only their own interfaces
Create Link Aggregation type (lag-stack1-port1) in stack1-sw1
Associate lag-stack-port1 to stack1-sw1 interface e1/1
Associate lag-stack-port1 on stack1-sw2 on interface e1/1
Observed Behavior
LAG object not provided in the dropdown menu
@jcralbino commented on GitHub (Jun 3, 2021):
@candlerb i have opened this bug
@jeremystretch commented on GitHub (Jun 3, 2021):
IMO this is desired behavior. The LAG selection widget relies on the
device_idfilter to filter the list of interface choices returned. This filter restricts the interfaces queryset to only those assigned to the specified device or, if the device is a VC master, to a peer VC member. Altering this behavior would break the filter for other uses.Setting a VC master and defining the LAG interfaces on that master will resolve the issue.
@jcralbino commented on GitHub (Jun 4, 2021):
This is a undesired behaviour in my opinion as it will limit the utilisation of the virtualchassis.
There many use cases where setting a master is not mandatory, as within the multi chassis environment were we do not have a shared control plane. Therefore the interfaces will be kept in each member and not renamed in those cases
This is something I tested in previous versions and that was working
@jeremystretch commented on GitHub (Jun 4, 2021):
Ah, I think this is the crux of your problem. A virtual chassis is intended to model a shared control plane. If the devices have independent control planes (as in a multi-chassis LAG deployment), a virtual chassis should not be used, because they are still independent devices. Each device in a multi-chassis LAG setup has its own LAG interface that needs to be modeled discretely.
@jcralbino commented on GitHub (Jun 4, 2021):
What I have seen is that we are not enforcing here the placement of a master.
With this in mind I see here two possibilities for its utilisation
Example where a Multi-chassis lag is implemented using a protocol(vPC for example). In terms of your remark here, i believe that this is not completely accurate.
In this cases we can model this still with a shared LAG interface. Having the same name across two devices.

This is what i got when i tested this in 2.11.2, where i was able to have virtual chassis without a master, and still associate the same lag interface to both switches.
Details here on how this image was taken: https://github.com/netbox-community/netbox/discussions/6116#discussioncomment-687381
VPC domains in Cisco, where a link aggregation can be used across two devices that do no have a master device . ( current limited on the way lag interfaces widget provides available interfaces )
If these use cases are not be supported then the utilization of a master should be enforced.
But as this was working in 2.11.2, and probably other versions although i can't confirm.
I believe that enforcing the use of lag only when a master is configured is too limited .
Is there a strong technical reason for this, as it seems the database is already prepared to support this option?
@jcralbino commented on GitHub (Jun 4, 2021):
Can we create a different filter for the lag interfaces widget in order to restrict the interfaces queryset ( they should be all of the lag type) to only those assigned to the specified device or, if the device is a VC member, to the other peer VC member.
Also this will reduce the impact of this change. If we return only in the filter, interfaces of the lag type then we will not have interface name colision (other interfaces that may have same name across a virtual chassis)
@github-actions[bot] commented on GitHub (Aug 13, 2021):
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Please see our contributing guide.
@jcralbino commented on GitHub (Sep 1, 2021):
@jeremystretch
Is there a change we can revisit this ? Can we use separate interface filters for the link aggregation interfaces as discussed above ?
@jeremystretch commented on GitHub (Sep 1, 2021):
No, I'm afraid we cannot. I explained above that this is an intentional design choice. You'll need to define a LAG interface for each member of a multi-chassis LAG.
@jcralbino commented on GitHub (Sep 3, 2021):
Hello Jeremy. Thanks for the reply.
Then we should add to the documentation that a master in a virtual chassis is mandatory. As it is not clear to me what is the use case where it makes sense to have a virtual chassis without a master .
I am sure a lot of people are using this without a master, but the documentation should make clear what is the use case for when a virtual chassis without master can be used .