孙光懿 贾英霞 薛 颖
(1.天津音乐学院图书与信息中心,天津 300171; 2.商丘经济贸易学校教务科,河南 商丘 476000;3.南开大学滨海学院,天津 300270)
OSPF路由协议[1-5]是一种运行在自治系统内部的链路状态路由协议.与运行其它链路状态路由协议的路由器一样,OSPF路由器也同样存在邻居表、拓扑表和路由表等3张表,且每张表所负责的任务也不尽相同.其中,邻居表的任务是负责维护相邻路由器之间的邻接关系,表中存储着邻居路由器的相关信息和邻居状态;拓扑表的任务则是负责存储自身以及从邻居路由器交换而来的LSA(链路状态信息).众所周知的是,运行OSPF路由协议的路由器之间交换的不是路由表,而是链路状态信息.当这种交换完成以后,相同区域中的每台OSPF路由器将拥有相同的拓扑表(也称为拓扑数据库),并基于此表利用SPF算法,计算出SPF树.而路由表的任务则是为接收到的数据包提供到达目的地址的最优路径.需要说明的是:OSPF路由器通常是以占用其内存和CPU资源为代价,来存储这3张表的(表的大小与OSPF网络规模成正比),这也是OSPF协议一个显而易见的缺点.如果在一个大型网络中部署OSPF协议,那么就很有可能导致SPF运算时间过长、OSPF设备中拓扑表和路由表过于庞大等现象的出现,这必然会造成网络的稳定性下降.为了最大限度的避免这种情况的出现,提高网络的稳定性,有必要对在大型网络中部署的OSPF路由协议进行优化.
OSPF区域中每台路由器的拓扑表都是基于LSA而建立的,它包括了OSPF路由器自身所直连链路的一些信息.当两台OSPF路由器确定邻接关系后,就会通过相互交换LSA来进行拓扑数据库的同步.通常情况下,OSPF路由器会采用多播的方式将自身的LSA传播给区域中的所有邻接设备,直到区域中的所有OSPF路由器均拥有相同的拓扑数据库为止.虽然OSPF路由协议共有11种不同类型的LSA,但是常见的只有以下6种类型的LSA:
(1) 1类LSA:OSPF区域内的每台路由器都会产生此类LSA,该类LSA只能在最初产生它们的区域内泛洪,它通告了路由器所有的链路以及链路状态.
(2) 2类LSA:该类LSA由DR所生成,且存在于广播多路访问网络或NBMA网络之中,主要用来描述在此网络中的所有OSPF路由器.泛洪的范围与LSA1相同,只能在最初产生它们的区域内进行.
(3) 3类LSA:该类LSA由OSPF区域边界路由器所生成,它可以在骨干区域中进行泛洪,以便可以传播到其它OSPF区域边界路由器(LSA3不会传播到完全末梢区域和完全非纯末梢区域).其作用主要用来向区域内的路由器通告可到达的区域外部目的地址.
(4) 4类LSA:该类LSA同样由OSPF区域边界路由器所生成,且不会被传播到任何末节区域.其作用主要用来向区域中的路由器通告到达OSPF自治系统边界路由器的路由,需要注意的是:其一,该路由的目的地址并不是网络地址,而是OSPF自治系统边界路由器主机地址;其二,区域中存在OSPF自治系统边界路由器,是产生4类LSA的前提条件.
(5) 5类LSA:该类LSA由OSPF自治系统边界路由器所生成,它可以被传播到除各种末梢区域外的所有区域.其作用主要用来向OSPF自治系统内的路由器通告去往自治系统外部的路由.
(6) 7类LSA:该类LSA同样由OSPF自治系统边界路由器所生成,LSA7与LSA5除了泛洪范围不同以外(它只能在最初产生它们的非纯末梢区域内进行泛洪,而LSA5可以在OSPF自治系统内进行泛洪),其它几乎都是相同的.
当网络拓扑结构发生变化,OSPF路由器就会同步更新自己的拓扑表,并在此基础上重新计算自己的路由表.OSPF协议路由表包含有以下3种类型的路由:区域内部路由、区域间路由和外部路由.其中,内部路由是基于LSA1和LSA2而产生,它描述了区域内的网络,可为OSPF路由器提供到达区域内目的地址的最优路径,该类路由指示符为“O”;区域间路由是基于LSA3和LSA4而产生,它描述了到达OSPF自治系统中其它区域的最优路径,该类路由指示符为“IA”;而外部路由则是基于LSA5而产生,它描述了到达OSPF外部自治系统目标网络的最优路径.通常外部路由可进一步分为1类外部路由(路由指示符为“OE1”)和2类外部路由(路由指示符为“OE2”),二者之间的差别主要在于分别使用不同的方法来计算路由开销(1类外部路由,其开销为外部路由开销与内部路由开销之和.2类外部路由,其开销只包含外部路由开销).当OSPF网络中只有1台自治系统边界路由器将外部路由重分布到自治系统内时,应采用2类外部路由.只有当OSPF网络中有多台自治系统边界路由器将同一条外部路由重分布到自治系统内时,才应采用1类外部路由,因为这样可以避免次优路由的产生.
在OSPF网络中,为避免由于拓扑结构发生变化或路由器配置不当等原因产生大量LSA,从而消耗路由器内存及CPU资源现象的出现,网络技术人员有必要对OSPF网络进行LSDB过载保护设置.LSDB过载保护设置以后,OSPF路由器将对LSDB中的LSA数量进行计算(自身产生的LSA数量不在计算之列).一旦计算出的LSA数量达到所设定的阈值,就会在路由器的操作系统日志中产生1条错误信息.如果LSA数量超过所设定的阈值持续1分钟以上,OSPF进程将对所有邻居关系进行终止,并对拓扑数据库做清空处理.
为使读者今后能够熟练掌握OSPF LSDB过载保护的具体配置方法并理解其工作原理,通过3台路由器R1、R2、R3搭建了1个小型OSPF自治系统,该自治系统由区域0和区域1所组成,路由器R2为区域边界路由器.网络拓扑如图1所示.在这里以路由器R1为例,给出相关配置命令.
图1 多区域OSPF网络拓扑
路由器R1的相关配置
R1(config)#router ospf 55
R1(config-router)# network 192.168.72.0 0.0.0.255 area 0
R1(config-router)#max-lsa 3 ignore-time 1 ignore-count 2 // 路由器R1的LSDB可存储的最大LSA数量设置为3;当LSA数量超过所设定的最大值时,路由器R1的OSPF进程将会进入忽略状态(进入忽略状态的OSPF进程不仅会终止所有邻居关系,而且也会对OSPF拓扑数据库做清空处理);如果路由器R1的OSPF进程进入忽略状态的次数达到3次,那么OSPF进程将永久终止邻居关系(只有在人工干预的情况下,才可对邻居关系进行恢复).
为了验证配置效果,在这里使用sh ip ospf 55和sh ip ospf database命令分别查看路由器R1的OSPF LSDB过载保护统计情况和拓扑数据库情况.如图2和3所示.
图2 路由器R1 OSPF LSDB过载保护统计情况
图3 路由器R1 OSPF LSDB中包含的LSA情况
从图中可以清楚的看到,路由器R1的OSPF进程进入忽略状态的次数已达到3次(超过所设定的最大忽略次数), 因此路由器R1将永久终止与其它OSPF路由器的邻居关系,与此同时其拓扑数据库中只包含自身所产生的LSA1.
当OSPF自治系统与网络运营商边界路由器互联时,如果采用路由重分布互相通告各自路由的方式,来保证自治系统内用户对互联网资源的正常访问,不仅会增加OSPF路由器拓扑表、路由表的规模,而且也会大量消耗其内存及CPU资源.这种做法显然既得不偿失又不现实,最理性的方式就是在OSPF自治系统边界路由器中创建一条到达网络运营商边界路由器的静态默认路由,并将其传播到其它OSPF区域.众所周知的是:除OSPF特殊区域中的ABR(区域边界路由器)以外,其它区域中的路由器是不会生成静态默认路由,并将其在自治系统中传播的.但是有一种办法可以让OSPF其它区域中的路由器,生成静态默认路由并在自治系统中传播,那就是使用命令default-info origin always.需要明确的是:通过这种方法生成的静态默认路由,将在OSPF路由器拓扑表中以5类LSA的方式出现,路由指示符为“OE1”或“OE2”.
为使读者今后能够熟练掌握传播OSPF默认路由的具体配置方法并理解其工作原理,通过四台路由器R1、R2、R3、R4搭建了一个由OSPF自治系统(R1为自治系统边界路由器)和中国教育科研网边界路由器R4组成的小型网络.网络拓扑如图4所示.在这里给出路由器R1的相关配置命令.
图4 传播OSPF默认路由网络拓扑
路由器R1的相关配置R1(config)#router ospf 55
R1(config-router)#default-info origin always //如不加参数always,则路由器R1内必须存在1条默认路由,否则该命令不起任何作用.
为了验证配置效果,以区域1中的路由器R3为例,使用sh ip route 和sh ip ospf database命令分别查看其路由表和拓扑数据库中包含的5类LSA情况.如图5和6所示.
从图中可以清楚的看到,路由器R3的路由器中存在一条路由指示符为“OE2”的静态默认路由,与此同时其拓扑数据库也被从外部注入了1条5类LSA.
图5 路由器R3的路由表
图6 路由器R3的拓扑数据库中包含的5类LSA
图7 OSPF路由汇总
配置OSPF路由汇总对于减少LSA在整个OSPF自治系统中泛洪总量,控制路由器中拓扑数据库以及路由表的规模,降低路由器CPU及内存开销,提高网络的稳定性都至关重要.OSPF路由汇总有两种类型:一种是在区域边界路由器上进行的路由汇总,该类型的路由汇总主要负责汇总3类LSA(通常情况下区域中的1类LSA和2类LSA,都需要转换为3类LSA).只要区域内的网络地址是连续的,网络技术人员就可以采用该方式的路由汇总.在区域边界路由器上进行路由汇总后,即使区域中的拓扑结构有所变化,其发生改变的链路状态信息也不会传播到区域0,从而使其它区域中的OSPF路由器不必再对自己的路由表进行更新,近而提高网络的稳定性.另一种是在自治系统边界路由器上进行路由汇总,这种类型的路由汇总主要负责汇总5类LSA,然后将其注入到自治系统内部.默认情况下,任何重分发到OSPF自治系统内的外部路由,都将使用一个5类LSA进行通告.需要注意的是:在实际应用中,无论是采用哪种类型的路由汇总,都将会自动产生一条指向黑洞接口(发送到此接口的数据包将被丢弃)的路由.这样做的目的就是为了最大限度的避免,OSPF路由器使用默认路由转发数据包,近而造成路由环路的产生.
为使读者今后能够熟练掌握传播OSPF路由汇总的具体配置方法并理解其工作原理,通过4台路由器R1、R2、R3、R4搭建了1个小型网络,并在R1、R2上手动配置路由汇总.其中,R1、R2、R3为OSPF自治系统内路由器,R4为外部自治系统边界路由器.网络拓扑如图7所示.在这里给出路由器R1与R2的相关配置命令.
(1) 路由器R1的相关配置.
R1(config)#router ospf 55
R1(config-router)#network 211.68.202.0 0.0.0.255 area 0
R1(config-router)#summary-address202.68.0.0 255.255.252.0 //配置OSPF外部路由汇总
R1(config-router)#redist rip sub metic 12
R1(config)#router rip
R1(config-router)#network 211.68.196.0
(2) 路由器R2的配置
R2(config)#router ospf 55
R2(config-router)#network 211.68.195.0 0.0.0.255 area 1
R2(config-router)#network 211.68.202.0 0.0.0.255 area 0
R2(config-router)#area 1 range 211.68.204.0 255.255.252.0 //配置OSPF域间路由汇总
为了验证在路由器R1、R2上配置OSPF路由汇总的效果,使用sh ip route命令分别查看以上两台路由器的路由表.如图8和9所示.
图8 路由器R1的路由表
图9 路由器R2的路由表
从图8中可以清楚的看到,在路由器R1的路由表中存在一条指示符为“O”,下一跳接口为NULL0的路由.该条路由既为路由器R1对OSPF自治系统外部路由进行汇总后而生成的路由.另外,在路由器R1的路由表中还存在1条指示符为“O IA”,目标地址为“211.68.204.0/22”,且下一跳的IP地址为211.68.202.1的路由.该条路由既为经路由器R2汇总的OSPF域间路由.
从图9中可以清楚的看到,在路由器R2的路由表中存在1条指示符为“O E2”,目标地址为“202.68.0.0/22”,且下一跳的IP地址为211.68.202.2的路由.该条路由既为经路由器R1汇总的OSPF自治系统外部路由.另外,在路由器R2的路由表中还存在1条指示符为“O”,目标地址为“211.68.204.0/22”,下一跳接口为NULL0的路由.该条路由既为路由器R2对路由器R3的 4个环回接口所在网络进行路由汇总后而生成的路由.
当OSPF区域中的路由器完成了拓扑数据库的同步工作后,SPF 算法就会通过比较每条可到达目的网络路径的开销值总和,来确定哪条路径为最佳路径.众所周知,OSPF开销值的计算是基于链路带宽且与其成反比(既链路带宽越高,开销值就越小),拥有最小开销值的路径会被选为最优路径.通常情况下,串行链路的开销值为64,以太网链路的开销值为10.如果所在网络为高速网络(链路带宽为100 Mbit/s及以上),链路开销值均会被默认为1.但是这样以来,就可能造成OSPF无法选择最优路径情况的出现(多条去往目的网络的路径拥有相同开销).为了避免出现上述情况,网络技术人员可以通过调整参考带宽或者直接修改接口链路开销的方式来保证每条去往目的网络的路径都拥有不同的开销值.
为使读者今后能够熟练掌握修改OSPF开销的具体配置方法并理解其工作原理,通过四台路由器R1、R2、R3、R4搭建了一个由区域0和区域1组成的小型OSPF自治系统.其中,路由器R1、R2为区域边界路由器,路由器R3为骨干区域内部路由器,路由器R4为区域1内部路由器.路由器R3访问路由器R4所在子网192.168.10.0/24有两条路径可供选择,既R3-R1-R4-目标地址与R3-R2-R4-目标地址.拟计划通过修改路由器R2中的s2/2接口链路开销的方式,将R3-R2-R4-目标地址这条路径作为开销最低的路由加入到路由器R3的路由表中.网络拓扑如图10所示.在这里给出相关的配置命令.
图10 修改OSPF链路开销网络拓扑
在修改路由器R2中的s2/2接口链路开销前,使用sh ip route命令查看路由器R3 的路由表,如图11所示.从中不难发现路由器R3的路由表中存在两条到达目标地址192.168.7.1的域间路由(即R3-R1-R4-目的地址与R3-R2-R4-目的地址),并且这两条路由的开销值相同.如此时对目标地址192.168.7.1进行访问,路由器R3将执行等价负载均衡的访问方式.
图11 修改链路开销前路由器R3的路由表
路由器R2的配置
R2(config)#int s2/2
R2(config-if)#ip ospf cost 15
图12 修改链路开销后路由器R3的路由表
为了验证修改路由器R2中的s2/2接口链路开销效果,使用sh ip route命令再次查看路由器R3的路由表.如图12所示,从中不难发现路由器R3的路由表中只存在一条路由指示符为“O IA”且目标地址为192.168.7.1的域间路由(既R3-R2-R4-目标地址).这是由于该条可到达目标网络路径的总开销只有80(R3-R2之间的链路为串行链路,因此该条链路的开销默认为64;R2-R4之间的串行链路开销为15,这是将路由器R2中的s2/2接口链路开销修改为15所致;另外,R4-目的地址192.168.7.1的默认开销为1,这是因为该目的地址为路由器R4中LOOPBACK 1的接口地址.因此该条路径总开销为64+15+1=80,相比另一条可到达目标网络路径(R3-R1-R4-目标地址)的总开销(129)更低.
SPF 算法通过比较两条路径的总开销,最终确定R3-R2-R4-目标地址为最优路径,因此将其加入到路由器R3的路由表中.
在大型网络中,进行路由信息过滤对于保证网络高效稳定运行,避免与用户抢占网络带宽、减少路由器资源占用率至关重要.通常情况下,某些路由信息并不需要在网络中进行传播(例如:在路由重分布的过程中,只有某些特定外部路由信息才需要在自治系统内部进行传播),因此网络技术人员往往会对这些外部路由信息进行过滤.众所周知的是:进行路由过滤可采用多种方式进行,其中采用分发列表的方式则显得更为灵活且简单易行.应用分发列表技术不仅可以让网络技术人员对从路由器特定接口进入或离开的路由信息进行过滤,而且还可以对重分布而来的外部路由信息进行过滤.下面就在网络中应用该技术需要特别注意的几个方面做一下说明:首先,在距离矢量路由协议中应用分发列表技术,无论将其部署在IN方向或OUT方向,都可以对路由信息进行正常过滤;其次,如在OSPF路由协议的IN方向中应用分发列表技术,由于分发列表无法过滤LSA信息的特性,使得本地路由器已过滤掉的路由,仍旧存在于邻居路由器的路由表中.如在OSPF路由协议的OUT方向中应用分发列表技术,只能将其部署在ASBR上,并只对重分布到自治系统内的外部路由起作用.
为使读者今后能够熟练掌握使用分发列表技术过滤OSPF自治系统外部路由信息的具体配置方法并理解其工作原理,通过3台路由器R1、R2、R3搭建了一个小型网络.其中,路由器R1与R2之间运行OSPF路由协议(R2为ASBR),路由器R2与R3之间运行RIP路由协议.为使全网能够互联互通,在路由器R2上应用双向路由重分发技术,但是禁止源自RIP协议的路由192.168.20.0/24重分发到OSPF自治系统中.网络拓扑如图13所示.在这里给出路由器R2的相关配置命令.
图13 使用分发列表过滤OSPF外部路由
路由器R2的配置
R2(config)#access-list 8 deny 192.168.20.0 0.0.0.255 //建立编号为8的访问控制列表
R2(config)#access-list 8 petmit any
R2(config)#router ospf 55
R2(config-router)#network 172.13.0.0 0.0.0.255 area 0
R2(config-router)#redist rip subnets metic 13
R2(config-router)#distribute-list 8 out rip
R2(config)#router rip
R2(config-router)#network 172.14.0.0
R2(config-router)#redist ospf 55 metic 13
为了验证在路由器R2上所做的配置是否正确,分别使用sh ip ospf data命令和sh ip route命令查看路由器R2中的OSPF拓扑数据库和路由器R1中的路由表.如图14和15所示.从中不难发现:其一,路由器R2为ASBR,区域0中的拓扑数据库包含有5类LSA(其中不存在到达192.168.20.0的链路状态信息).默认情况下,路由器R1与路由器R2的拓扑数据库一致.其二,路由器R1的路由表中只存在两条路由指示符为“O E2”,且目标地址分别为172.14.0.0和192.168.19.0/24的外部路由(该路由既为重分布到OSPF自治系统内的外部路由).这充分说明,源自RIP协议的路由192.168.20.0/24没有被重分发到OSPF自治系统中.
图14 路由器R2的拓扑数据库
图15 路由器R1的路由表
当前OSPF路由协议已成为大中型网络最常用的内部网关协议.它虽然在普通有线网络中表现良好,但是并不能很好的在特定网络环境下工作.网络技术人员在部署OSPF路由协议之前,往往会对其进行一系列的规划与优化设计.这样做不仅有助于提升网络的稳定性与可扩展性,而且也有助于提升路由器的综合性能.