\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{sh-arista} \pdfinfo{ /Title (arista-mlag.pdf) /Creator (Cheatography) /Author (sh-arista) /Subject (Arista MLAG Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{235091} \definecolor{LightBackground}{HTML}{F1F4F8} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Arista MLAG Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{sh-arista} via \textcolor{DarkBackground}{\uline{cheatography.com/93954/cs/20686/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}sh-arista \\ \uline{cheatography.com/sh-arista} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 25th November, 2019.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{2} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Multi-Chassis Link Aggregation}} \tn \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Two physical switches (same platform, same EOS version for simplicity and predictability) connected via a peer-link to form one logical switch for redundancy, higher resiliency, and allowing active/active use of all interconnects.% Row Count 5 (+ 5) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{\seqsplit{https://www.arista.com/en/products/multi-chassis-link-aggregation-mlag}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Configuration}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{Peer A}} \newline \newline {\emph{Turn off spanning tree for the MLAG VLAN:}} \newline {\bf{no spanning-tree vlan 4094}} \newline \newline {\emph{Configure the VLAN for MLAG control plane traffic; can be any VLAN but recommended to use 4094:}} \newline {\bf{vlan 4094}} \newline \newline {\emph{Put this VLAN into a {\bf{trunk group}} which removes this VLAN out of the default {\bf{switchport mode trunk}} command:}} \newline {\bf{trunk group MLAG-Peer}} \newline \newline {\emph{Create the L3 interface for the MLAG VLAN which carries the control plane traffic across the peer-link and serves as the source interface for the MLAG tunnel:}} \newline {\bf{interface Vlan 4094}} \newline {\bf{ip address 169.1.1.1/30}} \newline \newline {\emph{Set the interface to always be "up":}} \newline {\bf{no autostate}} \newline \newline {\emph{Set MTU to allow jumbo frames:}} \newline {\bf{mtu 9214}} \newline \newline {\emph{Create the L2 peer link between the two peers. Use LACP (mode active) and use at least two interfaces for redundancy:}} \newline \newline {\bf{interface Ethernet 51/1}} \newline {\bf{description MLAG Peer Link Member}} \newline {\bf{channel-group 2000 mode active}} \newline {\bf{interface Ethernet 52/1}} \newline {\bf{description MLAG Peer Link Member}} \newline {\bf{channel-group 2000 mode active}} \newline {\bf{interface Port-Channel 2000}} \newline {\bf{description MLAG Peer Link}} \newline {\bf{switchport mode trunk}} \newline \newline {\emph{Add the trunk group created earlier for the MLAG VLAN to allow this traffic to traverse this link:}} \newline {\bf{switchport trunk group MLAG-Peer}} \newline \newline {\emph{Ensure native vlan packets are tagged. In later codes (\textgreater{}4.21.1F), this is internal code and doesn't need to be explicitly configured:}} \newline {\bf{switchport trunk native vlan tag}} \newline \newline {\emph{Configure the MLAG domain.}} \newline {\bf{mlag configuration}} \newline \newline {\emph{The Domain ID is case sensitive and has to match identically to its peer:}} \newline {\bf{domain-id AristaMLAG1}} \newline \newline {\emph{Set the source interface:}} \newline {\bf{local-interface Vlan4094}} \newline \newline {\emph{Set the destination interface:}} \newline {\bf{peer-address 169.1.1.2}} \newline \newline {\emph{Set the peer link:}} \newline {\bf{peer-link Port-Channel2000}} \newline \newline {\bf{interface Port-Channel X}} \newline {\bf{switchport mode trunk}} \newline \newline {\emph{Configure port-channels to be MLAG member ports:}} \newline {\bf{mlag \textless{}mlag\_ID\textgreater{}}} \newline \newline {\bf{interface Ethernet Y}} \newline {\bf{description Example MLAG member link}} \newline \newline {\emph{Use LACP (mode active) whenever possible.}} \newline {\bf{channel-group X mode active}} \newline \newline \newline {\bf{Peer B}} \newline {\emph{Configure identically to Peer A with differences noted below:}} \newline \newline {\bf{interface Vlan 4094}} \newline {\bf{ip address 169.1.1.2/30}} \newline {\bf{no autostate}} \newline {\bf{mtu 9214}} \newline {\bf{!}} \newline {\bf{mlag configuration}} \newline {\bf{domain-id AristaMLAG1}} \newline {\bf{local-interface Vlan4094}} \newline {\bf{peer-address 169.1.1.1}} \newline {\bf{peer-link Port-Channel2000}} \newline !} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{\seqsplit{https://www.arista.com/en/um-eos/eos-multi-chassis-link-aggregation}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Sample Topology and Terminology}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{p{8.4cm}}{\vspace{1px}\centerline{\includegraphics[width=5.1cm]{/web/www.cheatography.com/public/uploads/sh-arista_1571084654_Topology3.jpeg}}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\emph{Only two switches per MLAG domain. \newline \newline }}The peer link is mainly for control plane traffic, but L3 traffic (these are still two "routers" even though they are simulating one "switch") and Layer 2 data plane traffic could still traverse the peer link (single-homed devices aka orphan ports or active/down MLAG interfaces.)} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Confirmation}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{show mlag config-sanity}}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{{\emph{Run on both peers to confirm no inconsistencies or issues}}} \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{show mlag detail}}} \tn % Row Count 4 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{{\emph{Confirm MLAG is active, which peer is Primary/Secondary, timers, number of \seqsplit{active-full/active-partial} interfaces, etc.}}} \tn % Row Count 7 (+ 3) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{show mlag interfaces {[}detail|members|states{]}}}} \tn % Row Count 8 (+ 1) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{{\emph{Confirm information on MLAG interfaces.}}} \tn % Row Count 9 (+ 1) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{show mlag issu warnings}}} \tn % Row Count 10 (+ 1) % Row 7 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{{\emph{Displays a warning message regarding the backward-compatibility of this feature before upgrading.}}} \tn % Row Count 12 (+ 2) % Row 8 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{tcpdump}}} \tn % Row Count 13 (+ 1) % Row 9 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{{\emph{\#bash tcpdump -nei vlan4094 port 4432 ==\textgreater{} to confirm control plane traffic for mlag is being sent and received.}}} \tn % Row Count 16 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Things to Note}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{MLAG System ID}}} \tn \mymulticolumn{1}{x{8.4cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}Derived after Primary Peer is elected (lowest MAC address); persistent across reboots; LACP and STP control packets uses this to emulate one "logical" switch.} \tn % Row Count 5 (+ 5) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{{\bf{STP}}} \tn \mymulticolumn{1}{x{8.4cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}Active only on the Primary Peer; configuration needs to be consistent across both peers for seamless failover; Secondary will forward BPDUs to Primary across the Peer Link.} \tn % Row Count 10 (+ 5) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{TCP and UDP Port 4432}}} \tn \mymulticolumn{1}{x{8.4cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}Must be permitted in control plane ACL on both peers if non-default control plane ACL is used.} \tn % Row Count 13 (+ 3) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{{\bf{MAC address table}}} \tn \mymulticolumn{1}{x{8.4cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}Sync'ed between MLAG peers for active/active member ports.} \tn % Row Count 16 (+ 3) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{IGMP Snooping Tables}}} \tn \mymulticolumn{1}{x{8.4cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}Sync'ed between MLAG peers for active/active member ports; configuration should be consistent across both peers.} \tn % Row Count 20 (+ 4) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{{\bf{ARP table sync?}}} \tn \mymulticolumn{1}{x{8.4cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}No ARP table sync with MLAG.} \tn % Row Count 22 (+ 2) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{{\bf{L3 Sync?}}} \tn \mymulticolumn{1}{x{8.4cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}MLAG is L2 active/active technology. To get an active/active L3 Gateway use VARP, but keep in mind that though MLAG forms one logical switch between two switches, there are two separate Layer 3 control planes on each peer.} \tn % Row Count 28 (+ 6) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{For any additional questions, please check EOS Central/Arista Forum or contact Arista TAC. \seqsplit{https://www.arista.com/en/support/customer-support}} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Configuration Notes}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Turn off STP on the MLAG peering VLAN to prevent the peer link from going into the discarding state.} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Recommended to use VLAN4094 but any VLAN can be used. Use the same VLAN throughout all MLAG domains for consistency.} \tn % Row Count 5 (+ 3) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Put the MLAG peering VLAN into a trunk group to ensure this VLAN isn't used by any other ports and avoid any possible loop conditions being created.} \tn % Row Count 8 (+ 3) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Use "no autostate" on the MLAG SVI to ensure this interface remains UP.} \tn % Row Count 10 (+ 2) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{For the Peer Link port-channel, use a minimum of two interfaces across multiple ASICs or line cards for optimal redundancy.} \tn % Row Count 13 (+ 3) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{The Peer Link capacity should be equal to the Leaf-to-Spine total capacity to avoid losing capacity if the uplinks fail.} \tn % Row Count 16 (+ 3) % Row 6 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{The MLAG Domain ID needs to be identical (case-sensitive) across Peers as well as be unique in regards to other Leaf MLAG pairs.} \tn % Row Count 19 (+ 3) % Row 7 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{The MLAG IDs need to match across Peers, but it is recommended to use the same port-channel ID across both Peers if possible for simplicity in operations and troubleshooting.} \tn % Row Count 23 (+ 4) % Row 8 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{MLAG timers should be kept to the default values. Reload Delay is the interval that MLAG interfaces are disabled after an MLAG peer reboots. Non MLAG Reload Delay is the interval that non-MLAG links are disabled after an MLAG peer reboots.} \tn % Row Count 28 (+ 5) % Row 9 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{After 4.21.1F, "switchport mode trunk native vlan tag" is no longer needed to be explicitly configured on the MLAG Peer Link.} \tn % Row Count 31 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}