创新路
我们一直在努力

为什么推荐下一跳使用IP地址,而不是接口?

概述

我们在配置静态路由时,下一跳通常有两种选择,一种是配置一个接口,另一种是配置一个IP地址,如下图所示:

为什么推荐下一跳使用IP地址,而不是接口,一分钟了解一下

下一跳的两种方式

这两种方式配置以后,看起来网络都是通的,好像没有什么区别。但实际情况不是这样哦,老司机都推荐下一跳使用IP地址,有没有想过为什么呢?我们今天就使用一个例子来阐述老司机的选择。

举例:下一跳配置接口

1. 拓扑

为什么推荐下一跳使用IP地址,而不是接口,一分钟了解一下

拓扑

  • 按照拓扑搭建好测试环境

  • 在R1上访问25.1.1.0/32网段,然后查看ARP表项

2. R1的配置

(1) R1的接口配置

为什么推荐下一跳使用IP地址,而不是接口,一分钟了解一下

R1的F0/0接口配置

(2) R1上配置一条24网段的静态路由,这条静态路由的下一跳使用接口

下一跳使用接口

(3) 查看路由表

为什么推荐下一跳使用IP地址,而不是接口,一分钟了解一下

查看路由表

3. R2的配置

R2在两个接口上配置IP,其它的就不需要了

为什么推荐下一跳使用IP地址,而不是接口,一分钟了解一下

R2配置

4. R5的配置

R5的配置可以不关注,它配置接口IP + 静态路由:

为什么推荐下一跳使用IP地址,而不是接口,一分钟了解一下

R5的接口配置

为什么推荐下一跳使用IP地址,而不是接口,一分钟了解一下

静态路由

5. 测试过程

在R1上分别ping 20.1.1.5,20.1.1.6,20.1.1.200,查看ARP表项:

为什么推荐下一跳使用IP地址,而不是接口,一分钟了解一下

查看ARP表项

6. 结论

如果配置下一跳为接口,则路由器会认为这是一个LAN接口,访问和这条route在同一个网段的所有主机地址,都会发送一个ARP去请求。

例如此例子中,访问任何在25.1.1.0/24网段中的主机,R1都会发送一个ARP Request,去请求对应的MAC地址。

不知道你有没有关注到MAC地址,为什么这些MAC地址是R2呢?并且所有在同一个网段的IP,对应的MAC地址都是一样的?

为什么推荐下一跳使用IP地址,而不是接口,一分钟了解一下

MAC地址

这就涉及到ARP代理的功能的了,R2知道25.1.1.0/24如何转发,所以用它自己的MAC地址回复了。关于ARP代理的内容,如果还有疑问,参加我之前的文章:ARP代理

举例:下一跳配置IP

1. R1配置

组网和配置和上面的相同,只是R1上的下一跳配置为IP地址,如下图所示:

为什么推荐下一跳使用IP地址,而不是接口,一分钟了解一下下一跳地址为IP

查看路由表:

为什么推荐下一跳使用IP地址,而不是接口,一分钟了解一下

路由表

2. 测试

在R1上分别ping 20.1.1.5,20.1.1.6,20.1.1.200:

为什么推荐下一跳使用IP地址,而不是接口,一分钟了解一下

ping三个地址

查看ARP表项:

为什么推荐下一跳使用IP地址,而不是接口,一分钟了解一下

ARP 表项

有没有觉得很奇怪,只有一条静态路由对应的ARP表项,其它的都没有,这样是正确的吗?

这样是正确的,因为配置的下一跳是IP,所以R1访问所有在这个网段的主机,都会使用下一跳(12.1.1.2)对应的MAC去封装。也就是说,R1只需要发送一次ARP Request就可以了,只要这个ARP表项没有老化,后续所有访问25.1.1.0/24网段的主机都使用这个表项。

总结

看完上面的对比,应该理解为啥要推荐下一跳使用IP地址了吧?

是的,就是你想的那样,因为下一跳使用接口时,会有如下的问题:

  • 路由器访问每一个在同一个网段的主机时,都会发送ARP Request去获取MAC,增加网络中的无效流量。

  • 如果掩码很小,则路由器需要维护的ARP表项会非常大,耗费大量的设备的CPU和内存。

  • 极端情况,如果默认路由的下一跳使用接口,则路由器访问任何地址都需要发送ARP请求并且创建ARP表项,这耗费的资源就非常大了。

而下一跳配置IP地址就没有问题了,对于一个网段的所有主机,路由器只需要生成一条ARP表项就可以了,这样就节省很多的资源。

未经允许不得转载:天府数据港官方信息博客 » 为什么推荐下一跳使用IP地址,而不是接口?

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机