基于GNS3的OSPF路由设计与实现
2019-01-02孙光懿
孙光懿
(天津音乐学院 图书与信息中心,天津 300171)
OSPF是由IETF于1998年开发的一种开放式链路状态路由协议[1-3],通常在单一自治系统内使用,属于内部网关协议。其设计初衷是用来克服距离矢量路由协议(如RIP协议)在功能上的不足,进而为大型网络中数据包的路由选择提供更好的解决方案。OSPF的运行既不依赖TCP协议又不依赖UDP协议,它工作在IP上层,发送消息时采用组播和单播的方式。相同OSPF区域中的路由器拥有的链路状态数据库(用于存放链路状态信息)一致,并基于此库进行SPF算法运算,最终计算出OSPF路由表。与距离矢量路由协议相比,OSPF具有收敛速度快、扩展性强、支持明文及MD5认证、支持路由汇总、支持负载均衡、可快速适应网络变化等特点,它依靠在网络中传播LSA来进行路由选择,而不是周期性的广播路由表。目前,OSPF已成为网络中使用最为广泛的一种路由协议。为了对OSPF路由协议进行深入细致的研究,文章以GNS3网络仿真软件为实验平台,对单区域OSPF、多区域OSPF、OSPF虚链路、OSPF身份验证、OSPF路由汇总、路由重分布等进行了设计分析,并给出详细的配置过程。
1 OSPF的工作过程
OSPF路由器通过完成以下几个工作过程来创建并维护路由表中的路由信息,从而实现数据包的正常转发。
(1)确立邻接关系:区域中的OSPF路由器通过发送Hello数据包(通常使用多播地址作为Hello数据包的目的地址)来确定链路上是否有其它OSPF邻居路由器存在,如存在则尝试与其建立邻接关系。
(2)交换LSA:双方邻接关系一旦确立,两台OSPF路由器之间将交换LSA。当邻接OSPF路由器收到LSA后,将其范洪给其他直连的邻居OSPF路由器,直到区域中所有OSPF路由器均拥有一致的LSA。需要明确的一点是,OSPF路由器每条直连链路的状态信息及开销均包含在LSA内。
(3)构建链路状态数据库:OSPF路由器收到LSA后,会基于此LSA构建链路状态数据库。相同区域中的所有OSPF路由器,链路状态数据库中的信息一定是相同的。
(4)构建SPF树:区域中的每个OSPF路由器,以自身链路状态数据库中的信息为依据,通过运行SPF算法构建SPF树。
(5)创建拓扑表:OSPF路由器将SPF树中的最优路径加到自身路由表中,并基于此路由表进行数据包的路径选择。
2 单区域OSPF配置
两台相邻的OSPF路由器只有在相同区域内,才可以建立邻接关系。二者之间不需要拥有相同的OSPF进程ID(范围在1-65535之间),此ID是一种只对本地有效的OSPF路由进程标识参数。需要注意:在一台路由器上可以配置多个OSPF进程,只是这样做会增加路由器内存和CPU的占用率,影响工作效率。另外,为了保证OSPF进程能够正常启动,不仅需要保证路由器至少有一个接口是处于UP状态,而且还需要为每台运行OSPF的路由器指定唯一的RID。如果没有指定RID,则以OSPF路由器上LOOPBACK接口中最大的IP地址作为RID。如果OSPF路由器不存在LOOPBACK接口,则以拥有最大IP地址的活动物理接口的IP地址作为RID。
在GNS3下,通过两台思科3725路由器R1、R2构建了单区域OSPF网络。网络拓扑如图1所示。各路由器具体配置过程如下:
图1 单区域OSPF网络拓扑
2.1 路由器R1的配置
R1(config)#int s2/0//进入串行接口s2/0
R1(config-if)#ip add 172.16.1.1 255.255.255.0
R1(config)#int loopback 1//建立loopback 1接口
R1(config-if)#ip add 192.168.20.1 255.255.255.0
R1(config)#router ospf 2
R1(config-router)#router-id 1.1.1.1//设置路由器ID
R1(config-router)#network 172.16.1.0 0.0.0.255 area 0
R1(config-router)#network 192.168.20.0 0.0.0.255 area 0
2.2 路由器R2的配置
R2(config)#int s2/0//进入串行接口s2/0
R2(config-if)#ip add 172.16.1.2 255.255.255.0//设置此接口IP地址
R2(config)#int loopback 1//建立loopback 1接口
R2(config-if)#ip add 192.168.21.1 255.255.255.0//设置此接口IP地址
R2(config)#router ospf 2
R2(config-router)#router-id 2.2.2.2//设置路由器ID
R2(config-router)#network 172.16.1.0 0.0.0.255 area 0
R2(config-router)#network 192.168.21.0 0.0.0.255 area 0
为了验证OSPF路由协议是否正常运行,以路由器R1为例,使用sh ip protocols命令查看路由器R1上的OSPF进程。如图2所示,可看到OSPF路由协议(版本号为:OSPF V2)已在路由器R1上部署成功,默认可支持4条负载均衡链路,管理距离为110;路由器R1的RID为1.1.1.1,网关地址为2.2.2.2(路由器R2的RID)。
路由器R1与R2建立OSPF邻接关系后,利用Wireshark网络分析软件[4-5],捕获了R1发往R2的数据包。如图3所示。路由器R1的RID为1.1.1.1,优先级为1,工作在OSPF骨干区域;邻居路由器为R2(RID为2.2.2.2);路由器的失效时间为40s,在此时间内路由器R1如未收到路由器R2的OSPF Hello数据包,则认为已建立的OSPF邻接关系失效。另外,由于没有启用接口验证功能,OSPF Hello数据包会每10s发送一次。特别注意:OSPF Hello数据包在传输时被封装在IP数据包中,源地址为172.16.1.1,目的地址为单播地址224.0.0.5,而不是路由器R2与R1相连的接口地址。
图2 路由器R1上的OSPF进程
图3 路由器R1发往R2的数据包
3 多区域OSPF的配置
大型网络中往往拥有众多数量的路由器,网络结构也相对复杂且时常发生改变。如不进行OSPF区域划分,必将造成一系列的问题。其一,有可能导致SPF进行频繁的运算,增加路由器CPU的占用率。其二,由于OSPF协议不支持自动路由汇总,有可能造成路由表过于庞大,消耗路由器大量内存资源。其三,有可能造成LSDB过于庞大,这样势必增加OSPF路由器构建SPF树的时间。因此,为了减少OSPF的计算频率,加快收敛速度,减小路由表规模,往往将网络中运行OSPF的路由器基于接口划分为多个区域(每个区域中的路由器以50台为上限)。常见的OSPF区域有骨干区域和常规区域两种:其中,骨干区域(AREA 0)为网络核心且不可分割,该区域中通常没有终端用户的存在,其他区域需要与其相连才可以交换路由信息;常规区域必须与骨干区域相连接,区域间传递数据流也必须通过骨干区域来进行。按照地理位置与具体职能的不同,常规区域又可进一步划分为以下四类区域:末节区域、完全末节区域、非纯末节区域(NSSA)、完全非纯末节区域。末节区域不允许自治系统外部路由进入,在遇到路由器需要提供到自治系统外部网络的路由时,则使用默认路由技术来实现。完全末节区域属于思科私有区域,它不允许自治系统外部路由和自治系统内其他区域路由进入。NSSA区域从某种意义上讲是对末节区域的一种扩展,它不允许接受5类LSA,但是它可以包含ASBR并允许区域间路由进入。当自治系统外部路由重分布到该区域时,首先由NSSA ASBR生成7类LSA(在路由表中通常用O N2来表示),而后再由NSSA ABR将其转换为5类LSA并在自治系统内传播。两类LSA具有相同的格式,只是7类LSA报头中存在一个用于避免在AREA 0和NSSA区域之间循环传播此类报文的传播(P)位。
在GNS3下,通过八台思科3725路由器构建了两个自治系统(OSPF自治系统与RIP自治系统),网络拓扑如图4所示。OSPF自治系统网络拓扑结构较为复杂,包括AREA 0至AREA 5等六个区域。其中,AREA 0为骨干区域,由路由器R1、R2构成;AREA 1与AREA 2为标准常规区域,AREA 1由路由器R3、R1构成,AREA 2由路由器R6、R3构成;AREA 3为末节区域,由路由器R4、R1构成;AREA 4为完全末节区域,由路由器R7、R2构成;AREA 5为NSSA区域,由路由器R5、R2构成。RIP自治系统由路由器R5、R8构成。需要注意:由于AREA 2未直连到骨干区域,因此需要穿越AREA 1,在区域边界路由器R3、R1之间建立虚链路,从而使AREA 2与骨干区域在逻辑上相连。为了方便读者更好地理解并掌握多区域OSPF的配置方法,给出了相关路由器的详细配置过程,具体如图4所示。
图4 多区域OSPF网络拓扑
3.1 路由器R1的配置
R1(config)#int s2/0//进入串行接口s2/0
R1(config-if)#ip add 172.17.1.1 255.255.255.0
R1(config)#int s2/1//进入串行接口s2/1
R1(config-if)#ip add 172.17.2.1 255.255.255.0
R1(config)#int s2/2//进入串行接口s2/2
R1(config-if)#ip add 172.17.3.1 255.255.255.0
R1(config)#router ospf 6
R1(config-router)#router-id 1.1.1.1//设置路由器ID
R1(config-router)#area 1 virtual-link 3.3.3.3//启用虚链路
R1(config-router)#network 172.17.1.0 0.0.0.255 area 0
R1(config-router)#network 172.17.2.0 0.0.0.255 area 1
R1(config-router)#network 172.17.3.0 0.0.0.255 area 3
R1(config-router)#area 3 stub//将area 3设置成末节区域
3.2 路由器R2的配置
R2(config)#int s2/0//进入串行接口s2/0
R2(config-if)#ip add 172.17.1.2 255.255.255.0
R2(config)#int s2/1//进入串行接口s2/1
R2(config-if)#ip add 172.17.6.1 255.255.255.0
R2(config)#int s2/2//进入串行接口s2/2
R2(config-if)#ip add 172.17.5.1 255.255.255.0
R2(config)#router ospf 6
R2(config-router)#router-id 2.2.2.2//设置路由器ID
R2(config-router)#network 172.17.1.0 0.0.0.255 area 0
R2(config-router)#network 172.17.5.0 0.0.0.255 area 4
R2(config-router)#network 172.17.6.0 0.0.0.255 area 5
R2(config-router)#area 5 nssa//将area 5设置成NSSA区域
R2(config-router)#area 4 stub no-summary//将area 4设置成完全末节区域
3.3 路由器R3的配置
R3(config)#int s2/0//进入串行接口s2/0
R3(config-if)#ip add 172.17.2.2 255.255.255.0
R3(config)#int s2/1//进入串行接口s2/1
R3(config-if)#ip add 172.17.4.2 255.255.255.0
R3(config)#router ospf 6
R3(config-router)#router-id 3.3.3.3//设置路由器ID
R3(config-router)#area 1 virtual-link 1.1.1.1//启用虚链路
R3(config-router)#network 172.17.2.0 0.0.0.255 area 1
R3(config-router)#network 172.17.4.0 0.0.0.255 area 2
3.4 路由器R4的配置
R4(config)#int s2/0//进入串行接口s2/0
R4(config-if)#ip add 172.17.3.2 255.255.255.0
R4(config)#router ospf 6
R4(config-router)#router-id 4.4.4.4//设置路由器ID
R4(config-router)#network 172.17.3.0 0.0.0.255 area 3
R4(config-router)#area 3 stub//将area 3设置成末节区域
3.5 路由器R5的配置
R5(config)#int s2/0//进入串行接口s2/0
R5(config-if)#ip add 172.17.6.2 255.255.255.0
R5(config)#int s2/1//进入串行接口s2/1
R5(config-if)#ip add 192.168.10.1 255.255.255.0
R5(config)#router ospf 6
R5(config-router)#router-id 5.5.5.5//设置路由器ID
R5(config-router)#network 172.17.6.0 0.0.0.255 area 5
R5(config-router)#area 5 nssa//将area 5设置成NSSA区域
R5(config-router)#redist rip subnets//将RIP路由重分布到OSPF域中,初始度量值为默认值20
R5(config)#router rip
R5(config-router)#vers 2
R5(config-router)#network 192.18.10.0
R5(config-router)#redist ospf 6 metic 12//将OSPF路由重分布到RIP域中,指定初始度量值设置为12
3.6 路由器R6的配置
R6(config)#int s2/0//进入串行接口s2/0
R6(config-if)#ip add 172.17.4.1 255.255.255.0
R6(config)#router ospf 6
R6(config-router)#router-id 6.6.6.6//设置路由器ID
R6(config-router)#network 172.17.4.0 0.0.0.255 area 2
3.7 路由器R7的配置
R7(config)#int s2/0//进入串行接口s2/0
R7(config-if)#ip add 172.17.5.2 255.255.255.0
R7(config)#router ospf 6
R7(config-router)#router-id 7.7.7.7//设置路由器ID
R7(config-router)#network 172.17.5.0 0.0.0.255 area 4
R7(config-router)#area 4 stub
3.8 路由器R8的配置
R8(config)#int s2/0//进入串行接口s2/0
R8(config-if)#ip add 192.168.10.2 255.255.255.0
R8(config)#router rip
R8(config-router)#vers 2
R8(config-router)#network 192.168.10.0
为了验证OSPF虚链路是否正常运行,以路由器R3为例,使用sh ip ospf virtual-links命令查看路由器R3上OSPF虚链路的运行状态。如图5所示,路由器R3到R1的OSPF虚链路已成功建立,虚链路穿过的中转区域为AREA 1,二者之间OSPF邻居状态为点到点的类型,且已处于完全邻接状态。
图5 R3上OSPF虚链路的运行状态
上述配置完成后,将能够实现全网互联互通。以路由器R2、R4、R5、R6、R7、R8为例,使用sh ip route命令分别查看以上各路由器的路由表,结果如下:(1)路由器R2的路由表R2#sh ip route
O N2 192.168.10.0/24[110/20]via 172.17.6.2,01:19:41,Serial2/1
172.1 7.0.0/24 is subnetted,6 subnets
C 172.17.5.0 is directly connected,Serial2/2
O IA 172.17.4.0[110/192]via 172.17.1.1,01:19:41,Serial2/0 C 172.17.6.0 is directly connected,Serial2/1 C 172.17.1.0 is directly connected,Serial2/0
O IA 172.17.3.0[110/128]via 172.17.1.1,01:19:41,Serial2/0 O IA 172.17.2.0[110/128]via 172.17.1.1,01:19:41,Serial2/0(2)路由器R4的路由表R4#sh ip route
O IA 172.17.5.0[110/192]via 172.17.3.1,01:18:46,Serial2/0 O IA 172.17.4.0[110/192]via 172.17.3.1,01:18:16,Serial2/0 O IA 172.17.6.0[110/192]via 172.17.3.1,01:18:46,Serial2/0 O IA 172.17.1.0[110/128]via 172.17.3.1,01:18:46,Serial2/0 C 172.17.3.0 is directly connected,Serial2/0
O IA 172.17.2.0[110/128]via 172.17.3.1,01:18:46,Serial2/0
O*IA 0.0.0.0/0[110/65]via 172.17.3.1,01:18:46,Serial2/0
(3)路由器R5的路由表
R5#sh ip route
C 192.168.10.0/24 is directly connected,Serial2/1
172.1 7.0.0/24 is subnetted,6 subnets O IA 172.17.5.0[110/128]via 172.17.6.1,00:07:44,Serial2/0 O IA 172.17.4.0[110/256]via 172.17.6.1,00:07:19,Serial2/0 C 172.17.6.0 is directly connected,Serial2/0 O IA 172.17.1.0[110/128]via 172.17.6.1,00:07:44,Serial2/0 O IA 172.17.3.0[110/192]via 172.17.6.1,00:07:44,Serial2/0 O IA 172.17.2.0[110/192]via 172.17.6.1,00:07:44,Serial2/0
(4)路由器R6的路由表
R6#sh ip route
O E2 192.168.10.0/24[110/20]via 172.17.4.2,01:04:49,Serial2/0
172.1 7.0.0/24 is subnetted,6 subnets
O IA 172.17.5.0[110/256]via 172.17.4.2,01:04:53,Serial2/0
C 172.17.4.0 is directly connected,Serial2/0
O IA 172.17.6.0[110/256]via 172.17.4.2,01:04:53,Serial2/0
O IA 172.17.1.0[110/192]via 172.17.4.2,01:04:53,Serial2/0
O IA 172.17.3.0[110/192]via 172.17.4.2,01:04:53,Serial2/0
O IA 172.17.2.0[110/128]via 172.17.4.2,01:04:59,Serial2/0
(5)路由器R7的路由表
R7#sh ip route
C 172.17.5.0 is directly connected,Serial2/0
O*IA 0.0.0.0/0[110/65]via 172.17.5.1,01:24:06,Serial2/0
(6)路由器R8的路由表
R8#sh ip route
C 192.168.10.0/24 is directly connected,Serial2/0
R 172.17.0.0/16[120/12]via 192.168.10.1,00:00:19,Serial2/0
以上各路由器的路由表中均存在可达到全网各网段的路由,路由器之间可以实现互联互通。路由器R4所属区域AREA 3为末节区域,R4路由表中除直连路由外,只存在标识符为“O IA”的域间路由和一条默认路由(由AREA 3中的边界路由器R1产生);路由器R7所属区域AREA 4为完全末节区域,R7路由表中除直连路由外,只存在一条默认路由;AREA 5为NSSA区域,通过在路由器R5上应用路由重分布技术,将RIP域中的路由重分布到OSPF域中,使得路由器R2路由表中存在一条到OSPF自治系统外部网段192.168.10.0/24,标识符为“O N2”的路由。另外,路由器R6路由表中也存在一条到OSPF自治系统外部网段192.168.10.0/24的路由,但是标识符为“O E2”,这充分说明NSSA区域中的ABR路由器R2已成功地将7类LSA转换为5类LSA并在自治系统内传播。
4 OSPF身份验证
为提高网络的可靠性与安全性,避免伪造的路由更新被路由器接收,OSPF提供了以下三种身份验证方式:NULL身份验证(不对网络中的路由交换信息进行身份验证)、明文身份验证、MD5身份验证。在实际应用中多使用MD5身份验证,这是因为它具有比明文身份验证更高的安全性。MD5身份验证传输的是进行加密过后的口令,而明文身份验证传输的只是纯文本口令。邻接路由器之间启用身份验证后,路由更新分组接收路由器就会对信源进行身份验证。默认情况下,OSPF的身份验证既可在区域内进行,又可在链路上进行。
在GNS3下,通过两台思科3725路由器R1、R2构建OSPF网络并在骨干区域内分别启用明文身份验证与MD5身份验证,网络拓扑如图6所示。为了方便读者更好地理解并掌握OSPF身份验证的配置方法,给出了相关路由器的详细配置过程,具体如下所示。
图6 OSPF区域验证网络拓扑
4.1 配置OSPF区域明文身份验证
同一网络中的邻接路由器启用身份验证后,必须使用相同的密码,只有这样才能保证OSPF信息在网络中的正常交换。
(1)路由器R1的配置
R1(config)#router ospf 5
R1(config-router)#area 0 auth
R1(config)#int s0/1
R1(config-if)#ip ospf authentication-key sgy
(2)路由器R2的配置
R2(config)#router ospf 5
R2(config-router)#area 0 auth
R2(config)#int s0/1
R2(config-if)#ip ospf authentication-key sgy
4.2 配置OSPF区域MD5身份验证
(1)路由器R1的配置
R1(config)#router ospf 5
R1(config-router)#area 0 authentication message-digest
R1(config)#int s0/1
R1(config-if)#ip ospf message-digest-key sgy
(2)路由器R2的配置
R2(config)#router ospf 5
R2(config-router)#area 0 authentication message-digest
R2(config)#int s0/1
R2(config-if)#ip ospf message-digest-key sgy上述配置完成后,将实现OSPF骨干区域身份验证。以路由器R1为例,通过show ip ospf命令查看骨干区域身份验证是否设置成功,结果如下:
R1#sh ip ospf
Area BACKBONE(0)
Number of interfaces in this area is 2(1 loopback)
Area has simple password authentication
输出结果的最后一行证实了骨干区域已成功采用了明文身份验证。
5 OSPF路由汇总
通常情况下,每个OSPF区域中的1类LSA与2类LSA都会被转为3类LSA并传播到OSPF其他区域。这不仅会导致网络流量的增加,而且也会加大路由器的开销。通过路由汇总,可以将多条路由汇总为一条路由,且只有汇总后的路由会被传播到骨干区域。常见的OSPF路由汇总有以下两种方式:域间路由汇总和外部路由汇总。域间路由汇总在区域边界路由器上进行,这种路由汇总只负责对区域内的路由进行汇总。而对重分布到OSPF域中外部路由的汇总则由外部路由汇总来负责,这种路由汇总只在自治系统边界路由器上进行。综上所述,应用OSPF路由汇总具有以下几点好处:第一,有助于减少路由条目,缩小路由表规模;第二,有助于减少3类LSA和5类LSA在自治系统中的范洪,提高网络的稳定性。即使网络拓扑发生变化,相关信息也不会传播到骨干区域;第三,有助于降低OSPF进程所占用的网络带宽;第四,有助于减小OSPF LSDB的大小;第五,有助于降低OSPF路由器CPU与内存占用率;第六,有助于提高OSPF网络的可扩展性。特别注意:汇总后的3类LSA与5类LSA不会再被汇总。另外,如果自治系统中存在多个ASBR或一个区域中存在多个ABR,一旦路由汇总不正确则可能造成次优路由选择。
在GNS3下,通过四台思科3725路由器R1、R2、R3、R4构建如图7所示的网络拓扑。其中,路由器R1为OSPF自治系统边界路由器,R2为区域边界路由器,R4为OSPF自治系统外部路由器。由于路由器R3、R4均连接了多个连续的网段,因此需要分别在路由器R2上做域间路由汇总,在路由器R1上做外部路由汇总。下面给出相关路由器的详细配置过程,具体如下所示。
图7 OSPF路由汇总网络拓扑
5.1 域间路由汇总
路由器R2的配置
R2(config)#router ospf 4
R2(config-router)#network 172.18.0.0 0.0.0.255 area 1
R2(config-router)#network 172.18.1.0 0.0.0.255 area 0
R2(config-router)#area 1 range 192.168.8.0 255.255.248.0//将区域 1 中的 192.168.10.0、192.168.11.0、192.168.12.0、192.168.13.0、192.168.14.0、192.168.15.0六个网段汇总为192.168.8.0/21。
为了验证OSPF域间路由汇总是否配置成功,使用sh ip route命令查看路由器R2的路由表。如图8所示。
图8 路由器R2的路由信息
可看到:R2的路由表中存在一条下一跳指向NULL0口的路由(由于NULL0口永远处于UP状态,因此该条路由永久有效),这充分说明区域边界路由器R2已成功地对OSPF区域1中的路由进行了汇总,汇总后的路由将会以3类LSA的方式传播给骨干区域。
5.2 外部路由汇总
路由器R1的配置
R2(config)#router ospf 4
R2(config-router)#network 172.18.1.0 0.0.0.255 area 0
R2(config-router)#summary-address 192.168.0.0 255.255.252.0//将外 部 自治系 统 中的 192.168.0.0、192.168.1.0、192.168.2.0三个网段汇总为192.168.0.0/22。
为了验证OSPF外部路由汇总是否配置成功,使用sh ip route命令查看路由器R1的路由表。如图9所示。
图9 路由器R1的路由信息
OSPF自治系统边界路由器R1对路由器R4 LOOPBACK接口所在的EIGRP网络进行路由汇总后,在R1的路由表中产生了一条路由代码为“O”,下一跳指向NULL0口的路由。与此同时,R1也收到了一条经R2汇总的OSPF域间路由,路由代码为“O IA”,目的地址为192.168.8.0/21。
6 路由重分布
大型网络中往往运行着多种路由协议,为了实现不同路由协议之间可以相互交换路由信息,有必要在自治系统边界路由器上应用路由重分布技术。在执行路由重分布时,网络技术人员必须为重分布的路由设置初始度量值[15-16](不同路由协议,初始度量值设置的依据也不尽相同),以便接收协议能够正常理解。例如:自治系统边界路由器需要将OSPF路由重分布到RIP域中,由于OSPF路由使用开销作为度量,而RIP路由使用跳数作为度量,因此必须将开销转换为跳数度量,RIP域中的路由器才能识别OSPF路由。需要明确:第一,路由重分布的方向总是对外的,并且执行路由重分布的路由器并不会改变自己的路由表,只有接收路由重分布的路由器才会将路由加到自己的路由表中;第二,自治系统边界路由器在执行路由重分布时,所传播的路由必须在自身路由表中存在;第三,网络技术人员在配置路由重分布时,一定要提前周密规划,否则将造成路由环路。
以如图7所示的网络拓扑为例。其中,OSPF自治系统由R1、R2、R3三台路由器组成,R4为OSPF自治系统外部路由器,边界路由器R1与R4之间运行EIGRP协议。为了能够实现全网的互联互通,在边界路由器R1上实施双向路由重分布技术,即把OSPF路由重分布到EIGRP域中,又把EIGRP路由重分布到OSPF域中。下面给出相关路由器的详细配置过程,具体如下所示。
路由器R1的配置
R1(config)#router ospf 4
R1(config-router)#redistribute eigrp3 subnets//将EIGRP协议重分布到OSPF域,默认初始度量值为20。
R1(config)#router eigrp 3
R1(config-router)#redistribute ospf 4 metric 10 99 99 254 254//将OSPF路由重分布到EIGRP域中。为了保证重分布到EIGRP域中路由能够正常传播,EIGRP协议必须指定初始度量值。
为了验证在边界路由器R1上实施的双向路由重分布技术是否配置成功,使用sh ip route命令查看路由器R3及R4的路由表。如图10、11所示。
图10 路由器R3的路由信息
图11 路由器R4的路由信息
不仅OSPF自治系统中的路由器R3学习到了EIGRP域中的路由(R3路由表中有两条路由代码为“O E2”,管理距离为110,开销值为20的路由),而且自治系统外部路由器R4也学习到了OSPF域中的路由(R4路由表中有四条路由代码为“D EX”,管理距离为170的路由)。这充分说明在边界路由器R1上已成功地实施了双向路由重分布技术。
7 结语
OSPF是一种由多种协议握手机制所构成的复杂协议,依靠其自身优点,目前已成为在自治系统内部应用最为广泛的路由协议。但是OSPF也存在着配置过程过于复杂(非专业人士难以掌握),负载均衡能力较差(接口路由只有在优先级相同的情况下,才可以实现负载均衡)等缺点。如何优化OSPF的性能,以弥补上述缺点是需要我们在今后的工作中进一步考虑的。