7c4f47ac98fd2c9b924b928c3c66f13c.png

基本配置


R1

!
hostname r1
!
no ip domain-lookup
!
interface Serial1/0
 ip address 12.1.1.1 255.255.255.0
!

R2

!
hostname r2
!
no ip domain-lookup
!
interface Loopback0
 ip address 2.2.2.2 255.255.255.0
!
interface Serial2/0
 ip address 12.1.1.2 255.255.255.0
!

批注:路由器接口默认是关闭的,所以应将对应的接口开启


如上配置,已经将基本的地址信息配置完成,下面启动基本的RIP


R1(config)#router rip

R1(config-router)#network 12.1.1.0


R2(config)#router rip

R2(config-router)#network 2.2.2.2

R2(config-router)#network 12.1.1.0


//这里我们配的是默认版本的RIPV1版本


验证:


现在我们查看R1是否已经学习到R2的路由条目,通过show ip route命令可以看出路由器是否学习到邻居的路由,以R1为例


r1#show ip route

Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP

D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP

i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area

* - candidate default, U - per-user static route, o - ODR

P - periodic downloaded static route


Gateway of last resort is not set


R 2.0.0.0/8 [120/1] via 12.1.1.2, 00:00:18, Serial2/0

12.0.0.0/24 is subnetted, 1 subnets

C 12.1.1.0 is directly connected, Serial1/0


//通过如上信息我们可以看出本路由器R1现在已经学习到R2的LOOPBACK接口的网段信息


调试:


下面我们来研究如何实现16


我们为了实现这个实验,总体思路是让R2的2.2.2.2这个地址出现16跳,那么也就是说使2.2.2.2这个地址失效就可以了,我们在实验中主要面对的问题是:水平分割、触发更新。为了解决这两个问题,我们首先要关闭水平分割,但当我们关闭水平分割时,我们又会遇到触发更新的问题,为了解决触发更新我们首先要使用被动接口这个命令,但是使用完这条命令后又会面对一个新问题,被动接口的作用是使一个指定的接口只接受邻居的路由信息而不发送自己的路由信息,但是如果不发送的话,R2就不会将2.0.0.0这个路由条目更新给R1,所以我们在最后一步还要把被动接口关闭,关闭被动接口要在关闭环回口之后。


具体步骤如下:

1.关闭水平分割


R1(config)#int s1/0

R1(config-if)#no ip split-horizon


R2(config)#int s2/0

R2(config-if)#no ip split-horizon


//关闭水平分割是为了让R1和R2把2.0.0.0这条路由在彼此之间传递

2.打开R2 serial2/0的被动接口


R2(config)#router rip

R2(config-router)#passive-interface s2/0


//被动接口的作用是使路由器的一个指定端口只接受路由信息不传递路由信息

3.关闭R2的环回口


R2(config)#int lo 0

R2(config-if)#shutdown


//为了模拟路由失效

4.关闭R2serial2/0的被动接口


R2(config)#router rip

R2(config-router)#no passive-interface s2/0


//为了让R2重新更新路由给R1


然后我们打开debug ip rip来查看2.2.2.2这个地址在路由表中的传输情况:


R1#debug ip rip

RIP protocol debugging is on

R1#

*Mar 21 06:39:13.823: RIP:received v1 update from 12.1.1.2 on Serial1/0

*Mar 21 06:39:13.823: 2.0.0.0 in 5 hops

*Mar 21 06:39:14.223: RIP:sending v1 update to 255.255.255.255 via Serial1/0 (12.1.1.1)

*Mar 21 06:39:14.223: RIP: build update entries

*Mar 21 06:39:14.223: network 2.0.0.0 metric 6

*Mar 21 06:39:14.223: subnet 12.1.1.0 metric 1

R1#

*Mar 21 06:39:15.823: RIP: sending v1 flash update to 255.255.255.255 via Serial1/0 (12.1.1.1)

*Mar 21 06:39:15.823: RIP: build flash update entries

*Mar 21 06:39:15.823: network 2.0.0.0 metric 6

*Mar 21 06:39:16.255: RIP:received v1 update from 12.1.1.2 on Serial1/0

*Mar 21 06:39:16.255: 2.0.0.0 in 7 hops

R1#

*Mar 21 06:39:18.263: RIP: sending v1 flash update to 255.255.255.255 via Serial1/0 (12.1.1.1)

*Mar 21 06:39:18.263: RIP: build flash update entries

*Mar 21 06:39:18.263: network 2.0.0.0 metric 8

R1#

*Mar 21 06:39:20.295: RIP:received v1 update from 12.1.1.2 on Serial1/0

*Mar 21 06:39:20.295: 2.0.0.0 in 9 hops

R1#

*Mar 21 06:39:22.295: RIP:sending v1 flash update to 255.255.255.255 via Serial1/0 (12.1.1.1)

*Mar 21 06:39:22.295: RIP: build flash update entries

*Mar 21 06:39:22.295: network 2.0.0.0 metric 10

R1#

*Mar 21 06:39:24.323: RIP:received v1 update from 12.1.1.2 on Serial1/0

*Mar 21 06:39:24.323: 2.0.0.0 in 11 hops

R1#

*Mar 21 06:39:26.323: RIP: sending v1 flash update to 255.255.255.255 via Serial1/0 (12.1.1.1)

*Mar 21 06:39:26.323: RIP: build flash update entries

*Mar 21 06:39:26.323: network 2.0.0.0 metric 12

R1#

*Mar 21 06:39:28.355: RIP:received v1 update from 12.1.1.2 on Serial1/0

*Mar 21 06:39:28.355: 2.0.0.0 in 13 hops

R1#

*Mar 21 06:39:29.863: RIP: received v1 update from 12.1.1.2 on Serial1/0

*Mar 21 06:39:29.863: 2.0.0.0 in 13 hops

*Mar 21 06:39:29.863: 12.1.1.0 in 1 hops

*Mar 21 06:39:30.355: RIP: sending v1 flash update to 255.255.255.255 via Serial1/0 (12.1.1.1)

*Mar 21 06:39:30.355: RIP: build flash update entries

*Mar 21 06:39:30.355: network 2.0.0.0 metric 14

R1#

*Mar 21 06:39:32.383: RIP: received v1 update from 12.1.1.2 on Serial1/0

*Mar 21 06:39:32.383: 2.0.0.0 in 15 hops

R1#

*Mar 21 06:39:34.383: RIP: sending v1 flash update to 255.255.255.255 via Serial1/0 (12.1.1.1)

*Mar 21 06:39:34.383: RIP: build flash update entries

*Mar 21 06:39:34.383: network 2.0.0.0 metric 16

R1#

*Mar 21 06:39:36.415: RIP:received v1 update from 12.1.1.2 on Serial1/0

*Mar 21 06:39:36.415: 2.0.0.0 in 16 hops (inaccessible)



从上面可以看出2.0.0.0这个条目在R1和R2之间这条路有经过了16跳。


总结一下具体的难点:


当关闭水平分割后R1就会把2.0.0.0这条路由传给R2,此时的R2是不会把R1传给他的路由放进路由表的,因为R2跟自己的环回口是直连。然后我们开启被动接口,此时的R2直接收R1传过来的路由信息而不给R1发送自己的路由信息,这样做是为了保证shutdown环回口以后R2不会向R1触发更新,当shutdown环回口之后,由于R2本身不能向R1发送更新,当R2的环回口被关闭时,R2自身的路由表中的直连路由2.2.2.2已经失效,由于现在已经关闭了触发更新这个功能所以R1中的2.0.0.0这条路由没有被删除,最后我们要关闭被动接口,此时R2会把2.0.0.0这条路有发送给R1,R1会更新自己的路由表再次把2.0.0.0这条路由传给R2,在传递过程中2.0.0.0这条路由的条数会被一直加到16跳。为什么R1和R2会把这条路由互相传递呢?因为2.0.0.0这条路由R1首先是从R2学来的,R1对R2是完全信任的,但是R2由于自身的直连路由失效后接收到2.0.0.0这条路由,R2会把这条路由放进自己的路由表然后又传递给R1,由于2.0.0.0是R2从R1学过来的,所以R2完全信任R1。由于互相信任的原因所以这条路由会被R1和R2在彼此之间传递16跳。