说明:本文基于实际工程经验抽象整理。文中的网络拓扑、设备标识、VLAN、接口、地址及部分架构细节均经过泛化处理,不对应任何实际生产环境。本文讨论的是架构设计思路,不是可直接照搬到生产环境的配置模板。
背景
很多企业在建设数据中心网络时,都会遇到一个很现实的问题:
内部可以买两台边界路由器、两台核心交换机,服务器也可以做双网卡,但运营商只提供了一条专线。
这时很容易出现两种极端观点。一种观点认为,既然运营商线路本身就是单点,那么内部再做双机、双链路也没有意义。另一种观点则认为,只要所有关键设备都部署两台,就等于实现了“全冗余”。这两种说法都不准确。
单运营商线路确实意味着我们无法消除“运营商线路中断”这一故障域,但这并不代表内部网络不需要高可用。现实中,设备硬件故障、板卡故障、电源故障、光模块故障、跳线故障,以及日常维护或人为操作造成的中断,都可能影响业务连续性。因此,这套设计的目标不是构造一个“绝不会中断”的网络,而是:
在只有一条运营商专线的前提下,尽可能消除企业内部能够控制的单点故障。
为了说明问题,本文假设一个经过抽象后的典型场景:
- 单一运营商专线 × 1
- 边界安全设备 × 1,透明模式部署
- 企业级边界路由器 × 2
- 企业级核心交换机 × 2
- 两台核心通过 IRF 或类似虚拟化技术组成一个逻辑核心
- 服务器采用双网卡
- 服务器业务使用独立 VLAN
- 边界路由器接口资源有限,需要精简端口规划
这里的重点不是具体厂商和型号,而是高可用设计中的故障域、链路关系、收敛机制与状态边界。
设计目标
这套架构主要希望解决以下问题:
- 任意一台边界路由器故障时,内部网络仍然可以通过另一台路由器恢复三层转发。
- 任意一台核心交换机故障时,服务器和上联网络仍然保持可达。
- 任意一条边界路由器到核心交换机的链路故障时,不造成整网中断。
- 服务器任意一张网卡或一条接入链路故障时,业务仍保有可用网络路径。
- 为日常单设备维护提供冗余路径,尽量降低维护操作对业务的影响。
但它不能直接解决:
- 运营商整条专线中断;
- 运营商上游网络故障;
- 单台边界安全设备自身故障;
- NAT、VPN 等有状态业务的会话同步问题;
- 单电源、单 UPS、单机柜等其他未做冗余的基础设施故障。
理解这一点非常重要。
高可用不是一句“全冗余”,而是把故障域逐个拆开,再判断每个故障域是否值得、是否能够被消除。
整体逻辑架构
建议的逻辑拓扑如下:
ISP
│
▼
Security Gateway
│
▼
L2 Handoff
/ \
/ \
Edge-R1 Edge-R2
\ /
\ VRRP /
\ /
Core Fabric
Core-1 ═══ Core-2
IRF / Stack
│
▼
Server VLAN
│
┌──────┴──────┐
│ │
NIC-A NIC-B
这张图里最容易被忽略的,是运营商交付侧和两台边界路由器之间的二层接入能力,以及两台边界路由器面向核心侧的逻辑链路组织方式。
为什么运营商侧可能需要增加二层交换设备
如果运营商只交付一个以太网接口,而企业计划使用两台边界路由器,那么物理上无法把这一条接口直接同时接到两台路由器。一种常见做法是在运营商交付侧增加二层交换设备,将同一个二层广播域扩展给两台路由器。逻辑上:
ISP Handoff
│
▼
L2 Switch
├──── Edge-R1
└──── Edge-R2
但这里必须强调:
增加二层交换设备只是解决“一个物理交付口如何连接两台边界路由器”的问题,并不会让一条运营商线路自动变成两个彼此独立的故障域。
而且,这台二层设备本身也可能成为新的故障点。如果对可靠性要求较高,可以进一步考虑:
- 使用运营商提供的双端口交付设备;
- 使用双电源、企业级二层交换设备;
- 与运营商确认是否支持双 CPE 或双端口 handoff;
- 最终增加第二条物理和路由层面独立的运营商线路。
WAN 侧高可用的前提:先搞清运营商如何交付
“双路由器”不等于“把一根运营商网线一分二,就能完成 WAN 侧 VRRP”。如果计划在同一个 WAN 二层网段上运行 VRRP,常见的非地址拥有者模式通常会为两台路由器分别配置节点地址,并额外配置一个 VRRP 虚拟地址。例如:
Edge-R1 WAN IP 192.0.2.2
Edge-R2 WAN IP 192.0.2.3
VRRP Virtual IP 192.0.2.1
这里使用的是文档示例地址,仅用于说明逻辑,不代表任何实际地址规划。不过,这并不是 VRRP 唯一可能的地址模型,也不意味着 WAN 侧必须使用 VRRP。实际能否在运营商侧部署双机高可用,还取决于:
- 运营商交付的是静态 IP、PPPoE,还是其他方式;
- 是否提供可供双节点使用的地址资源;
- 是否允许多 MAC / 多设备接入;
- 是否允许虚拟 MAC 或 Gratuitous ARP 等高可用行为;
- 是否支持两台路由器同时位于同一二层接入网络;
- 运营商 CPE 或接入侧是否还有其他限制。
因此,WAN 侧的冗余方式必须以运营商交付条件为前提,而不能只从企业内部网络视角推导。对本文这套架构而言,更核心的 VRRP 使用位置其实是边界路由器面向 Core Fabric 的 Transit 侧:核心设备只需要把缺省路由指向一个稳定的 VRRP 虚拟地址,而不必感知哪一台边界路由器当前处于主用状态。
边界路由器的端口如何规划
在路由器接口资源有限的场景下,通常需要优先保证:
- 一个 WAN 上联;
- 一条到核心设备 A 的下联;
- 一条到核心设备 B 的下联。
因此逻辑端口可以抽象为:
| 逻辑接口 | 用途 |
|---|---|
| WAN | 连接运营商接入侧 |
| Core-Link-A | 连接核心设备 A |
| Core-Link-B | 连接核心设备 B |
物理上,两台边界路由器都可以采用交叉连接:
Edge-R1
/ \
/ \
Core-1 Core-2
\ /
\ /
Edge-R2
这种交叉连接的价值在于:
任意一台边界路由器,都保留到两个核心机框的物理路径。
但需要注意,**物理交叉连接并不等于两根独立二层接口可以直接加入同一个 VLAN 后就完成设计。**实际部署时通常有两类做法:
方案一:跨核心成员做链路聚合
如果核心虚拟化技术支持跨成员链路聚合,可以把一台边界路由器到两个核心机框的链路组成同一个逻辑聚合接口。
Edge-R1
│
LACP / Aggregate
/ \
Core-1 Core-2
\ /
Core Fabric
对边界路由器而言,两条物理链路表现为一个逻辑接口;对核心而言,则通过跨成员聚合同时利用两个机框的端口资源。
方案二:使用两条独立三层链路
另一种做法是将两条下联设计成独立三层链路,分别使用独立传输网段,再通过静态路由、动态路由或 ECMP 等机制完成路径冗余。
Edge-R1 ── L3 Link A ── Core Fabric
Edge-R1 ── L3 Link B ── Core Fabric
这种方式可以减少二层故障域,但会增加三层路由设计复杂度。两种方式没有绝对优劣,关键是:
先明确链路在逻辑上是“一个聚合接口”,还是“两条独立三层路径”,不要只画出两根线就默认冗余已经成立。
为什么核心交换机采用 IRF 或类似虚拟化技术
两台核心交换机通过 IRF、虚拟堆叠或类似技术组成一个逻辑设备后,可以把两个物理机框视为一个逻辑核心。例如:
Core-1
╲
══ Virtual Fabric ══ 一个逻辑核心
╱
Core-2
这样做最大的价值,不只是“把两台交换机堆起来”。它可以明显简化上层和服务器侧的网络设计,例如:
- 一个逻辑管理面;
- 一个逻辑控制面;
- 跨机框链路聚合;
- 简化 STP 与网关设计;
- 单机框故障时保留另一机框转发能力。
当然,核心虚拟化本身也需要认真设计。至少应考虑:
- 两条或以上的互联物理链路;
- 互联链路尽量使用不同板卡或不同故障域;
- 互联链路使用足够带宽;
- 避免所有互联链路经过同一个物理故障点。
IRF 还必须考虑 Multi-Active Detection
IRF 的风险不只在于某一台成员设备故障,还包括:
IRF 链路全部中断,两个成员彼此失去联系,但双方都仍然存活。
这种情况通常被称为 Fabric 分裂、Multi-Active 或“脑裂”。如果两个分裂后的成员都继续转发,可能引发:
- MAC 地址学习异常;
- ARP 异常;
- 网关冲突;
- 聚合链路异常;
- 流量黑洞或重复转发。
因此生产环境中,除了提高 IRF 链路本身的冗余度,还应根据设备能力配置至少一种 MAD(Multi-Active Detection) 机制,例如 BFD MAD 或 LACP MAD。可以把两者理解为:
IRF链路冗余
↓
尽量避免 Fabric 分裂
MAD
↓
一旦真的分裂,避免两个 Fabric 同时转发
这两部分缺一不可。
VRRP 应该解决什么问题
VRRP 的作用,是让两台独立路由器对下游表现为一个稳定的虚拟网关。例如:
Edge-R1 Transit IP 192.0.2.2
Edge-R2 Transit IP 192.0.2.3
VRRP VIP 192.0.2.1
核心侧只需要把默认路由指向:
192.0.2.1
正常情况下:
VRRP Master = Edge-R1
当 Edge-R1 故障后:
Edge-R2
↓
接管 VRRP VIP
↓
核心侧默认路由无需修改
这就是 VRRP 的核心价值。但生产环境中不应该只检测“路由器本身是否活着”。更理想的是根据故障域结合:
- Track Interface;
- Track Route;
- NQA 或类似主动探测机制;
- 上游下一跳或关键目标可达性检测。
如果只 Track 物理接口,可能出现:
WAN Interface = UP
光链路 = UP
运营商下一跳 = 不可达
Internet = 不通
此时设备仍可能继续保持 VRRP Master,但已经无法提供有效的上游转发。因此,真正有意义的 VRRP 高可用,不只是“主设备掉电后备机接管”,而是:
让 VRRP 优先级能够反映上游路径是否真正健康。
VRRP 切换不等于所有业务会话都无感切换
这是边界高可用设计里非常容易被忽略的一点。VRRP 解决的是:
谁拥有虚拟网关
它并不天然解决:
谁拥有既有 NAT Session
谁拥有 VPN Session
谁保存连接跟踪状态
谁保存其他有状态业务上下文
因此,当 Edge-R1 故障后,更准确的表述应该是:
Edge-R1 Down
↓
VRRP 收敛
↓
Edge-R2 成为 Master
↓
三层转发恢复
如果边界路由器只承担纯三层路由,业务影响通常主要来自 VRRP、ARP 和路由收敛时间。但如果边界路由器同时承担 NAT、VPN、IPSec 或其他有状态业务,那么既有会话能否无感切换,还取决于设备是否支持并正确配置:
- 会话状态热备;
- NAT Session 同步;
- VPN/IPSec SA 同步;
- 相关业务模块的高可用机制。
所以:
VRRP 是网关冗余机制,不等于 Stateful Failover。
在设计和故障演练时,应把“网关切换成功”和“业务会话无损”作为两个不同的验证目标。
路由器与核心之间如何设计
边界路由器到核心之间,建议使用独立的 Transit 网络,而不要直接和服务器业务 VLAN 混在一起。逻辑关系可以抽象为:
Internet
│
Edge Routers
│
Transit Network
│
Core Fabric
│
Server VLAN
│
Servers
如果 Transit 侧采用 VRRP,则核心设备上的缺省路由可以指向 VRRP VIP:
0.0.0.0/0
↓
Router VRRP VIP
而边界路由器需要维护企业内部网段的回程路由。这样做的好处是:
- 边界层和业务层职责更清晰;
- VRRP 只服务于边界路由器与核心之间的网关高可用;
- 服务器业务 VLAN 不必直接参与边界冗余协议;
- 后续增加动态路由或多出口时更容易演进。
服务器为什么要双网卡
如果核心交换机已经做了双机,但服务器仍然只接其中一个机框,那么“最后一米”仍然存在单点。典型物理接法是:
Server
├── NIC-A → Core-1
└── NIC-B → Core-2
在核心虚拟化架构下,可以根据服务器操作系统、虚拟化平台和交换侧设计选择:
- LACP / Bonding;
- Active-Backup Bond;
- NIC Teaming;
- 虚拟化平台自身的链路冗余机制。
这里需要区分:
如果采用 LACP,两条服务器链路通常需要在交换侧组成同一个跨核心成员的聚合组。如果采用 Active-Backup,则并不要求两条链路同时参与 LACP,具体取决于服务器和交换网络设计。关键目标不是“两个网卡一定要同时跑满带宽”,而是:
任意一张网卡、一个光模块、一根跳线、一个交换机端口或一台核心机框故障时,服务器仍然保有可用网络路径。
单点故障分析
设计冗余网络时,比画拓扑图更重要的是逐项问:
如果这个东西现在坏了,会发生什么?
Edge-R1 故障
如果 Transit 侧 VRRP 工作正常:
Edge-R1 Down
↓
VRRP 收敛
↓
Edge-R2 成为 Master
↓
三层转发恢复
如果设备承担 NAT、VPN 等有状态业务,还需要额外验证会话同步能力,不能只以“VRRP 已切换”作为业务高可用成功的判断依据。
Core-1 故障
如果:
- 两台核心已经组成稳定的逻辑核心;
- 核心虚拟化本身具有正确的冗余与 MAD 设计;
- 路由器采用跨机框聚合或独立三层冗余链路;
- 服务器双网卡分别连接两个核心机框;
那么 Core-2 应继续承担剩余转发任务。
一条 Router-Core 链路故障
如果采用链路聚合:
成员链路 A Down
↓
聚合接口仍有成员链路 B
↓
业务继续转发
如果采用独立三层链路:
L3 Link A Down
↓
路由收敛 / ECMP 重新选路
↓
流量切换到 L3 Link B
这比笼统地说“还有另一根线”更准确。
一张服务器网卡故障
如果服务器侧冗余配置正确,服务器通过另一张网卡继续通信。
运营商专线故障
这是这套架构仍然无法解决的问题:
ISP Circuit
X
│
Internet 出口中断
内部双路由、双核心都无法修复一个已经消失的外部出口。真正解决这个故障域,需要增加第二条足够独立的运营商线路。
透明安全设备也是一个需要单独看待的故障域
在一些既有网络中,边界安全设备会采用透明模式部署在运营商与边界路由器之间。透明模式的优势通常包括:
- 不需要大规模改变原有三层地址结构;
- 对上下游路由关系影响较小;
- 改造成本相对可控。
但如果安全设备只有单节点,它仍然可能成为:
ISP
│
Security Gateway ← 单点
│
Edge Routers
因此,完成“双路由 + 双核心”以后,如果还要继续提升可用性,就需要单独评估边界安全设备自身的 HA 能力。否则:
边界路由器和核心都做了双机,单节点安全设备故障仍然可能导致整个 Internet 出口中断。
这也是为什么高可用设计一定要按照“故障域”而不是“设备数量”来思考。
这套架构真正解决了什么
在前提配置正确的情况下,这套设计主要解决:
边界路由器单机故障 ✅
核心交换机单机框故障 ✅
Router-Core 单链路故障 ✅
服务器单网卡故障 ✅
核心单端口故障 ✅
日常单设备维护 ✅*
✅ 表示在相关冗余、路由、聚合和状态同步配置正确并经过验证的前提下,具备故障切换或维护绕行能力,并不代表所有业务都能做到零丢包、零会话中断。但仍然存在:
单运营商专线 ❌
单节点安全设备 ❌
运营商接入侧二层设备 ⚠
有状态会话同步 需单独设计
供电系统 需单独设计
机柜与物理链路 需单独设计
因此,更准确的说法是:
单运营商条件下的企业内部网络高可用设计。
而不是“全冗余数据中心”。
后续演进
如果后续预算和业务重要性继续提升,可以按故障域逐步演进。
第一阶段:完成内部网络冗余
双边界路由器
+
双核心虚拟化
+
VRRP
+
Router-Core 逻辑冗余
+
服务器双网卡
+
MAD
第二阶段:处理边界安全设备单点
Security Gateway 1
+
Security Gateway 2
+
HA
同时验证:
- 会话同步;
- 策略同步;
- NAT 状态;
- VPN/IPSec 状态;
- 故障切换行为。
第三阶段:增加第二条独立运营商线路
ISP 1
+
ISP 2
增加第二条线路后,并不意味着一定要上 BGP。还需要根据以下条件决定出口方案:
- 是否拥有自有公网地址;
- 是否拥有 ASN;
- 是否需要控制入站路径;
- 是否需要多宿主路由发布;
- 是否只是解决出站 Internet 冗余。
根据实际条件,可以选择:
- 静态缺省路由 + Track;
- 策略路由;
- ECMP(需要同时考虑 NAT、会话保持和回程路径);
- BGP;
- 其他多出口机制。
第四阶段:从网络高可用走向业务连续性
当网络设备和链路层面的冗余逐渐完善后,还需要进一步考虑:
- 公网地址与 NAT 高可用;
- DNS 高可用;
- 应用服务高可用;
- 数据库与存储冗余;
- 跨机柜、跨机房甚至异地容灾;
- 故障演练与恢复时间目标。
到这个阶段,设计重点才真正从“设备级冗余”逐渐走向“业务连续性”。
总结
在只有一条运营商专线的情况下做网络冗余,并不是没有意义。真正需要避免的,是把“运营商线路仍然是单点”误解成“其他地方都不用做冗余”。企业网络高可用的核心思路应该是:
无法控制的风险先接受,可以控制的单点逐个消除;不能一次消除的故障域,也要明确记录并规划后续演进。
双边界路由器、VRRP、双核心虚拟化、Router-Core 逻辑冗余和服务器双网卡,并不能让一条运营商线路变成两条线路,也不能自动保证 NAT、VPN 等有状态业务无感切换。但它们可以显著降低企业内部设备与链路故障导致大面积业务中断的概率。而一套成熟的高可用架构,真正重要的也从来不是“用了多少台设备”,而是:
每一个关键故障域发生故障时,系统是否还有一条经过验证的可用路径。