在至少一种实施方式中,对ARP表的容量有硬限制。当ARP缓存已满,并且提供的数据包带有未缓存的目标(或下一跳)时,会发生什么情况?幕后情况如何,对服务质量有什么影响?
例如,Brocade NetIron XMR和Brocade MLX路由器具有可配置的ip-arp
系统最大值。在这种情况下,默认值为8192。/ 19子网的大小。从文档中不清楚这是每个接口还是整个路由器,但是出于这个问题的目的,我们可以假定它是每个接口。
很少有网络人员会故意在接口上配置/ 19子网,但事实并非如此。我们正在将核心路由器从Cisco型号迁移到Brocade。思科和Brocade之间的众多区别之一是,思科接受使用出站接口和下一跳地址定义的静态路由,但Brocade坚持使用另一种。我们删除了下一跳地址并保留了接口。后来,我们了解了我们的方法的错误,并从接口更改为下一跳地址,但是一切似乎在最初就可以正常工作。
+----+ iface0 +----+
| R1 |-----------| R2 |---> (10.1.0.0/16 this way)
+----+.1 .2+----+
10.0.0.0/30
在迁移之前,R1是Cisco,并且具有以下路由。
ip route 10.1.0.0 255.255.0.0 iface0 10.0.0.2
迁移后,R1是Brocade,并且具有以下路线。
ip route 10.1.0.0 255.255.0.0 iface0
R2是Cisco路由器,并且Cisco路由器默认情况下执行代理ARP。这是生产中的(错误)配置,为后来的ARP缓存溢出奠定了基础。
- R1接收发往10.1.0.0/16网络的数据包。
- 根据静态接口路由,目的地的R1 ARP在
iface0
- R2认识到它可以到达目的地,并使用自己的MAC对ARP进行响应。
- R1缓存将远程网络中的IP与R2的MAC相结合的ARP结果。
对于10.1.0.0/16中的每个不同的目的地,都会发生这种情况。因此,即使/ 16正确地划分了R2之外的子网,并且在链接R1和R2的链路上只有两个节点,R1也会遭受ARP缓存过载,因为R1会导致R2的行为就像直接连接所有65k地址一样。
我之所以问这个问题,是因为我希望它能帮助我理解导致几天后导致我们溢出ARP缓存的网络服务故障报告(几天后)。本着StackExchange模型的精神,我试图将其提炼为我认为是一个可以客观回答的明确而具体的问题。
编辑1要清楚,我要问的是数据链路(第2层)和网络(第3层)之间的粘合层的一部分,而不是数据链路层中的MAC转发表。主机或路由器将前者构建为将IP地址映射到MAC地址,而交换机将后者构建为将IP地址映射为端口。
编辑2尽管我感谢响应者付出的努力来解释为什么某些实现不受ARP高速缓存溢出的影响,但我觉得解决这个问题很重要。问题是“什么时候会发生”,而不是“供应商X容易受到影响”。现在,我通过描述一个具体示例来完成自己的任务。
编辑3这不是另一个问题是“如何防止ARP缓存溢出?”