ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OSPF面试高频考点全解析:原理、DR/BDR选举、LSA与排障实战

OSPF面试高频考点全解析:原理、DR/BDR选举、LSA与排障实战 “OSPF都答不上来你让我怎么给你过”这是我面试网络岗时最常听到的一句话。不管是数通、网络安全还是运维方向OSPF几乎是所有面试官默认要问的协议没有之一。你可能会被问到“OSPF和RIP有什么区别”“DR和BDR怎么选举”“stub区域能不能有ASBR”这类问题稍不留神就掉坑里。这篇内容我按自己当年准备面试和后来当面试官的双重视角把OSPF的考点、原理、实操和话术全部梳理了一遍。面向的是准备网络工程师、运维工程师面试的同学也适合刚上手OSPF、想系统补一遍原理的朋友。我尽量把东西讲透把面试官真正想听的答案给你整理出来。1. 面试必须先想明白OSPF到底解决的是什么问题1.1 链路状态协议和距离矢量协议的本质区别很多人一上来就背“OSPF是链路状态协议RIP是距离矢量协议”但面试官紧接着就会问“那链路状态到底是什么意思和距离矢量差在哪儿”这个问题才是真正的分水岭。距离矢量协议比如RIP的思路很简单我只知道“从我这个路由器去某个网段走哪条路最近”这个“近”是邻居告诉我的我根本不了解整张网络的拓扑。你把路由器想象成一个只知道自己家门口有哪几条路的快递员邻居告诉他“去某地走我这儿最划算”他就信了然后在自己脑子里记一条路由。这种做法的问题很致命如果邻居的路由表本身是错的或者环路产生了距离矢量协议只能靠“跳数上限”这种笨办法兜底收敛速度也慢得让人抓狂。链路状态协议就不一样了。每个路由器要做的事情分三步先跟直连邻居建立关系、交换链路状态信息然后每个路由器手里都有一张全网拓扑的完整拼图最后每个路由器自己用SPFShortest Path First最短路径优先算法基于这张完整的拼图独立计算出一棵以自己为根的最短路径树。你可以理解为每个路由器不再听邻居“转述”而是自己手里握着全城的地图每个路口、每条路都清清楚楚然后自己规划最优路线。这就是OSPF和RIP最本质的区别也是面试官最想听你讲出来的东西——OSPF基于完整的链路状态数据库做本地计算天然没有环路风险收敛快RIP靠邻居转述路由信息只能被动防环。1.2 为什么OSPF要搞区域Area设计面试官第二个高概率问题是“既然OSPF这么好为什么还要分区域直接全网一起算不行吗”你想想如果整个企业网几千台路由器都在同一个区域里每台路由器都要保存全网所有链路的详细信息链路状态数据库会变得极其庞大。更可怕的是任何一条链路抖动都会触发全网路由器重新进行SPF计算——这在真实网络里是不可接受的一个小的拨号链路断了可能导致全网路由振荡。所以OSPF引入了区域的概念。它把一个大网络切成多个区域每个区域内收敛自己的链路状态信息区域内部的路由器只需要维护本区域的详细拓扑。区域之间的路由信息传递统一由ABRArea Border Router区域边界路由器来汇总和转发。这就有点像你把全公司的通信录按部门拆开每个部门只维护自己部门的人员名单跨部门的沟通统一走部门对接人效率自然高。经典的OSPF网络设计是“骨干区域普通区域”所有普通区域都必须物理或逻辑上连接到骨干区域Area 0。为什么要这么设计因为OSPF要求所有非骨干区域之间的通信必须经过骨干区域这能避免区域间路由环路。如果某个区域没有直连Area 0的条件还得用虚链路Virtual Link去“逻辑上连到骨干”——这也是面试题里的常客。2. 高频必考邻居建立、状态机与DR/BDR选举2.1 Router ID一个看似简单但全场都会追问的细节题目里有一句热词是“ospf 1 router-id 1.1.1.1”这其实透露出一个高频考点Router ID的选取规则。Router ID在整个OSPF域里就是这台路由器的“身份证”32位全网唯一。它的选取优先级分三层手工配置的router-id优先级最高。配置命令就是router-id 1.1.1.1这种形式注意这种写法是要进入OSPF进程视图之后配置的。如果没有手工配置路由器会选择所有Loopback接口中IP地址最大的那个作为Router ID。如果连Loopback都没有那就选所有物理接口中IP地址最大的那个。这里有几个非常容易被面试官抓住的细节第一Router ID一旦确定不会因为接口地址变化而改变除非你手工修改或重启OSPF进程第二Router ID不等于接口IP它只是一个标识符不需要路由可达第三修改router-id之后必须重置OSPF进程才能生效命令一般是reset ospf process。注意不同厂商的Router ID选取逻辑在细节上有差异比如华为默认不自动选取、推荐手动配置思科则可以自动选。答题的时候先说通用规则再说“在华为设备上建议手工配置”面试官会认为你有真实设备经验。2.2 Hello报文与邻居状态机把七个状态背熟还远远不够OSPF邻居建立的整个过程是网络面试第六章里最核心的章节。我面试别人的时候几乎每个人都能背出七个状态Down、Init、2-Way、ExStart、Exchange、Loading、Full。但真到了追问环节很多人就露馅了。我建议你这样理解这七个状态而不是死记硬背Down没收到对方任何Hello报文或者不打算和对方建立邻居。Init收到了对方的Hello报文但报文里没有我自己的Router ID说明对方还没“看见我”。2-Way双方都看见了对方。如果是广播网段或NBMA网段这个状态之后要开始选DR/BDR如果不是就直接往下走。Exstart协商主从关系确定DD报文的序列号谁先谁后。Exchange交互DD报文Database Description数据库描述双方把各自LSDB的“目录”交换一遍。Loading根据DD报文里列的条目向对方发送LSRLink State Request链路状态请求请求自己没有的LSA对方回复LSU这个时候才开始真正拉取链路状态详情。FullLSDB完全同步邻居关系正式建立。面试官最容易挖的坑有三个第一个坑2-Way状态是不是正常的很多人以为只有Full才是正常状态、2-Way就是有问题。实际上在广播网段非DR/BDR设备之间会停留在2-Way状态这是完全正常的它们不需要建立Full邻居关系。这时候你能答出来“2-Way是正常的表示双方互为邻居但不交换链路状态”面试官就会点头。第二个坑DD报文里装的是什么很多新手以为DD报文里装的是完整的LSA内容。不对DD报文只是LSA的“摘要列表”包含LSA的头信息类型、LS ID、序列号、老化时间等用于双方交换目录而不是全量数据。真正的LSA详细内容是靠LSR/LSU/LSACK来拉取的。第三个坑为啥要选主从关系为了让DD报文的交换有序进行避免两边同时发、序列号混乱。Router ID大的成为主路由器Master小的为从Slave。从路由器必须等主路由器发DD报文之后才能发自己的。2.3 DR/BDR别只背“优先级大者优先”就完事了“广播多路访问网络里为什么要选DR/BDR”——这个问题几乎必问。原因其实可以从邻居关系数量来理解。在一个以太网段里如果有10台路由器如果每两台都建立Full邻居关系就需要建立C(10,2)45个邻接关系有任何一个新增设备或者链路抖动全网的邻居关系都要震荡。但如果这10台路由器只和DR/BDR建立Full关系其他路由器之间停留在2-Way状态那实际的Full邻接关系只有17个。更关键的是所有非DR路由器只需要把LSA发给DR由DR再转发给所有人这就避免了全网泛洪的冗余风暴。选举规则请你记住这句话先比较接口优先级默认是1越大越优如果优先级一样再比较Router ID越大越优。但是有个极其容易翻车的考点接口优先级为0的设备不参与选举以及DR和BDR一旦选出不会因为新加入一台更高优先级的路由器而立刻抢占只有当现有DR失效后才会重新选举。这个“非抢占性”是高频考点很多人以为优先级高的来了就能当DR这是错的。另外BDR的作用也要说清楚BDR和DR之间、BDR和其他路由器之间也要建立Full邻居关系它会在DR挂掉的时候无缝接替DR的位置同时平时也在接收所有LSA数据保证切换后不需要重新同步。3. 区别高手和新手的分水岭LSA、特殊区域与路由类型3.1 常用LSA类型类型、传播范围和生成者必须对齐面试官问到LSA的时候如果你的回答停留在“LSA就是链路状态通告”那基本就没了。你需要把类型、谁生成的、传播范围、包含什么信息这四件事一一对应清楚。我给你整理了一张表面试前最好背到滚瓜烂熟LSA类型通用叫法生成者传播范围核心内容Type 1Router LSA每台路由器本区域内部本路由器的接口、邻居、链路开销Type 2Network LSADR本区域内部广播网段内有哪些路由器、掩码Type 3Summary LSAABR跨区域可发给其他区域区域间路由汇总信息Type 4ASBR Summary LSAABR跨区域描述如何到达ASBRType 5AS External LSAASBR整个OSPF域外部路由信息比如重发布进来的静态路由Type 7NSSA External LSAASBR在NSSA内NSSA区域内部NSSA里的外部路由这里有个高频追问Type 3在ABR上是怎么产生的ABR收到一条Type 1或Type 2的区域内路由后会把自己作为通告者生成一条Type 3的汇总LSA传播到其他区域。注意这条Type 3的ADV通告者是ABR而不是原来的那台路由器。很多人这一块说不清楚导致后续的区域间路由计算也讲不明白。还有一个容易被坑的点Type 5的传播范围——它虽然从ASBR生成但会泛洪到整个OSPF域除了特殊区域比如stub区域就看不见Type 5。默认情况下Type 5不会在ABR上做汇总除非你手动了summary命令。3.2 特殊区域stub、totally stub、NSSA、totally NSSA的区别特殊区域的题目在网络面试里是区分“背过题”和“真理解”的最佳试金石。先说为什么要有特殊区域。普通区域里的路由器需要维护域内所有LSA包括大量的Type 5外部路由。对于边缘区域来说这些外部路由往往不是它关心的重点但为了计算路由又必须维持完整的LSDB代价很高。特殊区域的本质就是减少LSDB规模、降低内存和CPU开销通过限制LSA类型来简化路由计算。四种特殊区域我按面试官的提问习惯给你捋清楚stub区域末梢区域不允许Type 4和Type 5 LSA进入区域内的路由器无法学习外部路由。ABR会自动下发一条默认路由Type 30.0.0.0/0给stub区域让区域内路由器把外部流量都指到ABR。注意stub区域里面不能有ASBR也就是说不能做重发布。totally stub完全末梢区域在stub基础上更进一步连Type 3都不允许进入只保留ABR下发的默认路由。区域内的路由器只知道自己区域的路由和一条默认路由其他一概不管。这种区域节省资源效果最明显。NSSA非完全末梢区域解决一个尴尬问题——如果边缘区域里确实需要引入外部路由比如有一条静态路由要重发布进OSPF但它又不想接收其他区域传来的外部路由怎么办NSSA允许本区域内的ASBR生成Type 7 LSA来承载外部路由但不接收从其他区域传进来的Type 5。Type 7在ABR上会被转换成Type 5然后继续在整个OSPF域传播。totally NSSA完全非完全末梢区域在NSSA基础上连Type 3也不接收只保留默认路由和本区域的Type 7。面试中最高频的问题是“一个区域能不能既是stub又是NSSA”——不能两者是互斥的因为stub禁Type 7NSSA必须有Type 7。还有一句话你要记住并会解释所有特殊区域的ABR都会下发默认路由但默认路由的类型可能不同。3.3 O路由的类型O、O IA、O E1、O E2、O N1、O N2这个点面试官不会直接问“路由类型有哪些”而是会给一个场景“我在路由器上看到了O E2和O IA两种路由你解释一下它们传输路径上的区别。”我把它们按优先级和计算逻辑梳理一下O域内路由区域内来自Type 1和Type 2 LSA优先级最高开销就是链路开销之和。O IA区域间路由来自Type 3 LSA由ABR汇总生成表示目标网段在其他区域。O E1 / O E2外部路由来自Type 5 LSA。E1和E2的区别是面试必问。E2比较简单它只累加从ASBR到目标网段的开销不计算ASBR到本地路由器的内部开销——也就是说不管你在OSPF域内哪个位置看到的E2路由开销都一样。E1则不同它会累加ASBR到目标的外部开销加上本地到ASBR的内部开销所以选择E1路由时会考虑到内部的路径长短。O N1 / O N2NSSA外部路由来自Type 7 LSAN1和N2的累加逻辑分别对应E1和E2。面试官常用的追问是“我有一条外部路由静态重发布进OSPF默认是E1还是E2如果想改成E1怎么改”默认是E2在华为设备上重发布时可以通过import-route static type 1改成E1。这个命令你最好记住。3.4 ABR和ASBR不能搞混很多人把ABR和ASBR当成一回事实际上差别很大。ABR是区域边界路由器它同时连接了骨干区域和非骨干区域它的职责是生成Type 3汇总LSA、处理区域间路由以及配置虚链路。ASBR是自治系统边界路由器它的职责是把外部路由重发布进OSPF域生成Type 5 LSA。一台路由器可以既是ABR又是ASBR比如它一边连着Area 0和Area 1一边又做了静态路由重发布但这两种角色解决的问题完全不同。面试官最爱考的一个问题是“ASBR一定是ABR吗ABR一定是ASBR吗”答案是都不一定。ASBR可能只在一个普通区域里做重发布完全不连接多个区域ABR可以不做任何重发布。你要把角色定义和职责边界分开讲清楚。4. 实操向OSPF配置要点与故障排查实录4.1 一个能应付绝大多数面试的OSPF配置模板面试问到“你配过OSPF吗”如果你能当场给出一个完整的配置流程印象分会直接拉满。我用华为设备H3C大体相同给你一个最典型的可复现配置第一步给接口配上IP地址规划好网段和区域归属[Huawei] interface GigabitEthernet0/0/0 [Huawei-GigabitEthernet0/0/0] ip address 10.0.12.1 255.255.255.0 [Huawei-GigabitEthernet0/0/0] quit第二步创建OSPF进程并指定Router ID然后逐个宣告网段并指定区域[Huawei] ospf 1 router-id 1.1.1.1 [Huawei-ospf-1] area 0 [Huawei-ospf-1-area-0.0.0.0] network 10.0.12.0 0.0.0.255 [Huawei-ospf-1-area-0.0.0.0] quit [Huawei-ospf-1] area 1 [Huawei-ospf-1-area-0.0.0.1] network 192.168.1.0 0.0.0.255这里有一个关键细节network命令里的掩码是通配符掩码不是普通子网掩码。0.0.0.255表示匹配10.0.12.0这个网段的前24位。很多人第一次配的时候直接写255.255.255.0结果OSPF死活不通就是这个原因。还有一个细节配置区域的时候如果直接写area 1设备会自动转成area 0.0.0.1两种写法等价。但面试时建议写完整格式显得专业。第三步如果设备要引入外部路由比如静态路由在进程视图下做重发布[Huawei-ospf-1] import-route static type 1第四步验证命令要脱口而出display ospf peer // 查看邻居状态重点看是不是Full display ospf brief // 查看OSPF进程概要、Router ID、区域接口 display ospf lsdb // 查看链路状态数据库 display ospf routing // 查看OSPF路由表 display ip routing-table protocol ospf // 查看OSPF学习到的路由我面试的时候特别看重候选人会不会用display ospf peer看邻居状态因为这是所有OSPF排错的第一步先确认邻居是不是Full再往下查路由。如果你连这条命令都不知道说明你基本没有实战经验。4.2 网络类型为什么有的网段建不起来邻居OSPF的网络类型和链路层有关这是个非常实战的考点。常见四种broadcast广播型比如以太网会自动选举DR/BDRHello时间10秒邻居失效时间40秒。non-broadcastNBMA比如帧中继不会自动选举DR/BDR需要手工指定邻居Hello时间30秒邻居失效时间120秒。华为设备的接口默认是NBMA的话邻居关系不能自动建立需要peer命令手工指定对端。point-to-pointP2P比如串行链路不需要DR/BDRHello时间10秒。point-to-multipointP2MP一种特殊的NBMA改进模式不需要DR/BDR但每台设备都和所有邻居建立Full关系Hello时间30秒。面试官高频问题是“以太网口默认是什么网络类型要不要选DR”答案是broadcast要选。第二个追问是“两个路由器直连一端是广播口一端是P2P口邻居能建起来吗”大概率建不起来因为Hello时间和网络类型不匹配状态会卡在Init或者一直Down。热词里出现“nbma网络”说明NBMA肯定是重点。你要记住NBMA网络下默认不选举DR/BDR、不自动发现邻居必须手工配置peer否则邻居永远停留在Down状态。这个点在面试里你会被直接问“你遇到过OSPF邻居不UP的情况吗怎么排查”4.3 故障排查五步法面试官不一定会让你现场排障但一定会问“如果OSPF邻居不UP你从哪里下手”。我总结了自己这么多年干活的顺序你可以直接背第一步查接口状态看物理口和链路协议是不是UPdisplay interface物理不通一切都白搭。第二步查OSPF配置是否匹配进程号、区域ID、网段宣告是否正确接口上是否做了OSPF静默silent-interface。第三步查网络类型和Hello参数两端Hello时间、Dead时间、网络类型是否一致认证方式和密钥是否匹配。第四步查邻居状态display ospf peer看卡在哪个状态。卡在Init说明收到对方的Hello但没看到自己卡在2-Way说明广播网段DR选举有问题卡在Exstart/Exchange说明DD报文交换异常多半是MTU不匹配。第五步查区域和LSDB类型特别是有特殊区域时检查区域类型是否两端口径一致。比如一边是NSSA一边是普通区域外部路由的学习就会出现各种诡异的问题。注意MTU不匹配是OSPF邻居卡在Exstart状态的经典原因。华为设备默认不对DD报文做MTU检查但思科默认会填MTU字段。面试时如果能主动提一句“检查一下两端接口MTU”很容易让面试官觉得你有真实排障经验。5. 面试官视角高频追问链与答题节奏把控5.1 由浅入深的“追问链”面试官很喜欢用追问链来探测你的知识深度。我作为面试官最常用的链路是这样的“OSPF是链路状态协议和RIP有什么区别”——这是浅层考察概念。“广播网段为什么要选DR”——这是中层考察你对泛洪机制的理解。“DR选完之后新来一台优先级更高的路由器能成为DR吗”——这是深一层考察你是否真懂DR的非抢占性。“选完DR之后非DR路由器之间是什么邻居状态”——这是陷阱层很多人答不出来2-Way是正常状态。“stub区域允许哪些LSA进入”——这是从基础跳到进阶考察特殊区域。“NSSA和stub的区别是什么Type 7是怎么变Type 5的”——这是最高层能完整答出来的人已经是Go-through级别。你要清楚面试官不是想把你问倒而是想看你的思路和知识边界。所以遇到不会的题千万别瞎编你可以说“这个我在生产环境下没有直接处理过但我理解的原理是……”这样反而加分。5.2 那些容易被忽略的细节坑我在面试中统计过OSPF相关的淘汰原因里有相当一部分不是不会而是答错高频细节。第一个大坑是通配符掩码和子网掩码混淆。配置命令里写反的大有人在面试的时候你主动提一句“network命令使用的是反掩码计算方式是255.255.255.255减去子网掩码”就能显出你的功底。第二个大坑是DR/BDR的抢占问题。很多人脱口而出“优先级大的当DR”但忘记了这句话的前提是“选举发生在当前没有DR的情况下”。如果DR已经存在且稳定运行优先级再高也只能等DR挂了才能竞选。第三个大坑是外部路由类型E1/E2搞混。我会故意问“你有一条重发布进来的静态路由默认是E1还是E2开销怎么算”如果你说E1那基本可以断定你只是看过配置命令没实际验证过。第四个大坑是把ABR和ASBR混为一谈。有一个经典问法“哪个路由器会生成Type 5 LSA”如果答“ABR”直接淘汰。Type 5是ASBR生成的ABR生成的是Type 3。第五个大坑是认为所有区域都必须直连Area 0。非骨干区域可以不直连Area 0但必须通过虚链路或者隧道方式在逻辑上连接到Area 0。而且虚链路只能跨越一个普通区域不能跨特殊区域也不能跨两个区域。5.3 准备OSPF面试的节奏建议如果你离面试还有两周别从零开始啃大部头。我的建议顺序是先把邻居状态机和DR选举过程背熟这是最高频考点然后花一天时间把LSA类型和特殊区域捋清楚再花半天时间把配置命令和常用验证命令敲一遍最后花一天时间把故障排查流程过一遍配合一个小实验拓扑练手。实验环境可以用eNSP华为模拟器里面配两台路由器和一台交换机就能搭出一个最基础的多区域OSPF拓扑跑一遍邻居建立、区域间路由和外部路由重发布面试底气完全不一样。我见过太多人面试前疯狂背题但一问“Router ID变了要不要重启进程”就卡住。这类问题没别的捷径就是去实际配一遍改router-id、reset ospf process、看display ospf peer的变化。模拟器不要钱效果却非常实在。6. 我在面试与实战中踩过的那些坑最后聊点纯经验的东西不是标准答案但希望对你面试和上机都有启发。我自己当年第一次在真实网络里配置OSPF就踩了通配符掩码的坑。现场配完发现路由一条都不学display ospf peer里邻居一个都没有排查半天才发现是network命令写成了255.255.255.0改成0.0.0.255之后邻居秒建、路由全来。从此我再也不背通配符直接记公式通配符 255.255.255.255 - 子网掩码0.0.0.255就是255.255.255.255减去255.255.255.0前24位匹配、后8位任意。第二个印象很深的事是在一个多区域网络里一台区域内的路由器学不到外部路由但邻居全部是Full。最后查出来是区域类型不匹配——一头配了stub另一头忘了配stubOSPF里的特殊区域类型必须一致才能正常交换相应类型的LSA。这个案例我后来面试经常拿来问候选人“邻居全Full但学不到外部路由你会先查什么”正确答案是查区域类型和LSDB的类型过滤规则而不是一上来重启OSPF。还有一次是DR选举相关的。两个核心交换机之间跑OSPF本来一台是DR一台是BDR后来加了第三台交换机优先级配成了最大值结果等了很久也没见它成为DR。当时我差点以为是配置没生效后来才想起OSPF的DR选举是非抢占性的。这个案例特别适合面试时讲因为它既体现了你对DR非抢占性的理解又显得你有真实排障经验。如果让我给一个最重要的经验那就是面试的时候不要背定义要讲“为什么”。为什么OSPF要分区域、为什么要选DR、为什么stub区域不允许Type 5、为什么E1和E2计算开销的方式不一样——每个“为什么”背后都是一套网络设计取舍的逻辑。你能把逻辑讲通面试官就不会觉得你是背题的你能用一两个实际踩坑的例子佐证面试官就会认为你真的在网络上干过活。这比刷二十道题都管用。
返回列表