lwIP 细节之四:ARP 相关知识
Posted 研究是为了理解
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lwIP 细节之四:ARP 相关知识相关的知识,希望对你有一定的参考价值。
- ARP 表项的最大存活时间与宏
ARP_MAXAGE
相关,默认为 240 x 5000ms = 20 分钟。 - 当 ARP 表项还有最后一分钟(由宏
ARP_AGE_REREQUEST_USED
控制)存活时间时,lwIP 重发 ARP 请求。 - 发出 ARP 请求后,最多等待 5 x
ARP_TMR_INTERVAL
秒,默认为 5 x 2 = 10 秒。 - 默认情况下,会尽可能创建一个新条目,这意味着可能删除一个活动中的 ARP 表项。由宏
ETHARP_FLAG_TRY_HARD
控制。 - ARP 表项最多不能大于 127 (这是
s8_t
类型决定的)。 - 只有单播 IP 才会写入 ARP 表项,
IPADDR_ANY
(0.0.0.0)、IPADDR_BROADCAST
(255.255.255.255)、多播 IP 均不会写入 ARP 表。 - ARP 在查找表项前,会先看一下上次使用的表项能否命中当前请求,如果命中,则不会再查找表项。
应用
IP 广播设备出现 ARP 风暴。
局域网中有几十台 IP 广播系统,此外还有若干人员定位系统、安全监控系统。现场反馈,只要 IP 广播系统的主机断网(拔网线或者禁用网卡),局域网中的设备有很大概率全部会断网,疑似交换机瘫痪。
交换机厂家去了现场捕获到了数据,发现 IP 广播大量发送 ARP 请求数据包,造成了交换机瘫痪。
在查找 IP 广播为什么会大量发送 ARP 请求数据包的过程中,发现了一个异常点:
IP 广播在连着上位机时,应该每隔 19 分钟向上位机发送一次 ARP 请求,但是抓包数据表明,这个时间缩短到了十几秒。
这是很反常的。
同时进行的测试发现,当局域网中的 ARP 数据包越多, 这个时间越小,可以小到毫秒级。局域网中几十台 IP 广播相互影响,组成了一个正反馈,形成 ARP 风暴。
正是因为发现了 ARP 请求时间异常这个现象,才最终找到了 BUG 所在。
以上是关于lwIP 细节之四:ARP 相关知识的主要内容,如果未能解决你的问题,请参考以下文章