当系统出现"neighbour: arp_cache: neighbor table overflow!“报错时,这表明系统的ARP(Address Resolution Protocol)缓存表已经达到或超过了其容量限制,无法存储更多的IP-MAC地址映射关系。
ARP中的neighbor table(邻居表)是Linux内核中用于存储和管理IP地址与MAC地址映射关系的核心数据结构
通过ip neigh命令查看或管理邻居表
IPv6中使用NDP(邻居发现协议)替代ARP,功能更全面且安全性更高
arp缓存表溢出会导致ping 127.0.0.1丢包
邻居表以哈希表(hash_buckets)形式组织,每个表项(struct neighbour)包含以下关键字段:
- primary_key:哈希主键,通常为IP地址(IPv4为4字节)。
- ha:邻居的MAC地址。
- nud_state:邻居状态(如NUD_REACHABLE表示可达,NUD_STALE表示过期)。
- dev:关联的网络设备接口。
- arp_queue:等待该邻居MAC地址解析的数据包队列。
Linux内核通过gc_thresh1/2/3参数控制ARP缓存的垃圾回收机制:
- gc_thresh1:ARP表最小条目数,低于此值不触发GC
- gc_thresh2:软限制,超过此值5秒后触发GC
- gc_thresh3:硬限制,超过此值立即触发GC
当不可回收的ARP表项(如处于Reachable状态)数量超过gc_thresh3时,就会报溢出错误
vim /etc/sysctl.conf,添加如下内容:
本文发表于 0001-01-01,最后修改于 0001-01-01。
本站永久域名「 jiavvc.top 」,也可搜索「 后浪笔记一零二四 」找到我。