第171篇:VPLS 点到多点二层 VPN 原理
关键词:VPLS、多点二层VPN、伪线网格、MAC学习、BFD for PW、Loop检测
一、引言
VPWS/VLL 提供点到点的二层连接,但当客户需要在多个站点之间实现以太网 LAN 级别的互通时(如总部和多个分支构成一个广播域),点到点的模型就力不从心了。VPLS(Virtual Private LAN Service,虚拟专用 LAN 服务)通过在多个 PE 之间构建全互联的伪线网格,模拟了一个分布式的二层交换机,使远端站点能够像连接在同一个以太网交换机上一样自由通信。
二、核心概念
2.1 VPLS 架构
VPLS 将多个 PE 上的 CE 站点连接成一个逻辑上的二层 LAN:

2.2 VPLS 伪线网格(Full-Mesh PW)
VPLS 需要在每对 PE 之间建立一条 PW,形成全互联网格:
| PE 数量 | PW 数量 | 公式 |
|---|---|---|
| 2 | 1 | n(n-1)/2 = 1 |
| 3 | 3 | n(n-1)/2 = 3 |
| 10 | 45 | n(n-1)/2 = 45 |
| 100 | 4950 | n(n-1)/2 = 4950 |
扩展性问题:全互联 PW 的数量随 PE 数量呈二次方增长,这是 VPLS 的核心扩展瓶颈。
2.3 VPLS MAC 学习机制
VPLS PE 执行类似以太网交换机的 MAC 地址学习:
| 方向 | MAC 学习行为 |
|---|---|
| 从 CE 学习到 MAC | MAC 地址绑定到 CE 接口(本地) |
| 从 PW 学习到 MAC | MAC 地址绑定到 PW 接口(远端 PE) |
| 从 PW 学习到 MAC 的抑制 | 不再从其他 PW 学习同一 MAC(防止环路) |
2.4 VPLS 转发行为
| 报文类型 | 行为 |
|---|---|
| 已知单播 | 仅转发到目的 MAC 所在的 PW 或 CE 接口 |
| 未知单播 | 泛洪到所有 PW(除收到报文的 PW 外) |
| 广播 | 泛洪到所有 PW 和 CE 接口 |
| 组播 | 泛洪到所有 PW 和 CE 接口 |
三、技术细节
3.1 VPLS 数据转发流程

3.2 VPLS 环路防止
VPLS 的环路防止机制:
| 机制 | 说明 |
|---|---|
| BFD for PW | 快速检测 PW 故障,避免从失效 PW 转发 |
| MAC 老化 | MAC 地址超时后从表中删除 |
| Split-Horizon | 从某 PW 收到的报文不再从同一 PW 转发出去 |
| Loop Detection | VPLS Loop Detection 协议,检测并阻断环路 |

3.3 VPLS 信令方式
| 信令方式 | 说明 | 扩展性 |
|---|---|---|
| 静态配置 | 手工配置每条 PW | 差,适用于小规模 |
| LDP 信令 | LDP 自动分发 PW 标签 | 中,仍需要全互联 PW |
| BGP 信令 | BGP Auto-Discovery 自动发现 PW 邻居 | 好,支持规模扩展 |
四、实战配置/案例分析
4.1 静态 VPLS 配置
# ========== PE1: VPLS静态配置 ==========
[PE1] vlan 100
[PE1-vlan100] description VPLS-VLAN
# 创建VPLS实例
[PE1] vpls 100
[PE1-vpls-100] description VPLS-100
[PE1-vpls-100] separator
[PE1-vpls-100] vni 100
# 配置CE接口
[PE1-vpls-100] bd 100
[PE1] bridge-domain 100
[PE1-bridge-domain-100] interface gigabitethernet 1/0/0.100
# 配置PW(全互联)
[PE1] interface Vpn1/1/0
[PE1-Vpn1/1/0] description PW-to-PE2
[PE1-Vpn1/1/0] binding vpls 100
[PE1-Vpn1/1/0] destination 10.1.2.1 pw-type vlan
[PE1-Vpn1/1/0] vc-id 1002
[PE1] interface Vpn1/1/1
[PE1-Vpn1/1/1] description PW-to-PE3
[PE1-Vpn1/1/1] binding vpls 100
[PE1-Vpn1/1/1] destination 10.1.3.1 pw-type vlan
[PE1-Vpn1/1/1] vc-id 1003
4.2 BGP Auto-Discovery VPLS 配置
# ========== PE1: BGP-AD VPLS ==========
[PE1] vpls 100
[PE1-vpls-100] vni 100
[PE1-vpls-100] separator
[PE1-vpls-100] discovery bgp route-distinguisher 10.1.1.1:100
[PE1-vpls-100] discovery bgp route-target both 100:100
# CE接口
[PE1] bridge-domain 100
[PE1-bridge-domain-100] interface gigabitethernet 1/0/0.100
# MP-BGP配置(AFI=25 SAFI=65 VPLS)
[PE1] bgp 65001
[PE1-bgp-65001] address-family vpnv4 vpls
[PE1-bgp-65001-vpls] peer 10.1.2.1 enable
[PE1-bgp-65001-vpls] peer 10.1.3.1 enable
4.3 故障排查:VPLS 广播风暴
故障场景:VPLS 网络中广播流量激增,导致 CE 间通信延迟严重。
# Step 1: 检查PW流量统计
<PE1> display pw interface Vpn1/1/0
Input: Packets=500000, Broadcast=480000
# 广播报文占比96%! 异常
# Step 2: 检查MAC表
<PE1> display mac-address vpls 100
# MAC表项爆炸, 大量未知MAC地址
# 根因: CE侧存在环路或MAC地址欺骗
# Step 3: 启用VPLS环路检测
[PE1-vpls-100] loop-detection enable
[PE1-vpls-100] loop-detection interval 30
[PE1-vpls-100] loop-detection shutdown
# Step 4: 配置广播抑制
[PE1-bridge-domain-100] storm-control broadcast bps 10000000
# 限制广播速率为10Mbps
# Step 5: 排查CE侧环路
# 发现CE1侧交换机存在物理环路(两个端口接在同一hub上)
四(续)、高级主题
4.4 VPLS MAC 地址老化机制
| 参数 | 默认值 | 说明 |
|---|---|---|
| MAC 老化时间 | 300 秒 | 无活动流量后删除 MAC 表项 |
| MAC 表最大容量 | 4096 | 超出后新 MAC 替换最老表项 |
| 网关 MAC | 永不过期 | 静态配置的网关 MAC 不受老化影响 |
# 调整MAC老化时间
[PE1-vpls-100] mac-ageout 120
# 将老化时间从300s缩短到120s
# 查看MAC老化计时器
<PE1> display mac-address vpls 100 aging-timer
MAC Address Interface Remaining
0011-2233-4455 GE1/0/0 95s
00AA-BBCC-DDEE Vpn1/1/0 110s
4.5 BFD for PW 配置
BFD for PW 实现伪线故障的快速检测(毫秒级),替代传统的 PW 状态检测(秒级):
# ========== PE1: 配置BFD for PW ==========
[PE1] interface Vpn1/1/0
[PE1-Vpn1/1/0] pw-class pw-bfd
[PE1] pw-class pw-bfd
[PE1-pw-class-pw-bfd] bfd enable
[PE1-pw-class-pw-bfd] bfd min-tx-interval 10
[PE1-pw-class-pw-bfd] bfd min-rx-interval 10
[PE1-pw-class-pw-bfd] bfd detection-multiplier 3
# 检测时间: 10ms x 3 = 30ms
# ========== PE2: 对端同样配置 ==========
[PE2] interface Vpn1/1/0
[PE2-Vpn1/1/0] pw-class pw-bfd
[PE2] pw-class pw-bfd
[PE2-pw-class-pw-bfd] bfd enable
[PE2-pw-class-pw-bfd] bfd min-tx-interval 10
[PE2-pw-class-pw-bfd] bfd min-rx-interval 10
[PE2-pw-class-pw-bfd] bfd detection-multiplier 3
# 验证BFD for PW
<PE1> display bfd session pw
PeerIP LocalCir RemoteCir State Tx/Rx
10.1.2.1 0x1001 0x2001 Up 10/10ms
# BFD会话UP, 检测间隔10ms
4.6 VPLS 伪线故障排查步骤
| 步骤 | 检查项 | 命令 |
|---|---|---|
| 1 | PW 状态 | display pw interface Vpn1/1/0 |
| 2 | PW 标签绑定 | display mpls pw binding |
| 3 | LDP 会话 | display mpls ldp peer |
| 4 | BFD for PW | display bfd session pw |
| 5 | PW 流量统计 | display pw interface Vpn1/1/0 \| include Packets |
| 6 | 对端 PW 状态 | 在对端 PE 执行步骤 1 |
| 7 | 底层 LDP LSP | display mpls lsp verbose |
| 8 | 接口状态 | display interface <interface> |
4.7 VPLS 到 EVPN 的演进对比
| 维度 | VPLS | EVPN |
|---|---|---|
| 控制平面 | 数据平面(MAC学习) | BGP(显式通告) |
| MAC 学习 | 泛洪 + 学习 | BGP Type 2 路由 |
| 扩展性 | O(n²) PW 全互联 | O(n) BGP 全互联 |
| 多归属 | H-VPLS 复杂实现 | 原生支持(ESI + Type 1) |
| 网关冗余 | 需额外协议 | Active/Standby DAC |
| ARP 优化 | 不支持 | MAC+IP 联合通告 |
| 未知单播 | 全泛洪 | 精确转发 |
五、总结
| 项目 | 要点 |
|---|---|
| VPLS | 多点二层 LAN 仿真,模拟分布式以太网交换机 |
| 全互联 PW | 每对 PE 间一条 PW,数量 = n(n-1)/2 |
| MAC 学习 | PE 执行 MAC 地址学习和泛洪,类似交换机 |
| 环路防止 | Split-Horizon + BFD + Loop Detection |
| 扩展瓶颈 | PW 数量二次方增长,大规模需 H-VPLS |
思考
- VPLS 的 Split-Horizon 规则规定"从某 PW 收到的报文不再从同一 PW 转发"。如果有 PE 之间的 PW 中断但未被检测到,会发生什么?
- VPLS 中 MAC 地址从 PW 学习到后,是否还会从 CE 接口重新学习同一 MAC?如果会,如何避免冲突?
- BGP Auto-Discovery 如何发现 VPLS 的 PE 邻居?它使用什么 BGP NLRI 类型?
下篇预告:第172篇:H-VPLS 分层 VPLS 架构