lwIP 细节之四:ARP 相关知识

Posted 研究是为了理解

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lwIP 细节之四:ARP 相关知识相关的知识,希望对你有一定的参考价值。

  1. ARP 表项的最大存活时间与宏 ARP_MAXAGE 相关,默认为 240 x 5000ms = 20 分钟。
  2. 当 ARP 表项还有最后一分钟(由宏 ARP_AGE_REREQUEST_USED 控制)存活时间时,lwIP 重发 ARP 请求。
  3. 发出 ARP 请求后,最多等待 5 x ARP_TMR_INTERVAL 秒,默认为 5 x 2 = 10 秒。
  4. 默认情况下,会尽可能创建一个新条目,这意味着可能删除一个活动中的 ARP 表项。由宏 ETHARP_FLAG_TRY_HARD 控制。
  5. ARP 表项最多不能大于 127 (这是 s8_t 类型决定的)。
  6. 只有单播 IP 才会写入 ARP 表项,IPADDR_ANY (0.0.0.0)、IPADDR_BROADCAST (255.255.255.255)、多播 IP 均不会写入 ARP 表。
  7. ARP 在查找表项前,会先看一下上次使用的表项能否命中当前请求,如果命中,则不会再查找表项。

应用

IP 广播设备出现 ARP 风暴。
局域网中有几十台 IP 广播系统,此外还有若干人员定位系统、安全监控系统。现场反馈,只要 IP 广播系统的主机断网(拔网线或者禁用网卡),局域网中的设备有很大概率全部会断网,疑似交换机瘫痪。
交换机厂家去了现场捕获到了数据,发现 IP 广播大量发送 ARP 请求数据包,造成了交换机瘫痪。
在查找 IP 广播为什么会大量发送 ARP 请求数据包的过程中,发现了一个异常点:
IP 广播在连着上位机时,应该每隔 19 分钟向上位机发送一次 ARP 请求,但是抓包数据表明,这个时间缩短到了十几秒。
这是很反常的。
同时进行的测试发现,当局域网中的 ARP 数据包越多, 这个时间越小,可以小到毫秒级。局域网中几十台 IP 广播相互影响,组成了一个正反馈,形成 ARP 风暴。
正是因为发现了 ARP 请求时间异常这个现象,才最终找到了 BUG 所在。

以上是关于lwIP 细节之四:ARP 相关知识的主要内容,如果未能解决你的问题,请参考以下文章

lwIP 细节之四:ARP 相关知识

三LWIP学习笔记之ARP协议

如何通过lwip协议栈发送数据给上位机

LWIP协议栈:ARP协议

lwIP 细节之一:TCP 最大链接数

lwIP 细节之一:TCP 最大链接数