前提须知
rip协议是通过让路由器学习相邻路由器的信息来更新本路由表的信息,这就会产生一种问题:
假设此时有R1和R2两个路由器,R2的一条链路出现故障,但是R1在未更新路由表之前并不知道这条链路已经失效了,于是R1会把这条失效的链路信息再次发给R2,R2收到消息之后又会更新,之后又把失效的路由信息发给R1,重复下去最终造成路由环路
本实验华为模拟器ensp为基础进行实验
实验须知:本实验的路由器AR1220,第一遍实验的时候选择了AR3260,结果以失败告终,AR3260路由器本身带有路由毒化功能,无法关闭,也就是说当一条链路失效之后,路由表立刻将该链路中的PC机设置为不可达,也就是立刻将跳数设置为16,从而无法观察到路由环路现象,但是AR1220路由器本身并没有路由毒化功能,所以通过实验可以清楚的观察到路由环路问题
一、实验拓扑图
二、初始化设置:
AR1路由器设置
<huawei> sys
[huawei] sysname R1
[R1]dhcp enable //(此条命令是开启dhcp协议 以便之后为G0/0/0端口下的PC自动分配ip地址)
[R1]int g0/0/1
[R1-GigabitEthernet0/0/1]ip ad 12.1.1.1 24
[R1-GigabitEthernet0/0/1]undo rip split-horizon //关闭水平分割 水平分割默认是打开的
[R1-GigabitEthernet0/0/1]int g0/0/0
[R1-GigabitEthernet0/0/0]ip ad 192.168.10.1 24
[R1-GigabitEthernet0/0/0]dhcp select interface //将此端口下的Pc机设置为自动获取Ip地址
[R1-GigabitEthernet0/0/0]quit
[R1]rip
[R1-rip-1]network 12.0.0.0
[R1-rip-1]network 192.168.10.0
AR2路由器设置
<huawei> sys
[huawei] sysname R2
[R2]dhcp enable //(此条命令是开启dhcp协议 以便之后为G0/0/0端口下的PC自动分配ip地址)
[R2]int g0/0/1
[R2-GigabitEthernet0/0/1]ip ad 12.1.1.2 24
[R2-GigabitEthernet0/0/1]undo rip split-horizon //关闭水平分割 水平分割默认是打开的
[R2-GigabitEthernet0/0/1]int g0/0/0
[R2-GigabitEthernet0/0/0]ip ad 192.168.20.1 24
[R2-GigabitEthernet0/0/0]dhcp select interface //将此端口下的Pc机设置为自动获取Ip地址
[R2-GigabitEthernet0/0/0]quit
[R2]rip
[R2-rip-1]network 12.0.0.0
[R2-rip-1]network 192.168.20.0
PC机设置
注: 别忘了点“应用”(开始的时候忘了点应用 结果找了半天错误。。。)
之后查看命令行
使用上述命令可以看到PC机以及自动分配了IP地址
同样的操作应用到PC2上
三、测试路由环路
查看环路包括以下几种方法:
- 在R1路由器中使用debug进行查看
- 在R1中使用路由表进行查看
- 在PC机上使用tracert命令查看
(1)在R1路由器上使用debugging查看
R1路由器操作:
<R1>terminal debugging //开启debugging
<R1>debugging rip 1 packet
<R1>dis debugging
在上述操作完成之后,再对R2进行操作:
<R2>sys
[R2]int g0/0/0
[R2-GigabitEthernet0/0/0]shutdown //关闭这个接口的网络 使网络不可达
上述操作完成的同时,立刻查看R1路由器(由于之前R1路由器设置了dis debugging命令 此时就可以看到到192.168.20.0的网络的cost值从2逐步增加到16,表示产生了路由环路)
现象:
< R1 >Sep 6 2013 13:20:57.953.3-05:13 R1 RIP/7/DBG: 6: 13527: Dest 12.1.1.0, Cost 1
< R1 >Sep 6 2013 13:20:57.953.4-05:13 R1 RIP/7/DBG: 6: 13527: Dest 192.168.10.0, Cost 1
< R1 >Sep 6 2013 13:20:57.953.5-05:13 R1 RIP/7/DBG: 6: 13527: Dest 192.168.20.0, Cost 2
< R1 >Sep 6 2013 13:20:59.803.1-05:13 R1 RIP/7/DBG: 6: 13465: RIP 1: Receive response from 12.1.1.2 on GigabitEthernet0/0/1
< R1 >Sep 6 2013 13:20:59.803.2-05:13 R1 RIP/7/DBG: 6: 13476: Packet: Version 1, Cmd response, Length 24
< R1 >Sep 6 2013 13:20:59.803.3-05:13 R1 RIP/7/DBG: 6: 13527: Dest 192.168.20.0, Cost 3
< R1 >Sep 6 2013 13:21:03.953.1-05:13 R1 RIP/7/DBG: 6: 13456: RIP 1: Sending response on interface GigabitEthernet0/0/1 from 12.1.1.1 to 255.255.255.255
< R1 >Sep 6 2013 13:21:03.953.2-05:13 R1 RIP/7/DBG: 6: 13476: Packet: Version 1, Cmd response, Length 24
< R1 >Sep 6 2013 13:21:03.953.3-05:13 R1 RIP/7/DBG: 6: 13527: Dest 192.168.20.0, Cost 4
< R1 >Sep 6 2013 13:21:03.953.4-05:13 R1 RIP/7/DBG: 6: 13456: RIP 1: Sending response on interface GigabitEthernet0/0/0 from 192.168.10.1 to 255.255.255.255
< R1 >Sep 6 2013 13:21:03.953.5-05:13 R1 RIP/7/DBG: 6: 13476: Packet: Version 1, Cmd response, Length 24
< R1 >Sep 6 2013 13:21:03.953.6-05:13 R1 RIP/7/DBG: 6: 13527: Dest 192.168.20.0, Cost 4
< R1 >Sep 6 2013 13:21:07.763.1-05:13 R1 RIP/7/DBG: 6: 13465: RIP 1: Receive response from 12.1.1.2 on GigabitEthernet0/0/1
< R1 >Sep 6 2013 13:21:07.763.2-05:13 R1 RIP/7/DBG: 6: 13476: Packet: Version 1, Cmd response, Length 24
< R1 >Sep 6 2013 13:21:07.763.3-05:13 R1 RIP/7/DBG: 6: 13527: Dest 192.168.20.0, Cost 5
< R1 >………………………中间的省略…………………………………………………
< R1 >Sep 6 2013 13:22:12.34.3-05:13 R2 RIP/7/DBG: 6: 13527: Dest 192.168.20.0, Cost 16
补充几张截图:
上述黑色加粗字体就是实验现象的变化,注意:如果想要停止debugging显示,用undo terminal debugging命令停止
(2)在R1路由器上使用路由表查看
首先在R1路由器上使用dis ip routing-table命令查看路由表,有如下现象:
此时显示到达R2路由器的192.160.20.0这个网络是正常的
当在R2路由器的g0/0/0端口执行shutdown命令之后,再次查看R1的路由表:
…省略…
上述现象表明出现了路由环路问题
(3)在R1网络下的PC机使用tracert命令查看
在R2路由器的接口g0/0/0没有关闭之前,使用tracert命令跟踪到192.168.20.1的路线如下:
此时可以发现并没有路由环路产生
之后在R2路由器的g0/0/0端口执行shutdown命令之后,再次使用tracert命令来跟踪192.168.20.1这条路线,可以发现如下现象:
通过上述截图可以发现已经产生了路由环路现象
注:这里显示的行数在我是用的这个PC机上是无法使用 tracert -h 30 192.168.20.1这样的命令改变的,受限于PC机,可以使用client,这样的话可以执行上述的命令
路由环路的解决方法
路由环路的解决方法很多:
在上述的路由环路实验中,其实本身就有一种解决路由环路的方法:设置最大值(这个无法关闭),我们可以看到当路由数达到16的时候就被认为该网络的不可达的。同样的在上述使用的路由器中,路由器本身默认打开了水平分割(split-horizon)功能,这也是方式路由环路的一种方法,可以使用undo rip split horizon命令关闭水平分割功能,还有一个是毒性反转(poison-reverse)这个也是防止路由环路的一种方法
下面使用税