ARTICLE DETAIL

资讯详情

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

OSPF多区域综合实验:从ABR配置到MSTP/VRRP联调实战

OSPF多区域综合实验:从ABR配置到MSTP/VRRP联调实战 “OSPF综合实验”这个题目看着像实验室里的常规练习真把人逼到墙角的时候也多。单区域OSPF跑通不难但把多区域、ABR、特殊区域、路由汇总再叠上MSTP和VRRP一起端上来没几个人能一次顺顺利利做完。我这两年帮人复盘过不少类似的综合实验发现大家翻车很有规律要么邻居起不来要么stub/NSSA配完外部路由消失要么OSPF本身通了但接入冗余一测试就抖。这篇文章把我自己搭的一次完整实验环境以及调过的坑全部记下来。这套实验模拟的是一个中型园区网络有核心路由器、有区域边界、有外部路由引入还有二层接入侧的双链路冗余。适合准备H3C/华为技术认证也适合刚入行想练真本事的网络工程师。1. 实验整体设计与拓扑规划思路1.1 为什么综合实验必须做成多区域OSPF很多人觉得OSPF单区域够用实验时直接全部扔进area 0省事不少。但是真实网络里设备规模一大单区域的问题就很突出所有路由器都要维护相同LSDB拓扑变化全网一起重算收敛时间难看外部路由一多每台设备的CPU和内存都在烧。多区域OSPF的价值在于把链路状态更新限制在区域内部借助ABR做区域间路由聚合和过滤从根上减小LSA泛洪的范围。生活里类比就是学校分年级area 0是教务处所有年级都跟教务处汇报但一年级内部换座位不会每个年级都广播。OSPF规定所有非骨干区域必须和area 0相连ABR就是这个“年级主任”负责把自己区域的目录转换成三类的汇总LSA带到骨干区域。做综合实验时一定要把多区域这条线拉出来否则后面ABR、特殊区域、汇总全都没有依托。我见过不少人在实验里只配了两三台设备还全部在area 0然后告诉我“特殊区域路由我理解了”这其实缺了关键一环特殊区域只有在多区域架构里才有意义。1.2 拓扑、地址规划与实验组网这次实验我用了四台路由器加两台二层交换机。角色分得很清楚R1在area 0当普通骨干路由器R2是ABR连接area 0和area 1R3、R4放在area 1并承担接入网关R4额外作为ASBR引入外部路由S1、S2接入交换机负责二层冗余。整体区域划分和地址规划如下设备角色Router-ID参与区域说明R1骨干路由器1.1.1.1area 0连接R2验证区域间路由R2ABR2.2.2.2area 0 / area 1连接R1与R3区域间路由汇总R3区域1路由器 / VRRP主备3.3.3.3area 1连接R2与R4下连VLAN接口R4区域1路由器 / ASBR4.4.4.4area 1连接R3引入外部路由7.7.7.0/24S1/S2接入交换机无二层运行MSTP承载VLAN 10/20接口地址这块我统一使用10.0.0.0/16网段方便后面在ABR上做汇总。链路地址和业务地址分开规划R1-R2互联10.0.12.0/30R1使用10.0.12.1R2使用10.0.12.2。R2-R3互联10.0.23.0/30R2使用10.0.23.1R3使用10.0.23.2。R3-R4互联10.0.34.0/30R3使用10.0.34.1R4使用10.0.34.2。VLAN 10业务网段10.0.10.0/24网关地址在R3/R4上做VRRP。VLAN 20业务网段10.0.20.0/24网关地址在R3/R4上做VRRP。外部模拟网段7.7.7.0/24由R4通过静态路由引入OSPF。所有Loopback地址统一作为Router-ID来源R1的Loopback0是1.1.1.1/32R2是2.2.2.2/32R3是3.3.3.3/32R4是4.4.4.4/32。这样的规划有个好处验证路由表时看到的目标网段和源路由器一眼能对应上不用反复查接口表。1.3 实验环境与基础约束设备我用的H3C Comware V7命令行华为设备的命令风格大体相同差异点我会在文中单独说明。实验环境建议用eNSP、HCL这类模拟器效果足够有条件的话在真机上跑更佳因为真实设备的接口状态、光模块协商、MTU问题比模拟器更刺激。开始之前把所有设备清空配置注意接口必须全部up尤其两台交换机之间的互联链路要正常。模拟器里常见问题是接口没启用或物理口downOSPF邻居建立不起来会浪费大量排查时间。另外所有设备的时间尽量保持一致不然日志和调试信息对不上后面查问题时很痛苦。2. OSPF核心配置Router-ID、区域划分、邻居关系2.1 Router-ID不是随手填的数字Router-ID是OSPF实例的身份标识邻居建立、DR选举、LSA产生都依靠它。很多教材说如果不手工配置设备会自动选择Loopback地址或最大的接口地址。这话没错但实验和现网中绝不建议依赖自动选择。原因有两个第一自动选择依赖设备当前的接口地址一旦接口改动Router-ID可能变化导致邻居重建、LSDB重新同步第二自动选择的结果不可控无法通过Router-ID一眼判断是哪台设备。所以我在每台路由器上都手工指定了Router-ID例如R1[R1] ospf 1 router-id 1.1.1.1更改Router-ID时有个非常关键的坑配置完成后OSPF不会立即生效必须执行reset ospf process重启OSPF进程。模拟器里经常有人改了Router-ID后看不到变化然后怀疑配置有误。另外Router-ID冲突时OSPF邻居会反复振荡这个问题很难查后面排障章节单独说。2.2 ABR区域划分和区域间路由汇总R2是这次实验的核心ABR配置分为两块连接到area 0的接口和Loopback以及连接到area 1的接口。H3C命令中area 0.0.0.0和area 0是等价的但建议写完整点日志里显示更清晰。看一下R2的典型配置[R2] ospf 1 router-id 2.2.2.2 [R2-ospf-1] area 0.0.0.0 [R2-ospf-1-area-0.0.0.0] network 10.0.12.0 0.0.0.3 [R2-ospf-1-area-0.0.0.0] network 2.2.2.2 0.0.0.0 [R2-ospf-1-area-0.0.0.0] quit [R2-ospf-1] area 0.0.0.1 [R2-ospf-1-area-0.0.0.1] network 10.0.23.0 0.0.0.3 [R2-ospf-1-area-0.0.0.1] quit要注意H3C和华为的network命令后面跟的是通配符不是子网掩码。很多人配置惯了思科还好如果从静态路由的习惯转换过来容易把255.255.255.252写上去结果OSPF不宣告邻居也起不来。区域间路由汇总是一个值得专门练的点。汇总配置在ABR上命令格式是abr-summary加汇总网段。例如把area 1内的业务网段汇总成一条路由通告到area 0[R2-ospf-1] area 0.0.0.1 [R2-ospf-1-area-0.0.0.1] abr-summary 10.0.0.0 255.255.0.0汇总的好处是减少area 0中的三类LSA数量同时区域间拓扑变化不会扩散到骨干区域。但汇总网段必须覆盖所有实际地址否则会出现明细路由被丢弃的问题。比方说area 1里地址是10.0.10.0/24和10.0.20.0/24汇总成10.0.0.0/16就没问题如果你汇总成10.0.0.0/22而实际有10.0.4.0/24那这条路由直接消失。实验时改成错误的汇总范围测一下路由表你会对“汇总是有代价的”这句话印象非常深刻。2.3 邻居状态和网络类型的选择OSPF邻居建立过程是四步down、init、two-way、exstart/exchange/loading/full。实验中大部分问题出在前面两步和exchange阶段。以太网接口默认是broadcast类型会选举DR/BDR所有非DR/BDR路由器只和DR/BDR建立Full邻居彼此保持two-way状态。这个机制本身没问题但在点对点链路上完全没必要反而增加选举时间和维护复杂度。R2-R3这条链路本质是两台路由器直连我建议直接把接口网络类型改成点到点这样邻居建立更快、更稳定也不存在DR抢占的问题[R2-GigabitEthernet0/0/1] ospf network-type p2p改成p2p后相邻关系简单粗暴没有DR/BDR选举两条路由器的IP地址也要是同一网段。实际项目中P2P链路在广播型以太网上还能减少很多莫名其妙的DR变化是网络工程师常用的优化手段。不过要注意如果链路中间还串了二层交换机且你确实想利用以太网多路访问特性那就别改老老实实保留broadcast类型。3. 特殊区域实验stub、totally stub与NSSA的正确理解3.1 三种特殊区域的适用场景和核心区别OSPF特殊区域的主题在综合实验里分量不轻而且考察的是“理解”不只是命令。这里我直接用一张表把stub、totally stub、NSSA的区别说清楚区域类型允许的三类LSA允许的四类LSA允许的五类LSA允许的七类LSA默认路由来源普通区域允许允许允许不允许不自动产生stub允许区域外明细会进来不允许不允许不允许ABR自动下一条三类默认路由totally stub只允许默认三类路由不允许不允许不允许ABR自动下默认路由NSSA允许区域间明细允许仅关于ASBR不允许骨干侧允许默认不自动产生可按需配置怎么理解stub区域就是“我只要区域内部和默认路由不想管外部世界”的区域。如果这个区域里还有一台路由器需要引入外部路由那就不能做stub因为stub不允许五类LSA进入此时用NSSA用七类LSA在区域内承载外部路由再在ABR上转换成五类LSA。totally stub是stub的加强版比stub多做一件事连区域间明细路由都过滤掉只保留一条默认路由指向ABR。适合那种纯末端接入区域比如办公室只有一个出口用户只需要上网和默认路由。3.2 NSSA配置实践R2、R3、R4联动本实验area 1我配置成NSSA因为R4需要引入外部路由7.7.7.0/24。每个在area 1里的路由器都必须配置NSSA否则OSPF邻居会因区域类型不匹配而无法建立。R2上的配置[R2-ospf-1] area 0.0.0.1 [R2-ospf-1-area-0.0.0.1] nssaR3上同样在area 0.0.0.1下配置nssa。R4除了nssa之外还要引入外部路由使用静态路由指向NULL0来模拟远端网段[R4] ip route-static 7.7.7.0 24 NULL0 [R4] ospf 1 router-id 4.4.4.4 [R4-ospf-1] area 0.0.0.1 [R4-ospf-1-area-0.0.0.1] nssa [R4-ospf-1-area-0.0.0.1] quit [R4-ospf-1] import-route static配置完成后在R4上查看OSPF路由应该能看到7.7.7.0/24这条路由以O_NSSA类型出现在路由表中[R4] display ospf routing在R2上查看区域1的LSDB能看到七类LSA[R2] display ospf lsdb nssa然后看一下R1上的路由表7.7.7.0/24这条外部路由应该存在而且是以五类LSA形式通告过来的。这就是NSSA区域的核心流程ASBR产生七类LSAABR转换成五类LSA后向area 0传播。3.3 NSSA默认路由与翻译器选举的坑NSSA有一个很容易踩的坑默认路由不会自动产生。普通stub区域里ABR会自动下发一条默认路由但NSSA区域默认不这么做。如果你的边缘网络需要默认路由走向外部必须在ABR上主动配置[R2-ospf-1-area-0.0.0.1] nssa default-route-advertise如果不配R3、R4上OSPF的默认路由可能缺失导致去往Internet的流量黑洞。另一个话题是七类到五类的翻译器选举。当area 1里有多个ABR时只有一台ABR负责把七类LSA翻译成五类LSA。选举依据是Router-ID优先翻译器故障时还可以切换。如果想让某台ABR始终承担翻译任务H3C上有nssa translate-always参数。现网中建议在高性能ABR上开启避免默认选举结果不符合预期。实验时验证翻译结果的命令非常直观。在R1上查看五类外部LSA[R1] display ospf lsdb external在R2上查看是否有七类LSA以及翻译状态[R2] display ospf lsdb如果外部路由没有出现在area 0多半是ABR没有正确翻译或者NSSA区域认证配置不一致。这个环节也是面试官最爱问的把“为什么NSSA能在stub区域里引入外部路由”这个问题搞懂比背十句命令有用得多。4. OSPF与MSTP、VRRP的联动实验4.1 为什么三层路由里还要管二层冗余很多刚入门的人有个误区OSPF已经做了三层路由冗余下面交换机接双链路是不是多余实际上OSPF解决的是三层选路问题而交换机之间跑的VLAN、Trunk属于二层转发平面不做环路控制就会广播风暴。本实验里R3和R4各自下连接入交换机S1、S2之间还有互联链路VLAN 10和VLAN 20跨越了这些链路如果不跑MSTP二层交换机会形成环路广播帧在VLAN里无限转发最终导致整片网络瘫痪。所以MSTP是二层防环基础VRRP是网关冗余OSPF是三路上层路由三者缺一不可。综合实验的价值就在这里你实际看到的是“同一个网络里多个协议各司其职”。4.2 MSTP实例划分与VRRP配置实操在S1、S2上配置MSTP时我把VLAN 10划入实例1VLAN 20划入实例2并让两台交换机的根桥角色对调。这样VLAN 10的流量优选S1VLAN 20的流量优选S2实现负载均衡。S1上的配置如下[S1] stp global enable [S1] stp region-configuration [S1-region-config] region-name LAB [S1-region-config] instance 1 vlan 10 [S1-region-config] instance 2 vlan 20 [S1-region-config] active region-configuration [S1-region-config] quit [S1] stp instance 1 root primary [S1] stp instance 2 root secondaryS2上角色反过来实例2做主根实例1做备份根。需要注意的是MSTP配置修改后一定要执行active region-configuration让配置生效否则交换机仍按旧实例转发。VRRP配置在R3和R4的VLAN接口上。以VLAN 10为例R3是主路由器优先级150R4是备路由器优先级120[R3] interface Vlan-interface10 [R3-Vlan-interface10] ip address 10.0.10.1 24 [R3-Vlan-interface10] vrrp vrid 10 virtual-ip 10.0.10.254 [R3-Vlan-interface10] vrrp vrid 10 priority 150 [R3-Vlan-interface10] vrrp vrid 10 preempt-mode timer delay 30 [R3-Vlan-interface10] quitR4上的VLAN 10优先级别配120。VLAN 20反过来R4当主路由器优先级150R3当备份优先级120。这样两个网段的网关流量各自走向不同的设备设备和链路都能用起来。4.3 VRRP优先级联动和OSPF收敛的配合VRRP单独配置一般没问题但一和OSPF联动就露馅。典型场景是R3作为VLAN 10的VRRP主设备它的上行接口G0/0/0连接R2如果这个接口突然断开R3虽然还在VRRP主状态但已经无法把流量送到核心了客户端报文到了网关却出不去。解决方法是让VRRP感知上行链路状态通过track接口动态降低优先级。计算一下参数R3的VRRP优先级是150R4是120优先级差值是30。要让R4在R3上行故障时接管必须让R3降低后的优先级小于120。我建议降低40也就是“差值30加一个10的保险余量”。这样既保证切换稳妥又不会因为很小的事务抖动造成优先级乱跳。配置如下[R3-Vlan-interface10] vrrp vrid 10 track interface GigabitEthernet0/0/0 reduced 40切换逻辑变成了正常时R3优先故障时R3优先级降到110R4以120优先接管VRRP备转主网关流量自动切换。同时OSPF在R3上也会因为上行接口down而重新计算路由把R4作为下一跳。这里要注意VRRP和OSPF的收敛时间并不一致VRRP切换通常秒级OSPF可能还需要几秒收敛所以现网会配合BFD或接口track做加速本实验先跑通基础联动即可。4.4 测试联动效果拔线实验怎么做配置完成后最有效的验证方法是拔线实验。先确认当前VRRP状态[R3] display vrrp看到VLAN 10的Master是R3再把R3连接R2的G0/0/0接口手动shutdown观察30秒内应该发生两个现象第一display vrrp显示R4变成MasterR3优先级已经降到110第二从R1能看到到达10.0.10.0/24的路由下一跳指向R4对应的接口。恢复R3的接口后因为配置了preempt-mode timer delay 30R3不会立刻抢占回主状态而是等待30秒延迟这样可以避免接口刚恢复、路由还没完全收敛时频繁切换导致丢包。这个延迟参数是我在实际割接中非常看重的细节过短容易抖动过长会让主路径空置时间增加。5. 高频故障复盘与OSPF排障命令速查5.1 邻居起不来卡在init、two-way还是exstart邻居问题几乎占综合实验故障的六成。用display ospf peer看上有没有Full如果卡在init先查Hello报文能不能互通卡在two-way多半是broadcast网络里DR/BDR选举没完成或者网络类型不一致卡在exstart/exchange阶段最常见原因是MTU不一致。接口MTU不匹配时两台设备交换Database Description报文会因为报体太大直接失败邻居反复处于Exstart状态。解决办法是把两端的接口MTU设置为相同值或者在接口下关闭OSPF的MTU检查。H3C中使用[R3-GigabitEthernet0/0/0] ospf mtu-enable也可以从R2上查看OSPF接口参数确认两边Hello间隔、Dead间隔是否一致。这两项不一致时邻居会不断建了又断很折磨人。用display ospf interface对比两边参数是最快的办法。5.2 区域类型不一致导致的邻居消失配置NSSA或stub时同一个区域的所有路由器都必须配相同类型。我在实验里故意把R3配成NSSA、R4配成普通区域R3和R4的邻居完全起不来但display ospf peer又不报认证错误很多新手会在这卡半天。这种情况直接对比两边的区域配置就行[R3] display current-configuration | include nssa|stub看到两边关键字不一致基本就定位了。真实环境如果无法确认可以在两端同时抓OSPF报文看Hello报文里的Options字段不匹配。5.3 外部路由在NSSA边界神秘消失实验里我出现过一个经典问题R4上配置了import-route staticR4自己的OSPF路由表里能看到7.7.7.0/24但R1上死活看不到。原因在于R2作为ABR确实把七类LSA转换成五类LSA但My R2当时配置了汇总命令汇总范围没有包含7.7.7.0/24区域间的三类和五类路由都被汇总逻辑过滤掉。排查方法是先看R2上的OSPF路由表有没有7.7.7.0/24再逐跳确认LSDB[R2] display ospf routing [R2] display ospf lsdb external如果R2上没有七类LSA就是R4的Networks宣告或者NSSA配置问题如果R2有七类但R1没有五类就是ABR翻译或汇总问题。这个排查思路百试百灵。5.4 OSPF、MSTP、VRRP联动产生环路和MAC翻转二层冗余和三路冗余叠在一起有时会出现MAC地址在两个接口上反复学习的告警。通常是MSTP实例阻塞端口没选对或者VRRP主备切换后底层STP根桥没有跟随网关路径变化。比如VLAN 10的VRRP主设备是R3但MSTP实例1的根桥是S2流量从R3出来经过S1再通过S2才能到根桥路径被拉长甚至某些交换链路被阻塞后流量直接不通。排查命令分三块display stp instance 1 brief看根桥和端口角色display vrrp看主备状态display mac-address看MAC表。实测中最常见的处理就是重新调整MSTP实例的根桥配置让二层根桥和三层VRRP主设备所在路径一致。这个原则我在本章第4节已经强调过是保证联动稳定的核心。为了方便日常排障我把综合实验最常用的命令整理成一个速查表目的H3C/华为命令场景查看邻居状态display ospf peer确认邻居是否Full查看OSPF路由display ospf routing确认区域内外路由是否缺失查看LSDBdisplay ospf lsdb分析LSA类型和数量查看NSSA LSAdisplay ospf lsdb nssa排查NSSA外部路由查看五类LSAdisplay ospf lsdb external确认ABR翻译结果查看OSPF接口参数display ospf interface对比Hello/Dead间隔、MTU重置OSPF进程reset ospf process修改Router-ID或区域参数后使用查看VRRP状态display vrrp确认主备状态和优先级查看STP状态display stp brief确认根桥和阻塞端口6. 实验收尾一个小习惯帮你少交学费最后分享一个我自己的操作习惯。每次把OSPF综合实验做完先别急着保存配置我会在R1和R2上把LSDB完整看一遍三类LSA数量是否符合预期NSSA的七类LSA是否成功转换VRRP track后的优先级是否正常。确认无误后再save。这样看起来多花两分钟实际能省下第二天发现配置错误后重新排查的半小时。做实验不是为了把命令敲完而是要让自己能清楚解释每一条路由、每一个区域类型为什么是这样的表现。这个习惯救过我很多次希望你也能用上。
返回列表