mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Document MLAG relation between LAG ports #10837
Closed
opened 2025-12-29 21:36:31 +01:00 by adam
·
16 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#10837
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 4, 2025).
NetBox version
v4.1.11
Feature type
Change to existing functionality
Proposed functionality
A feature to document 'MultiChassis LAG' (also known as MLAG, MC-LAG, vPC, EVPN MultiHoming)
This network functionality creates one Port-channel out of ports on different devices.
In Netbox a LAG interface can be created, but a relation to a LAG interface on another device is not possible.
This feature would provide the possibility to create a relation between two LAG interfaces on two (or more for Multihoming) different devices. In addition an MLAG/vPC/ESI ID is required and the option to add custom fields to that relation. (in case a certain vendor requires more that the ID in the relation)
afaik, there is no vendor that supports more than 2 devices in one MLAG.https://en.wikipedia.org/wiki/Multi-chassis_link_aggregation_groupEVPN Multihoming provides a mechanism to create multiple-device-portchannels, without LAG/Peerlinks
https://www.arista.com/assets/data/pdf/Whitepapers/EVPN-DC-Multihoming-for-Resiliency-WP.pdf
Use case
Currently a MLAG interface cannot be documented. We could create a LAG interface with the same name on 2 devices, but does not mean it is a MLAG.
While running my automation, I need to be able to distinguish the LAG interfaces from the MLAG interfaces, as the generated configuration is different in both situations.
related :
https://github.com/netbox-community/netbox/issues/2830
https://github.com/netbox-community/netbox/issues/9401
https://github.com/netbox-community/netbox/issues/14103
Database changes
Create a MLAG relation model with 4 fields
External dependencies
No response
@ITJamie commented on GitHub (Mar 4, 2025):
it would be great to be able to document the lag-id. which is unique per lag on a switchpair.
@jeremystretch commented on GitHub (Mar 6, 2025):
Could you expand on the specific proposal here? I'm not clear on how this would work. It sounds like there would be an inherent limitation of two LAG interfaces per "side" of the multi-chassis LAG.
Would applying a tag to the relevant MLAG interfaces suffice? Or a custom field?
@PieterL75 commented on GitHub (Mar 6, 2025):
We would need two extra field. One that links one LAG interface to another LAG interface
And an extra field that documents the mlag id of that link.
Come to think of it, some kind of virtual cable could work also, if it could contain the mlag id.
@jeremystretch commented on GitHub (Mar 13, 2025):
@PieterL75 I think this needs a bit more detail still as it's not clear IMO exactly what you're proposing. Could you extend the original description above to specify exactly what field(s) you're proposing be added and how they are to be defined?
(The idea of a virtual cable would not be tenable as it violates one of our core design tenets.)
@github-actions[bot] commented on GitHub (Mar 21, 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 (Mar 24, 2025):
@jeremystretch I've update the FR. I hope its detailed enough.
As I don't have (deep) insights in how NetBox works under the hood, I can't provide a detailed 'database' or solution. Only what I expect what this FR should implement
@enkidu commented on GitHub (Mar 28, 2025):
@PieterL75 use of MLAG typically involves some kind of virtual chassis (either hardware or software stacking). When you create Virtual Chassis you can add LAG interface from master device and you will be able to assign LAG membership to any port on any Virtual Chassis member
@PieterL75 commented on GitHub (Apr 10, 2025):
An MLAG is NOT a Virtual Chassis.
The virtualchassis implies a central 'master' that controls the all members, a central mgmt ip etc.
MLAG is just 2 separated devices that talk to eachother using MLAG links and provide a LAG over multiple devices.
@enkidu commented on GitHub (Apr 10, 2025):
@PieterL75 not really. M(C)LAG forms some reduced kind of virtuall chassis "as seen by connected device" (especially for DT-LACP). In case of HP this is actually limited subset of IRF.VSX, which would fall under "true virtual chassis" is even more complicated: it forms common backplane for L2 but it does not for L3.
Netbox Virtual Chassis allows you to use multiple management IPs - this is exactly how I did the case you are struggling with:
There is no shared IP (both member switches have distinct IP):
There is no need to designate any device as master. Only drawback: LAG interface will be listed only on one device, but member ports will have it assigned - relation to another device is clearly seen:
Vendor-specific settings can be implemented via Custom Fields, however you cannot filter for interface type when diplaying them. HP for example has its DT-LACP implementation very close to regular static LACP in terms of configuration: you just have to assign trunk group (which is also used as LAG name) and specify protocol - but will limit you to exactly two devices; meanwhile, other vendors (like MikroTik) require ID, mode, name and peer port - while permitting more complex topologies.
If your use case cover the latter, then virtual chassis approach will fail (one device cannot be member of two virtual chassis).
@jeremystretch commented on GitHub (Apr 10, 2025):
Agreed. A virtual chassis is formed by multiple devices sharing common control & management planes. Multi-chassis LAG is formed between two (or more?) independently managed nodes which coordinate to appear as a single entity to the far end of the LAG.
@MarlonSieker commented on GitHub (May 9, 2025):
I see two possible ways to model a Multi-Homing ESI-LAG (MLAG).
One way is to add a type and make it possible to select more than one device and display the interface (and subinterfaces) on all devices like interfaces in a virtual chassis.

The other way is that the MLAG has its own menu under device components.

Both options ensure that you can create MLAGs without virtual chassis and spread them across as many devices as you like.
@jhammond-git commented on GitHub (May 9, 2025):
Would it be reasonable to just have a field for "MLAG Peer" or something at the device level so you wouldn't have to continually choose the second device? Set MLAG Peer on a device (assigns peer's ID on both devices), then when creating a LAG, having an option for MLAG ID (if peer ID is set), which could be a select from existing ID's on local/peer or create new. I think that would allow the bare minimum of functionality without adding a new model.
@PieterL75 commented on GitHub (May 16, 2025):
I submitted a FR for 'relation clusters' to devices https://github.com/netbox-community/netbox/issues/19450
The cluster is a 'logical relation' between devices, Like an HA cluster pair. We could use that for MLAG/vPC/EVPNMultihoming
We should be able to add more than 2 devices to a Cluster for MLAG, as the Multihoming can be build on more than 2
@github-actions[bot] commented on GitHub (Aug 15, 2025):
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. Do not attempt to circumvent this process by "bumping" the issue; doing so will result in its immediate closure and you may be barred from participating in any future discussions. Please see our contributing guide.
@github-actions[bot] commented on GitHub (Sep 15, 2025):
This issue has been automatically closed due to lack of activity. In an effort to reduce noise, please do not comment any further. Note that the core maintainers may elect to reopen this issue at a later date if deemed necessary.
@PieterL75 commented on GitHub (Sep 24, 2025):
This plugin implemented exactly what i meant.
https://github.com/pv2b/netbox-plugin-mclag