ARTICLE DETAIL

资讯详情

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

OSPF多区域+ABR+VRRP+MSTP:园区网冗余联动实验指南

OSPF多区域+ABR+VRRP+MSTP:园区网冗余联动实验指南 说实话做网络实验这些年OSPF基本是躲不开的一课。最近我又把OSPF翻出来重新捋了一遍但这次不是两台路由器之间配个邻居就完事而是把多区域、ABR、MSTP、VRRP全部塞进一张拓扑里模拟一个小型园区网的典型场景。这套环境里OSPF负责全网路由互通ABR在多区域之间做路由中转和汇总MSTP压制二层环路VRRP给终端网关做冗余。四者联动起来基本就是一个小型企业网络的缩影。这篇实验笔记主要写给两类人一是刚开始学OSPF、想把多区域和ABR机制真正搞明白的学生二是正在做园区网冗余方案、纠结OSPF和MSTP/VRRP怎么配合的工程师。读完你至少能明白Router-ID为什么必须手动规划ABR在中间到底干了什么为什么接了VRRP之后OSPF邻居反而起不来所有配置我按华为VRP命令来写命令可以直接在eNSP或者真机里跑遇到问题也能按我文末的排查思路照着查。注意实验里的设备名和接口编号都做了简化真机不一定完全一样但关键是配置逻辑接口名按你自己的设备调整即可。1. 实验设计与需求拆解1.1 场景设定为什么OSPF、ABR、MSTP、VRRP会同时出现很多人一开始只会在两台路由器之间配OSPF配完看到邻居状态变成Full就觉得完事了。但真实网络不是这个样子的。稍微正规一点的园区网三层要跑动态路由协议做路由收敛二层要用生成树防止环路终端的网关还得做冗余不然核心设备一挂整层楼直接断网。所以OSPF、MSTP、VRRP这三个东西是典型的“组合套餐”OSPF保证“路通”VRRP保证“网关不倒”MSTP保证“二层不绕”。这套实验里ABR的位置很关键。在OSPF多区域设计中必须有一台区域边界路由器把Area 0和其他区域串起来。ABR至少连着两个区域其中一个必须是骨干区域Area 0。它会把非骨干区域的路由转换成Type 3 LSA传进骨干区同时也会从骨干区接收其他区域的路由再下发给自己的非骨干区域。没有ABR多区域OSPF就是一句空话。我选择三台路由器加三台交换机就是为了把上面这些角色全部安排上。R1和R2在Area 0R2和R3在Area 1R2就是ABR。R1下面接两台核心交换机SW1和SW2它们运行OSPF Area 0同时跑VRRP给用户VLAN做网关冗余。接入交换机SW3再双归到SW1和SW2用MSTP把冗余链路里的环路挡住。这样整个实验环境既有OSPF多区域又有二三层联动的实际场景。1.2 拓扑规划与地址分配拓扑不复杂但很有代表性。设备间连接关系如下R1分别连接R2、SW1、SW2R2连接R3SW1和SW2之间有一条三层互联链路SW1和SW2又分别下行接到SW3。R2和R3组成Area 1其余设备都在Area 0里。地址规划我直接给出一张表后续所有配置都按这张表来。设备接口互联对象IP地址所在区域用途R1G0/0/0R2 G0/0/010.0.12.1/30Area 0骨干链路R1G0/0/1SW1 G0/0/110.0.13.1/30Area 0连接核心交换机R1G0/0/2SW2 G0/0/110.0.14.1/30Area 0连接核心交换机R1LoopBack0-1.1.1.1/32Area 0管理地址/Router-IDR2G0/0/0R1 G0/0/010.0.12.2/30Area 0骨干链路R2G0/0/1R3 G0/0/010.0.23.2/30Area 1非骨干链路R2LoopBack0-2.2.2.2/32Area 0管理地址/Router-IDR3G0/0/0R2 G0/0/110.0.23.1/30Area 1非骨干链路R3LoopBack0-3.3.3.3/32Area 1管理地址/Router-IDR3LoopBack1-192.168.30.1/24Area 1模拟业务网段SW1G0/0/1R1 G0/0/110.0.13.2/30Area 0核心交换机上行SW1G0/0/3SW2 G0/0/310.0.15.2/30Area 0核心间三层互联SW1Vlanif10-192.168.10.252/24Area 0用户VLAN网关VRRPSW1Vlanif20-192.168.20.252/24Area 0用户VLAN网关VRRPSW2G0/0/1R1 G0/0/210.0.14.2/30Area 0核心交换机上行SW2G0/0/3SW1 G0/0/310.0.15.3/30Area 0核心间三层互联SW2Vlanif10-192.168.10.253/24Area 0用户VLAN网关VRRPSW2Vlanif20-192.168.20.253/24Area 0用户VLAN网关VRRPLoopback0地址我故意选了1.1.1.1、2.2.2.2、3.3.3.3就是为了在display ospf peer和display ospf routing里一眼能看出邻居是谁。生产环境不建议用这种过于规则的地址做Loopback容易成为扫描目标但实验环境无妨反而方便学习。1.3 配置顺序的先后考虑配置顺序是实验里很容易翻车的地方。我习惯先把所有物理接口的IP配好再配Loopback和Router-ID然后启动OSPF进程。核心交换机上还要先把VLAN、VRRP、MSTP调完最后再让OSPF把VLAN网段发布出去。顺序不乱出问题的时候就能按层次去排查而不是所有故障点混在一起。先解决物理连通性再解决协议层面的邻居关系最后才是策略和联动。这种自下而上的思路在真实项目里也适用。别一上来就急着敲OSPF接口状态是UP、能Ping通邻居再谈路由协议才有意义。2. 关键原理与配置选型为什么要这么做2.1 OSPF多区域与ABR的工作机制在OSPF多区域里ABR不是随便哪台路由器都能当的。它必须同时连接Area 0和一个非骨干区域并且为这两个区域分别维护独立的LSDB。R2身上既有Area 0又有Area 1所以它会把Area 1里的192.168.30.0/24这样的路由通过Type 3 LSA发送到Area 0反过来Area 0里的1.1.1.1/32、192.168.10.0/24这些路由也会通过Type 3 LSA下发到Area 1。很多人看到LSA类型就头大其实纯多区域实验里只需要盯住三种Type 1 Router LSA每台路由器都会在它所在区域内生成Type 2 Network LSA由广播网络中的DR生成用来描述网段内所有路由器的连接关系Type 3 Summary LSA由ABR生成用于跨区域传递路由信息。只要记住这三个display ospf lsdb的输出就不会太难看懂。ABR还有一个容易被忽视的职责区域间路由的下一跳通常指向ABR。也就是说非骨干区域的路由在骨干区域里被传递时路径上是绕不开ABR的。如果ABR挂了非骨干区域的路由在骨干区域里会直接消失。所以生产环境里ABR一般要做冗余这也是多区域设计最重要的一个点。2.2 Router-ID为什么要手动指定Router-ID是OSPF路由器的身份标识在同一个OSPF域里必须唯一。如果不手动配置设备会从Loopback接口或物理接口IP里自动选一个最大的地址作为Router-ID。问题在于接口IP一变Router-ID可能就跟着变Router-ID一变所有邻居关系都要重新建立路由必然闪断。所以我在每台设备上都配了Loopback0并把Router-ID指到Loopback地址。比如R1执行ospf 1 router-id 1.1.1.1身份就锁死在1.1.1.1上。Loopback接口只要设备不宕机就永远UP是最稳定的Router-ID来源。排查的时候也直观看到1.1.1.1就知道是R1看到2.2.2.2就知道是R2。这里要提醒一个经典坑在华为设备上如果已经启动OSPF进程中途再改Router-ID不会立刻生效。必须执行reset ospf process重启OSPF进程新的Router-ID才会生效。否则你改了等于没改排查半天还以为是配置问题。2.3 OSPF与MSTP、VRRP的联动关系先理清各自的职责。MSTP是二层生成树协议通过阻塞冗余链路来防环。VRRP是网关冗余协议把多台三层设备的虚拟IP作为终端网关主设备故障时备份设备接管。OSPF是三层动态路由协议负责把终端网段通告到整个路由域。三者放在一起时最容易出的问题就是“主备切换时路由还没收敛流量已经来了”。VRRP的主备切换通常在秒级OSPF的收敛如果网络设计不好可能更久。为了避免流量黑洞核心交换机之间的互联链路最好用三层口或者三层SVI跑OSPF让VRRP的Master设备通过OSPF通告出来的路由始终指向正确的下一跳。如果核心交换机之间只用二层链路OSPF邻居和VRRP状态会互相影响故障时容易出现路由震荡。还有一个典型问题OSPF在以太网广播链路上默认要选举DR/BDRHello间隔10秒、Dead间隔40秒。而MSTP在拓扑变化时收敛时间可能达到30秒甚至更久。如果MSTP的拓扑变化导致链路临时阻塞OSPF的Hello包发不过去邻居就会Down。所以实验中建议把直连路由器之间的互联口改成P2P网络类型既能减少DR选举的干扰也能让邻居建立更快。3. 实操配置与验证全过程3.1 路由器基础配置接口、Loopback与Router-ID现在开始动手配置。先配R1包括所有接口IP、Loopback和OSPF单区域。system-view sysname R1 interface GigabitEthernet0/0/0 ip address 10.0.12.1 255.255.255.252 undo shutdown interface GigabitEthernet0/0/1 ip address 10.0.13.1 255.255.255.252 undo shutdown interface GigabitEthernet0/0/2 ip address 10.0.14.1 255.255.255.252 undo shutdown interface LoopBack0 ip address 1.1.1.1 255.255.255.255 ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 10.0.12.0 0.0.0.3 network 10.0.13.0 0.0.0.3 network 10.0.14.0 0.0.0.3 network 1.1.1.1 0.0.0.0注意里面的通配符写法。10.0.12.0/30反掩码是0.0.0.3不是255.255.255.252。很多新手第一次配OSPF容易把反掩码写成子网掩码邻居死活起不来原因就在这里。再配R2。R2是ABR所以要同时宣告Area 0和Area 1。system-view sysname R2 interface GigabitEthernet0/0/0 ip address 10.0.12.2 255.255.255.252 undo shutdown interface GigabitEthernet0/0/1 ip address 10.0.23.2 255.255.255.252 undo shutdown interface LoopBack0 ip address 2.2.2.2 255.255.255.255 ospf 1 router-id 2.2.2.2 area 0.0.0.0 network 10.0.12.0 0.0.0.3 network 2.2.2.2 0.0.0.0 area 0.0.0.1 network 10.0.23.0 0.0.0.3R2的Loopback0放到了Area 0这样管理和维护更合理。Loopback本身是一个稳定网段放骨干区也方便后面做路由汇总时作为参考点。R3配置如下模拟一个远端站点system-view sysname R3 interface GigabitEthernet0/0/0 ip address 10.0.23.1 255.255.255.252 undo shutdown interface LoopBack0 ip address 3.3.3.3 255.255.255.255 interface LoopBack1 ip address 192.168.30.1 255.255.255.0 ospf 1 router-id 3.3.3.3 area 0.0.0.1 network 10.0.23.0 0.0.0.3 network 3.3.3.3 0.0.0.0 network 192.168.30.0 0.0.0.255这里有意识地在Area 1里放了一个业务网段192.168.30.0/24用来验证ABR跨区域路由传递是否正常。3.2 多区域与ABR的验证配置完成后在R1上查看邻居状态display ospf peer正常情况下能看到R2的邻居状态是FullNeighbor Address显示10.0.12.2Router ID是2.2.2.2。如果状态卡在ExStart或Exchange大概率是MTU、掩码或接口类型不匹配。然后查看R1的路由表display ospf routing在R1上应该能看到192.168.30.0/24这条路由因为R2作为ABR把它从Area 1传到了Area 0。路由类型会显示Inter-Domain说明这是一条跨区域路由。同样在R3上也能看到1.1.1.1/32、192.168.10.0/24这些Area 0里的路由。在R2上可以用这条命令看得更清楚display ospf lsdb输出里会有多个LSA。注意看Type为Sum-Net的条目那就是ABR生成的Type 3 LSA。你会在Area 0的LSDB里看到192.168.30.0/24在Area 1的LSDB里看到1.1.1.1/32、192.168.10.0/24。不同区域维护各自的LSDB这正是ABR的核心行为。3.3 核心交换机上的MSTP、VRRP与OSPF联动配置三层路由器部分配完之后接着把核心交换机拉进来。SW1作为VRRP主设备优先级设为120SW2作为备份设备优先级默认100。同时两台交换机之间跑OSPF让VLAN网段能被全网路由。SW1配置system-view sysname SW1 vlan batch 10 20 interface GigabitEthernet0/0/1 ip address 10.0.13.2 255.255.255.252 undo shutdown interface GigabitEthernet0/0/3 ip address 10.0.15.2 255.255.255.252 undo shutdown interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 10 20 undo shutdown interface Vlanif10 ip address 192.168.10.252 255.255.255.0 vrrp vrid 10 virtual-ip 192.168.10.254 vrrp vrid 10 priority 120 interface Vlanif20 ip address 192.168.20.252 255.255.255.0 vrrp vrid 20 virtual-ip 192.168.20.254 vrrp vrid 20 priority 120 stp mode mstp stp region-configuration region-name CAMPUS instance 1 vlan 10 20 active region-configuration stp instance 1 root primary ospf 1 router-id 4.4.4.4 area 0.0.0.0 network 10.0.13.0 0.0.0.3 network 10.0.15.0 0.0.0.3 network 192.168.10.0 0.0.0.255 network 192.168.20.0 0.0.0.255SW2配置system-view sysname SW2 vlan batch 10 20 interface GigabitEthernet0/0/1 ip address 10.0.14.2 255.255.255.252 undo shutdown interface GigabitEthernet0/0/3 ip address 10.0.15.3 255.255.255.252 undo shutdown interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 10 20 undo shutdown interface Vlanif10 ip address 192.168.10.253 255.255.255.0 vrrp vrid 10 virtual-ip 192.168.10.254 interface Vlanif20 ip address 192.168.20.253 255.255.255.0 vrrp vrid 20 virtual-ip 192.168.20.254 stp mode mstp stp region-configuration region-name CAMPUS instance 1 vlan 10 20 active region-configuration stp instance 1 root secondary ospf 1 router-id 5.5.5.5 area 0.0.0.0 network 10.0.14.0 0.0.0.3 network 10.0.15.0 0.0.0.3 network 192.168.10.0 0.0.0.255 network 192.168.20.0 0.0.0.255接入交换机SW3只需要做二层透传和MSTP不需要配OSPFsystem-view sysname SW3 vlan batch 10 20 interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20 undo shutdown interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 10 20 undo shutdown interface Ethernet0/0/1 port link-type access port default vlan 10 stp mode mstp stp region-configuration region-name CAMPUS instance 1 vlan 10 20 active region-configuration这里有一个关键点SW1、SW2、SW3三台交换机的MSTP区域名称、实例映射必须完全一致否则生成树会计算错乱严重时直接把网络堵死。SW3双归到两台核心MSTP会在两条上行链路中阻塞一条避免出现二层环路。配置完成后在SW1上查看VRRP状态display vrrp正常情况下Vlanif10和Vlanif20的VRRP状态都应该是Master。试着把SW1的上行接口或VRRP主接口shutdown再查看状态SW2会变成Master这就是VRRP冗余生效了。3.4 验证OSPF与VRRP联动后的整体路由在R3上执行display ospf routing应该能看到192.168.10.0/24和192.168.20.0/24这两条用户网段路由。这说明SW1和SW2通过OSPF把VLAN信息发布到了整个OSPF域即使R3在Area 1也能通过ABR R2学到。在R1上查看完整路由表display ip routing-table你能看到所有直连路由、OSPF域内路由、跨区域路由。可以试着在R1上Ping R3的Loopback1地址192.168.30.1如果通说明整条链路已经打通。如果打算验证VRRP和OSPF的联动效果可以把SW1的Vlanif10接口shutdown掉然后观察VRRP主备切换后R1的路由表是否还能继续学到192.168.10.0/24。正常情况下SW2会接管网关OSPF路由不会消失只是下一跳对应的Router-ID可能会变成5.5.5.5。4. 常见问题与排查技巧实录4.1 OSPF邻居起不来的原因排查OSPF邻居起不来是我见过最多的问题。先说几个最常见的原因问题现象排查方法区域ID不一致邻居卡在Init对比display ospf peer和配置里的area认证不匹配邻居卡在Down或反复刷新检查两端认证模式和密钥Hello/Dead间隔不一致邻居时断时续默认Hello 10秒Dead 40秒两端要一致MTU不一致邻居卡在ExStart在接口下配置ospf mtu-enable或者统一MTURouter-ID冲突邻居反复重置确认全网Router-ID唯一接口掩码或通配符错误该网段没有通告进OSPF核对network语句的反掩码看到邻居状态异常第一件事是display ospf error里面会有计数器的统计。如果看到“Bad area id”或“Bad authentication”直接照上面的表定位。另外eNSP实验里经常有接口没undo shutdown的坑。物理接口默认是shutdown状态只配IP不开接口OSPF包根本发不出去。别笑这个问题我见过太多次。4.2 多区域路由缺失或次优路径配置完多区域后如果某个区域的路由没有出现在另一个区域里优先查两件事第一ABR是否真的连接了Area 0和非骨干区域第二有没有在ABR上配置了不必要的过滤或汇总。ABR跨区域传递路由靠的是Type 3 LSA。如果在R2上执行display ospf lsdb看不到192.168.30.0/24的Sum-Net条目那就要回到R3上检查这个网段是否真的被宣告进了Area 1。还有一种情况Area 1里的路由器接口全部在一个区域但ABR并没有把对应接口放进Area 0或者ABR的Area 0接口Down了都会导致路由消失。次优路径问题更多出现在VRRP和OSPF叠加的场景。比如SW1是VRRP Master但OSPF算出来的最优下一跳指向SW2流量绕了一圈。这时可以在SW1的Vlanif接口上调整OSPF cost让主网关路径cost更小。或者用BFD与VRRP联动把故障检测时间压缩到毫秒级。4.3 MSTP与OSPF的相互干扰MSTP和OSPF同时跑的时候最常见的坑是MSTP区域配置不一致。三台交换机只要有一台region-name或实例映射对不上生成树就会把端口阻塞导致VLAN流量不通进而影响Vlanif接口状态OSPF邻居也会跟着Down。遇到这种情况先在每台交换机上执行display stp region-configuration对比区域名和实例映射。如果一致再看display stp instance 1 brief确认哪个端口被阻塞。实验环境里我习惯把SW1设成主根桥SW2设成备根桥这样可以稳定预测阻塞端口的位置。另一个容易忽略的是把OSPF跑在Vlanif接口上时如果这个VLAN在MSTP里被阻塞了Vlanif接口会DownOSPF邻居自然消失。所以设计上一定要保证承载OSPF邻居的VLAN不被阻塞或者像我前面一样用三层物理接口专门跑OSPF和MSTP解耦。4.4 配置重置与清理命令速查实验做乱了需要重置配置记住这几个命令reset ospf process reset ospf counters display ospf error undo ospf 1reset ospf process会重启OSPF进程一般用于修改Router-ID或区域配置后重新建立邻居。reset ospf counters用来清零错误计数器方便重新统计问题。undo ospf 1直接删除整个OSPF进程适合推倒重来。注意删除OSPF进程后所有该进程下的network配置都会消失。5. 个人经验与扩展玩法5.1 我踩过的几个坑这个实验我前前后后做了两遍第一遍翻车翻得很惨。第一个坑是Router-ID冲突。我给R1配了1.1.1.1给SW1也配了1.1.1.1结果R1和SW1的邻居关系反复震荡看了半天display ospf error才发现是Router-ID重复。所以全网规划设备身份时一定要把Loopback地址和Router-ID统一起来做个表贴在旁边。第二个坑是改完Router-ID没有重置进程。我在R2上从自动选举改成手动指定2.2.2.2结果邻居状态一直显示旧Router-ID还以为是配置没刷上去。后来才想起来要执行reset ospf process。这个操作在生产环境里会导致路由重新收敛必须评估影响窗口。第三个坑是MSTP的region-name不一致。SW2的region-name少打了一个字母导致SW1和SW2上的生成树计算各算各的VLAN流量瞬间不通。当时花了半小时排查物理链路最后才发现是MSTP配置不匹配。5.2 往这个实验里还能加什么OSPF实验做到这里其实只算基础。接着往下扩展可以加的东西还很多OSPF认证给区域配置MD5或HMAC-SHA256认证防止非法设备建立邻居。Stub区域把Area 1配置成Stub或Totally Stub减少区域内维护的外部LSA数量。路由汇总在ABR上做区域间路由汇总减小骨干区域的路由表规模。等价负载均衡调整多条链路的OSPF Cost让R1到R2之间的流量负载分担。OSPF与BFD联动把邻居检测时间从秒级降到毫秒级快速感知链路故障。PBR策略路由在R1上做基于源地址的路径控制让部分业务走R2其他业务走交换机。我个人觉得最有价值的是Stub区域和路由汇总这两个能让你真正理解OSPF为什么设计成多区域而不只是会敲配置。把ABR、LSA、Router-ID这些基础打牢后面学OSPF高级特性会轻松很多。实验做完了最好再回头把配置清掉重新配一遍。我自己的体会是照着文档敲一遍只能记住步骤从头思考并独立复现一遍才真正算掌握了OSPF实验的精髓。
返回列表