泰涨知识 | 路由协议系列之九:OSPF的路由控制

2023-09-03 01:00:27

路由控制的能力是我们在学习一个路由协议的重点,通过协议本身的的控制方法,我们可以实现我们理想的网络结构和合理的流量路径。今天我们就来了解一下在OSPF中的路由控制的方式。


路由控制的能力是是OSPF的路由控制包括:调整OSPF的接口开销、设置等价路由、引入外部路由、路由聚合、缺省路由通告、Filter-Policy、对发送的LSA进行过滤、对ABR Type3 LSA进行过滤、设置LSDB中External LSA的最大数量。


一、调整OSPF的接口开销


1、概述


OSPF使用cost(开销)作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口cost值,缺省的接口cost = "100 Mbit/s " /"接口带宽" 。其中100 "Mbit/s"为OSPF指定的缺省参考值,该值是可修改的(在实际应用中,推荐根据接口带宽大小手动配置cost值,而不是修改OSPF参考带宽)。


OSPF以“累计cost”为开销值,也就是流量从源网络到目的网络所经过所有路由器的出接口的cost总和。修改cost值可能会改变OSPF的路径。


2、相关命令


①(接口视图)配置OSPF接口开销

[Huawei-GE1/0/1] ospf cost cost

ospf cost命令用来配置接口上运行OSPF协议所需的开销。缺省情况下,OSPF会根据该接口的带宽自动计算其开销值cost取值范围是1~65535。


②(OSPF视图)设置OSPF带宽参考值

[Huawei-ospf-1] bandwidth-reference value

bandwidth-reference命令用来设置通过公式计算接口开销所依据的带宽参考值。value取值范围是1~2147483648,单位是Mbit/s,缺省值是100Mbit/s。


二、设置等价路由


1、概念


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


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


OSPF选路时优先比较路由来源(区域内>区域间>第一类外部路由>第二类外部路由),来源相同时再比较cost,cost相同形成等价路由。


2、相关命令


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

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

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


3、举例


[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


三、引入外部路由


1、概念


在一个大规模网络中,可能存在多种不同的路由协议,OSPF支持将AS外部路由引入本AS,使得AS内的路由器能够获知到达AS外部的路由。


ASBR将外部路由引入OSPF后,使用5类LSA描述它们,与ASBR同属一个区域的路由器能够根据5类LSA以及区域内的1类、2类LSA完成外部路由计算;与ASBR不在同一个区域的路由器还需借助4类LSA才能完成外部路由计算。


OSPF将外部路由引入OSPF后,可以设置路由的度量值类型:Metric-Type-1或Metric-Type-2,不同度量值类型的外部路由,其开销的计算方式不同,其路由的优先级也不相同,Metric-Type-1路由的优先级高于Metric-Type-2路由。


2、相关命令


在OSPF进程下,通过如下命令引入外部路由(支持引入BGP、ISIS、OSPF、直连以及静态路由)。


import-route { limit limit-number | { bgp [ permit-ibgp ] | direct | unr | rip [ process-id-rip ] | static | isis [ process-id-isis ] | ospf [ process-id-ospf ] } [ cost cost | type type | tag tag | route-policy route-policy-name ] * }


四、路由聚合


1、概念


路由聚合又被称为路由汇总,即是将一组前缀相同的路由汇聚成一条路由,从而达到减小路由表规模以及优化设备资源利用率的目的,我们把汇聚之前的这组路由称为精细路由或明细路由,把汇聚之后的这条路由称为汇总路由或聚合路由。


OSPF路由汇总的类型:

①在ABR执行路由聚合:对区域间的路由执行路由汇总。

②在ASBR执行路由聚合:对引入的外部路由执行路由汇总。


2、相关命令

①在ABR执行路由聚合:

[HUAWEI-ospf-100-area-0.0.0.1] abr-summary ip-address mask [ [ advertise | cost { cost | inherit-minimum } | generate-null0-route | hold-max-cost interval ] * | [ not-advertise | cost { cost | inherit-minimum | hold-max-cost interval } ] * | [ generate-null0-route | advertise | cost { cost | inherit-minimum } | hold-max-cost interval ] * ]


②在ASBR执行路由聚合:

[HUAWEI-ospf-1]asbr-summary ip-address mask [ [ not-advertise | generate-null0-route ] | tag tag | cost cost | distribute-delay interval ]


五、缺省路由通告


1、概念

缺省路由是指目的地址和掩码都是0的路由。当设备无精确匹配的路由时,就可以通过缺省路由进行报文转发。


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


OSPF缺省路由通常应用于下面两种情况:

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


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


由于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上手工执行配置。


2、相关命令


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

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

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


②指定Type3 Summary-LSA的缺省开销值

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


注意:

①import-route (OSPF)命令不能引入外部路由的缺省路由。当需要引入其他协议产生的缺省路由时,必须在ASBR上配置default-route-advertise命令,发布缺省路由到整个普通OSPF区域。


②OSPF路由域中在通告缺省路由前,会比较缺省路由的优先级。如果在某OSPF设备上同时配置了静态缺省路由,要使OSPF通告的缺省路由加入到当前的路由表中,则必须保证所配置的静态缺省路由的优先级比OSPF通告的缺省路由的优先级低。


六、Filter-Policy


1、概念

Filter-Policy(过滤-策略)是一个很常用的路由信息过滤工具,能够对接收、发布、引入的路由进行过滤,可应用于IS-IS、OSPF、BGP等协议。


在链路状态路由协议中,各路由设备之间传递的是LSA信息,然后设备根据LSA汇总成的LSDB信息计算出路由表。但是Filter-Policy只能过滤路由信息,无法过滤LSA。


OSPF把网络中所泛洪的LSA存储到自己的LSDB中,并且运行SPF算法,计算出一颗以自己为根,无环的最短路径树,Filter-Policy对OSPF计算出来的路由(加载到路由表之前)进行过滤,而不会对LSA进行过滤。


2、相关命令

①按照过滤策略,设置OSPF对接收的路由进行过滤。

[Huawei-ospf-100]filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name [ secondary ] } import


②按照过滤策略,设置对引入的路由在向外发布时进行过滤。

[Huawei-ospf-100]filter-policy { acl-number | acl-name acl-name | ip-prefix ip-prefix-name | route-policy route-policy-name } export [ protocol [ process-id ] ]



七、对发送的LSA进行过滤


1、概念


当两台路由器之间存在多条链路时,可以在某些链路上通过对发送的LSA进行过滤,减少不必要的重传,节省带宽资源。


通过对OSPF接口出方向的LSA进行过滤可以不向邻居发送无用的LSA,从而减少邻居LSDB的大小,提高网络收敛速度。


2、相关命令


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

[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秒才能达到老化时间。



八、对ABR Type3 LSA进行过滤


1、概念

对区域内出、入方向ABR Type3 LSA(Summary LSA)设置过滤条件,只有通过过滤的LSA才能被发布和接收。


通过对区域内的LSA进行过滤可以不向邻居发送无用的LSA,从而减少LSDB的大小,提高网络收敛速度。


2、相关命令


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

[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进行过滤:

[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


九、设置LSDB中External LSA的最大数量


1、概念

OSPF要求同一个区域中的路由器保存相同的LSDB。随着网络上路由数量不断增加,一些路由器由于系统资源有限,不能再承载如此多的路由信息,这种状态就被称为数据库超限(OSPF Database Overflow)。


对于路由信息不断增加导致路由器系统资源耗尽而失效的问题,可以通过配置Stub或NSSA区域来解决,但Stub或NSSA区域的方案不能解决动态路由增长导致的数据库超限问题。为了解决数据库超限引发的问题,通过设置LSDB中External LSA的最大条目数,可以动态限制链路数据库的规模。


2、工作原理


为了避免数据库超限,可以设置路由器上非缺省外部路由数量的上限。

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


3、相关命令

设置OSPF的LSDB中External LSA的最大条目数

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


在实际应用中,我们需要根据自身需求对路由进行控制。OSPF可以通过调整OSPF的接口开销、设置等价路由、引入外部路由、路由聚合、缺省路由通告、Filter-Policy、等多种手段对路由进行控制。通过本文详细介绍,大家可以结合项目设计,针对同一路由控制需求思考出不同实现方式,再经过对比之后选择出最优方案。