杨蕾 范存群 国鹏 高玉宏 张作君
(1 黑龙江省佳木斯气象卫星地面站,佳木斯 154007; 2 国家卫星气象中心,北京 100081)
庞大的卫星地面应用系统按照系统划分由6个分系统组成,分别是数据接收系统、运行控制系统、计算机网络系统、数据预处理系统、产品生产系统、数据存档系统等6个主线业务系统。通过网络把卫星地面应用系统各个系统桥接起来,卫星下发的数据在一定时间内传输到国家卫星气象中心,进而对卫星数据进行计算、预处理、生产产品服务于用户。网络支撑是整个卫星地面应用系统数据信息的交换和传递的重要组成部分,它可以实现各系统互联互通[1]。
动态路由选择开放式最短路径优先协议OSPF(Open Shortest Path First),属于内部网关协议IGP(Interior Gateway Protocol),最典型的链路状态路由协议的代表[2]。运行链路状态路由协议不再交互一条条路由条目,而是通过交互链路状态信息,链路状态信息理解为每台路由器都会产生,描述自己接口开销、与邻居路由器之间的关系等信息的通告,从而路由器知晓整个网络的拓扑结构,保证运行OSPF动态路由选择协议的网络结构无环路[3-4]。将这些链路状态信息存储在LSDB(Link-State Database链路状态数据库)之中,每台路由器都基于LSDB使用相同算法进行计算,计算的结果是得到一棵树以自身为根、无环的最短路径,实际上就知道到达网络各个点的最优路径,将计算出来的最优路径加载到自身的路由表。
OSPF动态路由选择协议应用于网络中到大型网络中,随着网络规模越来越大,每台路由器所维护的LSDB也逐渐变得臃肿,基于这个庞大的LSDB进行的计算也势必需要消耗更多的设备资源,无疑将导致设备的负担加大,另外网络拓扑的变化将会引起整个域内所有路由器的重新计算[5]。
随着网络规模扩大,同一个OSPF域内路由无法进行汇总,每台路由器需要维护的路由表也越来越庞大,无法压缩路由表空间,占用设备资源,降低路由器转发效率[6]。
在遵循层次化的网络设计原则,将OSPF域划分多个区域:骨干区域和非骨干区域。骨干区域是整个OSPF域的中心枢纽,一个OSPF域有且只能拥有一个骨干区域,所有的区域间路由必须通过骨干区域中转;非骨干区域必须与骨干区域直接相连接[7]。划分区域可以使OSPF区域内路由器减少,例如:LSA(Link State Advertisement链路状态通告)的泛洪被限制在区域内,减少了维护的LSDB数量,路由表路由条目较少,设备资源可以最大化来做数据层面的转发,通过这样的多区域设计极大程度地限制了LSA的泛洪,有效的把拓扑变化的影响控制在区域内,多区域提高了网络的扩展性,可以让协议更适用于大型网络结构。
OSPF动态路由选择协议基于路由器接口划分区域,一台路由器可以属于不同的区域,一个网段必须属于一个区域且只能属于一个区域,每个运行OSPF协议的接口必须指明所属区域。区域用区域号来标识,区域号采用点分十进制格式表示。所有非骨干区域必须与骨干区域连接且保持连通,按照星型拓扑结构进行连接,形成结构逻辑无环路。
1.2.1 多区域的稳定性
卫星地面应用系统一个AS(Autonomous System自治系统)内运行OSPF动态路由选择协议,没有进行区域划分,所有路由器在同一个区域,假设某个分系统中一台路由器出现故障不停翻动,每一次翻动都要重新做一个计算,将影响整个卫星地面应用系统内所有路由器运行,造成了整个卫星地面应用系统及各卫星地面接收系统的网络震荡,稳定性极差[8-9]。采用OSPF协议区域划分,以卫星地面应用系统为核心做为骨干区域,其他分系统作为非骨干区域。一个核心骨干区域连接多个非骨干区域[10],如图1所示。
图1 星地面应用系统组成
层次化区域设计,每个分系统为一个区域,这些区域与卫星地面应用系统骨干区域相连接,形成OSPF域。如图2所示,卫星地面应用系统为骨干area 0区域,包含3台路由器R1、R2、R3,且属于area 0;数据接收系统为非骨干area 1区域,包含3台路由器R1、R5、R6属于area 1。路由器R5连接交换机SW1挂aa.bb.cc.a/24网段,路由器R6连接交换机SW2和SW3挂aa.bb.dd.a/24和aa.bb.ee.a/24网段。
图2 卫星地面应用系统与接收系统区域示意
数据接收系统区域内网段aa.bb.cc.a/24、aa.bb.dd.a/24和aa.bb.ee.a/24发送到区域area 0。卫星地面应用系统有多个分系统,一个分系统有多个网段地址,整个系统会有众多网段地址。一旦某一个网段链路或设备故障,使整个系统网络会重新计算路由。
如果将非骨干区域中明细路由汇总,汇总路由通告给区域area 0,这样area 0区域内只会学习到这条汇总路由,不会学习到area 1区域内明细路由。
卫星地面应用系统与分系统之间、各分系统之间不需要知道彼此的拓扑信息,通过ABR(Area Border Router 区域边界路由器)传递发送路由条目,area 0和area 1区域之间的ABR为路由器R1。在ABR做路由汇总且明细路由被抑制,减少路由条目数量[11],ABR做路由汇总。
汇总路由涵盖所有明细路由,路由汇总可以防止明细路由出现问题,不影响对区域area 0通告的汇总路由。只有当所有的明细路由全部失效时,便不会对区域area 0通告汇总路由。数据接收系统区域area 1内某一台路由器发生故障,接口不停翻动情况,只会影响本区域内路由器LSDB,通告的汇总路由不改变,那么整个卫星地面应用系统不会做任何路由重新计算,不会受到任何网络影响。
让拓扑变更带来的影响限制在一个区域内,而不是影响整个卫星地面应用系统。合理的区域划分及配合相应的路由汇总操控,可以减少路由表里面路由条目数量,减少算法计算的频率,大大增进网络系统的稳定性[11]。
1.2.2 多区域的扩展性
随着卫星地面应用系统逐步扩大,面临添加新的业务体系及相关应用。将新增分系统融合到卫星地面应用系统中,通过OSPF多区域设计的网络结构布局,不重新更改整个卫星地面应用系统网络结构,不影响各分系统的业务数据传输,每个区域相互独立互不影响。各分系统为非骨干区域与卫星地面应用系统骨干区域相连接,在物理逻辑部署上连接成一个星型拓扑,新增分系统,不影响非骨干区域内路由器OSPF计算,将内部路由计算控制在各自区域内进行[12]。无论分系统增加还是删减,各分系统内网络结构不受影响,保证业务正常运行[13],这种区域划分带来了极大便捷。例如,在不更改现有卫星地面应用系统内各个分系统之间网络结构下,新增一个系统所有非骨干区域传递数据流量信息必须通过骨干区域,等同于各系统及其他新增系统都与卫星地面应用系统相连,各分系统由卫星地面应用系统骨干区域进行整个系统的路由相互传递。
对OSPF域进行区域划分,实质上对于每个分系统(一个区域)并不知晓其他系统(其他区域)的拓扑结构细节,除卫星地面应用系统骨干区域外,每一个分系统都是一个末梢网络,它们的数据的流出只需保证传递到卫星地面应用系统核心(骨干区域),再由骨干区域发送到目的地。骨干区域是整个OSPF域的中心枢纽,一个OSPF域有且仅有一个[14]。
非骨干区域包括:常规区域、末节区域、完全末节区域、次末节区域和完全次末节区域。所有的OSPF区域缺省情况下都是常规区域[15]。
当非骨干区域为常规区域类型,路由器能够学习到整个OSPF域内和从外部引入的路由。如图3所示,area 1区域设置为常规区域,area 0区域为骨干区域,R2路由器作为ABR。R3路由器从外部静态重分发进OSPF协议内的10.3.1.0/24、10.3.2.0/24这两条明细路由。
图3 常规区域与骨干区域组网示例
路由器R2配置如下:
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 10.1.23.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]quit
[R2-ospf-1]area 1
[R2-ospf-1-area-0.0.0.1]network 10.1.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.1]network 10.1.14.0 0.0.0.255
路由器R3配置如下:
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 10.1.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]quit
[R3-ospf-1]import-route static
路由器R1配置如下:
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]network 10.1.12.0 0.0.0.255
路由器R4配置如下:
[R4]ospf 1 router-id 4.4.4.4
[R4-ospf-1]area 1
[R4-ospf-1-area-0.0.0.1]network 10.1.14.0 0.0.0.255
路由器配置完成,查看路由器R1路由表,可以得到区域内10.1.14.0/24和骨干区域内10.1.23.0/24明细路由,还可得到路由器R3外部静态重分发进OSPF协议内的10.3.1.0/24、10.3.2.0/24这两条明细路由,如图4所示。
图4 常规区域内路由器R1 OSPF路由表
末节区域类型当骨干区域与非骨干区域之间有且只有一台ABR路由器,这一台路由器意味着对于非骨干区域内所有路由器而言,在发送数据包去往其他区域网络时,有且只有一条路径离开当前的区域,没有其他路径可以选择,不存在选路过程,选用末节区域类型[16]。
2.2.1 末节区域分析
同图3将area 1区域修改设置为末节区域,其他不变。area 0区域为骨干区域,路由器R2作为ABR。路由器R3从外部静态重分发进OSPF协议内的10.3.1.0/24、10.3.2.0/24这两条明细路由,如图5所示。
图5 末节区域与骨干区域组网示例
路由器R2配置如下:
[R2]osfp 1
[R2-ospf-1]area 1
[R2-ospf-1-area-0.0.0.1]stub
路由器R1配置如下:
[R1]osfp 1
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]stub
路由器R4配置如下:
[R4]osfp 1
[R4-ospf-1]area 1
[R4-ospf-1-area-0.0.0.1]stub
路由器配置完成,查看路由器R1路由表,如图6所示。可以得到区域内10.1.14.0/24和骨干区域内10.1.23.0/24明细路由。路由器R3外部静态重分发进OSPF协议内的10.3.1.0/24、10.3.2.0/24这两条明细路由没有了,出现了一条默认路由0.0.0.0/0。
图6 末节区域内路由器R1 OSPF路由表
将非骨干区域设置为末节区域,ABR会过滤从外到内的4类、5类LSA。无论其他区域怎么发送4类、5类路由都不能进入area 1。路由器R3从外部重分发进OSPF协议内的10.3.1.0/24、10.3.2.0/24被过滤掉,末节区域内路由器R1接收不到这两条明细路由。那么area 1区域内路由器是否就丧失访问其他区域的能力呢?然而并没有,过滤路由的同时ABR路由器R2会向末节区域内下放一个3类LSA默认路由,这时候内部路由器只要接收到这条3类默认路由且默认路由指向边界路由器ABR[17]。
2.2.2 末节区域优势
对比图4和图6看出来路由器R1路由表里面路由条目的变化。末节区域路由器虽然没有接收到这些4类、5类明细路由,路由器R1和R4能接收到一条默认路由0.0.0.0/0,但是依然可以访问外部网络,没有受到影响。优势:减少了区域内路由器中的LSA数量和路由条目,并且不会限制路由器的访问。常规区域原来访问区域外网段用明细路由方式,末节区域访问区域外网段采用默认路由方式。
末节区域内路由器访问外部静态重分发进OSPF协议内的10.3.1.0/24、10.3.2.0/24这两条明细路由,只能通过ABR路由器R2来传递,不存在路由选择路径。没有必要获取到其他区域的路由条目,也没有必要获取其他外部网络的路由,更没有必要获取到明细路由。从ABR路由器R2获取的明细路由没有任何意义,可以使用一条静态默认路由替代去往其他区域的明细路由,减少了区域内路由器的路由条目数量,避免消耗内存资源,减小路由转发延迟[15]。
一个区域做成末节区域,默认路由有一条指向路由器ABR,使用默认路由访问外部路由。将ABR功能更加强大一些,再额外做一些路由过滤,把其他区域的区域间路由不发给末节区域,因对于区域内路由器已有默认路由了,通过默认路由可以访问外部网络,也可以访问其他区域网络,这变成了完成末节区域。
区域内路由器发送数据包去往其他区域的区域内路径,和发送数据包去往外部网络的区域内路径是相同的,都需要把数据包发送给路由器ABR,由它进行转发出去。而区域内路由器没有选路过程,只要不是发送给区域内的路由,都需要经过路由器ABR。那么没有必要将3类LSA发送给区域内路由器,现将路由器ABR功能升级,不但从内外过滤4类5类LSA,还过滤3类LSA,等于把区域间的路由也过滤掉,这时完成末节区域内只能接收到本区域内的1类2类LSA,对于其他区域访问和外部网络访问都依靠路由器ABR下放特殊的3类默认路由来实现[18]。如图7所示相同组网,只把区域area 1设置成完成末节区域后,区域内路由器R1路由表有1类2类LSA 10.1.14.0/24和默认路由0.0.0.0/0路由条目如图7,相比末节区域缺省区域间路由,本实例中缺少了10.1.23.0/24这条路由。
图7 完全末节区域内路由器R1 OSPF路由表
选择把一个非骨干区域设置成完成末节区域,路由器的路由表里面路由条目数量和LSA数量会再次减少,同时也减少路由器LSDB的大小,降低占用路由器设备资源。
末节区域适用范围是区域内不允许存在ASBR(Autonomous System Boundary Router,自治系统边界路由器),不可以做路由重分发,既是做了重分发也无法传递。次末节区域解决了这样的问题,可以在这种区域内存在ASBR做路由重分发。次末节区域用7类LSA,运用7类LSA形式传递,使用范围:在次末节区域内传递。
次末节区域路由器ABR默认会从外到内过滤4类5类LSA进入区域,同时增加一个功能,就是把区域内7类LSA转换成5类LSA并发送给其他区域。对于其他区域路由器并不清楚由哪台路由器进行的重分发,误认为发送5类LSA的路由器是ASBR,其实并不然,只有次末节区域里路由器能接收到7类LSA,才会知道真实的ASBR是哪台路由器[19]。
如图8所示,把area 1区域设置次末节区域,area 0区域为骨干区域,路由器R2作为ABR。路由器R3从外部静态重分发进OSPF协议内的10.3.1.0/24、10.3.2.0/24这两条明细路由,路由器R1从外部静态重分发进OSPF协议内的10.1.1.0/24这一条明细路由。
图8 次末节区域与骨干区域组网示例
路由器R2过滤4类5类LSA进入area 1,R2作为ABR将路由器R3的10.3.1.0/24、10.3.2.0/24两条路由重分发到区域area 0,通过7类LSA默认0.0.0.0/0下发到区域area 1,从而路由器R1可以达到域外10.3.1.0/24、10.3.2.0/24。
[R1]ip route-static 10.1.1.0 24 NULL 0
[R1]osfp 1 router-id 1.1.1.1
[R1-ospf-1]import-route static
[R1-ospf-1]area 1
[R1-ospf-1-area-0.0.0.1]nssa
[R2]osfp 1 router-id 2.2.2.2
[R2-ospf-1]area 1
[R2-ospf-1-area-0.0.0.1]nssa
路由器配置完成,查看路由器R1路由表,可以得到默认下发0.0.0.0/0和区域area 0内10.1.23.0/24路由,如图9所示。另一方面,次末节区域允许存在ASBR,当路由器R1的10.1.1.0/24重分发到OSPF时,将产生7类LSA用于描述这条10.1.1.0/24外部路由,且在区域area 1内泛洪。R2作为ABR将接收到这条7类LSA并用于自己的外部路由计算,同时将它转换成5类LSA用于描述10.1.1.0/24路由发送给区域area 0。
图9 次末节区域内路由器R1 OSPF路由表
查看路由器R1的LSDB,如图10所示,area 1中有1类、2类、3类LSA,有两条7类LSA,一条是R1产生的,用于描述自身重分发引入的外部路由10.1.1.0/24;另一条是R2产生的默认路由,用于描述路由器R3外部路由重分发进OSPF内的路由条目。
图10 次末节区域内路由器R1 OSPF LSDB表
当一个区域设置成完全次末节区域,且完全次末节区域内有一台路由器ASBR,要通过这台ASBR进行外部网络访问,这种情况是不能实现区域内访问外部。因为ASBR下放默认的是7类形式,ABR下放默认是3类形式。注意:根据OSPF动态路由选择协议规则,按照路由优先级比较,默认3类路由比7类路由优先级高[20]。把非骨干区域配置成完全次末节区域时,路由器想通过ASBR访问外部网络,只能通过明细路由来访问,默认路由必须指向路由器ABR。完全次末节区域类型丧失了选择默认路由指向的权利配置,非骨干区域内默认路由必须指向ABR,不能指向ASBR。
末节区域特性过滤4类5类LSA,区域内下放一个3类LSA默认路由,末节区域内路由器会接收到3类默认路由且默认路由指向ABR。
完全末节区域特性相比末节区域,会过滤3类LSA,把区域间的路由也过滤掉,完全末节区域内只能接收到本区域内的1类2类LSA,对于其他区域访问和外部网络访问都依靠路由器ABR下放一条默认路由来实现访问。
在本文中相同的区域组网示例图,非骨干区域分别做了末节区域和完全末节区域,观察区域内路由器R1的路由表变化,如图11所示。
图11 对比末节区域(a)和完全末节区域(b)路由器R1路由表
当非骨干区域设置为Stub末节区域,区域内路由器R1访问OSPF各区域使用路由明细,访问外部网络使用默认路由。而设置成完全末节区域,区域内路由器R1访问本区域内使用明细路由,其他区域和外部网络访问均使用默认路由。完全末节区域减少了LSA的产生和传递,LSDB数据表也变得简化,不会占用大量CPU和内存资源,将设备资源更多地用于数据层面转发,从而提高了整体网络数据传输的品质。
当一个区域设计成末节区域后,末节区域的边界路由器会主动的向区域内下放一条默认路由,帮助区域内路由器通过这条默认路由作为出口路径来访问外部网络,但次末节区域不会主动下放默认路由[21]。
对于次末节区域而言,区域内可能存在ASBR,或者其他区域路由器也可能存在ASBR,这意味着多台ASBR都有可能是AS连接外网的一个出口,有可能这两个区域的两台路由器在区域内下放的路由是相同的,两台路由器都有出口可能,这时默认路由的指向不能确定。如果将默认路由都指向次末节区域内路由器ASBR;若其他区域的路由器ASBR是一个更好的出口,那么次末节区域内路由器默认路由指向是其他区域ASBR来访问外部路由。那么访问外部路由时有一个选择路径的空间,在实际网络系统架构中根据需求,进行选择合适出口然后通过相对应配置进行下放默认路由。
本文将OSPF动态选择路由协议应用于卫星地面应用系统中,将每一个分系统划分成一个区域,对非骨干区域设置不同类型,其传递路由路径方式不同。并分别对非骨干区域不同类型进行网络传递模拟仿真试验。
(1)划分区域后网络具有稳定性和扩展性,增加或减少网络节点不需要重新做SPF计算,不影响整个网络结构的拓扑变化,节约路由器CPU和内存资源,从而提升了数据转发时传输效率,并且网络系统的数据和信息传输的网络品质也得到提高。
(2)非骨干区域设置末节区域、完全末节区域、次末节区域、完全次末节区域4种不同区域后,区域内每台路由器访问其他区域或外部路由的路由条目改变,不用精确路由条目改用默认路由来访问。
(3)划分区域后路由器不需要接收大量路由条目、减少维护的LSDB数量,只需维护好下放到区域内默认路由来访问其他区域或外部网络,在实际应用中做到减少控制层面查询和路径选择。
本文应用OSPF路由动态选择协议区域类型特性,在整个网络系统运行OSPF路由动态选择协议时划分区域,明显看出SA在网络中泛洪减少,路由表规模缩小,路由器控制层面路径选择和访问次数由多次降低到1~2次就可以达到目的网络,整体的网络结构得到优化,同时也大大提升网络系统的稳定性,从而提高了数据在网络传输的效率。在部署中到大型网络系统架构中利用这一特性,在一个核心系统且多个分系统的网络环境中,使用区域划分可实现网络中分割若干分系统,并且各分系统之间相互独立又相互联系,达到整体系统之间互联互通。今后在部署多系统的网络结构环境中可予以借鉴应用。