纵观路由技术的学习与实践,
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
(
文章来源:亚威讲师:柳杨,转载请注明出自
亚威网站
http://www.ccxx.net )