我注意到 Windows 10 有以下行为。我使用 Windows ping 实用程序每秒左右向有效的 IPV4 地址发送一个 ICMP 数据包。然后我从网络中移除设备,因此 ping 开始失败。根据https://learn.microsoft.com/en-us/troubleshoot/windows-server/networking/address-resolution-protocol-arp-caching-behavior它停止发送 ICMP 数据包,而是开始发送 ARP 请求数据包。这很好理解,也符合规范。
然后,每隔大约 6 秒发送一次 ARP 请求后,它会减慢到每 61 秒才发送一次,2 个数据包间隔 1 秒。这意味着,如果某个设备暂时不可用,一旦它再次可用,可能需要最多 61 秒才能重新发现。我已经验证过,这种情况也会发生在 UDP 数据包上,而不是 ICMP 上。
这给我的应用程序带来了麻烦。设备重新启动后,需要在启动后尽快进行通信。重新启动大约需要 30 秒。如果时间安排不当,可能需要大约 90 秒才能被发现,从而导致我们的系统速度变慢和超时错误。这是一个仅限 IPV4 的系统。
有什么方法可以改变这种行为吗?我已经在 IPV4 参数中看到了各种参数,这些参数与将设备标记为过时的 15-45 秒值有关。但是,我还没有看到任何可以控制多次失败的 ARP(通常为 6 次)后的 61 秒重试间隔的参数。
解决这个问题的其他想法?假设修改监督应用程序来改变超时是不可行的。