Skip to main content

MLAG

This schema extension contains the foundations to capture Multi-Chassis Link Aggregation Group (MLAG). It comes on top of the LAG extension.

In this implementation, a MLAG interface is essentially a LAG interface but linked to a MLAG domain (instead of a device). The MLAG domain regroup devices together (usually 2) and is built over LAG interfaces used as peer-link between the devices. MLAG interfaces defined at the MLAG domain level are then spread across all devices in the domain.

Note: This is a very minimalist implementation of MLAG, the goal is to make it easy to blend with existing models you might have. For example, if you are operating in a data center fabric environment you might already have a LeafGroup or similar concept. In that case you can have your LeafGroup inherit from GenericMlagDomain and add the necessary relationships/attributes.

Next steps:

  • Add support for layer 3 overlay for MLAG interfaces (loopback, peer address ...)
  • Create virtual relationship so MLAG interfaces can be seen on the devices in the domain

Details

Nodes

Interface

  • Label: MLAG Interface
  • Description: Multi-Chassis Link Aggregation Group Interface
  • Namespace: Mlag
  • Uniqueness Constraints:
    • mlag_domain, name__value
  • Human Friendly ID: mlag_domain__domain_id__value, name__value
  • Inherit From: InterfaceLayer2, GenericInterfaceBundle

Attributes

namedescriptionkindoptionaldefault_valuechoices
nameName of the interfaceTextFalse
descriptionA brief description of the interfaceTextTrue
statusThe status of the interfaceDropdownFalseactiveprovisioning, free, active, maintenance, disabled, deleted, outage
roleThe role of the interface in the networkDropdownTrueserver, router

Relationships

namepeeroptionalcardinalitykind
mlag_domainGenericMlagDomainFalseoneParent

Domain

  • Label: MLAG Domain
  • Description: MLAG (Multi-Chassis Link Aggregation Group) Domain
  • Namespace: Mlag
  • Icon: mingcute:cloud-line
  • Inherit From: GenericMlagDomain

Relationships

namepeeroptionalcardinalitykind
peersDcimDeviceFalsemanyGeneric

Generics

MlagDomain

  • Label: MLAG Domain
  • Description: Generic holding the peer links and interfaces shared by the members of an MLAG domain.
  • Namespace: Generic
  • Human Friendly ID: domain_id__value

Attributes

namedescriptionkindoptionaldefault_valuechoices
domain_idIdentifier for the MLAG domainTextFalse
reload_delayTime in seconds to wait before bringing up the MLAG after a reloadNumberFalse300

Relationships

namepeeroptionalcardinalitykind
peer_linksInterfaceLagTruemanyAttribute
mlag_interfacesMlagInterfaceTruemanyComponent

Extensions

note

In this context "extensions" refer to modifications or additions to the existing schema, such as adding new attributes, relationships, or other schema elements.

InterfaceLag

Relationships

namepeeroptionalcardinalitykind
mlag_peer_linkMlagDomainTrueoneAttribute

DcimDevice

Relationships

namepeeroptionalcardinalitykind
mlag_domainMlagDomainTrueoneAttribute

Code

version: '1.0'
generics:
- name: MlagDomain
namespace: Generic
description: Generic holding the peer links and interfaces shared by the members
of an MLAG domain.
label: MLAG Domain
include_in_menu: false
human_friendly_id:
- domain_id__value
display_label: domain_id__value
attributes:
- name: domain_id
kind: Text
label: MLAG Domain ID
unique: true
optional: false
description: Identifier for the MLAG domain
order_weight: 1000
- name: reload_delay
kind: Number
label: Reload Delay
default_value: 300
optional: false
description: Time in seconds to wait before bringing up the MLAG after a reload
order_weight: 1650
relationships:
- name: peer_links
peer: InterfaceLag
label: Peer Links
kind: Attribute
cardinality: many
optional: true
description: LAG interfaces used as peer-links between the MLAG peers
order_weight: 1500
- name: mlag_interfaces
peer: MlagInterface
label: MLAG Interface(s)
kind: Component
cardinality: many
optional: true
description: Bundle interfaces that are spread across all devices in this MLAG
domain.
order_weight: 1550
nodes:
- name: Interface
namespace: Mlag
description: Multi-Chassis Link Aggregation Group Interface
label: MLAG Interface
include_in_menu: false
inherit_from:
- InterfaceLayer2
- GenericInterfaceBundle
human_friendly_id:
- mlag_domain__domain_id__value
- name__value
order_by:
- name__value
display_label: name__value
uniqueness_constraints:
- - mlag_domain
- name__value
attributes:
- name: name
kind: Text
optional: false
description: Name of the interface
order_weight: 1000
- name: description
kind: Text
optional: true
description: A brief description of the interface
order_weight: 1100
- name: status
kind: Dropdown
default_value: active
choices:
- name: provisioning
label: Provisioning
description: Interface is being provisioned.
color: '#A9DFBF'
- name: free
label: Free
description: Interface is unused.
color: '#CDEACC'
- name: active
label: Active
description: Interface is active and operational.
color: '#00d25b'
- name: maintenance
label: Maintenance
description: Interface is under maintenance.
color: '#FFF2CC'
- name: disabled
label: Disabled
description: Interface has been disabled.
color: '#D3D3D3'
- name: deleted
label: Deleted
description: Interface has been deleted.
color: '#FAD7A0'
- name: outage
label: Outage
description: Interface is currently experiencing an outage.
color: '#F4CCCC'
optional: false
description: The status of the interface
order_weight: 1200
- name: role
kind: Dropdown
choices:
- name: server
label: Server Interface
description: Interface connecting servers
color: '#A9DFBF'
- name: router
label: Router Interface
description: Interface connecting routers
color: '#B2D4E6'
optional: true
description: The role of the interface in the network
order_weight: 1300
relationships:
- name: mlag_domain
peer: GenericMlagDomain
label: MLAG Domain
kind: Parent
cardinality: one
optional: false
description: MLAG Domain this MLAG Interface belongs to
order_weight: 900
- name: Domain
namespace: Mlag
description: MLAG (Multi-Chassis Link Aggregation Group) Domain
label: MLAG Domain
icon: mingcute:cloud-line
include_in_menu: true
inherit_from:
- GenericMlagDomain
relationships:
- name: peers
peer: DcimDevice
kind: Generic
cardinality: many
optional: false
identifier: device__mlag_domain
min_count: 2
max_count: 2
order_weight: 950
extensions:
nodes:
- kind: InterfaceLag
relationships:
- name: mlag_peer_link
peer: MlagDomain
label: MLAG Peer Link
kind: Attribute
cardinality: one
optional: true
description: MLAG Domain this LAG is used as peer link
order_weight: 1950
- kind: DcimDevice
relationships:
- name: mlag_domain
peer: MlagDomain
label: MLAG Domain
kind: Attribute
cardinality: one
optional: true
identifier: device__mlag_domain
description: MLAG Domain this device belongs to
order_weight: 1900