如果 arp/邻居条目同时使用“extern_learn”和“permanent”进行编程,“ip neigh flush”命令会抛出“无效参数”错误,但条目会被删除。由于它们是控制平面编程条目,因此不应删除。这是一个已知问题吗?
例如,
ip neigh show|grep 1.2.3.4
1.2.3.4 dev Vlan100 lladdr 00:00:11:22:33:44 extern_learn PERMANENT
ip neigh flush 1.2.3.4
Failed to send flush request: Invalid argument
ip neigh show|grep 1.2.3.4
====> returns nothing
供您参考
uname -a
Linux sonic 4.19.0-9-2-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64 GNU/Linux
答案1
使用的APIip
与最初对条目进行编程时使用的 API 相同,现在它们被删除的方式与“控制平面”删除它们的方式相同——据它所知,它们本来可以添加ip neigh add
用同样的旗帜手动穿过。
可选的“协议”字段应用于区分控制平面添加的条目。它通常出现在路由表中;例如,手动添加的路由默认为“proto boot”,BIRD 将其自己的路由标记为“proto bird”,Quagga/FRR 将其路由标记为“proto zebra”——因此可以使用它ip route flush proto boot
来避免删除自动配置的路由。(看起来这对邻居表来说还不太合适。)