发布网友 发布时间:2024-09-30 15:43
共1个回答
热心网友 时间:2024-10-20 14:50
OSPF路由协议在因特网的发展历程上正起着越来越重大的作用。而NSSA则是在该协议发展过程中产生的一种新的属性。而关于NSSA区域的理解,一直是广大网络爱好者的心头之痒。这篇文章,从NSSA区域的产生、基本原理和配置实例三个方面,对这个特殊的OSPF区域做以简要的介绍。
一:OSPF协议与区域
大家知道,路由协议推崇的链路状态算法,虽然彻底的解决了路由自环问题,但这种算法本身也有很多固有的缺陷:每台路由器都必须保存整个网络的拓扑结构。这样,一旦出现拓扑变化,就要进行新的SPF计算。这种复杂的SPF算法,对CPU和内存的占用是相当大的。
而且,以前流行过的大多数路由协议都存在如下缺陷:
没有从协议本身反映出网络的层次结构。因为实际应用中的一个网络是由各种级别的路由器组成的,有核心层的骨干路由器、汇聚层的高端路由器、接入层的低端路由器。这些路由器承担的任务不同,处理性能也不一样。但在路由协议中,所有的路由器都要完成几乎是相同的工作:发送已知的路由给邻居路由器,根据从邻居路由器获得的路由信息计算本地路由表。虽然每台路由器的接口数量不同,但最终计算得来的路由表的规模基本是一样的。
为了彻底解决上述问题,OSPF提出了区域的概念(AREA),区域是将所有运行OSPF 的路由器人为的分成不同的组,以区域ID来标示。在区域内路由计算的方法不变,由于划分区域之后,每个区域内的路由器不会很多,所有上述缺陷表现得并不严重,带来的后果可以忽略不计。这样,上述的缺点就被成功的规避了。实际上,区域概念的提出意义远不只这些,在划分为区域之后,网络的拓扑结构就与路由协议之间存在了一种对应关系,核心和高端的路由器由于处理能力强,可以规划在骨干区域之中。因为骨干区域的路由器要承担更多的路由计算任务。
每个单独的区域实际上就是一个独立于网络中其他区域的系统,可以在不同的区域中试行不同的路由策略,使组网规划更为灵活方便。
实际上OSPF 协议在当今的网络中广为流行,不是因为它使用了无环路的链路状态算法,而是因为它提出了区域的概念。
二:OSPF的STUB区域
STUB区域就是一个对区域概念的最典型的应用。STUB区域的设计思想在于:在划分了区域之后,非骨干区域中的路由器对于区域外的路由,一定要通过ABR(区域边界路由器)来转发,或者说对于区域内的路由器来说ABR是一个通往外部世界的必经之路。既然如此,对于区域内的路由器来说,就没有必要知道通往外部世界的详细的路由了,代之以由ABR向该区域发布一条缺省路由来指导报文的发送。这样在区域内的路由器中就只有为数不多的区域内路由和一条指向ABR的缺省路由。而且无论区域外的路由如何变化,都不会影响到区域内路由器的路由表。由于区域内的路由器通常是由一些处理能力有限的低端路由器组成,所以处于STUB区域内的这些低端设备既不需要保存庞大的路由表,也不需要经常性的进行路由计算。有了 STUB属性之后,网络的规划更符合实际的设备特点。
以上描述的只是STUB区域的设计思想,在协议文本中,对STUB区域的精确定义是:STUB 区域一定是非骨干区域和非转换区域(可以配置虚连接的区域),并且在该区域中不可传递Type 5类型的LSA。因为协议的设计者认为路由表中的绝大部分路由均是来自自治系统外部的引入的路由。(由于OSPF是链路状态算法的路由协议,LSA就是用来描述网络拓扑结构的一种数据结构。在OSPF 中将LSA分为5类:type1、2两种用来描述区域内的路由信息;type3用来描述区域间的路由信息;type4、5用来描述自治系统外部的路由信息。)
需要注意的是定义中对于过滤TYPE5类型的LSA使用的描述语言是“不可传递”,这就意味着不仅区域外的ASE(自治系统外部)路由无法传递到STUB 区域中,同时STUB区域内部的ASE路由也无法传递到本区域之外。换一句更通俗的话来描述:STUB区域内的路由器都不可引入任何外部的路由(包括静态路由)。
这样的定义未免太过严厉了。因为在实际的组网中,并不是所有的设备都会运行OSPF协议。例如:用户拨号上网时使用的接入服务器就需要连接路由器上因特网,但通常接入服务器上并不支持(也不需要)OSPF协议,而是通过配置静态路由实现路由功能。很多时候ISP为了保密或易于管理的需要,在连接用户侧的路由器时使用静态路由。总之:在一个网络中所有的路由器上都配置OSPF,而不使用静态路由的情况几乎是不存在的。——也就是说STUB区域的适用条件也是不存在的。
三:特殊的STUB-- NSSA区域
STUB区域虽然为合理的规划网络描绘了美好的前景,但她在实际的组网中又不具备可操作性,未免遗憾。但此时的OSPF协议已经基本成型,不可能再做大的修改。为了弥补缺陷,协议设计者提出了一种新的概念NSSA,并且作为OSPF协议的一种扩展属性单独在RFC 1587中描述。
NSSA需要完成如下任务:
自治系统外的ASE路由不可以进入到NSSA区域中,但是NSSA区域内的路由器引入的ASE 路由可以在NSSA中传播并发送到区域之外。即:取消了STUB关于ASE的双向传播的*(区域外的进不来,区域里的也出不去),改为单向*(区域外的进不来,区域里的能出去)。
由于是作为OSPF标准协议的一种扩展属性,应尽量减少与不支持该属性的路由器协调工作时的冲突和兼容性问题。
为了解决ASE单向传递的问题,NSSA中重新定义了一种LSA——Type 7类型的LSA,作为区域内的路由器引入外部路由时使用,该类型的LSA除了类型标识与Type 5不相同之外,其它内容基本一样。这样区域内的路由器就可以通过LSA的类型来判断是否该路由来自本区域内。但由于Type 7类的LSA是新定义的,对于不支持NSSA属性的路由器无法识别,所以协议规定:在NSSA的ABR上将NSSA内部产生的Type 7类型的LSA转化为Type 5类型的LSA再发布出去,并同时更改LSA的发布者为ABR自己。这样NSSA区域外的路由器就可以完全不用支持该属性。
从上述描述可以看出:在NSSA区域内的所有路由器必须支持该属性(包括NSSA的ABR),而自治系统中的其他路由器则不需要。
由于NSSA是由STUB区域的概念改进得来,所以她的名字叫做: "not-so-stubby" area ,本意是:不是那么STUB的区域。
四:STUB区域的相关配置
NSSA的原理不复杂,配置更简单,相关命令只有一条:
[Router-ospf]
area area-id nssa [ default-route-advertise ] [ no-import-route ] [ no-summary ]
area-id:是需要配置成NSSA的区域的区域号。“[]”内的参数只有在该路由器是ABR时才会生效。
关键字default-route-advertise用来产生缺省的Type-7 LSA,应用了该参数后,在ABR上无论路由表中是否存在缺省路由0.0.0.0,都会产生Type-7 LSA缺省路由;而在ASBR上当路由表中存在缺省路由0.0.0.0,才会产生Type-7 LSA缺省路由。
关键字no-import-route用在ASBR上,使得OSPF通过import-route命令引入的路由不被通告到NSSA区域。如果NSSA的路由器既是ASBR也是ABR,一般选用该参数选项。
为了进一步减少发送到NSSA区域中的链路状态发布(LSA)的数量,可以在ABR上配置no -summary属性,禁止ABR向NSSA区域内发送summary_net LSAs(Type-3 LSA)。配置该参数后,ABR会将Type3类型的LSA也过滤掉,即:NSSA区域中也不会出现区域间路由,路由表进一步精简。既然有缺省路由,那么其他指向区域外的具体路由都是没有必要的了。该参数推荐配置。
即:如果路由器只是一台区域内路由器,只需配置area area-id nssa即可。如果是ABR,根据实际需要,选择添加三个可选参数。
五:STUB区域配置实例
先看一下实验拓扑图:
实验之前,先做好五个路由器的预配置,这是必不可少的。
第一步 R1的预配置
R1(config)#int lo0
R1(config-if)#ip add 1.1.1.1 255.255.255.0
R1(config-if)#int s2/1
R1(config-if)#ip add 12.0.0.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int s2/2
R1(config-if)#ip add 15.0.0.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
第二步 R2的预配置
R2(config)#int lo0
R2(config-if)#ip add 2.2.2.2 255.255.255.0
R2(config-if)#int s2/1
R2(config-if)#ip add 12.0.0.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#int s2/2
R2(config-if)#ip add 23.0.0.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
第三步 R3的预配置
R3(config)#int lo0
R3(config-if)#ip add 3.3.3.3 255.255.255.0
R3(config-if)#int s2/1
R3(config-if)#ip add 23.0.0.3 255.255.255.0
R3(config-if)#no sh
R3(config-if)#exit
第四步 R4的预配置
R4(config)#int lo0
R4(config-if)#ip add 4.4.4.4 255.255.255.0
R4(config-if)#int s2/2
R4(config-if)#ip add 45.0.0.4 255.255.255.0
R4(config-if)#no sh
R4(config-if)#exit
第五步 R5的预配置
R5(config)#int lo0
R5(config-if)#ip add 5.5.5.5 255.255.255.0
R5(config-if)#int s2/1
R5(config-if)#ip add 15.0.0.5 255.255.255.0
R5(config-if)#no sh
R5(config-if)#int s2/2
R5(config-if)#ip add 45.0.0.5 255.255.255.0
R5(config-if)#no sh
好了,可以开始OSPF的相关配置了:
第一步 配置R1、R2、R3、R4、R5的OSPF协议
R1(config)#router ospf 100
R1(config-router)#router-id 1.1.1.1
R1(config-router)#network 1.1.1.1 0.0.0.0 area 0
R1(config-router)#network 12.0.0.1 0.0.0.0 area 0
R1(config-router)#network 15.0.0.1 0.0.0.0 area 0
R1(config-router)#exit
R2(config)#router ospf 100
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 2.2.2.2 0.0.0.0 area 0
R2(config-router)#network 12.0.0.2 0.0.0.0 area 0
R2(config-router)#network 23.0.0.2 0.0.0.0 area 32
R2(config-router)#exit
R3(config)#router ospf 100
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 3.3.3.3 0.0.0.0 area 32
R3(config-router)#network 23.0.0.3 0.0.0.0 area 32
R3(config-router)#exit
R4(config)#router ospf 100
R4(config-router)#router-id 4.4.4.4
R4(config-router)#network 4.4.4.4 0.0.0.0 area 54
R4(config-router)#network 45.0.0.4 0.0.0.0 area 54
R4(config-router)#exit
R5(config)#router ospf 100
R5(config-router)#network 5.5.5.5 0.0.0.0 area 0
R5(config-router)#network 15.0.0.5 0.0.0.0 area 0
R5(config-router)#network 45.0.0.5 0.0.0.0 area 54
R5(config-router)#exit
第二步 配置Area 32为NSSA区域
R2(config)#router ospf 100
R2(config-router)#area 32 nssa
R2(config-router)#exit
R3(config)#router ospf 100
R3(config-router)#area 32 nssa
R3(config-router)#exit
第三步 到R3上配置重分布直连,让一些外部路由进入OSPF,这样,R3就成了一个ASBR
R3(config)#int lo11
R3(config-if)#ip ad 199.172.1.1 255.255.255.0
R3(config-if)#int lo12
R3(config-if)#ip ad 199.172.2.2 255.255.255.0
R3(config-if)#int lo13
R3(config-if)#ip ad 199.172.3.3 255.255.255.0
R3(config-if)#int lo14
R3(config-if)#ip ad 199.172.4.4 255.255.255.0
R3(config-if)#int lo15
R3(config-if)#ip ad 199.172.5.5 255.255.255.0
R3(config-if)#int lo16
R3(config-if)#ip ad 199.172.6.6 255.255.255.0
R3(config-if)#int lo17
R3(config-if)#ip ad 199.172.7.7 255.255.255.0
R3(config-if)#int lo18
R3(config-if)#ip ad 199.172.8.8 255.255.255.0
R3(config-if)#int lo19
R3(config-if)#ip ad 199.172.9.9 255.255.255.0
R3(config-if)#int lo20
R3(config-if)#ip ad 199.172.10.10 255.255.255.0
R3(config-if)#int lo21
R3(config-if)#ip ad 199.172.11.11 255.255.255.0
R3(config-if)#int lo22
R3(config-if)#ip ad 199.172.12.12 255.255.255.0
R3(config-if)#int lo23
R3(config-if)#ip ad 199.172.13.13 255.255.255.0
R3(config-if)#int lo24
R3(config-if)#ip ad 199.172.14.14 255.255.255.0
R3(config-if)#int lo25
R3(config-if)#ip ad 199.172.15.15 255.255.255.0
R3(config-if)#exit
R3(config)#router ospf 100
R3(config-router)#redistribute connected subnets
R3(config-router)#^Z
第四步 查看R3的OSPF数据库
R3#show ip ospf database
OSPF Router with ID (3.3.3.3) (Process ID 100)
Router Link States (Area 32)
Link ID ADV Router Age Seq# Checksum Link count
2.2.2.2 2.2.2.2 146 0x80000006 0x0089C0 2
3.3.3.3 3.3.3.3 31 0x80000004 0x006FBB 3
Summary Net Link States (Area 32)
Link ID ADV Router Age Seq# Checksum
1.1.1.1 2.2.2.2 162 0x80000002 0x004F99
2.2.2.2 2.2.2.2 162 0x80000002 0x009E86
4.4.4.4 2.2.2.2 162 0x80000002 0x00C992
5.5.5.5 2.2.2.2 162 0x80000002 0x00197F
12.0.0.0 2.2.2.2 162 0x80000002 0x00D60B
15.0.0.0 2.2.2.2 162 0x80000002 0x00326C
45.0.0.0 2.2.2.2 162 0x80000002 0x002D13
Type-7 AS External Link States (Area 32)
//可以看到,R3上重发布的路由成了LSA-7型
Link ID ADV Router Age Seq# Checksum Tag
199.172.1.0 3.3.3.3 30 0x80000001 0x0047C1 0
199.172.2.0 3.3.3.3 31 0x80000001 0x003CCB 0
199.172.3.0 3.3.3.3 31 0x80000001 0x0031D5 0
199.172.4.0 3.3.3.3 31 0x80000001 0x0026DF 0
199.172.5.0 3.3.3.3 31 0x80000001 0x001BE9 0
199.172.6.0 3.3.3.3 32 0x80000001 0x0010F3 0
199.172.7.0 3.3.3.3 32 0x80000001 0x0005FD 0
199.172.8.0 3.3.3.3 32 0x80000001 0x00F908 0
199.172.9.0 3.3.3.3 32 0x80000001 0x00EE12 0
199.172.10.0 3.3.3.3 32 0x80000001 0x00E31C 0
199.172.11.0 3.3.3.3 32 0x80000001 0x00D826 0
199.172.12.0 3.3.3.3 32 0x80000001 0x00CD30 0
199.172.13.0 3.3.3.3 32 0x80000001 0x00C23A 0
199.172.14.0 3.3.3.3 32 0x80000001 0x00B744 0
199.172.15.0 3.3.3.3 32 0x80000001 0x00AC4E 0
第五步 查看R2的路由表与数据库。可以看到,通过类型7的LSA算出的路由条目,是用“O N2”开头的。
R2#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
O N2 199.172.11.0/24 [110/20] via 23.0.0.3, 00:02:15, Serial2/2
1.0.0.0/32 is subnetted, 1 subnets
O 1.1.1.1 [110/65] via 12.0.0.1, 00:04:26, Serial2/1
O N2 199.172.10.0/24 [110/20] via 23.0.0.3, 00:02:15, Serial2/2
2.0.0.0/24 is subnetted, 1 subnets
C 2.2.2.0 is directly connected, Loopback0
O N2 199.172.9.0/24 [110/20] via 23.0.0.3, 00:02:15, Serial2/2
3.0.0.0/32 is subnetted, 1 subnets
O 3.3.3.3 [110/65] via 23.0.0.3, 00:02:15, Serial2/2
O N2 199.172.8.0/24 [110/20] via 23.0.0.3, 00:02:15, Serial2/2
O N2 199.172.15.0/24 [110/20] via 23.0.0.3, 00:02:15, Serial2/2
4.0.0.0/32 is subnetted, 1 subnets
O IA 4.4.4.4 [110/193] via 12.0.0.1, 00:02:15, Serial2/1
O N2 199.172.14.0/24 [110/20] via 23.0.0.3, 00:02:15, Serial2/2
5.0.0.0/32 is subnetted, 1 subnets
O 5.5.5.5 [110/129] via 12.0.0.1, 00:04:27, Serial2/1
O N2 199.172.13.0/24 [110/20] via 23.0.0.3, 00:02:16, Serial2/2
23.0.0.0/24 is subnetted, 1 subnets
C 23.0.0.0 is directly connected, Serial2/2
O N2 199.172.12.0/24 [110/20] via 23.0.0.3, 00:02:16, Serial2/2
O N2 199.172.3.0/24 [110/20] via 23.0.0.3, 00:02:16, Serial2/2
O N2 199.172.2.0/24 [110/20] via 23.0.0.3, 00:02:16, Serial2/2
O N2 199.172.1.0/24 [110/20] via 23.0.0.3, 00:02:16, Serial2/2
O N2 199.172.7.0/24 [110/20] via 23.0.0.3, 00:02:16, Serial2/2
12.0.0.0/24 is subnetted, 1 subnets
C 12.0.0.0 is directly connected, Serial2/1
O N2 199.172.6.0/24 [110/20] via 23.0.0.3, 00:02:17, Serial2/2
O N2 199.172.5.0/24 [110/20] via 23.0.0.3, 00:02:17, Serial2/2
O N2 199.172.4.0/24 [110/20] via 23.0.0.3, 00:02:17, Serial2/2
45.0.0.0/24 is subnetted, 1 subnets
O IA 45.0.0.0 [110/192] via 12.0.0.1, 00:02:17, Serial2/1
15.0.0.0/24 is subnetted, 1 subnets
O 15.0.0.0 [110/128] via 12.0.0.1, 00:04:28, Serial2/1
以上就是网络协议中OSPF的NSSA区域原理与配置,谢谢阅读,希望能帮到大家,请继续关注,我们会努力分享更多优秀的文章。