设我有两条路由都是192.168.0.0,一条直连,一条静态,直连掩码24,静态掩码26,tracert显示去192.168.0.15走了直连;然后我将静态掩码修改成32,成为明细路由,tracert显示就走了明细,不太理解为什么?
(0)
最佳答案
我用模拟器做了一下实验,应该是fib表项造成的,想起来简单说起来就挺麻烦的。具体现象和原理如下:
1.假设你有两条去192.168.0.15的路由,一条是自动生成的直连路由(掩码24位),另一条是手动配置的静态路由(掩码26位)。
2.基于上述假设,由于有直连路由,那么你的设备上必然有个和192.168.0.15/24同段的ip地址192.168.0.x。进而可以得知,你的设备可以接收到同段的arp报文并进行学习。
3.当设备的任意三层接口的ip激活时(比如设备启动、接口undo shutdown等情况下),为了探测地址冲突,一般都会主动发送一次ARP报文(也就是所谓的免费ARP,里面的ip和mac都是接口自己的)。所以你的设备会因为免费ARP或者其他报文的原因学习到192.168.0.15的ARP信息。
4.由于你的设备学习到了192.168.0.15的ARP,因此会在fib表项中添加一条目的地址为192.168.0.15且使用32位掩码的表项。(简单理解就是fib这个表比路由表更优先。具体定义:FIB表是真正指导数据转发的表,其表项可以由路由表中的最优路由条目导入,也可以是由ARP生成的。)
5.dis fib可以看到相关表项。此时你ping 192.168.0.15,报文通过fib表项转发给192.168.0.15(简单点讲就是做了个二层转发而非三层转发,毕竟是同段地址)。
6.通过reset arp all删除学习到的arp,再ping 192.168.0.15,这时由于fib中的相关表项被删除,路径会变更。但如果通信过程中又重新学习到了192.168.0.15的arp,路径又会变回来。
7.把去192.168.0.15的静态路由改为32位,再dis fib,发现原本由arp生成的表项被由主机路由生成的表项覆盖。此时ping 192.168.0.15将通过该表项转发,也就是所谓的会走32位掩码的静态路由。
(0)
兄弟你这个头像,你也是个master?
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
兄弟你这个头像,你也是个master?