网络协议之OSPF的NSSA区域原理与配置

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区域原理与配置,谢谢阅读,希望能帮到大家,请继续关注,我们会努力分享更多优秀的文章。

(0)

相关推荐

  • 网络协议之内部网关协议OSPF

    要想认识OSPF首先得区分OSPF于RIP的不同,有很多人都搞不清楚两者之间的关系与区别,下面我们先从定义来看看他们的区别。 OSPF(Open Shortest Path First开放式最短路径优 ...

  • Cisco网络协议:EIGRP向本区域下放默认路由的设置方法

    EIGRP的定义 EIGRP:Enhanced Interior Gateway Routing Protocol 即 增强内部网关路由线路协议。也翻译为 加强型内部网关路由协议。 EIGRP是Cis ...

  • 常用的网络协议小结

    常用的网络协议有哪些 ARP(Address Resolution Protocol)地址解析协议 它是用于映射计算机的物理地址和临时指定的网络地址。启动时它选择一个协议(网络层)地址,并检查这个地址 ...

  • 网络协议是什么?网络协议三要素是什么?

    本文向大家详细介绍网络协议是什么以及网络协议三要素是什么的基础知识,不懂的朋友可以通过本文了解学习! 网络协议是什么 网络协议的定义:为计算机网络中进行数据交换而建立的规则、标准或约定的集合。 一个网 ...

  • 如何定义网络协议?网络协议有哪些意义?

    本文将向大家详细介绍如何定义网络协议以及网络协议有哪些意义的基础知识,不明白的朋友可以过来学习一下 如何定义网络协议,它有哪些意义? 网络是一个相互联结的大群体,因此要想加入到这个群体中来,就不能随心 ...

  • linux网络协议是什么?该如何去理解?

    网络协议有很多,但大多是针对windows的,那么linux网络协议你是怎么样理解的呢?本文和大家一起探讨这个问题。 Linux网络协议栈基于分层的设计思想,总共分为四层,从下往上依次是:物理层,链路 ...

  • 常见的无线网络协议介绍 全面认识无线网络协议的作用

     虽然大家对于网络方面已经很熟悉了,但是大家对于无线网络协议又了解多少,知道无线网络协议都有哪些,他们的各自的作用是什么吗?本文小编就带着我们进行了解网络协议的特性,希望对大家在网络知识方面有所帮助。 ...

  • 网吧网络协议故障的排除方法

    有时候网络协议会发生各种问题,很多网管在面对问题时无从下手。本篇说说网吧网络协议故障的排除方法。 一、网吧网络协议故障的表现 协议故障通常表现为以下几种情况: 1.网吧电脑无法登录到服务器; 2.电脑 ...

  • 了解网络应用与网络协议

    网络应用(network application)是计算机网络之所以存在的理由.要是我们设想不出任何有用的网络应用,那就没有必要设计支持它们的网络协议了.不过,过去30年内已有不少人设计出大量精妙的网 ...