第14章 路由与路由协议----14.3 动态路由和静态路由
所谓路由,简单地说就是广域网数据包的寻址方式。在广域网上,由于站点很多,因此不能使用局域网上常用的广播寻址方法。在广域网上,路由器中的路由进程是动态的。路由器每收到一个数据包均交给路由进程处理,路由进程确定一个最佳的路径并将数据发送出去。
路由进程确定路径的方法有两种:
(1)通过配置好的路由表来传送,这种需要由系统管理员手工配置路由表并指定每条路由线路的方法称为静态路由。由于系统管理员指定了静态路由器的每条路由,因而具有较高的安全系数,比较适合较小型的网络使用。一般来说,静态路由不向外广播。
(2)由路由器按指定的协议格式在网上广播和接收路由信息,通过路由器之间不断交换的路由信息动态地更新和确定路由表,并随时向附近的路由器广播,这种方式称为动态路由。动态路由器通过检查其他路由器的信息,并根据开销、链接等情况自动决定每个包的路由途径。动态路由方式仅需要手工配置第一条或最初的极少量路由线路,其他的路由途径则由路由器自动配置。动态路由由于较具灵活性,使用配置简单,成为目前主要的路由类型。
在Cisco路由器上可以配置三种路由:
1. 静态路由:管理员手工定义到一个目的地网络或者几个网络的路由。
2. 动态路由:路由器根据路由选择协议所定义的规则来交换路由信息,并且独立地选择最佳路径。
3. 缺省路由:缺省路由是指当路由表中与包的目的地址之间无匹配的表项时路由器能够作出的选择。
一般地,路由器查找路由的顺序为静态路由,动态路由,如果以上路由表中都没有合适的路由,则通过缺省路由将数据包传输出去,可以综合使用三种路由。
14.3. 1静态路由
可以在静态路由表中指定路由,将路由器配置为静态路由。通过配置静态路由,用户可以人为地指定对某一网络访问时所要经过的路径,在网络结构比较简单,且一般到达某一网络所经过的路径惟一的情况下采用静态路由。静态路由不需要使用路由协议,但需要由路由器管理员手工更新路由表。由于静态路由通常不能对线路不通等路由变化作出反应。因此,通常只能在网络路由相对简单、网络与网络之间只能通过一条路径路由的情况下使用静态路由。
在全局配置模式下,建立静态路由的命令格式为:
router(config)#ip router prefix mask {address | interface} [distance] [tag tag] [permanent]
其中:
l Prefix:所要到达的目的网络。
l mask :子网掩码。
l address :下一跳的IP地址,即相邻路由器的端口地址。
l interface :本地网络接口。
l distance :管理距离(可选)。
l tag : tag值(可选)。
l permanent :指定此路由即使该端口关掉也不被移掉。
例1. 用一个外出接口配置静态路由
router(config)#ip router 218.12.225.0 255.255.255.0 FASTETHERNET0/0
例2. 用下一跳IP地址配置静态路由
router(config)#ip router 218.12.225.0 255.255.255.0 218.12.225.6
14.3.2 缺省路由
要想使每台路由器对到每个可能目的地的路由都进行维护是不可行的,所以路由器可以保存一条缺省路由,或者叫最后的可用路由。当路由器不能用路由表中的一个更具体条目来匹配一个目的网络时,它就将使用缺省路由,即“最后的可用路由”。实际上,路由器用缺省路由来将数据包转发给另一台路由器,这台新的路由器必须要么有一条到目的地的路由,要么有它自己的到另一台路由器的缺省路由,这台新的路由器依次也必须要么有具体路由,要么有另一条缺省路由。依此类推。最后数据包应该被转发到真正有一条到目的地网络的路由器上。没有缺省路由,目的地址在路由表中无匹配表项的包将被丢弃。
缺省路由可以尽可能地将路由表的大小保持的很小,它们使路由器能够转发目的地为任何Internet主机的数据包而不必为每个Internet网络都维护一个路由表条目。
缺省路由可有管理员静态地输入或者通过路由选择协议被动态地学到。
有两条十分不同的命令来静态地配置缺省路由:“ip router 0.0.0.0 0.0.0.0”和“ip default-network”。
(1) 0.0.0.0路由
创建一条到0.0.0.0/0的IP路由是配置缺省路由的最简单的方法。可以用下面的命令来完成:
在全局配置模式下建立缺省路由的命令格式为:
router(config)#ip router 0.0.0.0 0.0.0.0 {adderss|interface}
其中:{adderss|interface}为相邻路由器的相邻端口地址或本地物理端口号。
对于Cisco IOS,网络0.0.0.0/0为最后的可用路由有特殊的意义。所有的目的地址都匹配这条路由,因为全为0的掩码不需要对在一个地址中的任何比特进行匹配。到0.0.0.0/0的路由经常被称为“4个0路由”。
(2) default-network路由
“ip default-network”命令可以被用来标记一条到任何IP网络的路由,而不仅仅是0.0.0.0/0,作为一条候选缺省路由,其命令语法格式如下:
router(config)#ip default-network ip-network-number
候选缺省路由在路由表中是用星号来标注的,并且被认为是最后的网关。
14.3.3 动态路由
1. 为什么需要动态路由
如图14.13所示的网络根据它是静态配置还是动态配置适应拓扑结构的变化的结果是不同的。
静态路由允许路由器恰当地将数据包从一个网络传送到另一个网络。本例中,路由器A总是把目标为路由器C的数据发送到路由器D。路由器引用路由选择表并根据表中的静态信息把数据包转发到路由器D,路由器D用同样的方法将数据包转发到路由器C,路由器C把数据包转发到目的主机。
如果路由器A和路由器D之间的路径断开了,路由器A将不能通过静态路由把数据包转发给路由器D。在通过人工重新配置路由器A把数据包转发到路由器B之前,要与目的网络进行通信是不可能的。动态路由提供了更多的灵活性。根据路由器A生成的路由选择表,数据包可以经过有限的路由通过路由器D到达目的地。
当路由器A意识到通向路由器D的链路断开时,它就会调整路由选择表,使得通过路由器B的路径成为优先路径。路由器可以通过这条链路继续发送数据包。
当路由器A和路由器D之间的链路恢复工作时,路由器A会再次改变路由选择表,指示通过路由器D和C的逆时针方向的路径是到达目的网络的优先选择。动态路由选择协议也可以在网络里引导流量使用不同的路径到达同一目标,这被称为负载均衡(load sharing)。
2. 动态路由选择工作原理
动态路由的成功依赖于路由器的两个基本功能:
l 维护路由选择表。
l 以路由更新的形式将信息及时地发布给其它路由器。
动态路由依靠一个路由选择协议和其他路由器共享信息。一个路由选择协议定义了一系列规则,当路由器和邻居路由器通信时就使用这些规则。举例来说,一个路由选择协议描绘了:
l 如何发送更新信息。
l 更新信息里包含哪些内容。
l 什么时侯发送这些信息。
l 如何定位更新这些信息的接收者。
RIP、IGRP、EIGRP和OSPF都能够进行动态路由的操作。如果没有这些动态路由协议,因特网是无法实现的。
3. 动态路由协议基础
(1)自治域系统
自治域系统是指处在一个统一管理的域下的一组网络的集合。一般情况下,从协议的方面来看,可以把运行同一种路由协议的网络看做是一个自治域系统;从地理区划方面来看,一个电信运营商或者具有大规模网络的企业可以被分配一个或多个自治域系统。
根据是否在一个自治域内部使用,动态路由协议分为内部网关协议(IGP)和外部网关协议(EGP)。自治域内部采用的路由选择协议称为内部网关协议,常用的有RIP、IGRP、EIGRP、OSPF;外部网关协议主要用于多个自治域之间的路由选择,常用的是BGP和BGP-4。其中IGP又分为距离向量和链路向量。距离向量是定期向相邻的路由器交流整个路由表的信息,如RIPv1、IGRP。而链路向量只在链路状态发生改变时向所有的路由器交流链路状态信息,如OSPF。而象EIGRP则同时具有两种协议的特点。
(2)路由协议的分类
路由协议的分类方法很多,前面介绍过两种,在这里按是否能够学习到子网分类可以把路由协议分为有类(Classful)的路由协议和无类(Classless)的路由协议两种。
l 有类的路由协议
有类的路由协议包括RIP v1、IGRP等。这一类的路由协议不支持可变长度的子网掩码,不能从邻居那里学到子网,所有关于子网的路由在被学到时都会自动变成子网的主类网(按照标准的IP地址分类)。
l 无类的路由协议
这一类的路由协议支持可变长度的子网掩码,能够从邻居那里学到子网,所有关于子网的路由在被学到时都不用被变成子网的主类网,而以子网的形式直接进入路由表。
(3)邻居关系
邻居关系对于运行动态路由协议的路由器来说,是至关重要的。如图14.14所示。在使用比较复杂的动态路由协议(如OSPF或EIGRP)的网络里,一台路由器A,必须先同自己的邻居路由器B建立起邻居关系(peers adjacency)。这样,它的邻居路由器B才会把自己知道的路由或拓扑链路的信息告诉路由器A。
路由器之间想要建立和维持邻居关系,互相之间也需要周期性地保持联络,这就是路由器之间为什么会周期性地发送一些hello包的原因。这些包是路由器之间在互相联络,以维持邻居关系。链路状态路由协议和混合型的路由协议使用Hello包维持邻居关系。
一旦在路由协议所规定的时间里(这个时间一般是Hello包发送周期的3倍或4倍),路由器没有收到某个邻居的Hello包,它就会认为那个邻居已经坏掉了,从而开始一个触发的路由收敛过程,并且发送消息把这一事件告诉其它邻居路由器。
(4)网络路径的度量
在网络里面,为了保证网络的畅通,通常会连接很多的冗余链路。这样当一条链路出现故障时,还可以有其他路径把数据包传递到目的地。当一个路由选择算法更新路由选择表时,它的主要目标是确定路由选择表要包含最佳的路由信息。每个路由选择算法都认为自己的方式是最好的。这就用到了度量值。
所谓度量值(度量值 value),就是路由器根据自己的路由算法计算出来的一条路径的优先级。当有多条路径到达同一个目的地时,度量值最小的路径是最佳的路径,应该进入路由表。
路由器中最常用的度量值包括:
l 带宽(bandwidth):链路的数据承载能力。
l 延迟(delay):把数据包从源端送到目的端所需的时间。
l 负载(load):在网络资源(如路由器或链路)上的活动数量。
l 可靠性(reliability):通常指的是每条网络链路上的差错率。
l 跳数(hop count):数据包到达目的端所必须通过的路由器个数。
l 滴答数(ticks):用IBM PC的时钟标记(大约55毫秒或1/8秒)计数的数据链路延迟。
l 开销(cost):一个任意的值,通常基于带宽、花费的钱数或其它一些由网络管理员指定的度量方法。
(5)收敛时间
路由选择算法对动态路由选择来说是基础。只要因为网络升级、重新配置或故障而改变,网络信息库就必须随之改变。信息需要以精确的、一致的观点反映新的拓扑结构。这个精确的、一致的观点就称为收敛(convergence)。
当一个互联网中的所有路由器都运行着相同的信息时,就称为该网络已收敛。快速收敛是网络希望具有的特征,因为它可以尽量避免路由器利用过时的信息作出错误的或无效的路由判断。
4. 配置路由器使用路由选择协议
在路由器上启动IP路由选择协议,必须设置全局和接口参数。全局任务包括选择一个路由选择协议,如RIP、IGRP、EIGRP或OSPF等。路由选择配置模式中的主要任务是指明IP网络号。动态路由选择使用广播和组播与其它路由器通信。路由选择的度量标准帮助路由器找到到达每个网络或子网的最佳路径。
1. Router命令启动一个路由选择进程。Router命令的语法如下:
Router(config)#router protocol {options}
其中:
l protocol:可以是RIP、IGRP、EIGRP或OSPF等。
l Options:表示自治域系统号,例如IGRP和EIGRP协议中所使用的。
2. Network命令是必需的,因为它允许路由选择进程识别参与发送和接收路由选择更新的接口。Network命令的语法如下:
Router(config-rputer)#network network-number
其中:network-number是直连网络的IP网络地址。