A-A+

RIP路由协议的基础知识

2016年01月06日 站长资讯 暂无评论

1、RIP的更新过程

现在我们通过一个简单的环境,来看一下运行了RIP的路由器是如何交互路由信息的,并且网络中的路由器是如何完成路由信息的学习和收敛的。当然,这是一个微观的模拟过程,旨在帮助大家理解RIP的工作机制。

1)路由器初始启动

最初的网络发现:直连网络写入路由表,路由器能够自动学习直连路由并写入路由表,现在我们在所有路由器上都部署RIP。

2)初次交换路由信息

由于ABC都运行了RIP,因此他们都将自己的路由表通过广播(RIP版本1是广播发送,版本2是组播发送)的方式从所有激活了RIP的接口上更新出去。拿 B来举例,它将自己的路由表更新出去,A和C都能够收到。A收到B传过来的路由表,它发现10.0.3.0路由自己没有,于是将这条路由学习过来,同时在 为这条路由关联一个度量值:1跳,所谓1跳的意思是,A要到达10.0.3.0这个网络,需要经过B这个路由器,这是一跳,一跳就是一台三层设备,RIP 通过跳数作为路由的度量值。

经过这一轮学习,A能学到10.0.3.0,C能学到10.0.2.0,而B能够学习到A和C传来的10.0.1.0及10.0.4.0。

3)路由收敛完成

接 下去又是一轮更新,所有路由器将自己的路由表发送给直连邻居。A就能学习到B更新过来的10.0.4.0路由,跳数为2跳,因为它要到10.0.4.0需 要经过BC两台路由器(实际上他并不知道要经过谁,RIP只是单纯的做个加法而已)。这样一来,所有的路由器,都拥有到达全网各个角落的路由了。我们把这 个称为,路由收敛完成了。

路由器收敛完成的标志

当所有路由表包含相同网络可达性信息

网络(路由)进入一个稳态

路由器继续交换路由信息

当无新路由信息被更新时收敛结束

网络在达到收敛前无法完全正常工作

2、RIP概述

RIP(Routing Information Protocols,路由信息协议)是历史悠久的内部网关协议,适用于小型网络,是典型的距离矢量协议;

RIP基于UDP,端口520;

在我司设备上路由优先级为100;

定期更新整张路由表;依照传闻;距离矢量路由协议并不了解网络拓扑;

有三个版本RIPv1、RIPv2和RIPng,RIPng是为IPv6开发的。

V2在V1的基础上做了如下改进:

增加外部路由标记

增加VLSM支持

组播发送RIP消息:224.0.0.9

支持认证

增加下一跳字段

3、RIP的Metric(度量值)

RIP以跳数(Hops)作为度量值,虽然简单,但是事实上是不够科学的。如下图:

R5 本地有个直连网络100.0/24,它通过RIP将这个网络更新出来。R2及R4都能学习到这条路由,并且跳数为1。而R1能通过R2学习到这条路由,跳 数为2;同时R1又能从R3学习到R4传递过来的100.0/24路由,跳数为3,这样一来,R1将收到两条到达同一个网络100.0/24的两条RIP 更新,它会去比较这两条路由的metric,结果发现,从R2来的路由,metric也就是跳数要更小,因此R1将R2更新过来的路由装载进路由表,并且 将R2设置为去往该网段的下一跳。

很明显,这是不合理的,因为虽然R1从R3-R4-R5这段路径去往100.0/24经过的设备更多,但是链路却都是1G带宽,而从R2这一侧走,链路的带宽却非常的低。但是很遗憾,RIP并无法不关心带宽的问题,它只将跳数作为路由的度量值,这就是它的短板之一。

在路由表中,能够查看到RIP路由的跳数:

4、RIP的防环机制

我们先来看一下路由更新环路的现象:

上图汇总,假设ABC都运行了RIP,并且网络已经收敛完成。现在C路由器的直连网段10.0.4.0发生故障,C检测到故障后,将10.0.4.0路由从路由表中擦除。

这时候,更新周期到了,ABC路由器都将自己的路由表更新给直连邻居。那么C路由器会收到B更新过来的路由,其中也包括10.0.4.0,这时候C把10.0.4.0学习过来并且装载进了路由表,同时关联metric为2跳(因为路由是从B学习过来的,而B自己是1跳)。

10.0.4.0路由继续在网络中随着更新周期的到来不断的被更新来更新去,然而事实上,10.0.4.0网络早就不存在了,这时候如果网络中有任何一个地方发送数据到10.0.4.0网络,这个数据将在网络中不断的打转,直到TTL递减为0。这就是环路。

环路是一个危害非常大的问题,一个健壮的路由协议应该有充分的机制去规避环路的问题,RIP也有相应的一系列机制来防止网络中出现环路。

定义最大度量以防止计数至无穷大

水平分割

路由中毒

毒性逆转

抑制计时器

触发更新

篇幅有限,我们只介绍其中几个机制:

定义最大度量以防止计数至无穷大

在上文的例子中,10.0.4.0路由被RIP在网络中传来传去,跳数不断的累加。RIP定义了一个最大跳数,15跳,当一条路由跳数为16跳时,这条路由 被视为不可达,因此这就避免了路由被无休止的传递。当然,这事实上是个笨方法,因为它在规避环路的同时,也限制了RIP适用的网络规模,如果我的网络当真 有15台以上的路由器串起来呢,这时候RIP就搞不定了。

水平分割规则

水平分割规则是距离矢量路由协议一个特点非常鲜明的机制。

当一台路由器,从一个接口收到一条路由更新,这台路由器将不再把这条路由从该接口再更新回去,这就是水平分割规则,RIP的环路避免很大程度上依赖于该规则。

毒性路由

另一个避免环路的机制是,路由中毒机制,上图中,C路由器一旦发现10.0.4.0的直连网络发生故障,它将立即发送一个路由更新,该更新包含10.0.4.0路由同时将跳数设置为16跳,这样其他路由器将接收这个路由更新并将故障路由从路由表中擦去。
毒性逆转

毒性逆转(Poison Reverse)的原理是,RIP从某个接口学到路由后,将该路由的开销设置为16(即指明该路由不可达),并从原接口发回邻居路由器。利用这种方式,可以清除对方路由表中的无用路由。毒性逆转可以防止产生路由环路的发生。

在 上图中,如果C的10.0.4.0网络挂掉了,而B不再从C收到4.0的路由更新,它就有可能向C通告4.0的路由(暂不考虑水平分割规则),这样一来C 就有可能将B作为4.0网络的下一跳,这就形成了环路。在B上开启了毒性逆转后,B从GE0/0/1口手到的RIP路由,它也会将路由从该接口更新回去, 只不过跳数被设置成了16,这样C将不会使用这些路由。

同时配置水平分割和毒性逆转的话,只有毒性逆转生效。

5、RIP的配置

1.配置命令

启动RIP进程,并进入RIP配置视图

[Router] rip 1

在指定网段使能RIP(RIP只支持classful网络宣告)

[Router-rip-1] network 192.168.12.0

事实上这条命令将产生两个效果:1是network的这个接口将激活RIP,开始发送和侦听RIP消息;2是network的这个接口所在的网段会被

引入RIP并被RIP通告出去。

指定RIP的版本(默认为版本1)

[Router-rip-1] version 2

2.配置示例

R1的配置如下:

  1. #完成接口IP的配置:  
  2. [R1] interface GigabitEthernet 0/0/0  
  3. [R1-GigabitEthernet0/0/0] ip address 192.168.12.1 24   
  4. [R1] interface GigabitEthernet 0/0/1  
  5. [R1-GigabitEthernet0/0/1] ip address 192.168.1.254 24  
  6. #在R1的GE0/0/0及GE0/0/1口上激活RIPv2:  
  7. [R1] rip 1  
  8. [R1-rip-1] version 2                                        #指定RIP的版本为版本2  
  9. [R1-rip-1] network 192.168.12.0                     #在GE0/0/0口上激活RIP  
  10.   
  11. [R1-rip-1] network 192.168.1.0                       #在GE0/0/1口上激活RIP  

R2的配置如下:

  1. #完成接口IP的配置:  
  2. [R2] interface GigabitEthernet 0/0/0  
  3. [R2-GigabitEthernet0/0/0] ip address 192.168.12.2 24  
  4. [R2] interface GigabitEthernet 0/0/1   
  5. [R2-GigabitEthernet0/0/1] ip address 192.168.23.2 24  
  6. #在R2的GE0/0/0及GE0/0/1口上激活RIPv2:  
  7. [R2] rip 1  
  8. [R2-rip-1] version 2  
  9. [R2-rip-1] network 192.168.12.0  
  10. [R2-rip-1] network 192.168.23.0  

R3的配置如下:

  1. #完成接口IP的配置  
  2. [R3] interface GigabitEthernet 0/0/0  
  3. [R3-GigabitEthernet0/0/0] ip address 192.168.23.3 24  
  4. [R3] interface GigabitEthernet 0/0/1  
  5.   
  6. [R3-GigabitEthernet0/0/1] ip address 192.168.2.254 24  
  7. #在R3的GE0/0/0及GE0/0/1口上激活RIPv2  
  8. [R3] rip 1  
  9. [R3-rip-1] version 2  
  10. [R3-rip-1] network 192.168.2.0  
  11. [R3-rip-1] network 192.168.23.0  

完成上述配置后,我们来查看及验证,首先查看R1的IP路由表:

  1. [R1] display ip routing-table   
  2. Route Flags: R - relay, D - download to fib  
  3. ------------------------------------------------------------------------------  
  4. Routing Tables: Public   
  5.          Destinations : 12       Routes : 12        
  6. Destination/Mask Proto PreCostFlags   NextHop         Interface  
  7. 192.168.1.0/24  Direct  0    0  D    192.168.1.254   GigabitEthernet0/0/1  
  8. 192.168.1.254/32  Direct  0    0    D    127.0.0.1       GigabitEthernet0/0/1  
  9. 192.168.1.255/32  Direct  0    0      D    127.0.0.1       GigabitEthernet0/0/1  
  10.   
  11. 192.168.2.0/24  RIP100  2     D    192.168.12.2    GigabitEthernet0/0/0  
  12. 192.168.12.0/24  Direct  0    0     D    192.168.12.1    GigabitEthernet0/0/0  
  13. 192.168.12.1/32  Direct  0    0      D    127.0.0.1       GigabitEthernet0/0/0  
  14. 192.168.12.255/32  Direct  0    0    D    127.0.0.1       GigabitEthernet0/0/0   
  15. 192.168.23.0/24  RIP 100  1    D    192.168.12.2    GigabitEthernet0/0/0  
  16. 255.255.255.255/32  Direct  0    0     D    127.0.0.1       InLoopBack0  
  17. ……  

从上面的输出,我们可以看到R1已经通过RIP学习到了两条路由,分别是192.168.2.0/24及192.168.23.0/24。当然为了使得 PC1与PC2要能够正常通信,沿途的所有路由器都要有完整的路由表项,因此我们还需要检查检查R2及R3的路由表,重点看RIP路由:

  1. [R2] display ip routing-table protocol rip   
  2. Route Flags: R - relay, D - download to fib  
  3. ------------------------------------------------------------------------------  
  4. Public routing table : RIP  
  5.          Destinations : 2        Routes : 2           
  6. RIP routing table status : <Active>  
  7.          Destinations : 2        Routes : 2  
  8. Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface  
  9. 192.168.1.0/24  RIP     100  1           D   192.168.12.1    GigabitEthernet0/0/0  
  10. 192.168.2.0/24  RIP     100  1           D   192.168.23.3    GigabitEthernet0/0/1  

R2也通过RIP学习到了两条路由,分别是192.168.1.0/24及192.168.2.0/24。

同理查看R3的路由表,确保R3能够学习到192.168.1.0/24的路由。

如此一来,全网的路由就打通了,那么现在PC1与PC2是能够互相通信的。

标签:

给我留言