• 文章搜索:
  • 目录

        • 分享到...

        • 新浪微博
        • 腾讯微博
        • 推荐到豆瓣 豆瓣空间
        • 分享到搜狐微博 搜狐微博
        • 分享到QQ空间 QQ空间
        • 分享到腾讯朋友 腾讯朋友
        • 网易微博分享 网易微博
        • 添加到百度搜藏 百度搜藏
        • 转贴到开心网 开心网
        • 转发好友 告诉聊友
    • 推荐
    • 打印
    • 收藏

    VPLS技术简介

    作者:  |  上传时间:2012-12-28  |  关键字:VPLS技术简介

    \王辉 陈书浩

    1      VPLS为何物

    VPLS,即Virtual Private LAN Service,实际上是一种基于以太网的L2VPN技术。VPLS集以太网和MPLS的优点于一体,它使分散在不同地理位置上的用户网络可以相互通信,就像它们直接相互连接在一起一样,广域网对于所有用户来说是透明的。

    VPLS是一种典型的MPLS L2VPN技术,用户接入方式为以太网,支持的接入接口类型单一。从用户的角度来看,整个MPLS网络就是一个二层的交换网络。

    VPLS可选择使用LDP信令和MP-BGP信令来构建PW,基于LDP协议的信令通过在每一对PE之间建立点到点的LDP会话来建立虚电路。基于BGP协议的信令机制则可以充分利用BGP路由反射器的特点,这样PE只需路由反射器建立信令会话即可,这就大大提高了可扩展性。同时,BGP协议还可以支持跨越多个自治系统(AS)网络结构,这对于多个网络运营商并存情况下的VPLS实现非常有利。

    VPLS可以支持数量非常多的站点,但无法避免广播、多播报文在核心网络中复制,额外占用了带宽。

    2      VPLS的基本原理

    2.1      VPLS基本术语

    UPE(User facing-Provider Edge)

    靠近用户侧的PE设备,主要作为用户接入VPN的汇聚设备。

    NPE(Network Provider Edge)

    网络核心PE设备,处于VPLS网络的核心域边缘,提供在核心网之间的VPLS透传服务。

    VSI(Virtual Switch Instance)

    虚拟交换实例。通过VSI,可以将VPLS的实际接入链路映射到各条虚链接上。

    PWPseudo Wire):

    虚链路,在两个VSI之间的一条双向的虚拟连接,它由一对单向的MPLS VC构成。

    ACAttachment Circuit):

    接入链路,指CEPE的连接,它可以是实际的物理接口,也可以是虚拟接口。AC上的所有用户报文一般都要求原封不动的转发到对端SITE去,包括用户的二三层协议报文。

    Encapsulation

    封装,PW上传输的报文使用标准的PW封装格式和技术。PW上的报文封装有TaggedRaw模式。

    2.2      VPLS的设计思想

    VPLS支持PE设备同侧的本地交换,可在本vsi内进行二层转发。

    对于与远端PE下的站点通信,原理与其他L2VPN相同,利用标签栈对用户报文进行封装,以实现其在MPLS网络中的透明传送:外层标签(也称为公网标签)用于将报文从一个PE传递到另一个PE,内层标签(在MPLS L2VPN中,称为VC标签)用于区分不同的VPN中的连接,接收方的PE根据VC标签决定将报文传递给哪个CE。转发过程中,报文的标签栈变化如下图所示:

     

                                1VPLS转发标签变化

    2.3      VPLS的基本模型

    PE全连接的基本模型

                                 2PE全接连模型

    PE全连接VPLS模型的思想是:

    接入VPLS的各站点的PE设备之间逻辑全连接,PE设备能在多点之间进行Mac地址学习以及数据包转发。MPLS网络提供隧道来透传VPN站点间的报文,网络中的P设备作用类似与L3VPN中的P设备,它不参与Mac地址的学习与交换,只对MPLS报文进行转发。PE上各个VPN之间的转发表相互独立,使得各VPN间的Mac地址可以重叠。

    分层VPLS模型(H-VPLS

                                   3:分层VPLS模型

    分层VPLS模型的思想是:

    所有的NPE设备之间逻辑全连接,UPE只与最近的NPE建立虚连接,通过NPE与对端VPN站点进行报文交换,这样层次化了网络拓扑。H-VPLS模型对NPE性能要求高,因为这里VPN业务流量集中,而对UPE性能要求比较低,因为这里用于VPN业务的接入。另外,还可以在UPENPE之间增加链路备份,保证网络的健壮性。UPENPE之间的虚连接可以是使用QinQLDP来建立。

    2.4      VPLS转发表中Mac地址的学习和老化

    PW关联的远程Mac地址学习

    PE设备在入方向的VC LSP上收到本VPLS内的数据包后将进行Mac学习,然后PW将此Mac地址与出方向的VC LSP形成映射关系,这与二层交换机将学习的Mac地址与出端口对应类似。

    与用户相连端口的本地Mac地址学习

    对于从CE设备转发上来的二层报文,需要将报文的源Mac学习到VSI的对应端口上。

    MAC地址老化

    PE学习到的不再使用的MAC地址需要有老化机制来删除。老化机制使用了MAC地址对应的老化定时器。在接收到报文并处理时,根据报文中的源MAC地址,如果这个源地址启动了相应的老化定时器,则PE重置该老化定时器。

     

    2.5      转发和泛洪

    转发

        VPLS中的数据转发是通过查找VSIMAC地址转发表来完成的,H3C Comware平台的转发表的格式如下所示

    [S8500-2]display mac-address vsi

     Mac ADDR          STATE       VPN ID      PEER                 AGING TIME

     000d-88f7-cb9b    dynamic       1        Vlan-interface4000       AGING

     0010-5ce6-764e    dynamic       1         1.1.1.1                 AGING

        表中显示设备学到了一条本地Mac地址和远端Mac地址。对于目的mac地址为“0010-5ce6-764e”的报文,H3C设备进行MPLS转发到对端地址为1.1.1.1PE设备;对于目的mac地址为“000d-88f7-cb9b”的报文,H3C设备直接对报文在vlan4000内进行二层转发。

    泛洪

        设备从VSI中的一个端口上收到未知单播、多播、广播报文时,采用泛洪的方式向VSI本地和所有VSI对端转发;从PW上收到的未知单播、多播、广播报文时,则只向VSI本地泛洪,而不再向其他对端PE泛洪(即,水平分割原则)。

    2.6      PE全连接与环路预防

        为什么要PE间全连接

    非全连接拓扑需要多个PE之间的数据转发,容易形成环路。另外如果是非全连拓扑,

    可能需要使用STP,而在运营商核心网络里他们是不愿意部署STP的。

        全连接后环路的预防

    全连接网络仍然有可能存在环路,因此在公网和私网仍然需要想一些办法来预防环路

    的发生。

        在公网: 使用水平分割原则,规则是从公网侧PW收到的数据包不再转发到其他PW上,只能转发到私网侧。即全连接后通过不使数据在PE间二次转发来避免环路(分层VPLSUPE, SPE之间转发是特例)。

        在私网: VPLS网络允许用户在VPN内运行STP协议,BPDU报文只是在ISP的网络上透传。

    2.7      AC上的接入方式

        传统的VLAN接入方式

                               4:传统的VLAN接入方式

    如上图所示,CE-ACE-B属于同一VPNCE-A使用vlan10-vlan50VPLS的接入vlan,则PE-A上也必须配置vlan10-vlan50,且两设备间端口以trunk方式连接。具体的转发流程如下:

    l  PE-APE-B上配置vlan10属于同一VSI,网络上PEP各设备做相应路由、MPLS配置。

    l  CE-A下行的vlan10内收到用户目的为CE-B下挂主机的报文后,在vlan10内查找MAC地址转发表后,向PE-A转发,且为报文打上Tag10

    l  PE-A接收到CE-A转发来的报文,在本VSI内查找VPLS转发表,发现报文将被转发到PW对端PE-B,地址为2.2.2.2

    l  PE-A首先将报文封装一层私网标签,该标签是PE-BPE-A协商后分配的,然后私网标签外再封装一层用于在公网LSP转发的公网标签,报文在P网络中做MPLS转发到达PE-B设备,报文的格式请参考图1

    l  报文被转发到PE-B上后,只剩下一层私网标签,PE-B根据私网标签判断出该报文属于的VSI后,在该VSI内查找VPLS转发表,然后发给CE-B

    l  CE-B将收到与CE-A转发出来且未被PE-A封装前一样的报文,CE-B根据报文的Tag值在vlan10内做二层转发,使得报文到达目的主机。

        但我们不难看出,传统的VLAN接入方式有明显的不足之处:

    在实际网络中,一台PE设备必定下挂多台CE设备,那么同一PE下挂的不同CEVLAN-ID一定不能重叠,否则不同CE设备上相同VLAN之间将无法隔离;PE设备和CE设备的VLAN资源是有限的;ISP将干预用户在私网内VLAN-ID的分配,这显然是不妥当的。

    如何能够对传统的vlan接入方式优化和改进呢?

    QINQ接入方式

                                      5  QINQ接入方式

    和传统vlan接入方式相比,在PE设备上使用QINQ技术后,同一PE下挂的CE设备vlan-id可以重叠、PE设备vlan-id不必与CEvlan-id相同,完美的解决了传统vlan接入方式的不足。

    在传统vlan接入方式转发流程的基础上,我们看看QINQ接入方式下的报文转发流程:                  

                           6  QINQ接入方式下报文的转发

    PE-A

    l  给从CE-A转发来的报文再加上一层vlan-id100Tag

    l  给报文加上为VLAN 100所对应的VC私网标签

    l  给报文加上能够到达PE-B的公网标签

    l  向公网转发报文

    PE-B

    l  根据私网标签判断出该报文属于的VSI,再根据报文的目的mac查找到出端口,转发向CE-B

    l  PE的出接口为Access端口,去掉由PE-A加上的外层Tag

    l  报文转发到CE-B,此时的报文的Tag=10

    2.8      PW上的封装方式

    两个概念

    U-TAG:用户定界符,PE设备来讲,ethernet接入方式从CE转发上来报文的tag值是u-tag,原则上u-tag要求原封不动地被转发到对端站点的CE设备上去。

    P-TAG:服务定界符, PE设备来讲,Vlan接入方式从CE转发上来报文的tag值是

    p-tag,使用QINQ为报文封装的tag也是p-tag。而p-tag如何在PW上传输需根据PW上的封装方式来确定。

    PW上的两种封装方式

    Raw封装:PW上转发报文的时候要求去掉p-tag

    Tagged封装: PW上转发报文的时候要求保留p-tag

    可以视对端PECE连接的下行端口的link-type来灵活选择PW上的封装方式,这两个概念稍后我们将详细的介绍。

    3      LDP信令下的VPLS

    LDP信令介绍

    PW间隧道的建立有两种方式:

            LDPdraft-ietf-l2vpn_vpls_ldp_xx),即Martini方式

            MP-BGP (draft-ietf-l2vpn_vpls_bgp_xx),即Kompella方式

    LDP信令采用VC-TYPE+VC-ID来识别一个VCVC-TYPE说明这个VC的类型,同一个VC-TYPE的所有VC中,其VC-ID必须在VPN内较少。连接CEPE通过LDP交换VC标签,并通过VC-ID将对应的CE绑定起来。当连接两个PELSP建立成功,双方的标签交换和绑定完成后,一个VC就建立起来了,两个CE就可以通过这个VC传递二层数据。为了在PE之间交换VC标签,Martini草案对LDP进行了扩展,增加了VC FEC类型。此外,由于交换VC标签的两个PE可能不是直接相连的,所以LDP必须使用remote peer来建立session,并在这个session上传递VC FECVC标签。

    采用LDP相对MP-BGP简单,但LDP不能提供VPN成员自动发现机制。

    LDP信令需要在每两个PE之间建立remote sessionsession连接数存在N平方问题。

    4      BGP信令下的VPLS

    BGP方式的L2VPN不是直接对CECE之间的连接进行操作,而是在整个ISP网络中划分不同的VPN,在VPN内部对CE进行编号。要建立两个CE之间的连接时,只需在PE上设置本地CE和远程CECE ID,并指定本地CE为这个连接分配的Circuit ID

    BGP/MPLS VPN相同,BGP方式的L2VPN也使用Route Target来区分不同的VPN,这使得VPN组网具备了极大的灵活性。

    在标签分配方面,扩展的BGP采取标签块的方式,一次为多个连接分配标签。用户可以指定一个本地CE的范围(CE Range),CE Range表明这个CE能与多少个CE建立连接。系统会一次为这个CE分配一个标签块,标签块的大小等于CE Range。这种方式允许用户为VPN分配一些额外的标签,留待以后使用。这样会造成标签资源的浪费,但是同时带来一个很大的好处:减少VPN部署和扩容时的配置工作量。

     

    5      分层VPLSH-VPLS

    上文提到,为了防止环路,我们在PE间建立 full mesh lsp,这样将导致出现了两个问题:当新增加一台PE时,该台PE都需要与其他PE进行全连接的配置,这样当PE很多的时候,配置工作量相当大;另外广播包复制的复制问题,导致在PE设备间洪泛,影响带宽。

    PE分层的H-VPLS模型可以在一定程度上解决上面的问题。

    H-VPLS的核心思想是通过把网络分级,NPE与其他NPE建立全连接,且转发遵循水平分割,但数据可以向NPE下挂的UPE转发。UPE间无须建立全连接,UPENPE间数据转发不遵循水平分割。

    分层PE间的设备可以通过QinQ或者PW来连接:

    基于LDP的分层H-VPLS模型

                             16  基于LDP的分层VPLS模型

     上图所示为一个H-VPLS模型,UPE-A作为汇聚设备,它只跟NPE-A建立一条虚连接U-PW,跟其他所有的对端都不建立虚链接。数据转发流程如下:UPE-A负责将CE-A上送的报文发给NPE-A,同时打上U-PW对应的MPLS标签,NPE-A收到报文后,根据数据包携带的MPLS标签来判断报文所属的VSI,再根据用户报文的目的MAC打上对应的VC私网标签和在公网LSP转发的公网标签,然后转发报文。NPE-B收到报文后,根据VC私网标签 判断数据包所属的VSI,再查找VPLS转发表后转发出去。

    如果CE-ACE-B为本地CE之间交换数据,由于UPE-A本身具有桥接功能,UPE-A直接完成两者间的报文转发,而无需将报文上送NPE-A。不过对于未知单播、广播和多播报文,UPE-A在进行桥广播的同时,仍然会通过U-PW转发给NPE-A,由NPE-A来完成报文的复制并转发到各PW对端。

    基于QINQ的分层H-VPLS模型

    17  基于QINQ的分层VPLS模型

    与基于LDP的分层模型类似,只不过分层PE间不是使用信令生成的PW连接,而是采用QinQ隧道。如图所示,UPE-A为标准的桥接设备,在与CE-A连接的端口使能QinQUPE-ACE-A转发来的数据包打上VLAN-TAG。通过QinQ隧道将报文透传到NPE-A上,NPE-A根据打VLAN-TAG判断报文所属的VSI,再根据用户报文的目的MAC打上对应的VC私网标签和公网标签进行转发。NPE-B收到报文后,根据VC私网标签判断数据包所属的VSI,再查找VPLS转发表后转发出去。

    如果CE-ACE-B为本地CE之间交换数据,由于UPE-A本身具有桥接功能,UPE-A直接完成两者间的报文转发,而无需将报文上送NPE-A。不过对于未知单播、广播和多播报文,UPE-A在进行桥广播的同时,仍然会通过QinQ隧道转发给NPE-A,由NPE-A来完成报文的复制并转发到各PW对端。

    AC接入链路的备份

        UPENPE设备之间只有单条链路的方案具有明显的弱点,一旦该接入链路失败,汇聚设备UPE下挂的所有VPN都将丧失连通性。所以,对于H-VPLS的两个接入模型中,我们可以设计有备份链路的存在(参考图3的分层VPLS模型):在正常情况下,设备只使用一条主链路接入,当系统检测到主接入链路失败时,可以启用备用链路来继续提供VPN业务。

    对于LSP接入的H-VPLS,由于UPENPE之间运行LDP会话,可以根据LDP会话的活动状态来判断主链路是否失效;对于QinQ接入的H-VPLS,可以在UPE与它相连的NPE设备之间运行STP,保证在一条链路失败以后启用另一条链路。