问题描述
在边界路由器上把两个路由域的路由相互引入,称之为双向路由重发布。两个路由域存在两个边界路由器,并且都执行双向路由重分发,此时称为双点双向路由重发布。
双点双向路由重发布是种经典的路由模型,因单点的双向路由重发布缺乏冗余性,一旦单点的边界路由器故障,那么两个路由域之间的通信可能就会出现问题。因此在大型网络部署中,一般采用双点双向路由重发布。
双点双向重路由发布,虽然增强网络的可靠性,但是容易引发 次优路径、路由环路 问题。
路径次优
问题描述
1)R1 ⇒ R2 ⇒ R4 ⇒ R3,此时 R3 学习到 10.1.1.0/24 路由,协议优先级为 15;
2)R1 ⇒ R3,此时 R3 学习到 10.1.1.0/24 路由,协议优先级为 150(该直连路由通过 OSPF 引入,属于 OSPF ASE 路由);
3)根据路由匹配规则(若网络地址相同,则比较协议优先级),则 R3 访问 10.1.1.0/24 路径为:R3 ⇒ R4 ⇒ R2 ⇒ R1;
4)这是次优路径,而最佳路径是通过 R3 ⇒ R1 直接访问;
原因分析
在路由引入及发布过程中,路由优先级(这里是路由协议的优先级)发生变化
Q:是否会出现双向次优路由?即 R2 R3 都进行路由引入,导致 R2 R3 去往 10.1.1.0/24 都为次优路径?
A:次优路径是单向的。因为 R2 引入之后 R3 通过 ISIS 学习 10.1.1.0/24 路由,并加入路由表。此时执行 Import Route 是从路由表中引入 OSPF 路由,而 10.1.1.0/24 是 ISIS 学习到的,因此不会引入该路由,也就是说 R2 不会通过 ISIS 学习到 10.1.1.0/24 路由。(这里需要强调的是,路由引入是从全局路由表引入的,而非协议路由表。先入为主,导致 R3 全局路由表的 10.1.1.0/24 路由是通过 ISIS 学习到的,而 Import Route OSPF 不会引入该路由,因此 R3 无法通过 ISIS 学习到)
解决方案
方案一、过滤路由:在 R3 的 IS-IS 进程内,通过 Filter-Policy 禁止来自 R4 的 10.1.1.0/24 路由加入本地路由表:
[R3] acl 2001 [R3-acl-basic-2001] rule 5 deny source 10.1.1.0 0 [R3-acl-basic-2001] rule 10 permit [R3] isis [R3-isis-1] filter-policy 2001 import [R2] ... ......
Q:既然不会出现双向次优路由,为什么 R2 与 R3 都要进行路由过滤?
A:当我们在 R3 上进行路由过滤后,解决次优路径问题,此时 R3 的全局路由表显示是通过 OSPF 学习到 10.1.1.0/24 路由。当我们在 R3 上配置 Import Route OSPF 时,将引入该路由,导致 R2 出现次优路径。(这两种情况是不同的:一种是双点都没有路由过滤,则不会出现双向次优;一种是单点进行路由过滤,则另点将出现次优路径,所以双点都要进行路由过滤)
方案二、修改路由优先级:调用 Route-Policy 修改外部路由 10.1.1.0/24 的优先级:
[R3]acl 2000 [R3-acl-basic-2000] rule permit source 10.1.1.0 0 [R3]route-policy hcip permit node 10 [R3-route-policy] if-match acl 2000 [R3-route-policy] apply preference 14 [R3]ospf 1 [R3-ospf-1] preference ase route-policy hcip
路由环路
问题描述
1)将直连路由10.1.1.0/24引入到OSPF中。
2)R1、R2、R3运行OSPF协议,10.1.1.0/24网段路由在全OSPF域内通告。
3)R2执行了双向路由重发布。
4)R2、R3、R4运行IS-IS协议, 10.1.1.0/24网段路由在全IS-IS域内通告。
5)R3执行了双向路由重发布。
6)10.1.1.0/24网段路由再次被通告进OSPF域内,形成路由环路
原因分析
路由回馈,路由回灌,导致路由从其他区域回到始发区域。
双向都会发生路由回馈,ISIS ⇒ OSPF、OSPF ⇒ ISIS,并且 R2 与 R3 都需要进行配置。
解决方案
方案一、避免路由回灌:在 R3 的 OSPF 引入 IS-IS 路由时,通过 Route-Policy 过滤掉 10.1.1.0/24 路由:
[R3] acl 2001 [R3-acl-basic-2001] rule 5 deny source 10.1.1.0 0 [R3-acl-basic-2001] rule 10 permit [R3] route-policy RP permit node 10 [R3-route-policy] if-match 2001 [R3] ospf [R3-ospf-1] import-route isis 1 route-policy RP
方案二、避免路由回灌:使用 Tag 实现有选择性地路由引入,并通过 Tag 过滤路由:
// 添加 TAG 信息 [R2]acl 2000 [R2-acl-basic-2000]rule permit source 10.1.1.0 0 [R2]route-policy hcip permit node 10 [R2-route-policy]if-match acl 2000 [R2-route-policy]apply tag 200 # ISIS Cost Style: Wild/Narrow [R2]isis 1 [R2-isis-1] import-route ospf route-policy hcip // 通过 TAG 过滤 [R3]route-policy hcip deny node 10 [R3-route-policy]if-match tag 200 [R3]route-policy hcip permit node 20 [R3]ospf 1 [R3-ospf-1]import-route isis route-policy hcip
路由度量值 ⇒ 发生变更
场景描述:
1)在 IS-IS 中引入OSPF路由。在 OSPF 中,引入IS-IS路由。
2)不同的路由协议对路由度量值的定义不同,那么在路由协议之间进行路由引入时,被引入的路由的度量值该如何定义?定义成多少?
配置使用
基础配置指令
配置 OSPF 引入外部路由
# 在OSPF视图下,引入BGP路由/直连路由/静态路由/IS-IS路由/OSPF其他进程路由。 [Huawei-ospf-100] import-route { bgp | direct | static | isis [ process-id-isis ] | ospf [ process-id-ospf ]}
参考文献
Dual-Point Bidirectional Route Redistribution – Huawei Enterprise Support Community