☰
割接后业务不通?看透路由器RIB与FIB的差异与故障排查
2026/10/12 4:12:09 网站建设 项目流程

一次夜间割接,我为什么为了一张“看不见的表格”折腾到凌晨三点

做网络运维第七年,我早就不怕设备宕机、光缆被挖断这类硬故障,真正让我后背发凉的是路由“通了但没全通”的诡异场景。去年秋天的某个凌晨,我们给某区域做核心设备替换,所有路由协议邻居全部Up,接口up/up,从监控平台看流量也走了新链路,可业务方反复报“丢包、延迟抖动、部分地址段不通”。我坐在机房里,对着屏幕上几百条路由反复看,始终想不通一个问题:协议邻居都正常,路由表里也都有,转发怎么就是不对?

后来一位比我年长不少的前辈路过,问了我一句话:“你确认你查的是协议路由表还是核心路由表?你看的到底是RIB还是FIB?”我愣了一下,然后花了四个小时把路由表、转发表、协议表之间的关系彻底重新捋了一遍,才定位到问题——新设备上某条路由的下一跳没有通过递归解析,协议路由表里有路由,但FIB里根本没有对应的转发条目。那一刻我意识到,很多人(包括当时的我)对这几个概念的理解是“知道名字但没穿透”,遇到真实故障时完全用不起来。

所以这篇东西我不打算从头讲“路由表是什么”这种教科书内容,而是想从一张路由条目的生命周期讲起,把RIB、FIB、协议路由表、核心路由表这四者的关系、分工和实战价值彻底掰开。运维、网工、刚入行的数通工程师,甚至做云网络的同学,看完之后应该能对“路由到底是怎么变成转发的”建立起完整画面。这比背一百个命令都有用。

1. 拆开路由的“两张脸”:路由信息库RIB与转发信息库FIB的分工逻辑

1.1 控制平面是大脑,数据平面是手脚

很多教材里喜欢把路由器比作“邮局”,说路由表就是邮局的分拣表。这个类比思路对,但不够——真实的路由器里,负责“思考怎么走”的大脑和负责“实际把包送出去”的双手,用的根本是两张不同的表格。

先记住两个缩写:RIB(Routing Information Base,路由信息库)和FIB(Forwarding Information Base,转发信息库)。

RIB是控制平面的产物。所有路由协议学到的路由、手工配置的静态路由、接口自身的直连路由,第一步全部汇入RIB。RIB的特点是“全”和“杂”——同一个目的网段可能同时存在OSPF学来的、BGP学来的、静态配置的三条路由,它们可以在RIB里共存,只是优先级和开销不同。RIB是路由器“知道的所有可能性”的集合,是决策的原料库。

FIB是数据平面的产物。路由器真正转发数据包时,不会去翻RIB——因为RIB里的条目多、有重复前缀、还有未决议的下一跳,逐条遍历太慢而且可能自相矛盾。所以在路由选路完成后,系统会把最优路径“翻译”成适合硬件快速查找的格式,单独放进FIB。FIB是路由器“最终选择的结果”,一个前缀通常只有一条最优转发条目(等价路径除外),并且附带了封装所需的出接口、下一跳MAC等信息,硬件可以直接用。

理解这两者的关系,最要紧的一句话是:RIB是策略层,FIB是执行层。策略层允许有冗余、有争论、有备用方案;执行层必须干净、确定、低延迟。一张表干两件事是行不通的——既要保留所有协议学来的候选路由,又要做到极速查表转发,放在同一张表里,要么决策过程拖累转发速度,要么为了转发速度牺牲决策精度。

1.2 两张表不是每次都能同步:不一致是故障的温床

既然RIB和FIB是两类不同的数据结构,那它们在任何时刻都保持一致吗?答案是:绝大多数时候一致,但恰恰是“不一致”的窗口期,藏着大量疑难杂症。

常见的不一致场景有几个,我实际都遇到过。

第一条,路由迭代未完成。比如一条静态路由写的下一跳是10.0.0.1,但10.0.0.0/24这条直连路由或IGP路由还没在RIB里就绪,那么RIB里可能有这条静态路由,却无法解析到具体的出接口,FIB就不会生成对应条目。我的割接事故就是这一类。

第二条,硬件资源不足或下发失败。RIB已经选好最优路由,但硬件转发表项满了、芯片下发队列异常,FIB无法更新。

第三条,FIB刷新延迟。RIB变化后控制平面要经过一定的处理和下发周期,在高速变化的网络中(频繁闪断、路由震荡),FIB短暂保留旧条目是正常现象,但持续不刷新就是异常。

所以在排查“路由表里有路由但业务不通”时,第一反应不是怀疑链路,而是先确认:你看到的路由,是在RIB层面还是FIB层面?判断一个路由是否真正生效,看FIB,而不是看协议路由表或RIB。

1.3 三个“表”的加载顺序:先有协议表,再有RIB,最后FIB

严格来说,一个常规的路由条目要经历“三级跳”才能变成真正的转发表项:

  1. 协议路由表:OSPF、BGP、静态路由各自独立维护自己的路由表。这是各协议“自说自话”的领地。
  2. RIB(核心路由表):各协议表把最优路由“上报”给RIB。RIB按照管理距离/路由优先级进行跨协议选路,留下唯一最优(或ECMP多条)。
  3. FIB(转发表):RIB选出的最优路由经过下一跳解析、出接口匹配、封装信息关联之后,被下发到FIB。

很多人误以为“协议路由表”就是“路由表”,查命令也只在某个协议视图里看路由,这样永远看不到全局。真正做选路决策的地方是RIB(通常说的核心路由表),协议表只是它的“上游供应商”。这个认知如果不建立,后面所有排查都会跑偏。

我在某高校的模拟项目里见过一个典型案例:两台设备之间跑着OSPF,show ip route能看到10.1.1.0/24,但数据包就是不通。后来发现那条OSPF路由被一条更优的静态路由压住了,而静态路由的下一跳指向的接口已经down了——RIB选了静态路由,FIB里根本没有OSPF那条的转发条目。这就是典型的“路由表里有,转发表里没有”。

2. 协议路由表的“百家争鸣”:从直连、静态到OSPF与BGP的上报逻辑

2.1 路由的四个来源,地位天生不平等

每一类路由协议维护自己的数据库和路由表,最终它们都会向RIB递交“竞选材料”。不同来源的路由,可信度是不一样的,这个可信度在技术术语里叫管理距离(Administrative Distance,AD),华为设备上通常叫路由优先级(Preference)。

我给一个非常直白且务实的排序,这也是各类厂商设备默认的优先级逻辑:

路由来源华为优先级思科管理距离说明
直连路由00接口自己所在的网段,最高可信
静态路由601(通常优于动态)管理员手工指定,思科默认极信任
OSPF10110典型的IGP(内部网关协议)
IS-IS15115常用于运营商骨干
RIP100120老一代距离矢量协议
BGP(外部)25520跨自治系统的路由,默认信任度最低

注意同样的协议在不同厂商的设备上“地位”完全不同。最典型的是静态路由:思科设备上静态路由优先级逼近直连,几乎碾压所有动态路由;华为设备上动态路由(比如OSPF优先级10)反而比静态路由(优先级60)更被信任。所以同样的网络设计,换一家厂商的设备,行为天差地别。做跨厂商网络设计时,这个表必须刻在脑子里。

2.2 直连路由和静态路由:最朴素的两个“供应商”

直连路由不需要任何协议参与。接口配置了IP地址且状态Up,系统就自动在路由表里生成一条指向该网段的路由,出接口就是本接口。这是所有路由里最不可能出错的,但也最容易被人忽略的一个细节是:直连路由的生成依赖接口状态,接口down了,直连路由立刻消失,依赖于它的其他路由(比如下一跳指向该接口的静态路由)也会跟着失效。这就是“连锁失效”。

静态路由是管理员手工配置的,格式通常是一个“目的网段+下一跳”的组合。它不参与任何协议协商,没有任何开销计算,配置了就在。简单的静态路由很好理解,但有一个关键陷阱叫递归静态路由。比如我配置:

ip route-static 10.10.20.0 255.255.255.0 10.10.10.1

下一跳是10.10.10.1,路由器必须先在RIB里找到去往10.10.10.1的路由(通常是直连或OSPF),才能把这条静态路由变成可执行的转发表项。如果去往10.10.10.1的路由不存在或不是最优,这条静态路由就停留在RIB里“待决议”,FIB里永远不会有它。我那次凌晨事故,本质上就是这个问题。

所以排查静态路由不通,不要只盯目的网段,先查“去往下一跳的路径通不通”。

2.3 动态协议路由:先建邻居,再传路由,最后上报RIB

以OSPF为例子,要让协议路由表里出现一条路由,要经过邻居建立、链路状态数据库同步、SPF计算三步。

OSPF邻居建立之后,每台路由器都把各自的链路状态通告(LSA)放进链路状态数据库(LSDB),然后每台路由器独立运行SPF(最短路径优先)算法,算出全网拓扑,再以自己为根生成去往各网段的最短路径树。树生成后,每条可达前缀会作为一条路由放进OSPF自己的协议路由表。此时O路由的下一跳是什么?是SPF树里到达该前缀最短路经的“下一跳地址”。

这跟BGP不同。BGP是路径矢量协议,它传递的是“路径属性”而不是链路状态,BGP路由的下一跳往往是邻居地址,可能和自己不在同一个网段——在运营商网络里,BGP下一跳经常需要通过IGP路由去递归解析。所以BGP路由在进入核心路由表之前,几乎都要依赖IGP先把“去往BGP下一跳”的路径建好。这也是为什么在实际部署里,BGP和IGP往往是配合使用的。

动态路由协议的重要性在于它们能自适应网络变化。链路断了,协议感知并重算,RIB随之更新,FIB随后刷新。但它也带来了一个问题:协议路由表会频繁变化,若控制平面的收敛速度跟不上数据平面的需求,就会产生短暂的丢包或环路。所以现代网络设备做了很多优化,比如OSPF的增量SPF、BGP的增量更新,目的都是缩短从“协议表变化”到“FIB更新”的时间窗口。

3. 核心路由表RIB的真正工作:跨协议选路、开销比较与递归解析

3.1 候选一大堆,凭什么选你:优先级与开销的组合决策

各协议把自己最得意的路由上报给RIB之后,RIB要做的是“定夺”。假定去往10.10.20.0/24有两条候选:一条来自静态路由,优先级60;另一条来自OSPF,优先级10。RIB直接选OSPF路由,因为华为设备上OSPF优先级数值更小更可信。这就是“跨协议选路”,只看优先级(管理距离),不比较度量值(Cost/Metric)。

但是同一个协议内部,比如OSPF学到两条去往同一网段的路由、开销分别是100和200,RIB选开销100的。开销计算与接口带宽、时延等相关,不同厂商计算公式略有不同,但原则一致:开销小者优先。这就是“同协议内选路”,只比较度量值,不看优先级。

一句话总结:跨协议比管理距离,同协议比度量值。这两步做完,RIB里一个前缀就基本锁定了唯一最优路径(ECMP等价路径可以保留多条)。

实际工作中需要注意一种情况:某协议的路由因为度量值更优,压制了另一个协议的候选,而这个“更优”的协议本身状态不稳。比如OSPF的优先级高于静态路由,OSPF学来的路径因为链路抖动反复计算,去往核心网段的路由也在震荡;此时如果有一条静态路由作备份,但因为优先级劣后于OSPF,一直处于“备胎”状态。当OSPF振荡导致路由撤回时,静态路由立刻顶上,等待OSPF恢复后再次抢占。这个切换过程虽然快,但每一轮抢占和切换,都会有短暂丢包。所以设计备份路由时,一定要考虑协议优先级带来的切换行为和震荡风险。

3.2 递归解析:路由条目从“半成品”变成“可执行程序”

RIB选出来的路由,很多还不是“成品”。比如一条BGP路由下一跳是203.0.113.1,但出接口不明确,RIB需要再查一次路由表,找到去往203.0.113.1的最优路径,才能确定最终从哪个接口发出。这个过程叫路由迭代或递归查找。

一旦递归解析成功,RIB才会生成一条包含“出接口、下一跳MAC、封装信息”的完整转发条目,提交给FIB。如果递归解析失败,路由条目就停留在RIB里等待,不会进入FIB。

这解释了为什么有时你在路由表里能看到一条路由,标志是“Inactive”或者“迭代中”,数据包却无法转发。判断方法很简单:看路由是否Active/Up,以及FIB里是否存在对应条目。递归解析是控制平面到数据平面之间一座关键的桥,桥断了,路由再多也是纸上谈兵。

3.3 等价多路径ECMP和缺省路由:RIB里的两个特殊存在

ECMP(Equal-Cost Multi-Path,等价多路径):当RIB发现同一个前缀存在两条开销完全相同、来自同一协议的路由时,可以同时保留两条作为转发路径,流量按照哈希算法分散到两条链路上。这就是负载均衡的基础。FIB里对应一个前缀会有两条出接口条目。需要注意ECMP的不均匀问题:默认哈希基于五元组,某些大流量(比如某个IP的持续大流量跑在同一条TCP连接上)会全部命中同一个出接口,造成一条链路拥塞而另一条闲置。后来我一般会用增强的哈希算法或者按目的IP哈希,把大流量拆散。

缺省路由(默认路由):RIB里的一个特殊条目,前缀是0.0.0.0/0。它匹配所有未命中的目的地址。缺省路由本身就是一个“最后兜底”的设计,可以来自静态配置,也可以由OSPF的Stub区域自动生成,或由BGP传递。它的递归解析同样遵循上面的规则——哪怕你配了0.0.0.0/0指向某个出口网关,网关地址不可达,这条缺省路由一样不会进FIB。

4. 最长前缀匹配:FIB查表的硬规则与底层优化逻辑

4.1 为什么要“最长”前缀,而不是“最具体”的直觉

FIB里存着大量前缀,一个数据包到达时,目的IP要和FIB的所有条目做匹配。假如FIB里有三条路由:10.0.0.0/8、10.10.0.0/16、10.10.10.0/24,此时目的IP是10.10.10.5,它同时匹配三条路由,转发表该选哪一条?

规则叫最长前缀匹配(Longest Prefix Match,LPM):谁的掩码越长,谁就更精确,就选谁。所以上面这个例子会选10.10.10.0/24。如果目的IP是10.10.20.5,只能匹配10.0.0.0/8和10.10.0.0/16,选掩码更长的10.10.0.0/16。

为什么要这么设计?核心原因是转发的“精确性优先”。越长的前缀表示更明确的目的地范围,路由器应当将报文按最精确的路径送出去,而不是用模糊的大范围路径去送。这个规则在硬件查表时就固化下来了,任何转发芯片都遵循。

实际网络里因为LPM而产生坑的地方在于“路由汇总”。把多条细路由汇总成一条大路由,可以缩减路由表规模、减少FIB资源占用,但如果汇总范围太粗,比如把10.10.0.0/16汇总成10.0.0.0/8,就可能把不该走这条路的目的地址也吸引进来,出现次优路径甚至路由黑洞。所以汇总之前务必确认不存在“需要更精细路由”的例外网段。

4.2 从线性查表到硬件加速:FIB查找为什么快

如果FIB是线性列表,每来一个包就从头到尾遍历一遍,那100G甚至400G接口下性能根本不可想象。现代转发设备在FIB查找上使用了专门的数据结构,常见的是基数树(Radix Tree/Trie)和哈希表变体。

基数树的核心思想是将IP地址的二进制位作为树的路径分支,每个节点代表一个前缀的某一位,“1”走右分支,“0”走左分支。查找过程就是沿着目的IP的二进制位从根往叶子走,路径上遇到的每个“已标记为路由前缀”的节点都是一次匹配,走到叶子之后回溯,取最近一次匹配的“该前缀对应条目”。这个过程的时间复杂度近似等于IP地址位数(IPv4为32),是常量级别的,和表项数量无关。这就是硬件转发能线速的原因。

所以理解FIB不要把它想象成一张Excel表,而是一棵精心构造的二叉树,表项再多,查找时间基本恒定。这也能解释为什么有些低端设备在路由条目暴增后转发性能下降——它们可能在软件层面用性能较差的算法处理溢出条目,进入慢路径转发。

4.3 同一前缀对应多个下一跳:FIB里的哈希决策

当ECMP生效时,FIB里一个前缀会对应多个下一跳和出接口。这时转发芯片要做哈希运算,从几个等价出接口里选一个。常见的哈希输入是五元组(源IP、目的IP、源端口、目的端口、协议号),也有的设备支持自定义哈希因子。

这里有一个实际运维中容易忽略的点:哈希只要变化,流量的分布就可能全面洗牌。某条链路闪断,ECMP成员数量从4条变成3条,哈希算法重新计算,可能导致瞬时大量TCP连接并发重路由,引发TCP重传风暴。我在实际网络里见过割接时因为ECMP成员变化导致整段网络拥塞的情况。所以做涉及ECMP链路变更的割接,要评估哈希重分布的影响范围,甚至预先把某些成员设为“缓存路径”让流量逐步迁移。

5. 实战复盘:我在割接现场如何一步步定位“路由表有、转发没有”的问题

5.1 故障表象:OSPF邻居全Up,核心网段却间歇性不可达

回到开头的割接事故。新核心交换机上线,OSPF邻居和IS-IS邻居全部建立完成,所有接口状态up/up。业务方反馈:部分服务器访问新核心下挂的网段时,丢包和抖动持续存在,但并不是完全不通。

一开始我怀疑是新设备下发电缆或光模块问题,把物理层查了一遍,没有任何告警。又怀疑是STP或环路,也没找到异常。然后我开始看路由表,用类似如下命令逐条查询:

display ospf routing # 查看OSPF自己的协议路由表 display ip routing-table # 查看核心路由表(RIB) display fib # 查看转发表

三种表逐一对比后,我发现了一个关键差异:OSPF协议路由表里,去往某核心网段10.10.20.0/24的路由存在且状态正常;核心路由表里这条路由也存在,但状态标志不是“Active”,优先级被另一条更高优的静态路由压制;而FIB里,压根没有这个前缀对应的转发条目。同时,那条压过OSPF的静态路由,下一跳指向的接口已经down了。

5.2 根因链条:一根直连路由失效引发的连锁反应

进一步深挖后,根因清晰了。

旧核心设备上原有一条静态备份路由:目的10.10.20.0/24,下一跳指向某旧网关10.10.30.1。新核心上线后,工程师把旧网关的连接拆除,但静态路由没有同步删除。由于华为设备上静态路由优先级60高于OSPF的10,RIB选择了这条“已经失效”的静态路由。为什么失效?因为去往下一跳10.10.30.1的直连路由随着接口拆除已经消失,递归解析失败,这条静态路由无法生成FIB条目。

最终效果是:RIB里的最优路径是一条无法生效的死路由,而真正可用的OSPF路由被压制在下面“备而不用”。数据包在RIB层面看起来有去路,但FIB里查不到任何转发条目,于是部分流量只能依赖其他不完整的路径转发,出现间歇性丢包。

我用如下命令确认了递归解析的失败状态:

display ip routing-table 10.10.30.1 verbose # 查看去往静态路由下一跳的路由详情

输出显示去往10.10.30.1的路由已不存在。到这个程度,问题已经定位得很准确。

5.3 修复动作与验证思路:删掉失效静态路由,让OSPF上位

修复动作其实很简单,但背后的思路值得记录下来。

先在配置模式下删除那条失效的静态备份路由:

undo ip route-static 10.10.20.0 255.255.255.0 10.10.30.1

删除之后,核心路由表会立刻重新评估10.10.20.0/24的候选路由:OSPF路由成为唯一最优,优先级10,进入Active状态。随后控制平面会执行递归解析和FIB下发。验证时我做了三件事:

  1. 再次对比三条表:OSPF协议路由表、核心路由表、FIB中10.10.20.0/24条目均存在且生效。
  2. 执行ping和tracert,从业务侧到目标服务器路径恢复稳定,无丢包。
  3. 观察了一段时间的流量监控,确认抖动消失。

最后我花了半小时把全网所有“指向已拆除接口的静态路由”全部清理了一遍,这个动作其实比这单条故障本身更重要。

5.4 从这次事故里提炼的通用排查顺序

这次故障让我总结出一套相对通用的“路由类排查三步法”,现在基本沿用于所有路由类疑难问题:

  1. 三表对照:协议路由表、RIB、FIB逐条对比,找到差异条目。差异就在故障附近。
  2. 下一跳回溯:检查有差异的条目,递归解析它的下一跳是否可达、是否有最优路由、是否被其他路由压制。
  3. 优先级审查:看是否有优先级更高的静态路由或协议路由在“占位”,造成真正可用的路由被压制。

这个方法不依赖任何具体厂商,所有支持RIB/FIB概念的网络设备都适用。排查效率比漫无目的地抓包高得多。

6. 顺着表看流量:抓包、硬件表项与验证命令的配套使用

6.1 别只信路由表,数据包才是最终裁判

路由表、转发表都是路由器内部的“说法”,最终数据包走哪条路,必须以实际转发行为为准。所以我通常会把“查表看路由”和“抓包看转发”结合起来验证。

最基础的方法是tracert。逐跳查看路径经过哪些设备,能快速发现路径和路由表预期不一致的情况。更精细的做法是在转发路径的关键节点上做镜像抓包,确认报文实际从哪个接口发出。当怀疑FIB和RIB不一致时,抓包能看到最真实的证据:接口上根本没有报文进出,说明路由表里的路径是“纸面路径”。

我见过一种情况:路由表里明确写着去往某网段走接口A,但抓包发现所有流量从接口B出去了,原因是硬件表项下发异常或存在多个VRF导致查表空间选错。这种场景下,只信路由表完全没用,必须抓包+查看硬件表项双管齐下。

6.2 硬件转发表项的查看与解读

在华为设备上查看FIB的常用命令是:

display fib

输出会列出前缀、掩码、下一跳、出接口和标志位。如果看到某个前缀的下一跳和RIB里的不一致,或者出接口不符合预期,基本可以判断是FIB下发异常。

思科设备上对应的命令是:

show ip cef

CEF(Cisco Express Forwarding)就是思科的FIB实现。输出中有一个重要的标志叫“attached”或“receive”,分别代表直连路由和本机路由。在排查时,我们要关注的是“下一跳和出接口是否和预期一致”。

6.3 刷新与重建:当FIB确实“脏”时怎么办

如果确认FIB和RIB不一致,而且不是递归解析、路由抑制等逻辑原因,而是硬件表项“脏”了,可以尝试刷新FIB,让设备重新从RIB下发一次全部条目。

在华为设备上可以执行:

reset ip fib

思科设备上一般不用重置整个CEF,可以针对性操作:

clear ip cef prefix

这种刷新动作要谨慎,尤其不要在业务高峰期执行。重置FIB会让硬件转发表项短暂清空再重建,期间流量可能完全中断或出现震荡。我一般只在低峰时段、维护窗口内操作,并且提前备份配置、准备回退方案。

如果刷新后FIB仍然异常,那就需要检查设备的硬件资源:表项容量、内存、转发芯片状态,必要时重启整台设备的部分线卡或整机。但这种情况很少见,多数FIB异常在删除错误路由或修正递归路径后都能自然恢复。

6.4 命令输出里的几个“暗号”:Active、Inactive、Direct、Static

很多新手看不懂路由表输出里的标志位,这里挑最关键的几个说透。

  • “Active/Up”:路由条目经过选路和递归解析后被确认为可用,这时它才会进入FIB。这是你查路由表时最想看到的标志。
  • “Inactive”:路由条目存在于RIB但不是当前最优选路结果,可能被更高优先级路由压制,或者递归解析失败。这是最危险的标志,无效但占位,会掩盖真实可用路由。
  • “Direct”:直连路由,接口up就存在,接口down就消失。
  • “Static”:静态路由,优先级按厂商不同而不同。它是排查故障时最常见也最容易被遗忘的“捣乱者”。

判断一条路由是否真正能转发数据,最稳妥的标准是:它在FIB里有对应的活动条目。协议路由表里的存在只是起点,不是终点。

6.5 一张实操对照表:四个表什么时候看、看什么

为了便于快速上手,我把四个关键概念做成了对照表,我自己带新人时也直接发这张表:

概念俗称归属平面内容特征查看手段排查价值
协议路由表协议专属路由集合控制平面某个协议自己的路由,可能存在重复前缀display ospf routing / bgp routing-table确认协议学到了什么
RIB核心路由表/全局路由表控制平面跨协议选路后的最优候选集合display ip routing-table确认最终选路结果
FIB转发表数据平面可直接执行的转发条目,硬件使用display fib / show ip cef确认实际转发是否生效
硬件转发表项芯片级表项数据平面FIB在芯片内的具体实现display forwarding-table / show platform确认硬件是否接收下发

使用这张表的逻辑也很简单:业务通不通优先查FIB;路由学没学到查协议表;选路合不合理查RIB;如果FIB和RIB冲突,再下沉到硬件表项。

7. 最后再说一点我自己的习惯

每次遇到路由类故障,我都会拿三张表对照一遍,这个习惯救过我很多次。有一次在某厂的线上环境里看了一段BGP路由,协议表里明明有通告过来的100.64.x.0/24,但核心路由表里死活找不到,最后发现是as-path过滤导致路由被拒收,协议表里的邻居学到的路由被策略挡在了RIB之外——这种问题,只查FIB根本看不出来。

核心路由表是决策中枢,协议路由表是原材料,FIB才是最终执行者,三者任何一个环节脱节,表象都是“路由通了但业务不通”。把这条链路装进脑子里,排查的每一步就都是有的放矢了。

如果看完这篇你能记住一句话,我希望是:以后排查路由问题,先问自己“我现在看的表,到底代表‘知道的’还是‘执行的’”。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询