news 2026/10/9 3:19:11

OSPF多区域综合实验:ABR、Stub/NSSA与MSTP/VRRP联动配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OSPF多区域综合实验:ABR、Stub/NSSA与MSTP/VRRP联动配置

做 OSPF 综合实验,最怕的不是命令不会敲,而是整个网络看起来是通的,却说不清每条路由为什么这样选。我自己在实验室里复现过很多次 OSPF 搭建网络,单区域单路由器的配置其实没什么难点,真正考验理解的是多区域、ABR、特殊区域,以及把 OSPF 和 MSTP、VRRP 放在同一套拓扑里联动时,三层选路和二层冗余怎么互相咬合。这篇笔记就以一个三区域 OSPF 网络为骨架,把 Area0、Area1、Area2 的邻居建立、ABR 行为、Stub 和 NSSA 特殊区域全部串起来,再叠加 MSTP 加 VRRP 的接入层网关冗余,适合正在备考网络工程师、准备 H3C 实验,或者在公司园区网改造前想验证思路的人参考。

1. 实验整体设计与拓扑规划

1.1 核心需求与实验目标

大部分初学者做 OSPF 实验时,习惯把几台路由器扔进同一个 Area 0,配完 network 之后邻居起来了,路由表也有了,就认为“会 OSPF 了”。实际上这种实验只验证了 OSPF 最基础的部分,完全没碰到区域间路由和 LSA 类型这些核心内容。

这个综合实验需要覆盖四件事:第一,OSPF 多区域之间怎么通过 ABR 传递路由;第二,Stub 区域和 NSSA 区域在路由传递上有什么本质区别;第三,OSPF 外部路由如何通过 ASBR 引入;第四,接入层交换机上的 MSTP 和 VRRP 怎么与 OSPF 配合,让网关冗余和路由选路不打架。把这四件事放在一张拓扑图里,比分开做四个小实验更能理解协议之间的协作关系。

1.2 拓扑结构与 IP 规划

实验拓扑以三台骨干路由器为核心:R1、R2、R3。R1 同时连接 Area 1,R2 同时连接 Area 2,所以 R1 和 R2 都是 ABR。R3 完全在 Area 0 里,作为骨干区域内部路由器。R4 放在 Area 1 的 Stub 区域里,R5 放在 Area 2 的 NSSA 区域里,并且负责引入外部路由。接入侧用两台汇聚交换机 S1、S2 跑 MSTP 和 VRRP,S3 作为纯二层接入交换机接终端,不参与 OSPF。

设备所在区域角色定位关键地址
R1Area 0 + Area 1ABRLoopback 1.1.1.1
R2Area 0 + Area 2ABR 兼 NSSA 转换Loopback 2.2.2.2
R3Area 0骨干路由器Loopback 3.3.3.3
R4Area 1Stub 区域内路由器Loopback 4.4.4.4
R5Area 2NSSA 内部路由器兼 ASBRLoopback 5.5.5.5
S1Area 0汇聚交换机,VLAN10 主网关Loopback 6.6.6.6
S2Area 0汇聚交换机,VLAN20 主网关Loopback 7.7.7.7

链路地址规划用得比较规整,所有路由器之间的互连都用 /30 地址段,便于后面用通配符掩码匹配。R1 与 R2 之间是 10.0.12.0/30,R1 与 R3 之间是 10.0.13.0/30,R2 与 R3 之间是 10.0.23.0/30。R1 通向 R4 的 Area 1 链路是 10.0.14.0/30,R2 通向 R5 的 Area 2 链路是 10.0.25.0/30。R1 连 S1 的上行链路是 10.0.1.0/30,R2 连 S2 的上行链路是 10.0.2.0/30,S1 与 S2 之间的三层互联走 VLAN100 的 10.0.100.0/30。

终端侧的网段是 VLAN10 的 192.168.10.0/24 和 VLAN20 的 192.168.20.0/24,这两个网段由 S1 和 S2 通过 VRRP 提供虚拟网关。PC1 接在 VLAN10 里,网关是 192.168.10.1;PC2 接在 VLAN20 里,网关是 192.168.20.1。

1.3 为什么选三区域而不是单区域

如果只用单一区域,OSPF 的所有路由器都会学到完整的链路状态信息,区域内路由自然也是通的,但你完全看不到 ABR 的作用。ABR 是理解 OSPF 的关键,它同时维护骨干区域和一个非骨干区域的路由器 LSDB,并且负责把非骨干区域的路由汇总成 Type 3 LSA 通告到骨干区域。

实验里规划两个非骨干区域,是为了对比 Stub 和 NSSA 两种特殊区域。Area 1 做成 Stub,用来验证“不允许 ASBR、不允许外部路由、只有 ABR 下发默认路由”的场景;Area 2 做成 NSSA,用来验证“区域内允许 ASBR、外部路由以 Type 7 LSA 存在、ABR 再转换成 Type 5 LSA”的场景。这两种区域在日常园区网中很常见,但很多资料只讲理论,不告诉你配置错一个选项后会发生什么。

2. OSPF 基础配置与关键原理

2.1 路由器基础配置:Router-ID、Network 与通配符掩码

所有路由器开启 OSPF 之前,先确认 Router-ID。实验里手工指定,避免回环接口和物理接口地址自动选举带来的不确定。H3C Comware 的命令风格是进入 OSPF 进程后,在区域视图下用 network 网段加通配符掩码宣告接口。

以 R1 为例:

sysname R1 interface LoopBack0 ip address 1.1.1.1 255.255.255.255 interface GigabitEthernet0/0 ip address 10.0.12.1 255.255.255.252 ospf network-type p2p interface GigabitEthernet0/1 ip address 10.0.13.1 255.255.255.252 ospf network-type p2p interface GigabitEthernet0/2 ip address 10.0.1.1 255.255.255.252 ospf network-type p2p interface GigabitEthernet0/3 ip address 10.0.14.1 255.255.255.252 ospf network-type p2p ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 1.1.1.1 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.1.0 0.0.0.3 area 0.0.0.1 stub network 10.0.14.0 0.0.0.3

这里有几个细节经常被忽略。通配符掩码是掩码的反码,/30 对应的掩码是 255.255.255.252,反码就是 0.0.0.3。/32 环回口对应的通配符是 0.0.0.0。network 10.0.14.0 0.0.0.3并不是宣告“这一条链路”,而是匹配接口地址落在 10.0.14.0 到 10.0.14.3 范围内的所有接口。

R1 的 Area 1 里必须写stub,因为 Stub 区域要求该区域所有路由器都保持一致。如果只有 R4 配了 stub,R1 没配,两边 Hello 报文携带的 Stub 标志不一致,邻居关系会一直卡在 ExStart 或者反复震荡,这个问题在排错部分会详细说。

2.2 邻居建立与 DR/BDR:换一种链路类型能少一事

OSPF 在广播链路默认要选举 DR 和 BDR,所有路由器只和 DR、BDR 建立完整邻接关系。实验室里如果直接用以太网口模拟两台路由器之间的点对点链路,不强制改网络类型,会有选举过程,也会出 hello 报文多发、收敛慢的问题。虽然不影响最终结果,但对综合实验来说会分散注意力。

所以我习惯在互连路由器的物理接口下加一行ospf network-type p2p。改成 p2p 之后,链路不再选举 DR 和 BDR,邻居关系建立得更快,LSDB 也更干净。这个配置在 H3C 和华为设备上都有,真实网络中如果两个路由器之间就是一条物理专线,也推荐这样做。

R4 的配置相对简单,它只有一个 Area 1 接口和一个环回口:

sysname R4 interface LoopBack0 ip address 4.4.4.4 255.255.255.255 interface GigabitEthernet0/0 ip address 10.0.14.2 255.255.255.252 ospf network-type p2p ospf 1 router-id 4.4.4.4 area 0.0.0.1 stub network 4.4.4.4 0.0.0.0 network 10.0.14.0 0.0.0.3

配置完成后,在 R1 上执行display ospf peer brief,可以看到与 R2、R3、S1、R4 的邻居状态为 Full。重点检查 Area 1 这一段,R1 与 R4 的邻居状态稳定在 Full,说明 Stub 区域的 Hello 选项匹配成功。

2.3 ABR 与区域间路由的传递机制

ABR 是 OSPF 多区域设计里最容易被低估的角色。一个路由器只有同时连接 Area 0 和至少一个非骨干区域,才叫 ABR。它维护多个 LSDB,把 Area 1 里学到的区域内路由转换成 Type 3 LSA,通告进 Area 0;反过来,也会把 Area 0 里的路由转换成 Type 3 LSA,通告进 Area 1。

这个过程不是简单的“转发 LSA”,而是重新生成 LSA。ABR 在非骨干区域和骨干区域之间的角色,有点像两个区域之间的翻译官。R4 回环口 4.4.4.4/32 这条路由,在 Area 1 里是 Type 1 LSA 加 Type 2 LSA 体现的,经过 R1 转换后,到达 Area 0 时变成一条 Type 3 汇总 LSA,通告者是 R1 的 Router-ID,cost 等于 R1 到 4.4.4.4 的区域内开销。

这也解释了为什么 OSPF 强约束所有非骨干区域必须直接连接到骨干区域。如果有一个区域只挂在 ABR 上,而 ABR 本身没有接入 Area 0,那么该区域和其他区域之间不会有任何路由传递,因为没人能执行“翻译”动作。

3. 特殊区域配置:Stub 和 NSSA 的实操

3.1 Stub 区域配置与默认路由

Stub 区域的设计目的是减少 LSDB 规模和路由表条目。它不允许外部路由进入,不允许存在 ASBR,也不允许 Type 4、Type 5 LSA 进入。区域内只保留 Type 1、Type 2 和 Type 3 LSA,而 ABR 会自动向 Stub 区域下发一条 Type 3 的默认路由。

R1 作为 Area 1 的 ABR,已经在区域视图下配置了stub。R4 同样配置stub,两端选项匹配后,邻居才能正常建立。默认路由会由 R1 自动生成,不需要手工写静态默认路由。

如果想控制这条默认路由的开销,可以在 ABR 的区域视图下使用default-cost命令,例如area 0.0.0.1下面设置default-cost 10。这个值会直接影响 Stub 区域内路由器访问外部网络时的路由优先级,实际工程里常用来做出口调度,不过实验环境保持默认值就够。

验证 Stub 区域效果时,在 R4 上执行display ospf lsdb,正常情况只能看到 Router LSA、Network LSA 和 Summary LSA,不应该出现 External LSA。再看路由表,display ip routing-table里会有一条由 OSPF 下发的默认路由,下一跳指向 R1。

3.2 NSSA 区域配置与 Type7 到 Type5 转换

NSSA 区域和 Stub 区域最大的区别是:NSSA 允许区域内存在 ASBR,允许引入外部路由,但这些外部路由在区域内部以 Type 7 LSA 存在。Type 7 LSA 不会直接扩散到其他区域,必须由 NSSA 的 ABR 转换成 Type 5 LSA 后,才进入骨干区域。

R2 的配置里,Area 2 要写nssa,R5 同样要写nssa。R5 同时作为 ASBR,把一条外部静态路由引入 OSPF:

sysname R5 ip route-static 172.16.100.0 255.255.255.0 NULL0 interface LoopBack0 ip address 5.5.5.5 255.255.255.255 interface GigabitEthernet0/0 ip address 10.0.25.2 255.255.255.252 ospf network-type p2p ospf 1 router-id 5.5.5.5 import-route static area 0.0.0.2 nssa network 5.5.5.5 0.0.0.0 network 10.0.25.0 0.0.0.3

这里用指向 NULL0 的静态路由来模拟一条外部网段,实际网络中应该指向真实下一跳。import-route static让 OSPF 把这个外部网段以 Type 7 LSA 放进 Area 2。由于 R2 是 Area 2 连接 Area 0 的 ABR,它会执行 Type 7 到 Type 5 的转换,所以 R1、R3 这些 Area 0 路由器最终看到的是 Type 5 LSA。

如果 NSSA 区域里存在多个 ABR,默认只会有一个转换者。若某台 ABR 因为故障无法转换,或者想固定让某台设备承担转换任务,可以在这台 ABR 上配置nssa translate-always,强制它无条件执行转换。多 ABR 冗余场景下,这个选项能避免外部路由在两次转换之间“悬空”。

3.3 特殊区域的路由验证

特殊区域配完,不能只看邻居状态 Full 就收工。我需要分别在 R4、R5、R3 上做三组检查。

R4 上检查默认路由是否由 ABR 下发,同时查看 LSDB 确认没有外部 LSA。R5 上执行display ospf lsdb nssa,应该能看到 Type 7 LSA,通告者是 5.5.5.5,描述的外部网段是 172.16.100.0/24。R3 上执行display ospf lsdb external,此时应该能看到 172.16.100.0/24 的 Type 5 LSA,通告者通常已经是 R2 的 Router-ID。

这个细节很值得注意:同一条外部路由,在 Area 2 里是 Type 7,在 Area 0 里变成 Type 5,这不是配置重复,而是协议规定。很多人在排错时发现 R5 上明明有外部路由,R3 的路由表里却没有,原因就是没意识到 ABR 转换这一步,或者在 R5 上只写 network 没有写 import-route。

4. 接入层协同:OSPF + MSTP + VRRP 联调

4.1 MSTP 多实例与流量分担

接入层如果只有一台交换机,不存在环路,STP 没什么可玩的。但综合实验一般都有两台汇聚交换机和一台接入交换机,物理链路形成三角形,必须靠生成树阻塞冗余链路。

MSTP 相比 STP、RSTP 的价值是可以用多个生成树实例承载不同的 VLAN。实验中 VLAN10 和 VLAN20 分别映射到 Instance 1 和 Instance 2。S1 在 Instance 1 里做根桥,在 Instance 2 里做备份根桥;S2 反过来。这样 VLAN10 的主用上联路径经过 S1,VLAN20 的主用上联路径经过 S2,两条上行链路都能传流量,而不是一条链路满载、另一条全程阻塞。

S1 的 STP 部分配置:

sysname S1 stp enable stp region-configuration region-name LAB instance 1 vlan 10 instance 2 vlan 20 active region-configuration stp instance 1 root primary stp instance 2 root secondary

S2 对应把stp instance 1 root secondary和stp instance 2 root primary反过来。MSTP 区域名、修订级别和 VLAN 实例映射必须一致,否则交换机不认为它们在同一个 MST 区域,生成树计算会出问题。

4.2 VRRP 网关冗余与主备切换

VRRP 解决的是用户网关冗余问题。两个汇聚交换机在 VLAN10 里配置同一个虚拟 IP 192.168.10.1,谁的优先级高谁就是 Master,承担网关转发;另一台是 Backup,监听 Master 状态。一旦 Master 故障,Backup 升级为 Master,用户网关地址不用变。

S1 的 VRRP 和 OSPF 配置:

interface Vlan-interface10 ip address 192.168.10.2 255.255.255.0 vrrp vrid 10 virtual-ip 192.168.10.1 vrrp vrid 10 priority 120 interface Vlan-interface20 ip address 192.168.20.2 255.255.255.0 vrrp vrid 20 virtual-ip 192.168.20.1 vrrp vrid 20 priority 100 interface Vlan-interface100 ip address 10.0.100.1 255.255.255.252 ospf 1 router-id 6.6.6.6 area 0.0.0.0 network 10.0.1.0 0.0.0.3 network 10.0.100.0 0.0.0.3 network 192.168.10.0 0.0.0.255 network 192.168.20.0 0.0.0.255 silent-interface Vlan-interface10 silent-interface Vlan-interface20

S2 上 VLAN10 优先级保持 100,VLAN20 优先级设成 120,IP 地址分别为 192.168.10.3 和 192.168.20.3,虚拟 IP 与 S1 一致,OSPF 进程用的 Router-ID 是 7.7.7.7。

这里有两个关键点。第一,VLAN10 和 VLAN20 的用户侧接口在 OSPF 里要配silent-interface,否则 S1 和 S2 会通过用户 VLAN 建立不必要的 OSPF 邻居,而且用户侧广播域里会出现大量 Hello 报文。做了 silent 之后,OSPF 仍然会宣告对应的直连网段,但不再往这个接口发送协议报文。第二,VRRP 的主备角色要和 MSTP 的根桥角色保持一致,VLAN10 的根桥和 Master 都在 S1,VLAN20 的根桥和 Master 都在 S2,这样用户流量从接入交换机上行后,走的是同一个主用设备,不会出现二层根桥在一台、三层网关在另一台的情况。

4.3 三层路由与二层冗余的衔接

OSPF 配置在 S1、S2 上,等于把汇聚交换机也当成三层设备。R1 通过上行链路学习到 S1,R2 通过学习到 S2,而 192.168.10.0/24 和 192.168.20.0/24 这两个用户网段由 S1、S2 同时通告进 Area 0。这样骨干路由器可以计算出访问用户网段的路由,PC 也可以访问核心区域的回环口地址。

在生产网络里,通常还会配置 VRRP 与上行接口的联动。比如 S1 的上行接口断开,VRRP 依然认为自己是 Master,用户网关不会切换,但上行链路其实已经不可用。这时候需要通过 Track 功能监控上行接口,一旦接口 down,就把 VRRP 优先级降下来,让 S2 接管网关。实验环境可以先把基础配置做完,再给 S1 的 VLAN10 接口加一个vrrp vrid 10 track联动,观察优先级变化,这个动作对理解故障切换非常有帮助。

5. 综合验证与故障排查

5.1 验收清单:从邻居到路由的一步步验证

整套配置完成后,我不建议直接拿 PC 去 ping 一圈就结束。更可靠的验证步骤是先看邻居,再看 LSDB,最后看路由表和实际连通性。

第一步,在 R1、R2、R3 上执行display ospf peer brief,确认邻居数量符合预期。R1 应该与 R2、R3、S1、R4 都是 Full;R2 应该与 R1、R3、S2、R5 都是 Full。第二步,在 R3 上用display ospf routing看 4.4.4.4 和 5.5.5.5 是否出现,前者是 R1 转换的 Type 3 路由,后者是 R5 环回口经 R2 转换后形成的 Type 3 路由。第三步,在 R3 的路由表里找 172.16.100.0/24,它应该由 OSPF 以 Type 5 外部路由的形式存在。第四步,在 S1 上执行display vrrp,确认 VLAN10 的状态是 Master、VLAN20 是 Backup;在 S2 上则相反。最后再用 PC 分别 ping 自己的网关,再从 PC ping R3 的环回口 3.3.3.3,验证跨区域和跨 VLAN 连通性。

5.2 常见问题速查表

现象排查方向处理建议
邻居一直停在 Init 或 2-WayHello 参数、区域 ID、接口掩码检查两端区域是否相同,hello/dead 时间是否一致,接口掩码是否造成网络范围理解不一致
邻居卡在 ExStart 或 ExchangeMTU 不一致统一两端接口 MTU,或在接口下启用 OSPF MTU 协商
Stub 区域邻居起不来Stub 标志不匹配该区域所有路由器都要配置 stub,ABR 和内部路由器都不能漏
R3 路由表看不到 172.16.100.0/24Type7 到 Type5 转换问题确认 R5 已 import-route,R2 的 Area2 是 nssa,必要时在 R2 上强制 translate-always
非骨干区域之间路由不通区域没有连接 Area0确认 ABR 同时接入骨干区域,否则无法生成区域间路由
VRRP 主备切换后网络仍不通上行链路没有联动配置 track 监控上行接口,让 VRRP 优先级随链路状态变化
MSTP 根桥和 VRRP 主设备不一致规划问题重新配置实例根桥,让每个 VLAN 的根桥和主网关落在同一台设备

5.3 一点排错心得

做这种综合实验,我最常用的一句话是“邻居 Full 只代表邻居关系正常,不代表路由正确”。如果路由表缺少某条路由,先别急着怀疑 import 或 network,应该看 LSDB。用display ospf lsdb确认这条路由对应的 LSA 到底有没有出现在本设备上,如果 LSA 没出现,问题大概率在通告端的区域配置;如果 LSA 出现了但路由表没有,再看是不是 cost 计算有问题,或者路由被策略过滤。

还有一个小技巧,排查 OSPF 邻居问题时,display ospf error很有用。区域不匹配、认证失败、时间参数不一致,这些错误通常会被记录在里面,比逐条对比两端配置快得多。做完一个区域的变化后,记得在两端同时 clear 一下 OSPF 进程,避免旧邻居状态干扰判断。

这套实验做完,我对 OSPF 区域设计的理解比看十遍理论都更深。特别是 Stub 和 NSSA 的区别,只有亲手配过一遍,看到 Type 7 LSA 转换前后通告者发生变化,才算真正记住。以后再做园区网改造,我会先画清楚根桥、主网关和路由开销三张表,再把 OSPF、MSTP、VRRP 一层一层往上叠,这样即使出问题,也知道该去哪一层排查。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 3:19:10

数组底层原理与高频操作:从内存模型到切片、去重与性能优化

数组这东西,看着简单,但真要较真起来,能拆出不少门道。数组的类型、数组的概念、数组在内存里到底怎么存的、不同语言里为什么写法完全不一样,这些问题看似基础,却决定了你后面处理数据的效率。前阵子和几个朋友聊天&a…

作者头像 李华
网站建设 2026/10/9 3:19:10

Java实现企业微信外部群机器人:推送、回调与自动应答实战

做企业服务开发这几年,被问到最多的一类需求就是:能不能让企业微信的群自己“干活”。比如服务器挂了自动告警、每天定时推送报表、群里有人问常见问题机器人自动回答。这类需求以前基本靠人工盯着,如今用外部群机器人很轻松就能实现&#xf…

作者头像 李华
网站建设 2026/10/9 3:18:56

基于MPP与Hadoop的城市轨道交通线网指挥平台设计实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/9 3:18:53

iPhone屏幕适配核心逻辑:安全区域与动态岛的工程实践指南

1. 为什么一张“iPhone屏幕尺寸表”能被反复收藏上千次? 上周帮某高校数字媒体实验室做UI适配复盘时,一位刚入职的前端同事掏出手机翻出一张截图——是张密密麻麻列着iPhone型号、分辨率、PPI、安全区域高度的表格,边角还手写标注了“iOS 17…

作者头像 李华
网站建设 2026/10/9 3:18:47

SSM进销存系统实战:库存扣减与事务管理核心解析

简介:这是一套基于Java SSM框架开发的美特超市进销存管理系统完整源码,面向计算机专业学生用于毕业设计或课程设计,也可作为Java Web入门者练习SSM整合与前后端分离开发的实战项目。压缩包共717个文件,约20.28MB,其中1…

作者头像 李华
网站建设 2026/10/9 3:18:25

防火墙源码深度拆解:包过滤与状态检测的工程实践

简介:这是一份面向网络安全初学者与防火墙开发爱好者的源代码学习资料,围绕防火墙核心功能的实现展开,适合具备一定C/C基础、希望理解包过滤与网络钩子机制的技术人员参考。压缩包共236个文件,整体约1.23MB,以54个h头文…

作者头像 李华