HCIE Datacom-01.2 IGP高级特性-OSPF-路由控制

本文最后更新于 2024年3月26日 下午

简介

OSPF的路由控制包括:

  • 调整OSPF的接口开销
  • 设置等价路由
  • 引入外部路由
  • 路由聚合
  • 缺省路由通告
  • Filter-Policy
  • 对发送的LSA进行过滤
  • 对ABR Type3 LSA进行过滤
  • 设置LSDB中External LSA的最大数量
  • 案例

本文章参考华为认证系列PPT

等价路由

  • 当路由表中存在到达同一目的地址,且同一路由协议发现的多条路由时,若这几条路由的开销值(Cost)也相同,那么这些路由就是等价路由,可以实现负载分担。(OSPF选路基本靠Cost值)

  • 设备将按照负载分担的方式从多条等价路由发送报文到同一目的地址。

    设置进行负载分担的等价路由的最大数量:

1
2
[Huawei-ospf-1] maximum load-balancing number

PS:默认为1,不进行等价路由。

命令说明:

[Huawei-ospf-1] maximum load-balancing number

number:等价路由的最大数量。设备型号不同,取值范围不同,具体请参考相应设备的产品文档。

等价路由配置举例

通过配置,要求R1可以通过R1-R3路径访问R3的环回口地址,也可以通过R1-R2-R3路径访问R3的环回口地址。

1、各设备配置接口地址及部署OSPF。(略)

2、R1配置路由负载分担。

1
2
3
[R1] ospf
[R1-ospf-1] maximum load-balancing 3

3、结果验证。

1
2
3
4
5
6
7
8
[R1]display ip routing-table 
Route Flags: R - relay, D - download to fib
-------------------------------------------------------------------------------------------

Destination/Mask Proto Pre Cost Flags NextHop Interface
10.1.3.3/32 OSPF 10 10 D 10.1.13.3 GigabitEthernet0/0/0
OSPF 10 10 D 10.1.12.2 GigabitEthernet0/0/1

缺省路由

  • OSPF实际组网应用中,区域边界和自治系统边界通常都是由多个路由器组成的多出口冗余备份或者负载分担。此时,为了减少路由表的容量,可以配置缺省路由,保证网络的高可用性。
  • OSPF缺省路由通常应用于下面两种情况:

由区域边界路由器(ABR)发布Type3 LSA,用来指导特殊区域内路由器进行区域之间报文的转发。

由自治系统边界路由器(ASBR)发布Type5 LSA或Type7 LSA,用来指导OSPF路由域内路由器进行域外报文的转发。

  • 缺省路由是指目的地址和掩码都是0的路由。当设备无精确匹配的路由时,就可以通过缺省路由进行报文转发。由于OSPF路由的分级管理,Type3缺省路由的优先级高于Type5或Type7路由。
  • 普通区域:

缺省情况下,普通OSPF区域内的OSPF路由器是不会产生缺省路由的,即使它有缺省路由。当该路由器需要向OSPF发布缺省路由时,必须手工执行default-route-advertise命令,配置完成后,路由器会产生一个缺省ASE LSA(Type5 LSA),并且通告到整个OSPF自治系统中。

  • Stub区域:

Stub区域不允许自治系统外部的路由(Type5 LSA)在区域内传播。区域内的路由器必须通过ABR学到自治系统外部的路由。

Stub区域的ABR会自动产生一条缺省的Type3 LSA通告到整个Stub区域。ABR通过该缺省路由,将到达AS外部的流量吸引到自己这里,然后通过ABR转发出去。

  • Totally Stub区域:

Totally Stub区域既不允许自治系统外部的路由(Type5 LSA)在区域内传播,也不允许区域间路由(Type3 LSA)在区域内传播。区域内的路由器必须通过ABR学到自治系统外部和其他区域的路由。

Totally Stub区域的ABR会自动产生一条缺省的Type3 LSA通告到整个Stub区域。ABR通过该缺省路由,将到达AS外部和其它区域的流量吸引到自己这里,然后通过ABR转发出去。

  • NSSA区域:

如果希望到达自治系统外部的路由通过本区域(NSSA区域)的ASBR到达,而其它外部路由通过其它区域出去。此时,ABR会产生一条Type7 LSA的缺省路由,通告到整个NSSA区域内。这样,除了某少部分路由通过NSSA的ASBR到达,其它路由都可以通过NSSA的ABR到达其它区域的ASBR出去。这种情况下,在ABR上无论路由表中是否存在缺省路由0.0.0.0,都会产生Type7 LSA的缺省路由。

如果希望所有的外部路由只通过本区域(NSSA区域)的ASBR到达,则必须在ASBR上手动执行nssa [default-route-advertise]命令进行配置,使ASBR产生一条缺省的NSSA LSA(Type7 LSA),通告到整个NSSA区域内。这样,所有的外部路由就只能通过本区域NSSA的ASBR到达。这种情况下,在ASBR上只有当路由表中存在缺省路由0.0.0.0时,才会产生Type7 LSA的缺省路由。

注意:因为缺省路由只是在本NSSA区域内泛洪,并没有泛洪到整个OSPF域中,所以本NSSA区域内的路由器在找不到路由之后可以从该NSSA的ASBR出去,但不能实现其他OSPF域的路由从这个出口出去。Type7 LSA缺省路由不会在ABR上转换成Type5 LSA缺省路由泛洪到整个OSPF域。

  • Totally NSSA区域:

Totally NSSA的ABR会自动向该区域下发使用Type3 LSA描述的缺省路由,而Totally NSSA的ASBR则不会自动下发缺省路由。因此,在该场景下,对于区域内的路由器而言,可以通过ASBR引入的外部路由到达相应的外部网段、通过ABR下发的缺省路由到达其他网段。

如果希望Totally NSSA内的路由器选择ASBR作为默认出口,而不是ABR,那么需要让ASBR也下发缺省路由,此时必须在ASBR上手工执行配置。

将缺省路由通告到OSPF路由区域

1、将缺省路由通告到普通OSPF区域。

1
2
[Huawei-ospf-1] default-route-advertise [ [ always | permit-calculate-other ] | cost cost | type type | route-policy route-policy-name [ match-any ] ]

缺省情况下,在普通OSPF区域内的OSPF设备不产生缺省路由。

2、指定Type3 Summary-LSA的缺省开销值。

1
2
[Huawei-ospf-1] default-route-advertise summary cost cost

注意事项:

  • import-route (OSPF)命令不能引入外部路由的缺省路由。当需要引入其他协议产生的缺省路由时,必须在ASBR上配置default-route-advertise命令,发布缺省路由到整个普通OSPF区域。
  • OSPF路由域中在通告缺省路由前,会比较缺省路由的优先级。如果在某OSPF设备上同时配置了静态缺省路由,要使OSPF通告的缺省路由加入到当前的路由表中,则必须保证所配置的静态缺省路由的优先级比OSPF通告的缺省路由的优先级低。

命令说明:

1
2
[Huawei-ospf-1] default-route-advertise [ [ always | permit-calculate-other ] | cost cost | type type | route-policy route-policy-name [ match-any ] ]

  • always:无论本机是否存在激活的非本OSPF缺省路由,都会产生并发布一个描述缺省路由的LSA。

如果配置了always参数,设备不再计算来自其他设备的缺省路由。

如果没有配置always参数,本机路由表中必须有激活的非本OSPF缺省路由时才生成缺省路由的LSA。

  • permit-calculate-other:本机必须存在激活的非本OSPF缺省路由时才会产生并发布一个缺省路由的LSA,且设备仍然计算来自于其他设备的缺省路由。
  • type type:指定外部路由的类型。整数形式,取值为1或2,缺省值是2。

值为1:第一类外部路由

值为2:第二类外部路由

  • route-policy route-policy-name:通过路由策略,实现在路由表中有匹配的非OSPF产生的缺省路由表项时,按路由策略所配置的参数发布缺省路由。字符串形式,区分大小写,不支持空格,长度范围是1~40。当输入的字符串两端使用双引号时,可在字符串中输入空格。
  • match-any:通过路由策略,实现在路由表中有匹配的路由表项时,按路由策略所配置的参数发布缺省路由。
1
2
[Huawei-ospf-1] default-route-advertise summary cost cost

  • summary:发布指定缺省路由的Type3 LSA。在选用该参数时,必须首先使能VPN,否则路由不能发布。
  • cost cost:指定该LSA的开销值。整数形式,取值范围是0~16777214。缺省值是1。

其他说明:

  • always参数:

ASBR已经有缺省路由,执行default-route-advertise命令,将在整个OSPF区域中通告缺省路由0.0.0.0。

ASBR没有缺省路由,执行default-route-advertise命令时按照以下需求选择是否配置always参数。

如果配置always参数,无论ASBR是否有缺省路由都将在整个OSPF区域中通告缺省路由0.0.0.0,并且不再计算来自其他设备的缺省路由。

如果没有配置always参数,ASBR的路由表中必须有激活的非OSPF(BGP除外)缺省路由时才生成缺省路由的LSA。

  • match-any参数:

使用带match-any参数的路由策略时,如果有多条路由通过策略,选取最优者来生成缺省LSA。路由通过策略时,选取最优者的原则按照优先级从高到低的顺序如下:

路由设置了type的优先于未设置的,如果都设置了type,值越小越优先。

路由设置了cost的优先于未设置的,如果都设置了cost,值越小越优先。

路由设置了tag的优先于未设置的, 如果都设置了tag,值越小越优先。

路由聚合

背景信息

当OSPF网络规模较大时,配置路由聚合,可以有效减少路由表中的条目,减小对系统资源的占用,不影响系统的性能。此外,如果被聚合的IP地址范围内的某条链路频繁Up和Down,该变化并不会通告到被聚合的IP地址范围外的设备。因此,可以避免网络中的路由震荡,在一定程度上提高了网络的稳定性。

ABR向其它区域发送路由信息时,以网段为单位生成Type3 LSA。当区域中存在连续的网段(具有相同前缀的路由信息)时,可以通过abr-summary命令将这些网段聚合成一个网段,ABR向其他区域只发送一条聚合后的LSA,所有指定的聚合网段范围的LSA将不会再被单独发送。从而减小路由表的规模,提高交换机的性能。

请在运行OSPF协议的交换机上进行以下配置。

  • 配置ABR路由聚合
1
2
3
4
5
6
7
1、执行命令system-view,进入系统视图。
2、执行命令ospf [ process-id ],进入OSPF进程视图。
3、执行命令area area-id,进入OSPF区域视图。
4、执行命令
abr-summary ip-address mask [ [ cost { cost | inherit-minimum } | [ advertise [ generate-null0-route ] | not-advertise | generate-null0-route [ advertise ] ] ] * ]
配置OSPF的ABR路由聚合。

  • 配置ASBR路由聚合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
执行命令system-view,进入系统视图。

执行命令ospf [ process-id ],进入OSPF进程视图。

(可选)执行命令
asbr-summary type nssa-trans-type-reference [ cost nssa-trans-cost-reference ],
配置OSPF设置聚合路由类型(Type)和开销值(Cost)时考虑Type7转换到Type5的LSA。

缺省情况下,OSPF在设置聚合路由类型和开销时不考虑Type7转换到Type5的LSA。

执行命令
asbr-summary ip-address mask [ not-advertise | tag tag | cost cost | distribute-delay interval ] *,
配置OSPF的ASBR路由聚合。

说明:

在配置路由聚合后,本地OSPF设备的路由表保持不变。但是其他OSPF设备的路由表中将只有一条聚合路由,没有具体路由。直到网络中被聚合的路由都出现故障而消失时,该聚合路由才会消失。

对发送的LSA进行过滤

  • 当两台路由器之间存在多条链路时,可以在某些链路上通过对发送的LSA进行过滤,减少不必要的重传,节省带宽资源。
  • 通过对OSPF接口出方向的LSA进行过滤可以不向邻居发送无用的LSA,从而减少邻居LSDB的大小,提高网络收敛速度。

注意:OSPF是链路状态动态路由协议,互相不直接发送路由,无法通过路由策略等工具进行过滤发送路由。

1
2
配置对OSPF接口出方向的LSA进行过滤:

1
2
[Huawei-GigabitEthernet0/0/1] ospf filter-lsa-out { all | { summary [ acl { acl-number | acl-name } ] | ase [ acl { acl-number | acl-name } ] | nssa [ acl { acl-number | acl-name } ] } }

对于已经发送的LSA,要到3600秒才能达到老化时间。

命令

1
2
[Huawei-GigabitEthernet0/0/1] ospf filter-lsa-out { all | { summary [ acl { acl-number | acl-name } ] | ase [ acl { acl-number | acl-name } ] | nssa [ acl { acl-number | acl-name } ] } }

all:对除Grace LSA外的所有LSA进行过滤。

summary:对Network Summary LSA(Type3 LSA)进行过滤。

ase:对AS External LSA(Type5 LSA)进行过滤。

nssa:对NSSA LSA(Type7 LSA)进行过滤。

acl acl-number:指定基本访问控制列表编号。整数形式,取值范围是2000~2999。

acl acl-name:指定访问控制列表名称。字符串形式,不支持空格,区分大小写,长度范围是1~32,以英文字母a~z或A~Z开始。

对ABR Type3 LSA进行过滤

  • 对区域内出、入方向ABR Type3 LSA(Summary LSA)设置过滤条件,只有通过过滤的LSA才能被发布和接收。
  • 通过对区域内的LSA进行过滤可以不向邻居发送无用的LSA,从而减少LSDB的大小,提高网络收敛速度。

配置对区域内出方向的Type3 LSA进行过滤:

1
2
[Huawei-ospf-1-area-0.0.0.1] filter { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name } export

配置对区域内入方向的Type3 LSA进行过滤:

1
2
[Huawei-ospf-1-area-0.0.0.1] filter { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name } import

命令

[Huawei-ospf-1-area-0.0.0.1] filter { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name } export

acl-number:指定基本访问控制列表号。整数形式,取值范围是2000~2999。

使能Mesh-Group特性

背景信息

当交换机和邻居存在并行链路时,使能Mesh-Group特性,可以减轻链路的压力。

Mesh-Group时以邻居的Router-id唯一标识一个Group。是几条并行的LSA,合并为一个组,只泛洪一次。只有同时满足以下三个条件的接口才能属于同一个Mesh-Group:

  • 属于相同区域和OSPF进程
  • 接口状态大于Exchange
  • 只连着同一个邻居

请在运行OSPF协议的交换机上进行以下配置。

操作步骤

  1. 执行命令system-view,进入系统视图。

  2. 执行命令ospf [ 

    process-id

     ],进入OSPF进程视图。

  3. 执行命令mesh-group enable,使能Mesh-Group特性。

OSPF Database Overflow概述(数据库溢出)

  • OSPF要求同一个区域中的路由器保存相同的LSDB。随着网络上路由数量不断增加,一些路由器由于系统资源有限,不能再承载如此多的路由信息,这种状态就被称为数据库超限(OSPF Database Overflow)。
  • 对于路由信息不断增加导致路由器系统资源耗尽而失效的问题,可以通过配置Stub或NSSA区域来解决,但Stub或NSSA区域的方案不能解决动态路由增长导致的数据库超限问题。为了解决数据库超限引发的问题,通过设置LSDB中External LSA的最大条目数,可以动态限制数据库的规模。(特殊区域只会限制生成路由条目,但不会限制接收LSA)
1
2
设置OSPF的LSDB中External LSA的最大条目数:

1
2
[Huawei-ospf-1] lsdb-overflow-limit number

当OSPF引入的外部路由(Type5 LSA和Type7 LSA)数量超过允许的范围,会导致超出的外部路由无法得到正常处理,丢失引入的路由。为了解决上述问题,通过配置OSPF的LSDB中External LSA的最大条目数,保证引入的外部路由在一个合理的范围内,调整和优化OSPF网络。

命令:[Huawei-ospf-1] lsdb-overflow-limit number

number:指定LSDB中External LSA的最大条目数。整数形式,取值范围是1~1000000。

避免OSPF Database Overflow工作原理

  • 为了避免数据库超限,可以设置路由器上非缺省外部路由数量的上限。
  • OSPF网络中所有路由器都配置相同的上限值,只要路由器上外部路由的数量达到该上限,路由器就进入Overflow状态,并同时启动Overflow状态定时器(默认超时时间为5秒),路由器在定时器超过5秒后自动退出Overflow状态。

路由控制配置案例

OSPF路由控制配置举例(过滤LSA3,发送默认路由)

  • 如图所示,为减少R3的LSA数量,同时确保R3可以和其它区域内的路由器正常通行,要求:

R2不向Area1中注入Type3 LSA。

R2发布缺省路由。

1、各设备配置接口地址及部署OSPF。(略)

2、配置R2过滤Type3 LSA。

1
2
3
4
5
6
7
[R2] acl 2000
[R2-acl-basic-2000] rule deny
[R2-acl-basic-2000] quit
[R2] ospf
[R2-ospf-1] area 1
[R2-ospf-1-area-0.0.0.1] filter 2000 import

PS:本质上和配置Stub区域没啥区别。

验证配置

1、查看R3的LSDB。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[R3]display ospf lsdb
OSPF Process 1 with Router ID 10.1.23.3
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.1.23.3 10.1.23.3 731 48 80000004 1
Router 10.1.12.2 10.1.12.2 406 36 80000008 1
Network 10.1.23.2 10.1.12.2 730 32 80000002 0

AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 0.0.0.0 10.1.12.2 406 36 80000001 1

可以看到Area1内设备R3的LSDB中没有Type3 LSA,但是有Type5缺省LSA。
R3可以通过缺省路由访问其他区域设备。

2、查看R3的路由表。

1
2
3
4
5
6
7
8
9
[R3]dis ip routing-table 
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 9 Routes : 9
Destination/Mask Proto Pre Cost Flags NextHop Interface
0.0.0.0/0 O_ASE 150 1 D 10.1.23.2 GigabitEthernet0/0/1
……

OSPF路由控制案例分析(通过Cost值控制路由)

  • 网络部署:

某企业网络内有财务部和市场部两张网络。

该企业网络通过OSPF实现内部网络的互联互通,其中骨干网络部署在Area0,财务部网络客户端部署在Area1,市场部网络客户端部署在Area2。

边界设备通过静态路由访问各部门服务器,并在OSPF进程内引入该静态路由。

  • **财务部数据转发需求: **

只要边界-1路由器及其上联链路正常运行,财务部数据流就只会通过边界-1路由器进行数据转发。

只要核心-1路由器及其上联链路正常运行,财务部数据流就只会通过核心-1路由器进行数据转发。

  • 市场部数据转发需求:(忽略)

只要边界-2路由器及其上联链路正常运行,市场部数据流就只会通过边界-2路由器进行数据转发。

只要核心-2路由器及其上联链路正常运行,市场部数据流就只会通过核心-2路由器进行数据转发。

控制流量出口(外部路由)

  • 实现方式:

在R1(边界-1)和R2(边界-2)的OSPF进程内引入去往财务部服务器的静态路由,实现出口备份(可以通过路由策略实现);

设置引入外部路由类型为Type2;

在R1上设置外部路由开销为100,在R2上设置外部路由开销为200。

  • 配置结果:

网络中存在2条同一网段不同开销的Type2外部路由时,网络设备会优选开销较小的路由。此时,网络中各设备会优选R1作为出口。

控制流量出口时,不考虑到达各ASBR的内部路径开销。

Type2 外部路由在内部传递时,不累加Cost值

控制内部路径:调整汇聚到核心开销

  • 若S1与R1间链路故障,由于S1运行正常,则要求S3优选路径1,次选路径2。
  • 实现方式:

路径1-Cost < 路径2-Cost,即:

1
2
[Cost(S3-S1) + Cost(S1-S2) + Cost(S2-R1)] < [Cost(S3-S2) + Cost(S2-R1)]

通过调整汇聚到核心设备间的路径开销可以实现路径1。

控制内部路径:调整核心到边界开销

  • 若S3与S1间链路故障,由于S1运行正常,则要求S3优选路径1,次选路径2。
  • 实现方式:

路径1-Cost < 路径2-Cost,即:

1
2
[Cost(S3-S2) + Cost(S2-S1) + Cost(S1-R1)] < [Cost(S3-S2) + Cost(S2-R1)]

通过调整核心到边界设备间的路径开销可以实现优选路径1。

OSPF路由控制案例主要配置 (引入外部路由-R1)

R1部署路由策略应用开销值100:

1
2
3
4
5
6
7
8
9
10
11
[R1] acl 2000
[R1-acl-basic-2000] rule permit source 192.168.10.0 0.0.0.255
[R1-acl-basic-2000] quit

[R1] route-policy static2ospf permit node 10
[R1-route-policy] if-match acl 2000
[R1-route-policy] apply cost 100
[R1-route-policy] quit
[R1] route-policy static2ospf permit node 20
[R1-route-policy] quit

R1在OSPF进程中引入静态路由:

1
2
3
[R1] ospf
[R1-ospf-1] import-route static route-policy static2ospf type 2

OSPF路由控制案例主要配置 (引入外部路由-R2)

  • R2部署路由策略应用开销值200:
1
2
3
4
5
6
7
8
9
10
11
[R2] acl 2000
[R2-acl-basic-2000] rule permit source 192.168.10.0 0.0.0.255
[R2-acl-basic-2000] quit

[R2] route-policy static2ospf permit node 10
[R2-route-policy] if-match acl 2000
[R2-route-policy] apply cost 200
[R2-route-policy] quit
[R2] route-policy static2ospf permit node 20
[R2-route-policy] quit

R2在OSPF进程中引入静态路由:

1
2
3
[R2] ospf
[R2-ospf-1] import-route static route-policy static2ospf type 2

OSPF路由控制案例主要配置 (内部路由Cost)

设置接口OSPF开销(以R1的GE0/0/1口为例):

1
2
3
[R1] interface GigabitEthernet 0/0/1
[R1-GigabitEthernet0/0/1] ospf cost 50

参考

控制OSPF的路由信息

什么是OSPF?


HCIE Datacom-01.2 IGP高级特性-OSPF-路由控制
https://songxwn.com/ospf-route-c/
作者
Song
发布于
2022年12月31日
更新于
2024年3月26日
许可协议