在一个大型网络中会出现很多问题,如路由条目过多、LSDB过大、OSPF和其他路由协议如何通信等问题,需要进一步的优化和解决。这次将介绍路由重分发和NSSA区域的概念和配置。
路由重分发及配置
上次介绍了LSA5,可以讲OSPF AS外的路由通告到OSPF系统内,这是如何实现的呢?
路由重分发
路由重分发通常在那些负责从一个自治系统学习路由,然后向另一个自治系统广播的路由器上进行配置。例如:一台路由器既运行OSPF又运行RIP,如果OSPF进程被配置为通告由RIP学到的路由到OSPF自治系统中,那么这种做法就可以叫“重分发RIP”。
一个单一的IP路由协议是管理网络中IP路由的首选方案。无论是从配置管理的角度还是容错管理的角度,每台路由器都被期望运行单种路由协议而不是多种路由协议。然而,显示网络的情况是存在多种路由协议的,并且这些网络要互相连通,那就必须至少有一台路由器运行多种路由协议来实现不同网络之间的通信。因此,路由器重分发的问题不可避免。
注意:一台路由器上运行多种路由协议并不意味着重分发就会自动进行,重分发必须被配置以后才能进行。
进行路由重分发时,不管是有类路由协议还是无类路由协议,都需要考虑每种路由协议的能力及特性。最常考虑的两个因素是度量值(Metrics)和管理距离(Administrative Distances)。
1. 度量值(Metrics)
度量值代表距离。它们用来在寻找路由时确定最优路由。每一种路由算法在产生路由表时都会为每一条通过网络的路径产生一个数值(度量值),最小的值表示最优路径。度量值的计算可以只考虑路径的一个特性,但更复杂的度量值是综合了路径的多个特性产生的。
一些常用的度量值有跳数、代价(Cost)、带宽、时延、负载、可靠性、最大传输单元(MTU)等。
OSPF路由协议的度量值为Cost,而RIP路由协议的度量值为跳数。
2. 管理距离(Administrative Distances)
管理距离是指一种路由协议的路由可信度。每一种路由协议按可靠性从高到低依次分配一个信任等级,这个信任等级就叫管理距离。对于两种不同的路由协议到一个目的地的路由信息,路由器首先根据管理距离决定相信哪一个协议。Ciso IOS使用的默认管理距离如下表所示:
路由源 | 默认级别 |
直连口 | 0 |
静态路由 | 1 |
OSPF | 110 |
RIP | 120 |
未知 | 255 |
3. OSPF重分发路由的路径类型
重分发到OSPF自治系统中路由的路径类型分为两种:类型1的外部路径和类型2的外部路径。如图所示:
类型1的外部路径(Type 1 External Path,E1):是指目的地在OSPF自治系统外部的路径,表示为E1。当一条外部路由重新分配到任何自治系统的时候,它都必须指定一个对那个自治系统中的路由选择协议有意义的度量值。在OSPF协议里,ASBR路由器的责任是给它们所要通告的外部路由指定一个代价值。对于类型1的外部路径来说。这个代价值是这条路由的外部代价加上到达ASBR路由器的路径代价之和。
类型2的外部路径(Type 2 External Path,E2):也是指目的地在OSPF自治系统外部的路径,但是在计算外部路由的度量时不再计入到达ASBR路由器的路径代价。E2的路由类型将提供给网络工程师一个选择,可以告诉OSPF协议只需要考虑外部路由在OSPF外部的代价,而忽略到达ASBR路由器的内部代价。OSPF外部路由默认条件下是类型2的外部路径,即E2路径。
路由重分发配置
1.配置路由重分发
在进行路由重分发之前,必须首先注意以下几个方面。
(1)决定在哪儿添加新的协议
(2)确定自治系统边界路由器(ASBR)
(3)决定哪个协议在核心,哪个在边界
(4)决定进行路由重分发的方向
可以使用以下命令重分发路由:
1
|
Router(config-router)
# redistribute protocol [metric metric-value] [metric-type type-value] [subnets]
|
其中,参数表示含义如下:
protocol:路由器要进行路由重分发的源路由协议。主要的值有bgp、eqp、isis、ospf [process-id]、static、connected和rip。其中,static表示重分发静态路由,connected表示重分发直连路由,ospf [process-id]表示重分发另一个OSPF进程的路由。
metric:是一个可选的参数,用来指明重分发的路由的度量值。
metric-type:指定重分发的路由类型。可取1或2两个值,1即E1,2即E2。默认值是2。
subnets:连其子网一起宣告。
下面的配置代码是在RIP和OSPF之间进行重分发命令的实例:
1
2
3
4
5
|
Router(config)
# router rip
Router(config-router)
# redistribute ospf 10 metric 10
Router(config)
# router ospf 1
Router(config-router)
# redistribute rip metric 200 subnets
|
在这个实例中,由OSPF派生的路由被重分发到RIP路由中,并且度量值跳数为10。由RIP派生的路由被重分发到OSPF之中,作为类型2的外部路由,并给定一个OSPF代价200(如果不指定metric,则默认的代价值是20)。
注意:在RIP协议中重分发OSPF协议时需要指定metric的值,否则在RIP中无法学到重分发的路由条目。
重分发静态路由时,只需要在OSPF协议中发布即可,配置如下:
1
2
|
Router(config)
# router ospf 1
Router(config-router)
# redistribute static metric 100 subnets metric-type 2
|
在这个实例中,静态路由被重分发到OSPF之中,作为类型我的外部路由,并指定一个OSPF代价100。而静态路由无法重分发OSPF路由,只能通过再配置静态路由实现到达OSPF区域。
如果要重分发默认路由的话,需要使用default-information originate命令,和redistribute命令一样,通过OSPF路由器使它成为一个ASBR,此命令也可以指定被重分发的缺省路由的度量值,也可以设定OSPF外部路由类型。下面为重分发默认路由的实例。
1
2
3
4
|
Router(config)
# router ospf 1
Router(config-router)
# network 192.168.0.0 0.0.0.255 area 0
Router(config-router)
# default-information originate metric 10 metric-type 1
Router(config-router)
# ip route 0.0.0.0 0.0.0.0 10.0.1.1
|
在这个实例中,默认路由被重分发到OSPF之中,作为类型1的外部路由,并给定一个OSPF代价10。
2.路由重分发实例
实验环境
公司有两家分公司,分别在上海、杭州,总公司在北京。为了提高访问的安全性和实时性,避免出现故障,Benet公司决定租用数字电路,将分公司和总公司的网络互通,如上图所示,其中R1为总公司路由器,R2、R5为上海分公司路由器,R3、R4为杭州分公司路由器。按照以下要求配置网络中的路由器,实现全网互通,并能访问Internet。
公司的要求如下:
网络便于维护,总公司到各分公司之间使用OSPF协议,上海、杭州分公司内部使用的路由协议不变。上海分公司使用RIP协议,而杭州分公司内部使用静态路由协议。
所有分公司访问公网都需要通过总公司R1路由器实现
Benet公司的网络规划如下:
R1和R2的互联地址:10.0.0.0/30,R1和R3的互联地址:10.0.0.4/30,R3和R4的互联地址:10.0.0.8/30,R2和R5的互联地址:192.168.100.0/24,R1和ISP的互联地址:172.16.31.0/30
路由器的Loopback0地址为R1:1.1.1.1/32,R2:2.2.2.2/32,R3:3.3.3.3/32,R4:4.4.4.4/32,并使用此地址为OSPF协议RouterID。
具体步骤:
1. 配置各路由器的接口地址。(略)
2. 配置各路由器的OSPF协议、RIP协议、静态路由
R1的配置如下:
1
2
3
4
5
6
|
R1(config)
# router ospf 1
R1(config-router)
# network 10.0.0.0 0.0.0.3 area 0
R1(config-router)
# network 10.0.0.4 0.0.0.3 area 0
R1(config-router)
# network 192.168.1.0 0.0.0.255
R1(config)
# ip route 0.0.0.0 0.0.0.0 172.16.31.2
|
R2的配置如下:
1
2
3
4
5
6
7
|
R2(config)
# router ospf 1
R2(config-router)
# network 10.0.0.0 0.0.0.3 area 0
R2(config)
# router rip
R2(config-router)
# version 2
R2(config-router)
# no auto-summary
R2(config-router)
# network 192.168.100.0
|
R3的配置如下:
1
2
3
4
|
R3(config)
# ip route 192.168.3.0 255.255.255.0 10.0.0.10
R3(config)
# router ospf 1
R3(config-router)
# network 10.0.0.4 0.0.0.3 area 0
|
R4的配置如下:
1
|
R4(config)
# ip route 0.0.0.0 0.0.0.0 10.0.0.9
|
R5的配置如下:
1
2
3
4
5
|
R5(config)
# router rip
R5(config-router)
# version 2
R5(config-router)
# no auto-summary
R5(config-router)
# network 192.168.100.0
R5(config-router)
# network 192.168.2.0
|
ISP的配置如下:
1
|
ISP(config)
# ip route 0.0.0.0 0.0.0.0 172.16.31.1
|
3. 配置路由重分发
R1路由器重分发默认路由,配置如下:
1
2
|
R1(config)
# router ospf 1
R1(config-router)
# default-information originate
|
R2路由器重分发,配置如下:
1
2
3
4
5
|
R2(config)
# router ospf 1
R2(config-router)
# redistribute static subnets
R2(config)
# router rip
R2(config-router)
# redistribute ospf 1 metric 10
|
R3路由器重分发静态路由和直连路由,配置如下:
1
2
3
|
R3(config)
# router ospf 1
R3(config-router)
# redistribute static subnets
R3(config-router)
# redistribute connected subnets
|
4. 验证网络通信是否正常
经ping命令验证,网络通信正常。查看R2和R5的路由表如下:
从R2的路由表可以看出,已经学到了重分发的路由条目
在R5中,也学到了重分发的路由条目
NSSA区域
由于OSPF网路中末梢区域不允许存在ASBR,所以在一台属于末梢区域的路由器上配置重分发路由到OSPF区域中是无法实现的。需要将纯末梢区域修改为标准区域,配置如下
1
|
Router(config-router)
# no area 1 stub
|
注意:在重分发路由时,如果路由器所属区域类型是末梢区域时,会有相应的提示出现,请注意观察,以免出现相似的问题。提示如下:
Warning:Router is currently an ASBR while having only one area which is a stub area
当此区域路由器性能较差时,如果改为标准区域可能会导致路由器的内存、CPU等资源占用率较高,从而导致转发缓慢或出现故障。而配置成NSSA将解决这种问题。
非纯末梢区域(NSSA)概述
非纯末梢区域NSSA允许外部路由通告到OSPF自治系统内部,而同时保留自治系统其余部分的末梢区域特征。为了做到这一点,在NSSA区域内的ASBR将始发类型7的LSA来通告那些外部的目的网络。这些NSSA区域外部的LSA将在整个NSSA区域中进行泛洪,但是会在ABR路由器的地方被阻塞。
LSA 7(NNSA External LSA,NSSA外部LSA):是指在非纯末梢区域(Not-So-Stubby Area,NSSA)内始发于ASBR路由器的LSA通告。可以通告命令show ip ospf database nssa-external来显示NSSA 外部LSA通告的信息。
NNSA外部LSA通告几乎和自治系统外部LSA通告时相同的。只是不像自治系统外部LSA通告那样在整个OSPF自治系统内进行泛洪,NSSA外部LSA通告仅仅在始发这个NSSA外部LSA通告的非纯末梢区域内部进行泛洪。NNSA区域中的ABR路由器可以将类型7的LSA装换成为类型5的LSA,并且将此LSA泛洪到其他的区域中去。
同样,NSSA重分发到OSPF中的路由也是两种类型,在NNSA区域的路由表中显示为N1和N2,当其经过ABR装换成为LSA5后,N1转换成为E1,N2转换成为E2。
配置NSSA区域
配置命令如下:
1
|
Router(config-router)
# area area-id nssa [no-summary]
|
其中,area-id:将要配置为NSSA的区域号;no-summary:可选参数,在ABR上配置NSSA时如果使用该选项,除了通告一条指向ABR的默认路由的类型3的LSA外,其他的类型3的LSA和类型4的LSA在NSSA区域内都将被阻止。也可以使用命令area area-id nssa default-information-originate。
OSPF协议总结
1. LSA的类型
2. OSPF区域类型
OSPF区域分为骨干区域、标准区域(非骨干区域、非末梢区域)、末梢区域、完全末梢区域、NSSA。每一种区域内允许泛洪的LSA类型如下表所示:
* 除了ABR路由器使用一个类型3的LSA通告默认路由。
3. OSPF路由类型的优先级
OSPF定义了四种路径类型,分别是区域内路径、区域外路径、类型1的外部路径和类型2的外部路径。OSPF路径类型的优先级如下所示,1表示最高优先级,而4表示最低优先级。
区域内路径: | 优先级1 |
区域间路径: | 优先级2 |
E1外部路径: | 优先级3 |
E2外部路径: | 优先级4 |
路由表添加路由条目时,如果目的网段相同,则会选择优先级高的路由条目添加到路由表中。