设为首页收藏本站language 语言切换
楼主: huyudong118
收起左侧

[求助] 关于一条静态路由的奇怪实验

[复制链接]
发表于 2014-6-2 12:32:17 | 显示全部楼层
这个问题没有那么复杂,跟你关不关proxy-arp,ip redirects都没关系。
首先,R1上,下一跳172.16.1.2有路由就认为可达,它又不会去发icmp看看1.2到底通不通。所以静态路由肯定一直存在。
第二,有下一跳172.16.1.2的mac地址,icmp包就能发出去。所以,不管是你没清arp时原来的残留,还是手动写一个静态,都能满足。不管这个mac对不对,这个icmp都能封包成功并发出。
第三,icmp是走2层出去的,发现你的目的mac未知(不管残留还是瞎写,在交换机这都是未知,mac address-table里都没有),直接泛洪出去,R3收到,回包。
通了。
16# 2014-6-2 12:32:17 回复 收起回复
回复

使用道具 举报

 楼主| 发表于 2014-6-2 14:54:15 | 显示全部楼层
q0066421 发表于 2014-6-2 12:32
这个问题没有那么复杂,跟你关不关proxy-arp,ip redirects都没关系。
首先,R1上,下一跳172.16.1.2有路 ...

你好~终于等到一个理解我实验的人了,我有几个问题,能否为我解析下
1、R1 PING 3.3.3.3 的时候,ICMP包为什么走了二层?路由接口过滤这概念我不是很理解(一个端口收到目标MAC地址不是指向自己接口的报文会怎么处理,走2层(前提是3层交换机)?丢包?(路由器)
2、在没收shutdownR2前,R1到3.3.3.3 是否出现两条路?  R1有到3.3.3.3的静态路由,可以出口是VLAN1,也就是包会在VLAN1所在的接口泛洪 ,R2收到后继续3层转发,这个相信大家都能理解。第二条路就是这个包泛洪到了R3,R3查看目标MAC地址不是指向自己SVI接口的地址,走2层转发。 那么问题就来了,我在R1上 tracer3.3.3.3  ,无论tracer多少次都没有出现 R1-->R3  ,只会出现 R1--->R2--->R3 ,这是为什么?难道R1会识别优先选择3层转发?在3层转发失败后才用2层转发?
3、关于2层转发的问题,R3收到R1泛洪过来的报文,目标MAC是R2的接口MAC地址,执行2层转发,再查看MAC-table ,寻找目标MAC地址的出口,可是在R3上的MAC-TABLE 关于R2的MAC地址表是指回R1的。这样他怎么能通? 那么我就想R3收到这个报文还是执行3层转发,(R3的VALN1接口收到这个报文,目标MAC地址是单播的,但又不是指向自己接口的MAC地址,但还是接收了,然后拆以太封装,查看目标ip,根据路由表继续转发),所以有没有什么资料解析关于一个路由口收到目标MAC不是指向自己接口的MAC的报文会怎么处理?
17# 2014-6-2 14:54:15 回复 收起回复
回复

使用道具 举报

 楼主| 发表于 2014-6-2 15:07:18 | 显示全部楼层
q0066421 发表于 2014-6-2 12:32
这个问题没有那么复杂,跟你关不关proxy-arp,ip redirects都没关系。
首先,R1上,下一跳172.16.1.2有路 ...

我突然有点想通了,
在R2没有shutdown前,R1是有关于172.1.1.2的MAC-TABLE ,查看路由表从VLAN1口发出,再查看MAC-TABLE,关于 172.1.1.2的MAC表示从R1 和R2互联口发出,这样只有R2能收到。
R2shutdown后,没有了关于172.1.1.2 的2层MAC转发表,所以要泛洪到VLAN1所有接口,这样就被泛洪到了R3,然后就R3转发(这样就接着还是R3收到一个目标不是自己接口MAC的报文会怎么处理的问题?)
18# 2014-6-2 15:07:18 回复 收起回复
回复

使用道具 举报

发表于 2014-6-2 16:14:49 | 显示全部楼层
huyudong118 发表于 2014-6-2 10:47
恩~你是按我的拓扑做的?配置都一样? R2down的时候 R1这边的VLAN1有没有DOWN?

R2 down 怎么会影响R1的SVI··· SVI只有当某一个接口属于这个SVI所在的VLAN 且是UP UP SVI才能UP···反之亦然·· 之所以不通是因为你的路由写的出接口是R2 R2都DWON了 怎么可能通
19# 2014-6-2 16:14:49 回复 收起回复
回复

使用道具 举报

发表于 2014-6-2 20:55:56 | 显示全部楼层
huyudong118 发表于 2014-6-2 15:07
我突然有点想通了,
在R2没有shutdown前,R1是有关于172.1.1.2的MAC-TABLE ,查看路由表从VLAN1口发出, ...

我的理解:
我说的“第三,icmp是走2层出去的”不严谨,icmp是查3层路由表,3.3.3.3的下一跳172.1.1.2,递归出逃出端口vlan1,然后交给svi处理,通过2层出去了。
交换机收到报文,查找mac-address table,目的mac如果是自己端口mac,就继续拆包处理,不是自己,就转发或泛洪。
路由器收到报文,拆到2层,如果目的mac是自己,就进行2层处理(填充arp表项)后交给3层,如果不是自己,直接交给3层。
当3层端口收到报文,肯定是3层转发;2层端口收到报文,肯定也是2层转发,只不过当这个报文的目的mac就是本svi时,会转给3层继续处理,就是下一步的事了。
这些没有明确看到过,只是自己的理解,仅供参考。
20# 2014-6-2 20:55:56 回复 收起回复
回复

使用道具 举报

 楼主| 发表于 2014-6-2 21:55:24 | 显示全部楼层
q0066421 发表于 2014-6-2 20:55
我的理解:
我说的“第三,icmp是走2层出去的”不严谨,icmp是查3层路由表,3.3.3.3的下一跳172.1.1.2, ...

你好~非常感谢你的回答~
路由器收到报文,拆到2层,如果目的mac是自己,就进行2层处理(填充arp表项)后交给3层,如果不是自己,直接交给3层

按你这么说:也就是一个路由口收到一个 目标MAC不是指向 自己接口的MAC 的报文 会直接交给3层处理。

现在也只能这么理解,但还是希望有什么官方的文档能解析这个原理~
21# 2014-6-2 21:55:24 回复 收起回复
回复

使用道具 举报

发表于 2014-6-3 10:36:38 | 显示全部楼层
路过了解一下
22# 2014-6-3 10:36:38 回复 收起回复
回复

使用道具 举报

发表于 2014-6-3 14:54:11 | 显示全部楼层
R1pingR3下一跳应该在R1上呀,为什么要指向R2呀?求解
23# 2014-6-3 14:54:11 回复 收起回复
回复

使用道具 举报

发表于 2014-6-4 11:23:19 | 显示全部楼层
R1pingR3应该把R1的下一跳指向R3呀,为什么要指向R2
24# 2014-6-4 11:23:19 回复 收起回复
回复

使用道具 举报

发表于 2014-6-4 17:40:16 | 显示全部楼层
(wangyang) 发表于 2014-6-4 11:23
R1pingR3应该把R1的下一跳指向R3呀,为什么要指向R2

指向R3就没有这个帖子了
25# 2014-6-4 17:40:16 回复 收起回复
回复

使用道具 举报

发表于 2014-6-5 09:48:26 | 显示全部楼层
用GNS模拟交换机会有些问题,谁有真机验证一下?
26# 2014-6-5 09:48:26 回复 收起回复
回复

使用道具 举报

发表于 2014-6-5 12:24:02 | 显示全部楼层

27# 2014-6-5 12:24:02 回复 收起回复
回复

使用道具 举报

发表于 2014-6-6 00:18:49 | 显示全部楼层
飘过
28# 2014-6-6 00:18:49 回复 收起回复
回复

使用道具 举报

发表于 2014-6-6 13:51:52 | 显示全部楼层
本帖最后由 fule2004 于 2014-6-6 14:02 编辑

根据上面的各位的回复,我整理了下:
1.R1ping 3.3.3.3 R1查看自己的路由表,发现自己有关于3.3.3.3的路由
     3.0.0.0/24 is subnetted, 1 subnets
S       3.3.3.0 [1/0] via 172.1.1.2
     172.1.0.0/24 is subnetted, 1 subnets
C       172.1.1.0 is directly connected, Vlan1

下一跳的地址为 172.1.1.2

2.然后转到二层查找关于172.1.1.2 ARP表项

R1#show ip arp
Protocol  Address          Age (min)  Hardware Addr   Type   Interface
Internet  172.1.1.4              74   c405.1568.0000  ARPA   Vlan1
Internet  172.1.1.1               -   c400.1568.0000  ARPA   Vlan1
Internet  172.1.1.2              73   c401.1568.0000  ARPA   Vlan1
Internet  172.1.1.3              64   c404.1568.0000  ARPA   Vlan1

发现 172.1.1.2 的MAC地址为 c401.1568.0000

接着R1会查找自己的MAC-ADDRESS-TABLE 查找c401.1568.0000 是从哪个端口学习到的
R1#SHOW MAC-address-table
Destination Address  Address Type  VLAN  Destination Port
-------------------  ------------  ----  --------------------
c400.1568.0000          Self          1     Vlan1
c405.1568.0000          Dynamic       1     FastEthernet1/0

发现自己的MAC-address-table 没有关于c401.1568.0000的条目时,R1的二层处理模块会将ICMP报文从所有端口上泛洪出去!
这样R3就可以收到了ping 3.3.3.3的包,并回复给R1.
我通过下面的拓扑验证了泛洪机制:
当R2 f0/0 shutdown后,在R1上ping 3.3.3.3,在R1<-------->R4的链路上可以抓ICMP的包
总结:
R1在R3 f0/0 shutdown后还可以ping通3.3.3.3的原因有两个
1、在R1上存在关于到3.3.3.3的下一跳接口172.1.1.2的ARP条目(如果这一条目不存在的话,R1会发出ARP请求包,询问172.1.1.2的MAC地址);
2、R1的二层将ICMP进行泛洪了,把ICMP包在每个端口都发送了一遍,R3才可以收到ping 3.3.3.3的包并回复;







泛洪的百科

泛洪的百科

拓扑

拓扑

R1<--->R4抓包

R1<--->R4抓包
29# 2014-6-6 13:51:52 回复 收起回复
回复

使用道具 举报

发表于 2014-6-6 15:13:34 | 显示全部楼层
本帖最后由 VS_myself 于 2014-6-6 15:22 编辑

刚开始没看各位的解答 现在看了有点明白了
30# 2014-6-6 15:13:34 回复 收起回复
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-5-11 14:45 , Processed in 0.088955 second(s), 21 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表