一 linux ARP cache状态图
各个状态的含义如下:
NUD_INCOMPLETE: ARP包已经发出,还没有收到回复
NUD_REACHABLE: ARP缓存有效,可达。
NUD_FAILED: 不可达,请求返回失败
NUD_STALE: 缓存存在,not confirmed for a certain amount of time
NUD_DELAY: 当NUD_STALE状态进行用户发包,进入此状态
NUD_PROBE: NUD_DELAY 查询包无包回应的时候,进入PROBE
二 ARP CACHE 状态机流程
最简单的就是表的从NONE到有,如果有回应就进入REACHABLE,如果无回应就FAILED,被回收掉。
比较复杂的是当REACHABLE 经过”not used for more than
reachable_time“后,就进入了STALE,这个状态比较复杂。下面重点介绍一下STALE状态。具体的linux
代码如下:
在一个arp表创建的时候启动如下的定时器:
static void neigh_timer_handler(unsigned long arg)
{
if (state &