第171篇:VPLS 点到多点二层 VPN 原理

关键词

VPLS、虚拟专用LAN服务、多点二层VPN、MAC 学习、泛洪、PW 全连接、水平分割


一、从 VPWS 到 VPLS

1.1 VPWS 的局限

VPWS/VLL 提供点到点的二层连接。如果需要将三个或更多站点连接成一个二层域:

VPWS 方案:两两连线
  Site1 ───── Site2
  Site1 ───── Site3
  Site2 ───── Site3

需要 3 条 VPWS,N 个站点需要 N(N-1)/2 条

VPLS 方案:所有站点属于同一个二层域
  Site1
    │
  Site2 ───── VPLS ───── Site3
    │
  Site4

只需要 1 个 VPLS 实例

1.2 什么是 VPLS

VPLS(Virtual Private LAN Service) 在 MPLS 骨干网上模拟一个虚拟的二层交换机

  • 所有站点属于同一个广播域
  • 支持 MAC 地址学习
  • 支持广播、未知单播和组播的泛洪
  • 透明传输客户以太网帧
           ┌──────────────────────┐
           │      VPLS 实例        │
           │ (虚拟二层交换机)      │
           │                      │
  Site1────┤                      ├────Site2
           │                      │
  Site3────┤                      ├────Site4
           └──────────────────────┘

二、VPLS 的核心组件

2.1 VSI(Virtual Switching Instance)

VSI 是 PE 上 VPLS 的实例,相当于一台虚拟二层交换机:

PE1 上的 VSI:

VSI-VPLS-A MAC 地址表: MAC-A → AC1 MAC-B → PW-to-PE2 MAC-C → PW-to-PE3 本地 AC:GE0/0/0.100 远端的 PW: → PE2: PW-ID=100 → PE3: PW-ID=100

2.2 PW 全连接

VPLS 要求所有 PE 之间建立全网状(Full Mesh)的 PW

        PE1
       /   \
      /     \
   PE2 ────── PE3

PW 数量:N(N-1)/2 = 3(N=3)

2.3 AC(Attachment Circuit)

AC 是 CE 接入 PE 的接口,与 VPWS 相同。


三、VPLS MAC 地址学习

3.1 学习过程

VPLS 的 MAC 地址学习遵循标准的以太网桥接原理:

初始状态:所有 PE 的 MAC 表为空

CE1 向 CE2 发送帧(源 MAC=MA, 目的 MAC=MB):
  │
  ▼
PE1 收到:
  ① 学习:MAC MA → AC1(入接口)
  ② 查找 MAC MB → 未找到
  ③ 泛洪:向所有其他 PW(PE2, PE3)发送
  ④ 也向其他本地 AC 发送
  │
  ▼
PE2 收到从 PW 来的帧:
  ① 学习:MAC MA → PW-to-PE1(从哪条 PW 来)
  ② 查找 MAC MB → 未找到
  ③ 向本地 AC 泛洪
  │
  ▼
CE2 收到帧并回复(源 MAC=MB, 目的 MAC=MA)
  │
  ▼
PE2 收到回复:
  ① 学习:MAC MB → AC2
  ② 查找 MAC MA → 已存在(PW-to-PE1)
  ③ 通过 PW 发送到 PE1(单播,不再泛洪)
  │
  ▼
PE1 收到:
  ① 学习:MAC MB → PW-to-PE2
  ② 查找 MAC MA → AC1
  ③ 从 AC1 转发到 CE1

四、VPLS 环路避免

4.1 水平分割

VPLS 使用水平分割(Split Horizon)防止环路:

规则:
  - 从 PW 收到的帧,不能转发到其他 PW
  - 从 AC 收到的帧,可以转发到所有 PW 和其他 AC
  - 从而避免 PW 之间的环路
           PE1
          /   \  ← 这些 PW 之间不走流量
         /     \
      PE2 ────── PE3
        ↑ 这些 PW 之间也不走流量

4.2 为什么需要水平分割

如果没有水平分割:

PE1 从 PW(PE2) 收到帧
  → 泛洪到所有其他接口
  → 包括 PW(PE3)
  → PE3 又从 PW(PE1) 收到
  → 再泛洪到 PW(PE2)
  → PE2 又从 PW(PE3) 收到
  → 再泛洪到 PW(PE1)
  → ... 无限循环!

4.3 为什么 STP 不是必需的

在 VPLS 中,PW 全连接 + 水平分割天然防止桥接环路,因此一般不需要运行 STP


五、VPLS 的转发过程

5.1 已知单播转发

CE1 → CE2(MAC 表已学习):

PE1 查 MAC 表:
  MAC MB → PW-to-PE2(不是 AC 接口)
  → Push 标签栈 {隧道标签, VC 标签}
  → 经 MPLS 骨干发送到 PE2

PE2:
  → Pop 标签栈 → 恢复客户以太网帧
  → 查 MAC 表 → AC2
  → 从 AC2 转发到 CE2

5.2 广播/未知单播/组播(BUM)转发

CE1 发送广播帧(目的 MAC = FF:FF:FF:FF:FF:FF):

PE1:
  ① 查 MAC 表 → 广播地址未学习
  ② 向所有 PW(PE2, PE3)复制发送
  ③ 向所有本地 AC 发送

PE2:
  ① 收到的广播帧来自 PW → 不再转发给其他 PW(水平分割)
  ② 向本地 AC 泛洪

PE3:
  ① 同一操作

5.3 流量类型总结

流量类型 VPLS 处理
已知单播 MAC 查表 → 定向到对应 PW 或 AC
未知单播 泛洪到所有 PW 和 AC
广播 泛洪到所有 PW 和 AC
组播 泛洪(或优化:IGMP Snooping)

六、VPLS 的配置示例(华为)

6.1 PE1 配置

# 创建 VSI 实例
vsi VPLS-A
 pwsignal ldp                            # PW 信令为 LDP
  vsi-id 100                             # VSI ID(全局唯一)
  peer 2.2.2.2                           # PE2
  peer 3.3.3.3                           # PE3
  pw-tag 100                             # PW 标签
#
# 配置 AC 接口
interface GigabitEthernet0/0/0.100
 vlan-type dot1q 100
 l2 binding vsi VPLS-A                   # 绑定到 VSI

6.2 验证

# 查看 VSI 状态
<PE1> display vsi name VPLS-A

VSI Name               : VPLS-A
VSI Index              : 1
VSI State              : Up
VSI Type               : LDP
VSI ID                 : 100
VSI Description        : -
PW Signaling           : LDP
MAC Learning           : Enable
MAC Limit              : 16384
...

# 查看 MAC 地址表
<PE1> display vpls mac-address vsi VPLS-A

MAC Address    VSI Name     Type       Interface         State
00e0-fc00-0001 VPLS-A       Dynamic    GE0/0/0.100       Learned
00e0-fc00-0002 VPLS-A       Dynamic    PW(2.2.2.2)       Learned
00e0-fc00-0003 VPLS-A       Dynamic    PW(3.3.3.3)       Learned

七、VPLS 的局限

局限 说明 演进方案
PW 全连接 N 个 PE 需要 N(N-1)/2 条 PW H-VPLS 分层架构
MAC 表膨胀 PE 需要学习所有客户 MAC MAC 表限制、EVPN 控制面学习
BUM 泛洪 广播/未知单播占带宽 IGMP Snooping、EVPN 优化
LDP 信令 LDP 扩展性不如 BGP BGP VPLS、EVPN
无转发优化 不能精确控制路径 EVPN + TI-LFA

八、VPLS vs L3VPN vs VPWS

对比维度 VPLS L3VPN VPWS/VLL
网络层次 二层 三层 二层
连接类型 点到多点 点到多点 点到点
MAC 学习 PE 学习 MAC 不需要 不需要
客户路由 不参与 参与(VRF) 不参与
广播域 跨站点共享 站点隔离 仅两点共享
适用场景 DCI、VM 迁移 企业 WAN 专线、存储互联

九、总结

知识点 核心要点
VPLS 本质 MPLS 网络上的虚拟二层交换机
PW 全连接 所有 PE 之间建立全网状 PW
MAC 学习 标准桥接学习(源 MAC + 入接口)
水平分割 PW 收到的帧不会转发到其他 PW
BUM 处理 广播/未知单播/组播泛洪
无需 STP 水平分割 + 全连接天然防环

十、思考

  1. VPLS 和 VPWS 的主要区别是什么?
  2. VPLS 中如何进行 MAC 地址学习?与普通二层交换机的学习方式相同吗?
  3. 水平分割在 VPLS 中起什么作用?为什么需要它?
  4. VPLS 中为什么不需要运行 STP?
  5. VPLS 的 BUM 流量如何转发?会不会造成带宽浪费?

下篇预告:第172篇《H-VPLS 分层 VPLS 架构》——通过分层架构解决 VPLS 的全连接扩展性问题,理解接入层和汇聚层的角色划分。