高海燕
(晋中职业技术学院 电子信息学院,山西 晋中 030600)
OSPF具有收敛速度快、无环路由等诸多特性,理论上支持单区域不超过200台路由器、路由表条目数不超过3万条的网络部署,是大中型网络构建过程中首选的路由协议。OSPF是基于链路状态的路由协议,通过各类协议报文维系着路由表的正常运行,工作机制异常复杂。随着部署规模的扩大,OSPF协议报文流量及路由条目数会随之增大,如果不加以优化,会严重影响资源的利用率和网络的稳定性。因此,路由优化是OSPF部署实施过程中必须考虑的应用技术。
OSPF协议的基本思想是,路由器之间通过收集链路状态通告信息(LSA),同步拓扑数据库(LSDB),依据该数据库,每台路由器都列出以自己为根节点的到达其它各个子网的所有路径,再通过最短路径优先算法(SPF),将到达每个子网的开销最小的路径加入到路由表中,最后构建出完整的路由表。
OSPF基于区域划分的层次式设计是其大规模部署的前提。区域划分将一个OSPF路由域划分成多个区域,包含一个主干区域(area 0)和若干个标准区域,并且标准区域必须通过区域边界路由器(ABR)与主干区域相连。区域划分一方面可以避免路由器中的拓扑数据库规模太大,每台路由器只同步其所在区域的LSDB,而不是整个路由域的LSDB,极大地缩小了LSDB的规模,进而减小SPF计算的复杂度;另一方面可以有效控制链路状态通告的范围,标准区域内的路由器,只在其所在的区域内泛洪链路状态信息,而不会扩散到其它的区域,区域之间通过区域边界路由器来交换路由信息,从而极大地减少了整个路由域中的协议报文流量。
OSPF路由器通过与邻居交换链路状态信息来同步LSDB,进而计算路由。在OSPF多区域环境下,存在多种类型的LSA。OSPF协议定义了11中LSA类型,下面从传播范围、通告者、传递内容等三方面对常见的6种LSA来进行区分和描述,如表1所示。
表1 OSPF LSA类型Table 1 OSPF LSA type
从表1可以看出,1类、2类LSA是用来计算单个区域内各个子网的最佳路由,3类LSA是用来计算区域间的最佳路由,4类、5类和7类LSA是用来计算重发布到OSPF路由域中的外部路由。其中7类LSA是一种特殊的LSA,由自制系统边界路由器(ASBR)产生,只存在于次末节区域(NSSA)或完全次末节区域,当该LSA通过ABR传递到其他区域时,则会转化成5类LSA[1]。结合OSPF区域划分,各类LSA传播过程如图1所示。
图1 LSA传播示意图Fig.1 LSA propagation diagram
路由优化的思想就是在保证网络通信的前提下,通过命令工具等技术手段对网络中的路由信息进行控制,以减少协议报文流量和简化路由表为出发点,尽可能地提升网络的通信性能。常见的路由优化技术主要有路由过滤、路由汇总。针对OSPF路由协议还存在一些特殊的优化技术,如默认路由、末节区域等。
OSPF路由过滤主要有两种方式。一种是通过过滤LSA来控制路由的计算。此方式只能针对3类、5类(7类)LSA进行,因为单个区域内的路由器必须知道该区域所有的1类、2类LSA,否则可能会导致路由环路。OSPF机制也不允许对1类、2类LSA 进行过滤。另一种是对SPF算法计算出的路由进行过滤。此方式采用分发列表过滤工具,对要加入路由表中的路由进行过滤。
2.1.1过滤3类LSA
3类LSA的通告者是ABR,因此针对3类LSA的过滤要在ABR上进行。ABR对其连接的每个区域内的子网,都通过创建3类LSA,泛洪到其它区域,以此来交换区域间的路由信息,并且遵循D-V逻辑。3类LSA的过滤,影响的范围是该区域内的所有路由器,其过滤过程如图2所示。
图2 3类LSA过滤示意图Fig.2 Class 3 LSA filtering diagram
3类LSA的过滤通过以下配置命令来实现。
areanumberfilter-list prefixnamein/out
1)number:区域号(配置区域);
2)name:定义的前缀列表,用来匹配要过滤的3类LSA;
3)in:其它区域的3类LSA进入配置区域时进行过滤;
4)out:配置区域的3类LSA进入其它区域时进行过滤。
图2中,区域1中要实现对10.1.4.0的过滤,在ABR上可以采用in或out两种方式实现。首先定义前缀列表,名称为filter。
ip prefix-listfilterseq 5 deny 10.1.4.0/24
ip prefix-listfilterseq 10 permit 0.0.0.0/0 le 32
图3 5类LSA过滤示意图Fig.3 Class 5 LSA filtering diagram
方式一:area 1 filter-list prefixfilterin
方式二:area 0 filter-list prefixfilterout
2.1.2过滤5类LSA
5类LSA的通告者是ASBR,因此针对5类LSA的过滤要在ASBR上进行。ASBR对引入的外部路由,创建5类、7类LSA,泛洪到整个OSPF路由域,并且遵循D-V逻辑。5类LSA的过滤,影响的范围是整个路由域中的所有路由器,其过滤过程如图3所示。
5类LSA的过滤可以通过分发列表(distribute-list)工具和路由重发布两种方式来实现。
2.1.2.1 使用分发列表过滤
distribute-list {acl | prefix | route-map} out[interface]
1)acl | prefix | route-map:可以通过三种方式对要过滤的路由进行标识;
2)out:表示对离开路由表的外部路由进行过滤,只能使用out;
3)interface:对从指定接口接收的路由信息进行过滤,可选项。
2.1.2.2 路由重发布时,调用route-map来过滤
redistribute [源路由] route-mapname
1)源路由:包含直连路由、静态路由及其它路由协议产生的路由;
2)name:定义的路由映射图,需要调用acl或prefix-list来标识要被过滤的路由。
图3中,要实现对外部路由20.1.2.0的过滤,在ASBR上的配置如下:
方式一:定义访问控制列表filter来标识要过滤的路由。
ip access-list standardfilter
deny 20.1.2.0 0.0.0.255
permit any
distribute-listfilterout
方式二:定义路由映射图filter-map,调用访问控制列表filter(规则定义与方式一中filter相同)来标识要过滤的路由,假设外部路由为RIP。
route-mapfilter_mappermit 10
match ip addressfilter
redistribute rip route-mapfilter-map
2.1.3对SPF算法计算出的路由进行过滤
因为LSA是以泛洪的方式传播,基于LSA的路由过滤,影响的范围是区域内的所有路由器,而实际环境中可能只要求区域内的部分路由器对某些子网进行过滤。这时可以使用分发列表工具来实现。
distribute-list逻辑上置于SPF算法和路由表之间。它的启用不会影响到LSA的泛洪,也不会影响SPF算法对最佳路由的选择[2]。如果路由器启用了distribute-list过滤功能,那么在将路由加入路由表之前要先进行匹配过滤如图4 所示。
图4 distribute-list路由过滤示意图Fig.4 Distribute-list route filtering diagram
对SPF算法计算出的路由进行过滤,通过以下配置命令实现:
distribute-list {acl | prefix | route-map} in [interface]
1)acl | prefix | route-map:可以通过三种方式对要过滤的路由进行标识;
2)in:对进入路由表的路由进行过滤,只能选择in方向;
3)interface:对从指定接口接收的路由信息进行过滤,可选项。
图4中,R1要对加入到路由表中的10.1.4.0路由进行过滤,同样定义前缀列表filter来标识路由。在R1上配置如下:
ip prefix-listfilterdeny 10.1.4.0/24
ip prefix-listfilterpermit 0.0.0.0/0 le 32
distribute-list prefixfilterin
路由汇总是指将多个子网的路由条目用一条地址范围较大的路由代表,既不影响连通性,同时也缩小了路由表的规模,提高了路由器数据转发的效率。OSPF协议规定路由汇总只能在ABR或ASBR上进行,如果在区域内的路由器上进行汇总,可能导致LSDB的不完整,造成路由环路。OSPF路由汇总的实施依赖于IP地址的合理规划,以及路由域中ABR或ASBR的位置。
2.2.1域间路由汇总
在ABR上进行的路由汇总称之为域间路由汇总。如果一个区域内的所有子网都隶属于一个大的地址范围,并且其它区域中也没有该范围内的子网,那么就可以在连接该区域的ABR上创建一条汇总路由,通过3类LSA泛洪到其它区域。其它区域获悉的路由仅仅是一条汇总路由,而不是子网路由。
图5 域间路由汇总示意图Fig.5 Inter-domain route summary diagram
ABR路由汇总命令如下:
areaarea-idrangeip-addressmask[costcost]
1)area-id:进行路由汇总的区域;
2)ip-addressmask:汇总路由,由前缀和掩码确定汇总范围;
3)cost:设置汇总路由的度量值。
域间路由汇总需要注意几个问题。一是必须保证区域内至少存在一个隶属子网,否则汇总不生效;二是指路由汇总生效后,ABR不再通告隶属子网的3类LSA;三是可以手动设置汇总路由的度量值,若未设置,ABR会将隶属子网中最小的度量值赋值给汇总路由。域间路由汇总原理如图5 所示。
2.2.2自治系统间路由汇总
在ASBR上进行的路由汇总称之为自治系统间路由汇总。ASBR路由汇总是针对外部路由进行的。ASBR通过路由重发布将其它路由源的路由引入到OSPF路由域中,如果外部子网路由可以隶属于一个大的地址范围,就可以进行路由汇总,ASBR会为汇总路由创建一个5类LSA,在整个OSPF路由域中泛洪。
ASBR路由汇总命令如下:
summary-addressip-addressmask
ip-addressmask:汇总路由,通过前缀和掩码确定汇总范围。
自治系统间路由汇总与域间路由汇总工作原理相似。ASBR汇总路由必须存在至少一个隶属子网,否则汇总不生效;路由汇总生效后,ASBR不再通告隶属子网的5类LSA;ASBR汇总路由度量值为隶属子网
图6 自制系统间路由汇总示意图Fig.6 Self-made system routing summary diagram
中最小的度量值,区别在于不能手动设置。自治系统间路由汇总原理如图6 所示。
在连接互联网的出口设备上,都会创建一条默认路由,下一跳指向运营商,以保证网络内部可以访问互联网。如果OSPF路由域足够庞大,手动配置默认路由便成为一种负担,并且不能根据网络拓扑的变化进行动态调整。事实上,OSPF协议提供了一种便捷的方式,在连接Internet的路由器上,通过default-information originate命令可以为默认路由创建一个5类LSA,并在整个路由域中泛洪,这样路由域中的所有路由器都会获得一条默认路由,这些默认路由会将访问外部网络的数据逐步转发到出口设备。
默认路由下发的配置命令如下:
default-information originate [always] [metric metric-value] [metric-typetype-value]
1)always:不管路由器中是否存在默认路由,都会通告默认路由;
2)metric:指定默认路由的度量值;
3)metric-type:指定默认路由为E1或E2类,默认为E2。E1计算内部开销,E2不计算。
默认路由的下发过程如图7所示。
图7 默认路由下发示意图Fig.7 Default route delivery diagram
末节区域是OSPF协议定义的一种特殊区域。在末节区域中,ABR将默认路由的3类LSA泛洪到区域中,使得区域内的所有分组都转发到ABR。同时,基于末节区域的特性,可以过滤3类、4类和5类LSA,使得路由表更为简化。因为末节区域路由器有指向ABR的默认路由,所以并不影响通信。
OSPF协议定义了四种类型的末节区域,分别是末节区域、次末节区域(NSSA)、完全末节区域和完全次末节区域。四种区域的主要区别在于对LAS的传播限制[3]。末节区域配置及功能描述如表2所示,LSA过滤特性如图8所示。
表2 末节区域配置及功能描述Table 2 Final section area configuration and function description
图8 末节区域LSA过滤示意图Fig.8 Filtered schematic stub area LSA
构建如图9所示拓扑,对OSPF网络进行优化配置。
3.1.1路由优化描述
如图9所示,骨干区域挂接两个标准区域area1、area2和一个完全末节区域area3。外部路由域运行RIP协议,通过路由重发布将RIP路由引入到OSPF路由域中。采用路由优化技术对OSPF路由域进行优化,达到以下要求。
图9 实验拓扑图Fig.9 Experimental topology
1)使用路由过滤技术,使边缘路由器(R1、R2)不获取设备互连网段路由;
2)通过域间路由汇总,将区域1、2、3子网路由汇总发布;
3)通过自治系统间路由汇总,将外部路由汇总发布;
4)通过ASBR在OSPF路由域下自动下发默认路由,保证访问外部的数据流量的传输。
3.1.2IP地址规划
各区域及外部路由域的子网规划如图9所示,在实验环境下采用环回接口(loopback)来模拟各个子网。设备互连接口及IP地址如表3所示。
表3 设备互连接口及地址Table 3 Device interconnection interface and address
采用GNS3模拟器作为实验测试平台。
1)路由过滤配置:
针对OSPF路由域内的3类LSA过滤:
ABR2(config)#ip prefix-list filter deny 172.31.1.0/24 le 30
ABR2(config)#ip prefix-list filter permit 0.0.0.0/0 le 32
ABR2(config-router)#area 1 filter-list prefix filter in
ABR2(config-router)#area 2 filter-list prefix filter in
针对外部的5类LSA过滤:
ASBR(config)#access-list 1 deny 172.31.1.0 0.0.0.255
ASBR(config)#access-list 1 permit any
ASBR(config-router)#distribute-list 1 out
2)域间路由汇总配置:
ABR1(config-router)#area 3 range 10.1.0.0 255.255.252.0
ABR2(config-router)#area 1 range 172.16.0.0 255.255.252.0
ABR2(config-router)#area 2 range 172.17.0.0 255.255.252.0
3)自治系统管路由汇总配置:
ASBR(config-router)#summary-address 20.1.0.0 255.255.248.0
4)默认路由配置:
ASBR(config)#ip route 0.0.0.0 0.0.0.0 172.31.1.10
ASBR(config-router)#default-information originate
5)完全末节区域配置:
ABR1(config-router)#area 3 nssa no-summary
R3(config-router)#area 3 nssa
3.3.1路由表前后对比
R1优化前的OSPF路由表如图10所示。R2、R3与之类似。
图10 R1优化前的OSPF路由表Fig.10 R1 before optimizing OSPF routing table
R1优化后,OSPF路由表大幅度简化如图11所示。R2与之类似。
图11 R1优化后的OSPF路由表Fig.11 R1 optimized OSPF routing table
R3优化后,OSPF路由表只存在一条ABR1下发的默认路由,更为简化如图12所示。
图12 R3优化后的OSPF路由表Fig.12 R3 optimized OSPF routing table
3.3.2连通性测试
以R1的子网172.16.1.0/24为源,测试到达外部网络和内部区域的连通性如图13所示。
图13 R1的连通性测试Fig.13 R1 connectivity test
3.3.3测试分析
实施路由优化后,OSPF路由域中的路由信息流量大幅度减少,路由表的规模也得到了极大的简化。网络的连通性非但没有受到影响,而且IP分组转发过程中路由匹配的时延更小,提升了设备的转发效率,同时也节省了系统资源。
OSPF协议通常部署在大中型网络中,虽然其层次化的设计在一定程度上缓解了系统资源的开销,但是面对数量规模庞大的路由器,若不进行优化,网络也很快就达到了其通信能力的上限。OSPF协议提供了功能强大的路由优化技术,但是优化技术的应用在很大程度上依赖于网络的合理规划,一个糟糕的网络设计很可能导致路由优化技术的无法实施。在进行路由优化的过程中,要结合实际情况和具体需求灵活应用,不可盲目叠加套用,因为路由优化技术的应用本身也会占用系统的资源。