<!-- wp:quote -->

<p>一个非常好用的动态路由协议</p>
<!-- /wp:quote --> <!-- wp:more --> <!-- /wp:more --> <!-- wp:paragraph --> <p>路由信息协议RIP(Routing Information Protocol)的简称,它是一种基于距离矢量(Distance-Vector)算法的协议,使用跳数作为度量来衡量到达目的网络的距离。RIP主要应用于规模较小的网络中。</p> <!-- /wp:paragraph --> <!-- wp:tadv/classic-paragraph --> <h1>路由信息协议-RIP</h1> <!-- /wp:tadv/classic-paragraph --> <!-- wp:tadv/classic-paragraph --> <p></p> <!-- /wp:tadv/classic-paragraph --> <!-- wp:tadv/classic-paragraph -->
  • 配置简单
  • 易于维护
  • 适合小型网络

<!-- /wp:tadv/classic-paragraph -->

<!-- wp:tadv/classic-paragraph -->
<p>RIP是一种比较简单的内部网关协议。RIP使用了基于距离矢量的贝尔曼-福特算法(Bellman-Ford)来计算到达目的网络的最佳路径。</p>
<p>最初的RIP协议开发时间较早,所以在带宽、配置和管理方面要求也较低,因此,RIP主要适合于规模较小的网络中。</p>
<p>RIP协议中定义的相关参数也比较少。例如,RIP V1不支持VLSM和CIDR,也不支持认证功能。</p>
<h1>RIP工作原理</h1>
<p></p>

  • 路由器运行RIP后,会首先发送路由更新请求(路由更新请求是rip数据包类型之一),收到请求的路由器会发送自己的RIP路由进行响应。
  • <p>网络稳定后,路由器会周期性发送路由更新信息。</p>

<p>路由器启动时,路由表中只会包含直连路由。运行RIP之后,路由器会发送Request报文,用来请求邻居路由器的RIP路由。运行RIP的邻居路由器收到该Request报文后,会根据自己的路由表,生成Response报文进行回复。路由器在收到Response报文后,会将相应的路由添加到自己的路由表中。</p>
<p>RIP网络稳定以后,每个路由器会周期性地向邻居路由器通告自己的整张路由表中的路由信息,默认周期为30秒。邻居路由器根据收到的路由信息刷新自己的路由表。</p>
<!-- /wp:tadv/classic-paragraph -->

<!-- wp:tadv/classic-paragraph -->
<h1>RIP-度量</h1>
<p></p>

  • RIP使用跳数作为度量值来衡量到达目的网络的距离。
  • <p>缺省情况下,直连网络的路由跳数为0。当路由器发送路由更新时,会把度量值加1。RIP规定超过15跳为网络不可达。</p>

<p>RIP使用跳数作为度量值来衡量到达目的网络的距离。在RIP中,路由器到与它直接相连网络的跳数为0,每经过一个路由器后跳数加1。为限制收敛时间,RIP规定跳数的取值范围为0~15之间的整数,大于15的跳数被定义为无穷大,即目的网络或主机不可达。也就是说R1和R2之间不能超过16个路由器,否则就不可达。</p>
<p>路由器从某一邻居路由器收到路由更新报文时,将根据以下原则更新本路由器的RIP 路由表:</p>
<p>1.对于本路由表中已有的路由项,当该路由项的下一跳是该邻居路由器时,不论度量值将增大或是减少,都更新该路由项(度量值相同时只将其老化定时器清零。路由表中的每一路由项都对应了一个老化定时器,当路由项在 180 秒内没有任何更新时,定时器超时,该路由项的度量值变为不可达)。</p>
<p>2.当该路由项的下一跳不是该邻居路由器时,如果度量值将减少,则更新该路由项。</p>
<p>3.对于本路由表中不存在的路由项,如果度量值小于16,则在路由表中增加该路由项。</p>
<p>某路由项的度量值变为不可达后,该路由会在 Response 报文中发布四次(120 秒),然后从路由表中清除。</p>
<p>在本示例中,路由器RTA通过两个接口学习路由信息,每条路由信息都有相应的度量值,到达目的网络的最佳路由就是通过这些度量值计算出来的。</p>
<!-- /wp:tadv/classic-paragraph -->

<!-- wp:tadv/classic-paragraph -->
<h1>RIP路由表的初始化</h1>
<p></p>
<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>看上面这个图,当路由器一开机是只有直连网段的路由表的,启动rip之后就会把直连网段的路由表发送给邻居。</p>
<!-- /wp:paragraph -->

<!-- wp:tadv/classic-paragraph -->
<h1>RIP路由表的更新</h1>
<p></p>
<p>注意,路由的传递方向,和数据包的传递方向通常是相反的。以上图为例,RTB将N4的路由表发送给RTA。于是RTA上关于N4的路由表其下一跳就指向了RTB了</p>
<h1>RIPv1   VS    RIPv2</h1>
<h3>RIPv1:</h3>

  • RIPv1是有类别路由协议,不支持VLSM和CIDR。
  • 以广播的形式发送报文。
  • 不支持认证。

<h3>RIPv2:</h3>

  • RIPv2为无类别路由协议,支持VLSM,支持路由聚合与CIDR。
  • 支持以广播或者组播(224.0.0.9)方式发送报文。
  • 支持明文认证和 MD5 密文认证。

<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>RIP包括RIPv1和RIPv2两个版本。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>RIPv1为有类别路由协议,不支持VLSM和CIDR。
RIPv2为无类别路由协议,支持VLSM,支持路由聚合与CIDR。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>RIPv1使用广播发送报文;RIPv2有两种发送方式:广播方式和组播方式,缺省是组播方式。RIPv2的组播地址为224.0.0.9。组播发送报文的好处是在同一网络中那些没有运行RIP的网段可以避免接收RIP的广播报文;另外,组播发送报文还可以使运行RIPv1的网段避免错误地接收和处理RIPv2中带有子网掩码的路由。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>RIPv1不支持认证功能,RIPv2支持明文认证和MD5密文认证。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>VSLM:可变长度子网掩码。CIDR:无类域间路由。</p>
<!-- /wp:paragraph -->

<!-- wp:tadv/classic-paragraph -->
<h1>RIPv1报文格式</h1>
<p></p>
<p>RIP协议通过UDP交换路由信息,端口号为520。(传输层的一个应用程序)RIPv1以广播形式发送路由信息,目的IP地址为广播地址255.255.255.255。</p>
<p>报文格式中每个字段的值和作用:</p>
<p>1.Command:表示该报文是一个请求报文还是响应报文,只能取1或者2。1表示该报文是请求报文,2表示该报文是响应报文。</p>
<p>2.Version:表示RIP的版本信息。对于RIPv1,该字段的值为1。</p>
<p>3.Address Family Identifier(AFI):表示地址标识信息,对于IP协议,其值为2。</p>
<p>4.IP address:表示该路由条目的目的IP地址。这一项可以是网络地址、主机地址。</p>
<p>5.Metric:标识该路由条目的度量值,取值范围1-16。</p>
<p>一个RIP路由更新消息中最多可包含25条路由表项,每个路由表项都携带了目的网络的地址和度量值。整个RIP报文大小限制为不超过504字节。如果整个路由表的更新消息超过该大小,需要发送多个RIPv1报文。</p>
<!-- /wp:tadv/classic-paragraph -->

<!-- wp:tadv/classic-paragraph -->
<h1>RIP基本配置</h1>
<p></p>

[RTA]rip
[RTA-rip-1]version 2 
[RTA-rip-1]network 10.0.0.0

<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>注意在华为路由器上面可以启用多个RIP进程,但是在思科路由器上只能启用一个RIP进程。配置版本的时候注意,如果不配版本1 还是2的话,默认情况下发送的报文是version2的,接收的时候是version1和version2都接收的,还有在network宣告的时候,只能宣告主类网络,不能宣告直连网络。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>rip
[process-id]命令用来使能RIP进程。该命令中,process-id指定了RIP进程ID。如果未指定process-id,命令将使用1作为缺省进程ID。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>命令version
2
可用于使能RIPv2以支持扩展能力,比如支持VLSM、认证等。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>network <network-address>命令可用于在RIP中通告网络,network-address必须是一个自然网段的地址。只有处于此网络中的接口,才能进行RIP报文的接收和发送。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>现在我们用实际的例子来配置一下:</p>
<!-- /wp:paragraph -->

<!-- wp:tadv/classic-paragraph -->
<p></p>
<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>现在所有的ip地址我们都是配置好了的,我们现在要做的就是配置rip,在AR1上</p>
<!-- /wp:paragraph -->

<!-- wp:tadv/classic-paragraph -->

[AR1]rip
[AR1-rip-1]version 1
[AR1-rip-1]network 172.16.0.0
[AR1-rip-1]network 192.168.2.0

<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>这个配置很简单,首先当你输入完“rip”之后,后面可以跟进程号,我的例子里没有跟,默认就是1,进程号可以起很多个,如果你AR1的进程号是1,那么你的AR2进程号可以是2,只要你宣告的正确那么都能学习到,之后就是选择“version”,也就是版本,如果不选的话,默认是以版本1发送请求报文,然后接收是可以接收到版本1和版本2的报文的。所以我这里选择的是version1。接着就是“network”宣告,这里的宣告必须要宣告主类网络,也就是自然网段。如果我们去宣告一个“172.16.12.0”,就会出现如下的报错</p>
<!-- /wp:paragraph -->

<!-- wp:tadv/classic-paragraph -->
<p></p>
<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>这段报错意思就是说,网络地址是无效的,因为这个地址必须是主类网络地址,不能带有子网的。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>那么对于AR2的配置实际上也是一样的,这里我故意把它的进程号改成2:</p>
<!-- /wp:paragraph -->

<!-- wp:tadv/classic-paragraph -->

[AR2]rip 2
[AR2-rip-1]version 1 [AR2-rip-2]network 172.16.0.0

<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>好了在AR2上就这一条命令就可以了。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>AR3同理:</p>
<!-- /wp:paragraph -->

<!-- wp:tadv/classic-paragraph -->

[AR3]rip
[AR3-rip-1]version 1
[AR3-rip-1]network 172.16.0.0
[AR3-rip-1]network 192.168.1.0

<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>现在在AR3上查看路由表:</p>
<!-- /wp:paragraph -->

<!-- wp:tadv/classic-paragraph -->
<p></p>
<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>可以,很强,现在我们再来查看一下rip的数据库:</p>
<!-- /wp:paragraph -->

<!-- wp:tadv/classic-paragraph -->

[AR3]display  rip 1 database 
 ---------------------------------------------------
 Advertisement State : [A] - Advertised
                       [I] - Not Advertised/Withdraw
 ---------------------------------------------------
   172.16.0.0/16, cost 0, ClassfulSumm
       172.16.12.0/24, cost 1, [A], nexthop 172.16.23.1
       172.16.23.0/24, cost 0, [A], Rip-interface
   192.168.1.0/24, cost 0, ClassfulSumm
   192.168.1.0/24, cost 0, [A], Rip-interface
   192.168.2.0/24, cost 2, ClassfulSumm
   192.168.2.0/24, cost 2, [A], nexthop 172.16.23.1

<p>命令是在rip后面要跟上进程号。</p>
<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>这里的per优先级就不用多说了,还有这个cost值,就是开销值,在rip里就是说经过了几个路由器。现在我们看一下在AR1上的数据包的发送。在AR1的G0/0/01口上面:</p>
<!-- /wp:paragraph -->

<!-- wp:tadv/classic-paragraph -->
<p></p>
<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>稍微等待一下就有了。因为rip是每隔30秒发送一次数据包,就是说每隔30秒发送一次路由信息,我们现在点开source是172.16.12.1的,就是AR1发送给AR2的数据包。</p>
<!-- /wp:paragraph -->

<!-- wp:tadv/classic-paragraph -->
<p></p>
<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>这里面,IP数据包里面的V4就是ipv4的地址,然后Dst有4个255,就说明了是以广播发送的,然后在IP数据包下面是 User Datagram Protocol ,就是启动的是UDP的数据端口,用的是520的端口。然后里面才是rip的路由信息,这些信息和上面那个图描述的一样,最后面的Metric就是度量值。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>值得注意的是这些info后面的Response都是响应的报文,如果想看接收的报文,我们只能在RIP刚刚启动的时候抓取到,我们可以将rip删除掉,然后重新配置,这样就看到了。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>现在我们来看看如果查看rip的debugging信息,</p>
<!-- /wp:paragraph -->

<!-- wp:tadv/classic-paragraph -->

<AR3>debugging rip 1
<AR3>terminal monitor 
<AR3>terminal debugging 

<p>这样就打开了,注意是在用户视图下输入的,这个debugging就是rip的调试信息,刚打开之后是没法看到这个有数据刷新的,要等待30秒的刷新时间。打开之后就会有很多东西刷新出来,我们输入:</p>

<AR3>undo debugging all 
<p>就可以关闭这些信息。</p> <p>到这里基本上rip版本1的就学习完了,我这里稍微提一下,抑制接口</p> <!-- /wp:tadv/classic-paragraph --> <!-- wp:tadv/classic-paragraph --> <h1>抑制接口</h1> <!-- /wp:tadv/classic-paragraph --> <!-- wp:tadv/classic-paragraph --> <p></p> <!-- /wp:tadv/classic-paragraph --> <!-- wp:tadv/classic-paragraph -->
[RTD]rip
[RTD-rip-1]silent-interface GigabitEthernet 0/0/1
  • 配置G0/0/1接口为抑制状态,只接收RIP 报文。
  • 此命令的优先级大于rip input和rip output。

<!-- /wp:tadv/classic-paragraph -->

<!-- wp:paragraph -->
<p>抑制接口之后,就是说,路由器不会从抑制的接口发送路由信息。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>什么时候用抑制接口呢,比如说宣告了一个网段之后在这个网段里面有路由信息,也有PC,那么我们就可以把接入PC的机器抑制掉,因为PC是没有路由信息的,我们抑制掉之后可以大大的节省带宽。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>好啦,这一小节就到此结束,喜欢的话点赞打赏一下吧</p>
<!-- /wp:paragraph -->

最后修改:2020 年 02 月 28 日 06 : 51 PM
请俺喝杯咖啡呗