LAG는 한 장비 안의 포트끼리만 묶을 수 있어서, 장비가 통째로 죽으면 소용이 없었습니다. MLAG(Multi-chassis Link Aggregation)는 물리적으로 다른 두 스위치를 하나의 논리적인 스위치처럼 구성해서 이 문제를 풉니다. Fail over와 Load Balance 같은 효과를 얻을 수 있어요.

그림 왼쪽이 물리 구성입니다. vEOS10과 vEOS11이 Eth2, Eth3로 서로 연결되어 있고, 아래쪽 vEOS는 Eth1, Eth2로 각각 두 장비에 연결됩니다. 오른쪽 논리 구성에서는 아래쪽 스위치 입장에서 위쪽 두 대가 한 대로 보여요. 그래서 두 링크를 하나의 LACP로 묶어 쓸 수 있습니다. STP였다면 둘 중 한 링크는 막혔을 구성인데, MLAG에서는 두 링크를 모두 쓸 수 있다는 점이 큰 차이예요.
mlag configuration
domain-id mlag
local-interface Vlan4094
peer-address 192.168.1.2
peer-address heartbeat 192.168.2.2
peer-link Ethernet2
dual-primary detection delay 1 action errdisable all-interfaces
dual-primary recovery delay mlag 1 non-mlag 3
reload-delay mlag 1
reload-delay non-mlag 10
한쪽 장비의 설정이고, 줄별로 보면 이렇습니다.
여기서 말하는 mlag 포트는 mlag 도메인으로 묶인 포트들이고, non-mlag 포트는 그 외 일반 포트입니다.
MLAG에서는 두 장비가 primary와 secondary로 역할을 나눠 가집니다. 그런데 두 장비 사이의 제어를 담당하는 peer-link가 끊기면, secondary 장비는 primary가 죽었다고 판단하고 자신도 primary로 승격합니다. 이게 dual-primary예요. 양쪽이 서로의 상태를 모르는 채 각자 primary로 트래픽을 처리하게 됩니다(split-brain).
이를 막으려고 dual-primary detection을 설정합니다. peer-link가 끊겼더라도 heartbeat 링크로 primary가 살아있음을 확인하면, secondary 장비의 포트를 errdisable 상태로 바꿉니다. action errdisable all-interfaces는 peer-link를 제외한 모든 이더넷 인터페이스를 끈다는 뜻이에요.
설정에 같이 있는 delay 값들은 포트를 다시 올리는 타이밍을 정합니다.
channel-group mode active)로 협상하는 걸 권장합니다.show mlag, show mlag detail입니다. dual-primary 설정 여부와 delay 값도 여기서 볼 수 있어요.MLAG는 서로 다른 두 스위치를 하나의 논리 스위치처럼 묶어서, 장비 단위 장애에도 통신을 유지하고 두 링크를 모두 쓰게 해줍니다. peer-link가 끊겨 양쪽이 모두 primary가 되는 dual-primary는 heartbeat로 상대 생존을 확인하고 secondary의 포트를 errdisable로 막아서 해결합니다.