资讯动态

路由回馈成因与四套防环方案:双点双向引入OSPF/IS-IS必读

发布时间:2026/9/29 19:50:16 来源:尧图企业网站定制
去年给一家单位做双核心网络割接时遇到了一个深夜加班的事故两台核心交换机同时跑OSPF和IS-IS为了打通两套网段我在R1和R2上做了双点双向路由引入。配置完测试一切正常结果半夜一台设备重启整个网络的路由表开始“抽风”去外部网段的路由一会儿走A一会儿走Btracert路径甚至出现了两台核心之间来回弹的情况。后来排查定位发现问题恰好出在这个双点双向路由引入上专业叫法就是路由回馈。路由回馈听着玄乎本质一句话能讲清楚一条路由从协议A被引到协议B后又被另一台设备从协议B里认出来重新引回协议A等于把“自己家的路由”绕了个圈又送回了自己家。结果就是路由表中出现次优路径、环路、路由振荡严重时全网路由表被刷爆业务直接断流。这篇文章不绕弯子我把这个问题的成因、排查思路和四套亲测有效的解决方案全部拆开讲适合刚接触多协议重分发的网络工程师也适合正在被环路问题折磨的运维同学直接参考。1. 场景重现双点双向路由引入是怎么把网络绕晕的1.1 典型拓扑与引入需求先说一个最常见的组网两台核心设备R1和R2同时运行OSPF和IS-IS两个协议分别承担两个协议域的出口角色。OSPF域172.16.10.0/24 为主R1/R2属于OSPF Area 0 ISIS域172.16.20.0/24 为主R1/R2属于ISIS Level-2为什么需要双点双向引入因为OSPF和IS-IS是两个独立协议路由互不可见。要让OSPF域里的设备能访问ISIS域里的网段就必须在边界设备上做路由重分发也就是把ISIS的路由“翻译”成OSPF能认识的LSA同时把OSPF的路由“翻译”成ISIS能认识的LSP。只在一台设备上做引入不够可靠单点故障就等于全链路断了所以生产环境几乎都要求两台边界设备同时做引入这就是双点双向路由引入的由来。正常情况下双点双向引入能让两个协议域内的路由互相可见各走各的边界完全没问题。但问题就藏在“双向”和“双点”这两个词同时成立的时候。1.2 回馈链路路由是怎么被“送回去”的我们拿ISIS域内的网段172.16.20.0/24举例看看一次路由回馈是怎么发生的。初始状态R1和R2都通过ISIS学到了172.16.20.0/24的原始路由。同时这两台设备按照配置把这根路由引入到OSPFOSPF域内便能看到一条Type 5的外部路由AD值为150通告者是R1或R2。问题触发场景某条链路闪断后R2到172.16.20.0/24的直接ISIS路径暂时失效。但R2的OSPF路由表里还保留着172.16.20.0/24这条外部路由——它是之前从ISIS引入到OSPF里的。R2按照“把OSPF路由引入ISIS”的配置把这根原本就源自ISIS的路由又给引回了ISIS。这就是回馈的完整闭环路由从ISIS出发经R1或R2进入OSPF绕了一圈又被另一台边界设备带回了ISIS。ISIS域内的设备只看到根路由又出现了但发布者变成了R2路径变成了“先绕OSPF再回ISIS”实际数据包就得绕一大圈甚至来回打转。当这个动作在R1和R2之间反复发生时就形成了双向回馈。OSPF里出现重复的外部LSAISIS里出现重复的LSP路由表开始抖动最终表现为业务主机的ping一会儿通一会儿断、全程高延迟。1.3 为什么单点引入没事双点引入就会出事这个问题很多朋友问过。单点引入的拓扑里只有一个边界路由被引到对端协议后没有“第二张嘴”再把这个路由从对端协议里接回来。也就是说路由进了协议B顶多就停在协议B里不会有人再把它倒腾回协议A自然形不成闭环。双点引入就不同了R1和R2相当于两个“翻转口”。R1往OSPF倒路由R2又从OSPF里把这些路由捞回来再塞进ISISR2往ISIS倒路由R1又从ISIS里捞回来塞进OSPF。两个口子一互动闭环就成立了。所以只要涉及多协议双点重分发路由回馈就是必须优先考虑的问题别等出了事故再后悔。2. 关键原理优先级、路由标记与次优路由2.1 协议优先级AD值在回馈中的关键作用路由回馈之所以会引发严重后果和协议优先级设计密切相关。以华为VRP为例OSPF内部路由的优先级是10OSPF外部路由的优先级是150而IS-IS Level-2内部路由的优先级是15。优先级数值越小越优选。当你把ISIS路由引入OSPF后它在OSPF里变成外部路由优先级从15变成了150变“差”了。正常情况下ISIS域内的原始路由仍然存在优先级15远优于OSPF这边回传的150流量还是会走ISIS原有路径。但一旦ISIS原始路由因链路振荡/端口闪断而消失OSPF里那条优先级150的外部路由就成了唯一路径R2把它重新引入ISIS时这路由在ISIS内变成了一条“合法”路由。更麻烦的是如果ISIS域里原本就有这条路由的内部版本回馈版本以相同的优先级甚至更优的优先级出现选路就会在两条路径之间反复横跳造成振荡。Cisco设备也一样OSPF的外部路由AD是110ISIS是115虽然数值和华为不同但“重分发路由在原协议域中的优先级低于或等于域内路由一旦域内路径消失回馈路径就会趁虚而入”这个逻辑是通用的。2.2 路由标记Tag跨协议传递的机制解决回馈问题业界最标准的手段是利用路由标记也就是Tag。OSPF的Type 5 LSA自带一个32位的外部路由标记字段专门用于在重分发场景中携带附加信息。ISIS同样支持管理标签。重点在于当路由从一个协议重分发到另一个协议时只要配置了路由策略Tag可以随路由一起传递和保留。举个例子R1把ISIS路由引入OSPF时通过route-policy给这条路由打上Tag 100。这条路由在OSPF域内传播时Tag 100一直跟着它。R2从OSPF收到这条Type 5 LSA时能看到Tag仍然是100。此时如果R2再执行OSPF到ISIS的引入路由策略中就可以匹配Tag 100并执行deny把回馈路由直接挡在门前。很多刚入门的朋友会忽略Tag原因在于OSPF外部路由的Tag字段默认是0不配置就等于没启用这个防环能力。在双点双向引入的场景里Tag不是可选项是必需品。2.3 回馈、次优路由与环路三者的关系回馈并不等于环路但它会先制造次优路由再升级为环路最后引发振荡。次优路由阶段回馈路由刚出现时原始路径可能还在只是回馈路径被错误选为更优数据包多绕了一圈业务还能通但延迟莫名其妙变高。环路阶段当两端ASBR互相把对方学到的同一前缀再引回去路由条目之间形成类似“A指向BB指向A”的引用关系数据包在两台设备之间来回转发直到TTL耗尽。振荡阶段路由在协议间反复撤回和重通告路由表频繁更新CPU占用飙升OSPF邻居因为DD报文交互过频而闪断整个网络进入连锁故障。这三者是层层递进的关系。排查时如果只看到表面上的“路由多了一条”一定要顺着回馈链路查否则治标不治本。这也是我后来养成的习惯只要有多协议重分发先看有没有回馈再看有没有次优。3. 四套解决方案与配置实操3.1 方案一Tag标记与反方向过滤最推荐这是我个人最常用、也最推荐长期使用的方案核心思路是用Tag标记路由来源在反向引入时把回馈路由deny掉形成双向闭环。先在图纸上给Tag做个规划Tag值含义100表示该路由源自ISIS域被引入到OSPF200表示该路由源自OSPF域被引入到ISIS然后给R1和R2做相同配置。以华为VRP为例R1的完整配置如下# 策略部分 route-policy ISIS2OSPF deny node 10 if-match tag 200 route-policy ISIS2OSPF permit node 20 apply tag 100 route-policy OSPF2ISIS deny node 10 if-match tag 100 route-policy OSPF2ISIS permit node 20 apply tag 200 # 协议部分 ospf 1 import-route isis 1 route-policy ISIS2OSPF isis 1 import-route ospf 1 route-policy OSPF2ISIS策略逻辑解释ISIS2OSPF方向先拒绝带Tag 200的路由这些是“曾属于OSPF又被回馈到ISIS”的路由不允许它们再次进入OSPF形成二次回馈允许其余路由通过并打上Tag 100标记为“ISIS源”。OSPF2ISIS方向先拒绝带Tag 100的路由这些是“曾属于ISIS又被回馈到OSPF”的路由不允许它们重新回到ISIS允许其余路由通过并打上Tag 200标记为“OSPF源”。R2上配置完全一样。这套方案的关键在于只要回馈路由带着Tag 100或Tag 200出现无论从哪个方向再引都会被对方方向的策略拦住。两边的“闸门”互相咬合回馈闭环就被彻底切断。3.2 方案二基于源协议的精准引入过滤如果不想引入Tag机制或者设备版本对Tag传递支持不理想还有一种更朴素的思路在引入路由时直接过滤掉“从对端ASBR学来的回馈路由”。做法是在两台边界设备上使用路由策略匹配对端设备通告的、且你已知的回馈前缀直接deny。例如R2上的OSPF引入ISIS策略里就把R1通告过来的OSPF外部路由中、那些属于ISIS原始网段的前缀全部deny掉。acl number 2001 rule 5 deny source 172.16.20.0 0.0.0.255 rule 10 permit route-policy OSPF2ISIS deny node 10 if-match ip address acl 2001 route-policy OSPF2ISIS permit node 20 isis 1 import-route ospf 1 route-policy OSPF2ISIS这个方案配置简单思路直观适合前缀数量少、规划清晰的网络。缺点是维护性差网络里每新增一个网段都要同步修改ACL漏一条就可能会埋雷。生产网过一段时间后ACL里堆了几十条规则谁都不敢随便动。3.3 方案三调整协议优先级做兜底有人说既然回馈容易趁原始路径消失时趁虚而入那把回馈路由的优先级调低让原始ISIS路径永远优先是不是就不用担心了可以这么做但只适合应急兜底不适合作为长期方案。例如把OSPF外部路由的AD值调大让它在ISIS内部和OSPF内部都被冷落从而降低回馈路由被选中的概率。部分厂商支持在协议视图或路由策略中设置路由的优先级。但问题很明显第一调整优先级影响的是整个协议域内所有外部路由不只针对回馈路由误伤面太大第二它只是让回馈路由“不被优先选择”回馈路由本身仍然存在于路由表中仍然占用资源链路再次变化时依然可能被选中。所以我的建议是这种调整只作为方案一实施前保护现场的临时手段。3.4 方案四前缀列表精确管控最后一种方案比较“物理”只允许双方规划好的前缀进入引入流程其他一律拒绝。通过前缀列表精确控制双向引入范围从源头上减少回馈的可能。ip ip-prefix ALLOW-ISIS index 10 permit 172.16.20.0 24 route-policy ISIS2OSPF permit node 10 if-match ip-prefix ALLOW-ISIS ospf 1 import-route isis 1 route-policy ISIS2OSPF这个方案适合网络规模小、路由条目固定、协议域之间业务边界清晰的场景。它的优点是不会误伤、逻辑最清晰缺点同样明显——如果两个协议域之间前缀很多或者未来可能动态新增网段靠手工前缀列表维护会非常痛苦。我在实际项目里一般把它作为方案一的补充对重点业务前缀做单独放行控制。3.5 方案对比与选型建议方案优点缺点推荐场景Tag标记过滤自动识别回馈、闭环彻底、扩展性好需要理解Tag传递机制配置稍复杂生产网长期方案强烈推荐源协议ACL过滤配置简单、直觉清晰前缀变化需人工维护易漏配小规模稳定网络优先级调整应急快、见效快影响全局、治标不治本故障现场临时兜底前缀列表管控最可控、零误伤维护成本高、动态扩展差业务网段固定的网络我的建议很明确核心生产网络直接用方案一把Tag规划做好一次配置长期受益方案四可以搭配在关键网段上做双重保险方案二和方案三不要作为主方案长期挂网。4. 实操验证与问题排查实录4.1 回馈故障的现场表现与取证回馈故障最典型的三个症状在现网里基本一眼就能认出来第一ping测试出现规律性丢包或者延迟忽高忽低tracert时能看到数据包在两台核心之间来回往返。第二路由表里出现同一条前缀的多个下一跳而且这些下一跳分属不同协议。第三ASBR设备上OSPF和ISIS进程的CPU占用率异常升高OSPF邻居状态频繁闪断因为LSA/LSP更新风暴把设备拖垮了。我那次割接事故现场就是第一和第三症状同时出现。一开始怀疑是链路问题查了一圈物理链路和光模块全正常最后才想到去翻路由表发现172.16.20.0/24的下一跳一会儿是R1的ISIS邻居一会儿又是R2的OSPF外部路由两个下一跳互为“往返”问题就出在回馈上。4.2 用display命令一步步定位回馈路径在华为设备上我推荐按下面这个顺序排查先看回馈路由是否存在。在R2上执行display ip routing-table protocol isis重点筛选目标前缀看下一跳是否指向OSPF域内的某台设备再执行display ip routing-table protocol ospf看同一前缀是否有OSPF外部路由。如果同一前缀在两个协议里都有且OSPF外部路由的下一跳指向R1或R2自身基本可以断定已经发生回馈。再用display ospf lsdb ase查看OSPF外部LSA。重点看两个字段Advertising Router和Tag。如果通告路由器是R1但Tag为100说明这条路由源自ISIS正准备被R2重新引回ISIS。这就能和路由表中的行为对上号。最后验证路由策略是否生效。执行display route-policy检查策略节点顺序执行display current-configuration configuration ospf或display current-configuration configuration isis查看引入命令是否挂上了正确的策略。很多回馈问题查到最后就是策略节点顺序写错deny节点放在了permit后面直接不生效。注意修改OSPF引入配置后如果OSPF进程是常驻状态可以用reset ospf process让外部LSA重新发布避免旧LSA在新策略生效前继续作乱。这个操作会短暂中断OSPF邻居尽量在维护窗口执行。4.3 常见误配与避坑清单我整理了这几年见过的高频误配基本都集中在几个点上只在一台ASBR上配置了策略另一台漏配回馈仍然存在。双点场景里两台设备必须同步改。Route-Policy的deny节点编号大于permit节点策略匹配顺序错乱deny永远轮不到执行。建议deny节点用较小号permit用较大号。打Tag之前没有先确认设备是否支持ISIS路由Tag传递。部分老旧设备或不同厂商间互操作时ISIS Tag可能不跨域传递策略匹配不到。引入命令中漏写了route-policy参数策略写了但没挂上等于白写。修改配置后没有重启OSPF进程旧LSA还在网络里继续泛洪新策略看起来没生效浪费大量排查时间。还有一条我特别想提醒的做双点双向引入前先在白板上画一张“协议、方向、Tag、策略动作”的表格把Tag 100和Tag 200的走向画清楚再动手配置。很多回馈问题在实际配置前就已经能在图纸上预判出来了。4.4 我的实操体会与后续建议在经历过几次回馈事故后我现在做多协议重分发都有一套固定流程先规划Tag方向再写策略再挂引入命令最后做模拟收敛测试——手动把一台ASBR的ISIS进程down掉30秒观察路由表是否出现回馈、OSPF外部LSA是否重复通告。如果模拟过程中出现异常说明策略还没配到位趁维护窗口赶紧调整。另外提一句不是所有网络都需要追平“绝对最优路径”。某些双点引入场景里次优路由虽然存在但业务延迟在可接受范围内重点还是要保证不形成环路、不振荡。如果为了追最优路径把策略调得过于复杂反而容易引入新的故障点。网络工程的基本原则从来没有变过稳定优先优化次之。这套Tag过滤方案后续还能延伸到更多场景比如OSPF和BGP互引、ISIS和静态路由互引、跨厂商设备协同等。只要理解了“打标、跨协议传递、反向deny”这个闭环逻辑路由回馈这个坑基本就再也绊不倒你了。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑