How does ARP suppression on a BGP EVPN VXLAN VTEP answer ARP requests locally, and which requests still get flooded across the fabric?
answer
- a table of IP-to-MAC bindings
- snooped locally or learned from type 2
- hit answers, miss floods
- RFC 9161 proxy ARP/ND
basics
~20 sThe VTEP keeps a proxy table of IP-to-MAC bindings, learned by snooping local ARP and from remote type-2 MAC/IP routes, and answers a local ARP request itself on a hit; a request it cannot answer is still flooded to remote VTEPs.
solid answer
~40 sRFC 7432 says a VTEP that has the MAC binding for a requested IP SHOULD answer the ARP request itself, and RFC 9161 details the function, called proxy ARP/ND there. The VTEP builds a per-segment table from three sources: **dynamic** entries snooped from local hosts' ARP, **static** entries provisioned by management, and **EVPN-learned** entries from the IP and MAC in received type-2 routes. A local ARP request that hits the table is answered with the target host's MAC and not flooded; a miss is flooded to remote VTEPs and local hosts as before. RFC 9161 does NOT RECOMMEND suppressing unknown ARP requests or gratuitous ARPs in data centres where hosts move, so flooding is reduced rather than abolished. Aging, refresh probes and duplicate-IP detection keep the table honest.
go deeper
Recall the idea: the VTEP answers ARP for hosts it already knows about, using bindings shared through EVPN, so fewer broadcasts cross the fabric.
Explain the table's three sources and the hit and miss paths, and that the reply carries the target host's MAC rather than the VTEP's.
Show what still floods and why: misses, silent hosts and moves, plus the aging, refresh and duplicate-IP safeguards that keep stale or spoofed bindings out.
Weigh how far to suppress: full suppression needs complete, static tables, while a mobile data centre keeps flooding misses and trades some broadcast for reachability.
## Why ARP is worth suppressing **ARP** requests are broadcast. In a VXLAN segment stretched across many racks, every request for a host's MAC is replicated to every VTEP that serves the VNI and delivered to every host on it, nearly all of which ignore it. RFC 9161 adds a second problem: when a host disappears, some implementations keep retrying ARP for it indefinitely, so the flooding continues for an address nobody owns. A VTEP running **BGP EVPN** already receives the information needed to answer most of those requests: a **MAC/IP Advertisement** (type-2) route can carry a host's IP together with its MAC. RFC 7432 section 10 says that when a VTEP receives an ARP request from a local host and holds the binding for the requested IP, it **SHOULD** perform ARP proxy and reply. **RFC 9161** (Standards Track, 2022) documents the function in detail and calls it **proxy ARP/ND**; "ARP suppression" is the common operational name for the same behaviour. ## Where the bindings come from | Entry kind | Source | Notes | |---|---|---| | Dynamic | snooping ARP (EtherType 0x0806) from local hosts | ARP from remote VTEPs is not snooped | | Static | provisioned by the management system | takes precedence over a learned entry for the same IP | | EVPN-learned | IP and MAC in received type-2 routes | must be created from every valid MAC/IP route | Dynamic entries learned locally are what the VTEP itself advertises in type-2 routes, which is how they become EVPN-learned entries on every other VTEP in the segment. ## The request path 1. A local host sends an ARP request for `10.1.1.20`. 2. The VTEP intercepts it and looks `10.1.1.20` up in its proxy table. 3. **Hit:** it sends an ARP reply carrying the **target host's** MAC, as if the host had answered. The request is not flooded to remote VTEPs or other local hosts. 4. **Miss:** it floods the request to the remote VTEPs of that segment and to its other local hosts, exactly as without suppression. When the owner replies, the binding is learned and advertised, and the next request hits. The reply carries the target's MAC, not the VTEP's: traffic still goes host to host at layer 2, unlike router proxy ARP, where a router answers with its own MAC. ## What still floods - **Misses.** Silent hosts, freshly booted hosts and hosts whose binding aged out. - **Gratuitous ARP and unsolicited Neighbor Advertisements**, which announce moves. - RFC 9161 lets an operator suppress flooding of unknown requests and of gratuitous ARPs separately, but for data centres where fast mobility is expected it says suppressing them is **NOT RECOMMENDED**. Complete suppression suits a network such as an internet exchange point, where every entry can be provisioned statically and nothing moves. ## Keeping the table honest - **Age-time:** a dynamic entry not refreshed by ARP or NA traffic within an administratively chosen age-time is flushed, and its type-2 route withdrawn. - **Send-refresh:** the VTEP may probe a dynamic entry's owner before it ages out, at a third or a half of the age-time per RFC 9161, so an idle but present host is not withdrawn. - **Duplicate-IP detection:** when an IP's MAC changes, the VTEP starts an M-second timer; N moves before it expires declare a duplicate. The defaults in RFC 9161 are **M = 180** seconds and **N = 5**, mirroring RFC 7432's duplicate-MAC check. The VTEP can also send a **confirm** message to the previous owner to catch spoofing quickly. - **Announcing new entries:** RFC 9161 recommends sending a gratuitous ARP or unsolicited NA to local hosts when an EVPN-learned or static entry appears, so host caches stay current. ## IPv6 Neighbor Discovery The same table serves IPv6 as **proxy ND**. Dynamic entries are learned from **Neighbor Advertisements** (ICMPv6 type 136), not from Neighbor Solicitations, because a solicitation lacks the router (R) flag the proxy reply must reproduce. The R and O flags travel to other VTEPs in the ARP/ND extended community on the type-2 route. ## Limits worth stating in an interview - Suppression only works for IPs whose binding some VTEP has learned; it cannot answer for a host that has never spoken. - A host that moves silently leaves a stale entry until aging or a probe corrects it. - Static entries carry an immutable-binding flag so a spoofed ARP cannot overwrite them.
- Why is suppressing every unknown ARP request a bad idea in a data centre?Because some bindings will always be missing: silent hosts, hosts that just booted and hosts that moved without announcing it. If a miss is not flooded, nobody resolves those addresses. RFC 9161 therefore does NOT RECOMMEND suppressing unknown ARP requests or gratuitous ARPs where fast mobility is expected, and reserves full suppression for networks such as exchange points with fully provisioned tables.
- What does a proxy-ARP VTEP do when one IP's MAC binding keeps changing?It runs duplicate-IP detection: on a change it starts an M-second timer, and N moves before it expires declare a duplicate; RFC 9161's defaults are 180 seconds and 5 moves. It should also send a unicast confirm request to the previous owner, so a legitimate host answers and exposes a spoofed binding quickly.
- Why does proxy ND learn from Neighbor Advertisements rather than Neighbor Solicitations?The proxy reply must carry the correct router (R) flag, and only a Neighbor Advertisement carries it. RFC 9161 says a VTEP MUST NOT create dynamic IPv6 entries from solicitations, and it advertises the learned R and O flags in the ARP/ND extended community on the type-2 route.
saying these in an interview costs you the question
- ARP suppression means an ARP request is never flooded across the fabric again.
- The VTEP answers with its own MAC, so all traffic is relayed through it.
- Bindings come only from BGP; a VTEP never snoops its local hosts' ARP.
- With ARP suppression enabled, type-2 routes no longer need to carry IP addresses.
- Suppressing gratuitous ARP flooding is always safe in a data centre.