编辑
2025-10-15
网工之路
00

目录

1. VPLS介绍
2. VPLS组件
2.1 VFI
2.2 VC
2.3 AC
3. LDP扩展
3.1 Generalized PWid FEC Element
3.2 MAC List TLV
4. VPLS操作
4.1 地址学习
4.2 PE发现
4.3 泛洪
4.4 防环机制
5. H-VPLS
5.1 架构变化
5.2 水平分割
6. 高可用
6.1 VPWS PW备份介绍
6.2 单向PW备份
6.3 双向PW备份
6.4 H-VPLS PW备份
6.5 PW备份切换速度
6.6 本地交换

l2vpn000.jpeg

VPLS (Virtual Private LAN Service) 是一种L2VPN技术,旨在通过MPLS网络将分散的站点连接成一个统一的局域网,使运营商核心网对客户而言如同一个大型交换机。本文详细介绍了VPLS的核心组件,包括用于L2桥接和MAC学习的VFI、标识VPLS实例的VC以及连接客户网络的AC。文章还探讨了LDP的扩展、VPLS的地址学习、PE发现、泛洪和水平分割防环机制。为解决传统VPLS的扩展性挑战,H-VPLS引入了u-PE和n-PE分层架构。此外,文中还深入分析了VPLS的高可用性方案,如单向/双向PW备份(结合MC-LAG)和H-VPLS的PW备份机制,并对比了冷备、温备、热备等PW状态,以及PE上的本地交换功能,旨在提升网络韧性和收敛速度。

1. VPLS介绍

Virtual Private LAN Service(VPLS)是一种L2VPN技术,用来将多个分布在不同地区的站点连接成以一个大的局域网。运营商的MPLS的网络在对于客户网络来说就是一台大的交换机。

它定义了一个提供以太网多点连接的框架,提供多点到多点的伪线全互联的拓扑,使用LDP或是BGP来转递信令。跟标准交换机一样,PE动态学习MAC地址,并据此转发以太帧到正确的目的地。

2. VPLS组件

l2vpn201.jpeg

2.1 VFI

Virtual Forwarding Instance也叫VSI(Virtual Switching Instance)提供L2多点桥接功能。

  • 它包括所有参与到这个VPLS实例里的AC和VC。
  • 可以理解为像VLAN一样划分一个广播域。
  • 就像一台交换机上可以划分多个VLAN一样,PE也可以存在多个VFI来区分不同的客户流量。
  • 它为这个VPLS实例里的所有设备维护了一张MAC地址表。
  • MAC的学习,过滤和泛洪基于VFI来操作的,确保了不同客户的隔离。

2.2 VC

Virtual Circuit,用于标识一个VFI。

  • VC ID也叫VPN ID,标识一个VPLS实例。
  • 在LDP里,VC标签用来找到正确的VPLS实例上。
  • 在运营商网络内,VC ID是唯一的,但是一个VPLS实例里所有伪线都使用同一个VC ID。

2.3 AC

Attachment Circuit,连接到客户网络的接口。

  • 可以是物理接口也可以是逻辑接口。
  • 多个AC接口可以属于同一个VFI。

3. LDP扩展

VPLS会在所有的PE上建立全互联的伪线连接,每对PE之间有一个远程的LDP会话,在它们之间的所有的伪线都会通过这个LDP会话进行信令的传递。

3.1 Generalized PWid FEC Element

在标签映射消息里有FEC TLV,里面有FEC Element。VPWS使用PWid FEC Element(FEC类型128),早期VPLS也使用这个FEC Element。现在使用的是Generalized PWid FEC Element(FEC类型129)。它主要用于在PE上区分服务。

l2vpn202.jpeg

FEC类型,C比特,PW类型和PW信息长度等参数,请参照 L2VPN技术详解1:VPWS在MPLS网络中的实现与应用

  • Attachment Group Identifier (AGI): 可以认为是VPLS实力ID。
  • Source Attachment Individual Identifier (SAII):标识源PE的AC。
  • Target Attachment Individual Identifier (TAII):标识目的PE的AC。大部分情况下TAII设置了掩码,譬如全是1,意味着每一比特位都无所谓。因为不需要像VPWS那样找到对端PE的出口AC。具体的出口是根据目的MAC地址查表后找到的。
  • 接口参数:在PWid FEC Element的报文格式里是有显示Interface Parameter Sub-TLV的,在这里没有显示,但是RFC 4447里是有提及的。包括MTU,可选项的描述,如果PW是以太标签模式,则还需要VLAN ID。

3.2 MAC List TLV

有时为了加快网络的收敛,需要移除动态学习到的MAC地址。PE发送LDP Address Withdraw Message给全互联的其他PE,并带上MAC地址列表。

带MAC地址列表的LDP Address Withdraw Message是在拓扑改变时加快MAC地址的移除。如果MAC地址列表过长,为了减少LDP的收敛时间,路由器倾向于发送地址撤回消息的带一个空的地址列表。

l2vpn203.jpeg

前面的字段其他报文格式类似,MAC地址列表也就是6比特的MAC地址。当PE收到地址撤回消息时:

  • 如果MAC地址列表是空的,PE会移除这个VPLS实例里所有的MAC地址,除了通过接收到消息的伪线学到的客户MAC地址。
  • 如果MAC地址列表不是空的,对于列表里的每一个MAC地址,移除它和AC或是PW的关联条目。

4. VPLS操作

4.1 地址学习

BGP是通过控制平面通告和传递可达性信息,而VPLS是通过数据层面来学习可达性信息。如果收到一个数据帧,它的源MAC不在VPLS的MAC地址表里,则它会记录下来通过哪个AC或是PW学到这个的MAC。

4.2 PE发现

因为在VPLS里是所有参加这个VPLS实例的PE的全互联,而PE不具备自动发现这个实例下其他PE能力,需要通过配置来指定远端的PE。如果使用BGP来作为VPLS的控制平面,可以进行VPLS的实例内PE的自动发现,因为BGP更新的网络层可达信息(NLRI)包括RD,RT,VPLS端点ID等2层信息。

4.3 泛洪

对于BUM流量(未知单播,组播和广播),从一个AC或PW收到的流量会泛洪到所有其他的AC和PW。组播是特殊情况,但是为了操作的简化,默认使用广播传递组播帧。

4.4 防环机制

如果不是伪线全互联的拓扑则需要,两个PE间的通讯会需要其他PE的传递,在这种情况下就需要生成树这样的协议来进行防环。

正是因为有全互联的拓扑结构,VPLS只需要使用更简单的防环机制:水平分割。在同一VPLS实例里,从一根伪线发来的流量不能转发到其他伪线上去。

5. H-VPLS

传统VPLS的痛点是扩展性比较差,因为全互联的拓扑需要在n个PE间建立起n*(n-1)/2条伪线。对于需要泛洪的BUM流量,PE需要复制流量到每条伪线上。因此无论是控制平面还是数据平面的压力都很大。H-VPLS被设计于减轻这种压力。

l2vpn205.jpeg

5.1 架构变化

l2vpn204.jpeg

传统VPLS的架构是扁平的全互联,而在H-VPLS是分段的。

  • 只有nPE是全互联的,和传统VPLS的功能一致。-
  • uPE只需要点到点的接入伪线连接到nPE。
  • 如果启用了接入伪线备份功能,则会有一主一备两条伪线连接不同的nPE。
  • 在nPE看来,接入伪线被当作AC看待,接入到nPE的VFI。

原来的PE变成了两个角色:

  • User-facing Provider Edge (u-PE):通常是运营商接入网PE,直接面向CE的设备,进行正常的交换动作。
  • Network Provider Edge (n-PE):通常是运营商核心网PE,它从uPE接收汇总的流量,在核心网根据VFI来处理VPLS实例内的数据转发。

5.2 水平分割

l2vpn206.jpeg

Split-Horizon Group(SHG)水平分割组:

  • 同一个SHG的成员无法互相转发以太帧。
  • 默认所有VFI的PW被分配到SHG1里,因此一个VPLS实例里,从一个PW发来的流量无法转发到别的PW上。
  • 接入PW和AC默认没有启用水平分割组的功能,因此也不属于任何一个SHG里,所以从一个接入PW发来的流量,可以发给VFI的PW和其他的接入PW。
  • 可以手工设置SHG,对于AC,可以将整个物理接口或是EFP放到一个SHG里。不是所有的平台都支持给接入PW分配SHG。

6. 高可用

6.1 VPWS PW备份介绍

如果PW的LSP路径上有链路或是节点的故障,IGP和LDP会重新收敛。如果有流量工程TE和快速重路由FRR功能,PW会迅速切换到备份的隧道上,但是PW的状态不变,因为LDP的远程Hello依然可达,LDP的远程会话并没有断掉。

但如果是远端节点或是它的AC故障了,则PW就会down掉,TE/FRR也无济于事。如果远端CE是双上联到不同的PE,则可以使用备份PW的功能。

l2vpn207.jpeg

6.2 单向PW备份

l2vpn208.jpeg

  • 允许一侧的PE连接到两个远端PE或一个远端PE的两个AC上。
  • 两条PE,主和备为一个节点或AC提供备份。
  • 如果主PW故障,则切换到备PW上。

6.3 双向PW备份

image.png

  • 允许两个PE连接到两个远端PE。
  • 双向PE备份需要在PE对AC的那一侧使用MC-LAG(跨设备链路聚合)。类似于Nexus交换机的vPC。
  • 一共是四条伪线,只有连接本地Active PE和远端Active PE的伪线是主的伪线,其余3条为备份。
  • MC-LAG是负载均衡的,当流量发到Standby PE的时候,流量会经过ICL(两个MC—LAG设备之前的互联链路)到Active PE,再通过Active PW发出流量。
  • 如果接入侧使用其他的高可用方式,例如使用MST来负载不同VLAN的流量,则双向PW备份会失败。原因是2条PE到CE的link并不是Active Active的,因为无法和PW进行联动。

6.4 H-VPLS PW备份

  • 正常状态下,nPE伪线全互联,uPE主备PW连接到两个nPE。
  • MPLS域内节点或是链路的故障会导致TE/FRR介入,nPE的PW会使用其他的路径。不会影响到uPE的PW,因为nPE的LDP会话没有中断。

l2vpn211.jpeg

  • 如果nPE节点故障或是其所有的MPLS接口Down了,uPE的PW会进行主备的切换。
  • 如果有远端来的流量由于远端nPE的MAC地址表没有及时更新,所以依然会发给故障的nPE,因此会丢包。
  • 直到远端nPE收到其他nPE发来的CE的数据帧,才会更新远端nPE的MAC地址表,才会按照正确的表项进行转发。
  • 或者是等待远端nPE的MAC地址表的表项老化,条目被移除。再有流量,则会进行泛洪,找到争取的nPE去转发流量。

l2vpn212.jpeg

  • 当PE切换成功之后,uPE会产生一条MAC Withdrawal消息给它的远端nPE。
  • 远端nPE会清理它的MAC地址表,并将这条消息传给VFI下所有的其它nPE。其它nPE也会清理自己的MAC地址表。
  • 当再有到CE的流量远端nPE,由于MAC地址表里已经没有CE的MAC了,因此对于未知单播流量会在VFI内所有的nPE间进行泛洪。
  • 当找到目的MAC的正确nPE出口,就会停止丢包了。

l2vpn213.jpeg

6.5 PW备份切换速度

PW切换的速度取决于两点:

  • 检查到主PW故障的时间。
  • 切换到备用PW到它进入到转发状态的时间。

主PW故障检测:

  • AC故障,PE检测到故障后发送LDP Notification信息,包括PW Status TLV。
  • 节点故障:
    • 远端PE的环回地址从路由表中移除。
    • T-LDP会话超时,时间通常会比较长。
    • 多跳BFD会话断开,BFD的检测间隔在毫秒级。

备份PW的状态:

  • 冷备:默认行为,在被激活之前,PE不会传输备份PW的信令。
  • 温备:在控制层面,PW的信令已经被交换,T-LDP的参数也协商完毕,在标签映射消息里携带的PW Status TLV会显示PW的备份状态。数据层面没有被激活,即没有被安装到转发表中,备份PW不会被用于转发数据。
  • 热备:在控制层面,PW已经被激活了,转发表也有条目了,可以说是处于可以转发的状态。PW的备份状态,是由于MC-LAG会控制流量的方向,不在这条PW转发流量。

6.6 本地交换

l2vpn214.jpeg

Local Switching是PE在两个AC之间直接转发2层流量。这些2层流量不会被转发到MPLS网络中,因此不会有额外的封装和解封装操作。

对于local xconnect,因为是点到点的连接,直接将一个AC的流量转发到另一个AC。如果是local bridge domain,则查表后转发到正确的AC。Local bridge domain只是网关BDI,如果需要路由到其他网段的话。

本文作者:潘晓可

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!