{"id":56,"date":"2026-07-17T03:49:00","date_gmt":"2026-07-17T03:49:00","guid":{"rendered":"https:\/\/pingsemresposta.com.br\/?p=56"},"modified":"2026-08-08T02:35:16","modified_gmt":"2026-08-08T02:35:16","slug":"garp-based-ep-move-detection","status":"publish","type":"post","link":"https:\/\/pingsemresposta.com.br\/?p=56","title":{"rendered":"GARP-Based EP Move Detection"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Estava programando para que meu primeiro post t\u00e9cnico fosse referente aos protocolos utilizados no Underlay de uma malha VXLAN, mas durante essa semana fui engajado para auxiliar num problema relacionado \u00e0 alta disponibilidade de um sistema e tive que explicar sobre GARP-Based EP Move Detection.<br><br>Antes de explicar sobre a feature de GARP-Based EP Move Detection dentro do ACI acho importante falar sobre o que \u00e9 o GARP e por que ele existe.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">O que \u00e9 GARP(Gratuitous ARP)<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">O GARP costuma ser utilizado em redes de alta-disponibilidade(HA) que fazem uso de um VIP(Virtual IP) para garantir a disponibilidade do sistema com base no conceito de Active\/Stand-By. Ent\u00e3o temos um IP prim\u00e1rio para os n\u00f3s que fazem parte desse sistema e um IP compartilhado entre os n\u00f3s para que o tr\u00e1fego possa ser direcionado para quem estiver atuando como n\u00f3 ativo nesse sistema.<br><br>Em caso de falha do n\u00f3 ativo, parte do processo de failover do sistema \u00e9 mover o tr\u00e1fego para o n\u00f3 Stand-By que, por sua vez, se tornar\u00e1 o n\u00f3 ativo do sistema.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quando esse procedimento de failover do sistema \u00e9 executado, o novo n\u00f3 que se tornou o ativo precisa notificar a rede de que ele \u00e9 o novo respons\u00e1vel pelo tr\u00e1fego direcionado ao sistema. Ent\u00e3o esse novo n\u00f3 ativo envia um GARP, que, no caso, \u00e9 basicamente igual a uma requisi\u00e7\u00e3o ARP, mas que n\u00e3o foi solicitada pela rede; por isso, ele \u00e9 gratuito, ningu\u00e9m pediu\u2026 A partir do inundamento(flood) desse GARP, todos os n\u00f3s dentro do seu dom\u00ednio de broadcast v\u00e3o receber essa informa\u00e7\u00e3o e atualizar suas tabelas ARP com o novo mapeamento de IP-para-MAC.<br><br>Obs .: O GARP em ess\u00eancia \u00e9 um ARP Request &#8220;falso&#8221;, usado para se apresentar \u00e0 rede em vez de atingir um n\u00f3 espec\u00edfico. Segue a <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc5227#section-3\">RFC5227<\/a>, curiosamente, tive que ler a RFC porque me perguntaram se o GARP era um Request ou Reply e eu n\u00e3o tinha certeza da resposta. Na RFC tem um contexto hist\u00f3rico sobre essa decis\u00e3o pelo IETF.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Segue o seguinte cen\u00e1rio:<br><br>Temos uma aplica\u00e7\u00e3o rodando nos VM Clusters ABC e XYZ, essa aplica\u00e7\u00e3o faz o uso do conceito de Active\/Stand-By para alta-disponibilidade.<br><br>VM Cluster ABC MAC: ABC<br>VM Cluster ABC IP Prim\u00e1rio: 192.168.0.100<br>VM Cluster XYZ MAC: XYZ<br>VM Cluster XYZ IP Prim\u00e1rio: 192.168.0.200<br>VIP dos Clusters ABC e XYZ: 192.168.0.150<br>Active: VM Cluster ABC<br>Stand-By: VM Cluster XYZ<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1002\" height=\"734\" src=\"https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-1.png\" alt=\"\" class=\"wp-image-59\" style=\"aspect-ratio:1.36511191883918;width:413px;height:auto\" srcset=\"https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-1.png 1002w, https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-1-300x220.png 300w, https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-1-768x563.png 768w\" sizes=\"auto, (max-width: 1002px) 100vw, 1002px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Seguindo o conceito de Active\/Stand-By somente o n\u00f3 ativo do VM Cluster ABC vai enviar e receber tr\u00e1fego para essa aplica\u00e7\u00e3o, ent\u00e3o todo tr\u00e1fego destinado ao VIP(192.168.0.150) vai conter o MAC do VM Cluster ABC.<br><br>Assim que ocorre uma falha no n\u00f3 ativo (no VM Cluster ABC), ou quando a fun\u00e7\u00e3o de ativo \u00e9 movida para o VM Cluster XYZ, a VM que assumir a aplica\u00e7\u00e3o precisa notificar a rede sobre a nova localiza\u00e7\u00e3o do VIP. Para isso, esse novo n\u00f3 envia um GARP, garantindo que os equipamentos da rede tenham suas tabelas ARP e CAM (ou o EPM, no caso do ACI) atualizadas imediatamente.<br><br>Obs: Se for um protocolo\/aplica\u00e7\u00e3o de redund\u00e2ncia que utiliza MAC-Virtual, o GARP vai servir apenas para atualizar a localiza\u00e7\u00e3o do MAC na tabela CAM, e se utilizar o MAC-Fisico, o GARP vai servir para atualizar a localiza\u00e7\u00e3o do MAC na tabela CAM e atualizar a tabela ARP com o novo mapeamento de IP-x-MAC<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"605\" src=\"https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-3-1024x605.png\" alt=\"\" class=\"wp-image-63\" style=\"aspect-ratio:1.692582880609038;width:562px;height:auto\" srcset=\"https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-3-1024x605.png 1024w, https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-3-300x177.png 300w, https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-3-768x454.png 768w, https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-3.png 1242w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Agora que sabemos como o processo de GARP funciona, vamos para a parte interessante, que \u00e9 entender o por que essa configura\u00e7\u00e3o existe, e como funciona.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">GARP-Based EP Move Detection<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\"><br>A funcionalidade de GARP-Based EP Move Detection foi desenvolvida para resolver um problema antigo(CSCus77627), em que o ACI n\u00e3o conseguia atualizar sua tabela EPM, caso houvesse uma altera\u00e7\u00e3o do mapeamento MAC-IP recebido na mesma porta e EPG do mapeamento antigo. <br><br>Obs: Lembrando que o ACI s\u00f3 faz o registro de IP-MAC quando temos a fun\u00e7\u00e3o de Unicast Routing habilitada no BD, sem unicast routing no BD, o ACI s\u00f3 faz aprendizados de MAC.<br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"357\" src=\"https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-4-1024x357.png\" alt=\"\" class=\"wp-image-65\" srcset=\"https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-4-1024x357.png 1024w, https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-4-300x105.png 300w, https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-4-768x268.png 768w, https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-4-1536x535.png 1536w, https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-4.png 1980w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Esse problema acontecia somente em switches Nexus 9k Gen-1, nessa \u00e9poca os switches Nexus ainda utilizavam os chipsets Broadcom, a partir dos Nexus 9K Gen-2 a Cisco passou a utilizar seu chipset proprietario Cisco Cloud Scale e esse problema foi resolvido dos modelos Gen-2 e adiante.<br><br>Obs: Nexus 9K Gen-1 possui as nomenclaturas &#8220;PQ&#8221;, &#8220;PX&#8221; e &#8220;TX&#8221;. Esses atingiram status EoS(End-Of-Support) em Outubro de 2023 e a partir do ACI vers\u00e3o 5.0(1), a fabric n\u00e3o consegue mais fazer upgrade de software para esses switches.<br><br>A op\u00e7\u00e3o para configura\u00e7\u00e3o dessa feature fica dentro das configura\u00e7\u00f5es de L3 do BD.<br><strong><em>Tenant -&gt; Networking -&gt; BD -&gt; Subnet<\/em><\/strong><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"539\" src=\"https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-6-1024x539.png\" alt=\"\" class=\"wp-image-95\" srcset=\"https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-6-1024x539.png 1024w, https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-6-300x158.png 300w, https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-6-768x404.png 768w, https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-6-1536x809.png 1536w, https:\/\/pingsemresposta.com.br\/wp-content\/uploads\/2026\/07\/image-6-2048x1079.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Obs .: \u00c9 necess\u00e1rio que Unicast Routing e ARP Flooding estejam configurados para que essa funcionalidade tenha efeito.<br><br>Apesar dessa feature ter nascido por causa desse problema dos switches Gen-1, ao longo do tempo ela foi integrada a outras funcionalidades que vieram depois dela. Atualmente essa funcionalidade serve apenas para designs como:<br><br> &#8211; DSR(Direct Server Return)<br> &#8211; Service-Graph PBR<br><br>Utilizando esses designs, a ativa\u00e7\u00e3o do GARP-Based EP Move Detection possui o prop\u00f3sito de permitir que a malha VXLAN do ACI possa processar mensagens GARP encaminhadas para o ACI, mesmo com o recurso de IP Data-Plane Learning desabilitado.<br><br>Obs: IP Data-Plane Learning deve estar desabilitado nesses designs para que, o ACI n\u00e3o aprenda incorretamente a localiza\u00e7\u00e3o dos VIPs, j\u00e1 que em ambos os cen\u00e1rios teriamos diferentes MACs origem para o mesmo IP Origem enviando traf\u00e9go para a malha em locais diferentes, e isso iria for\u00e7ar o ACI a aprender o endpoint original na porta do firewall ao inv\u00e9s da localiza\u00e7\u00e3o correta.<br><br>Obs: No futuro farei um post sobre DSR e Service-Graph PBR com uma explica\u00e7\u00e3o mais detalhada e com diagramas sobre o porqu\u00ea IP Data-Plane Learning deve ficar desabilitado para essas arquiteturas.<br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Estava programando para que meu primeiro post t\u00e9cnico fosse referente aos protocolos utilizados no Underlay de uma malha VXLAN, mas durante essa semana fui engajado para auxiliar num problema relacionado \u00e0 alta disponibilidade de um sistema e tive que explicar sobre GARP-Based EP Move Detection. Antes de explicar sobre a feature de GARP-Based EP Move &#8230; <a title=\"GARP-Based EP Move Detection\" class=\"read-more\" href=\"https:\/\/pingsemresposta.com.br\/?p=56\" aria-label=\"Read more about GARP-Based EP Move Detection\">Ler mais<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-56","post","type-post","status-publish","format-standard","hentry","category-aci"],"_links":{"self":[{"href":"https:\/\/pingsemresposta.com.br\/index.php?rest_route=\/wp\/v2\/posts\/56","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pingsemresposta.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pingsemresposta.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pingsemresposta.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pingsemresposta.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=56"}],"version-history":[{"count":20,"href":"https:\/\/pingsemresposta.com.br\/index.php?rest_route=\/wp\/v2\/posts\/56\/revisions"}],"predecessor-version":[{"id":155,"href":"https:\/\/pingsemresposta.com.br\/index.php?rest_route=\/wp\/v2\/posts\/56\/revisions\/155"}],"wp:attachment":[{"href":"https:\/\/pingsemresposta.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=56"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pingsemresposta.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=56"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pingsemresposta.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=56"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}