控制OSPF的路由信息
控制OSPF的路由信息的发布与接收,并引入其他协议的路由。
配置引入外部路由
通过引入其他路由协议路由,可以扩充OSPF路由信息。
背景信息
当OSPF网络中的设备需要访问运行其他协议的网络中的设备时,需要将其他协议的路由引入到OSPF网络中。
OSPF是一个无自环的动态路由协议,但这是针对域内路由和域间路由而言的,其对引入的外部路由环路没有很好的防范机制,所以在配置OSPF引入外部路由时一定要慎重,防止人为配置引起的环路。具体情况请参见《HUAWEI NE40E-M2系列 特性描述-IP路由》的“OSPF VPN”部分内容。
请在运行OSPF协议的自治系统边界路由器ASBR上进行以下配置。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令ospf [ process-id ],进入OSPF进程视图。
- 执行命令import-route { bgp [ permit-ibgp ] | direct | rip [ process-id-rip ] | static | unr | isis [ process-id-isis ] | ospf [ process-id-ospf ] } [ cost cost | tag tag | type type | route-policy route-policy-name | route-filter route-filter-name ] *,引入其它协议的路由信息。
- (可选)执行命令default { cost { cost | inherit-metric } | tag tag | type type } *,配置引入路由时的参数缺省值(开销、路由数量、标记、类型)。
当OSPF引入外部路由时,可以配置一些额外参数的缺省值,如开销、路由数量、标记和类型。路由标记可以用来标识协议相关的信息,如OSPF接收BGP时用来区分自治系统的编号。
可以通过以下三条命令设置引入路由的开销值,其优先级依次递减:- 通过apply cost命令设置的路由开销值。
- 通过import-route命令设置的引入路由开销值。
- 通过default命令设置引入路由的缺省开销值。
- (可选)根据实际情况选择其中之一:
- 匹配基本ACL:
- 执行命令filter-policy { acl-number | acl-name acl-name } export [ direct | static | unr | bgp | { rip | isis | ospf } [ process-id ] ],配置对3引入的路由进行过滤,通过过滤的路由才能被发布出去。
- 执行命令quit,返回系统视图。
- 执行命令acl { name basic-acl-name { basic | [ basic ] number basic-acl-number } | [ number ] basic-acl-number } [ match-order { config | auto } ],进入ACL视图。
执行命令rule [ rule-id ] [ name rule-name ] { deny | permit } [ fragment-type { fragment | non-fragment | non-subseq | fragment-subseq | fragment-spe-first } | source { source-ip-address { source-wildcard | 0 | src-netmask } | any } | time-range time-name | vpn-instance vpn-instance-name ] *,配置ACL规则。
对于命名型ACL,使用rule命令配置过滤规则时,只有source参数指定的源地址范围和time-range参数指定的时间段对配置规则有效。
使用路由协议下的Filter-Policy策略过滤路由时:如果ACL规则的动作是permit时,则该路由被系统接收或发布;
如果ACL规则的动作是deny时,则该路由不会被系统接收或发布;
如果路由的网段不在ACL规则指定的范围内,则该路由默认不被系统接收或发布;
如果ACL中不存在规则,那么引用该ACL的路由策略中涉及的所有路由不被系统接收或发布;
路由过滤可分为黑名单和白名单方式:
当ACL规则的匹配顺序为配置方式时,系统根据规则编号从小到大的顺序进行匹配。
黑名单方式可以在同一个ACL中先配置动作是deny的编号较小的规则,用于过滤掉不希望被系统接收或发布的路由,然后再配置动作是permit的编号较大的规则,用于接收或发布其他路由。
白名单方式可以在同一个ACL中先配置动作是permit的编号较小的规则,用于允许希望被系统接收或发布的路由,然后再配置动作是deny的编号较大的规则,用于过滤掉其他不希望被系统接收或发布的路由。
匹配地址前缀列表:
执行命令filter-policy ip-prefix ip-prefix-name export [ protocol [ process-id ] ],配置对3引入的路由进行过滤,通过过滤的路由才能被发布出去。
OSPF对引入的路由进行过滤,是指OSPF只将满足条件的外部路由转换为Type5 LSA并发布出去。
用户可以通过指定protocol [ process-id ]对特定的某一种协议或某一进程的路由信息进行过滤。如果没有指定protocol [ process-id ],则OSPF将对所有引入的路由信息进行过滤。
import-route命令不能引入外部路由的缺省路由。
- 匹配基本ACL:
- 执行命令import-route
limit limit-number [ threshold-alarm { upper-limit upper-limit-value | lower-limit lower-limit-value }* ],设置限制OSPF引入路由生成的LSA数量。
当OSPF引入大量外部路由,并发布给路由容量较小的设备时,导致设备学习到的路由数量超过其容量而发生异常重启。为了避免这种情况发生,设置限制OSPF引入路由生成的LSA数量,从而保证设备的稳定运行。通过display ospf brief命令显示信息中的Current status字段可以查看超限情况:
- Normal:没有超过告警的下限阈值。
- Approach limit:即将达到告警的上限阈值,已达到告警的上限阈值的90%。
- Exceed limit:已经达到或超过最大数量。
告警的阈值上限upper-limit-value必须大于等于告警的阈值下限lower-limit-value。
- 执行命令commit,提交配置。
配置引入缺省路由
缺省路由具有减小路由表容量,实现路由信息屏蔽的功能,在OSPF组网中具有广泛的应用。
背景信息
OSPF实际组网应用中,区域边界和自治系统边界通常都是由多个路由器组成的多出口冗余备份或者负载分担。此时,为了减少路由表的容量,可以配置缺省路由,保证网络的高可用性。
OSPF缺省路由通常应用于下面两种情况:
- 由区域边界路由器(ABR)发布Type-3 LSA,用来指导区域内路由器进行区域之间报文的转发。
- 由自治系统边界路由器(ASBR)发布Type-5 LSA或Type-7 LSA,用来指导OSPF路由域内路由器进行域外报文的转发。
当路由器无精确匹配的路由时,就可以通过缺省路由进行报文转发。
Type-3 LSA缺省路由的优先级要高于Type-5 LSA或Type-7 LSA路由。
OSPF缺省路由的发布方式取决于引入缺省路由的区域类型。如表5-3所示。
区域类型 |
产生条件 |
发布方式 |
产生LSA的类型 |
泛洪范围 |
---|---|---|---|---|
普通区域 |
通过default-route-advertise命令配置。 |
ASBR发布 |
Type-5 LSA |
普通区域 |
Stub区域 |
自动产生 |
ABR发布 |
Type-3 LSA |
Stub区域 |
NSSA区域 |
通过nssa [ default-route-advertise ] |
ASBR发布 |
Type-7 LSA |
NSSA区域 |
自动产生 |
ABR发布 |
Type-3 LSA |
NSSA区域 |
|
完全NSSA区域 |
自动产生 |
ABR发布 |
Type-3 LSA |
NSSA区域 |
请在运行OSPF协议的自治系统边界路由器ASBR上进行以下配置。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令ospf [ process-id ],进入OSPF进程视图。
- 执行命令default-route-advertise [ [ always | permit-calculate-other ] | cost cost | type type | { route-policy route-policy-name | route-filter route-filter-name } | distribute-delay delay-time ] *,引入缺省路由到OSPF进程中。
配置NSSA区域的缺省路由,请参见配置OSPF的NSSA区域。
- 执行命令commit,提交配置。
配置路由聚合
当大规模部署OSPF网络时,为了避免OSPF路由表中条目过多从而占用过多系统内存的情况,可以配置路由聚合,减小路由表的规模。
背景信息
当OSPF网络规模较大时,配置路由聚合,可以有效减少路由表中的条目,减小对系统资源的占用,不影响系统的性能。此外,如果被聚合的IP地址范围内的某条链路频繁Up和Down,该变化并不会通告到被聚合的IP地址范围外的设备。因此,可以避免网络中的路由震荡,在一定程度上提高了网络的稳定性。
操作步骤
- 配置ABR路由聚合
- 执行命令system-view,进入系统视图。
- 执行命令ospf [ process-id ],进入OSPF进程视图。
- 执行命令area area-id,进入OSPF区域视图。
- 执行命令abr-summary ip-address mask [ [ advertise | cost { cost-value | inherit-minimum } | generate-null0-route | hold-max-cost interval ] * | [ not-advertise | cost { cost-value | inherit-minimum | hold-max-cost interval } ] * | [ generate-null0-route | advertise | cost { cost-value | inherit-minimum } | hold-max-cost interval ] * ],配置OSPF的ABR路由聚合。
- 执行命令commit,提交配置。
- 配置ASBR路由聚合
配置OSPF对区域内的LSA进行过滤
通过对区域内的LSA进行过滤可以不向邻居发送无用的LSA,从而减少LSDB的大小,提高网络收敛速度。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令ospf [ process-id ],进入OSPF进程视图。
- 执行命令area area-id,进入OSPF区域视图。
- 配置对区域内入方向或出方向的Type-3 LSA进行过滤。
配置对区域内出方向的Type-3 LSA进行过滤。根据实际情况选择其中之一:
- 匹配基本ACL:
- 执行命令filter { acl-number | acl-name acl-name } export,配置对区域内出方向的Type-3 LSA进行过滤。
- 执行命令quit,返回系统视图。
- 执行命令acl { name basic-acl-name { basic | [ basic ] number basic-acl-number } | [ number ] basic-acl-number } [ match-order { config | auto } ],进入ACL视图。
执行命令rule [ rule-id ] [ name rule-name ] { deny | permit } [ fragment-type { fragment | non-fragment | non-subseq | fragment-subseq | fragment-spe-first } | source { source-ip-address { source-wildcard | 0 | src-netmask } | any } | time-range time-name | vpn-instance vpn-instance-name ] *,配置ACL规则。
对于命名型ACL,使用rule命令配置过滤规则时,只有source参数指定的源地址范围和time-range参数指定的时间段对配置规则有效。
使用路由协议下的Filter-Policy策略过滤路由时:如果ACL规则的动作是permit时,则该路由被系统接收或发布;
如果ACL规则的动作是deny时,则该路由不会被系统接收或发布;
如果路由的网段不在ACL规则指定的范围内,则该路由默认不被系统接收或发布;
如果ACL中不存在规则,那么引用该ACL的路由策略中涉及的所有路由不被系统接收或发布;
路由过滤可分为黑名单和白名单方式:
当ACL规则的匹配顺序为配置方式时,系统根据规则编号从小到大的顺序进行匹配。
黑名单方式可以在同一个ACL中先配置动作是deny的编号较小的规则,用于过滤掉不希望被系统接收或发布的路由,然后再配置动作是permit的编号较大的规则,用于接收或发布其他路由。
白名单方式可以在同一个ACL中先配置动作是permit的编号较小的规则,用于允许希望被系统接收或发布的路由,然后再配置动作是deny的编号较大的规则,用于过滤掉其他不希望被系统接收或发布的路由。
匹配地址前缀列表:
执行命令filter ip-prefix ip-prefix-name export,配置对区域内出方向的Type-3 LSA进行过滤。
匹配路由策略:
执行命令filter route-policy route-policy-name export,配置对区域内出方向的Type-3 LSA进行过滤。
匹配过滤策略:
执行命令filter route-filter route-filter-name export,配置对区域内出方向的Type-3 LSA进行过滤。
- 匹配基本ACL:
配置对区域内入方向的Type-3 LSA进行过滤。根据实际情况选择其中之一:
- 匹配基本ACL:
- 执行命令filter { acl-number | acl-name acl-name } import [ include-abr-summary ],配置对区域内入方向的Type-3 LSA进行过滤。
- 执行命令quit,返回系统视图。
- 执行命令acl { name basic-acl-name { basic | [ basic ] number basic-acl-number } | [ number ] basic-acl-number } [ match-order { config | auto } ],进入ACL视图。
执行命令rule [ rule-id ] [ name rule-name ] { deny | permit } [ fragment-type { fragment | non-fragment | non-subseq | fragment-subseq | fragment-spe-first } | source { source-ip-address { source-wildcard | 0 | src-netmask } | any } | time-range time-name | vpn-instance vpn-instance-name ] *,配置ACL规则。
对于命名型ACL,使用rule命令配置过滤规则时,只有source参数指定的源地址范围和time-range参数指定的时间段对配置规则有效。
使用路由协议下的Filter-Policy策略过滤路由时:如果ACL规则的动作是permit时,则该路由被系统接收或发布;
如果ACL规则的动作是deny时,则该路由不会被系统接收或发布;
如果路由的网段不在ACL规则指定的范围内,则该路由默认不被系统接收或发布;
如果ACL中不存在规则,那么引用该ACL的路由策略中涉及的所有路由不被系统接收或发布;
路由过滤可分为黑名单和白名单方式:
当ACL规则的匹配顺序为配置方式时,系统根据规则编号从小到大的顺序进行匹配。
黑名单方式可以在同一个ACL中先配置动作是deny的编号较小的规则,用于过滤掉不希望被系统接收或发布的路由,然后再配置动作是permit的编号较大的规则,用于接收或发布其他路由。
白名单方式可以在同一个ACL中先配置动作是permit的编号较小的规则,用于允许希望被系统接收或发布的路由,然后再配置动作是deny的编号较大的规则,用于过滤掉其他不希望被系统接收或发布的路由。
匹配地址前缀列表:
执行命令filter ip-prefix ip-prefix-name import [ include-abr-summary ],配置对区域内入方向的Type-3 LSA进行过滤。
匹配路由策略:
执行命令filter route-policy route-policy-name import [ include-abr-summary ],配置对区域内入方向的Type-3 LSA进行过滤。
匹配过滤策略:
执行命令filter route-filter route-filter-name import [ include-abr-summary ],配置对区域内入方向的Type-3 LSA进行过滤。
- 匹配基本ACL:
- 执行命令commit,提交配置。
配置OSPF对发送的LSA进行过滤
通过对发送的LSA进行过滤可以避免向邻居发送无用的LSA,从而减少邻居LSDB的大小,提高网络收敛速度。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令interface interface-type interface-number,进入接口视图。
- 匹配基本ACL:
- 执行命令ospf filter-lsa-out { all | { summary [ acl { acl-number | acl-name } ] | ase [ acl { acl-number | acl-name } ] | nssa [ acl { acl-number | acl-name } ] } * },配置对出方向的LSA进行过滤。
- 执行命令quit,返回系统视图。
- 执行命令acl { name basic-acl-name { basic | [ basic ] number basic-acl-number } | [ number ] basic-acl-number } [ match-order { config | auto } ],进入ACL视图。
执行命令rule [ rule-id ] [ name rule-name ] { deny | permit } [ fragment-type { fragment | non-fragment | non-subseq | fragment-subseq | fragment-spe-first } | source { source-ip-address { source-wildcard | 0 | src-netmask } | any } | time-range time-name | vpn-instance vpn-instance-name ] *,配置ACL规则。
对于命名型ACL,使用rule命令配置过滤规则时,只有source参数指定的源地址范围和time-range参数指定的时间段对配置规则有效。
使用路由协议下的Filter-Policy策略过滤路由时:如果ACL规则的动作是permit时,则该路由被系统接收或发布;
如果ACL规则的动作是deny时,则该路由不会被系统接收或发布;
如果路由的网段不在ACL规则指定的范围内,则该路由默认不被系统接收或发布;
如果ACL中不存在规则,那么引用该ACL的路由策略中涉及的所有路由不被系统接收或发布;
路由过滤可分为黑名单和白名单方式:
当ACL规则的匹配顺序为配置方式时,系统根据规则编号从小到大的顺序进行匹配。
黑名单方式可以在同一个ACL中先配置动作是deny的编号较小的规则,用于过滤掉不希望被系统接收或发布的路由,然后再配置动作是permit的编号较大的规则,用于接收或发布其他路由。
白名单方式可以在同一个ACL中先配置动作是permit的编号较小的规则,用于允许希望被系统接收或发布的路由,然后再配置动作是deny的编号较大的规则,用于过滤掉其他不希望被系统接收或发布的路由。
- 执行命令commit,提交配置。
配置OSPF对接收的路由进行过滤
通过对需要下发到RM的OSPF路由设置路由信息的过滤条件,只有通过过滤的路由才被添加到路由表中。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令ospf [ process-id ],进入OSPF进程视图。
- 根据实际情况选择其中之一:
- 匹配基本ACL:
- 执行命令filter-policy { acl-number | acl-name acl-name [ secondary ] } import,配置对接收的路由进行过滤。
- 执行命令quit,返回系统视图。
- 执行命令acl { name basic-acl-name { basic | [ basic ] number basic-acl-number } | [ number ] basic-acl-number } [ match-order { config | auto } ],进入ACL视图。
执行命令rule [ rule-id ] [ name rule-name ] { deny | permit } [ fragment-type { fragment | non-fragment | non-subseq | fragment-subseq | fragment-spe-first } | source { source-ip-address { source-wildcard | 0 | src-netmask } | any } | time-range time-name | vpn-instance vpn-instance-name ] *,配置ACL规则。
对于命名型ACL,使用rule命令配置过滤规则时,只有source参数指定的源地址范围和time-range参数指定的时间段对配置规则有效。
使用路由协议下的Filter-Policy策略过滤路由时:如果ACL规则的动作是permit时,则该路由被系统接收或发布;
如果ACL规则的动作是deny时,则该路由不会被系统接收或发布;
如果路由的网段不在ACL规则指定的范围内,则该路由默认不被系统接收或发布;
如果ACL中不存在规则,那么引用该ACL的路由策略中涉及的所有路由不被系统接收或发布;
路由过滤可分为黑名单和白名单方式:
当ACL规则的匹配顺序为配置方式时,系统根据规则编号从小到大的顺序进行匹配。
黑名单方式可以在同一个ACL中先配置动作是deny的编号较小的规则,用于过滤掉不希望被系统接收或发布的路由,然后再配置动作是permit的编号较大的规则,用于接收或发布其他路由。
白名单方式可以在同一个ACL中先配置动作是permit的编号较小的规则,用于允许希望被系统接收或发布的路由,然后再配置动作是deny的编号较大的规则,用于过滤掉其他不希望被系统接收或发布的路由。
匹配地址前缀列表:
执行命令filter-policy ip-prefix ip-prefix-name [ secondary ] import,配置对接收的路由进行过滤。
匹配路由策略:
执行命令filter-policy route-policy route-policy-name [ secondary ] import,配置对接收的路由进行过滤。
匹配过滤策略:
执行命令filter-policy route-filter route-filter-name [ secondary ] import,配置对接收的路由进行过滤。
由于OSPF是基于链路状态的动态路由协议,路由信息携带在LSDB(Link-state Database)中,所以不能使用filter-policy import命令对发布和接收的LSA(Link Status Advertisement)进行过滤。该命令实际上是对OSPF计算出来的路由进行过滤,只有通过过滤的路由才被添加到路由表RIB(Routing Information Base)中。
- 匹配基本ACL:
- 执行命令commit,提交配置。
配置OSPF对发布的路由进行过滤
通过对OSPF引入的路由设置路由信息的过滤条件,只有通过过滤的信息才能被发布出去。
操作步骤
- 执行命令system-view,进入系统视图。
- 执行命令ospf [ process-id ],进入OSPF进程视图。
- 配置过滤发布的路由信息。
根据实际情况选择其中之一:
- 匹配基本ACL:
- 执行命令filter-policy { acl-number | acl-name acl-name } export [ direct | static | unr | bgp | { rip | isis | ospf } [ process-id ] ],设置对引入的路由在向外发布时进行过滤。
- 执行命令quit,返回系统视图。
- 执行命令acl { name basic-acl-name { basic | [ basic ] number basic-acl-number } | [ number ] basic-acl-number } [ match-order { config | auto } ],进入ACL视图。
执行命令rule [ rule-id ] [ name rule-name ] { deny | permit } [ fragment-type { fragment | non-fragment | non-subseq | fragment-subseq | fragment-spe-first } | source { source-ip-address { source-wildcard | 0 | src-netmask } | any } | time-range time-name | vpn-instance vpn-instance-name ] *,配置ACL规则。
对于命名型ACL,使用rule命令配置过滤规则时,只有source参数指定的源地址范围和time-range参数指定的时间段对配置规则有效。
使用路由协议下的Filter-Policy策略过滤路由时:如果ACL规则的动作是permit时,则该路由被系统接收或发布;
如果ACL规则的动作是deny时,则该路由不会被系统接收或发布;
如果路由的网段不在ACL规则指定的范围内,则该路由默认不被系统接收或发布;
如果ACL中不存在规则,那么引用该ACL的路由策略中涉及的所有路由不被系统接收或发布;
路由过滤可分为黑名单和白名单方式:
当ACL规则的匹配顺序为配置方式时,系统根据规则编号从小到大的顺序进行匹配。
黑名单方式可以在同一个ACL中先配置动作是deny的编号较小的规则,用于过滤掉不希望被系统接收或发布的路由,然后再配置动作是permit的编号较大的规则,用于接收或发布其他路由。
白名单方式可以在同一个ACL中先配置动作是permit的编号较小的规则,用于允许希望被系统接收或发布的路由,然后再配置动作是deny的编号较大的规则,用于过滤掉其他不希望被系统接收或发布的路由。
匹配地址前缀列表:
执行命令filter-policy ip-prefix ip-prefix-name export [ direct | static | unr | bgp | { rip | isis | ospf } [ process-id ] ],设置对引入的路由在向外发布时进行过滤。
匹配路由策略:
执行命令filter-policy route-policy route-policy-name export [ direct | static | unr | bgp | { rip | isis | ospf } [ process-id ] ],设置对引入的路由在向外发布时进行过滤。
- 匹配基本ACL:
- 执行命令commit,提交配置。