VPLS技术

VPLS简介

定义

虚拟专用局域网业务VPLS(Virtual Private LAN Service)是公用网络中提供的一种点到多点的L2VPN(Layer 2 virtual private network)业务,使地域上隔离的用户站点能通过MAN/WAN(Metropolitan Area Network/Wide Area Network)相连,并且使各个站点间的连接效果像在一个LAN(Local Area Network)中一样。它是一种基于MPLS(MultiProtocol Label Switching)网络的二层VPN技术,也被称为透明局域网业务TLS(Transparent LAN Service)。
VPLS的典型组网如下图所示,处于不同物理位置的用户通过接入不同的PE设备,实现用户之间的互相通信。从用户的角度来看,整个VPLS网络就是一个二层交换网,用户之间就像直接通过LAN互连在一起一样。
image.png

目的

目前,随着企业的分布范围日益扩大以及公司员工的移动性不断增加,企业中VoIP(Voice Over IP)、即时消息、网络会议的应用越来越广泛,因此这些应用对端到端的数据通信技术有了更高的要求。端到端数据通信功能的实现依赖于一个能够支持多点业务的网络。
传统的ATM(Asynchronous Transfer Mode)、FR(Frame Relay)技术只能实现二层点到点互连,而且具有网络建设成本高、速率较慢、部署复杂等缺点。随着IP技术的发展,一种在IP(Internet Protocol)网络上提供VPN(Virtual Private Network)服务、可方便设定速率、配置简单的技术随之产生,这种技术即MPLS VPN技术。基于MPLS的VPN技术有两种,分别是MPLS L2VPN和MPLS L3VPN:

  1. 传统VLL(Virtual Leased Line)方式的MPLS L2VPN是在公网中提供一种点到点的L2VPN业务,不能直接在服务提供者处进行多点间的交换。
  2. MPLS L3VPN网络虽可提供多点业务,但PE设备会感知私网路由,造成设备的路由信息过于庞大,对PE设备的路由控制性能要求较高。

针对以上问题,VPLS在传统MPLS L2VPN方案的基础上发展而成,是一种基于以太网和MPLS标签交换的技术:

  1. 由于以太网本身就具有的支持多点通信特点,使得VPLS技术可以实现多点通信的要求。
  2. 同时VPLS是一种二层标签交换技术,从用户侧来看,整个MPLS IP骨干网是一个二层交换设备,PE设备不需要感知私网路由。

因此,VPLS技术为企业提供了一种更加完备的多点业务解决方案。它结合了以太网技术和MPLS技术的优势,是对传统LAN全部功能的仿真,其主要目的是通过运营商提供的IP/MPLS网络连接地域上隔离的多个由以太网构成的LAN,使它们像一个LAN那样工作。

优势

  1. 充分利用运营商构建的IP网络资源,建设成本低。
  2. 充分继承以太网速率高的优势。
  3. 如果使用VPLS技术,企业无论LAN还是WAN,都可以只使用以太链路,实现快速和灵活的业务部署。
  4. 将企业网络的路由策略控制和维护权利交给了企业,增强了企业VPN网络的安全性和可维护性。

VPLS原理描述

基本原理

VPLS基本传输结构

如下图所示,整个VPLS网络就像一个交换机,它通过MPLS隧道在每个VPN的各个Site之间建立虚链路(PW),并通过PW将用户二层报文在站点间透传。对于PE(Provider Edge)设备,它会在转发报文的同时学习源MAC并建立MAC转发表项,完成MAC地址与用户接入接口(AC接口)和虚链路(PW)的映射关系。VPLS网络中各组件的概念如下表所示:

名称全称概念
AC(Attachment Circuit)接入电路用户与服务提供商之间的连接,即连接CE与PE的链路。对应的接口只能是以太网接口。
支持的接口类型包括:以太网主接口、以太网子接口、VLANIF接口、Eth-Trunk接口、Eth-Trunk子接口。
PW(Pseudo Wire)伪线两个PE设备上VSI之间的一条双向虚拟连接。它由一对方向相反的单向的MPLS VC(Virtual Circuit)组成,也称为仿真电路。
VSI(Virtual Switch Instance)虚拟交换实例VSI是交换机上为每一个VPLS单独划分的一个虚拟交换处理单元,在每一个VSI中都有独立的一张MAC地址表和转发器,并负责终结PW。
PW SignalingPW信令协议VPLS实现的基础,用于创建和维护PW。目前,PW信令协议主要有LDP(Label Distribution Protocol)和BGP(Border Gateway Protocol)。
Tunnel隧道用于承载PW,一条隧道上可以承载多条PW。隧道是一条本地PE与对端PE之间的直连通道,完成PE之间的数据透明传输,可以是LSP(Label Switched Path)或MPLS TE(MPLS Traffic Engineering)隧道。
Forwarder转发器转发器相当于VPLS的转发表。PE收到AC上送的数据帧,由转发器选定转发报文使用的PW。

image.png
以VPN1中CE1到CE3的单播报文流向为例,说明基本数据流走向:

  1. PE1、PE2、PE3同属同一个VPLS域,通过VSI将接入VPLS的AC链路映射到各条PW上,生成该VSI的转发器。
  2. CE1接收Site1用户的二层报文,通过AC链路送入PE1。
  3. PE1收到报文后,发现是VPLS接入,则根据目的MAC地址在转发器(Forwarder)中选定转发报文的PW。
  4. PE1根据PW的转发表项及隧道信息生成两层标签,内层私网标签用于标识PW,外层公网标签用于穿越隧道到达PE2。同时根据目的MAC表索引查找目的MAC地址,将报文进行封装。
  5. 二层报文经公网隧道到达PE2,此时外层标签为私网标签(公网标签已于倒数第二跳弹出)。
  6. PE2接收该报文,根据私网标签选定转发报文的VSI,剥离私网标签,再根据VSI选择对应的转发器(Forwarder),由转发器(Forwarder)根据报文目的MAC地址将CE1上送的二层报文转发给CE3。

VPLS实现过程

通过上图可以看出,CE(Customer Edge)之间报文的传输依赖于PE之间建立VSI以及VSI之间的PW。如下图所示,PE之间通过全连接的PW转发以太网帧。VPLS网络中的PE设备包含控制平面和数据平面:

  1. VPLS PE的控制平面主要实现PW的建立功能,包括:
    1. 成员发现:找到同一VSI中所有其他PE的过程。可以通过手工配置的方式实现,也可以使用协议自动完成,如BGP方式、BGP AD方式的VPLS。使用协议自动完成的发现方式称为“自动发现”。
    2. 信令机制:在同一VSI的PE之间建立、维护和拆除PW的任务是由信令协议完成的,包括LDP和BGP。
  2. VPLS PE的数据平面主要实现PW的数据转发功能,包括:
    1. 封装:从CE收到以太网帧后,PE首先对其封装后再发送到VPLS网络上。
    2. 转发:根据报文是从哪个接口上接收的以及报文的目的MAC(Media Access Control)地址决定如何转发报文。
    3. 解封装:PE从VPLS网络上收到以太网帧后,首先对其进行解封装,然后再下发到CE。

image.png

PW信令协议

PW信令协议与VPLS实现方式

PW信令协议主要有LDP和BGP。在信令协议基础上实现的VPLS可以分为以下几种:

  1. LDP方式的VPLS
  2. BGP方式的VPLS
  3. BGP AD方式的VPLS

几种实现方式的比较如下表所示:

类型描述特点应用场景
LDP方式的VPLS采用LDP作为信令协议,也称为Martini方式的VPLS。
- 协议比较简单,对PE设备要求低,不能提供VPN成员自动发现机制,需要手工配置。
- 在增加PE时需要在每个PE上都配置到新PE的PW。
- 在每两个PE之间建立LDP Session,其Session数与PE数的平方成正比。
- 当需要时才对每个PE分配一个标签,标签利用率高。
- 在跨域时,必须保证所有域中配置的VSI都使用同一个VSI ID值空间。
适合用在Site点比较少,不需要或很少跨域的情况,特别是PE不运行BGP的时候。
BGP方式的VPLS采用BGP作为信令协议,也称为Kompella方式的VPLS。
- 要求PE设备运行BGP,对PE设备要求高,可以提供VPN成员自动发现机制,用户使用简单。
- 在增加PE时只要PE数没有超过标签块大小就不需要修改原有PE上的配置,只需配置新的PE。
- 利用RR(Route Reflector)降低BGP连接数,从而提高网络的可扩展性。
- 分配一个标签块,对标签有一定浪费。
- 在跨域时,采用VPN-Target识别VPN关系,对跨域的限制较小。
适合用在大型网络的核心层,PE本身运行BGP以及有跨域需求的情况。
BGP AD方式的VPLS首先通过扩展的BGP UPDATE报文来自动发现VPLS域中的其他成员信息,然后通过LDP FEC 129信令报文来完成本地VSI与远端VSI之间自动协商建立VPLS PW。通过VPLS成员自动发现和VPLS PW的自动部署:
- 与LDP方式VPLS相比,网络新增站点时配置的工作量少。
- 与BGP方式VPLS相比,不仅节省本地的标签资源,而且能兼容与PWE3的互通。
BGP AD方式VPLS结合了BGP和LDP两种VPLS信令各自的优势。

LDP方式的VPLS

介绍

LDP方式的VPLS(Martini方式VPLS)采用静态发现机制实现成员发现,采用LDP作为信令。这种方式通过扩展标准LDP的TLV来携带VPLS的信息,增加了128类型和129类型的FEC TLV。建立PW时的标签发布方式采用DU模式,标签保持方式采用Liberal Label Retention(自由标签保留)。

实现过程
  1. 利用LDP信令协议建立PW的过程如下图所示:

image.png

  1. 当PE1和VSI关联并指定PE2为其对端后,此时如果PE1和PE2之间的LDP Session已经建立,PE1则采用DU方式主动向PE2发送标签映射消息(Label Mapping Message),该消息中包含PW ID和与该PW ID绑定的VC标签,以及接口参数。
  2. PE2收到该标签映射消息后,会检查本地是否也和该VSI进行了关联。如果已经关联并且封装类型等参数也相同,则说明PE1和PE2的VSI都在同一个VPN内。此时PE2将接受标签映射消息,即单向VC1建立成功。同时,PE2向PE1回应自己的标签映射消息,PE1收到PE2的标签映射消息后作同样的检查和处理,最终也成功建立VC2。
  3. 利用LDP信令协议拆除PW的过程如下图所示:

image.png

  1. 当PE1取消指定PE2为其对端后,PE1向PE2发送标签撤除消息(Label Withdrawal Message),PE2收到该消息后拆除VC1,并向PE1回应标签释放消息(Label Release Message)。
  2. PE1收到标签释放消息后,释放标签并拆除VC2。

BGP方式的VPLS

介绍

BGP方式的VPLS(Kompella方式VPLS)采用动态发现机制实现成员发现,用BGP作为信令。这种方式利用BGP的多协议扩展(MP-BGP)传递VPLS成员信息,其中MP-REACH和MP-UNREACH属性传递VPLS的标签信息,接口参数信息在扩展团体属性中传递,VPN成员关系靠RD(Route Distinguish)和VPN-Target来确定,RD和VPN-Target都在扩展团体属性中传递。

实现过程
  1. 利用BGP信令协议建立PW的过程如下图所示:

image.png

  1. 当PE1和VSI关联并指定PE2为其对端后,此时如果PE1和PE2之间的BGP Session已经建立,PE1则向PE2发送携带MP-REACH属性的Update消息,包括Site ID和标签块信息。
  2. PE2收到该Update消息后,根据自己的Site ID和报文中的标签块,计算出唯一的一个标签值,作为VC标签,此时单向VC1建立成功。同时,PE2根据报文中Site ID和本地标签块,也可以得到PE1的VC标签值,并向PE1发送Update消息,PE1收到PE2的Update消息后作同样的检查和处理,最终也成功建立VC2。
  3. 利用BGP信令协议拆除PW的过程如下图所示:

image.png

  1. 当PE1取消指定PE2为其对端后,PE1向PE2发送携带MP-UNREACH属性的Update消息,PE2收到该消息后释放标签并拆除VC1,同时向PE1回应携带MP-UNREACH属性的Update消息。
  2. PE1收到标签释放消息后,释放标签并拆除VC2。

BGP AD方式的VPLS

介绍

BGP AD VPLS是BGP Auto-Discovery VPLS的简写,也称为BGP自动发现方式的VPLS,是一种自动部署VPLS网络的新技术。
BGP AD VPLS是首先通过扩展的BGP UPDATE报文来自动发现VPLS域中的其他成员信息,然后通过LDP FEC 129信令报文来完成本地VSI与远端VSI之间自动协商建立VPLS PW的过程。此外,BGP AD也支持HVPLS(Hierarchical Virtual Private LAN Service),可以通过关闭水平分割功能,使该对等体在HVPLS网络中属于用户端。

实现过程

BGP AD VPLS结合了Martini VPLS和Kompella VPLS的优势,通过BGP信令实现VPLS成员的自动发现,不仅减少了配置工作量,而且减少了对标签的浪费。
BGP AD VPLS是通过扩展BGP UPDATE报文,携带VSI成员信息,完成VPLS域中VSI成员之间的自动发现,然后通过LDP FEC 129类型的信令进行协商,完成VSI之间PW的自动建立,实现了VPLS域中VSI成员的自动发现及VPLS PW业务的自动部署。

  1. VPLS成员发现阶段
    1. VPLS成员发现是建立PW的第一阶段,使用BGP协议进行自动成员发现,其交互过程和携带的信息如下图所示。

image.png

  1. BGP AD VPLS成员发现的交互过程详细描述如下:
    1. 当在PE1设备上完成VPLS-ID、RD、RT、VSI-ID等参数的配置后,PE1会将这些信息封装到BGP的Update消息中作为BGP AD报文,向所有BGP域内的对端PE发送。当PE2在配置完成后也会做相同的处理。

注意:其中,RD默认使用VPLS-ID的值,所以只需要配置VPLS-ID即可。而VSI-ID即本端的LSR-ID,也不需要手动配置。

  2. 在PE接收到远端发送过来的Update报文后,会根据配置的RT策略对收到的BGP AD报文进行过滤。对于符合RT策略的BGP AD报文,PE设备会从报文中获取远端VSI的信息,并将这些远端信息与本地配置生成的信息做比较。
     - 当两端设备的VSI中的VPLS-ID相同时,说明两个VSI属于同一个VPLS域,可以协商建立PW,而且这两个VSI之间只能建立一条PW。
     - 当两端设备的VSI中的VPLS-ID不同时,说明这两个VSI分属不同的VPLS域,则不能建立PW。
  1. VPLS PW自动部署阶段当完成VPLS成员发现后,则通过LDP FEC 129信令协商建立PW,具体交换过程和携带的信息如下图所示。

image.png

  1. BGP AD VPLS PW的自动部署过程详细描述如下:
    1. 两台PE上属于相同VPLS域的VSI根据到远端(BGP AD中的Next Hop)的LDP会话状态相互发起LDP Mapping(FEC 129)信令,其中携带AGI、SAII、TAII和标签等信息。BGP AD VPLS在成员发现后,采用主动触发LDP协议创建LDP会话的方式,使LDP能够按照业务的需求来建立会话。当VPLS业务撤销,不再使用该LDP会话时,再主动触发LDP协议拆除LDP会话。这样既能减少LDP会话拓扑的维护工作量,又能提高系统资源的利用率,减少网络资源的开销,提升网络性能。
    2. PE接收到远端的LDP Mapping(FEC 129)信令后,解析获取VPLS-ID、PW Type、MTU、TAII等信息,将这些信息与本地VSI比较,如果协商通过,并且满足建立PW的条件时,创建到对端的PW。

报文封装

AC上报文封装方式

AC上的报文封装方式由用户接入方式决定,如下表所示,用户接入方式可以分为两种,默认情况下,用户的接入方式为VLAN接入。

AC上的报文封装方式描述
VLAN接入CE发送到PE或PE发送到CE的以太网帧头带有一个VLAN Tag。该Tag是ISP为了区分用户而为用户打上的一个“服务定界符”,称为P-Tag(Provider-Tag)。
Ethernet接入CE发送到PE或PE发送到CE的以太网帧头中不带P-Tag。如果此时帧头中有VLAN Tag,则它只是用户报文的内部VLAN Tag称为U-Tag(User-Tag)。U-Tag是该报文在发送到CE前已携带,而不是CE打上的,用于CE区分该报文的VLAN,对于PE设备没有意义。

PW上报文封装方式

PW由PW ID和PW封装类型唯一标识,两端PE设备通告的PW ID和PW封装类型必须相同。如下表所示,PW上的报文封装方式可以分为两种,默认情况下,PW上的报文封装使用Tagged模式。

PW上的报文封装方式描述
Raw模式PW上传输的帧不能带P-Tag。对于CE发送到PE的报文,如果PE收到带有P-Tag的报文,则将P-Tag去除后,再打上两层MPLS标签(外层Tunnel标签和内层VC标签)后转发;如果PE收到不带P-Tag的报文,则直接打上两层MPLS标签(外层Tunnel标签和内层VC标签)后转发。对于PE发送到CE的报文,PE根据实际配置选择添加或不添加P-Tag后转发给CE,但是它不允许重写或移除已经存在的任何Tag。
Tagged模式PW上传输的帧必须带P-Tag。对于CE发送到PE的报文,如果PE收到带有P-Tag的报文,则不去除P-Tag,而是直接打上两层MPLS标签(外层Tunnel标签和内层VC标签)后转发;如果PE收到不带P-Tag的报文,则添加一个空Tag后,再打上两层MPLS标签(外层Tunnel标签和内层VC标签)后转发。对于PE发送到CE的报文,PE根据实际配置选择重写、去除、保留P-Tag后转发给CE。

VPLS报文以及封装示意图

AC上的报文封装方式和PW上的报文封装方式可以交叉组合,以下只以Ethernet接入Raw模式(不带U-Tag)和VLAN接入Tagged模式(带U-Tag)方式为例,说明报文的交互过程:

  1. Ethernet接入Raw模式(不带U-Tag)。如下图所示,AC采用Ethernet封装,PW采用Raw模式,从CE发送到PE的报文中不含有U-Tag。Ethernet接入Raw模式(不带U-Tag)报文的交互过程为:从CE2发往CE1的报文的处理过程与上述过程类似,这里不再赘述。
    1. CE1发送经过二层封装的报文到PE1,该报文不含U-Tag和P-Tag。
    2. PE1收到不带P-Tag的报文,查对应的VSI中的表项,为该报文选择隧道和PW。PE1根据选择的隧道和PW,为该报文直接打上两层MPLS标签(外层Tunnel标签和内层VC标签),再进行二层封装后转发。
    3. PE2收到从PE1发送来的报文,对该报文进行解封装,即去掉PE1的二层封装和内层VC标签(外层Tunnel标签已于倒数第二跳弹出)。
    4. PE2把解封装后的CE1原始二层报文发送给CE2。

image.png

  1. VLAN接入Tagged模式(带U-Tag)。如下图所示,AC采用VLAN封装,PW采用Tagged模式,从CE发送到PE的报文中含U-Tag和P-Tag。VLAN接入Tagged模式(带U-Tag)报文的交互过程为:从CE2发往CE1的报文的处理过程与上述过程类似,这里不再赘述。
    1. CE1发送经过二层封装的报文到PE1,报文含U-Tag和P-Tag。
    2. PE1收到含U-Tag和P-Tag的报文,U-Tag对于PE1没有意义,所以PE1不对U-Tag进行处理,而把它当作业务数据来对待。
    3. PW是Tagged封装,要求发送到PW的帧必须带P-Tag传输,PE1收到带P-Tag的报文后,不对该报文进行处理。
    4. PE1查对应的VSI中的表项,为该报文选择隧道和PW。
    5. PE1根据选择的隧道和PW,为该报文直接打上两层MPLS标签(外层Tunnel标签和内层VC标签),再进行二层封装后转发。
    6. PE2收到从PE1发送来的报文,对该报文进行解封装。即去掉PE1的二层封装和内层VC标签(外层Tunnel标签已于倒数第二跳弹出)。
    7. PE2把解封装后的CE1原始二层报文发送给CE2,此报文含U-Tag和P-Tag。

image.png

VPLS对报文中Tag的处理方式

根据AC接口的类型和PW封装方式的不同,系统对用户报文的处理方式也不同。
PW的封装方式有Ethernet封装(Raw模式)和VLAN封装(Tagged模式)两种方式。
当VPLS流量从PE的AC侧接口发送出去时,如下两种情况,发送出去的报文将剥离P-Tag。

  1. PW侧对从AC进入PW的报文中Tag的处理方式
    | PW封装类型 | PW侧对从AC进入PW的报文的处理 |
    | — | — |
    | VLAN封装 | 对报文中的P-Tag不做处理。 |
    | Ethernet封装 | 如果报文中存在P-Tag,则删除报文的中的P-Tag。
    如果报文中无P-Tag,则对报文不做处理。 |

  2. AC侧对从PW进入AC的报文中Tag的处理方式
    | AC接口类型 | AC侧对从PW进入AC的报文的处理 |
    | — | — |
    | Ethernet接口、GE接口、XGE接口、25GE接口、40GE接口、100GE接口、Eth-Trunk接口 | 对报文不做处理。 |
    | VLANIF接口 | 如果报文中存在P-Tag,则改写报文的中的P-Tag。
    如果报文中无P-Tag,则为报文增加P-Tag。 |
    | VLAN Stacking子接口 | 如果报文中存在P-Tag,则改写报文中的P-Tag。
    如果报文中不存在P-Tag,则对报文不做处理。 |
    | VLAN Mapping子接口 | 如果报文中存在P-Tag,则改写报文的中的P-Tag。
    如果报文中无P-Tag,则为报文增加P-Tag。 |
    | Dot1q子接口 | 对报文不做处理。 |
    | Qinq子接口 | 对报文不做处理。 |

MAC地址管理

以太网的特点之一是对于广播报文、组播报文和目的MAC地址未知的单播报文,将发送给本以太网段内的所有其它接口。VPLS是一种基于以太网的技术,它为用户网络模拟了一个以太网桥。因此为了能在VPLS网络中转发报文,PE设备需要建立MAC地址转发表并基于MAC地址或者MAC地址和VLAN Tag来做出转发决策。

MAC地址学习与泛洪实现过程

MAC地址学习

PE设备通过动态MAC地址学习功能建立MAC地址转发表,同时将目的MAC地址与PW进行关联。
如下表所示,MAC地址学习包括以下两种方式:

MAC地址学习方式描述特点
Qualified方式PE根据用户以太报文的MAC地址和VLAN Tag进行学习。这种模式下,每个用户VLAN形成自己的广播域,有独立的MAC地址空间。将广播域限制在用户VLAN中。由于从逻辑上看,MAC地址变成了MAC地址+VLAN Tag,因此这种方式可以支持比较大的FIB(Forwarding Information Base)转发表。
Unqualified方式PE仅学习用户以太报文的MAC地址。这种模式下,所有用户VLAN共享一个广播域和一个MAC地址空间,用户VLAN的MAC地址必须唯一,不能发生地址重叠。对应多个用户VLAN的AC侧接口是物理接口,该接口对应唯一的VSI实例。

目前,设备只支持Unqualified方式的MAC地址学习。

泛洪

以太网处理未知地址的报文方式是广播,所以在VPLS里,对收到未知单播地址、广播地址和组播地址的以太报文都采用泛洪方式,将收到的报文转发到其余所有接口。如果需要使用组播,PE需要采取其他方法,比如IGMP snooping(Internet Group Management Protocol Snooping)。

实现过程

如下表所示,MAC地址学习的过程包含以下两部分:

MAC地址学习过程描述
对用户侧报文的MAC地址学习对于从CE上收到的报文,PE将建立源MAC地址和AC侧接口之间的MAC映射关系,如下图中的Port1。
对PW侧报文的MAC地址学习PW包括两个方向的MPLS VC(Virtual Circuit),当且仅当两个方向的MPLS VC都建立起来后PW才能变成Up状态。当从PW侧收到源MAC未知的报文,则PE建立源MAC地址与收到该报文的PW间的映射关系。

PE设备的MAC地址学习和泛洪的具体过程如下图所示。PC1和PC2都属于VLAN10,PC1 Ping IP地址10.1.1.2,但PC1不知道该IP地址对应的MAC地址,需要发送ARP(Address Resolution Protocol)广播报文,具体过程如下。
image.png

  1. PE1从连接CE1的接口Port1(Port1属于VLAN10)收到来自PC1的ARP广播报文,PE1把PC1的MAC地址添加到在自己的MAC表项中(PE1的MAC表项中蓝色字体内容)。
  2. PE1向其它接口(PW1和PW2此时可以看成接口)泛洪,广播该ARP报文(PE1上的蓝色虚线)。
  3. PE2从PW1上收到PE1转发来的PC1的ARP报文,把PC1的MAC地址添加到自己的MAC表项中(PE2的MAC表中蓝色字体内容)。
  4. PE2只向连接CE2的接口转发该ARP报文(PE2上的蓝色虚线),而不向PW上转发,所以该ARP只发送给PC2。这就是VPLS的水平分割特点,即从公网侧PW收到的报文不再转发到其他PW上,而只能转发到私网侧。
  5. PC2收到PE2转发来的PC1的ARP报文,发现目的地址是自己,就发送ARP Reply报文给PC1(PC2上的橘黄色虚线)。
  6. PE2从Port2接口收到PC2给PC1的ARP回应报文。PE2添加PC2的MAC地址到自己的MAC表项中(PE2的MAC表中橘黄色字体内容)。ARP Reply报文的目的地MAC是PC1(MAC A),PE2查询自己的MAC表后,往PW1发送ARP Reply报文。
  7. PE1收到PE2转发来的PC2的ARP Reply报文,也一样添加PC2的MAC地址到自己的表项中(PE2的MAC表中橘黄色字体内容),并查找MAC表,转发该ARP Reply报文到PC1。
  8. PC1收到PC2的ARP Reply报文,完成MAC地址的学习。
  9. PE1向PW1广播该ARP报文的同时,PE1也通过PW2向PE3发送ARP报文。PE3收到来自PE1的ARP广播报文,添加PC1的MAC地址到自己的MAC表项中(PE3的MAC表中蓝色字体内容),根据水平分割的特性,PE3也只向PC3发送该ARP报文,因为PC3不是该ARP的目的地址,所以PC3不回应ARP Reply报文。

MAC地址回收

动态学习到的MAC地址必须有刷新和重学习的机制。VPLS中提供了一种可选MAC TLV(Type/Length/Value)的地址回收消息,用来移除或重学习MAC地址列表。
在拓扑结构改变时为了能快速的移除MAC地址,可以使用地址回收消息。地址消息分为两类:

  • 带有MAC表项地址列表的消息。
  • 不带MAC地址列表的消息。

如果一条备份链路(AC链路或者VC链路)变为活动状态后,感知到链路状态变化的PE会收到系统发送的带有重新学习MAC表项列表的通知消息。该PE收到此更新消息后,将更新VPLS实例的FIB表中对应的MAC表项,并将此消息发送给其他相关的LDP会话直连的PE。如果通知消息中包含空的MAC地址TLV列表,表示告知PE移除指定VPLS实例中的所有MAC地址,但是从发送此消息的PE处学习到的MAC地址除外。

MAC地址老化

PE学习到的MAC地址转发表项如果不再使用,需要有老化机制来移除。在指定时间内,未有流量触发MAC表项更新,则将该MAC表项老化。

环路避免

在以太网上,为了避免环路,一般的二层网络都要求使能STP(Spanning Tree Protocol)协议。但是对使用VPLS的用户来说,不会感知到ISP(Internet Service Provider)的网络,因此在私网侧使能STP的时候,不能把ISP的网络考虑进来。因而VPLS中使用PW全连接和水平分割转发来避免环路:

  1. PE之间逻辑上全连接(PW全连接),也就是每个PE必须为每一个VPLS转发实例创建一棵到该实例下的所有其他PE设备的树。
  2. 每个PE设备必须支持水平分割转发来避免环路。“水平分割转发”的意思就是从公网侧PW收到的数据包不再转发到这个VSI关联的其它PW上,只能转发到私网侧,从PE收到的报文不转发到其他PE。也就是说要求任意两个PE之间通过直接相连的PW通信,而不能通过第三个PE设备中转报文,这也是PE之间需要建立全连接(PW全连接)的原因。

PE间全连接和水平分割一起保证了VPLS转发的可达性和无环路。当CE到PE有多条连接,或连接到同一个VPLS VPN的不同CE间有连接时,VPLS不能保证没有环路发生,需要使用其他方法来避环。
对于用户来说,在L2VPN私网内运行STP协议是允许的,所有的STP的BPDU(Bridge Protocol Data Unit)报文只是在ISP的网络上透传。

HVPLS

HVPLS(Hierarchical Virtual Private LAN Service),即分层VPLS,是一种实现VPLS网络层次化的一种技术。

HVPLS的产生背景

无论是以BGP方式,还是LDP方式为信令的VPLS,为了避免环路,其基本解决办法都是在信令上建立所有站点的全连接,LDP建立所有站点之间的LDP会话的全连接,BGP也一样。在进行数据转发时,对于从PW来的报文,根据水平分割转发的原理,将不会再向其他的PW转发。如果一个VPLS有N台PE设备,该VPLS就有N×(N-1)÷2个连接。当VPLS的PE增多时,VPLS的连接数就成N平方级数增加。假设有100个站点,站点间的LDP会话数目将是4950个。上述VPLS方案不能大规模的应用的真正缺点是提供VC的PE需要复制数据包,对于第一个未知单播报文和广播、组播报文,每个PE设备需要向所有的对端设备广播报文,这样就会浪费带宽。
为解决VPLS的全连接问题,增加网络的可扩展性,产生了HVPLS组网方案。在协议draft-ietf-l2vpn_vpls_ldp中引入了HVPLS。HVPLS通过把网络分级,每一级网络形成全连接,分级间的设备通过PW来连接,分级之间的设备的数据转发不遵守水平分割原则,而是可以相互转发。

HVPLS的基本模型

HVPLS的基本模型如下图所示。
image.png
HVPLS的基本模型中,可以把PE分为两种:

  • UPE:用户的汇聚设备,即直接连接CE的设备称为下层PE(Underlayer PE),简称UPE。UPE只需要与基本VPLS全连接网络的其中一台PE建立连接。UPE支持路由和MPLS封装。如果一个UPE连接多个CE,且具备基本桥接功能,那么数据帧转发只需要在UPE进行,这样减轻了SPE的负担。
  • SPE:连结UPE并位于基本VPLS全连接网络内部的核心设备称为上层PE(Superstratum PE),简称SPE。SPE与基本VPLS全连接网络内部的其他设备都建立连接。

对于SPE来说,与之相连的UPE就像一个CE。从数据转发的角度看,UPE与SPE之间建立的PW将作为SPE的AC,UPE将CE发送来的报文封装两层MPLS标签,外层为LSP的标签,该标签经过接入网的不同设备时被交换;内层标签为VC标签,用于标识VC。SPE收到的报文包含两层标签,外层的公网标签被直接弹出,SPE根据内层的标签决定该AC接入哪个VSI并进行内层标签交换。

HVPLS的接入方式

设备只支持LDP方式的HVPLS,UPE接入SPE的方式为LSP接入。
image.png
如上图所示,UPE1作为汇聚设备,它只跟SPE1建立一条虚链路而接入链路PW,跟其他所有的对端都不建立虚链路。UPE与SPE之间的PW称为U-PW,SPE间的PW称为S-PW。
以CE1发送报文到CE2为例,数据转发流程如下:

  1. CE1发送报文给UPE1,报文的目的MAC地址是CE2。
  2. UPE1负责将CE1发送的报文发给SPE1,UPE1为该报文打上两层MPLS标签,外层标签标识UPE1与SPE1之间的LSP Tunnel ID,内层标签标识UPE1与SPE1之间的VC ID。
  3. UPE1与SPE1之间的LSR对用户报文进行传递和标签交换,最终在倒数第二跳报文的外层标签被剥离。
  4. SPE1收到报文后,根据MPLS内层标签判断报文所属的VSI,发现该报文属于VSI1。
  5. SPE1去掉UPE1给用户报文打上的MPLS内层标签。
  6. SPE1根据用户报文的目的MAC,查找VSI的表项,发现该报文应该被发往SPE2。SPE1给该报文打上两层MPLS标签,外层标签标识SPE1与SPE2之间的LSP Tunnel ID,内层标签标识SPE1与SPE2之间的VC ID。
  7. SPE1与SPE2之间的LSR对用户报文进行传递和标签交换,最终在倒数第二跳报文的外层标签被剥离。
  8. SPE2从S-PW侧收到该报文后,根据内层MPLS标签判断报文所属的VSI,发现该报文属于VSI1,并去掉SPE1给该报文打上的内层MPLS标签。
  9. SPE2为该报文打上两层MPLS标签,外层标签标识SPE2与UPE2之间的LSP Tunnel ID,内层标签标识UPE2与SPE2之间的VC ID,并转发该报文。
  10. SPE2与UPE2之间的LSR对用户报文进行传递和标签交换,最终在倒数第二跳报文的外层标签被剥离。
  11. UPE2收到该报文后,去掉UPE2给用户报文打上的MPLS内层标签,根据用户报文的目的MAC,查找VSI的表项,发现该报文应该被发往CE2,并转发该报文。

CE1与CE4为本地CE之间交换数据,如图2所示。由于UPE本身具有桥接功能,UPE直接完成两者间的报文转发,而无需将报文上送SPE1。不过对于从CE1发来的目的MAC未知的第一个报文或广播报文,UPE1在广播到CE4的同时,仍然会通过U-PW转发给SPE1,由SPE1来完成报文的复制并转发到各个对端CE。

HVPLS的环路避免

与VPLS的环路避免相比,H-VPLS中环路避免方法需要做如下调整:

  1. 只需要在SPE之间建立全连接(PW全连接),UPE和SPE之间不需要全连接。
  2. 每个SPE设备上,从与SPE连接的PW上收到的报文,不再向这个VSI关联的、与其它SPE连接的PW转发,但可以向与UPE连接的PW转发。
  3. 每个SPE设备上,从与UPE连接的PW上收到的报文,可以向这个VSI关联的所有与其它SPE连接的PW转发。

HVPLS接入链路的备份

UPE与SPE,CE与PE设备之间只有单条链路连接的方案具有明显的弱点:一旦该接入链路失败,汇聚设备上下挂的所有VPN都将失去连通性。所以,HVPLS的接入模型需要有备份链路的存在。在正常情况下,设备只使用一条链路(主链路)接入,一旦VPLS系统检测到接入链路失败,它将启用备用链路来继续提供VPN业务。
对于LSP接入的HVPLS,由于UPE与SPE之间运行LDP会话,可以根据LDP会话的活动状态来判断主PW是否失效。
如下图所示,UPE检测到与SPE1之间的PW4失败,它将自动启用备份PW4(Backup)传输数据。
假设CE1内有一个MAC地址为“0001-1111-abcd”的报文原来走主PW到达CE3,由于VPLS的MAC学习机制,在SPE1、SPE3上都将MAC学习到了对应的虚接口上(图3MAC表中的蓝色字体),由于SPE3不知道对端发生链路倒换,仍然保留了该MAC地址表项,CE3发往CE1的报文如果仍按照原MAC表中的表项转发,必然不能成功。所以,UPE在进行主备PW切换的时候,需要将相关的MAC地址回收。MAC地址回收可以使用LDP的地址回收消息来实现,如果要回收的MAC地址较多,可以直接发MAC地址列表为空的地址回收消息,把VPN内的所有MAC地址都清空(除了发送MAC地址回收消息的链路上的表项不清空外)。
image.png
MAC地址回收消息的发送和处理过程如下:

  1. UPE发送MAC地址回收消息(蓝色虚线箭头)给SPE2;
  2. SPE2处理该MAC地址回收消息将MAC“0001-1111-abcd”学习到备用PW4上;
  3. SPE2发送地址回收消息给其他对端(SPE1,SPE3),其他对端进行地址回收消息处理,将MAC“0001-1111-abcd”学习到对应的PW上。

VPLS跨域方式

跨越多个AS的VPLS应用方式被称为VPLS的跨域方式,仅支持Option A实现方式。
使用VPLS跨域时,不需要考虑VSI实例的学习转发功能,只需要考虑PE和PE之间PW的建立,此时就和L2VPN的跨域理念和实现方法一样。
OptionA优点是配置简单,ASBR之间不需要运行MPLS,也不需要为跨域进行特殊配置。缺点是可扩展性差,对PE设备的要求高。在需要跨域的VPN数量比较少,业务开展早期的情况,可以考虑使用。

Kompella VPLS OptionA实现方式概述

Kompella VPLS OptionA组网如下图所示。
image.png
具体实现描述如下:

  1. 在骨干网上运行IGP协议实现ASBR与PE之间的互通,并且PE之间要建立隧道。
  2. PE与域内的ASBR建立MP-IBGP对等体关系。
  3. 在PE1、ASBR1、ASBR2和PE2上配置VSI实例,并与AC接口绑定。

跨域Martini VPLS OptionA实现方式概述

Martini VPLS OptionA组网如下图所示。
image.png
具体实现描述如下:

  1. 在骨干网上运行IGP协议,使同一个AS域内的各路由设备能互通。
  2. 在骨干网上配置MPLS基本能力,在同一AS域内的PE与ASBR之间建立动态LSP隧道。如果PE与ASBR非直连,建立LDP远程会话。
  3. 在同一个AS的PE与ASBR之间建立VPLS连接。

配置命令

l2 binding
#命令功能
  l2 binding命令用来将接口绑定到VSI实例。
  #缺省情况下,接口没有与任何VSI实例进行绑定。
#使用实例
  #将以太网子接口绑定到VSI实例中。<HUAWEI> system-view
  [HUAWEI] interface ethernet 1/0/0.1
  [HUAWEI-Ethernet1/0/0.1] l2 binding vsi company1
  #将VLANIF接口绑定到VSI实例中。
  <HUAWEI> system-view
  [HUAWEI] interface vlanif 10
  [HUAWEI-Vlanif10] l2 binding vsi company2
  #将GE接口绑定到VSI实例中。
  <HUAWEI> system-view
  [HUAWEI] interface gigabitethernet 1/0/0
  [HUAWEI-GigabitEthernet1/0/0] undo portswitch
  [HUAWEI-GigabitEthernet1/0/0] l2 binding vsi company2
  
l2vpn-ad-family
#命令功能
  l2vpn-ad-family命令用来进入BGP的L2VPN-AD地址族视图。
#使用实例
	#进入BGP的L2VPN-AD地址族视图。
	<HUAWEI> system-view
	[HUAWEI] bgp 100
	[HUAWEI-bgp] l2vpn-ad-family
	[HUAWEI-bgp-af-l2vpn-ad]

mac-learning
#命令功能
	mac-learning enable命令用来使能VSI实例的MAC地址学习能力。
	#缺省情况下,VSI实例的MAC地址学习能力处于使能状态。
#使用实例
	#去使能当前VSI实例的MAC地址学习能力。
	<HUAWEI> system-view
	[HUAWEI] vsi company1
	[HUAWEI-vsi-company1] mac-learning disable

vsi
#命令功能
	vsi命令用来创建VSI或进入VSI视图。
	#缺省情况下,没有创建VSI。
#使用实例
	#创建一个名称为company1的Martini方式VPLS的VSI。
	<HUAWEI> system-view
	[HUAWEI] mpls lsr-id 10.1.1.1 
	[HUAWEI] mpls
	[HUAWEI-mpls] quit
	[HUAWEI] mpls l2vpn
	[HUAWEI-l2vpn] quit
	[HUAWEI] vsi company1 static
	[HUAWEI-vsi-company1] pwsignal ldp
	#创建一个名称为company2的Kompella方式VPLS的VSI。
	<HUAWEI> system-view
	[HUAWEI] mpls lsr-id 10.1.1.1 
	[HUAWEI] mpls
	[HUAWEI-mpls] quit
	[HUAWEI] mpls l2vpn
	[HUAWEI-l2vpn] quit
	[HUAWEI] vsi company2 auto
	[HUAWEI-vsi-company2] pwsignal bgp
	#创建一个名称为company3的BGP AD方式VPLS的VSI。
	<HUAWEI> system-view
	[HUAWEI] mpls lsr-id 10.1.1.1 
	[HUAWEI] mpls
	[HUAWEI-mpls] quit
	[HUAWEI] mpls l2vpn
	[HUAWEI-l2vpn] quit
	[HUAWEI] vsi company3
	#创建一个名称为company4的Martini方式VPLS的VSI,配置时不指定VSI成员发现方式。
	<HUAWEI> system-view
	[HUAWEI] mpls lsr-id 10.1.1.1 
	[HUAWEI] mpls
	[HUAWEI-mpls] quit
	[HUAWEI] mpls l2vpn
	[HUAWEI-l2vpn] quit
	[HUAWEI] vsi company4
	[HUAWEI-vsi-company4] pwsignal ldp
	#创建一个名称为company5的Kompella方式VPLS的VSI,配置时不指定VSI成员发现方式。
	<HUAWEI> system-view
	[HUAWEI] mpls lsr-id 10.1.1.1 
	[HUAWEI] mpls
	[HUAWEI-mpls] quit
	[HUAWEI] mpls l2vpn
	[HUAWEI-l2vpn] quit
	[HUAWEI] vsi company5
	[HUAWEI-vsi-company5] pwsignal bgp
  
vsi-id
#命令功能			
	vsi-id命令用来配置VSI实例的ID。
	#缺省情况下,没有配置VSI ID。
#使用实例
	#配置当前VSI实例的ID为1。
	<HUAWEI> system-view
	[HUAWEI] vsi company1 static
	[HUAWEI-vsi-company1] pwsignal ldp
	[HUAWEI-vsi-company1-ldp] vsi-id 1
  
vpls-family
#命令功能
	vpls-family命令用来进入BGP-VPLS地址族视图。
	#缺省情况下,BGP视图中未配置BGP-VPLS地址族。
#使用实例
	#进入VPLS地址族视图。
	<HUAWEI> system-view
	[HUAWEI] bgp 100
	[HUAWEI-bgp] vpls-family
	[HUAWEI-bgp-af-vpls]

vpn-target
#命令功能
	vpn-target命令用来将当前VSI实例与一个或多个VPN-Target进行关联。
	#缺省情况下,VSI实例没有与任何VPN-Target进行关联。
#使用实例
	#将当前VSI实例与VPN-Target关联。
	<HUAWEI> system-view
	[HUAWEI] vsi company2
	[HUAWEI-vsi-company2] pwsignal bgp
	[HUAWEI-vsi-company2-bgp] route-distinguisher 2.2.2.2:1
	[HUAWEI-vsi-company2-bgp] vpn-target 3:3 export-extcommunity
	[HUAWEI-vsi-company2-bgp] vpn-target 4:4 import-extcommunity
	[HUAWEI-vsi-company2-bgp] vpn-target 5:5 both
	#配置名称为company2的VSI,Import VPN Target为4:4和5:5,Export VPN Target为3:3和5:5。
	<HUAWEI> system-view
	[HUAWEI] vsi company2
	[HUAWEI-vsi-company2] bgp-ad
	[HUAWEI-vsi-company2-bgpad] vpls-id 100:1
	[HUAWEI-vsi-company2-bgpad] vpn-target 3:3 export-extcommunity
	[HUAWEI-vsi-company2-bgpad] vpn-target 4:4 import-extcommunity
	[HUAWEI-vsi-company2-bgpad] vpn-target 5:5 both
 
site
#命令功能
	site命令用来配置VSI实例的Site ID。
	#缺省情况下,未配置VSI实例的Site ID。 
#使用实例
	#配置当前VSI实例的Site ID为1,可连接的Site的个数为100。
	<HUAWEI> system-view
	[HUAWEI] vsi company2
	[HUAWEI-vsi-company2] pwsignal bgp
	[HUAWEI-vsi-company2-bgp] route-distinguisher 10.1.1.1:1
	[HUAWEI-vsi-company2-bgp] site 1 range 100

signaling
#命令功能
	signaling命令用于配置所有对等体(组)的信令模式。
	#缺省情况下,在L2VPN AD地址族下执行命令peer enable后,默认使能BGP AD信令能力。
#使用实例
	#在L2VPN AD地址族视图下使能所有对等体的Kompella VPLS信令能力。
	<HUAWEI> system-view
	[HUAWEI] bgp 100
	[HUAWEI-bgp] l2vpn-ad-family
	[HUAWEI-bgp-l2vpn-ad] signaling vpls
	[HUAWEI-bgp-l2vpn-ad] signaling vpls-ad disable

pwsignal
#命令功能
	pwsignal命令用来配置VSI所采用的信令方式。
	#缺省情况下,没有配置VSI的信令方式。
#使用实例
	#配置当前VSI实例的信令方式为LDP。
	<HUAWEI> system-view
	[HUAWEI] vsi company1 static
	[HUAWEI-vsi-company1] pwsignal ldp
	[HUAWEI-vsi-company1-ldp]
	#配置当前VSI实例的信令方式为BGP。
	<HUAWEI> system-view
	[HUAWEI] vsi company2 auto
	[HUAWEI-vsi-company2] pwsignal bgp
	[HUAWEI-vsi-company2-bgp]

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘俊辉个人博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值