多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

OSPF从邻居状态机到排障实战:数通网络IGP核心详解

OSPF从邻居状态机到排障实战:数通网络IGP核心详解 学员问得最多的OSPF问题往往不是“怎么配”而是“为什么我照着文档敲了邻居就是不起来”。我当年备考数据通信方向的认证时也被OSPF这块折腾得不轻。标题里的“数据通信07-OSPF”如果按课程目录来算只是第七讲可在真实网络环境里它几乎是IGP的代名词也是你从“会配静态路由”走向“能设计整张网络”的分水岭。这篇文章不打算把RFC 2328从头背给你听而是把我这几年在设备上调OSPF、查OSPF、被OSPF坑过很多次之后攒下来的经验一次性整理出来。从邻居状态机、区域与ABR的职责到用 display ospf error 和 debug 一线排障的逻辑都会覆盖。适合正在备考数通认证的学生、刚入行走网络运维的兄弟以及那些“命令能敲通、一问你原理就心虚”的同行。1. 先搞清楚OSPF在数据通信里到底解决什么问题1.1 从RIP到OSPF为什么链路状态协议能取代距离矢量OSPF全称是Open Shortest Path First中文叫开放最短路径优先。它属于IGP内部网关协议是标准的链路状态协议。和它经常放在一起对比的是RIP这种距离矢量协议。RIP的逻辑很简单可以理解成村里传话每个人只知道“我离某个地方还有几跳”然后邻居听邻居说一层层传出去。这套模式最大的问题有两个一是收敛慢RIP靠30秒周期更新哪条链路断了可能要几分钟才能传遍全网二是容易出环路虽然用最大跳数和水平分割做了约束但网络稍微大一点路由环就压不住。早期网络规模小这些缺陷还能忍现在一张企业网动辄几百台设备、几十个网段RIP根本扛不住。OSPF换了一套思路。每台路由器不“传话”而是把自己有哪些接口、接口上连着哪些网段、链路的开销是多少这些信息做成LSA链路状态通告在整个区域里洪泛。最后每台路由器手里都有一张一模一样的“地图”——也就是链路状态数据库LSDB。基于这张完整地图用SPF算法最短路径优先算法本质是Dijkstra算法自己计算出一棵无环的最短路径树。路由器不再依赖邻居“告诉”它路由而是自己拿地图算出来。这个差别带来三个实打实的好处收敛快拓扑变化触发更新不需要等周期计时器秒级甚至毫秒级收敛。无环路每台设备都基于全网拓扑做SPF计算天生是一棵树不会出现RIP那种环路问题。开销可控以cost开销值作为度量综合考虑带宽而不是简单数跳数选路更合理。这也是OSPF能成为数据通信网络主力IGP的根本原因。搞懂这一点再去看后面的邻居状态机、区域设计你才知道每一步都是为了维护这张“全网地图”的一致性。1.2 OSPF适合谁学学完能干什么如果你正在备考华为HCIA/HCIP、思科CCNA/CCNP这一类数通认证OSPF是绕不开的重点模块。认证考试里它占了相当大的篇幅实验题里也经常要求你独立完成OSPF的多区域配置与故障排查。可以说OSPF没过关数通这条路走得会很虚。如果你已经入行做网络运维OSPF更是日常。企业网核心、运营商接入网、数据中心出口到处都能看到OSPF的身影。静态路由适合小规模和固定链路但一旦设备多、路径多、需要自动切换OSPF几乎是默认选择。学会它你至少能做三件事看懂现网里的路由通告关系在链路故障时快速判断是哪台设备、哪个区域出了问题以及独立完成中小型网络的OSPF规划与部署。但我的建议是别把它当成一门“背命令”的课。OSPF最核心的资产是状态机思维——你看到邻居卡在哪个阶段基本就知道问题出在哪一层。这种思维才是排障时真正救命的东西。2. 邻居关系是如何建立起来的状态机与报文2.1 五种报文各有各的活OSPF一共定义了五种报文每一种在邻居建立和路由同步过程中干不同的活。很多兄弟一上来就背报文名字背完就忘因为不理解它们之间的先后关系和用途。我习惯用图书馆借书来打比方。Hello报文是敲门砖。路由器启动OSPF后周期性默认10秒一次往组播地址224.0.0.5发送Hello目的就是发现直连链路上的其他OSPF设备并且协商一些关键参数。邻居建立之后Hello仍然继续发起到保活作用。所以你可以把Hello理解成同事之间每10秒打一次招呼“嘿我还在。”DD报文Database Description是图书管理员的目录页。两台路由器要同步数据不可能直接把整个LSDB丢给对方太耗资源。于是先交换一份“目录”——我手里有哪些类型的LSA、序号是多少、版本是多少。对方看到目录才知道自己缺什么。LSR报文是借书单。对照目录发现自己缺少某条LSA就发LSR去请求。LSU报文是真正的书。里面装着对方需要的LSA完整内容。LSACK报文是签收回执。收到LSU后要给对方确认确保可靠传输。这五种报文环环相扣完整走一遍两台路由器才敢把状态置为Full。2.2 从Down到Full邻居状态机与排查分水岭OSPF邻居状态机是排障的核心工具。我从Down开始一个个说你对照自己的排障场景看。Down状态是初始状态表示还没有收到对端的Hello。如果一直停在这里基本是物理链路不通、接口没宣告进OSPF、或者对端没开OSPF。Init状态比较有迷惑性。它表示收到了对方的Hello报文但对方发来的Hello里没有包含自己的Router-ID。换句话说一方能看到另一方但另一方还没“看见”它也就是单通。最常见的原因是链路单向故障、ACL过滤了组播报文或者两端的接口子网掩码不一致导致Hello无法正常确认双向关系。2-Way状态说明双方都在彼此的Hello里看到了对方双向通信已经建立。在广播多路访问网络中如果是两台DRother路由器之间邻居状态到2-Way就正常停止了如果是一台路由器和DR/BDR之间则会继续向ExStart推进。ExStart阶段开始选举主从关系并且协商DD报文的初始序列号。卡在这里最常见的原因是MTU不一致或者DD报文交互异常。这个阶段一旦出问题后面根本走不下去所以是排障的重灾区。Exchange阶段双方互发DD报文交换目录。Loading阶段根据目录发送LSR请求缺失的LSA。最后进入Full状态表示两台路由器的LSDB已经同步完成可以独立计算路由了。我排障的习惯是先看邻居卡在哪个状态再反推是哪一层的问题。卡在Init重点查链路和参数协商卡在ExStart重点查MTU和DD交互卡在Exchange或Loading重点查LSA的泛洪是否被阻断。状态机就像一张地图告诉你距离“Full”还有多远。2.3 Router-ID不起眼却坑最多的参数Router-ID是一个32位的二进制数用来在OSPF域内唯一标识一台路由器。平时大家习惯写成IP地址的格式比如1.1.1.1但它本质上不是IP地址只是一个标识符。Router-ID的选择顺序华为设备上默认是这样的手工配置的 router-id 命令值最优先没有手工配置时选择Loopback接口上最大的IP地址再没有Loopback选择其他物理接口上最大的IP地址。很多生产环境事故都是Router-ID配置不当引起的。最常见的坑有三个。第一个坑忘了手工指定Router-ID设备重启之后自动选出来的Router-ID变了导致邻居全部重建整网路由抖动。所以规范的做法是在ospf进程下显式配置比如ospf 1 router-id 1.1.1.1第二个坑两台路由器Router-ID配重复了。虽然系统允许你配置但后果是邻居起来之后又断、断了又起来反复flapping非常隐蔽。这种问题靠肉眼看配置往往发现不了但去 display ospf error 里查计数器“Router ID collision”那栏会直接告诉你。第三个坑修改Router-ID后没有重启OSPF进程。OSPF进程一旦运行Router-ID在整个运行周期内保持不变。你改了配置但不执行 reset ospf process新Router-ID根本不生效而重置进程又会导致邻居全部中断。所以改Router-ID之前必须评估业务影响选择维护窗口操作。3. 区域、ABR、DR/BDR路由器的“职场分工”3.1 所有区域都要贴着区域0骨干区域的不可替代性OSPF引入“区域”这个概念本质上是为了控制LSDB的规模。想想看几百台路由器如果在同一个区域里互相洪泛LSA每台设备都要保存全网所有链路的详细信息CPU和内存都会爆炸。划成多个区域后区域内部只泛洪本区域的LSA区域之间通过汇总后的路由信息传播LSDB规模大幅下降。但区域怎么划是有硬性规定的所有非骨干区域必须与骨干区域Area 0相连要么物理直连要么通过虚链路逻辑连接。为什么必须这样因为OSPF的设计原则是区域间路由必须经过骨干区域转发不允许非骨干区域之间直接交换路由否则会产生环路风险。你可以把Area 0理解成公司总部其他区域是各个事业部。事业部之间的往来必须通过总部审批盖章不能私下拉一条专线绕过总部。一旦允许区域1和区域2直接交换路由SPF算法计算出来的树形结构就被破坏了可能出现环路。这个规则不是随便定的是整个OSPF无环特性的基石。所以你在规划网络时核心层设备一定要放在Area 0里接入层再按业务或地理位置拆成Area 1、Area 2等。要是把核心层拆到非骨干区域后面排障会痛不欲生。3.2 DR/BDR选举与接口网络类型广播多路访问网络比如一台交换机下面挂着十几台路由器如果每两台路由器之间都建立Full邻接关系那就是n乘n减1除以2个邻接LSDB同步的报文交互量会非常恐怖。DR/BDR机制就是为了解决这个问题。在这种网络上OSPF会选出一台DR指定路由器和一台BDR备份指定路由器其他路由器只和DR、BDR建立Full邻接关系DRother之间停留在2-Way状态。所有LSA的同步都经过DR中转网络上的协议交互量从“网格状”降成“星形”。选举规则很简单接口优先级ospf dr-priority越大越优先默认是10表示不参与选举优先级相同就比Router-ID大的胜出。有一个细节坑过很多人DR/BDR选举是非抢占的。也就是说就算你新加了一台优先级更高的路由器只要当前的DR和BDR还活着它也不会抢位置只能当DRother直到DR或BDR失效。这个机制在排障时特别容易造成误解。比如你明明看到两台路由器之间状态是2-Way以为故障了其实人家两个都是DRother2-Way才是正常状态。如果链路是点对点的比如两台路由器直接用串口或光纤直连就没有必要选举DR/BDR。可以把接口网络类型改成p2pinterface GigabitEthernet0/0/0 ospf network-type p2p改成p2p后邻居建立少了一个选举阶段收敛速度更快排障也简单。这是设备互联端口上非常推荐的做法。3.3 ABR不仅仅是“跨区域转发”ABRArea Border Router区域边界路由器是同时连接Area 0和一个或多个非骨干区域的路由器。这是OSPF中最关键的角色之一。ABR的职责有两个层面。第一个层面是区域间路由的桥接。它会把本区域内的路由转换成3类LSASummary LSA通告到其他区域同时从其他区域接收3类LSA再转给本区域。R2这种设备就是典型ABR它在Area 0和Area 1之间搭了一座桥。第二个层面是路由汇总与故障隔离。ABR可以在区域边界做路由汇总把区域内一堆明细网段聚合成一条或少数几条路由通告出去大幅缩小骨干区域的LSDB和路由表。同时一个区域内的拓扑震荡被ABR挡在区域边界不会波及整个OSPF域。这也是为什么ABR的配置要格外谨慎。如果ABR挂了它所连接的非骨干区域与骨干区域的联系就断了整个区域的路由都会异常。生产环境中ABR一定要做冗余设计不能把所有区域都挂在一台ABR上。4. 手把手搭一套可复现的OSPF实验4.1 两台路由器的单区域实验从零敲到邻居Full用模拟器或者两台真机都能搭。我习惯用三台路由器但先从两台开始最直观R1的GigabitEthernet0/0/0连R2的GigabitEthernet0/0/0各自再配一个Loopback口。R1的配置system-view sysname R1 interface GigabitEthernet0/0/0 ip address 10.0.12.1 255.255.255.0 undo shutdown interface LoopBack0 ip address 1.1.1.1 255.255.255.255 ospf 1 router-id 1.1.1.1 area 0 network 10.0.12.0 0.0.0.255 network 1.1.1.1 0.0.0.0注意华为宣告网段用的是反掩码不是子网掩码。10.0.12.0 0.0.0.255表示匹配10.0.12.0/24这个网段1.1.1.1 0.0.0.0表示精确匹配这个主机地址。很多人第一次配OSPF就在这里翻车把反掩码写成255.255.255.0结果宣告失败。R2配置同理Router-ID用2.2.2.2地址和网段对应system-view sysname R2 interface GigabitEthernet0/0/0 ip address 10.0.12.2 255.255.255.0 undo shutdown interface LoopBack0 ip address 2.2.2.2 255.255.255.255 ospf 1 router-id 2.2.2.2 area 0 network 10.0.12.0 0.0.0.255 network 2.2.2.2 0.0.0.0配置完之后在R1上执行 display ospf peer正常情况下你会看到R1 display ospf peer OSPF Process 1 with Router ID 1.1.1.1 Neighbor Brief Information Area 0.0.0.0 Interface NeighborAddr State DeadTime Interface Instance ID GE0/0/0 10.0.12.2 Full/DR 00:00:39 0State字段变成Full说明邻居建立成功LSDB同步完成。这时再用 display ospf routing 看路由表R1应该能学到2.2.2.2/32。如果状态卡住不动就回头看第2章的状态机按阶段定位问题。这一步实验是整个OSPF学习的地基建议反复做做到不看笔记也能敲出来。4.2 扩展到多区域亲手建一个ABR实验拓扑把R3加进来R1的GE0/0/0连R2的GE0/0/0R2的GE0/0/1连R3的GE0/0/0。R1和R2之间放Area 0R2和R3之间放Area 1R2自然成为ABR。R2的配置改成system-view sysname R2 interface GigabitEthernet0/0/0 ip address 10.0.12.2 255.255.255.0 undo shutdown interface GigabitEthernet0/0/1 ip address 10.0.23.2 255.255.255.0 undo shutdown interface LoopBack0 ip address 2.2.2.2 255.255.255.255 ospf 1 router-id 2.2.2.2 area 0 network 10.0.12.0 0.0.0.255 network 2.2.2.2 0.0.0.0 area 1 network 10.0.23.0 0.0.0.255R3配置system-view sysname R3 interface GigabitEthernet0/0/0 ip address 10.0.23.3 255.255.255.0 undo shutdown interface LoopBack0 ip address 3.3.3.3 255.255.255.255 ospf 1 router-id 3.3.3.3 area 1 network 10.0.23.0 0.0.0.255 network 3.3.3.3 0.0.0.0配置完成后在R1上执行 display ospf lsdb你会看到多出一类type为Sum-Net的LSA这就是R2作为ABR为Area 1的路由生成的3类LSA。R1就是靠它学到3.3.3.3/32的。再试一个汇总操作。假设R3下面还挂了10.0.30.0/24和10.0.31.0/24两个业务网段你不希望在骨干区域里通告两条明细路由可以在R2的Area 1视图下做汇总ospf 1 area 1 summary-network 10.0.30.0 255.255.254.0这样Area 0里看到的就只剩一条10.0.30.0/23的汇总路由。这就是ABR在生产环境中最实际的价值。4.3 接口网络类型、定时器、被动接口与cost的现场微调这个实验做完后我强烈建议你再折腾几个细节它们会覆盖掉生产环境里八成以上的OSPF疑难杂症。接口网络类型。以太网接口默认网络类型是broadcast会触发DR/BDR选举。如果你把互联接口改成p2pinterface GigabitEthernet0/0/0 ospf network-type p2p邻居建立过程会省略DR选举直接进入ExStart状态变化更快。同时两台直连设备之间不再有DRother的概念排障看到的状态更干净。定时器。广播网络上Hello默认10秒Dead默认40秒Dead是Hello的4倍。如果两端不一致邻居绝对建立不起来。修改方式很直接interface GigabitEthernet0/0/0 ospf timer hello 5注意dead interval会自动变成20。生产环境不建议把hello调得太小比如1秒或2秒因为OSPF报文处理会占用设备CPU网络抖动时还可能造成邻居频繁抖动。默认值已经很成熟真的想加速收敛先优化SPF计算和LSA泛洪别动Hello。被动接口。华为命令叫silent-interface。在OSPF进程下配置ospf 1 silent-interface GigabitEthernet0/0/1这个接口不再收发Hello也不建立邻居但它所在的网段仍然会作为直连路由被通告进OSPF。非常适合连接PC终端或服务器的接口既不浪费协议报文又保证了路由可达。cost调整。OSPF的cost计算默认是 reference-bandwidth除以接口带宽华为默认参考带宽是100Mbps所以GE接口cost是1百兆接口cost也是1串口这种低速链路cost反而高。实际组网时经常要手工干预接口下直接指定interface GigabitEthernet0/0/0 ospf cost 100如果整个网络都是高速链路建议统一调大参考带宽比如在进程视图下执行 bandwidth-reference 10000把参考带宽改成10Gbps这样各接口的cost区分度才够。记住参考带宽必须全网一致不然不同设备算出来的选路结果会打架。5. 排错实录从错误表到debug把OSPF问题翻个底朝天5.1 第一步永远先看邻居状态从状态机锁定故障相位OSPF排障真没有那么玄学。我处理过的故障里九成以上都能通过“先看邻居状态”这一步找到方向。具体操作是先执行 display ospf peer brief 看全局邻居概览。它会用几行把每台设备的邻居、所在区域、接口和状态列出来。如果某个邻居状态不是Full问题就来了。再执行 display ospf peer verbose 看详细邻居信息里面有关键的Dead Time、接口网络类型、DR/BDR角色等。结合第2章的状态机判断当前卡在哪个阶段状态是Down说明完全没收到Hello查物理链路、接口OSPF宣告、ACL。状态是Init说明单向通信重点查ARP、组播放行和掩码。状态是2-Way先确认是不是DRother之间的正常状态再判断是否该继续推进。状态是ExStart或Exchange几乎可以锁定MTU或DD报文交互问题。状态是Loading查LSA泛洪是否被阻断比如区域边界认证失败。这一步花不了30秒但能把排障范围从“整个网络”缩小到“某个阶段、某台设备、某个参数”。5.2 display ospf error 错误表答案就写在计数器里很多兄弟一遇到OSPF故障就抓包其实在绝大多数场景下根本没必要。设备内部早就在统计错误了只是你没去看。热词里那句“ospf error表里面查问题老清晰了”真不是夸张。执行R1 display ospf error你会看到类似这样的输出OSPF Process 1 with Router ID 1.1.1.1 Error Statistics ---------------------------- Router ID collision : 3 Bad area ID : 0 Bad packet : 0 Bad checksum : 1 Bad version : 0 Bad authentication : 2不同版本字段会有差异但逻辑是一样的。这里每一行都是一个错误计数器只要数值在增长就说明设备正在收到不正常的OSPF报文。Router ID collision计数器增长基本可以断定网络里有路由器Router-ID重复马上去查所有设备的router-id配置。Bad area ID增长说明收到的Hello报文里区域号和自己不一致两端不在同一个区域邻居自然起不来。Bad authentication增长说明认证类型或密钥不匹配。先查区域认证、接口认证是否两端一致再查密码字符串。Bad checksum增长说明报文在链路传输中损坏常见于CRC错误或者物理链路质量差比如光模块收光异常、网线接触不良。Bad packet增长的场景比较多可能是报文格式问题也可能是MTU导致的报文异常但结合其他计数值一起看基本能锁定方向。这套错误表你但凡认真用一次就会彻底抛弃“一上来就抓包”的习惯。计数器直接告诉你协议栈在拒绝什么报文比抓包看一堆十六进制再分析快得多。5.3 debug ospf packet什么时候该上、怎么正确用错误表指向不够明确、或者计数器在增长但不知道具体是哪个参数不对时才轮到debug上场。华为设备上执行R1 terminal monitor R1 terminal logging R1 debug ospf packet记得先打开terminal monitor否则debug输出可能看不到。执行期间设备会实时打印收发OSPF报文的内容里面能看到关键字段比如Hello报文里的Mask、Dead Interval、Router-ID、Area ID、Options字段。最典型的一个场景两端都配了OSPF接口状态也up但邻居就是卡在Init。错误表里没看到明显计数这时用debug打印收到的Hello报文一眼就能看出对端发过来的Mask是不是255.255.255.0Dead Interval是不是和自己一致。debug输出可能非常密集特别是邻居多、Hello间隔短的时候瞬时打印量能把控制台刷屏刷到卡顿。所以生产环境慎用最好在维护窗口操作并且看几个报文后立刻执行R1 undo debug all我的经验是debug不要一条条去看LSA内容而是聚焦在Hello报文的关键参数上。排奥斯PF邻居问题90%的答案都藏在Hello报文里。真需要深挖LSA交互细节时再考虑抓包日常排障根本用不上。5.4 OSPF高频故障速查表我把这些年遇到的高频OSPF故障整理成了一张速查表适合贴在工位上。它不能解决所有问题但能覆盖掉日常七八成的排障需求。现象可能原因排查方向参考处理邻居卡在Down接口未宣告、链路故障display ospf interface 看接口状态确认接口undo shutdown、正确宣告网段邻居卡在Init单向通信、ACL过滤组播查ARP、ping对端接口IP放行224.0.0.5组播检查掩码邻居卡在ExStartMTU不匹配、DD交互异常对比两端接口MTU统一MTU或开启ospf mtu-enable邻居反复up/downRouter-ID冲突、链路抖动display ospf error 看计数器修正Router-ID并reset ospf process区域间路由缺失ABR没连上Area 0display ospf lsdb 看3类LSA重新规划区域拓扑认证一直失败认证类型或密钥不一致错误表里看Bad authentication统一认证模式和MD5密钥掩码不一致导致邻居异常两端接口掩码不同debug看Hello里的Mask统一子网掩码这张表的价值在于把“现象”和“手段”直接挂上钩。遇到问题先翻表再决定用哪条命令比临时搜文档高效得多。6. 生产环境里的OSPF经验那些常被忽视的细节6.1 认识LSA路由条目背后的“情报单位”很多人在配置OSPF时只看路由表通不通不看LSA类型一旦遇到跨区域路由不通就懵。实际上不同区域、不同位置产生的路由依赖的LSA类型完全不同。LSA类型名称产生者传播范围1类Router LSA每台路由器所在区域内部2类Network LSADR所在区域内部3类Summary LSAABR整个OSPF域4类ASBR Summary LSAABR整个OSPF域5类AS External LSAASBR整个OSPF域特殊区域除外7类NSSA External LSANSSA区域内的ASBRNSSA区域内部看懂这张表排障就多了一双眼睛。比如你在Area 1的设备上看到一条来自外部路由协议的路由它是5类LSA而这条路由又要经过ABR转换你就能判断出ASBR在哪、ABR是否正常工作。6.2 Stub与NSSA特殊区域怎么选网络规模大了之后区域内的路由器不需要知道所有外部路由细节可以用特殊区域减少LSDB和路由表。Stub区域末梢区域不允许4类、5类LSA进入区域内的路由器只会看到1类、2类和3类LSAABR会自动向区域下发一条默认路由。配置很简单ospf 1 area 1 stub注意Stub区域里的所有路由器都要配stub不能只在ABR上配。而且Stub区域不允许存在ASBR因为外部路由的5类LSA进不来。NSSA区域稍微灵活一点它允许区域内部存在ASBR可以通过7类LSA通告外部路由ABR再把7类转成5类发给其他区域。配置ospf 1 area 1 nssa区域内部的每条OSPF设计决策都有代价。Stub省了路由表但区域内没法做外部路由的精细选路NSSA虽然保留了外部路由能力但转换过程增加了一些复杂度。所以我的建议是普通接入区域用Stub有特殊外部路由需求的再用NSSA别一上来全给配成NSSA。6.3 认证与默认路由安全性和出口路由的落地配置OSPF区域认证和接口认证是生产网络里被忽略得最多的配置但恰恰是它最有用。防止非法设备接入OSPF域之后靠伪造LSA把整个网络的路由表搅乱。区域认证在进程下配置一次区域内所有接口生效ospf 1 area 0 authentication-mode md5 1 cipher huawei也可以只在特定接口上配置接口认证interface GigabitEthernet0/0/0 ospf authentication-mode md5 1 cipher huawei注意两端必须使用相同的认证模式和密钥。至于用哪种现网建议用MD5起步追求更高安全性可以用HMAC-SHA256。认证一旦开启区域内所有路由器必须同步配置否则邻居立刻中断。默认路由的发布也是一个高频需求。比如OSPF域需要把缺省流量引到出口路由器上就在出口路由器上配置ospf 1 default-route-advertise如果本地没有生成默认路由需要加always参数强制通告ospf 1 default-route-advertise always这个命令会向整个OSPF域注入一条默认路由慎用。一旦配错全网流量可能全被引到一台本不该承担出口流量的设备上。6.4 给生产环境的几条设计建议最后提几条我在生产网络里踩过坑之后总结下来的设计建议。核心设备尽量放在Area 0。接入层按业务或地域拆区域不要把核心设备拆到非骨干区域。每个区域的路由器数量控制在合理范围。单个区域内设备过多LSDB同步压力和SPF计算量都会上来建议一个区域的设备数量控制在几十台以内再大就要考虑更细的拆分。ABR做冗余。不要让某个区域的ABR只有一台否则这台设备一挂整个区域就失联了。两个ABR各拉一条链路到Area 0是低成本高收益的做法。链路聚合和OSPF的cost要配合好。做了Eth-Trunk之后接口带宽是聚合后的总带宽cost会按聚合带宽计算这一点容易被忽略导致选路不符合预期。变更前先做路由快照。改OSPF参数前先保存 display ospf routing 和 display ospf peer 的输出。出问题时对比快照和现场往往比抓包分析快得多。最后分享一个我自己坚持了很久的习惯。日常OSPF排障我第一件事永远是打 display ospf error 和 display ospf peer brief而不是抓包。错误表里的计数器是设备自己总结好的“诊断意见”大部分邻居建立失败的问题根源都写在几个关键计数里。这些年处理过的OSPF故障有Router-ID冲突的有区域ID写错的有MTU不匹配的有认证不统一的几乎没有一个需要靠抓包才能定位。先把这两条命令用熟再谈抓包你的OSPF排障效率会快上一个台阶。
返回列表