IPv6多区域网络下OSPF动态路由优化方法研究与仿真

2021-11-01 08:53李春平叶裴雷许碧雅朱婷婷
现代计算机 2021年26期
关键词:数据包链路路由

李春平,叶裴雷,许碧雅,朱婷婷

(广东白云学院大数据与计算机学院,广州 510000)

0 引言

随着互联网的迅速发展,互联网终端用户呈现爆发式增长,导致传统的标识互联网主机的IPv4地址资源紧张[1]。这是由于IPv4网络协议采用的是32位IP地址结构。一方面,IPv4协议结构中没有设计专门进行安全性验证的字段,只有简单的头部校验和验证,因此IP数据包在传输过程中存在安全隐患,容易被截获和篡改,导致数据完整性失效。解决这些问题的最终办法是使用新的128位地址结构的IPv6协议替代传统的IPv4协议[2]。

另一方面,数据包在网络传输过程中,需要寻找最佳途径将数据包转发到目的地,担任转发任务的通常是路由器或三层交换机之类的三层设备。为了找到最佳路由,在路由器上需要执行路由算法,例如RIP、OSPF、BGP等不同的路由协议[3]。RIP是基于距离矢量的路由协议,由于跳数限制,通常应用在中小规模的网络中,BGP是一种边界网关协议[4],通常运行在自治系统边界路由器上。而OSPF是另一种内部网关协议,它基于链路状态,采用最短路径优先算法,实现快速收敛,能在大型网络中部署。目前有两个常用的版本OSPFv2(OSPF版本2)和OSPFv3(OSPF版本3)。OSPFv2是用来支持IPv4网络,OSPFv3用来支持IPv6网络[5]。因为IPv6将在未来代替IPv4协议,因此本文讨论基于IPv6的OSPF路由协议。

1 OSPF路由协议工作机制

1.1 OSPF组成

OSPF有3个主要组件:数据结构、路由协议消息和算法。

(1)数据结构。OSPF路由器数据结构包括邻接数据库、链路状态数据库(LSDB)、转发数据库,对应着邻居表、拓扑表和路由表等3张表。

(2)路由协议消息。OSPF消息通常封装在IP数据包中,OSPF数据包类型主要由Hello、数据库描述(DBD)、链路状态请求(LSR)、链路状态更新(LSU)、链路状态确认(LSACK)组成[6]。

(3)算法。OSPF采用SPF(Shortest Path First)算法即最短路径优先算法计算路由,以达到路由快速收敛的目的。

1.2 OSPF工作过程

当路由器运行OSPF路由进程时,它会依次进行以下操作:发现邻居并与之建立建立邻接关系;交换路由信息;计算最佳路由;实现收敛。

OSPF在尝试实现收敛时会进入几种状态:Down状态、Init状态、Two-Way状态、ExStart状态、Exchange状态、Loading状态和Full状态。

(1)建立邻接关系。当运行了OSPF的相邻路由器收到一个Hello数据包,路由器会对照自己的邻居表,检查这个Hello数据包中的路由器ID,如果邻居表中没有存储这个ID信息,接收路由器将把这个源路由器ID作为邻居添加到邻居表中,以此建立邻接关系。

(2)交换路由信息。在多接入网络中,OSPF会选择出一个DR作为所收发LSA的收集与分发点。如果DR发生故障,则会选择BDR。在Two-Way状态之后,路由器转变为数据库同步状态。

(3)计算最佳路由。OSPF根据链路状态数据库里面的内容,利用SPF算法,计算到每一个目的网络度量值,从中选取最小值作为首选路由,添加到路由表中。

(4)实现收敛。当整个OSPF区域中的所有路由器都对网络拓扑有了统一的认识,既没有新的路由器增加,也没有路由器从中删除,路由器中所有路由条目都彼此交换完成的过程,这个时候邻居表、链路状态数据库和路由表达到稳定,这个过程叫收敛。OSPF能够实现快速收敛,在小型网络中,收敛时间一般在5秒内。

OSPF可以使用单区域OSPF或多区域OSPF两种方式之一进行实施。

1.3 OSPF存在的问题

如前所述,OSPF路由协议从发现邻居到交换链路状态信息直至建立路由表,最后达到收敛,是一个完整的过程。OSPF在执行SPF算法和存储邻居表、拓扑表、路由表这3张表是以占用路由器CPU和内存资源为代价,这种机制是无法规避的,当网络规模变得庞大时,路由表也会变大,同时路由器计算量也会增加,路由器资源消耗会越来越大。这将会导致网络可用性降低,稳定性变差。因此,为了提高网络的可用性,增强网络稳定性,在中大型网络中部署OSPF路由协议时要将路由优化的技术和方法考虑进来[7]。

2 路由优化技术方法

2.1 实施多区域OSPF

单区域OSPF如果没有汇总路由,每台路由器必须保留关于路由域中的每个网络的详细信息,因此路由表会变得非常大。采用多区域OSPF的好处是:路由表减小、链路状态更新开销降低、SPF计算次数减少,从而带来路由综合性能的提升[8]。

2.2 更改OSPF默认路由器ID分配

路由器ID采用32位结构,格式与IPv4地址相同,它所显示的形式是x.x.x.x。启用了OSPF路由进程的路由器使用路由器ID来唯一标识路由器和参与DR的选择。路由器ID基于以下3个标准之一确定:①使用OSPF router-id rid配置命令明确定义;②如果没有明确定义router-id,路由器将选择所有已配置环回接口的最高IPv4地址;③如果未配置环回接口,则路由器会选择其所有物理接口的最高活动IPv4地址。

为了正确选举每个区域中的DR,防止在同等优先级的情况下抢占DR权利,导致路由信息在网络中过多传播,可自定义路由器ID。

同样的,在IPv6接口上启用OSPF之前,OSPFv3需要分配一个32位路由器ID。使用router-id rid命令可以在OSPFv3中定义路由器ID。

2.3 防止不必要的OSPF路由通告

在LAN环境中,末节网络通常不需要接收路由器发来的路由更新通知,以免造成不必要的带宽资源浪费和安全隐患。为了防止OSPF路由更新通过指定路由器端口发送,向不必要的网络扩散,可以配置OSPF被动接口来完成指定路由更新通知,以减少LAN的流量。

使用passive-interface路由器配置模式命令防止通过路由器接口传输路由消息,但是仍允许通过该接口接收路由信息,并通告给其他路由器。在被动接口上无法建立邻居邻接关系。因此,路由器接口一旦配置为被动接口,则该接口通常连接到末节网络[9]。

2.4 更改OSPF度量

包括更改路由器参考带宽、更改接口带宽、更改路由开销,以适应具体的网络,使路由器与网络匹配,从而改善网络综合性能[10]。

2.5 执行路由重分布

路由重分布的作用是在路由器上转换路由协议类型和格式,以实现不同的路由协议之间的路由信息交换。例如,在一个运行RIP和OSPF两种不同路由协议的网络中,可以将RIP重分布到OSPF协议中。在同时配置有直连路由、默认路由、动态路由的网络中,可以通过重分布,将直连路由和默认路由传播到整个网络中,提高配置效率。

3 仿真实验

3.1 网络拓扑

如图1所示,建立OSPFv3多区域网络,由area0、area1、area2共3个区域组成内部网络,其中area0为骨干区域。区域area1、area2分别与骨干区域area0相连。多区域网络中共有R1、R2、R3、R4共4台路由器,用ISP路由器模拟外部网络路由器。内部网络路由器上运行OSPFv3路由协议,内网与外网之间部署静态默认路由。

图1 IPv6多区域网络拓扑图

3.2 IPv6地址规划

设备地址分配如表1所示。

表1 IPv6地址规划

R2 R3 R4 ISP PC0 PC1 PC2 PC3 SERVER0 G0/0 G0/1 S0/0/0 G0/0 G0/1 G0/0 G0/1 G0/2 S0/0/0 G0/0 NIC NIC NIC NIC NIC 2021:1212::2/64 EUI-64 2021:2323::1/64 EUI-64 2019:2525::1/64 2021:3434::1/64 2021:2323::2/64 2021:3434::2/64 2020:2222::1/64 2020:3333::1/64 2019:2525::2/64 2018:1111::1/64 SLAAC SLAAC SLAAC SLAAC SLAAC N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A SLAAC SLAAC SLAAC SLAAC SLAAC

3.3 接口基础配置

3.3.1 R1配置

Router(config)#hostname R1

R1(config)#interface g0/0

R1(config-if)#ipv6 address 2021:1212::1/64

R1(config-if)#no shutdown

R1(config-if)#interface t g0/1

R1(config-if)#ipv6 address 2017:1111::1/64

R1(config-if)#no shutdown

R1(config-if)#interface g0/2

R1(config-if)#ipv6 address 2017:1122::1/64

R1(config-if)#no shutdown

3.3.2 R2配置

Router(config)#hostname R2

R2(config)#interface g0/0

R2(config-if)#ipv6 address 2021:1212::2/64

R2(config-if)#no shutdown

R2(config-if)#interface g0/1

R2(config-if)#ipv6 address 2021:2323::1/64

R2(config-if)#no shutdown

R2(config-if)#interface s0/0/0

R2(config-if)#ipv6 address 2019:2525::1/64

R2(config-if)#no shutdown

3.3.3 R3配置

Router(config)#hostname R3

R3(config)#interface g0/0

R3(config-if)#ipv6 address 2021:3434::1/64

R3(config-if)#no shutdown

R3(config-if)#interface g0/1

R3(config-if)#ipv6 address 2021:2323::2/64

R3(config-if)#no shutdown

3.3.4 R4配置

Router(config)#hostname R4

R4(config)#interface g0/0

R4(config-if)#ipv6 address 2021:3434::2/64

R4(config-if)#no shutdown

R4(config-if)#interface g0/1

R4(config-if)#ipv6 address 2020:2222::1/64

R4(config-if)#no shutdown

R4(config-if)#interface g0/2

R4(config-if)#ipv6 address 2020:3333::1/64

R4(config-if)#no shutdown

3.3.5 ISP配置

Router(config)#hostname ISP

ISP(config)#interface g0/0

ISP(config-if)#ipv6 address 2018:1111::1/64

ISP(config-if)#no shutdown

ISP(config-if)#interface s0/0/0

ISP(config-if)#ipv6 address 2019:2525::2/64

ISP(config-if)#no shutdown

3.4 IPv6路由优化配置

3.4.1 规划OSPF多区域

本实例中,由area0、area1、area2共3个区域组成内部网络,其中area0为骨干区域。每个常规区域均与骨干区域相连。通过在路由器上执行ipv6 ospf process-id area area-id命令配置路由器所在区域。

3.4.2 重新定义路由器ID

以R1路由器配置为例,多区域网络中其它路由器可参照R1配置。

R1(config)#ipv6 unicast-routing

R1(config)#ipv6 router ospf 1

R1(config-rtr)#router-id 1.1.1.1

3.4.3 配置被动接口

在路由器连接末节网路的接口上执行passive-interface interface-id,配置被动接口。

R1路由器上的末节网络配置被动接口:

R1(config-rtr)#passive-interface g0/1

R1(config-rtr)#passive-interface g0/2

R4路由器上的末节网络配置被动接口:

R4(config-rtr)#passive-interface g0/1

R4(config-rtr)#passive-interface g0/2

3.4.4 更改OSPF度量

以R1路由器配置为例,多区域网络中其它路由器可参照R1配置。

(1)修改参考带宽值。

R1(config-rtr)#auto-cost reference-bandwidth 1000

R1(config-rtr)#exit

(2)修改开销值。

R1(config)#int g0/0

R1(config-if)#ipv6 ospf 1 area 1

R1(config-if)#ipv6 ospf cost 500

(3)修改hello-interval与dead-interval值。

R1(config-if)#ipv6 ospf hello-interval 4

R1(config-if)#ipv6 ospf dead-interval 24

3.4.5 执行路由重分布

(1)配置访问外网的静态默认路由。与外网的通信是通过R2路由器连接的,因此在R2上配置静态路由。

R2(config)#ipv6 unicast-routing

R2(config)#ipv6 route::/0 Serial0/0/0//配置访问外网的静态默认路由

(2)传播静态默认路由。为了将R2上部署的静态路由传播到内网其它路由器上,减少在其它路由器上的重复配置,在R2上执行重分布路由命令。

R2(config)#ipv6 router ospf 2

R2(config-rtr)#router-id 2.2.2.2

R2(config-rtr)#auto-cost reference-bandwidth 1000

R2(config-rtr)#default-information originate//传播默认路由

(3)重分布直连路由。可在R4上执行重分布直连路由,将area2外的直连路由传播到其它区域路由器的路由表上。

R4(config)#ipv6 unicast-routing

R4(config)#ipv6 router ospf 4

R4(config-rtr)#router-id 4.4.4.4

R4(config-rtr)#redistribute connected//重 分 布 直 连路由

3.5 仿真结果分析

3.5.1 在R2上查看邻居建立情况

可以看到R2的邻居ID分别为1.1.1.1与3.3.3.3,这两个ID分别是R1、R3路由器的,说明R2与R1、R3相邻。

图2 R2邻居表信息

3.5.2 查看链路状态数据库

在R2上执行show ipv6 ospf database时,会显示出链路状态数据库即拓扑情况。该信息与实际网络拓扑相关,信息可能会比较长。本实验截取部分显示。

图3 R2拓扑表信息

3.5.3 查看路由表

通过执行show ipv6 route命令,可以查看路由表情况,IPv6路由表已经建立起来。

图4 R2路由表信息

3.5.4 连通性测试

在配置了OSPFv3路由协议并进行优化之后,对全网连通性进行测试。在终端PC及服务器上设置好IPv6参数,主机之间通过命令来测试连通性。

PC0 ping PC2,回显结果如下:

C:>ping 2020:2222::20d:bdff:fe77:64d2

Pinging 2020:2222::20d:bdff:fe77:64d2 with 32 bytes of data:

Reply from 2020:2222::20D:BDFF:FE77:64D2:bytes=32 time=1ms TTL=124

Reply from 2020:2222::20D:BDFF:FE77:64D2:bytes=32 time<1ms TTL=124

Reply from 2020:2222::20D:BDFF:FE77:64D2:bytes=32 time<1ms TTL=124

Reply from 2020:2222::20D:BDFF:FE77:64D2:bytes=32 time=13ms TTL=124

Ping statistics for 2020:2222::20D:BDFF:FE77:64D2:

Packets:Sent=4,Received=4,Lost=0(0%loss),

Approximate round trip times in milli-seconds:

Minimum=0 ms,Maximum=13 ms,Average=3 ms

由上可见,内网是连通的。再测试内网和外网的连通性。

PC0 ping SERVER0,回显结果如下:

C:>ping 2018:1111::209:7cff:fe49:79c

Pinging 2018:1111::209:7cff:fe49:79c with 32 bytes of data:

Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=12ms TTL=125

Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=1ms TTL=125

Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=1ms TTL=125

Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=1ms TTL=125

Ping statistics for 2018:1111::209:7CFF:FE49:79C:

Packets:Sent=4,Received=4,Lost=0(0%loss),

Approximate round trip times in milli-seconds:

Minimum=1 ms,Maximum=12 ms,Average=3 ms

PC2 ping SERVER0,回显结果如下:

C:>ping 2018:1111::209:7cff:fe49:79c

Pinging 2018:1111::209:7cff:fe49:79c with 32 bytes of data:

Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=61ms TTL=124

Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=3ms TTL=124

Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=1ms TTL=124

Reply from 2018:1111::209:7CFF:FE49:79C:bytes=32 time=2ms TTL=124

Ping statistics for 2018:1111::209:7CFF:FE49:79C:

Packets:Sent=4,Received=4,Lost=0(0%loss),

Approximate round trip times in milli-seconds:

Minimum=1 ms,Maximum=61 ms,Average=16 ms

通过从不同区域内的主机发送ping包到服务器,均能收到服务器的响应,说明全网已连通。

4 结语

通过分析当前多区域网络中运行OSPF协议存在的问题,给出了在IPv6多区域网络环境下部署OSPF路由协议优化的技术与方法,该方法可解决大规模网络中部署OSPF存在路由性能降低的问题。给出了一个完整的案例,按文中提出的优化方法进行了实践部署,并进行了验证,取得了较好的效果,具有一定的应用和借鉴意义。

猜你喜欢
数据包链路路由
基于时隙ALOHA与NOMA的通信系统性能分析
一种移动感知的混合FSO/RF 下行链路方案*
基于Android设备的异构无线链路聚合软件①
数据通信中路由策略的匹配模式
一种用于6LoWPAN的多路径路由协议
OSPF外部路由引起的环路问题
C#串口高效可靠的接收方案设计
一种IS?IS网络中的链路异常检测方法、系统、装置、芯片
网络数据包的抓取与识别