4. 虚拟底盘架构原理
虚拟底盘(Virtual Chassis,VC)是 Juniper 在 QFX 系列交换机上实现控制平面统一、数据平面多路径转发的核心技术。它的基本思想是:把两台到多台物理交换机通过专用链路互联,逻辑上合并成一台“虚拟交换机”,对外呈现单一管理 IP、单一配置文件和统一的控制平面。运维人员登录任意一台成员设备,看到的都是一致的接口命名、路由表和转发表,而底层多台机箱则共同承担转发任务。
理解 VC 的关键在于区分三个层面:成员角色决定谁做主控、谁做备份;选举算法决定角色如何产生;虚拟底盘端口(VCP)与链路聚合决定成员之间如何互联、流量如何分布。下面按这三个层面展开。
成员角色与优先级
VC 中的每台物理交换机称为一个成员(member),拥有唯一的成员 ID(通常为 0~9)。成员角色分为两类:
- 主控成员(Master):运行控制平面,负责路由计算、配置管理、向所有成员下发转发表,并对外提供管理接口。
- 备份成员(Backup):同步主控的配置与状态,随时准备接管;在主控故障时成为新的主控。
- 线卡成员(Linecard):只负责本地端口的数据转发,不参与控制平面运算。
角色由“优先级 + 成员 ID”共同决定。优先级取值范围为 0~255,数值越大越优先;当优先级相同时,成员 ID 较小者优先。例如成员 0 优先级 200、成员 1 优先级 100,则成员 0 成为主控。若两者优先级都为 128,则成员 0 因 ID 更小而当选。优先级可以在配置中显式设置:
set virtual-chassis member 0 priority 200
set virtual-chassis member 1 priority 100
set virtual-chassis member 2 priority 50
需要强调的是,优先级只影响选举结果,不改变成员 ID。成员 ID 一旦确定,通常不建议随意更改,因为它与接口命名(如 ge-0/0/1 中的第一个 0 即成员 ID)直接绑定。
主备选举算法
VC 的选举不是简单的“先到先得”,而是一个确定性的比较过程。当 VC 形成或主控失效时,所有成员参与选举,比较顺序如下:
- 比较优先级,数值大者胜出;
- 优先级相同,比较成员 ID,数值小者胜出;
- 若成员 ID 也相同(通常不会发生),则比较 MAC 地址,较小者胜出。
选举结果产生后,主控成员会向其他成员同步配置和转发表。备份成员保持热待机状态,线卡成员则只保留本地转发能力。整个选举过程通常在数秒内完成,具体时间取决于 VC 规模、VCP 链路状态和配置同步量。
虚拟底盘端口与链路聚合
成员之间通过虚拟底盘端口(VCP)互联。VCP 可以是专用 VC 端口,也可以是普通 10G/40G/100G 端口转换而来。VCP 的物理连接方式决定了 VC 的带宽和可靠性。常见拓扑包括环形和链形,其中环形拓扑因为任意单点故障仍能保持连通,是推荐做法。
在数据平面上,多个 VCP 可以捆绑成链路聚合组(LAG),形成一条逻辑高带宽链路。这样做的价值有两点:一是提升成员间转发带宽,二是当某条 VCP 链路故障时,流量自动切换到剩余链路,避免控制平面分裂。配置示例如下:
set interfaces xe-0/0/0 ether-options 802.3ad ae0
set interfaces xe-1/0/0 ether-options 802.3ad ae0
set interfaces ae0 aggregated-ether-options lacp active
set interfaces ae0 unit 0 family ethernet-switching
这里把成员 0 的 xe-0/0/0 和成员 1 的 xe-1/0/0 捆绑为 ae0,并启用 LACP。需要注意,VCP 链路聚合与普通业务链路聚合在配置上类似,但 VCP 承载的是控制平面和跨成员转发流量,因此对稳定性和带宽更敏感。
故障切换行为
VC 的故障切换分为两类:主控故障切换和成员故障切换。
当主控成员发生硬件故障、断电或软件崩溃时,备份成员会检测到心跳丢失,随即触发重新选举。由于备份成员已经同步了配置和转发表,切换后业务中断时间通常较短,但具体取决于协议收敛速度。切换完成后,新的主控会重新计算转发表并下发到所有线卡成员。此时原主控的接口状态变为 down,相关流量由剩余成员接管。
当某个线卡成员故障时,主控会感知到该成员离线,并将其从转发表中移除。如果该成员上存在业务链路聚合,流量会自动切换到其他成员上的等价链路。需要注意的是,如果故障成员恰好是 VCP 链路的一端,且 VC 采用链形拓扑,则可能导致 VC 分裂为两个独立部分。因此,环形拓扑配合链路聚合是更稳妥的设计。
为了观察 VC 状态和故障切换结果,可以使用以下命令:
show virtual-chassis status
show virtual-chassis vc-port
show virtual-chassis protocol adjacency
其中 show virtual-chassis status 会显示每个成员的 ID、角色、优先级和状态;show virtual-chassis vc-port 用于确认 VCP 链路是否 up;show virtual-chassis protocol adjacency 则用于检查成员之间的控制协议邻接关系是否正常。通过这些输出,可以快速判断 VC 是否健康、选举结果是否符合预期、以及故障切换后角色是否已正确转移。
综合来看,虚拟底盘架构的核心在于“统一控制、分布转发”。成员角色和优先级决定了控制平面的归属,选举算法保证了角色产生的确定性,VCP 与链路聚合提供了成员间可靠的互联通道,而故障切换行为则决定了系统在异常情况下的恢复能力。理解这四者的关系,是设计和运维 QFX 高可用交换架构的基础。