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
  • Display Labels: name__value
  • 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 interfaceText
mlag_idIdentifier for the MLAG interfaceNumber
descriptionA brief description of the interfaceTextTrue
statusThe status of the interfaceDropdownactiveprovisioning, 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
  • Namespace: Generic
  • Display Labels: domain_id__value
  • Human Friendly ID: domain_id__value

Attributes

namedescriptionkindoptionaldefault_valuechoices
domain_idIdentifier for the MLAG domainText
reload_delayTime in seconds to wait before bringing up the MLAG after a reloadNumber300

Relationships

namepeeroptionalcardinalitykind
peer_linksInterfaceLagmanyAttribute
mlag_interfacesMlagInterfacemanyComponent

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
include_in_menu: false
label: MLAG Domain
display_labels:
- domain_id__value
human_friendly_id:
- domain_id__value
attributes:
- name: domain_id
label: MLAG Domain ID
kind: Text
unique: true
description: Identifier for the MLAG domain
order_weight: 900
- name: reload_delay
label: Reload Delay
kind: Number
description: Time in seconds to wait before bringing up the MLAG after a reload
default_value: 300
order_weight: 1650
relationships:
- name: peer_links
label: Peer Links
description: LAG interfaces used as peer-links between the MLAG peers
peer: InterfaceLag
cardinality: many
kind: Attribute
order_weight: 1500
- name: mlag_interfaces
label: MLAG Interface(s)
peer: MlagInterface
cardinality: many
kind: Component
description: Bundle interfaces that are spread across all devices in this MLAG
domain.
order_weight: 1500
nodes:
- name: Interface
namespace: Mlag
label: MLAG Interface
description: Multi-Chassis Link Aggregation Group Interface
inherit_from:
- InterfaceLayer2
- GenericInterfaceBundle
include_in_menu: false
uniqueness_constraints:
- - mlag_domain
- name__value
human_friendly_id:
- mlag_domain__domain_id__value
- name__value
order_by:
- name__value
display_labels:
- name__value
attributes:
- name: name
kind: Text
description: Name of the interface
order_weight: 1000
- name: mlag_id
label: MLAG ID
kind: Number
description: Identifier for the MLAG interface
order_weight: 1050
- name: description
kind: Text
optional: true
description: A brief description of the interface
order_weight: 1100
- name: status
kind: Dropdown
description: The status of the interface
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: '#A9CCE3'
- 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'
default_value: active
order_weight: 1200
- name: role
kind: Dropdown
optional: true
description: The role of the interface in the network
choices:
- name: server
label: Server Interface
description: Interface connecting servers
color: '#A9DFBF'
- name: router
label: Router Interface
description: Interface connecting routers
color: '#B2D4E6'
order_weight: 1250
relationships:
- name: mlag_domain
label: MLAG Domain
peer: GenericMlagDomain
optional: false
cardinality: one
kind: Parent
description: MLAG Domain this MLAG Interface belongs to
order_weight: 1750
- name: Domain
namespace: Mlag
label: MLAG Domain
description: MLAG (Multi-Chassis Link Aggregation Group) Domain
icon: mingcute:cloud-line
inherit_from:
- GenericMlagDomain
relationships:
- name: peers
peer: DcimDevice
optional: false
cardinality: many
kind: Generic
identifier: device__mlag_domain
max_count: 2
min_count: 2
order_weight: 950
extensions:
nodes:
- kind: InterfaceLag
relationships:
- name: mlag_peer_link
label: MLAG Peer Link
peer: MlagDomain
optional: true
cardinality: one
kind: Attribute
description: MLAG Domain this LAG is used as peer link
order_weight: 1800
- kind: DcimDevice
relationships:
- name: mlag_domain
label: MLAG Domain
peer: MlagDomain
optional: true
cardinality: one
kind: Attribute
description: MLAG Domain this device belongs to
order_weight: 1800
identifier: device__mlag_domain