面试问到 OSPF,很多人第一反应是掏出手机里的笔记开始背 LSA 类型、背 DR/BDR 选举规则,背到一半被面试官一个问题打断:"那你觉得它跟 RIP 最大的区别是什么?"然后现场安静三秒。这一章我们把 OSPF 当成一个完整的东西来拆,不讲碎片知识点,而是把它的骨架、行为、设计思路和面试官真正想听的回答框架串起来。本文基于我准备网络岗位面试时的实际复习笔记改写,适合校招、社招以及准备 H3C/Cisco 认证的朋友,重点讲透 OSPF 的底层逻辑和面试高频追问点。
1. 面试官问"讲一下OSPF":先说出链路状态这四个字
1.1 链路状态与距离矢量:一句话讲清本质区别
我在前面章节里反复强调过一个观点:任何路由协议面试题,先定位,再展开。OSPF 的定位就四个字——链路状态。面试官让你"讲一下 OSPF",你开口第一句话应该是"OSPF 是一种基于链路状态的内部网关协议,运行在单域内,通过 SPF 算法计算最短路径树"。
这句话的信息量比说"OSPF 是一个动态路由协议"大得多。因为"动态路由协议"这个说法把 RIP、OSPF、IS-IS、BGP 全装进去了,等于没说。而"链路状态"直接划清了阵营。
距离矢量协议(RIP、EIGRP 的旧版本实现思路)的核心行为是"我只告诉你我去哪儿花多少跳数",每个路由器都像一个只知道自己家门口的人,邻居说什么就信什么,所以容易产生环路,需要靠水平分割、毒性逆转这些机制来兜底。OSPF 则完全不同:每台路由器把自己的接口地址、掩码、开销、邻居信息广播出去,让全网所有 OSPF 路由器最终拿到一份完全相同的"地图"——也就是 LSDB(链路状态数据库),然后各自独立用 Dijkstra 算法算出最短路径。
这个差异在面试里可以直接类比:距离矢量是"道听途说",链路状态是"自己看地图规划路线"。后者不会轻信别人的结论,所以天然无环、收敛快。把这个本质说清楚,比背十个知识点都有用。
1.2 SPF算法与LSDB:OSPF的两个核心家底
紧接着,面试官大概率会追问"那 LSDB 里装的是什么?SPF 是怎么跑的?"
LSDB 里装的不是路由条目,而是 LSA(链路状态通告)。每一条 LSA 描述的是某个路由器或者某条链路的真实状态,比如"路由器 R1 在区域 0 里,连接了两个网段,通过端口 192.168.1.1 连到 R2,cost 是 10"。这些 LSA 汇总在一起,就能还原整张区域拓扑。
SPF 算法把路由器当作节点、链路当作边、链路的 cost 当作边的权重,从本机出发计算到每个节点的最短路径,最终生成一棵以自己为根的最短路径树,树上每个节点的路由信息就变成了路由表条目。这里有个细节值得在面试里主动提一句:SPF 是每台路由器独立计算的,不是别人算好告诉你的,这跟距离矢量协议有本质区别。
还有个容易被追问的点:LSDB 怎么保证全网一致?靠的是可靠洪泛。路由器收到新的 LSA 后,会向除接收接口外的所有接口转发,接收方必须在超时前回复 LSAck 确认。没收到确认就重传。这套机制保证了"地图"最终一致。
1.3 OSPF凭什么替代RIP:收敛、无环、开销
"既然 RIP 也能跑,为什么现在主流网络全是 OSPF?"这也是高频题。我从三个维度给过自己标准答案,按顺序说:
第一,收敛速度。RIP 靠周期性广播触发更新,默认 30 秒发一次,一条路由失效要等若干轮通告,甚至要等 180 秒超时;OSPF 是拓扑变化立刻触发 LSA 更新,收到更新后马上重新计算,秒级甚至毫秒级收敛。
第二,选路标准。RIP 只看跳数,两条路一条是 56K 拨号链路但跳数少、一条是千兆专线但跳数多,RIP 会选拨号,非常不符合直觉;OSPF 的 cost 默认按带宽计算,公式是 10^8 / 接口带宽,100M 接口 cost 为 1、千兆接口也是 1(因为结果向下取整),至少量纲是跟带宽挂钩的。
第三,环路抑制。距离矢量协议需要额外机制防环,而链路状态协议用一张完整拓扑图计算,SPF 得出的结果本身就无环,这是结构性优势。
Interview tips:回答完这三个点之后,可以自然带一句"当然 OSPF 也有代价,它需要更多内存和 CPU 来计算,所以引入了区域化设计来缩小 LSDB 规模"——这句话是给下面要讲的区域做铺垫,显得你有全局观。
2. 区域与路由器角色:OSPF的骨架不能答错
2.1 为什么所有道路都通向Area 0
OSPF 用区域划分来缩小 LSDB 规模,这个设计动机很容易理解:没有区域的话,几千台路由器各自维护一张全国级拓扑图,内存和 CPU 都扛不住。但区域之间怎么组织,是有严格规定的:所有非骨干区域必须直接连接骨干区域 Area 0,跨区域路由必须经 Area 0 中转。
面试官常问"为什么必须有 Area 0?"我的答法是:区域化之后,区域间的路由信息由 ABR 汇总转发,如果允许任意区域互联,就可能出现两个区域之间互相通告路由、形成环路的问题。把 Area 0 设成唯一的枢纽,让所有区域都以它为中心星型连接,等于人为规定了一个无环骨架。这是一条硬性的拓扑约束,不是偏好。
顺带一提,如果某个区域实际拓扑上没连到 Area 0,可以用虚链路(virtual link)逻辑上把它接到骨干。虚链路在面试里出现的频率不高,知道它是"跨中间区域打通到 Area 0 的逻辑隧道"就够应付大多数题目了。
2.2 内部路由、骨干路由、ABR、ASBR的分工
OSPF 路由器角色是另一个必考判断题。区分标准是接口所在区域,不是设备型号:
| 角色 | 判定标准 | 职责要点 |
|---|---|---|
| 内部路由器 Internal Router | 所有接口都在同一个非骨干区域 | 只维护本区域 LSDB,跑本区域 SPF |
| 骨干路由器 Backbone Router | 至少一个接口在 Area 0 | 维护 Area 0 的 LSDB |
| 区域边界路由器 ABR | 同时连接 Area 0 和其他区域 | 在区域间传播路由摘要,汇总可选 |
| 自治系统边界路由器 ASBR | 引入了外部路由(如重分发静态、直连、RIP 路由进 OSPF) | 生成 Type 5/Type 7 LSA |
最容易答错的是 ABR 和 ASBR 的混淆。ABR 强调"连接多个区域",ASBR 强调"连接外部路由协议"。一台路由器完全可以同时既是 ABR 又是 ASBR,但两件事的逻辑不同。
2.3 ABR的隐藏行为:三类LSA的生成与汇总
ABR 的行为是面试中"理解深度"的试金石。当一台路由器成为 ABR 后,它会做两件关键事情:
第一,把本区域的路由汇总成 Type 3 LSA(Summary LSA)通告给其他区域。注意,这个行为做了"信息降维"——区域 A 内部有 500 条路由,ABR 发到区域 B 的 Type 3 里只有路由前缀和 cost,不再携带区域内完整的拓扑链路信息。这就是区域划分能缩小 LSDB 的根本原因。
第二,可以在区域边界配置路由汇总(area-range),把连续的网段汇总成一条路由通告出去,比如把 10.1.0.0/24 到 10.1.255.0/24 汇总成 10.1.0.0/16。汇总减少了区域内路由数量和路由表规模,代价是可能引入次优路径。
3. LSA类型是必考硬货:从Type 1到Type 7一张表理清
3.1 区域内核心:Type 1和Type 2
LSA 类型是 OSPF 面试的"硬通货",每种类型的生成者、传播范围、包含内容都要能快速说清。我建议先记区域内两块基石:
Type 1 Router LSA:每台路由器在每个区域都会生成一份,描述自己的接口、链路邻居和链路 cost。注意"每区域一份",如果一台路由器同时在三个区域,它就会生成三份 Type 1。传播范围仅在单个区域内。
Type 2 Network LSA:由广播网段上的 DR 生成,描述这个网段上有哪些路由器(DR、BDR、DROTHER 都列进去),相当于把一个多路访问网段"物化"成一个伪节点。传播范围同样限于本区域。
面试里有个经典的联动问法:"区域内路由是怎么算出来的?"答案是:靠 Type 1 + Type 2 还原区域完整拓扑,然后 SPF 计算。所以区域内路由也叫"拓扑计算出来的路由"。
3.2 跨区域与外网的桥梁:Type 3、Type 4、Type 5
出了区域,信息就发生了变化:
Type 3 Summary LSA:由 ABR 生成,描述某个区域内的路由前缀及其 cost,通告到其他区域。区域间路由的本质是基于这些"摘要信息"计算的,不再做全拓扑 SPF。面试官如果问"区域间路由为什么不精确",原因是 Type 3 只携带目的地和 cost,不携带沿途完整路径信息。
Type 4 ASBR Summary LSA:由 ABR 生成,用来通告"本区域内有个 ASBR 在哪里,它是可达的"。它解决的问题很实际:区域内的路由器要知道去 ASBR 的路径,才能去访问由 ASBR 引入的外部路由。
Type 5 AS External LSA:由 ASBR 生成,描述外部路由前缀、下一跳和 cost。传播范围是整个 OSPF 域,除了 Stub/Totally Stubby 区域(后面细说)。
把 Type 3、4、5 放在一起记有个口诀:Type 3 是区域间的"路条",Type 4 是 ASBR 的"路标",Type 5 是"外网的路条"。我当年面试时靠这个口诀把混淆问题全避开了。
3.3 NSSA里的Type 7:例外中的例外
Type 7 NSSA External LSA 是专门给 NSSA(非完全末梢区域)用的。NSSA 区域不允许 Type 5 LSA 进入,但区域内又允许存在 ASBR、允许引入外部路由,那这些外部路由怎么描述?就用 Type 7。当 Type 7 经过 ABR 进入普通区域时,ABR 会把它翻译成 Type 5 继续传播。
这里有个面试高频改错题:"外部路由在 NSSA 里用什么 LSA 承载?"答案必须是 Type 7,不是 Type 5。另一个关联题是"Type 7 和 Type 5 转换时 cost 怎么处理?"默认情况下,翻译后的 Type 5 会保留 Type 7 的 cost 类型和开销,除非在 ABR 上单独配置。
| LSA 类型 | 名称 | 生成者 | 传播范围 | 核心作用 |
|---|---|---|---|---|
| Type 1 | Router LSA | 每台路由器 | 本区域 | 描述自身链路状态 |
| Type 2 | Network LSA | DR | 本区域 | 描述多路访问网段成员 |
| Type 3 | Summary LSA | ABR | 跨区域 | 描述区域间路由 |
| Type 4 | ASBR Summary LSA | ABR | 跨区域 | 描述 ASBR 可达性 |
| Type 5 | AS External LSA | ASBR | 全OSPF域(特殊区域除外) | 描述外部路由 |
| Type 7 | NSSA External LSA | NSSA内ASBR | NSSA区域 | 描述 NSSA 外部路由,由 ABR 翻译成 Type 5 |
4. 邻居状态机和报文:把"邻居起不来"讲得明明白白
4.1 Hello、DBD、LSR、LSU、LSAck各自的活
OSPF 的报文类型是面试里面很容易被连环追问的一环。我建议把五种报文按"邻居关系建立过程"来记,而不是孤立记名字:
Hello 报文:周期发送用来发现和维护邻居,同时也是选举 DR/BDR 的载体。广播型网络默认 10 秒发一次,NBMA 网络 30 秒一次。Hello 里携带区域 ID、认证信息、Hello/Dead 定时器、路由器优先级、DR/BDR 接口地址、邻居列表等参数——这些参数不匹配,邻居就起不来。
DBD 报文(数据库描述报文):用来描述发送方 LSDB 里都有哪些 LSA,注意它只携带 LSA 的头部摘要,不携带完整内容,相当于"目录"。
LSR 报文(链路状态请求报文):看完目录之后,路由器发现自己缺某些 LSA,就发 LSR 去要,相当于"订货单"。
LSU 报文(链路状态更新报文):真正发送完整 LSA 的报文,承载着 LSA 本体。收到 LSU 后,接收方处理完要回 LSAck。
LSAck 报文:确认收到的 LSU,保证可靠传输。
如果面试官让你用一句话描述这四个报文的协作关系,可以说:"Hello 认识人,DBD 看目录,LSR 提需求,LSU 发货,LSAck 确认。"这种接地气的说法在面试现场特别加分,因为它证明了你是真理解,不是背的。
4.2 七个状态:每个状态在等什么
OSPF 邻居状态机是 Down、Attempt、Init、2-Way、ExStart、Exchange、Loading、Full,八个状态里 Attempt 只在 NBMA 网络上出现,所以常规讨论里常说七个。
逐个理解比死记强:
Down:初始状态,没收到任何 Hello。
Init:收到了对方的 Hello,但对方发来的 Hello 里还没包含自己的路由器 ID。用大白话说,它"看见你了,但你还没看见我"。
2-Way:双方都在对方 Hello 的邻居列表里看到自己了,双向往来建立。多路访问网络上,DROTHER 之间的邻居关系到此为止,不再继续;只有跟 DR/BDR 之间才会继续建立完整邻接关系。这个"为什么 DROTHER 之间只停在 2-Way"是高频题,答案是不需要全互联,避免 LSA 洪泛风暴。
ExStart:开始协商主从关系,交换 DBD 报文前先决定谁当 master,通过路由器 ID 定大小。这个状态也是最典型的 MTU 问题卡死点。
Exchange:互相交换 DBD 摘要,交换完目录就基本摸清对方 LSDB 里缺什么了。
Loading:根据目录发送 LSR 请求缺失的 LSA,对方用 LSU 补齐。
Full:LSDB 完全同步,形成完整邻接关系,可以正常交换路由信息。
我在自己复习时把这些状态各配了一个关键词:等自己、等双向、决定要不要深交、定大小、发目录、补清单、完成。串起来就是一个完整的"从认识到深交"的故事。
4.3 DR/BDR选举规则与两个高频误区
DR/BDR 选举只在广播型(Ethernet)和 NBMA 网络上进行,点到点网络不需要。规则是:先看接口优先级,优先级最高的当 DR、其次当 BDR,优先级为 0 表示永不参与竞选;优先级相同则路由器 ID 大的胜出。
两个高频误区必须提前踩过:
误区一:认为 DR 是"领导",所有流量都要经过它。实际上 DR/BDR 只是 LSA 的"发言人"和收集点,数据平面流量不经过它。所有路由器把 Type 2 的链路信息通告给 DR,DR 再广播出去,这样网段上从 n(n-1)/2 条邻接关系降到约 2n 条。
误区二:认为新加入的高优先级路由器能抢走 DR 位置。OSPF 的选举是非抢占式的——DR/BDR 选定之后,就算来了优先级 255 的新路由器,它也最多当 DROTHER,直到 DR 故障,BDR 接任 DR,再重新选 BDR。这个特性的意义是避免频繁选举导致网络震荡,回答"DR 挂了会发生什么"时要带上它。
5. 特殊区域逐层拆解:Stub和NSSA为什么这么设计
5.1 四类特殊区域一张对比表
特殊区域这个考点,表面上是记忆题,实际上是"设计逻辑"题。所有特殊区域都是为了同一个目的:减少某些区域的 LSDB 规模和路由表规模,节省内存 CPU。区别在于"可以牺牲什么"。
| 区域类型 | 允许 Type 3 | 允许 Type 4 | 允许 Type 5 | 允许 Type 7 | 区域内能有 ASBR 吗 | ABR 是否注入默认路由 |
|---|---|---|---|---|---|---|
| 普通区域 | 是 | 是 | 是 | 否 | 是 | 否 |
| Stub 末梢区域 | 是 | 否 | 否 | 否 | 否 | 是(Type 3 默认路由) |
| Totally Stubby 完全末梢区域 | 否(仅默认路由) | 否 | 否 | 否 | 否 | 是(Type 3 默认路由) |
| NSSA | 是 | 否 | 否 | 是 | 是 | 是(Type 7 默认路由,可选) |
| Totally NSSA | 否(仅默认路由) | 否 | 否 | 是 | 是 | 是(Type 7 默认路由) |
没有背景知识直接背这张表很痛苦,所以我先讲设计动机。
Stub 区域的设计思路是:如果一个区域里面没有 ASBR、也不需要访问外部路由,那 Type 5 就没必要进区域。去掉 Type 5 之后,区域内路由器内存压力明显下降,出区域的外部流量统一走 ABR 注入的默认路由。
Totally Stubby 更进一步:连 Type 3 都不想要,区域内只保留本区域路由和一条默认路由。实现方式是在 ABR 上把其他区域的 Type 3 全部过滤掉,只留默认。这是 Cisco 私有概念但 H3C 也支持,我们国内面试基本默认双方都懂。
NSSA 是"我要 Stub 的省内存好处,但我又必须引入外部路由"的折中。它不允许 Type 5,但它允许区域内部署 ASBR,ASBR 生成 Type 7 描述外部路由,由 ABR 翻译成 Type 5 之后再往外传。这样区域内被保护了、外部路由也进来了。
5.2 默认路由在特殊区域里的走向
特殊区域里默认路由的产生位置和 LSA 类型,是面试官最爱扣的细节:
Stub 区域:由 ABR 生成一条 Type 3 默认路由(0.0.0.0/0)注入区域。
Totally Stubby 区域:同样由 ABR 注入,也是 Type 3 默认路由,同时过滤掉所有其他 Type 3。
NSSA 区域:默认路由可以由 ABR 注入 Type 7 默认路由,也可以由区域内 ASBR 自己产生 Type 7。具体走哪种,取决于配置。
我建议记一个原则:默认路由永远朝"离骨干更远"的方向注入,也就是由靠近 Area 0 的一侧发往特殊区域内部。理解了方向,就不容易把"谁产生的"记混。
5.3 面试判断题:看到这些配置你要马上反应过来
面试现场常给一个拓扑和一段配置截图,让你判断区域类型,或者指出"这个配置有问题吗"。
比如配置里有 area 1 stub,而区域 1 里又重分发了一个 RIP 路由,这就是矛盾的——Stub 区域禁止 ASBR。再比如区域 2 配了 NSSA,但 ABR 上没有配置默认路由,面试官问"区域内去外网怎么办",你要能答出 NSSA 默认路由默认不自动产生(和 Stub 不同),需要显式配置,很多人栽在这。
另一个常见判断题:为什么可以把某区域配成 Totally Stubby?判断依据很简单,这个区域没有 ASBR、不需要区域间明细路由、出去全靠默认路由的"边缘区域"(比如分支机构的接入区域),就是典型的适合 Totally Stubby 的场景。回答时带上这个判断逻辑,比直接背命令高级得多。
6. OSPF排错实战:从现象倒推原因的完整链路
6.1 先分清"物理链路通不通"和"OSPF进程通不通"
OSPF 排错是面试实践题的重头戏,也是最容易暴露"纸上谈兵"的地方。我根据自己的排错经验给出一条固定链路:
第一步永远不是看 OSPF 配置,而是确认接口状态和三层连通性。接口 down 了、或者是 shutdown 状态、或者 VLAN 划错口了,后面全白搭。用 display ip interface brief(H3C)或 show ip interface brief(Cisco)看接口处于 up/up,再用 ping 测对端接口地址,确认三层通。
只有物理和三层链路都通了,才轮到 OSPF 进程层面的排查。
6.2 Init与ExStart卡住的三大原因
邻居状态卡在不同位置,对应的原因有明显的规律:
卡在 Init:最常见的是 Hello 参数不匹配。原因包括区域 ID 不一致、Hello/Dead 定时器不一致、认证类型或密钥不一致、两端的网络类型不一致。排查时先 display ospf error / show ip ospf interface 看 Hello 是否成功收发,再看错误计数器里有没有统计增涨。
卡在 ExStart 或 Exchange:第一嫌疑是 MTU 不匹配。OSPF 使用 IP 分片来发送 DBD 报文,当两端接口 MTU 不一致时,大的 DBD 报文在 MTU 小的一端被丢弃,而 OSPF 没有对 DBD 做重传机制(它只有 LSA 的重传),所以两边一直停在 ExStart 协商状态,来回折腾。典型修复是让两端 MTU 一致,或者在接口上关闭 OSPF 的 MTU 检查。
还有个常见坑是路由器 ID 冲突。两台路由器配了相同的 router-id,会导致邻居关系反复震荡,一会儿 Full 一会儿 Down。排查时用 display ospf peer 看邻居状态是不是在跳变,再去核对 router-id。
6.3 MTU不匹配的经典现场:从现象到结论
我印象最深的一个现场是:两台 H3C 交换机相连,一边接口 MTU 配置成 1400,另一边是默认的 1500,结果 OSPF 邻居始终停在 ExStart,好不容易到 Exchange,DBD 反复发不完整,邻居状态就来回抖。
排查链路完整走一遍是这样:
先用 display ospf peer 看到邻居卡在 ExStart,再用 display ospf interface 查两端接口参数——发现 MTU 不一致。然后把两端 MTU 统一改回 1500,邻居在几秒内直接走到 Full。
这类问题在面试里如果被问到,你没有实际经验也能答出主线逻辑:先判断卡的状态,再逐一核对 Hello 参数、MTU、认证、区域 ID。关键是把"不同状态对应不同原因"这个思路讲出来,面试官会觉得你排过真的故障。
我还踩过一个更隐蔽的坑:ospf 接口下网络类型不一致。一边是广播(broadcast)一边是点到点(p2p),邻居也能起来,但 DR 选举的行为就乱了,可能导致一边认为有 DR、另一边认为没有 DR,LSA 谁也学不全。遇到邻居 Full 了可路由学不全的情况,优先查两端的网络类型配置。
7. 配置速查与面试回答框架:把知识变成能说出口的话
7.1 Cisco与H3C基础配置对照
纸上谈兵结束,最后落到配置。两个主流厂家命令结构很接近,都会用通配符(反掩码)宣告网段。下面是同一套拓扑——两路由器通过 GigabitEthernet 互联,一个属于 Area 0,一个属于 Area 1——的对照:
Cisco IOS 配置:
router ospf 1 router-id 1.1.1.1 network 10.0.12.0 0.0.0.255 area 0 network 192.168.1.0 0.0.0.255 area 1 area 1 stubH3C 配置:
ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 10.0.12.0 0.0.0.255 area 0.0.0.1 network 192.168.1.0 0.0.0.255 stub两个关键差异要记牢:Cisco 的 network 命令在 router ospf 进程视图下宣告,H3C/Huawei 的 network 命令写在 area 视图下;Cisco 的区域号写十进制数字(area 1),H3C 更标准写法是 area 0.0.0.1 这种点分十进制的区域 ID,也接受简写。
另外,大厂面试有个隐形加分项:能说出"只要接口地址落在 network 的反掩码范围里,该接口就会启用 OSPF,并且属于指定的区域"。很多人只会抄命令,说不出宣告逻辑,这个细节一出口就拉开差距了。
7.2 参考带宽与cost调整:一道送分题
OSPF 默认计算公式是 cost = 10^8 / 接口带宽(Mbps),所以 100M 接口 cost=1,10M 接口 cost=10,千兆万兆算下来也是 1。现实中如果不调整参考带宽,千兆和万兆路径会被当成等价路径,无法体现带宽差异。
调整方法两边类似:
Cisco:
router ospf 1 auto-cost reference-bandwidth 1000H3C:
ospf 1 bandwidth-reference value 1000参考带宽改成 1000(单位 Mbps)后,千兆接口 cost = 1000/1000 = 1,万兆接口 cost = 1000/10000 = 0.1 会向上取整变成 1,所以要体现万兆优势可能还得调更大。这个计算式面试官常拿来让你口算:参考带宽 1000 的配置下,千兆链路 cost 是 1,那 500M 链路呢?答案也是 1(1000/500=2?不对,是 2)。口算题在这里切记先确认带宽单位,这是易错点。
具体单个接口也能手工改 cost,命令是 ip ospf cost(Cisco)和 ospf cost(H3C 接口视图)。手工改适合做流量策略,比如故意调大某个接口的 cost 让主备路径更清晰。
7.3 一套三分钟OSPF回答框架
面试时如果被要求"系统讲一下 OSPF",按下述顺序讲,三分钟内能把骨架说完,且层层递进、逻辑不断:
第一步,定位:OSPF 是链路状态 IGP,靠 LSDB 和 SPF 算法计算无环路由,替代 RIP 解决了收敛慢、易环、选路不合理的三个问题。
第二步,结构:用区域划分控制 LSDB 规模,所有区域必须连到 Area 0;区域间靠 ABR 传播 Type 3 摘要,外部路由由 ASBR 引入并产生 Type 5。
第三步,行为:邻居通过 Hello 建立,DBD/LSR/LSU/LSAck 四类报文配合完成数据库同步;广播网络上 DR/BDR 负责减少邻接数量;特殊区域(Stub/NSSA)用来进一步裁剪 LSA 规模。
第四步,运维:常见故障排错从接口三层、OSPF peer 状态、LSA 计数三块入手;MTU、认证、区域 ID、网络类型是高频根因。
这个框架我面试时亲测好用,它把零散知识点组织成了一个可复述的系统。面试官顺着任何一块深挖,你前面都已经铺垫好了上下文,不会答跑题。
我复盘整个 OSPF 复习时最大的体会是:不要背"OSPF 有哪些特点"这种散点清单,而是先理解"链路状态"这个范式,再用区域、LSA、邻居状态、特殊区域四个维度去把协议串成一条线。面试官追问的深度是无底洞,但只要你主线清晰,任何一个分支都能快速定位到它在整个协议体系里的位置,回答就不会散。最后分享一个我常用的自我检验方法:合上笔记,对着白板画出一台 ABR 连接 Area 0 和 Stub 区域的拓扑,把三类 LSA 的走向、默认路由的产生位置、邻居可能卡状态的位置全标出来,能完整画出来,这章才算真正过关。