NSSA区域是ospf协议中定义的一类特殊的区域,在RFC1587里有关于NSSA区域的详细描述。NSSA区域是stub区域概念的延伸,它保留了部分stub区域的特征,ABR不会将第五类LSA引入NSSA区域内部传播;同时NSSA区域允许少量外部路由通过本区域的ASBR通告进来,ASBR将会为这些外部路由生成第七类LSA在区域内传播。第七类LSA的传播区域仅限于NSSA区域内,ABR会把第七类LSA转化为第五类LSA发布到其他区域。
类似于完全stub区域,NSSA区域也可配置为完全NSSA区域。完全NSSA区域不允许携带区域间路由,ABR会自动生成一条第3类的缺省路由在完全NSSA区域内传播。
NSSA区域内存在两种缺省路由,由ASBR产生的第七类缺省路由和ABR产生的第三类缺省路由(完全NSSA区域)。
如果希望所有的外部路由只通过本区域的NSSA ASBR到达,可以在ASBR上配置产生一条第七类的缺省路由0.0.0.0,该缺省路由的传播区域是整个NSSA区域内部。
如果只希望到达自治系统外部的某些路由通过该区域的ASBR到达,其它外部路由通过其它区域出去的话,可以在NSSA ABR上配置产生第七类的缺省路由0.0.0.0通告给整个NSSA区域内的路由器,这样的话除了某少部分路由通过NSSA的ASBR到达,其它都可以通过NSSA ABR到达其它区域的ASBR出去。
在完全NSSA区域的ABR上将会产生一条第三类缺省路由0.0.0.0,通告给整个NSSA区域。
与NSSA区域ABR上缺省路由产生的方式不同的是,在完全NSSA区域ABR上的缺省路由是配置好区域之后自动产生类型3的缺省LSA,而在NSSA区域上ABR的缺省路由是自己可配置的。
普通区域的缺省路由需要在ASBR的ospf协议视图下进行配置,使用
default-route-advertise
命令,可以有always选项。
[AR46_9-ospf-1]default-route-advertise ?
always Always advertise information of the default route
cost Metric of imported default route
route-policy Specify a route-policy to generate default route
type Metric type for the imported default route
<cr>
NSSA区域的缺省路由需要在区域视图下面配置,使用
nssa default-route-advertise(ASBR)
或
nssa no-summary(ABR)
命令。如果在ABR上使用
nssa default-route-advertise no-summary,
将会同时产生一条第七类缺省路由LSA和一条第三类缺省路由LSA。对于NSSA中的其他路由器来说,将会优选第三类的缺省路由。
[AR46_9-ospf-1-area-0.0.0.1]nssa ?
default-route-advertise Generate default route to NSSA with type 7 LSA
no-import-route ABR does not import external routes into the NSSA
no-summary Disable sending the summary LSA to an NSSA
<cr>
在普通区域ASBR上配置产生的是第五类缺省路由,传播的区域是整个的ospf域;
在NSSA区域配置产生的是第七类或第三类缺省路由,传播的区域是整个NSSA区域。
普通区域:不论是在ABR或是ASBR上配置default-route-advertise命令时,都需要在本路由器上已存在一条其他路由协议产生或静态配置的缺省路由时,才会发布第五类缺省路由。如果使用always关键字,则无论ABR、ASBR上是否有缺省路由都会向整个ospf域发布缺省路由。
NSSA区域:如果在ASBR上使用nssa default-route-advertise命令,则同样需要在本路由器上已存在一条其他路由协议产生或静态配置的缺省路由时,才会发布第七类缺省路由;
如果在ABR上使用nssa default-route-advertise命令,则不论是否存在其他路由协议产生或静态配置的缺省路由,都会发布第七类缺省路由。
完全NSSA区域的ABR要发布第三类缺省路由,首先必须存在至少一个骨干区域的full邻居。满足存在骨干区域full邻居的条件之后,完全NSSA区域的ABR会自动产生一条第三类的缺省路由。
普通区域:如果ABR或ASBR自己发布了第五类缺省路由,则它就不会再接受别的路由器发布的第五类缺省路由。在区域的lsdb中,可以存在多个第五类缺省路由LSA。如果普通区域中的路由器自己没有发布第五类缺省路由,则它会从其他路由器发布的多个第五类缺省路由中选择一个最优的加入路由表。
NSSA区域:在NSSA区域中的普通路由器(非ABR或ASBR)如果同时收到第三类缺省路由和第七类缺省路由,将会优选第三类缺省路由加入路由表。
当ABR发布第三类缺省路由,同时ASBR发布第七类缺省路由时,ABR也会学习ASBR发布的缺省路由。这种情况下NSSA区域有可能出现路由环路。
另外如果NSSA区域中多台非ABR的ASBR同时配置nssa default-route-advertise,它们是否会发布第七类缺省路由则依赖于原来路由表中其他路由协议或静态配置的缺省路由的preference值。如果所有ASBR的路由表中缺省路由的preference值都大于150,这时只会有一个ASBR会发布第七类缺省路由,其它的ASBR都学习该ASBR发布的第七类缺省路由,区域的lsdb中只会有一条七类缺省路由的LSA;如果有一部分ASBR的路由表中preference值小于150,那么这些ASBR都会发布第七类缺省路由,并且自己的路由表中的缺省路由不会被其他的ASBR发布的第七类缺省路由更新(路由表优选preference值小的路由加入),其它那些路由表中原来缺省路由preference值大于150的ASBR都不会发布第七类缺省路由,它们只接受其它ASBR发布的缺省路由,并且将该路由加入路由表,此时区域的lsdb中可以有多条七类缺省路由的LSA。
由于NSSA区域的ABR在发布第三类缺省路由的同时也会学习其它ASBR发布的第七类缺省路由,因此如果配置不当将会在NSSA区域产生路由环路。
如图1的组网配置,在ABR上配置NSSA区域为完全NSSA区域,因此ABR会自动在NSSA区域内发布第三类缺省路由;在ASBR上配置一条静态路由指向外部,同时配置nssa default-route-advertise命令发布第七类缺省路由。
对于RTB来说,它会同时收到ABR发布的第三类缺省路由和ASBR发布的第七类缺省路由,因此它会选择第三类缺省路由加入它的路由表,所以RTB的路由表中缺省路由0.0.0.0的下一跳指向ABR;
对于ABR来说,由于ABR会接收ASBR发布的第七类缺省路由,所以它会把第七类的缺省路由加入自己的路由表中,ABR到ASBR的下一跳是RTB,因此ABR的路由表中缺省路由0.0.0.0的下一跳指向RTB;
这样在ABR和RTB之间就存在一条由缺省路由0.0.0.0产生的环路,导致ABR和RTB到外部区域的数据均不能正确转发。
组网图2是会在完全NSSA区域产生缺省路由环路的情况,NE40为ABR,其上配置了完全NSSA区域;AR28为NSSA区域的ASBR,配置了一条静态缺省路由,并在NSSA区域发布第七类缺省路由。根据前面的分析,将会在NE40和AR46_9之间产生缺省路由环路,下面是各台设备上的配置情况。
各台设备的Router ID如下:
NE80: 190.1.101.1
NE40: 190.1.101.2
AR46_9: 190.1.101.9
AR46_10: 190.1.101.10
AR28: 190.1.101.28
NE80在骨干区域0内,和NE40形成full邻居。
<NE80_1>dis c c ospf
#
ospf
#
area 0.0.0.0
network 101.1.0.0 0.0.0.3
#
NE40为ABR,它在骨干区域内有full邻居,并配置了完全NSSA区域
[NE40_2]dis c c ospf
#
ospf 1
area 0.0.0.1
network 101.1.11.0 0.0.0.3
nssa no-summary
#
area 0.0.0.0
network 101.1.0.0 0.0.0.3
#
NE40上的lsdb如下:
[NE40_2]dis ospf lsdb
OSPF Process 1 with Router ID 190.1.101.2
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric Where
Rtr 190.1.101.1 190.1.101.1 635 48 80000008 0 Clist
Rtr 190.1.101.2 190.1.101.2 152 48 80000016 0 SpfTree
…………………………………………………………
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric Where
Rtr 190.1.101.2 190.1.101.2 143 36 80000019 0 SpfTree
Rtr 190.1.101.9 190.1.101.9 140 48 80000036 0 Clist
…………………………………………………………
SNet 0.0.0.0 190.1.101.2 152 28 80000001 1 SumNet List
NSSA 0.0.0.0 190.1.101.29 149 36 80000003 1 Uninitialized
可以看到,在区域1的lsdb中,包含了如下两条lsa:
SNet 0.0.0.0 190.1.101.2 152 28 80000001 1 SumNet List
NSSA 0.0.0.0 190.1.101.29 149 36 80000003 1 Uninitialized
表明第三类缺省路由lsa和第七类缺省路由lsa都发布到了区域当中,查看路由表:
[NE40_2]dis ip ro
Routing Table: public net
Destination/Mask Protocol Pre Cost Nexthop Interface
0.0.0.0/0 O_NSSA 150 1 101.1.11.2 Ethernet6/1/5
101.1.0.0/30 DIRECT 0 0 101.1.0.2 Pos3/0/0
101.1.0.1/32 DIRECT 0 0 101.1.0.1 Pos3/0/0
101.1.0.2/32 DIRECT 0 0 127.0.0.1 InLoopBack0
………………………………………………
NE40的路由表中有一条第七类缺省路由,下一条指向AR46_9。
AR46_9的配置如下:
[AR46_9]dis c c ospf
#
ospf 1
area 0.0.0.1
network 101.1.11.0 0.0.0.255
network 101.1.12.0 0.0.0.255
nssa
#
AR46_9的lsdb如下:
[AR46_9]dis ospf lsdb
OSPF Process 1 with Router ID 190.1.101.9
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric Where
Rtr 190.1.101.2 190.1.101.2 203 36 80000019 0 SpfTree
Rtr 190.1.101.9 190.1.101.9 198 48 80000036 0 SpfTree
………………………………………………………………
SNet 0.0.0.0 190.1.101.2 211 28 80000001 1 Uninitialized
NSSA 0.0.0.0 190.1.101.29 207 36 80000003 1 Uninitialized
区域1中lsdb都是一致的,查看AR46_9的路由表:
[AR46_9]dis ip ro
Routing Table: public net
Destination/Mask Protocol Pre Cost Nexthop Interface
0.0.0.0/0 OSPF 10 2 101.1.11.1 Ethernet5/0/0
101.1.11.0/30 DIRECT 0 0 101.1.11.2 Ethernet5/0/0
101.1.11.2/32 DIRECT 0 0 127.0.0.1 InLoopBack0
………………………………………………………………
路由表中有一条NE40发布的第三类缺省路由,指向NE40。
查看AR46_10的路由表,
[AR46_10]dis ip ro
Routing Table: public net
Destination/Mask Protocol Pre Cost Nexthop Interface
0.0.0.0/0 OSPF 10 3 101.1.12.1 Atm4/0/0
101.1.11.0/30 OSPF 10 2 101.1.12.1 Atm4/0/0
101.1.12.0/30 DIRECT 0 0 101.1.12.2 Atm4/0/0
………………………………………………………………
AR46_10学到的也是NE40发布的第三类缺省路由。
在AR46_10上trace一条外部地址:
[AR46_10]trace 1.2.3.4
traceroute to 1.2.3.4(1.2.3.4) 30 hops max,40 bytes packet
1 101.1.12.1 10 ms 0 ms 0 ms
2 101.1.11.1 0 ms 0 ms 0 ms
3 101.1.11.2 0 ms 0 ms 0 ms
4 101.1.11.1 0 ms 0 ms 0 ms
5 101.1.11.2 0 ms 0 ms 0 ms
6 101.1.11.1 0 ms 0 ms 0 ms
7 101.1.11.2 10 ms 0 ms 0 ms
8 101.1.11.1 0 ms 0 ms 0 ms
9 101.1.11.2 0 ms 0 ms 0 ms
10 101.1.11.1 10 ms 0 ms 0 ms
11 101.1.11.2 0 ms 0 ms 0 ms
12 101.1.11.1 0 ms 10 ms 0 ms
13 101.1.11.2 0 ms 0 ms 0 ms
14 101.1.11.1 0 ms 0 ms 10 ms
15 101.1.11.2 0 ms 0 ms 0 ms
16 101.1.11.1 0 ms 0 ms 10 ms
17 101.1.11.2 0 ms 0 ms 0 ms
18 101.1.11.1 0 ms 0 ms 10 ms
19 101.1.11.2 0 ms 0 ms 0 ms
20 101.1.11.1 0 ms 0 ms 10 ms
21 101.1.11.2 0 ms 0 ms 0 ms
22 101.1.11.1 0 ms 0 ms 10 ms
23 101.1.11.2 0 ms 0 ms 0 ms
24 101.1.11.1 0 ms 10 ms 0 ms
25 101.1.11.2 0 ms 0 ms 0 ms
26 101.1.11.1 0 ms 10 ms 0 ms
27 101.1.11.2 0 ms 0 ms 0 ms
28 101.1.11.1 10 ms 0 ms 0 ms
29 101.1.11.2 0 ms 10 ms 0 ms
30 101.1.11.1 0 ms 0 ms 0 ms
可见在NE40和AR46_9之间产生了路由环路。
在AR28上的配置如下:
#
ip route-static 0.0.0.0 0.0.0.0 LoopBack 0 preference 5
#
[AR28_29]dis c c ospf
#
ospf 1
area 0.0.0.1
network 101.10.0.0 0.0.0.3
nssa default-route-advertise
#
AR28上的路由表
[AR28_29]dis ip ro
Routing Table: public net
Destination/Mask Protocol Pre Cost Nexthop Interface
0.0.0.0/0 STATIC 5 0 190.1.101.29 LoopBack0
101.1.11.0/30 OSPF 10 3 101.10.0.1 Ethernet2/0
101.1.12.0/30 OSPF 10 2 101.10.0.1 Ethernet2/0
………………………………………………………………
组网图4是在NSSA区域存在多个ASBR发布缺省路由的情况。NE40为ABR,AR46_9,AR46_10,AR28均为ASBR,ASBR上都配置了一条preference为200的静态缺省路由,并都配置default-route-advertise命令。
下面是主要设备上的配置情况:
图表 4 NSSA区域存在多个ASBR发布缺省路由的情况(相同preference值)
NE40的配置:
[NE40_2]dis c c ospf
#
ospf 1
area 0.0.0.1
network 101.1.11.0 0.0.0.255
nssa
#
area 0.0.0.0
network 101.1.0.0 0.0.0.255
#
路由表
[NE40_2]dis ip ro
Routing Table: public net
Destination/Mask Protocol Pre Cost Nexthop Interface
0.0.0.0/0 O_NSSA 150 1 101.1.11.2 Ethernet6/1/5
101.1.0.0/30 DIRECT 0 0 101.1.0.2 Pos3/0/0
101.1.0.1/32 DIRECT 0 0 101.1.0.1 Pos3/0/0
……………………………………………………
NE40上的lsdb:
[NE40_2]dis ospf lsdb
OSPF Process 1 with Router ID 190.1.101.2
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric Where
Rtr 190.1.101.1 190.1.101.1 33 48 80000009 0 Clist
Rtr 190.1.101.2 190.1.101.2 1320 48 80000044 0 SpfTree
……………………………………………………
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric Where
Rtr 190.1.101.2 190.1.101.2 130 36 80000013 0 SpfTree
Rtr 190.1.101.9 190.1.101.9 28 48 8000002d 0 SpfTree
……………………………………………………
SNet 101.1.0.0 190.1.101.2 1674 28 80000005 1 Inter List
NSSA 0.0.0.0 190.1.101.10 87 36 80000003 1 Uninitialized
可见区域1中只有AR46_10发布的一条七类缺省路由。
AR46_9上配置:
#
ip route-static 0.0.0.0 0.0.0.0 LoopBack 0 preference 200
#
[AR46_9]dis c c ospf
#
ospf 1
area 0.0.0.1
network 101.1.11.0 0.0.0.255
network 101.1.12.0 0.0.0.255
nssa default-route-advertise
#
路由表:
[AR46_9]dis ip ro
Routing Table: public net
Destination/Mask Protocol Pre Cost Nexthop Interface
0.0.0.0/0 O_NSSA 150 1 101.1.12.2 Atm2/0/0
101.1.0.0/30 OSPF 10 2 101.1.11.1 Ethernet5/0/0
101.1.11.0/30 DIRECT 0 0 101.1.11.2 Ethernet5/0/0
………………………………………………
lsdb:
[AR46_9]dis ospf lsdb
OSPF Process 1 with Router ID 190.1.101.9
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric Where
Rtr 190.1.101.2 190.1.101.2 236 36 80000013 0 SpfTree
Rtr 190.1.101.9 190.1.101.9 131 48 8000002d 0 SpfTree
………………………………………………
NSSA 0.0.0.0 190.1.101.10 191 36 80000003 1 Uninitialized
可见AR46_9并没有发布第七类缺省路由,在区域1的lsdb中只有AR46_10发布了七类缺省路由,AR46_9把AR46_10发布的缺省路由加入了自己的路由表。
AR46_10配置:
#
ip route-static 0.0.0.0 0.0.0.0 LoopBack 0 preference 200
#
[AR46_10]dis c c ospf
#
ospf 1
area 0.0.0.1
network 101.1.12.0 0.0.0.255
network 101.10.0.0 0.0.0.255
nssa default-route-advertise
#
路由表:
[AR46_10]dis ip ro
Routing Table: public net
Destination/Mask Protocol Pre Cost Nexthop Interface
0.0.0.0/0 STATIC 200 0 190.1.101.10 LoopBack0
101.1.0.0/30 OSPF 10 3 101.1.12.1 Atm4/0/0
101.1.11.0/30 OSPF 10 2 101.1.12.1 Atm4/0/0
………………………………………………
AR28配置:
#
ip route-static 0.0.0.0 0.0.0.0 LoopBack 0 preference 200
#
[AR28_29]dis c c ospf
#
ospf 1
area 0.0.0.1
network 101.10.0.0 0.0.0.255
nssa default-route-advertise
#
路由表:
[AR28_29]dis ip ro
Routing Table: public net
Destination/Mask Protocol Pre Cost Nexthop Interface
0.0.0.0/0 O_NSSA 150 1 101.10.0.1 Ethernet2/0
101.1.0.0/30 OSPF 10 4 101.10.0.1 Ethernet2/0
101.1.11.0/30 OSPF 10 3 101.10.0.1 Ethernet2/0
………………………………………………
这个试验说明如果所有ASBR的路由表中缺省路由的preference值都大于150,这时只会有一个ASBR会发布第七类缺省路由,其它的ASBR都学习该ASBR发布的第七类缺省路由,区域的lsdb中只会有一条七类缺省路由的LSA。
如果把AR28和AR46_10中静态配置的缺省路由preference值改为60,如图5所示,这时NSSA区域中的lsdb将会多条七类缺省路由的lsa。
AR46_9上的路由表:
[AR46_9]dis ip ro
Routing Table: public net
Destination/Mask Protocol Pre Cost Nexthop Interface
0.0.0.0/0 O_NSSA 150 1 101.1.12.2 Atm2/0/0
101.1.0.0/30 OSPF 10 2 101.1.11.1 Ethernet5/0/0
101.1.11.0/30 DIRECT 0 0 101.1.11.2 Ethernet5/0/0
……………………………………………………
图表 5 NSSA区域存在多个ASBR发布缺省路由的情况(不同preference值)
lsdb:
[AR46_9]dis ospf lsdb
OSPF Process 1 with Router ID 190.1.101.9
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric Where
Rtr 190.1.101.2 190.1.101.2 28 36 80000014 0 SpfTree
Rtr 190.1.101.9 190.1.101.9 538 48 8000002d 0 SpfTree
…………………………………………………………
NSSA 0.0.0.0 190.1.101.29 222 36 80000002 1 Uninitialized
NSSA 0.0.0.0 190.1.101.10 194 36 80000002 1 Uninitialized
AR_10上路由表:
[AR46_10]dis ip ro
Routing Table: public net
Destination/Mask Protocol Pre Cost Nexthop Interface
0.0.0.0/0 STATIC 60 0 190.1.101.10 LoopBack0
101.1.0.0/30 OSPF 10 3 101.1.12.1 Atm4/0/0
101.1.11.0/30 OSPF 10 2 101.1.12.1 Atm4/0/0
…………………………………………………………
AR28上路由表:
[AR28_29]dis ip ro
Routing Table: public net
Destination/Mask Protocol Pre Cost Nexthop Interface
0.0.0.0/0 STATIC 60 0 190.1.101.29 LoopBack0
101.1.0.0/30 OSPF 10 4 101.10.0.1 Ethernet2/0
101.1.11.0/30 OSPF 10 3 101.10.0.1 Ethernet2/0
……………………………………………………
AR46_10和AR28上配置的静态缺省路由的preference值小于150,所以它们都会发布第七类缺省路由;AR46_9上配置的静态缺省路由的preference值大于150,所以它不会发布第七类缺省路由。