乐趣区

BGP-EVPN-ARP-抑制

在 EVPN 中,解决 BUM 报文,通常是使用头端复制的方式 (具体体现是在桥中添加 mac 地址为全 0 的 FDB 表项进行头端复制)。当有很多的 arp 广播请求报文的时候,容易造成广播泛滥。采用 ARP 抑制可以有效限制广播 ARP 报文的数量。

ARP 抑制的原理是:当 VTEP 接收到广播 ARP 请求报文时,会先查看自己的 overlay 邻居表,如果存在则将广播 arp 请求报文替换成单播 arp 请求报文 (这与 arp 代答是不同的,arp 代答是直接回应),然后将单播报文发送给目的主机,目的主机收到后,回应一个应答报文给源主机。VTEP 通过 EVPN 学习到了很多主机的 mac/ip 对。该方案可以有效的减少 arp 广播报文。

ARP 抑制

如上图所示,VXLAN 三层网关通过动态学习终端租户的 ARP 表项,再根据 ARP 表项生成主机信息(包括主机 IP 地址、MAC 地址、VTEP 地址和 VNI ID),并将主机信息通过 MP-BGP 或 BGP EVPN 对外发布,使其他的 BGP 邻居可以学习到主机信息。VXLAN 二层网关学习到的主机信息用于广播抑制。Server1 初次访问 Server2 时,Server1 会向 Server2 发送 ARP 广播请求报文,请求目的主机
Server2 的 MAC 地址,具体实现过程如下:

  1. Server1 发送 ARP 请求报文,请求目的主机 Server2 的 MAC 地址。
  2. 作为 VXLAN 二层网关的 Device1 收到 ARP 请求报文后,查询主机信息。
    – 如果主机信息中有目的主机信息,Device1 将 ARP 请求报文中的广播目的 MA 地址和 Target MAC 地址替换为目的主机的 MAC 地址,并进行 VXLAN 封装后转发。
    – 如果主机信息中没有目的主机信息,ARP 请求报文中的广播目的 MAC 地址不变,Device1 进行 VXLAN 封装后转发。
  3. 作为 VXLAN 二层网关的 Device2 收到封装后的 ARP 请求报文进行 VXLAN 解封装获取内层二层报文,判断报文的目的 MAC 是否为广播地址。
    – 是,在对应的二层广播域内非 VXLAN 网络侧进行广播处理。
    – 不是,发送给对应的目的主机。
  4. 目的主机 Server2 收到单播 ARP 请求报文后,进行 ARP 应答。
  5. Server1 收到 ARP 应答报文建立 ARP 缓存表,并可以与 Server2 通信。

LINUX 配置 ARP 抑制

linux 可以使用如下命令开启 arp 抑制功能

sudo bridge link set dev eth0 neigh_suppress on
退出移动版