路由信息协议(Routing Information Protocol,缩写:RIP),是一种使用最广泛的内部网关协议(IGP),属于网络层,一种在网关与主机之间交换路由选择信息的标准。它可以通过不断的交换信息让路由器动态的适应网络连接的变化,这些信息包括每个路由器可以到达哪些网络,这些网络有多远等。

RIP协议有以下特点:

(1)RIP是内部网关协议,使用的是距离矢量算法。

(2)RIP主要有三个版本:

RIPv1:RIPv1使用分类路由,在它的路由更新(Routing Updates)中并不带有子网的资讯,因此它无法支持可变长度子网掩码。这个限制造成在RIPv1的网络中,同级网络无法使用不同的子网掩码。

另外,它也不支持对路由过程的认证,使得RIPv1有一些轻微的弱点,有被***的可能。

RIPv2:因为RIPv1的缺陷,RIPv2在1994年被提出,将子网络的资讯包含在内,通过这样的方式提供无类别域间路由,不过对于最大节点数15的这个限制仍然被保留着。针对安全性的问题,RIPv2通过加密达到认证效果。

RIPng:主要是针对IPv6做一些延伸的规范。 RIPng 没有更新认证。

(3)RIP协议以跳数作为网络度量值。

(4)RIP协议采用广播或组播进行通信,其中RIPv1只支持广播,而RIPv2除支持广播外还支持组播。

(5)RIP协议支持主机被动模式,即RIP协议允许主机只接收和更新路由信息而不发送信息。(只收不发)

(6)RIP协议支持默认路由传播。

(7)RIP协议的网络直径不超过15跳,适合于中小型网络。16跳时认为网络不可达。

(8)RIPv1是有类路由协议,RIPv2是无类路由协议,即RIPv2的报文中含有掩码信息。


RIPv2的特性(实验)

上文我们提到,RIPv1无法支持可变长度子网掩码,也不支持认证。这种特性直接导致了RIPv2的提出,并且目前RIPv1几乎被完全淘汰而不再使用。RIPv2支持路由的自动汇总,支持可变长子网掩码与认证。下面我们通过模拟实验来熟悉一下RIPv2的相关特性。

RIP认证与版本兼容性问题_第1张图片

假定有如上两台路由器,R1连接了三台PC(通过配置环回口来模拟)。

1. RIP自动汇总

R1


//配置环回口模拟PC

R1(config)#interface loopback 0

R1(config-if)#ip address 172.16.1.1 255.255.255.0

R1(config-if)#no shutdown 

R1(config-if)#exit

R1(config)#interface loopback 1

R1(config-if)#ip address 172.16.2.1 255.255.255.0

R1(config-if)#no shutdown 

R1(config-if)#exit

R1(config)#interface loopback 2

R1(config-if)#ip address 172.16.3.1 255.255.255.0

R1(config-if)#no shutdown 

R1(config-if)#exit

//运行RIP协议

R1(config)#router rip

R1(config-router)#version 2

//宣告网段。RIP宣告网段按照主类进行宣告

R1(config-router)#network 172.16.0.0 

R1(config-router)#network 192.168.1.0

R1(config-router)#exit

R1(config)#interface f0/0

R1(config-if)#ip address 192.168.1.1 255.255.255.0

R1(config-if)#no shutdown 

R1(config-if)#exit

R2


R2(config)#router rip

R2(config-router)#version 2

R2(config-router)#network 192.168.1.0

R2(config-router)#exit

R2(config)#interface f0/0

R2(config-if)#ip address 192.168.1.2 255.255.255.0

R2(config-if)#no shutdown 

R2(config-if)#exit

此时,两台设备连通性良好。在R2上查看路由条目,可发现得到的路由条目是汇总后的。


R2(config)#do sh ip route

Codes: C - connected, S - static, 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

       i - IS-IS, su - IS-IS summary, 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    172.16.0.0/16 [120/1] via 192.168.1.1, 00:00:24, FastEthernet0/0

C    192.168.1.0/24 is directly connected, FastEthernet0/0

自动汇总的路由条目可能会存在路由黑洞,这一点我们可以通过实验验证。

RIP认证与版本兼容性问题_第2张图片

可以发现,我们用R2去ping 一个未曾声明但是包含在汇总条目里的IP地址时,会出现UUUUU的情况(UUUUU表示报文已发出,但下一跳不可达)。这样的情况会消耗两台路由器的资源。要解决这个问题,我们只需关闭关闭自动汇总即可。


R1(config)#router rip

R1(config-router)#no auto-summary 

R1(config-router)#exit

现在我们再ping不存在的IP地址,会发现.....(表示报文未发出),这样便不会浪费资源了。

RIP认证与版本兼容性问题_第3张图片


2. 手动汇总

为避免因自动汇总而出现的路由黑洞,多数情况下我们需要进行手动汇总。


//在接口下手动汇总

R1(config)#interface f0/0

R1(config-if)#ip summary-address rip 172.16.0.0 255.255.252.0

R1(config-if)#exit

RIP认证与版本兼容性问题_第4张图片

手动汇总后,便不会出现路由黑洞了。


3. RIP认证

由于RIP没有邻居的概念,所以自己并不知道发出去的路由更新是不是有路由器收到,同样也不知道会被什么样的路由器收到,因为RIP的路由更新是明文的,网络中无论谁收到,都可以读取里面的信息,这就难免会有不怀好意者窃听RIP的路由信息。为了防止路由信息被非法窃取,RIP v2可以相互认证,只有能够通过认证的路由器,才能够获得路由更新。

除此之外,key chain名字KEYID可以不一样,钥匙名字不影响认证,但是钥匙编号和密码必须一样。

一个接口只能设置一个钥匙


//定义钥匙名字

R1(config)#key chain R1

//定义钥匙编号

R1(config-keychain)#key 1

//定义钥匙密码

R1(config-keychain-key)#key-string cisco

R1(config-keychain-key)#exit

R1(config-keychain)#exit

R1(config)#interface f0/0

//定义认证模式为密文认证(text为明文认证)

R1(config-if)#ip rip authentication mode md5

//设置认证密码

R1(config-if)#ip rip authentication key-chain R1

R1(config-if)#exit

R2上同样也要做认证配置


R2(config)#key chain R2

R2(config-keychain)#key 1

R2(config-keychain-key)#key-string cisco

R2(config-keychain-key)#exit 

R2(config-keychain)#exit

R2(config)#interface f0/0

//定义认证模式为密文认证(text为明文认证)

R2(config-if)#ip rip authentication mode md5

//设置认证密码

R2(config-if)#ip rip authentication key-chain R2

R2(config-if)#exit

配置完成后,因两台路由器的钥匙编号与密码相同,故可以相互更新路由条目。


4. RIP版本不兼容问题

RIPv1与RIPv2版本是不兼容的。假使一个网络内部的两台路由器一台运行版本1,而另一台运行版本2,正常情况下这两台设备将无法正常更新路由条目。要使他们能够正常更新路由条目,则需要配置版本兼容性。

以R2为例,在R2上做如下配置


R2(config)#interface f0/0

//允许R2接收版本1的报文

R2(config-if)#ip rip receive version 1

//允许R2发送版本2的报文

R2(config-if)#ip rip send version 1

现在R2可以更新从R1接收到的路由条目,同时R2发出的路由条目也能够被R1识别并更新。


5. RIP偏移列表策略

通过对路由条目属性的调整,从而影响数据的转发方向——策略

当在网络中,去往一个目的IP存在多种路径的时候,报文发送的路径受度量值(即跳数)的大小影响。度量值越小,该路径越优。

RIP只能增大度量值,不能减小。当然增大的度量值可以no 掉。

RIP认证与版本兼容性问题_第5张图片

上图所示的实验,R2的报文发送到192.168.1.1有两条路径,现在要求该报文优先通过R1发送出去,请配置。

R1


R1(config)#interface loopback 0

R1(config-if)#ip address 192.168.1.1 255.255.255.0

R1(config-if)#no shutdown 

R1(config-if)#exit

R1(config)#interface f0/0

R1(config-if)#ip address 12.1.1.1 255.255.255.0

R1(config-if)#no shutdown 

R1(config-if)#exit

R1(config)#router rip

R1(config-router)#version 2

R1(config-router)#no auto-summary 

R1(config-router)#network 12.0.0.0 

R1(config-router)#network 192.168.1.0

R1(config-router)#exit

R2


R2(config)#interface f0/0

R2(config-if)#ip address 12.1.1.2 255.255.255.0

R2(config-if)#no shutdown 

R2(config-if)#exit

R2(config)#interface f1/0

R2(config-if)#ip address 23.1.1.2 255.255.255.0

R2(config-if)#no shutdown 

R2(config-if)#exit

R2(config)#router rip

R2(config-router)#version 2

R2(config-router)#no auto-summary 

R2(config-router)#network 12.0.0.0

R2(config-router)#network 23.0.0.0

R2(config-router)#exit

R3


R3(config)#interface loopback 0

R3(config-if)#ip address 192.168.1.1 255.255.255.0

R3(config-if)#no shutdown 

R3(config-if)#exit

R3(config)#interface f0/0

R3(config-if)#ip address 23.1.1.1 255.255.255.0

R3(config-if)#no shutdown 

R3(config-if)#exit

R3(config)#router rip

R3(config-router)#version 2

R3(config-router)#no auto-summary 

R3(config-router)#network 23.0.0.0 

R3(config-router)#network 192.168.1.0

R3(config-router)#exit

RIP认证与版本兼容性问题_第6张图片

上图红色方框中的就是我们要修改的度量值。

R2上进一步的配置


R2(config)#access-list 1 permit 192.168.1.0

R2(config)#router rip

//将f1/0端口的度量值+1。in表示该端口接收并学习路由信息,out表示向外发送路由信息

R2(config-router)#offset-list 1 in 1 fastEthernet 1/0

R2(config-router)#exit

RIP认证与版本兼容性问题_第7张图片

查看路由表可发现,现在最优的路由是12.1.1.1这条,即从R1发出。

除了在R2上增加23.1.1.0网段的度量值外,还可以在R3上进行配置,增加度量值。


R3(config)#access-list 1 permit 192.168.1.0

R3(config)#router rip

R3(config-router)#offset-list 1 out 1 fastEthernet 0/0

R3(config-router)#exit

//取消掉人为增加的度量值

R2(config-router)#no offset-list 1 in 1 fastEthernet 1/0