Rip是一种运行非常简单、能被市场上多数厂家生产的路由器支持的路由协议。虽然新的IGP路由协议(如OSPF和IS-IS)确实比RIP高级很多,但RIP仍有很多优势。例如,在一个小网络中,RIP在使用带宽、配置和治理时间上的开销都非常小。与新的IGP路由协议相比,RIP也非常轻易实现。因此有时RIP在某些特定的环境下仍非常有用,是目前互联网中广泛使用的一种动态路由协议。
RIP 简述
RIP是“路由信息协议”(Routing Information PRotocol)的简称,目前有RIPv1和RIPv2两个版本。
RIP是一种距离向量路由协议,每隔30秒发送一次路由更新信息。在Cisco提供的RIP协议中,为了适应快速的网络拓扑变化,还答应在探测到网络拓扑发生变化后,立即传送更新信息而不必等待30秒的更新周期。这种更新行为也称为“触发更新”或者“反射更新”。RIP使用“水平分割”和 “路由停用”计时器的机制来防止路由信息的错误传播。此外,RIP通过对从源到目的网的最大跳数加以限制来防止产生路由环。
RIP只根据一个“跳数”作为度量值来判定最佳路径。“跳数”是一个包到达目标所必须经过的路由器的数目。假如到相同目标有二个不等速或不同带宽的路由器,但“跳数”相同,则RIP认为两个路由是等距离的。RIP支持的最大“跳数”为15,即在源和目的网间所要经过的最多路由器的数目为15,“跳数”16表示不可达。
RIPv2在RIPv1的基础上做了一些修改,是RIPv1的扩展,距离向量路由协议和RIPv1在一个自制系统中的特性它都具备。但是,RIPv2是一种“无类”路由协议,这意味着一个网络的所有子网可以使用不同的网络掩码,而且还可以划分不相邻子网。RIPv2更新可以发送给组播地址,由其他运行RIPv2的路由器进行处理。IP组播地址的使用可以减轻不运行该路由协议主机的负担。从RIPv1到RIPv2还有一个很重要的改进是增加了鉴别机制。
Cisco RIP接口的定制
1. Cisco IOS RIP的实现
Cisco的IOS可同时支持RIPv1和RIPv2,但不能在同一接口上同时启用。
在配置RIP时,用network命令说明在哪些接口启用RIP。network后使用的是一个“有类的”网络地址,即指一个A类网络地址、B类网络地址或C类网络地址,不能使用子网地址。若某个接口连接的是网络的某个子网,那么,在这个接口上启用RIP之后,路由器在同一网络内的其他所有接口都会启用RIP,其默认版本是RIPv1。假如希望在接口上运行RIPv2,需要进入RIP的路由器配置模式,执行version 2命令。假如希望更改已包括在某个network命令给出的网络中的特定接口上的RIP版本,需要进入接口配置模式,使用ip rip send version1或ip rip send version2以及ip rip receive version1或ip rip receive version2命令完成。利用passive-interface命令,则可以针对要应用的路由协议,将接口设置为被动状态。
2. 接口定制的应用
例如,如下图所示的网络,在Router_C连接的Ethernet LAN中,有一个运行Routed程序、只支持RIPv1的Unix主机,而且我们希望它维护一张与路由器类似的路由表。而Router_A和Router_B的连接配置了RIPv2,为了维系与Router_A和Router_B的连接,Router_C应当在WAN上运行RIPv2。这时我们可对Router_C进行非凡的配置,令其通过Ethernet 0接口发送RIPv1信息,禁止RIPv2更新传出。
3. 配置过程
第1步:配置RIP协议
在Router_A配置 RIP v2
Router_A#configure terminal
Enter configuration commands, one per line, End with CNTL/Z.
Router_A(config)#router rip
Router_A(config-router)#version 2
Router_A(config-router)#network 172.18.0.0
Router_A(config-router)#network 192.169.2.0
Router_A(config-router)#ctrl - z
Router_A#
在Router_B配置 RIP v2
Router_B#configure terminal
Enter configuration commands, one per line, End with CNTL/Z.
Router_B(config)#router rip
Router_B(config-router)#version 2
Router_B(config-router)#network 172.18.0.0
Router_B(config-router)#network 192.169.3.0
Router_B(config-router)#ctrl - z
Router_B#
在Router_C配置 RIP v2
Router_C#configure terminal
Enter configuration commands, one per line, End with CNTL/Z.
Router_C(config)#router rip
Router_C(config-router)#version 2
Router_C(config-router)#network 192.169.1.0
Router_C(config-router)#network 192.169.2.0
Router_C(config-router)#network 192.169.3.0
Router_C(config-router)#ctrl - z
Router_C#
第2步:设置Router_C的Ethernet 0接口的RIP版本
在接口上设置RIP版本
Router_C#configure terminal
Enter configuration commands, one per line, End with CNTL/Z.
Router_C(config)#interface ethernet 0
Router_C(config-if)#ip rip send version 1
Router_C(config-if)#ip rip receive version 1
Router_C(config-if)# ctrl - z
Router_C#
Router_C以前运行的是RIPv2,但在Ethernet 0接口配置模式执行了ip rip send version 1命令后,Router_C就会将RIPv1更新发送到自己的Ethernet LAN,这时Router_C仍然只能接收RIPv2更新,并且会忽略从Ethernet LAN收到的RIPv1更新。要想让Router_C接收来自Ethernet LAN的RIPv1更新,我们还应该在Ethernet 0接口配置模式下,执行ip rip receive version 1命令。
由于Router_A和Router_B的Ethernet LAN内没有其他路由器,所以我们还可以通过定制接口状态的方法禁止通过它们的Ethernet 0发送RIP更新。这样做可同时禁止RIPv1 和RIPv2更新。
具体的实现方法是采用路由器配置命令将路由器的Ethernet 0接口设置成“被动”状态。此时,通过对RIP进行两个方面的接口设定实现了我们的初衷。
第3步:在Router_A和Router_B的Ethernet 0禁止RIP更新(两个路由器的设置方法相同)
Router_B#configure terminal
Enter configuration commands, one per line, End with CNTL/Z.
Router_B(config)#router rip
Router_B(config-router)#passive-interface ethernet0
Router_B(config-router)#ctrl - z
至此,配置完成。