前提须知

rip协议是通过让路由器学习相邻路由器的信息来更新本路由表的信息,这就会产生一种问题:
假设此时有R1和R2两个路由器,R2的一条链路出现故障,但是R1在未更新路由表之前并不知道这条链路已经失效了,于是R1会把这条失效的链路信息再次发给R2,R2收到消息之后又会更新,之后又把失效的路由信息发给R1,重复下去最终造成路由环路

本实验华为模拟器ensp为基础进行实验

实验须知:本实验的路由器AR1220,第一遍实验的时候选择了AR3260,结果以失败告终,AR3260路由器本身带有路由毒化功能,无法关闭,也就是说当一条链路失效之后,路由表立刻将该链路中的PC机设置为不可达,也就是立刻将跳数设置为16,从而无法观察到路由环路现象,但是AR1220路由器本身并没有路由毒化功能,所以通过实验可以清楚的观察到路由环路问题

一、实验拓扑图

ibgp 路由环路_ibgp 路由环路

二、初始化设置:

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机设置

ibgp 路由环路_ip地址_02

注: 别忘了点“应用”(开始的时候忘了点应用 结果找了半天错误。。。)

之后查看命令行

ibgp 路由环路_路由表_03

使用上述命令可以看到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

补充几张截图:

ibgp 路由环路_ibgp 路由环路_04


ibgp 路由环路_路由表_05


ibgp 路由环路_路由表_06


ibgp 路由环路_路由表_07

上述黑色加粗字体就是实验现象的变化,注意:如果想要停止debugging显示,用undo terminal debugging命令停止

(2)在R1路由器上使用路由表查看

首先在R1路由器上使用dis ip routing-table命令查看路由表,有如下现象:

ibgp 路由环路_链路_08

此时显示到达R2路由器的192.160.20.0这个网络是正常的

当在R2路由器的g0/0/0端口执行shutdown命令之后,再次查看R1的路由表:

ibgp 路由环路_ip地址_09


ibgp 路由环路_链路_10


ibgp 路由环路_ip地址_11

…省略…

ibgp 路由环路_链路_12

上述现象表明出现了路由环路问题

(3)在R1网络下的PC机使用tracert命令查看

在R2路由器的接口g0/0/0没有关闭之前,使用tracert命令跟踪到192.168.20.1的路线如下:

ibgp 路由环路_链路_13

此时可以发现并没有路由环路产生

之后在R2路由器的g0/0/0端口执行shutdown命令之后,再次使用tracert命令来跟踪192.168.20.1这条路线,可以发现如下现象:

ibgp 路由环路_路由表_14

通过上述截图可以发现已经产生了路由环路现象
注:这里显示的行数在我是用的这个PC机上是无法使用 tracert -h 30 192.168.20.1这样的命令改变的,受限于PC机,可以使用client,这样的话可以执行上述的命令

路由环路的解决方法

路由环路的解决方法很多:
在上述的路由环路实验中,其实本身就有一种解决路由环路的方法:设置最大值(这个无法关闭),我们可以看到当路由数达到16的时候就被认为该网络的不可达的。同样的在上述使用的路由器中,路由器本身默认打开了水平分割(split-horizon)功能,这也是方式路由环路的一种方法,可以使用undo rip split horizon命令关闭水平分割功能,还有一个是毒性反转(poison-reverse)这个也是防止路由环路的一种方法

下面使用税