第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:

VPLS 架构 - 图示

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 数据转发流程

VPLS 数据转发流程 - 图示

3.2 VPLS 环路防止

VPLS 的环路防止机制:

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

VPLS 环路防止 - 图示

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

思考

  1. VPLS 的 Split-Horizon 规则规定"从某 PW 收到的报文不再从同一 PW 转发"。如果有 PE 之间的 PW 中断但未被检测到,会发生什么?
  2. VPLS 中 MAC 地址从 PW 学习到后,是否还会从 CE 接口重新学习同一 MAC?如果会,如何避免冲突?
  3. BGP Auto-Discovery 如何发现 VPLS 的 PE 邻居?它使用什么 BGP NLRI 类型?

下篇预告:第172篇:H-VPLS 分层 VPLS 架构