前面学习了静态路由的原理,但是用静态路由搭建网络时,每一条路由的变更都需要手动进行配置,这在大型网络中的工作量是非常巨大的。有没有办法解决呢?答案是肯定的,使用动态路由即可解决此问题

动态路由协议基础

1. 动态路由概述

   动态路由是网络中路由器之间互相通信,传递路由信息,利用收到的路由信息更新路由表的过程。它能实时的适应网络结构的变化。如果路由更新信息表明网络发生了变化,路由选择软件就会重新计算路由,并发出新的路由更新信息。这些信息通过各个网络,引起各路由器重新启动其路由算法,并更新各自的路由表以动态的反映网络拓扑的变化。

   如果使用动态路由协议,路由器之间就会将自己的路由信息向相邻的路由器发送,并接收相邻路由器发过来的路由信息,有选择的保存这些路由信息,生成自己的路由表。

   动态路由适用于网络规模大、网络拓扑复杂的网络。动态路由的特点如下:

 减少了管理任务。因为动态路由的过程完全是由路由器自己完成的,管理员只需做简单的配置即可,路由学习、路由转发和路由维护的任务都是由动态路由来完成的。配置了动态路由后,当网络拓扑发生变化时,不需要进行重新配置,动态路由会自己了解这些变化,从而修改路由表。

 占用了网络的带宽。因为动态路由是通过与其他路由器通信来了解网络的,每个路由器都要告诉其他路由器自己所知道的的网络信息,同时还要从其他路由器学习自己所不知道的网络信息,这样就不可避免的发送包,而这些路由信息包会占用一定的网络流量。


2. 动态路由协议

(1) 动态路由协议概述

   动态路由是基于某种路由协议(Routing Protocol)来实现的。路由协议定义了路由器在与其他路由器通信时一些规则。也就是说,路由协议规定了路由器是如何来学习路由的,是用什么标准来选择路由以及维护路由信息的等。

   动态路由协议就像路由器之间用来交流信息的语言,通过它,路由器之间可以共享网络连接信息和状态信息。动态路由协议不局限于路径的选择和路由表的更新,当到达目的网络的最优路径出现问题时,动态路由协议可以在剩下的可用路径中,选择下一个最优路径进行替代。

   每一种动态路由协议都有它自己的路由选择算法,算法是解决问题的一系列步骤。一个路由选择算法至少要具备以下几个必要的步骤:

* 向其他路由器传递路由信息。

* 接收其他路由器的路由信息。

* 根据收到的路由信息计算出每个目的网络的最优路径,并由此生成路由表。

* 根据网络拓扑的变化及时作出反应,调整路由生成新的路由表,同时把拓扑变化以路由信息的形式向其他路由信息宣告。


(2) 度量值

   不同的路由协议使用不同的度量,有时还使用多个度量。

跳数:跳数(Hop Count)度量可以简单的记录路由器的跳数。

带宽:带宽(Bandwidth)度量将会选择高带宽路径,而不是低带宽路径。

负载:负载(Load)度量反映了占用沿途链路的流量大小。最优路径应该是负载最低的路径。不像跳数和带宽,路径上的负载会发生变化,因而度量也会跟着变化。这时需要注意,如果度量变化过于频繁,路由摆动(最优路径频繁变化)可能经常发生。路由摆动会对路由器的CPU、数据链路的带宽和全网稳定性产生负面影响。

时延:时延(Delay)度量数据包经过一条路径所花费的时间。使用时延作为度量值的路由选择协议时将会选择使用最低时延的路径作为最优路径。

可靠性:可靠性(Reliability)度量用来度量链路在某种情况下发生故障的可能性。可靠性可以是变化的或固定的。链路发生故障的次数或特定时间间隔内收到错误的次数都是可变可靠性度量的例子。固定可靠性度量是基于管理员确定的一条链路的已知量。可靠性最高的路径将被最优先选择。

成本:成本(Cost)是用来描述路由优劣的一个通用术语,最小成本(最高成本)或最短(最长)仅仅指的是路由协议基于自己特定的度量对路径的一种看法。网络管理员可以对Cost进行手工定义。


(3) 收敛

   动态路由选择协议必须包含一系列过程,这写过程用于路由器向其他路由器通告本地直连网络,接收并处理来自其他路由器的同类信息,中继从其他路由器接收到的信息。此外,路由选择协议还需要定义决定最优路径的度量。对路由选择协议来说,另一个标准是互联网网络上所有路由器的路由表中的可达信息必须是一致。使所有路由表都达到一致状态的过程叫做收敛(Convergence)。全网实现信息共享以及所有路由器计算最优路径所花费的时间的总和就是收敛时间。


3. 静态路由和动态路由

   通过动态路由的学习,感觉动态路由协议比静态路由协议要好。动态路由协议就是自动检测并随着网络拓扑的变换更新路由表。静态路由协议对于大中型网络来说管理是困难的,但在小型网络中配置静态路由是十分方便的。

   静态路由和动态路由都有各自的特点和实用范围,在网络中静态路由和动态路由互相补充。在所有的路由中,除直连路由外静态路由的优先级最高。当一个包在路由器中进行路径选择时,路由器首先查找静态路由,如果查到则根据相应的静态路由进行转发分组,否则再查找动态路由。当静态路由与动态路由发生冲突时,以静态路由为准。


动态路由协议分类

   常见的路由协议可以分为距离矢量路由协议和链路状态路由协议。其中距离矢量路由协议依据从源网络到目标网络所经过的路由器的个数来选择路由,典型的协议如RIP和IGRP链路状态路由协议会综合考虑从源网络到目标网络的各种路径的情况来选择路由,典型的协议如OSPF和IS-IS

1. 距离矢量路由协议

   距离矢量名称的由来是因为路由是以矢量(距离、方向)的方式被通告出去的,其中距离是根据度量定义的,方向是根据下一跳路由器定义的。例如,“朝下一跳路由器X的方向可以到达目标A,距此5跳之远”,这个表述隐含着每个路由器向邻接路由器学习它们所观察到的路由信息,然后再向外通告自己观察到的路由信息。因为每个路由器在信息上都依赖于邻接路由器,而邻接路由器又从它们的邻接路由器那里学习路由,以此类推,所以距离矢量路由选择有时又被认为是“依据传闻进行路由选择”。

2. 链路状态路由协议

   距离矢量路由协议所使用的信息可以比喻为路标提供的信息,而链路状态路由协议像是一张公路线路图。链路状态路由器是不容易被欺骗而做出错误的路由决策的,因为它有一张完整的网络图。链路状态不同于距离矢量依照传闻进行路由选择的工作方式,原因是链路状态路由器从对等路由器那里获取第一手信息。每台路由器会产生一些关于自己、本地直连网络以及这些链路状态的信息。这些信息从一台路由器传送到另一台路由器,每台路由器都做一份信息备份,但是绝不改动信息。最终目的是每台路由器都有一个相同的有关互联网络信息,并且每台路由器可以独立的计算各目的最优路径。


RIP路由协议工作原理

   在学习RIP协议之前,先了解几个距离矢量路由协议的概念:

定期更新(Periodic Updates):定期更新意味着每经过特定时间周期就要发送更新信息。需要注意,如果更新信息的发送过于频繁可能会引起拥塞,但如果更新信息发送不频繁,网络收敛时间可能长得难以接受。

邻居(Neighbors):在路由器看来,邻居通常意味着共享相同数据链路的路由器。距离矢量路由选择协议向邻居路由器发送更新信息,并依赖邻居向它的邻居传递更新信息。因此,距离矢量路由协议被说成是使用逐跳更新方式。

广播更新(Broadcast Update):当路由器首次在网络上被激活时,路由器怎样寻找其他路由器呢?它又是怎样宣布自己的存在呢?最简单的方法是向广播地址(在IP网络中,广播地址是255.255.255.255)发送更新信息。使用相同路由器选择协议的邻居路由器将会收到广播数据包,并且采取相应的动作。不关心路由更新信息的主机和其他设备会丢弃该数据包。

全路由表更新(Full Routing Table Update):大多数距离矢量路由协议使用非常简单的方法告诉邻居它所知的一切,该方法就是广播它的整个路由表。邻居在收到这些更新信息之后,会收集自己需要的信息,其他则被丢弃。


1. 路由表的形成

   在为路由器配置了接口的IP地址,并且在接口up的情况下,每个路由器的路由表中会出现直连路由的条目。如果为路由器配置了RIP路由协议,路由器之间就会互相发送自己的路由表信息。

   路由器接收到相邻路由器发送来的路由信息,会与自己路由表中的条目进行比较,如果路由表中已经有这条路由信息,路由器会比较新接收到的路由信息是否优先于现有的条目。如果优先于现有的条目,路由器会用新的路由信息替换原有的路由条目。反之,则路由器比较这条路由信息与原有的条目是否来自同一个源,如果来自同一个源,则更新,否则就忽略这条路由信息。

  wKioL1mhbpuAfKPLAACkiT2GCJk142.png


2. RIP的度量值与更新时间

(1) RIP的度量值

  RIP路由协议使用跳数作为唯一的度量值。

  在RIP中规定了跳数的最大值为15, 16跳视为不可达。因此,RIP路由协议不适用与大型的广域网。

(2) RIP的更新时间

  RIP使用UDP协议,端口号是520

  路由器启动后,平均每隔30s就从每个启动RIP协议的接口不断的发送出路由更新消息。


3. 水平分割(Split Horizon)

   网络收敛后,路由器仍然在以30s的时间间隔向外发送整个路由表。

   执行水平分割可以阻止路由环路的发生,水平分割的规则是:从一个接口学习到路由信息,不再从这个接口发送出去。水平分割不仅能够阻止路由环路的产生,同时也能减少路由更新信息占用的链路带宽资源。


RIP路由协议的配置和验证

1. 配置命令

 配置RIP路由协议,首先要在路由器上启动RIP进程。

  启动RIP进程的命令如下:

Router(config)# router rip

 然后要将路由器上所有启动RIP的接口的主网络号宣告出去,命令如下:

Router(config-router)# network network-number


2. 验证配置的命令

查看路由表

  使用查看路由表命令查看路由表是否通过RIP协议学习到了正确的路由条目,命令如下:

Router# show ip route

查看路由协议的配置

  使用查看路由协议配置的命令,可以查看关于RIP计时器,使用的版本、宣告的网段等信息,命令如下:

Router# show ip protocols

   在路由表中可以看到网络中所有的网段,表明RIP的配置正确。在路由条目中前面有标记C的为直连路由,标记R的为通过RIP路由协议学习到的路由。在网段号后面的[120/1]表示管理距离(优先级)和度量值(跳数)。

   管理距离是一种优先级度量,当两种路由方式到达同一网络时,路由器会选择管理距离较小的路由来到达目标网段。静态路由的管理距离为1,而RIP协议的管理距离为120,因此,如果到达同一网段,同时配置了静态路由和RIP,路由器会选择静态路由指向的路径来转发数据。RIP的优先级:120,OSPF的优先级:110

  默认情况下,RIP使用版本1发送路由更新,可以接受v1和v2两个版本的路由的更新。


RIP v1与TIP v2

   RIP路由协议包含两个版本,RIP v1和RIP v2。版本1和版本2主要的区别如下:

* RIP v1广播发送路由更新,广播地址为255.255.255.255;RIP v2组播发送路由更新,组播地址为224.0.0.9

* RIP v1是有类路由(Classful)协议,它们在宣告路由信息时不携带网络掩码;而RIP v2是无类路由(Classless)协议,它们在宣告路由信息时携带网络掩码。

   有类路由协议的另一个特点是在边界路由器上自动进行路由汇总


RIP v2的配置

  配置RIP协议,使用版本v2的命令如下:

Router(config)# router rip                      // 启动RIP进程
Router(config-router)# version 2                  //使用版本v2
Router(config-router)# no auto-summary              //关闭路由汇总功能
Router(config-router)# network network-number         //宣告网段


实验案例:验证RIP v1和RIP v2

实验环境:

按如图所示的拓扑图连接网络,其中10.1.1.0/24和10.1.2.0/24配置RIP v2

wKioL1miN_LDvDBdAACZoxIRr8Q401.png

需求描述:

要求分别配置RIP v1和RIP v2,并验证网络是否可以正常通信。

具体步骤:

1. 配置路由器的接口地址,实现路由器互通(略)

2. 分别配置RIP v1和RIP v2,验证网络通信是否正常。

(1)配置RIP v1

R1(config)# router rip
R1(config-router)# network 10.1.1.0
R1(config-router)# network 192.168.1.0

R2(config)# router rip
R2(config-router)# network 192.168.1.0
R2(config-router)# network 192.168.2.0

R3(config)# router rip
R3(config-router)# network 10.1.2.0
R3(config-router)# network 192.168.2.0

(2)查看路由表,显示结果如下:

R1的路由表

wKioL1miRDKCZ6GqAACSxhSQvFE448.png

R2的路由表

wKiom1miRETSEglaAACRBM4x2bY071.png

R3的路由表

wKiom1miREaAUE_JAACS9uPHTF4471.png

   可以看出路由表条目错误,路由器把10.1.1.0/24和10.1.2.0/24两个网段自动进行汇总,形成了10.0.0.0/8网段,R2路由器保存了两条到达10.0.0.0/8网段的路由,一个指向R1,一个指向R3,从而发生错误的数据转发情况。


(3)配置RIP v2

R1(config)# router rip
R1(config-router)# version 2
R1(config-router)# no auto-summary
R1(config-router)# network 10.1.1.0
R1(config-router)# network 192.168.1.0
R2(config)# router rip
R2(config-router)# version 2
R2(config-router)# no auto-summary
R2(config-router)# network 192.168.1.0
R2(config-router)# network 192.168.2.0
R3(config)# router rip
R3(config-router)# version 2
R3(config-router)# no auto-summary
R3(config-router)# network 10.1.2.0
R3(config-router)# network 192.168.2.0

(4)查看路由表,显示结果如下:

R1的路由表

wKiom1miTAbj5K3LAACZ5GaaxYc963.png

R2的路由表

wKioL1miS_eC5wHaAACWeEJOP2M044.png

R3的路由表

wKiom1miTAfDfpwgAACXyWIZWfw264.png

   在路由表中可以看到网络中所有的网段,表明RIP的配置正确,经验证,PC1与PC2可以正常通行

wKioL1miTbGhyInOAABvbe8Es9w528.png

  使用show ip protocols 命令查看路由协议信息

wKioL1miTxmCUs68AACdBpT4Hi0971.png

    通过实验,可以知道,RIP v1不支持不连续的子网,因为会自动进行路由汇总;RIP v2可以配置不进行自动汇总功能,在宣告路由信息时携带网络掩码,就不会产生前面的转发错误了。由此可知,RIPv2支持不连续的子网