双点双向路由重发布配置案例:解决次优路径和路由环路问题
在复杂网络环境中,双点双向路由重发布是常见的配置场景,但如果不注意细节,容易导致路由环路和次优路径问题。本文通过一个实际案例,详细讲解次优路径、路由环路的成因及解决方案,并提供完整的配置示例。案例基于R5引入直连路由到OSPF,导致R2和R3之间的双向引入问题。
1. 问题背景与描述

在网络拓扑中,R5将直连路由5.5.5.5/32引入OSPF进程。这条路由通过Type5 LSA泛洪到R2和R3(两者作为ASBR)。R2和R3执行双向路由重发布:R2将OSPF路由引入IS-IS,R3将IS-IS路由引入OSPF。这导致R4通过IS-IS学习到该路由,并泛洪回R3。问题在于:
- IS-IS开销风格问题:IS-IS默认开销风格不支持Tag携带。如果不修改为Wide风格,路由标记(Tag)无法传递,导致后续策略失效。
- 路由环路和次优路径:R3从R4学到IS-IS路由(优先级15),而OSPF外部路由优先级为150。因此,R3优先选择IS-IS路径,形成次优路径。同时,路由在OSPF和IS-IS之间循环传递,造成环路。
2. IS-IS开销风格修改的重要性
IS-IS的开销风格决定了路由信息的携带能力。默认风格(如Narrow)不支持扩展属性(如Tag)。必须修改为Wide风格,以确保Tag能正确传递:
- Wide风格优势:支持更大的度量值和扩展TLV,允许路由标记在重发布过程中保持。
- 配置命令:在IS-IS进程下,使用cost-style wide启用Wide风格。例如:
isis 1
cost-style wide
如果不修改,任何基于Tag的路由策略(如Route-Policy)将失效,因为Tag无法跨域传递。
3. 路由环路和次优路径问题详解
路由环路和次优路径是双点双向重发布的常见问题:
- 环路成因:R5的外部路由进入OSPF后,R2将其引入IS-IS,R4学习并传回R3。R3又将该路由引入OSPF,形成循环。
- 次优路径成因:IS-IS路由优先级(15)低于OSPF外部路由优先级(150),导致R3优选IS-IS路径,而非更优的OSPF路径。
- 影响:环路消耗带宽,次优路径增加延迟。需通过路由标记和优先级调整解决。
4. 解决方案步骤
解决方案的核心是使用Route-Policy打Tag标记路由,并通过拒绝特定Tag防止环路,同时调整优先级解决次优路径。以下是详细步骤:
配置Route-Policy打Tag标记:
- 目的:为引入的路由添加唯一标记,便于后续过滤。
- 步骤:在ASBR(R2和R3)上,为OSPF到IS-IS和IS-IS到OSPF的重发布配置Route-Policy,应用不同Tag值。例如,R2为OSPF到IS-IS打Tag 10,R3为IS-IS到OSPF打Tag 20。
防止路由环路:
- 逻辑:通过拒绝特定Tag的路由,阻断环路路径。R2拒绝Tag 20的路由(来自R3),R3拒绝Tag 10的路由(来自R2)。
- 详细步骤:
- R2配置:在OSPF到IS-IS的Route-Policy中,拒绝Tag 20。
- R3配置:在IS-IS到OSPF的Route-Policy中,拒绝Tag 10。
- 效果:确保路由不会在ASBR之间无限循环。
解决次优路径:
- 逻辑:调整外部路由优先级,使OSPF路径优先于IS-IS路径。
- 详细步骤:
- 在R2上:使用Route-Policy匹配Tag 20的路由,将其外部优先级修改为150(匹配OSPF优先级),未匹配的修改为10(降低优先级)。
- 在R3上:使用Route-Policy匹配Tag 10的路由,将其外部优先级修改为150,未匹配的修改为10。
- 命令示例:preference ase route-policy pre 10结合Route-Policy节点。
完整策略链:
- R2策略:
- OSPF to IS-IS:打Tag 10,拒绝Tag 20。
- IS-IS to OSPF:打Tag 30,拒绝Tag 40。
- R3策略:
- IS-IS to OSPF:打Tag 20,拒绝Tag 10。
- OSPF to IS-IS:打Tag 40,拒绝Tag 30。
- 优先级调整:R2匹配Tag 20修改优先级为150,R3匹配Tag 10修改优先级为150。
5. 配置示例详解
以下配置基于华为或类似厂商设备语法,详细解释每条命令的作用。
R2配置
isis 1
is-level level-2 # 设置IS-IS级别为Level-2
cost-style wide # 修改开销风格为Wide,确保Tag携带
network-entity 49.0001.0000.0000.0002.00 # 配置IS-IS网络实体
import-route ospf 1 route-policy ospf_to_isis # 引入OSPF路由到IS-IS,应用Route-Policy
ospf 1
router-id 2.2.2.2 # 设置OSPF路由器ID
import-route isis 1 route-policy isis_to_ospf # 引入IS-IS路由到OSPF,应用Route-Policy
preference ase route-policy pre 10 # 设置外部路由优先级,应用Route-Policy调整
area 0.0.0.0
network 10.1.1.2 0.0.0.0 # 宣告OSPF接口
route-policy ospf_to_isis permit node 10 # 允许节点10:为引入的路由打Tag 10
apply tag 10
route-policy ospf_to_isis deny node 20 # 拒绝节点20:匹配Tag 20的路由(防止环路)
if-match tag 20
route-policy isis_to_ospf permit node 10 # 允许节点10:为引入的路由打Tag 30
apply tag 30
route-policy isis_to_ospf deny node 20 # 拒绝节点20:匹配Tag 40的路由(防止环路)
if-match tag 40
route-policy pre permit node 10 # 优先级调整:匹配Tag 20的路由修改优先级为150
if-match tag 20
apply preference 150
R3配置
isis 1
is-level level-2 # 设置IS-IS级别为Level-2
cost-style wide # 修改开销风格为Wide
network-entity 49.0001.0000.0000.0003.00 # 配置IS-IS网络实体
import-route ospf 1 route-policy ospf_to_isis # 引入OSPF路由到IS-IS,应用Route-Policy
ospf 1
router-id 3.3.3.3 # 设置OSPF路由器ID
import-route isis 1 route-policy isis_to_ospf # 引入IS-IS路由到OSPF,应用Route-Policy
preference ase route-policy pre 10 # 设置外部路由优先级,应用Route-Policy调整
area 0.0.0.0
network 10.2.2.2 0.0.0.0 # 宣告OSPF接口
route-policy isis_to_ospf deny node 10 # 拒绝节点10:匹配Tag 10的路由(防止环路)
if-match tag 10
route-policy isis_to_ospf permit node 20 # 允许节点20:为引入的路由打Tag 20
apply tag 20
route-policy ospf_to_isis deny node 10 # 拒绝节点10:匹配Tag 30的路由(防止环路)
if-match tag 30
route-policy ospf_to_isis permit node 20 # 允许节点20:为引入的路由打Tag 40
apply tag 40
route-policy pre permit node 10 # 优先级调整:匹配Tag 10的路由修改优先级为150
if-match tag 10
apply preference 150
6. 验证与测试
部署后,需验证配置效果:
- 检查路由表:在R3上,确认5.5.5.5/32路由的路径优先级为150(OSPF路径),而非15(IS-IS路径)。
- 环路测试:使用Traceroute或路由跟踪工具,确保路由不会在R2-R3-R4之间循环。
- Tag验证:通过display route-policy或类似命令,检查Tag是否正确应用和过滤。
7. 常见问题与注意事项
- 开销风格未修改:如果忘记设置cost-style wide,Tag无法传递,所有策略失效。务必在所有IS-IS设备上配置。
- Tag冲突:确保R2和R3使用的Tag值不重叠(如R2用10/30,R3用20/40)。
- 优先级调整顺序:Route-Policy节点顺序很重要,需先定义匹配规则再应用动作。
- 扩展性:在大型网络中,可结合路由过滤和前缀列表,增强策略灵活性。
8. 总结
双点双向路由重发布需谨慎处理IS-IS开销风格和路由策略。通过修改为Wide风格,并合理使用Route-Policy打Tag、拒绝特定Tag及调整优先级,可有效解决路由环路和次优路径问题。本案例提供了详细配置和解释,适用于类似网络场景。实践中,建议先模拟测试再上线部署,确保网络稳定性。





