5.2 工作任务二 OSPF动态路由协议配置
【任务分析】
根据图5-10所示拓扑中的路由协议规划,老校区局域网使用静态路由实现内部网络互联,新校区局域网使用RIPv2动态路由协议实现内部网络互联,威海校区和青岛校区都是新建校区。由于网络规模较大,只使用静态路由会增加配置维护工作难度,只使用RIPv2又不能满足网络的可扩展性需求,所以管理员决定部署多区域OSPF动态路由协议,实现各个局域网与广域网之间的互联互通。为了在实施过程中不影响网络的正常工作,管理员将使用路由重分发技术,使OSPF与老校区的静态路由和新校区的RIPv2协同工作。
OSPF协议原理与配置较为复杂,因此在实施Leader职业学院广域网工程之前,先通过单区域OSPF、多区域OSPF和路由重分发三个典型配置案例,掌握OSPF的工作原理及配置方法,然后为Leader职业学院规划OSPF的路由设计。
【任务要求】
任务名称 | OSPF动态路由协议配置 |
任务目标 | 了解OSPF的基础知识、多区域OSPF的概念和配置、路由重分发的概念和配置。 |
学习方式与工具 | Cisco 2811或2911路由器、串口模块、串行线缆、计算机、Packet Tracer、GNS3、Internet搜索、资料查阅。 |
相关知识 | Cisco Packet Tracer的使用方法,GNS3模拟器的使用方法。 |
工作任务 | (1)掌握OSPF的工作原理、OSPF数据包类型、OSPF的区域结构; (2)掌握OSPF的基本配置、Router ID的选取、OSPF的cost配置、DR优先级配置、被动接口配置; (3)掌握OSPF区域划分的概念、OSPF路由器类型、OSPF虚链路概念; (4)掌握多区域OSPF配置、OSPF区域间路由汇总配置、传播OSPF默认路由配置、OSPF身份验证配置、OSPF虚链路配置; (5)掌握路由重分发的概念、种子度量值、重分发的方式; (6)掌握重分发直连路由的配置、重分发静态路由的配置、重分发到RIP的配置、重分发到OSPF的配置、OSPF的外部路由类型、OSPF的ASBR路由汇总配置。 |
完成任务和成果 | 单区域OSPF典型配置案例、多区域OSPF典型配置案例、路由重分发典型配置案例三个实验案例的配置文件、每台路由器的OSPF邻居表、OSPF路由表。归纳配置过程中出现过的问题,总结OSPF的知识结构。 |
5.2.1单区域OSPF配置与管理
1.OSPF基础知识
1)链路状态路由协议的基本原理
链路状态路由协议包括OSPF和IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)两种。与距离矢量路由协议(如RIP)相比,链路状态路由协议更适合部署在大型网络中。链路状态路由协议的收敛速度更快,并有很好的可扩展性。链路状态路由协议使用SPF算法计算到达目的网络的最佳路径。SPF(Shortest Path First)算法即最短路径优先算法,是由Edsger Dijkstra开发的,因此也叫Dijkstra算法。
对于链路状态路由协议,开销(cost)通常是基于链路的带宽计算出来的数值,SPF算法使用到达远程网络的累加链路开销作为度量值。在图5-11所示拓扑中,每条链路都有一个特定的开销值,比如以太网链路的开销值为10,串行链路的开销值为48。链路的开销实际上是路由器接口的开销。可以根据接口的带宽计算开销值,也可以手工指定接口的开销。

图5-11 SPF算法根据链路开销计算度量值
(2)OSPF的区域结构
OSPF支持把网络划分为多个区域(Area),相同区域内的所有OSPF路由器的链路状态数据库都是相同的。链路状态信息只在区域内部泛洪,减小了链路状态数据库的规模。在区域间可以使用路由汇总,减小路由表的规模。使用区域划分,既能够减轻路由器的工作负担,又使网络具有可扩展性。
OSPF的区域使用数字来表示,编号范围是2的32次方。在一个OSPF网络中,必须存在主干区域,其编号为0,所有使用其他编号的区域均为非骨干区域。为避免出现路由环路,OSPF规定骨干区域必须是连续的,非骨干区域必须与主干区域直接相连,如图5-12所示,Area 1和Area 2都与Area 0直接相连。
![]() | ![]() |
| 图5-12 OSPF的区域结构 | 图5-13单区域OSPF典型配置案例拓扑图 |
对于小型网络来说,链路状态信息一般比较少,因此可以不对网络进行区域划分,只使用单区域OSPF,即只有一个骨干区域Area 0就可以了。
2.单区域OSPF典型配置案例
按照如图5-13所示的网络拓扑图和地址分配,掌握以下OSPF配置要点:
配置单区域OSPF;路由器Router-ID的选取;将环回接口(Loopback Interface)作为以太网接口发布到OSPF网络中;修改OSPF链路开销;修改接口的DR优先级;配置被动接口。
(1)配置接口地址
按照项目3、4中所学知识配置所有路由器接口的IP地址,并验证其连通性。
(2)配置单区域OSPF
①路由器R1的OSPF配置:
R1(config)# router ospf 1
R1(config-router)# network 10.1.100.0 0.0.0.255 area 0
R1(config-router)# network 10.1.200.0 0.0.0.255 area 0
R1(config-router)# exit
②路由器R2的OSPF配置:
R2(config)# router ospf 1
R2(config-router)# network 10.1.100.0 0.0.0.255 area 0
R2(config-router)# network 10.1.200.0 0.0.0.255 area 0
R2(config-router)# exit
③路由器R3的OSPF配置:
R3(config)# router ospf 1
R3(config-router)# network 10.1.200.0 0.0.0.255 area 0
R3(config-router)# exit
3)验证OSPF邻居关系
查看OSPF运行信息:在路由器R1上输入“show ip protocols”,查看本路由器所配置的路由协议基本信息。
查看OSPF邻居关系:在路由器R1上输入“show ip ospf neighbor”,查看R1的OSPF邻居信息。

可以看到,路由器R1有3个OSPF邻居。通过在路由器R2、R3上运行“show ip protocols”可以发现,R1通过FastEthernet0/0接口与R2、R3建立了邻居关系,通过Serial0/0接口与R2建立了邻居关系。
4)Router ID的选取
路由器要运行OSPF路由协议,就必须有一个Router ID。Router ID表示为一个IPv4地址,用来在OSPF路由域中唯一的标识一台路由器。在“show ip protocols”和“show ip ospf neighbor”的信息中,可以分别看到路由器自己的Router ID和邻居路由器的Router ID。
Router ID可以手工设置,也可以自动获取,实际上,当在路由器上输入“router ospf 1”这个命令时,OSPF协议就会选择一个Router ID了。
OSPF通过以下顺序确定自己的Router ID:
①使用OSPF路由协议配置模式中的router-id命令配置的IP地址。
②如果没有配置router-id,则使用环回接口中最大的IP地址。
③如果以上两者都未配置,则使用活动物理接口中最大的IP地址。
本案例中,由于每台路由器都配置了环回接口,所以都会使用环回接口的IP地址作为自己的Router ID。如果想要使用router-id命令更改Router ID的话,必须运行“clear ip ospf process”重新启动OSPF进程,使新的Router ID生效。
重新启动OSPF进程后,OSPF会与所有的邻居路由器解除现有关系,然后重新建立邻居关系,并重新交换相关的链路状态信息。
以路由器R1为例,手工设置Router ID为1.1.1.1的过程如下:
R1(config)#router ospf 1
R1(config-router)#router-id 1.1.1.1
Reload or use "clear ip ospf process" command, for this to take effect
R1(config-router)#end
R1#clear ip ospf process
Reset ALL OSPF processes? [no]: yes
(5)将环回接口作为以太网接口发布到OSPF
①将环回接口使用network命令发布到OSPF,以路由器R1为例,配置过程如下:
R1(config)# router ospf 1
R1(config-router)# network 10.1.1.0 0.0.0.255 area 0
路由器R2、R3上的配置类似。
②查看每台路由器的路由表。每台路由器应该能够通过OSPF学习到所有的远程网络地址,以路由器R3为例,以下是所有通过OSPF协议学习到的路由:

虽然思科设备支持将环回接口配置为任意长度的子网掩码,但是通过OSPF学习到的R1和R2的环回接口的路由信息却是32位的主机路由,这是由接口的OSPF接口类型决定的。
在路由器R1上输入“show ip ospf interface”,显示如下(部分显示被省略):

可以看到,环回接口Loopback1的网络类型是LOOPBACK,配置为这种网络类型的环回接口会被OSPF作为一个末节主机对待。所以在默认的接口类型配置下,OSPF会将环回接口的地址变为32位的主机地址传播到其他路由器。对实际工程来说,这通常是没有问题的。
但本案例是用环回接口来模拟以太网LAN接口,为了让路由器学习到环回接口本来的前缀长度,需要更改环回接口的OSPF网络类型。
③ OSPF网络类型。OSPF根据接口的数据链路层协议将网络分为若干种类型,以下是几种常见的类型:
BROADCAST(广播):当数据链路层协议是Ethernet(以太网)时,OSPF的缺省网络类型是Broadcast。在该类型的网络中,需要进行DR和BDR的选举。
POINT_TO_POINT(点到点):当数据链路层协议是PPP或HDLC时,OSPF的缺省网络类型是Point-To-Point。在该类型的网络中,不需要进行DR和BDR的选举。
LOOPBACK(环回):这是一种思科专有的OSPF网络类型,是环回接口的缺省网络类型。OSPF会将环回接口以32位的主机地址形式传播到其他路由器,以便于管理。但是在MPLS网络中,这会导致可达性和功能性问题。
④更改环回接口的OSPF网络类型。想要让OSPF传播环回接口的原有子网掩码,可以手工将环回接口的OSPF网络类型从LOOPBACK更改为POINT_TO_POINT。以路由器R1为例,配置过程如下:
R1(config)# interface loopback1
R1(config-if)# ip ospf network point-to-point
⑤查看路由表并测试连通性。为所有路由器的环回接口更改网络类型后,再次查看路由器R3的OSPF路由:

这时,路由器R3学习到的其他路由器的环回接口的子网掩码长度就是24位了。从路由器R3测试到路由器R1的环回接口的连通性,仍然可以ping通。
(6)修改OSPF开销
在上面的路由信息中,[110/11]是有关这个网络的OSPF管理距离和度量值。OSPF的默认管理距离是110,而度量值的计算是基于链路的带宽的。OSPF使用从本路由器到远程网络的累加链路开销作为度量值,开销(cost)是基于链路的带宽计算出来的数值。
对于每条链路,OSPF计算开销的公式为:
接口OSPF开销(cost)= (bps)/ 接口Bandwidth(bps)
称为“参考带宽”,即100Mbps,用这个带宽除以接口的Bandwidth(带宽),就得到链路的开销。关于OSPF的开销,有两个需要注意的地方:一个是接口的Bandwidth,另一个是参考带宽。
①修改接口的开销。对于思科路由器,OSPF并不会检测接口的实际带宽,而是使用为接口规划的默认带宽计算开销值。使用“show interfaces”可以显示每个接口的基本信息,包括接口的物理层、数据链路层状态、硬件MAC地址、IP地址、MTU、Bandwidth(带宽)、链路层封装以及收发数据包数量统计等信息。
在路由器R1上输入“show interfaces”,显示如下(部分显示被省略):

可以看到,快速以太网接口的默认带宽是10Mbps,串行接口的默认带宽是1.544Mbps。(本文使用了GNS3来模拟路由器,对于实际设备,快速以太网接口的默认带宽应为100Mbps。)
在路由器R1上运行“show ip ospf interface brief”,查看每个接口的开销值。

用参考带宽100Mbps除以快速以太网接口的10Mbps,得到的开销值为10。用参考带宽除以串行接口的1.544Mbps,得到数值为64.77,去掉小数,开销值为64。用参考带宽除以环回接口的8000Mbps,得到开销值为0.0125。如果计算出的数值小于1,则开销值取1。
当接口的实际带宽与默认带宽不相同时,可以手工修改接口的带宽,以修正OSPF计算出来的开销值。注意,同一条链路的两端应配置为相同的带宽。
在接口配置模式下使用bandwidth命令修改接口的带宽。注意,该命令不能修改接口的实际带宽,只是指定接口的bandwidth值,使OSPF等路由协议能够计算出正确的开销值。
以路由器R1为例,将串行接口Serial 0/0的bandwidth修改为2Mbps的过程如下:
R1(config)#interface serial 0/0
R1(config-if)#bandwidth 2000
在链路对端,路由器R2的串行接口Serial 0/0的bandwidth也需要做相同的修改。
另一种修改接口开销的方法是直接配置接口的cost,以路由器R1为例,将串行接口Serial 0/0的cost修改为50的过程如下:
R1(config)#interface serial 0/0
R1(config-if)#ip ospf cost 50
②配置参考带宽
当今的主流以太网技术已经发展到10Gbps,使用默认的参考带宽会将所有的快速以太网接口、千兆以太网接口和万兆以太网接口的开销都计算为1,这可能出现次优路由。因此可以修改OSPF的参考带宽,以适应更快的链路速度。
在每台路由器上,将OSPF的参考带宽修改为10000Mbps。
R1(config)#router ospf 1
R1(config-router)#auto-cost reference-bandwidth 10000
R2(config)#router ospf 1
R2(config-router)#auto-cost reference-bandwidth 10000
R3(config)#router ospf 1
R3(config-router)#auto-cost reference-bandwidth 10000
必须修改所有OSPF路由器的参考带宽,以保证度量值的准确性。另外,如果之前手工配置过接口的cost,在修改了OSPF参考带宽后,也需要一并修改。
(7)修改接口的DR优先级
在以太网这样的多路访问网络中,OSPF会选举出一个DR(Designated Router,指定路由器)和一个BDR(Backup Designated Router,备用指定路由器),用来收集链路的所有路由器的链路状态信息,这样可以明显减少LSA的泛洪。
在路由器R1上输入“show ip ospf neighbor”,显示所有邻居信息:

可以看到,路由器R1通过FastEthernet0/0建立了两个邻居关系,邻居的Router ID分别为10.1.2.1和10.1.3.1,邻居的身份分别是BDR和DR。而路由器R1自己的FastEthernet0/0接口的身份为DROther。在一个多路访问网络中,除了DR和BDR以外,所有其他路由器接口的身份都是DROther。
① DR选举条件
在一个多路访问网络中,具有最高OSPF接口优先级(interface priority)的路由器将成为DR,具有第二高OSPF接口优先级的路由器将成为BDR,如果OSPF接口优先级相等,则取路由器ID最高者。DR/BDR选举只发生在多路访问网络中,在点到点串行链路上不选举。
所有以太网接口的默认OSPF接口优先级为1,所以在本案例中,Router ID最大的R3成为了DR,Router ID第二大的R2成为了BDR,而R1是DROther。
②修改接口的DR优先级
如果打算让路由器R1成为DR,路由器R2成为BDR,可以通过修改接口的DR优先级,并重启OSPF路由进程实现。
在路由器R1、R2和R3上配置以下命令:

待邻居关系重新建立完毕后,在路由器R1上显示邻居表如下:

这时,路由器R1在FastEthernet0/0链路上已经成为了DR
(8)配置被动接口
当使用network命令声明了某个路由器接口后,OSPF就会开始在这个接口发送并接收Hello数据包,并进行后续的链路状态信息交换。但是,将OSPF协议信息发送到不包含OSPF路由器的用户网络会有安全隐患,所以,在实际工程中,务必将连接到用户业务网段的接口配置为被动接口。将接口配置为被动接口后,路由器将不再在接口上向外发送Hello数据包,所以无法在接口上与外部路由器建立邻居关系,也无法发送接收链路状态信息。
在本案例中,使用了环回接口模拟用户业务以太网接口。在路由器R1上,输入以下命令,将Loopback1接口配置为被动接口。
R1(config)#router ospf 1
R1(config-router)#passive-interface loopback 1
同样,在路由器R2、R3上需要将各自连接用户的接口配置为被动接口。
如果路由器上连接用户的接口数量较多,可以使用“passive-interface default”先将所有接口配置为被动接口,然后配置需要与其他路由器建立邻居关系的非被动接口
对于路由器R1来说,相关的配置如下:

使用“show ip protocols”可以看到哪些接口是被动接口(以下省略部分输出):

5.2.2多区域OSPF配置与管理
使用多区域OSPF组建可扩展的网络
(1)OSPF区域划分
单区域OSPF通常能够满足不多于50台路由器规模的网络。如果网络的规模日益扩大,有上百台路由器都运行单区域OSPF时,链路状态信息会非常的庞大,占用大量的路由器资源及带宽资源。另外,网络规模扩大之后,网络拓扑发生变化的可能性也会增加,网络会经常处于不稳定状态,大量的OSPF协议报文会浪费带宽资源。而且每次拓扑发生变化,都会导致所有的路由器重新进行SPF路由计算。
OSPF通过将网络划分成多个区域(Area)来解决上述问题。从逻辑归属上将路由器划分为多个组,每个组用区域号(Area ID)来标识。如上小节中的图5-12,通过对路由器的逻辑分组,将OSPF路由域划分为了3个区域,路由器R1、R2、R3在骨干区域0中,路由器R2、R4在区域1中,路由器R3、R5在区域2中。

图5-12 OSPF的区域结构
关于区域划分,需要注意:区域划分的边界是路由器,而不是链路,比如路由器R2和R3都在区域边界。一条链路只能属于一个区域,每个参与OSPF协议的路由器接口必须属于某一个区域。另外,一条链路两端的接口必须属于相同的区域,否则不能建立邻居关系。
通过区域划分,可以减少区域内链路状态信息的数量,节省路由器系统资源和链路带宽资源。同时,可以在区域边界进行路由汇总,减小路由表规模,将路由震荡控制在区域内部。
2)OSPF路由器类型
OSPF路由器可分为:区域内部路由器(Internal Router)、骨干路由器(Backbone Router)、区域边界路由器(Area Border Router,ABR)和自治系统边界路由器(Autonomous System Border Router,ASBR)四种,如图5-14所示。
区域内部路由器:所有接口都属于同一个区域中的路由器,如路由器R1、R4、R5。
骨干路由器:至少有一个接口属于骨干区域的路由器,如路由器R1、R2、R3。

图5-14使用虚链路解决骨干区域被分割的问题
在图5-14中,骨干区域被分割,通过在ABR路由器R2和R3上配置虚链路,可以实现骨干区域的逻辑连接
区域边界路由器:同时属于两个以上区域的路由器,如路由器R2和R3。ABR主要用来连接骨干区域与非骨干区域,在ABR上可以进行区域间路由汇总。
自治系统边界路由器:至少有一个接口与其他路由域相连的路由器称为ASBR。只要一台OSPF路由器通过路由重分发引入了外部路由,则这台路由器就是ASBR。有关路由重分发和ASBR路由汇总的知识与配置将在5.2.3小节中详细讲解。
(3)OSPF虚链路
OSPF链路状态信息在区域内部泛洪,一个区域内的所有路由器的链路状态数据库是相同的。在区域之间,不会传播链路状态信息,而是传播整个区域的路由表。为了避免出现路由环路,所有非骨干区域之间的路由信息必须通过骨干区域来转发,骨干区域负责与其他区域之间的路由。为此,OSPF有两个规定:
所有非骨干区域必须与骨干区域保持连通;
骨干区域自身也必须保持连通。
所以在进行区域划分时,最好使非骨干区域与骨干区域直接相连,并且骨干区域最好连续,不被其他区域分割。如果因为某些原因不能遵循以上两点,出现了骨干区域被分割,或非骨干区域无法与骨干区域直接相连时,可以通过虚链路解决。
虚链路是在两台ABR之间通过一个非骨干区域而建立的一条逻辑通道。虚链路的两端必须是ABR,而且必须在两台ABR上同时配置才可生效。提供建立虚链路的区域也称作传输区域(Transit Area)。

图5-15使用虚链路解决非骨干区域无法与骨干区域直接连接的问题
在图5-15中,非骨干区域Area 2没有与骨干区域直接相连,通过在ABR路由器R2和R3上配置虚链路,可以实现Area 2与骨干区域的逻辑连接。
虚链路依赖于底层传输区域内路由的连通性,在上面的两个例子中,路由器R2和R3在Area 1中不必是直接相连的,中间有其他路由器也可以,但是必须具有路由连通性,虚链路才能建立起来。虚链路建立成功后,路由器R2和R3会形成虚链路邻居关系。
虚链路不能穿越多个区域,也不能穿越末节区域,虚链路只能穿越一个标准的非骨干区域。若要使用虚链路穿越两个非骨干区域到骨干区域,需要创建两条虚链路,每个区域一条。
2.多区域OSPF典型配置案例
图5-16 多区域OSPF典型配置案例拓扑图 | 按照如图5-16所示拓扑图所示IP地址及多区域OSPF规划信息,掌握如下OSPF配置要点:多区域OSPF基本配置;配置OSPF区域间路由汇总;传播OSPF默认路由;配置OSPF身份验证;配置OSPF虚链路。 |
(1)配置接口地址
本案例使用环回接口模拟业务以太网接口,在路由器上创建环回接口时,需要将接口的OSPF网络类型更改为point-to-point,使得OSPF传播环回接口的真实子网掩码。例如,在路由器R1上,创建Loopback 1接口的过程如下:
R1(config)# interface loopback 1
R1(config-if)# ip address 10.1.1.1 255.255.255.0
R1(config-if)# ip ospf network point-to-point
(2)多区域OSPF基本配置
①路由器R1的OSPF配置:配置路由器R1的Router ID为10.1.1.1,将Serial 0/0、Loopback 1接口加入Area 0。Loopback 30接口模拟连接到Internet的接口,不参与OSPF协议运作。
R1(config)# router ospf 1
R1(config-router)#router-id 10.1.1.1
R1(config-router)# network 10.1.12.0 0.0.0.255 area 0
R1(config-router)# network 10.1.1.0 0.0.0.255 area 0
R1(config-router)# exit
②路由器R2的OSPF配置:配置路由器R2的Router ID为10.1.2.1,将Serial 0/0接口加入Area 0,将Serial 0/1、Loopback 2、96、97、98、99接口加入Area 23。其中,Loopback 96-99这4个接口的地址可以汇总为192.168.96.0/22,对应的通配符掩码是0.0.3.255。
R2(config)# router ospf 1
R2(config-router)#router-id 10.1.2.1
R2(config-router)# network 10.1.12.0 0.0.0.255 area 0
R2(config-router)# network 10.1.23.0 0.0.0.255 area 23
R2(config-router)# network 192.168.96.0 0.0.3.255 area 23
R2(config-router)# network 10.1.2.0 0.0.0.255 area 23
R2 (config-router)# exit
③路由器R3的OSPF配置:配置路由器R3的Router ID为10.1.3.1,将Serial 0/1、Loopback 3接口加入Area 23。Loopback 100-103接口暂时不加入任何区域。
R3(config)# router ospf 1
R3(config)# router-id 10.1.3.1
R3(config-router)# network 10.1.23.0 0.0.0.255 area 23
R3(config-router)# network 10.1.3.0 0.0.0.255 area 23
R3(config-router)# exit
3)检查OSPF邻居关系和路由表
等三台路由器完成收敛,来看路由器R3的OSPF邻居表:

然后查看路由器R3学习的OSPF路由信息:

在路由表中,以O开头的路由条目是路由器R3从本区域(Area 23)内部学习到的区域内部路由,以“O IA”开头的路由条目是从其他区域(这里只有Area 0)学习到的区域间路由。
再来看路由器R1的OSPF路由:

4)配置OSPF区域间路由汇总
为减小路由表的规模,避免出现路由震荡,RIPv2支持在接口上配置汇总路由。但OSPF不能像RIP那样在任意接口上配置路由汇总。OSPF是禁用自动汇总的,但OSPF支持在ABR上配置区域间路由汇总,以及在ASBR上配置外部路由汇总,不能在区域内部路由器上汇总路由。另外,OSPF能够将路由汇总为超网,而RIPv2最多只能汇总为有类主网。
①配置OSPF区域间路由汇总
在本案例中,路由器R2是ABR,可以在R2上配置区域间路由汇总,将Loopback96-99这4个接口的地址汇总为192.168.96.0/22。当R2向它连接的其他区域(如Area 0)发送相关子网路由时,会将其汇总再发送,而不再发送明细子网路由。
在路由器R2上配置OSPF区域间路由汇总的过程如下:
R2(config)#router ospf 1
R2(config-router)#area 23 range 192.168.96.0 255.255.252.0
②验证OSPF区域间路由汇总
再次查看路由器R1的OSPF路由条目:
R1#show ip route ospf
10.0.0.0/24 is subnetted, 5 subnets
O IA 10.1.3.0 [110/129] via 10.1.12.2, 00:26:04, Serial0/0
O IA 10.1.2.0 [110/65] via 10.1.12.2, 00:29:56, Serial0/0
O IA 10.1.23.0 [110/128] via 10.1.12.2, 00:29:56, Serial0/0
O IA 192.168.96.0/22 [110/65] via 10.1.12.2, 00:00:31, Serial0/0
可以看到,路由器R1只接收到了一条汇总路由。通过配置区域间路由汇总,减小了路由表的规模。需要注意的是,路由器R3上仍为4条明细路由,因为区域间路由汇总只将汇总路由发送到其他区域,不会发送给本区域的内部路由器。如果区域内的路由不能恰好汇总为一条路由,也可以配置多条汇总路由。
(5)传播OSPF默认路由
在本案例中,路由器R1使用Loopback 30接口模拟Internet连接。而其他环回接口均用于模拟业务以太网接口,连接用户网络。若想要让用户访问Internet,必须为每台路由器配置默认路由。对于小型局域网,可以在每台路由器上手工配置静态默认路由,但对大型网络,在每台路由器上配置静态默认路由既费时费力,又不能够适应网络拓扑的变化。因此,可以使用OSPF的传播默认路由功能。具体操作为:在路由器R1上配置静态默认路由,指向Internet,并将默认路由信息传播到OSPF路由域中的所有其他路由器。
在路由器R1上配置静态默认路由,并发布到OSPF网络中的过程如下:
R1(config)#ip route 0.0.0.0 0.0.0.0 loopback 30 172.30.30.2
R1(config)#router ospf 1
R1(config-router)#default-information originate
这条命令会让路由器R1生成一条OSPF默认路由,以外部路由的方式重分发到OSPF路由域中。在路由器R3上查看路由表:
R3#show ip route
(省略其他输出内容)
O*E2 0.0.0.0/0 [110/1] via 10.1.23.2, 00:00:03, Serial0/1
可以看到,路由器R3通过OSPF学习到了一条指向路由器R2的默认路由。在路由器R2上也会有一条指向路由器R1的默认路由。该路由的标识为“O*E2”,其中,*表示该路由是一条候选默认路由,而E2表示这是一条第2类OSPF外部路由,该路由的度量值是1。有关路由重分发、种子度量值以及OSPF外部路由类型,将在“5.2.3 路由重分发配置与管理”中详细讲解。
另外,如果想让路由器R1无论是否存在静态配置的默认路由,都对其他路由器发布默认路由的话,可以配置“default-information originate always”,总是发布默认路由
6)配置OSPF身份验证
使用OSPF身份验证,可以避免路由器接收到伪造的路由信息,在实际工程中,配置路由协议的身份验证通常是必须的,特别是能够直接连接到用户的设备。
① OSPF身份验证模式。默认情况下,OSPF的身份验证模式是null,即不对路由信息进行身份验证。OSPF还支持其他两种身份验证模式:简单密码身份验证和MD5身份验证。
简单密码身份验证:也叫明文身份验证,使用这种模式,设备会在链路上直接发送预配置的验证密码。该验证模式不够安全,通常只在实验环境中使用。
MD5身份验证:设备不会在链路上直接发送预配置的验证密码,而是根据预配置的密钥ID和密钥,使用MD5算法生成一个散列值,在链路上发送的是散列值。在实际工程中,这是推荐使用的身份验证模式。
②配置简单密码身份验证。为全面讲解身份验证配置,本案例在路由器R1与R2之间的链路上启用MD5身份验证,在路由器R2与R3之间的链路上启用简单密码身份验证。
在路由器R2与R3上配置简单密码身份验证的过程如下:
R2(config)# interface serial 0/1
R2(config-if)# ip ospf authentication
R2(config-if)# ip ospf authentication-key lcg
R3(config)# interface serial 0/1
R3(config-if)# ip ospf authentication
R3(config-if)# ip ospf authentication-key lcg
简单密码身份验证只需要配置一个密码,在本案例中,密码是lcg
③配置MD5身份验证。在路由器R1与R2上配置MD5身份验证的过程如下:
R1(config)# interface serial 0/0
R1(config-if)# ip ospf authentication message-digest
R1(config-if)# ip ospf message-digest-key 1 md5 ljz
R2(config)# interface serial 0/0
R2(config-if)# ip ospf authentication message-digest
R2(config-if)# ip ospf message-digest-key 1 md5 ljz
使用MD5身份验证时,可以为一个接口配置多个密钥,以密钥ID来标识,本案例的密钥ID是1,密钥是ljz。配置密码时,注意两端配置要完全一致。
使用MD5身份验证时,可以为一个接口配置多个密钥,以密钥ID来标识,本案例的密钥ID是1,密钥是ljz。配置密码时,注意两端配置要完全一致
无论使用OSPF的简单密码验证还是MD5验证,都不会对路由信息做加密处理,因此不能防范路由信息的泄露。要防止路由信息泄露到用户网络,需要使用前面介绍过的被动接口,或5.2.3介绍的重分发直连路由。
(7)配置OSPF虚链路
为介绍OSPF虚链路的配置,接下来将在路由器R3上配置Area 100,请注意观察图5-16,Area 100没有与Area0直接相连。
①配置OSPF Area 100。将路由器R3的Loopback 100、101、102、103接口加入Area 100。该区域只与Area 23直接连接,并没有连接到Area 0。路由器R3将成为连接Area 23和Area 100的ABR。
R3(config)#router ospf 1
R3(config-router)#network 192.168.100.0 0.0.3.255 area 100
路由器R3的Loopback 100-103这4个接口的地址可以汇总为192.168.100.0/22,对应的通配符掩码是0.0.3.255。
②检查路由表。在路由器R2上查看OSPF路由,结果没有发现任何新路由:

③配置OSPF虚链路。在ABR路由器R2和R3上配置OSPF虚链路的过程如下:
R2(config)#router ospf 1
R2(config-router)#area 23 virtual-link 10.1.3.1
R3(config)#router ospf 1
R3(config-router)#area 23 virtual-link 10.1.2.1
由于Area 100可以通过传输区域(也叫中转区域)Area 23与Area 0连接起来,所以需要在Area 23中与Area 0和Area 100直连的ABR上配置虚链路,指定对端路由器的IP地址即可。
在配置虚链路时,既可以指定对端的物理接口地址,也可以指定环回接口地址。出于稳定性考虑,最好使用环回接口来配置虚链路,前提是在路由表或邻居表中能够寻找到对方。OSPF虚链路依赖于传输区域内的路由连通性
④验证OSPF虚链路。在路由器R2上显示OSPF邻居表,会发现一个虚链路邻居,该邻居关系是与路由器R3建立的。

在路由器R1和R2上显示OSPF路由表,可以看到位于Area 100的4条路由了。

8)优化网络实施
首先在位于Area 23和Area 100边界的ABR路由器R3上,配置区域间路由汇总,将Area 100的4条路由汇总为1条。
R3(config)#router ospf 1
R3(config-router)#area 100 range 192.168.100.0 255.255.252.0
再次查看路由器R1的OSPF路由表,会发现Area 100的4条路由已经汇总为1条。
R1#show ip route ospf
(省略其他输出内容)
O IA 192.168.100.0/22 [110/129] via 10.1.12.2, 00:02:27, Serial0/0
但是,来自Area 23的路由,既包括1条汇总路由,又包括4条明细路由。这是因为路由器R2与R3建立了一条虚链路连接,将路由器R3的路由传播给了位于骨干区域中的路由器R1。而刚才只是在ABR路由器R2上配置了区域间汇总,在R3上学习到的Area 23区域内部路由是没有汇总的,所以,路由器R3通过虚链路将路由器R2的Loopback96-99的4条明细路由又发送给了位于骨干区域中的路由器R1。
一步优化网络实施的步骤是在ABR路由器R3上也配置区域间路由汇总,将Area 23的4条路由汇总为1条,配置过程如下。
R3(config)#router ospf 1
R3(config-router)#area 23 range 192.168.96.0 255.255.252.0
这时,每台路由器的路由表都已完整,而且最大限度的缩小了路由条目数量。
5.2.3路由重分发配置与管理
1.路由重分发技术
如图5-17所示的网络,同时运行了RIP和OSPF两种路由协议,像这种同时运行多种路由协议的网络,叫做多路由协议网络。在图5-17中,路由器R2同时运行了两种路由协议,称作边界路由器;运行一种路由协议的网络范围称作路由域,如路由器R1和R2属于RIP路由域,而路由器R2和R3属于OSPF路由域。

图5-17多路由协议网络
路由器维护了一张路由表,路由表中的路由可以来源于多种不同的路由协议,如直连路由、静态路由、RIP、OSPF等。不同的路由协议有不同的算法,计算出的度量值也没有可比性。所以,不同的路由协议所学习到的路由信息不能直接交流。想要让一个路由协议的路由信息被其他路由协议学习到,需要用到路由重分发技术。在图5-17所示的网络中,网络192.168.1.0/24在RIP路由域中,通过在路由域边界路由器R2上将RIP路由重分发到OSPF协议中,让在OSPF路由域中的R3学习到192.168.1.0/24这个网络路由。同样,通过将OSPF路由重分发到RIP协议,也能够使路由器R1学习到172.16.0.0/16路由。重分发而来的路由通常叫做外部路由,比如网络172.16.0.0/16对于OSPF来说是内部路由,而通过路由重分发得到的网络192.168.1.0/24对于OSPF来说是外部路由。
1)种子度量值
在实施路由重分发时,由于不同路由协议有不同的算法,所以无法将路由的原有度量值直接复制给另一个路由协议。边界路由器必须能将其从源路由协议那收到的路由度量值转换为目标路由协议中的度量值。所以,路由器通常会为重分发来的路由指定一个新的种子度量值(或称缺省度量值)。种子度量值是在重分发配置时指定的,指定了重分发路由的种子度量值后,该度量值将在新的路由域中传播。常见IGP路由协议默认种子度量值如表5-3所示。
表5-3 常见IGP路由协议的默认种子度量值

2)单向重分发和双向重分发
在路由重分发时,如果仅把一个路由协议重分发到另一个路由协议,没有反向重分发,则称为单向重分发。图5-18是单向重分发的一个例子,在边界路由器R2上,只配置将RIP协议重分发到OSPF协议中。这样,OSPF路由域中的路由器可以获得RIP路由域的所有路由信息,但是RIP路由域中的路由器仍只了解自己路由域的路由信息。

图5-18单向重分发
单向重分发显然会导致连通性问题,解决办法是在RIP路由域中的路由器上配置指向OSPF路由域的静态路由或默认路由。单向重分发适合于中心到分支的星形网络拓扑,比如,OSPF路由域是中心网络,需要获取各个分支网络的所有路由,而RIP路由域是分支网络,不需要了解外部网络的具体路由,只需要通过默认路由到达外部网络即可。
在边界路由器上,将两个路由协议进程之间沿两个方向进行重分发,则称为双向重分发。如图5-19所示,边界路由器R2将RIP路由域中的路由192.168.1.0/24重分发到OSPF路由域中,也将OSPF路由域中的路由172.16.0.0/16重分发到RIP路由域中,使得路由器R1和R3都了解到彼此的具体路由。

图5-19双向重分发
双向重分发适合于两个路由域都需要了解对方具体路由的情况,比如两个公司合并,双方使用了不同的路由协议,而且路由数量众多,使用静态路由配置会很复杂,而使用默认路由又会影响到各自的Internet访问,这时,使用双向重分发是较合适的选择。
2.路由重分发典型配置案例
按照如图5-20所示网络拓扑及相关配置信息描述,学习并掌握:重分发直连路由、重分发静态路由、重分发到RIP、重分发到OSPF、OSPF的外部路由类型、配置OSPF的ASBR外部路由汇总等配置。
(1)配置接口地址
本案例使用环回接口模拟业务以太网接口,在路由器R3上创建环回接口时,需要将接口的OSPF网络类型更改为point-to-point,使得OSPF传播环回接口的子网掩码。例如,创建Loopback 0接口的过程如下:
R3(config)# interface loopback 0
R3(config-if)# ip address 172.16.3.1 255.255.255.0
R3(config-if)# ip ospf network point-to-point
其他接口的配置过程在此省略。

图5-20路由重分发典型配置案例拓扑图
(2)配置和验证RIPv2



在路由器R2上查看通过RIP学习到的路由:

路由器R2学习到了来自于路由器R1的所有远程网络路由。另外,192.168.48.0/24、192.168.49.0/24、192.168.50.0/24和192.168.51.0/24可以汇总为192.168.48.0/22,但是由于RIPv2只能发送主网或子网汇总路由,不能发送超网汇总路由,所以通过常规汇总配置,不能使路由器R1发送汇总路由。但是通过配置汇总静态黑洞路由,并重分发静态路由的方式,可以实现。以下配置,读者可以作为参考。

(3)配置和验证OSPF
①路由器R2的OSPF配置过程

②路由器R3的OSPF配置过程

③验证OSPF的配置
在路由器R2上查看OSPF邻居关系:

在路由器R2上查看通过OSPF学习到的路由信息:

路由器R2只学习到了路由器R3的Loopback 0接口的这一个远程网络路由。
4)重分发直连路由
想要让路由器R2学习到R3的所有其他接口所连接的网络,既可以在R3上配置对应的network语句,也可以使用重分发直连路由的方式。在路由器R3上,使用以下命令,对外重分发本路由器的所有直连接口。

在路由器R2上,再次查看通过OSPF学习到的路由信息:

现在路由器R2学习到那5个接口的路由了,路由的类型是“O E2”,表示这是第2类OSPF外部路由。重分发的直连路由也会被看做是外部路由。另外,该路由的度量值是20,保持了OSPF的默认种子度量值。
路由器R3上,将重分发来的直连路由的种子度量值配置为70的命令如下:

(5)重分发静态路由
对于RIP和OSPF,使用network语句可以声明直连网络,但是不能声明本路由器配置的静态路由所指向的目的网络。以下介绍将静态路由重分发到动态路由协议的配置。
在路由器R3上,配置一条出接口为Loopback 0接口的静态路由

由于出接口是活动的,所以该静态路由能够出现在R3的路由表中。

接下来,在路由器R3上输入以下命令,将静态路由重分发到OSPF协议中。

该命令能够将路由器R3的路由表中存在的所有的静态路由重分发到OSPF协议中,并设置种子度量值为100。
在路由器R2上,再次查看通过OSPF学习到的路由信息:

路由器R2收到了重分发来的OSPF外部路由,度量值是100。
(6)重分发到RIP
接下来配置RIP与OSPF之间的路由重分发。先进行单向路由重分发,在路由器R2上将OSPF路由重分发到RIP中。由于RIP的默认种子度量值是0,会导致重分发来的路由不可达,所以将其他路由协议重分发到RIP协议时,必须指定种子度量值。
①将OSPF重分发到RIP。在边界路由器R2上,配置将OSPF重分发到RIP的过程如下:
R2(config)#router rip
R2(config-router)#redistribute ospf 1 metric 5
其中,1表示要重分发的本路由器的OSPF进程号,5表示将重分发来的OSPF路由的种子度量值设置为5,该种子度量值应大于RIP路由域的所有路由的度量值。
另外,还可以使用以下命令将所有重分发进RIP协议的路由的默认种子度量值设置为5:
R2(config)#router rip
R2(config-router)#default-metric 5
②验证重分发得来的路由。在RIP路由域的路由器R1上查看通过RIP学习到的路由:

(7)重分发到OSPF
接下来进行反向重分发,在路由器R2上将RIP路由重分发到OSPF协议中,从而完成双向路由重分发。
①配置将RIP重分发到OSPF。在边界路由器R2上,配置将RIP重分发到OSPF的过程如下:

②验证重分发得来的路由。在OSPF路由域的路由器R3上查看通过OSPF学习到的路由:

③测试连通性。每台路由器都学习到了所有远程网络路由,整个网络完成了收敛。
8)OSPF的外部路由类型
观察路由器R3的路由表,通过OSPF学习到的所有路由的度量值都是20,类型是“O E2”。这是因为配置的“redistribute rip subnets”没有指定OSPF种子度量值,因此使用了默认种子度量值20。另外,度量值没有随着路由信息在路由器之间的传播而增大,这是因为默认的OSPF外部路由的类型是第二类(O E2)。
① OSPF的外部路由类型:OSPF的外部路由分为两类:E1和E2。
E1(External Type 1):对于“O E1”外部路由,重分发来的外部路由开销为外部开销加上沿途每条链路的内部开销总和。当使用多点重分发,即有多台边界路由器将同一条外部路由通告到OSPF路由域时,应使用这种类型,以避免次优路由。
E2(External Type 2):对于“O E2”外部路由,重分发来的外部路由开销只包含外部开销,也就是一直保持种子度量值不变。当使用单点重分发时,可以使用这种类型,这也是默认的OSPF外部路由类型。
②更改OSPF的外部路由类型。由于本案例是单点重分发,所以可以使用默认的OSPF外部路由类型。想要把OSPF的外部路由类型更改为E1,可以在路由器R2上配置以下命令:
R2(config)#router ospf 1
R2(config-router)#redistribute rip subnets metric-type 1 metric 150
另外,还可以使用以下命令将所有重分发进OSPF协议的路由的默认种子度量值设置为150:

在路由器R3上显示通过OSPF学习到的路由:

这时,所有的OSPF路由的类型变成了“O E1”,度量值是200,这是将种子度量值150与路由器R2、R3之间的链路开销(cost=50)相加得到的。
由于本案例是单点重分发,所以更改OSPF的外部路由类型意义不大。对于多点重分发,就必须将OSPF的外部路由类型更改为E1了。
另外,在通过OSPF传播默认路由的时候,也可以设置外部路由的类型和种子度量值。
(9)配置OSPF的ASBR外部路由汇总
在路由器R3上,存在4条可以被汇总的网络路由:192.168.48.0/24、192.168.49.0/24、192.168.50.0/24、192.168.51.0/24。这4条路由是从ASBR路由器R2上重分发得到的。
OSPF支持在ABR上对区域之间的路由进行汇总,另外,OSPF还能够支持在ASBR上对重分发来的外部路由进行汇总,以减小路由表的规模。
在边界路由器R2上配置ASBR汇总的命令如下:

这时,查看路由器R3的OSPF路由:

【任务归纳】
OSPF在大中型企业网、校园网和城域网中被大量使用,是一种强大、健壮的路由协议。在使用OSPF部署网络时,应根据地理位置或逻辑归属进行恰当的区域划分,将核心网络放在Area 0中,各个分支网络放在其他区域中。区域内使用可聚合的地址范围,以方便进行区域间路由汇总。区域0应与其他区域直接相连,区域0应连续,尽量避免使用虚链路。
应为每台OSPF路由器规划不同的Router ID,以标志各自的身份。在千兆级、万兆级网络中,应修改OSPF的参考带宽,并修改相关接口的Bandwidth,使OSPF计算出合适的度量值,或直接指定接口的cost,从而能够选择出到达目的网络的最佳路径。
使用路由重分发时,可以设置OSPF的外部路由类型及种子度量值。当使用单点重分发时,使用默认的第2类外部路由(E2)就可以;当使用多点重分发时,需要使用第1类外部路由(E1),以避免出现次优路由。在路由域的边界,可以配置ASBR外部路由汇总。还可以使用OSPF的特殊区域,进一步减轻路由器的负担,并减小路由表的规模。
在安全防护方面,需要将连接用户网络的接口配置为被动接口,防止OSPF协议数据包泄露到用户网络中。或者使用重分发直连路由的方式传播用户网络,而不使用network进行声明。另外,在接口上启用MD5身份验证,以防止路由设备接收到伪造的恶意路由信息




