免费 ARP 是如何工作的?

网络工程 以太网 arp 高铁
2021-07-29 13:39:40

免费 ARP 是否像普通 ARP 请求一样工作?

为什么免费 ARP 用于 HSRP?

3个回答

免费 ARP 是一种“提前通知”,它会在其他系统请求(无 ARP 请求)或更新过时信息之前更新其他系统的 ARP 缓存。

当谈到免费ARP时,这些数据包实际上是特殊的ARP请求数据包,而不是人们可能期望的ARP回复数据包。某些原因在RFC 5227 中进行了解释

免费ARP报文具有以下特点:

  • 包中的源IP和目的IP都是发出免费ARP的主机的IP
  • 目的MAC地址为广播MAC地址( ff:ff:ff:ff:ff:ff)
    • 这意味着数据包将被泛洪到交换机上的所有端口
  • 预计不会有回复

使用免费 ARP 的原因有以下几点:

  • 在 IP 更改(故障转移、新 NIC 等)的 MAC 地址后更新 ARP 表
  • 更新 L2 设备(交换机)上的 MAC 地址表,MAC 地址现在位于不同的端口上
  • 当接口上升时发送免费 ARP 以提前通知其他主机有关新的 MAC/IP 绑定,以便他们不必使用 ARP 请求来查找
  • 当收到对免费 ARP 请求的回复时,您知道您的网络中存在 IP 地址冲突

至于您问题的第二部分,HSRPVRRP等使用免费 ARP 更新 L2 设备(交换机)上的 MAC 地址表。此外,还可以选择使用 HSRP 的烧入 MAC 地址而不是“虚拟”地址。在这种情况下,免费 ARP 还会更新 L3 设备/主机上的 ARP 表。

一个ARP欺骗是不是由一个ARP请求提示一个ARP响应。免费 ARP 作为广播帧发送,作为节点向整个网络宣布或更新其 IP 到 MAC 映射的一种方式。

ARP 数据包包含一个“操作码”字段,指示数据包是请求还是响应。Gratuitous ARP 中,Opcode 字段设置为2,表示响应:

在此处输入图片说明

免费 ARP有很多用例,所有用例通常都与更新 ARP 映射或 Switchport MAC 地址表的某种需要有关。

HSRP(和许多其他冗余协议)经常使用免费 ARP。该动画将说明如何:

在此处输入图片说明

注意 RouterA 和 RouterB 共享 IP 地址10.0.0.1和 MAC 地址0053.ffff.1111Host 的默认网关配置为10.0.0.1,并且它们每个都有一个 ARP 映射,指示10.0.0.1IP 地址映射到0053.ffff.1111MAC 地址。由于 MAC 地址和 IP 地址在两个路由器之间共享,因此永远不必更新此 ARP 映射。

但是,当 RouterA 是活动的 HSRP 路由器时,MAC 地址由连接到交换机端口 1 的设备提供服务。如果 RouterA 出现故障,则 RouterB 发送免费 ARP 以更新交换机的 MAC 地址表,该 MAC 地址0053.ffff.1111现在由其提供服务连接到交换机端口 2 的设备。

如果 RouterB 出现故障,则该过程再次发生,RouterA 需要重新接管为 IP/MAC 10.0.0.1/0053.ffff.1111

上面动画中的 HSRP 转换和 GARP 数据包的数据包捕获可以Wireshark 中下载和研究


虽然严格来说不是你问的问题,但鉴于此问答中的评论,我认为提及重复地址检测的一些内容是明智的:

关于重复地址检测和免费 ARP 有一个经常混淆的点。当计算机尝试查看网络上的另一台主机是否正在使用特定 IP 地址时,它不会发送免费 ARP

这样做的原因是根据定义,免费 ARP 旨在更新网络上其他设备的 ARP 映射。如果IP 不是唯一的,我们不希望“唯一性测试”导致更新不正确的 ARP 条目。

实际上,在重复地址检测中使用了一组特定的 ARP 消息:ARP 探测和 ARP 公告

这两个数据包与实际的免费 ARP 之间的关键区别在于ARP Probe没有完整的 IP/MAC 映射,因此 ARP Probe 不可能意外错误地更新 ARP 缓存。

一般的过程是多次发送 ARP Probe,如果 IP 已经在使用,这将提示相关 IP 的所有者发送免费 ARP。如果没有收到响应,则发送方发送ARP 公告以正式声明网络上的 IP 地址。

ARP 公告更类似于免费 ARP,但它(也)在技术上并不相同,因为ARP 公告的操作码为1,表示请求(而免费 ARP 的操作码为2)。

如果你想要一些视频,这里有一个很好的解释。

https://www.youtube.com/watch?v=JPLn6wfAmZY