\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-varp.pdf) /Creator (Cheatography) /Author (sh-arista) /Subject (Arista VARP 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 VARP Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{sh-arista} via \textcolor{DarkBackground}{\uline{cheatography.com/93954/cs/20825/}}} \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 17th October, 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}{Virtual-ARP aka vARP aka VARP}} \tn \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{VARP is an active/active FHRP (first hop redundancy protocol) used together with Arista's MLAG technology. In VARP, both MLAG peers can act as default gateways (DGs) and can forward packets in and out of the subnet regardless of which peer receives the original packet.% Row Count 6 (+ 6) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{\seqsplit{https://www.arista.com/en/um-eos/eos-vrrp-and-varp} \newline \newline Arista also supports VRRP, the active/standby industry standard FHRP.} \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}{VARP Topology}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{p{8.4cm}}{\vspace{1px}\centerline{\includegraphics[width=5.1cm]{/web/www.cheatography.com/public/uploads/sh-arista_1571322408_topology.jpg}}} \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}}{show ip virtual-router} \tn \mymulticolumn{1}{x{8.4cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}Make sure all are "U" and active. Make sure the virtual MAC is as configured. Also notice the default GARP - 30 seconds.} \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{\#bash tcpdump -nei vlanX arp} \tn \mymulticolumn{1}{x{8.4cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}Confirm source IP and source MAC are as expected and that ARP/GARP is being sent/received as expected.} \tn % Row Count 8 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Optional Configuration - Source VARP}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Peer A \newline ! \newline interface vlan 10 \newline ip address 1.0.10.1/24 \newline ip virtual-router address 192.10.10.254/24 \newline ip virtual-router address 192.10.11.254/24 \newline ! \newline ip route 192.10.10.0/24 vlan 10 \newline ip route 192.10.11.0/24 vlan 10 \newline ! \newline \newline Peer B \newline ! \newline interface vlan 10 \newline ip address 1.0.10.2/24 \newline ip virtual-router address 192.10.10.254/24 \newline ip virtual-router address 192.10.11.254/24 \newline ! \newline ip route 192.10.10.0/24 vlan 10 \newline ip route 192.10.11.0/24 vlan 10 \newline !} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{\seqsplit{https://eos.arista.com/eos-4-15-0f/source-arp-with-virtual-ip/}} \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}}{Peer A \newline ! \newline interface vlan 15 \newline ip address 1.0.15.1/24 \newline ip virtual-router address 1.0.15.254 \newline ! \newline interface vlan 20 \newline ip address 1.0.20.1/24 \newline ip virtual-router address 1.0.20.254 \newline ! \newline ip virtual-router mac-address 001c.7300.0999 \newline ! \newline ip routing \newline ! \newline \newline Peer B \newline ! \newline interface vlan 15 \newline ip address 1.0.15.2/24 \newline ip virtual-router address 1.0.15.254 \newline ! \newline interface vlan 20 \newline ip address 1.0.20.2/24 \newline ip virtual-router address 1.0.20.254 \newline ! \newline ip virtual-router mac-address 001c.7300.0999 \newline ! \newline ip routing \newline !} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{\seqsplit{https://www.arista.com/en/um-eos/eos-section-25-3-vrrp-and-varp-implementation-examples\#ww1152569}} \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}{Optional Configuration - GARP interval}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{ip virtual-router mac-address advertisement-interval} \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}{Optional Configuration - SSH to SVI, etc.}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{ip fhrp accept-mode} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Configures the switch to permit SSH access to the VARP IPs.} \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}{Considerations for VARP}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{VARP uses two IP addresses on each SVI - a physical IP address per MLAG peer and a virtual IP address (VIP).} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{Once configured, the SVI will start GARPing periodically (default every 30 seconds). If a local host tries to reach its DG (the VIP) in between intervals, whichever MLAG peer SVI receives the ARP request will respond with the VIP and VMAC.} \tn % Row Count 8 (+ 5) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{If a local host is trying to reach a remote host in a different VLAN for the first time, the DG for that remote host will ARP for it using the VIP as the Source IP and the physical MAC of the SVI as the Source MAC. This way the ARP reply will reach the asking/correct MLAG peer.} \tn % Row Count 14 (+ 6) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{8.4cm}}{There is a feature with VARP called "Source ARP with a virtual IP" (see Optional Configuration). This is configured using a different subnet than the physical IP address of the SVI and adding a subnet mask. With this configured, the Source IP and Source MAC of the ARP request changes to the VIP and the virtual MAC configured on the switch.} \tn % Row Count 21 (+ 7) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{PLEASE NOTE: It is a misconfiguration if a subnet mask is added when using the {\emph{same}} subnet as the physical address of the SVI. An error message will be generated if this occurs. If this is not corrected, when the DG sends an ARP request for a remote host, instead of the Source MAC being its physical MAC, it will use its virtual MAC as the Source MAC. The ARP reply from the remote host will use the VMAC as its destination MAC and this could hash to either MLAG peer. If the non-asking peer receives it, the ARP reply will be discarded.} \tn % Row Count 32 (+ 11) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{8.4cm}}{\bf\textcolor{white}{Considerations for VARP (cont)}} \tn % Row 5 \SetRowColor{LightBackground} \mymulticolumn{1}{x{8.4cm}}{Check "show ip virtual-router" to confirm configuration.} \tn % Row Count 2 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}