仿真环境下的OSPF路由设计与分析

2018-01-29 07:36
实验室研究与探索 2017年12期
关键词:路由表网段末梢

王 文 龙

(喀什大学 计算机科学与技术学院,新疆 喀什 844008)

0 引 言

网络中的路由器通过路由选择协议进行路由选择,其核心是路由选择算法。路由选择协议依据作用范围分为内部网关协议(IGP)和外部网关协议(EGP),而内部网关协议中,RIP和OSPF是广泛使用的协议。而RIP的最大度量值为15跳,从而限定了使用RIP的网络的大小,一般只适用于小型网络,对于中型网络都难以满足。因此,为弥补RIP的不足,改善其在网络扩展方面的严重不足,OSPF使用链路状态及路径开销(cost)作为路由选择算法的基础,没有限制跳数,所以从理论上说,OSPF适用于所有规模的网络[1]。

对于OSPF路由问题,已经有了一些研究[2-17],有一定的局限性。为对OSPF路由有较深入的研究,本文在Cisco Packet Tracer和GNS3仿真环境下,设计简单的网络拓扑,对单区域OSPF和多区域0SPF等OSPF路由进行设计、配置,并通过抓包分析路由选择情况,以期对路由器使用OSPF进行路由选择进行较深入的分析研究,并能应用到实践中。

1 OSPF路由计算过程

开放式最短路径优先协议(Open Shortest Path First,OSPF)是内部网关协议中最流行、应用最广泛的一种路由协议,它是一种分层的、基于链路状态的路由选择协议,克服了RIP协议和其他基于距离向量的路由选择协议的缺点。OSPF路由计算的一般过程:

(1) 路由器间通过发送hello报文确定邻居关系,然后通过交换LSA(链路状态通告)达到邻居路由器间的LSDB(链路状态数据库)同步,从而建立邻接关系;

(2) 区域中每个网段的路由器通过洪泛法进行hello报文的交互,选举本网段的DR(指定路由器)/BDR(备用指定路由器),本网段中每个路由器将自身的LSA发给所在网段的DR/BDR,再由DR/BDR将LSA以组播的方式发给网段中所有的非DR/BDR路由器;

(3) 当路由器初始化或网络结构发生变化时,路由器采用洪泛法在区域中交换LSA,用来交换链路状态数据并更新自己的数据库,直至达到稳定;

(4) 当网络稳定下来,即OSPF收敛后,每个路由器根据自身的链路状态数据库的信息,采用SPF(最短路径优先)算法计算并创建路由表(包括到达每个可以到达目的地的Cost(开销)及到达该目的地所要转发的下一个路由器(next-hop));

(5) 当网络链路状态动态变化时,路由器需要通过上面的过程进行通告,并维护自身的路由信息,若链路状态未发生变化,每隔30 min进行自动更新路由信息。

2 单区域OSPF路由配置

在Cisco Packet Tracer下,构建如图1所示网络拓扑及配置。为R1、R2配置OSPF路由,主要的配置步骤和结果如下:

R1(config)#route ospf 1

R1(config-router)#network 192.168.1.0 0.0.0.255 area 1

R1(config-router)#newwork 202.1.1.0 0.0.0.255 area 1

R2(config)#route ospf 1

R2(config-router)#network 192.168.2.0 0.0.0.255 area 1

R2(config-router)#network 202.1.1.0 0.0.0.255 area 1

R1#show ip route

O 192.168.2.0/24 [110/2] via 202.1.1.2, 00:01:25, FastEthernet0/0

R2#show ip route

O 192.168.1.0/24 [110/2] via 202.1.1.1, 00:01:35, FastEthernet0/0

图1 单区域OSPF网络拓扑图

此时R1的路由表中有一条到达192.168.2.0/24网络的cost为2、下一跳为202.1.1.2的OSPF路由,R2的路由表中有一条到达192.168.1.0/24网络的cost为2、下一跳为202.1.1.1的OSPF路由。此时由PC1pingPC2:

PC>ping 192.168.2.2

Reply from 192.168.2.2: bytes=32 time=0ms TTL=126

对ping进行抓包分析:PC1发出的封装了ICMP的IP包到达路由器R1后,R1转发给R2,R2转发给PC2,PC2将响应包转发给R2,R2将响应包转发给R1,R1将响应包转发给PC1,使得PC1 ping通PC2。

接下来进行抓包分析,R1和R2会定期(每隔10 s)发送hello包,该包封装在IP包中,随后封装到Ethernet II帧中进行发送。当网络稳定下来,即网络收敛下来后,查看R1发给R2的hello包的Inbound PDU Details信息,主要内容如表1所示,而R2发给R1的hello包主要内容如表2所示。

从表1看出,R1发给R2的hello包,主要向R2通告了R1的RID为202.1.1.1,所属的AREA ID为0.0.0.1(即1),R1的f0/0端口所在的网段202.1.1.0/24的DR为202.1.1.2,BDR为202.1.1.1,R1的邻居路由器的RID为202.1.1.2。表2的含义与表1类似,不再赘述。

表1R1发给R2的hello包表2R2发给R2的hello包

ROUTERID:202.1.1.1ROUTERID:202.1.1.2AREAID:0.0.0.1AREAID:0.0.0.1DESIGNATEDROUTER:202.1.1.2DESIGNATEDROUTER:202.1.1.2BACKUPDESIGNATEDROUT⁃ER:202.1.1.1BACKUPDESIGNATEDROUTER:202.1.1.1NEIGHBOR:202.1.1.2NEIGHBOR:202.1.1.1

另外,需要注意,当OSPF的hello包封装到IP包中时,目的地址并非是路由器的接口地址,而是组播地址。具体的,R1发送的封装hello包的IP包的主要内容见表3,R2发送的封装hello包的IP包的主要内容见表4。

表3R1发送的IP包表4R2发送的IP包

SRCIP:202.1.1.1SRCIP:202.1.1.2DSTIP:224.0.0.5DSTIP:224.0.0.5

从表3和表4看出,组播地址均为224.0.0.5,这是OSPF协议规定的非DR/BDR的路由器工作的组播地址,而224.0.0.6是DR/BDR工作的组播地址。

3 多区域OSPF路由配置

为减少自治系统内部交换LSA的通信量,OSPF允许在自治系统内进行区域划分,主要有骨干区域、标准区域、末梢区域(Stub)、完全末梢区域(Total Stub或者Stub no-summary)和非纯末梢区域(NSSA),每个区域都有一个32位的无符号数值作为区域ID,骨干区域的ID为0。其它非骨干区域必须与骨干区域相连接,或与骨干区域建立虚链路(Virtual Link),每个区域内部的路由器只需要知道本区域的链路状态,骨干区域中的区域边界路由器负责区域间的信息收发。末梢区域禁止外部AS的信息进入本区域,该区域路由器的路由表中有域内路由和域间路由,无域外路由,去往AS以外的域外路由通过缺省路由实现。完全末梢区域禁止外部AS和本AS内的其它区域的信息进入该区域,该区域路由器的路由表中只有域内路由,无域间路由和域外路由,去往域间和域外的路由通过缺省路由实现。非纯末梢区域允许使用路由重分布将OSPF自治系统以外的路由通告到OSPF自治系统的内部。

在Cisco Packet Tracer下,构建如图2所示网络拓扑及配置。为路由器配置OSPF路由,A0为骨干区域,A1、A2为标准区域,A3为非纯末梢区域,A4为完全末梢区域,A5为末梢区域,这6个区域构成一个OSPF自治系统,而由R6和R7构成一个RIP自治系统。A1未与A0直接连接,需在A1的区域边界路由器R2与A0的区域边界路由器R3之间建立virtual-link连接,使A1与A0进行逻辑连接。而R6作为两个自治系统之间的边界路由器,需配置路由重分布。配置的主要步骤:

R1(config)#route ospf 1

R1(config-router)#network 1.1.1.1 0.0.0.0 area 1

R1(config-router)#network 202.1.1.0 0.0.0.255 area 1

R2(config)#route ospf 1

R2(config-router)#area 2 virtual-link 3.3.3.3

R2(config-router)#network 2.2.2.2 0.0.0.0 area 2

R2(config-router)#network 202.1.1.0 0.0.0.255 area 1

R2(config-router)#network 202.1.2.0 0.0.0.255 area 2

R3(config)#route ospf 1

R3(config-router)#area 2 virtual-link 2.2.2.2

R3(config-router)#network 3.3.3.3 0.0.0.0 area 0

R3(config-router)#network 202.1.2.0 0.0.0.255 area 1

R3(config-router)#network 202.1.3.0 0.0.0.255 area 0

R3(config-router)#network 202.1.5.0 0.0.0.255 area 3

R4(config)#router ospf 1

R4(config-router)#area 4 stub no-summary

R4(config-router)#area 5 stub

R4(config-router)#network 4.4.4.4 0.0.0.0 area 0

R4(config-router)#network 202.1.3.0 0.0.0.255 area 0

R4(config-router)#network 202.1.4.0 0.0.0.255 area 4

R4(config-router)#network 202.1.6.0 0.0.0.255 area 5

R5(config)#router ospf 1

R5(config-router)#area 4 stub no-summary

R5(config-router)#network 5.5.5.5 0.0.0.0 area 4

R5(config-router)#network 202.1.4.0 0.0.0.255 area 4

R6(config)#router ospf 1

R6(config-router)#area 3 nssa

R6(config-router)#redistribute rip subnets

R6(config-router)#network 6.6.6.6 0.0.0.0 area 3

R6(config-router)#network 202.1.5.0 0.0.0.255 area 3

R6(config)#router rip

R6(config-router)#version 2

R6(config-router)#redistribute ospf 1 metric 5

R6(config-router)#network 202.1.7.0

R7(config)#router rip

R7(config-router)#version 2

R7(config-router)#network 7.0.0.0

R7(config-router)#network 202.1.7.0

R8(config)#router ospf 1

R8(config-router)#area 5 stub

图2 多区域OSPF网络拓扑图

R8(config-router)#network 8.8.8.8 0.0.0.0 area 5

R8(config-router)#network 202.1.6.0 0.0.0.255 area 5

查看R3、R1、R5、R8路由表,其主要的OSPF路由内容如下:

R3#show ip route

O IA 202.1.1.0/24 [110/2] via 202.1.2.2, 01:35:55, FastEthernet0/1

O IA 202.1.4.0/24 [110/2] via 202.1.3.2, 01:36:21, FastEthernet0/0

O IA 202.1.6.0/24 [110/2] via 202.1.3.2, 01:36:21, FastEthernet0/0

O N2 202.1.7.0/24 [110/20] via 202.1.5.2, 01:36:31, FastEthernet1/0

R1#show ip route

O IA 202.1.3.0/24 [110/3] via 202.1.1.2, 01:12:18, FastEthernet0/0

O IA 202.1.4.0/24 [110/4] via 202.1.1.2, 00:00:13, FastEthernet0/0

O IA 202.1.5.0/24 [110/3] via 202.1.1.2, 00:00:13, FastEthernet0/0

O IA 202.1.6.0/24 [110/4] via 202.1.1.2, 00:00:13, FastEthernet0/0

O E2 202.1.7.0/24 [110/20] via 202.1.1.2, 00:00:13, FastEthernet0/0

R5#show ip route

O*IA 0.0.0.0/0 [110/2] via 202.1.4.1, 01:17:46, FastEthernet0/0

R8#show ip route

O IA 202.1.1.0/24 [110/4] via 202.1.6.1, 01:20:56, FastEthernet0/0

O IA 202.1.2.0/24 [110/3] via 202.1.6.1, 01:21:06, FastEthernet0/0

O IA 202.1.3.0/24 [110/2] via 202.1.6.1, 01:21:26, FastEthernet0/0

O IA 202.1.4.0/24 [110/2] via 202.1.6.1, 01:21:26, FastEthernet0/0

O IA 202.1.5.0/24 [110/3] via 202.1.6.1, 01:21:06, FastEthernet0/0

O*IA 0.0.0.0/0 [110/2] via 202.1.6.1, 01:21:26, FastEthernet0/0

不难看出,A3是非纯末梢区域,通过R6的路由重分布,使R3获得RIP自治系统中202.1.7.0/24的路由。A1通过virtual-link与A0逻辑连接,使R1获得域间路由和域外路由。A4为纯末梢区域,则R5只有一条静态的OSPF路由。A5为末梢区域,使R8获得域间路由,而域外路由只有一条静态路由。相应的抓包分析与单区域情况类似,不再赘述。

4 选举DR和BDR

在使用OSPF的路由器间通告LSA时,可以采用洪泛法,但洪泛法开销大,为减少开销,区域中每个网段的路由器可通过hello报文的交互,选举本网段的DR/BDR(DR失效时BDR起作用),选举原则是:(1)路由器接口优先级最高和次高的为DR和BDR;(2)若优先级相同,则路由器的ROUTER-ID最大和次大的为DR和BDR(若未指定路由器的RID,则用路由器回环接口Loopback的IP地址作为RID,若未配置回环接口,则用路由器物理端口中最大的IP地址作为RID)。下面分析使用OSPF的网络选举DR/BDR的过程。

在Cisco Packet Tracer下,构建如图3所示网络拓扑及配置。以R1为例配置OSPF路由,R2、R3、R4的配置与R1类似。

R1(config)#route ospf 1

R1(config-router)#router ospf 1

R1(config-router)router-id 1.1.1.1

R1(config-router)network 202.1.1.0 0.0.0.255 area 0

图3 选举BD/BDR网络拓扑图

查看R2的邻居信息,R1、R3、R4与R1类似。

R2#show ip ospf neighbor

Neighbor ID Pri State Dead Time Address Interface

3.3.3.3 1 FULL/BDR 00:00:35 202.1.1.3 FastEthernet0/0

4.4.4.4 1 FULL/DR 00:00:31 202.1.1.4 FastEthernet0/0

1.1.1.1 1 2WAY/DROTHER 00:00:35 202.1.1.1 FastEthernet0/0

不难看出,202.1.1.0/24网段已经选举出R4为DR,选举出R3为BDR,二者是该网段中RID最大的路由器。此时进行抓包分析,路由器依次以洪泛法向其它所有路由器发送含有本路由器RID的hello包,每个路由器经过比较收到的hello包中的RID,最终选举出本网段中的DR/BDR。

上述情况是所有路由器的接口优先级均采用默认优先级(值为1),现将R1的f0/0端口优先级改为2,并重新启动所有路由器的OSPF进程,查看R2的邻居信息,结果如下。

R1(config)#interface FastEthernet0/0

R1(config-if)#ip ospf priority 2

R2#show ip ospf neighbor

Neighbor ID Pri State Dead Time Address Interface

图4 路由分布网络拓扑图

1.1.1.1 2 FULL/DR 00:00:34 202.1.1.1 FastEthernet0/0

3.3.3.3 1 2WAY/DROTHER 00:00:34 202.1.1.3 FastEthernet0/0

4.4.4.4 1 FULL/BDR 00:00:37 202.1.1.4 FastEthernet0/0

此时,优先级为2的R1选为DR,其余优先级为1的RID最大的R4选为BDR。在选举DR/BDR时,还需考虑路由器OSPF进程启动的顺序,若网段的DR/BDR尚未选举出来,进程已全部启动,则按照优先级和RID进行选举;若DR/BDR已经选举出来,则后启动OSPF进程的路由器不会改变已经选举出的DR/BDR。

5 路由分布配置

在某些情况下,OSPF路由器不希望学习从某个指定接口接收来的LSA中的某个网段的路由信息,则可以通过对该路由器进行路由分布配置,禁止学习从指定接口接收来的LSA中的某个网段的路由信息。

在GNS3下,构建如图4所示网络拓扑及配置。为路由器配置单区域OSPF路由,R1、R2、R4的配置与单区域配置类似,而R3的配置如下:

R3(config)#access-list 1 deny 202.1.1.0 0.0.0.255

R3(config)#access-list 1 permit any

R3(config)#router ospf 1

R3(config-router)#network 202.1.2.0 0.0.0.255 area 0

R3(config-router)#network 202.1.3.0 0.0.0.255 area 0

R3(config-router)#distribute-list 1 in fastEthernet0/0

通过上述配置,使得R3禁止从其f0/0接口学习202.1.1.0/24网段的路由信息,查看R3、R4的路由表,结果如下:

R3#show ip route

C 202.1.2.0/24 is directly connected, FastEthernet0/0

C 202.1.3.0/24 is directly connected, FastEthernet0/1

R4#show ip route

O 202.1.2.0/24 [110/20] via 202.1.3.1, 00:00:19, FastEthernet0/0

C 202.1.3.0/24 is directly connected, FastEthernet0/0

O 202.1.1.0/24 [110/30] via 202.1.3.1, 00:00:19, FastEthernet0/0

不难发现,R3的路由表中没有202.1.1.0/24网段的路由信息,已被禁止学习,而R4中学习到了该网段的路由信息。因此,路由分布仅仅本地有效,不影响其他路由器学习。

6 域间路由汇总配置

在使用OSPF时,骨干区域会获取所有网段的路由通告,当AS较大时,会造成骨干区域路由器路由表庞大,而若某个网段不稳定,又会造成LSA的洪泛。为解决这些问题,可以将网段地址进行汇总,即路由汇总,从而减少路由器路由表的大小,减少LSA洪泛。而域间路由汇总在ABR上实现,外部路由汇总在ASBR上实现。

在GNS3下,构建如图5所示网络拓扑及配置。在配置OSPF路由时,R1、R2构成area0,R2、R3、R4、R5构成area1,R1、R3、R4、R5的配置与多区域配置类似,而区域边界路由器R2的配置如下。

R2(config)#router ospf 1

R2(config-router)#network 212.1.1.0 0.0.0.255 area 0

R2(config-router)#network 202.1.1.0 0.0.0.255 area 1

R2(config-router)#area 1 range 202.1.0.0 255.255.248.0

图5 域间路由汇总网络拓扑图

通过上述配置,将area1中的202.1.1.0/24、202.1.2.0/24、202.1.3.0/24、202.1.4.0/24四个网段汇总为202.1.0.0/21。查看R1的路由表,结果如下:

R1#show ip route

C 212.1.1.0/24 is directly connected, FastEthernet0/0

O IA 202.1.0.0/21 [110/20] via 212.1.1.1, 00:00:21, FastEthernet0/0

不难发现,经过边界路由器R2的路由汇总,R1的路由表只有一条汇总后的网段路由信息,并没有area1中四个网段的路由信息。若没有R2的路由汇总,则R1的路由表就会有area1中4个网段的路由信息。

7 结 语

本文在Cisco Packet Tracer和GNS3仿真环境下,对OSPF路由进行了较深入的研究。通过设计简单的网络拓扑,对单区域OSPF路由、多区域OSPF路由、DR/BDR的选举、路由分布和域间路由汇总进行配置,并通过抓包分析OSPF的通告情况,从而对路由器使用OSPF进行路由选择进行较深入的分析研究,形成了明确的分析结论。这些分析和结论既可以作为学习的参考,又可以指导实物环境下路由器的OSPF路由设置,从而解决OSPF路由配置的相关问题。

[1] 李丙春,王文龙,刘 静,等.路由与交换技术[M].北京:电子工业出版社,2016.

[2] 付承彪,田安红.两种动态路由协议分析及其实验设计与仿真[J].实验技术与管理,2016(7):140-144.

[3] 马素刚.路由协议OSPF的研究与仿真[J].计算机系统应用,2016(5):228-231.

[4] 史玉锋,赵 燕,李 明.解析ospf协议中常用的7类LSA[J].电子测试,2016(1):39-40.

[5] 刘小虎,张玉臣,方青坡,等.半实物网络仿真动态路由方案设计与实现[J].系统仿真学报,2015(9):2089-2095.

[6] 李 永,甘新玲. 基于Packet Tracer的路由综合实验设计与实现[J]. 实验室研究与探索,2015(9):111-114.

[7] 李林林,孙良旭,吴建胜,等. 单机环境下路由交换技术综合实验设计[J]. 实验室研究与探索,2015(8):115-118.

[8] 曹腾飞,孟永伟,黄建强,等. 西部高校计算机网络实验[J]. 实验室研究与探索,2015(4):129-131,140.

[9] 陈 伟.基于仿真技术的OSPF动态路由的应用研究[J].长江大学学报(自然科学版),2011(9):87-89+9.

[10] 杨振启,杨云雪.OSPF协议中ABR动态选举研究[J].计算机工程,2011(13):80-82.

[11] 肖 阳,杨媛媛.OSPF的区域类型、路由类型和末梢区域的配置[J].信息安全与技术,2011(4):21-23+26.

[12] 王 东.OSPF路由协议在多区域中的应用[J].重庆科技学院学报(自然科学版),2010(2):172-174.

[13] 杜宇扬.OSPF协议动态配置技术研究[J].西安邮电学院学报,2010(1):134-138,147.

[14] 柴 晟,罗传军,罗惠琼.自治系统内部路由的仿真实验分析[J].微计算机信息,2007(18):235-236,229.

[15] 张春青,张宏科.OSPF动态路由协议中的路由计算[J].北方交通大学学报,2003(3):100-103.

[16] 严斌宇,卢 苇,黄 锐.OSPF路由选择协议的研究[J].四川大学学报(自然科学版),2002(3):460-464.

[17] 张春青,张宏科.OSPF动态路由技术的研究与实现[J].通信世界,2002(1):50-51.

猜你喜欢
路由表网段末梢
基于OSPF特殊区域和LSA的教学设计与实践
单位遭遇蠕虫类病毒攻击
研究路由表的查找过程
网上邻居跨网段访问故障
末梢血与静脉血在血常规检验中的比较分析
静脉采血和末梢采血对血小板计数的影响
Onvif双网段开发在视频监控系统中的应用
末梢血与静脉血在血常规检验中的临床价值
采用末梢血快速测定血糖值的临床价值分析
BGP创始人之一Tony Li:找到更好的途径分配互联网地址