VLAN 基础那篇讲的是"怎么切"。这篇讲"切完之后怎么办"——地址不够用、接口不够用、链路要冗余但一冗余就环路、设备想当一台用。都是真实组网里绕不开的事。
二层最大的坑不是"不通",而是"太通"——一根线接错,整个 VLAN 就被广播风暴淹掉。所以这篇的重心在环路控制。
VLAN 进阶:省地址、省接口、做隔离
VLAN 聚合(Super VLAN)
问题:一个部门有 200 个人,每个人一个 VLAN 做隔离,那就是 200 个网段、200 个网关地址、200 条路由——地址浪费得离谱。
VLAN 聚合的解法是把多个 VLAN 归到一个 Super VLAN 下共用网关:
- Super VLAN:只承载三层网关,自己不能有物理接口成员,所以不占独立网段;
- Sub VLAN:真正放用户的 VLAN,二层隔离,三层通过 Super VLAN 的 VLANIF 网关互通。
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 完全透明。
- 基本 QINQ:整个接口进来的所有帧,统一加同一个外层 Tag;
- 灵活 QINQ:按内层 VLAN / 优先级 / 报文类型分别加不同的外层 Tag。
普通 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 的思路是逻辑上把环路剪断——物理线还连着,但有些端口被"阻塞",不发业务帧。
- 选根桥(Root Bridge):所有交换机都发 BPDU,里面带 Bridge ID = 优先级(2字节) + MAC(6字节)。BID 最小者当根。优先级默认 32768,步长 4096;
- 每台非根交换机选一个根端口(Root Port):到根桥开销最小的那个端口;
- 每条链路上选一个指定端口(Designated Port):负责转发,另一头就是阻塞端口(Alternate / Blocking)。
端口开销默认按带宽算(华为):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),真正的变化是引入新的端口角色和握手机制:
- Alternate 端口:根端口的备份。根端口一挂,它立刻顶上,不用重新收敛;
- Backup 端口:指定端口的备份(同一台设备上的冗余链路);
- P/A 机制(Proposal / Agreement):点对点链路上,上游发 Proposal,下游同意后立刻把端口切到 Forwarding,不用等计时器;
- 边缘端口(Edge Port):接终端的口,配置后秒级进入转发,不参与生成树计算。华为叫
stp edged-port enable,接 PC 的口一定要配。
MSTP(802.1s):多实例,才能负载分担
STP 和 RSTP 只有一棵树——所有 VLAN 共用一套转发路径,另一条链路永远闲置。MSTP 的解法是多实例:
- 把若干 VLAN 映射到一个 MSTI(多生成树实例);
- 每个实例独立算一棵树,不同实例的阻塞端口可以不同——这样就能让 VLAN 10 走左边、VLAN 20 走右边,两条链路都用上;
- 所有实例共用一个 CIST(公共实例),保证和 STP/RSTP 设备能互通。
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 的次数,多余的丢弃 |
# 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)的思路是干脆把它们虚拟成一台。
- 多台设备组成一个堆叠系统,只有一个管理 IP、一份配置;
- 成员角色:主(Master)、备(Standby)、从(Slave);
- 堆叠口(Stack Port)互联,用专用堆叠线或普通业务口;
- 好处:消除二层环路、简化管理、跨设备链路聚合(Eth-Trunk 可以跨成员);
- 坏处:主备切换时整机重启,业务中断数十秒;升级要整系统一起升。
M-LAG:堆叠的"不重启"版本
M-LAG(Multi-Chassis Link Aggregation Group,跨设备链路聚合)和堆叠解决同一个问题——让两条上行链路都活——但走的是完全不同的路。
| 堆叠 / CSS | M-LAG | |
|---|---|---|
| 控制平面 | 合并成一台,只有主设备有控制权 | 两台独立,各自独立转发 |
| 配置 | 一份 | 两份(大部分对称) |
| 故障切换 | 主备切换,可能整机重启 | 毫秒级,只切链路不改控制面 |
| 升级 | 整系统一起升 | 可逐台升级(ISSU) |
| 控制协议 | 堆叠协议 | peer-link + DFS 组(ICCP) |
| 适合 | 中小规模、追求简单 | 大规模数据中心、要求高可用 |
M-LAG 的两个关键部件:
- peer-link:两台设备之间的直连链路,用来同步表项、转发跨设备流量。必须用高带宽、不能跑业务;
- DFS 组(Dynamic Fabric Service):承载 ICCP 协议,负责协商主备和同步信息。
验证与排错
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 原样。