VLAN 基础那篇讲的是"怎么切"。这篇讲"切完之后怎么办"——地址不够用、接口不够用、链路要冗余但一冗余就环路、设备想当一台用。都是真实组网里绕不开的事。

二层最大的坑不是"不通",而是"太通"——一根线接错,整个 VLAN 就被广播风暴淹掉。所以这篇的重心在环路控制。

VLAN 进阶:省地址、省接口、做隔离

VLAN 聚合(Super VLAN)

问题:一个部门有 200 个人,每个人一个 VLAN 做隔离,那就是 200 个网段、200 个网关地址、200 条路由——地址浪费得离谱。

VLAN 聚合的解法是把多个 VLAN 归到一个 Super VLAN 下共用网关:

huawei · vlan 聚合
vlan 100
 aggregate-vlan                       # 声明 100 是 Super VLAN
 access-vlan 10 to 20                 # 10~20 是 Sub VLAN

interface Vlanif100
 ip address 192.168.100.1 255.255.255.0
 # 所有 Sub VLAN 的用户网关都是它

★ 好处:200 个 VLAN 只用 1 个网段、1 个网关、1 条路由

Mux VLAN:主 VLAN + 从 VLAN

典型场景是酒店 / 小区:所有房间能访问外面的服务器,但房间之间不能互相访问。

角色能访问谁
Principal VLAN(主)能和所有从 VLAN 通信
Group VLAN(互通型从)组内互通,也能访问主 VLAN;不能访问其他组
Separate VLAN(隔离型从)只能访问主 VLAN,从之间完全隔离

QINQ:把 VLAN 再套一层

QINQ(Stacked VLAN,802.1ad)在原来的 802.1Q 标签外面再压一层外层标签。运营商用它给每个用户打一个"身份标签",用户自己的 VLAN 完全透明。

frame
普通 802.1Q 帧:
┌────────┬──────────┬────────┬──────────┬──────┐
│ 目的MAC │  源MAC   │ 8100   │ VLAN ID  │ 数据 │
└────────┴──────────┴────────┴──────────┴──────┘

QINQ 帧(双层标签):
┌────────┬──────────┬────────┬───────┬────────┬───────┬──────┐
│ 目的MAC │  源MAC   │ 88a8   │ 外层ID │ 8100   │ 内层ID│ 数据 │
└────────┴──────────┴────────┴───────┴────────┴───────┴──────┘
                      ↑ 运营商打的外层      ↑ 用户自己的,透明传输
★ 标签数从 4094 个 VLAN 扩展到 4094 × 4094 ≈ 1600 万

顺便提一句 代理 ARP:开启后,接口收到 ARP 请求时,如果自己有到目标的直连路由,就替对方回一个自己的 MAC。它常常和"端口隔离"配合,让隔离的端口之间可以走网关互通,而不必开 VLANIF。

二层环路:为什么一根线能搞垮整个网

为了冗余,二层网络必然会有物理环路。但二层帧没有 TTL——一旦有环路,广播帧会永远转下去。

危害现象
广播风暴广播帧无限复制,链路带宽 100% 打满,CPU 飙高,全网卡死
MAC 表震荡同一个 MAC 从两个端口反复学到,MAC 表不断翻动,转发彻底混乱
重复帧同一帧从多条路径到达,上层收到重复数据

二层环路有个很好认的特征:交换机上的端口指示灯狂闪、CPU 占用接近 100%、ping 丢包严重甚至不通。看到这个,先去查是不是接成环了。

STP → RSTP → MSTP:三代生成树

STP(802.1D):选根、算路、堵口

STP 的思路是逻辑上把环路剪断——物理线还连着,但有些端口被"阻塞",不发业务帧。

  1. 选根桥(Root Bridge):所有交换机都发 BPDU,里面带 Bridge ID = 优先级(2字节) + MAC(6字节)。BID 最小者当根。优先级默认 32768,步长 4096;
  2. 每台非根交换机选一个根端口(Root Port):到根桥开销最小的那个端口;
  3. 每条链路上选一个指定端口(Designated Port):负责转发,另一头就是阻塞端口(Alternate / Blocking)。
STP 根桥选举与端口角色:根端口、指定端口、阻塞端口
▲ STP 的根桥、根端口、指定端口与阻塞端口

端口开销默认按带宽算(华为):10M = 100,100M = 19,1000M = 4,10G = 2。所以千兆链路会被优先选为根端口。

STP 端口状态说明
Disabled物理 down 或管理关闭
Blocking只收 BPDU,不转发、不学 MAC
Listening参与选举,仍不转发(15s)
Learning开始学 MAC,不转发(15s)
Forwarding正常转发

从 Blocking 到 Forwarding 至少 30 秒(外加 20 秒 Max Age 的话可能到 50 秒)——这就是 STP 最被人吐槽的地方。

RSTP(802.1w):快在哪

RSTP 把端口状态压缩成三个(Discarding / Learning / Forwarding),真正的变化是引入新的端口角色和握手机制:

MSTP(802.1s):多实例,才能负载分担

STP 和 RSTP 只有一棵树——所有 VLAN 共用一套转发路径,另一条链路永远闲置。MSTP 的解法是多实例:

huawei · mstp
stp mode mstp
stp region-configuration
 region-name WANGWANG
 revision-level 1
 instance 1 vlan 10 20          # 实例1 承载 VLAN 10、20
 instance 2 vlan 30 40          # 实例2 承载 VLAN 30、40
 active region-configuration    # ★ 必须激活

# 让 SW1 做实例1 的根、实例2 的备份
stp instance 1 root primary
stp instance 2 root secondary

注意:同一 MSTP 域内的四要素(域名、修订级别、VLAN-实例映射、修订级别)必须完全一致,否则会被当成不同的域,各算各的树。

四个保护机制:把生成树"焊死"

生成树本身很脆弱——一个错误的 BPDU 就能让网络翻天。所以有四把锁:

机制防什么配在哪触发后果
BPDU 保护
BPDU Protection
接终端的边缘端口收到 BPDU(有人私接交换机)边缘端口端口被 shutdown(或 error-down),需手工/自动恢复
根保护
Root Protection
下游设备发来更优 BPDU,把根抢走根桥的指定端口端口进入 Discarding,只收不发,根桥地位不丢
环路保护
Loop Protection
链路单向故障导致根端口收不到 BPDU,误以为自己是根根端口 / Alternate 端口端口进入 Discarding,防止形成环路
TC 保护
TC-BPDU Protection
大量 TC-BPDU 刷屏,导致 MAC 表被反复删除(CPU 打满)全局限制单位时间内处理 TC 的次数,多余的丢弃
huawei · 配置四把锁
# 1. BPDU 保护(接 PC 的口)
interface GigabitEthernet0/0/1
 stp edged-port enable
 stp bpdu-protection

# 2. 根保护(根桥朝下的口)
interface GigabitEthernet0/0/2
 stp root-protection

# 3. 环路保护
interface GigabitEthernet0/0/3
 stp loop-protection

# 4. TC 保护(全局)
stp tc-protection
stp tc-protection threshold 5

现场经验:边缘端口 + BPDU 保护这两条几乎是必配的。用户私接一个家用路由器把根抢走,然后全网瘫痪——这种事故非常常见。

堆叠:把多台设备变成一台

传统组网里,两台汇聚交换机要做 VRRP、要跑生成树、要配一堆互联链路。堆叠(华为叫 iStack,框式设备叫 CSS)的思路是干脆把它们虚拟成一台。

M-LAG:堆叠的"不重启"版本

M-LAG(Multi-Chassis Link Aggregation Group,跨设备链路聚合)和堆叠解决同一个问题——让两条上行链路都活——但走的是完全不同的路。

堆叠 / CSSM-LAG
控制平面合并成一台,只有主设备有控制权两台独立,各自独立转发
配置一份两份(大部分对称)
故障切换主备切换,可能整机重启毫秒级,只切链路不改控制面
升级整系统一起升可逐台升级(ISSU)
控制协议堆叠协议peer-link + DFS 组(ICCP)
适合中小规模、追求简单大规模数据中心、要求高可用

M-LAG 的两个关键部件:

验证与排错

huawei
display stp brief                  # 各端口角色、状态、保护标志
display stp root                   # 根桥信息
display stp region-configuration   # MSTP 域配置(核对四要素)
display stp instance 1             # 指定实例的拓扑
display vlan                       # VLAN 与端口成员
display mac-address flapping       # ★ MAC 震荡记录——查环路的利器
display interface brief            # 接口流量、错包

# 排环路
display cpu-usage                  # 广播风暴时 CPU 飙高
display interface | include rate   # 看哪个口速率异常

一句话总结:VLAN 进阶解决"地址和接口不够用",生成树解决"冗余必然带来的环路",堆叠和 M-LAG 解决"设备层面的高可用"。三层楼各有各的招,但目标只有一个:在不牺牲冗余的前提下,别让环路把网搞死。

📌 本篇整理自 2024–2025 的「数通」学习笔记(HCIE-Datacom 方向)

合并了原始笔记中「VLAN高级 / vlan聚合 / vlan隔离 / QINQ / Mux-vlan / 代理arp / STP / RSTP / MSTP / RSTP的4个保护机制 / 堆叠 / M-LAG / 交换」十余页内容。
原文以胶片截图为主,本文按「VLAN 进阶 → 环路问题 → 生成树三代 → 四个保护 → 堆叠与 M-LAG」重排。
配置命令保留华为 VRP 原样。