广播消息中的ARP超时

时间:2016-05-20 08:22:58

标签: linux ip tcp-ip arp

假设我有源主机H1(10.1.1.2/24)想要与主机H2(10.1.1.3/24)通信。由于两个主机都在同一子网H1,因此发送ARP广播。 H2回复此广播,最后H1获得H2 MAC地址。因此沟通确立了。

现在如果H2关闭,H1将不会从H2接收ARP回复。那么什么时候H1会等待ARP回复? RFC 826没有谈论任何这样的计时器。

我在一些论坛中发现它是5到30秒。这是对的吗?

此致 Sudhansu

1 个答案:

答案 0 :(得分:1)

在你的描述中,你至少会错过一件事。 ARP回复缓存为ARP条目一段时间。所以H1会在H2停机后向黑洞发送一些流量。这段时间被选为base_reachable_time/23*base_reachable_time/2之间的随机数字。 (随机用于及时分发来自不同设备的请求)。默认情况下,base_reachable_time为30秒。

经过这段随机时间后,H1会尝试更新ARP条目。通过发送间隔为retrans_time_ms的ARP请求(默认为1秒),通过单播消息(直接发送到H1而不向网络广播)执行更新。如果ucast_solicit(默认情况下为3)尝试失败,则执行广播探测。

如果广播探测失败(mcast_solicit尝试间隔retrans_time_ms),则ARP条目被视为不完整。在此检查期间,内核可以将数据包发送到ARP队列中的H2。

总结:

  • 在ARP条目重新验证之前经过了15-45秒
  • (3 + 3)*探测启动后和ARP输入被认为无效之前经过1000毫秒。