• 文章搜索:
  • 目录

        • 分享到...

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

    L3 VPN 基础

    作者:  |  上传时间:2012-12-28  |  关键字:L3 VPN 基础

    \蔡金龙 陈小坤

    本文包括两个主题:VPN技术概述和MPLS L3 VPN技术综述,在VPN技术概述部分主要是介绍VPN技术的基本概念,为更好的理解MPLS L3 VPN做一下铺垫。在MPLS L3 VPN技术综述部分会详细介绍MPLS VPN技术产生背景、MP-IBGP技术综述、MPLS L3 VPN技术体系结构、MPLS L3 VPN报文交互、转发及实际应用实例的介绍,希望对大家理解MPLS L3 VPN有所帮助。

    1      VPN技术概述

    1.1      VPN技术的产生及现状

    1.1.1     VPNvirtual private network)技术的定义:

    多个站点之间的客户通过部署在相同的基础设施之上进行互联,它们之间的访问及安全策略与专用网络(专线)相同。通俗点说就是使用公共网络设施实现私有的连接,各个私有连接在公共网络上对其它的私有网络是不可见的。相对于专线的物理隔离技术来说,VPN技术更多意义上是一种逻辑隔离技术。它主要是在客户要求各个站点通过服务提供商公共网络进行连接的需求背景下,由专线网络的概念引申而来的。

    任何符合如下两个条件的网络我们都可以泛泛地称它为VPN网络:

    1、使用共享的公共环境实现各个私有网络的连接;

    2、不同的私有网络间(除非有特殊要求,如两个公司间的互访要求)是相互不可见的。

    1.1.2     VPN技术的分类

    VPN的概念早在10多年前便已经提出,至今经历了较长的演进过程。VPN的概念最早是从专线引发的。专线网络具有以下特点:

    1、安全性高,线路为客户专用,不同用户间是物理隔离的;

    2、价格昂贵;

    3、带宽浪费严重。

    正因为专线网络具有的一些固有缺陷,随着统计复用技术的出现,一些新的共享带宽技术逐渐替代了专用线路,并可以提供与专线相同的服务。如帧中继、X.25技术等,通过VC在公共的交换设备上提供虚链路,实现用户的私有通信。由于是共享带宽,所以价格比专线便宜很多。这些技术构成了早期的VPN网络。随着新技术(如加密技术、隧道技术、MPLS技术)的不断涌现,及新的客户需求的出现,目前VPN的概念变得越来越复杂。所以引入了VPN的分类,以区分各种不同的VPN技术。

    VPN技术主要从四个方面进行分类:

    1VPN要解决的业务问题;

    2、服务提供商在哪一层与客户交换拓扑信息;

    3、在服务提供商中用于实现VPN服务的第二层或第三层技术;

    4、网络的拓扑结构。

    每一个分类与其它的分类间都不是独立的,都是有相互关联的,它们共同决定了VPN网络的架构。

    VPN是一门很复杂的技术,相关的知识点很多。在本文中我们主要介绍一下和MPLS VPN相关的VPN知识点。其它的内容我们暂不介绍,大家可以查阅相关资料获取感兴趣的信息。

    1.2      VPN的模型及典型实现技术

    首先我们介绍一下VPN网络中的几个关键角色:

                                                                                                                图1 VPN网络结构示意图

    如上图所示,构成一个VPN网络的关键组件如下:

    CECustom Edge):直接与服务提供商相连的用户设备。

    PEProvider Edge Router):指骨干网上的边缘设备(如路由器、ATM交换机、帧中继交换机等),与CE相连,主要负责VPN业务的接入。

    P Provider Router):指骨干网上的核心路由器,主要完成路由和快速转发功能。P设备根据网络结构及规模可有可无。

    任何一个VPN网络都是由这几个组件全部或部分组成的,下面我们来介绍一下VPN网络的几种主要模型。

    VPN的主要模型为两种,分别是:

    Overlay VPN——覆盖VPN模型

    Overlay VPN的主要特点是客户的路由协议总是在客户设备之间交换,而服务提供商对客户网络的内部结构一无所知。

    典型的Overlay VPN技术有:

    第二层隧道技术如X.25、帧中继、ATM;第三层隧道技术如IP-over-IP隧道技术等。其中IP-over-IP隧道技术通过专用IP主干或INTERNET来实现覆盖VPN网络,最常用的技术是GREIPSEC等。

    Overlay VPN的主要缺陷是:

    连接性比较复杂时管理开销非常大;

    要正确提供VC的容量,必须了解站点间的流量情况,比较难统计。

    Peer-to-Peer VPN——对等VPN模型

    Peer-to-Peer VPN的主要特点是服务提供商的PE设备直接参与CE设备的路由交换。该VPN模型的实现依据是:如果去往某一特定网络的路由未被安装在路由器的转发表中,在那台路由器上,该网络不可达。实施Peer-to-Peer VPN的前提是所有CE端的地址是全局唯一的!

    典型的Peer-to-Peer VPN技术有:

    1、专用PE接入技术

    2、共享PE接入技术

    其中,共享PE Peer-to-Peer VPN(如下图所示)的主要特点是:

                                                                                                    图2 共享PE Peer-to-Peer VPN组网图

    1、所有VPN用户的CE都连到同一台PE上,PE与不同的CE之间运行不同的路由协议(或者是相同路由协议的不同进程,比如OSPF)。

    2、由始发PEVPN路由发布到公网上,在接收端的PE上将这些路由过滤后再发给相应的CE设备。

    3、共享路由接入方式为避免不同VPN用户间的路由外漏,需要配置大量的ACL进行过滤,对于设备的性能及管理开销都会有很大的负担。

    专用PE Peer-to-Peer VPN(如下图所示)的主要特点是:

                                                                                                    图3 专用PE Peer-to-Peer VPN组网图

    为每一个VPN单独准备一台PE路由器,PECE之间可以运行任意的路由协议,与其它VPN无关。PEP之间运行BGP或其他路由协议,并使用路由属性进行过滤。

    优点:无需配置任何ACL,大大减轻了管理员的配置工作量。

    缺点:每一个VPN用户都要新增一台专用的PE,代价过于昂贵。

    1.3      总结

    现有VPN技术基本满足了客户私有网络通过公共基础设施互联的要求,但同时也存在一些固有缺陷,典型的是覆盖模型和对等模型不能很好的兼容。但客户往往要求其VPN网络可以具备这两者的优点,如下图3所示的要求:对于黄色站点和绿色站点的VPN客户都要求可以使用私有地址(不同VPN的私有地址可以是重复的),并且可以像对等模型VPN那样动态建立隧道。这种需求目前的VPN技术(覆盖型、对等型)是实现不了的,所以急需一种新技术可以整合这两种VPN模型的优点,满足客户的需求。MPLS VPN在这种背景下孕育而生。下面我们来介绍一下MPLS L3 VPN的一些相关技术。

    2      MPLS L3 VPN技术综述

    2.1      MPLS VPN技术产生背景

    现有VPN的一些固有的缺陷导致客户组网的很多需求不能满足,实施比较复杂。MPLS VPN技术将两种VPN模型完美的整合到一起,推动了VPN的继续发展。下面对MPLS L3 VPN的基础知识进行介绍。

    2.2      MPLS L3 VPN体系结构综述

    MPLS VPN的出现主要是为了要解决传统VPN技术的一些固有缺陷,这有很多技术问题需要解决的,其中最重要的是地址重叠的问题。必须有一种技术可以保证不同的用户VPN可以使用相同的私有地址空间,而且可以在公共的骨干网络上互相不影响地交换数据。要解决地址空间重叠的问题主要有以下几个问题:

    1、本地路由冲突问题,即:在同一台PE上如何区分不同VPN的相同路由。

    2、路由在网络中的传播问题,两条相同的路由,都在网络中传播,对于接收者如何分辨。

    3、报文的转发问题,即使成功的解决了路由表的冲突,但是当PE接收到一个IP报文时,它又如何能够知道该发给哪个VPN?因为IP报文头中唯一可用的信息就是目的地址。而很多VPN中都可能存在这个地址。

    从上述这些技术难点来看,主要问题都存在于和路由相关的特性,所以要解决这些问题必须从路由协议上进行考虑。但现有的路由协议都不具备解决这些问题的条件,所以必须通过对现有的路由协议进行改造来实现。选择一个合适的路由协议来实现改造就成了首先要解决的问题。作为候选的路由协议必须可以适应数量巨大的VPN路由,而且要求协议具有良好的可扩展性。具备条件的协议一定是基于TLV元素的(扩展方便)。分析现有的路由协议,OSPF是应用最广泛的路由协议,但是这个协议的扩展性比较差,而且它是一种链路状态路由协议,需要对收到的LSA进行大量的计算,很难适应公共网络上数量巨大的VPN路由。RIP从扩展的角度上看它是TLV架构的 ,扩展性应该还可以,但是RIP的运行机制不适合大型网络。其它的路由协议也都有相应的不适合的地方,最终这个重任就落到了现有的INTERNET使用的骨干路由协议BGP身上。BGP具备很多特点使其十分适合改造以满足VPN网络上地址重叠的问题,它的特点如下:

    1、公共网络中VPN路由数目非常大,BGP是目前唯一支持大量路由的路由协议;

    2BGP也是为在不直接相连的路由器间交换信息而设计的,这使得P路由器中无需包含VPN路由信息;

    3BGP可以运载附加在路由后的任何信息,作为可选的BGP属性,任何不了解这些属性的BGP路由器都将透明的转发它们(当然这些属性都是可传递的),这使在PE路由器间传播路由非常简单。这里主要是考虑到可以通过扩展属性的方式来标识不同VPN中相同的路由。

    正因为BGP具备了如上的优势,所以解决前面提到的技术难点的重任就落到了它的身上。通过对现有BGP协议的改造,前面提到的几个需要解决的问题基本可以迎刃而解了,解决思路如下:

    1、本地路由冲突问题,可以通过在同一台路由器上创建不同的路由表解决,而不同的接口可以分属不同的路由表中,这就相当于将一台共享PE模拟成多台专用PE

    2、可以在路由传递的过程中为这条路由再添加一个标识,用以区别不同的VPN

    3、由于IP报文的格式不可更改,但可以在IP头之外加上一些信息,由始发的VPN打上标记,这样PE在接收报文时可以根据这个标记进行转发。

    2.2.1     本地路由冲突问题的解决思路

    本地路由冲突问题的解决思路主要是从专用PE对等VPN模型上借鉴过来的。专用路由器方式分工明确,每个PE只保留自己VPN的路由。P只保留公网路由。而现在的思路是:将这些所有设备的功能整合在一台PE上完成。如下图所示:

                                                                                                           图4 本地路由冲突问题解决思路

    具体的操作是在PE设备上划分不同的VRFVPN路由转发实例-VPN Routing & Forwarding Instance,我司称之为VPN Instance),每一个VRF可以看作虚拟的路由器,好像是一台专用的PE设备。该虚拟路由器包括如下元素:

    1、一张独立的路由表,当然也包括了独立的地址空间;

    2、一组归属于这个VRF的接口的集合,特定的VRF通过数据包从哪个接口接收来进行判断;

    3、一组只用于本VRF的路由协议。

    对于每个PE,可以维护一个或多个VRF,同时维护一个公网的路由表(也叫全局路由表)。多个VRF实例相互分离独立。

    相对于复杂的ACL配置,多转发表的机制大大简化了PE路由器为每个VPN路由信息提供隔离的支持。

    实现VRF本地路由区分并不困难,但是解决远端路由区分就要在PE上使用特定的策略规则来协调各VRF和全局路由表之间的关系。这个主要是指PE设备如何分辨收到的路由是属于VPN的路由还是公共网络上的全局路由。解决的办法是给VPN路由加上一个特定的标记,由不同的标记来标示不同的路由,并由PE设备根据这个标记来判断该路由应该被写入哪个VRF中。

    要解决标记的问题我们需要从BGP的属性上想解决办法。BGP协议的路由属性是十分灵活的而且扩展性极佳。回忆一下BGP的各种属性,团体属性的特点最适合用于解决这个问题。

    团体属性是一个任选可传递属性,它主要用于简化策略的执行。团体属性标明一个目的地作为一些目的地团体中的一个成员,这些目的地共享一个或者多个共同的特性。也就是说团体属性是针对具体路由的,而与之功能类似的对等体组是针对对等路由器的,在这并不适用。所以我们可以通过对团体属性进行改造来解决我们所面临的问题。改造后的团体属性功能上和以前是一样的,只不过为了区别于传统的团体属性,我们给它一个新的名字叫——RT。这样PE设备就可以通过在特定路由条目中加入RT属性来区分不同VRF的路由。

    通过对比,我们来看一下团体属性是如何改造使之成为RT属性的:

    传统的团体属性格式如下:

    扩展后的团体属性(也就是RT)格式如下:

    扩展的community有如下两种格式:其中type字段为0x0002或者0x0102时表示RTRT是作为BGP路由的属性进行传递的,并且它是任选可传递的属性。扩展的团体属性值是32bit的,可以提供更多的路由区分。

    RT的本质是每个VRF表达自己的路由取舍及喜好的方式。可以分为两部分:Export TargetImport Target;前者表示了我发出的路由的属性,而后者表示了我对哪些路由感兴趣。同时,RT的应用是比较灵活的,每个VRFExport TargetImport Target都可以配置多个属性,例如:我对红色或者蓝色的路由都感兴趣。接收时是操作,红色的、蓝色的以及同时具备两种颜色的路由都会被接受。这样就可以实现非常灵活的VPN访问控制。下面我们通过一个实例分析来说明一下RT的应用:

                                                                                                                  图5 RT应用介绍实例图

    如图所示,每个红色公司的站点与PE路由器上的红色VRF关联。PE为每个红色VRF配置一个全局唯一的RTRED),作为其输入输出目标。该RT不会再分配给其它任何VRF作为它们的RT(如蓝色VRF),这样就保证红色公司的VPN中只包含自己VPN中的路由。具体的步骤如下:

    SITE-1:我发的路由是红色的,我也只接收红色的路由。

    SITE-2:我发的路由是红色的,我也只接收红色的路由。

    SITE-5:我发的路由是红色的,我也只接收红色的路由。

    SITE-3:我发的路由是蓝色的,我也只接收蓝色的路由。

    SITE-4:我发的路由是蓝色的,我也只接收蓝色的路由。

    SITE-6:我发的路由是蓝色的,我也只接收蓝色的路由。

    这样,SITE125中就只有自己和对方的路由,两者实现了互访。同理SITE346之间也一样。这时我们就可以把SITE-125称为VPN-A,而把SITE346称为VPN-B

    下面我们通过专用PE方式与VRF方式的一个对比来对这部分内容做一个小结:

    2.2.2     路由在网络中传递时的冲突问题的解决思路

    在成功的解决了本地路由冲突的问题之后,下一步我们就需要解决路由在网络中传递时的冲突问题。标准的BGP只能处理IPv4路由,所以如果不同的VPN使用相同的IPv4地址前缀,在接收端就无法分辨不同VPN的路由。使用RT属性是可以部分解决这个问题的,但同时也存在一定的局限性。我们来分析一下通过RT如何解决这个问题及它的局限性。

    1、当PE收到不同VPN发过来的路由后,根据RT属性决定路由进入哪个VRF,这样就可以保证不同VPN的路由不具备可比性,操作可以正常进行。

    2、路由撤销的时候BGP报文是不带属性的,RT肯定也就不起作用了,会导致所有VPN中的相同路由都被撤销掉。

    所以RT虽然具备了这个功能但并不是所有的时候都好用,必须有一种标记可以和IPv4地址绑定到一起来从根本上解决这个问题——这个标记我们称之为RD

    RD是附加在IPv4地址前面的一种标记,它的格式如下所示:

                                                                                                                     图6 RD格式示意图

    其中类型字段定义了两个值:01

    对于类型0,管理器子区域包括2字节,分配数值字段包括4字节。管理器子区域使用自治系统号码(ASN),分配数值子区域为服务提供商管理的数值空间。类型0不能使用私有自治系统号码,可能会造成冲突。如果要使用私有的自治系统,可以使用类型1

    对于类型1,管理器子区域包括4字节,分配数值字段包括2字节。管理器子区域使用IPv4地址,分配数值子区域为服务提供商管理的数值空间。

    RD的结构和RT相似,但它们是有本质区别的,RTBGP路由的扩展属性,而RD是附加在IPv4地址前的作为地址的一部分存在,这点需要大家注意。

    关于RD的一些应用上的特点如下:

    IPv4地址加上RD之后,就变成VPN-IPv4地址族了。

    理论上可以为每个VRF配置一个RD,但要保证这个RD全球唯一。

    通常建议为每个VPN都配置相同的RD

    VPN-IPv4地址仅用于服务供应商网络内部。在PE发布路由时添加,在PE接收路由后放在本地路由表中,用来与后来接收到的路由进行比较。CE不知道使用的是VPN-IPv4地址。

    在其穿越供应商骨干时,在VPN数据流量的包头中没有携带VPN-IPv4地址。RD只在骨干网路由协议交换路由时使用。并且PECE接收的标准的路由是IPv4路由,如果需要发布给其它的PE路由器,此时需要为这条路由附加一个RD

     

    正因为RD具有这些特点,所以如果两个VRF中存在相同的地址,但是RD不同,则两个VRF一定不能互访,间接互访也不行。这是因为在数据转发时数据报文中并不携带RD,这样数据到达目的地时PE就会在不同的VRF中查找到去往相同目的地的路由条目,从而造成错误的转发。虽然RD是在PE设备路由交换的过程中携带,但是RD并不会影响不同VRF之间的路由选择以及VPN的形成,这些事情是由RT搞定的。

    2.2.3     数据报文转发问题的解决思路

    前面两个问题:在PE本地的路由冲突和路由网络传播过程中的冲突问题都已解决。但是在数据转发时如果接收端PE的两个本地VRF中同时存在10.0.0.0/24的路由,当它接收到一个目的地址为10.0.0.1的报文时,它如何知道该把这个报文发给与哪个VRF相连的CE?肯定还需要在被转发的报文中增加一些信息。当然这个信息可以由RD担当,只需改造一下MPLS VPN的处理流程,使数据转发时也携带RD即可解决。但是RD一共有64bit,太大了,这会导致转发效率的降低。为保证效率,只需要一个短小、定长的标记即可。由于公网的隧道已经由MPLS来提供,而且MPLS支持多层标签的嵌套,这个标记可以定义成MPLS标签的格式。那这个标签由谁来分配呢?路由是私网VPN的,LDP对其一无所知,这个分配VPN私网路由标签的任务也只能由扩展的BGP来完成了。

    LDP协议类似,标签的分配是在数据转发发生之前完成的。不同的是MP-IBGP分配标签是和路由交换同时进行的。我们知道BGP交换路由是通过NLRI Network Layer Reachability Information)来完成的,通过对BGP协议的改造,改造后的MP-IBGP进行NLRI信息交换时会附加RD、标签等各种信息。格式如下:

                                                                                                             图7 MP-IBGP NLRI报文格式

    在这之后是RT信息,如下图所示:

                                                                                                         图8 MP-IBGP NLRI报文RT列表

    这样,整个MPLS VPN的路由交换及数据转发问题就都解决了。下面我们来介绍一下MPLS L3 VPN的路由交换及数据转发的流程。

    3      MPLS L3 VPN路由交换及数据转发流程

    3.1      MPLS L3 VPN路由交换过程

    前面我们已经介绍过,MPLS L3 VPN的路由交换时,PE路由器运行单个路由协议(MP-IBGP),来交换所有的VPN路由。为支持VPN客户空间重叠的情况,给VPN地址空间加上RD,使其是唯一的。并使用RT属性来标示路由所属的VRF。我们可以对其进行如下的总结。

    MPLS/VPN的路由交换过程主要分为四部分:

    1 CEPE之间的路由交换;

    2 VRF路由注入到MP-IBGP的过程;

    3 公网标签分配过程;

    4 MP-IBGP路由注入到VRF的过程。

    下面我们通过实例来分析一下MPLS/VPN路由在PE间交换的全过程。

    3.1.1     CEPE之间的路由交换

                                                                                                        图9 CEPE之间路由交换示意图

    如图所示,交换过程如下:

    PE上为不同的VPN站点配置VRFPE上维护多个独立的路由表,包括公网和私网(VRF)路由表,其中:

    1、公网路由表:包含全部PEP路由器之间的路由,由骨干网IGP产生。

    2、私网路由表:包含本VPN用户可达信息的路由和转发表。

    PECE之间通过标准的EBGPOSPFRIP或者静态路由交换路由信息。在这个过程中,除PE设备需要将CE设备传来的路由分别存储在不同的VRF外(这只和路由接收的接口有关,和其它MPLS VPN特性无关)其它操作和普通的路由交换没有区别。

    静态路由、RIP都是标准的协议,所有的CE端都可以使用相同的路由协议,但是需要在PE端的每个VRF运行不同的实例,相互之间没有干扰,与PEMP-IBGP之间只是简单的互相引入操作。EBGP的情况与RIP类似,也是普通的EBGP而非MP-EBPG,只交换经过PE过滤后的本VPN路由。但选择OSPF作为PECE之间的路由协议,情况相对复杂。需要对OSPF做很多修改,以将本siteLSA放在BGP的扩展community属性中携带,与远端VPN中的OSPF之间交换LSA。每个site中的OSPF都可以存在area 0,而骨干网则可以看作是super area 0。此时的OSPF由两级拓扑(骨干区域+非骨干区域)变为三级拓扑(超级骨干区域+骨干区域+非骨干区域)。关于OSPFMPLS VPN网络中的更详细的介绍请参阅MPLS VPN的其它相关文档,在此就不详细介绍了。这样CEPE端的路由交换过程就完成了。

    3.1.2     VRF路由注入到MP-IBGP的过程

                                                                                    图10 VRF路由注入到MP-IBGPPE间路由交换示意图

    如图所示,VRF路由注入到MP-IBGP并通过MP-IBGPPE设备间交换的过程如下:

    在从CE端接收到路由信息后,PE路由器需要对该路由加上RDRD为手工配置),使其变为一条VPN-IPv4路由。然后在路由通告中更改下一跳属性为自己(通常是自己的loopback地址),为这条路由加上私网标签(由MP-IBGP协议随机自动生成,无需配置)、加上RT属性(RT需手工配置)。这一系列工作完成后,由PE发给其它所有的PE邻居。其它的PE邻居也进行同样的操作用于交换不同CE端的路由。

    3.1.3     公网标签分配过程

                                                                                                           图11 公网标签分配过程示意图

    PE间私网路由交换需要跨越MPLS骨干网络,在这个过程中需要进行标准的MPLS转发,所以要正确的将路由传递到对端PE,则需要知道到达对端PE的公网标签。如图所示,公网标签分配的过程如下:

    首先PEP路由器通过骨干网IGP学习到BGP邻居下一跳的地址。通过运行LDP协议,分配标签,建立LSP通道。标签栈用于报文转发,外层标签用来指示如何到达BGP下一跳 ,内层标签表示报文的出接口或者属于哪个VRF(属于哪个VPN)。MPLS节点转发是基于外层标签,而不管内层标签是多少。此时通过MPLS的外层标签空间,PE设备间就可以进行正常的路由交换了。

    3.1.4     MP-IBGP路由注入到VRF的过程

                                                                                             图12 MP-IBGP路由注入到VRF的过程示意图

    如图所示,接收端PE在接收到发送端PE发送的路由后,将VPN-v4路由变为IPv4路由,并且根据本地VRFimport RT属性将路由条目加入到相应的VRF中,私网标签保留,记录到转发表中,留做转发时使用。再由本VRF的路由协议引入并传递给相应的CE。发给CE时下一跳为接收端PE自己的接口地址。这样就完成了从MP-IBGP路由注入到VRF的过程。

    经过以上四个步骤,整个MPLS VPN网络的路由交换就完成了。此时VPN构建完成,可以进行正常的业务数据转发了。

    3.2      MPLS L3 VPN数据转发流程

    MPLS/VPN的数据转发过程也需要分为两部分来进行处理:

    1、从CEIngress PE

    2 Ingress PE>Egress PE>CE

    我们还是通过具体的实例来进行分析。

    3.2.1     数据转发——CEIngress PE

                                                                                        图13 数据转发——CEIngress PE过程示意图

    如图所示,从CEIngress PE的数据报文转发过程如下:

    CE将报文发给与其相连的VRF接口,PE在本VRF的路由表中进行查找,得到了该路由的公网下一跳地址(即:对端PEloopback地址)和私网标签。

    在把该报文封装一层私网标签后,在公网的标签转发表中查找下一跳地址,再封装一层公网标签,交与MPLS转发。

    3.2.2     数据转发——Ingress PE>Egress PE>CE

                                                                                        图14 数据转发——Ingress PE>Egress PE>CE

    如图所示,从Ingress PE>Egress PE>CE的数据报文转发过程如下:

    如前一部分所述,交由MPLS转发的报文在公网上沿着LSP转发,并根据途径的每一台P设备的标签转发表进行标签交换。在倒数第二跳P设备处,将外层的公网标签弹出,并由该P设备交给目的PE设备,PE设备根据内层的私网标签判断该报文属于哪个VRF。然后弹出内层的私网标签,在目的VRF中查找路由表,根据下一跳发给相应的CE

    这样VPN站点间的一次数据交换就完成了。

    3.3      MPLS L3 VPN特性介绍

    前面我们介绍了MPLS L3 VPN的整体结构及基本特征,下面对MPLS L3 VPN的一些特性做简单的介绍。

    3.3.1     SOO特性

    SOO的概念:扩展团体路由源,SOO用于当站点与MPLS/VPN主干中的多个PE路由器相连并且使用了AS覆盖特性时防止路由环路。根据路由的SOOPE路由器确定它从哪个站点获得,这样其它的PE路由器便不会将该路由重新通告给该站点。各台相关PE都需要配置,是扩展团体属性的一部分。

    下面是这个特性的一个实例:

                                                                                                                  图15 SOO特性示意图

    如图所示,位于HANGZHOUPE收到来自BEIJING PE的关于192.1.1.0/24的路由更新。更新中包含一个值为10028SOO,它是位于HANGZHOU PE路由器上配置的VRF SOO之一,因此该路由不会再被通告到客户站点。

    3.3.2     AS覆盖特性

    AS覆盖特性:当客户站点和PE间运行EBGP时,客户在其不同站点使用相同的AS号,通过在PE上重写VPN站点路由中的AS_PATH,使得路径中只包含MPLS/VPN主干的自治系统号,以避免对端站点不接受该路由。该特性与SOO特性一起使用以避免出现路由环路。在配置了AS覆盖特性后,PE路由器在将路由通告给CE时对路由进行检查,相关操作如下:

    1、如果AS_PATH中的最后一个AS号与邻居的AS号相同,则PE将其替换为自己的AS号。

    2、如果AS_PATH中有多个AS号与最后的AS号相同,PE将这些AS号都替换为自己的AS号。

    每执行一次常规EBGP流程,PE会将自己的AS号加到AS_PATH。这是传统EBGP的处理流程。我司实现是通过允许AS号重复实现的。

    如下面这个例子所示:

                                                                                                                图16 AS覆盖特性示意图

    如图所示,从HANGZHOU PE传递到BEIJING PE的关于196.7.25.0/24的更新消息中,AS-PATHBEIJING CEAS号相同,在BEIJING PE上将该路由传递给BEIJING CE时会更改AS-PATH属性为11,这样这条路由会被BEIJING CE正常接收。

    3.3.3     自动路由过滤技术(ARF)特性

    自动路由过滤技术(ARF)特性:目前MPLS/VPN进行路由交换时存在一个问题是:所有的VPN路由都会存放在一个全局的BGP路由表中,不管该PEVRF是否需要该路由,该路由条目都会存放,这样对PE的内存和链路带宽都是一种浪费。自动路由过滤技术可以满足这种过滤的需求,该功能在所有的PE路由器上都可用。它的特点是将包含的RTPE配置的任何一个VRF都不匹配的路由条目自动过滤掉,以减少PE必须存储到内存中的信息量。

    如下面的实例所示:

                                                                                               图17 自动路由过滤技术(ARF)特性示意图

    如图所示,从SHANGHAI来的路由条目携带的RTBEIJINGPE路由器中所配置的不相匹配,导致在该PE上更新被拒绝。

    3.3.4     路由刷新特性

    路由刷新特性:当使用了自动路由过滤技术将PE上不需要的路由过滤掉以后,此时PE的策略发生了变化,如添加了新的VRF或修改了已有的VRF,则PE路由器需要获得以前被丢弃的路由。此时需要更改过滤特性的配置使其接受该路由,但是按照BGP的处理机制,路由始发者只会发送更新的路由信息给邻居而不会重传路由表,所以需要有一种机制来保证路由的正常学习。路由刷新特性用来解决这个问题。使用这个特性后,PE路由器将在其配置被修改后的一段时间后,请求其邻居重传路由选择信息,以获得前面丢弃掉的路由。延时是必要的,因为在PE上可能要做多处修改,而我们希望只发一次刷新。路由刷新特性是默认开启的不需要额外的配置。

    下面是这个特性的一个实例:

                                                                                                               图18 路由刷新特性示意图

    如图所示:

    1BEIJING PE新添加了一个站点,该站点属于VPN B

    2BEIJINGPE给其邻居发送一条路由刷新消息要求重传VPN路由。

    3、其PE邻居将VPN路由重传给BEIJINGPE,使其学习到该VPN的路由。当然前期必须把过滤策略去掉。

    4、我们也可以手工的reset BGP来实现路由刷新,但效率较低。

    4      MPLS L3 VPN典型组网配置实例

    下面的内容是一个MPLS L3 VPN的典型组网配置实例,希望对大家学习MPLS L3 VPN能有所帮助。实例中配置以我司路由器设备为例。

                                                                                                         图19 MPLS L3 VPN典型组网图

    如图所示:

    CE1CE3构成VPN-ACE2CE4构成VPN-B

    不同VPN用户之间不能互相访问。VPN-A使用的VPN-target属性为100:26VPN-B使用的VPN-target属性为100:27

    下面依次介绍各核心组件PE路由器、CE路由器和P路由器上的配置。具体配置如下。

    4.1      CE设备的配置

    配置CE1

    CE1PE1建立EBGP邻居,引入直连路由和静态路由,从而将CE1的内部VPN路由引入BGP,进而发布给PE1CE1使用接口Ethernet0/0/0PE1相连。

    [CE1] interface ethernet 0/0/0

    [CE1-Ethernet0/0/0] ip address 168.1.1.1 255.255.0.0

    [CE1-Ethernet0/0/0] quit

    [CE1] bgp 65410

    [CE1-bgp] group 168 external

    [CE1-bgp] peer 168.1.1.2 group 168 as-number 100

    [CE1-bgp] import-route direct

    [CE1-bgp] import-route static

    说明:

    另外3CE路由器(CE2CE4)配置与CE1路由器配置类似,配置过程省略。

    4.2      PE设备的配置

    配置PE1

    # PE1上创建VPN-AVPN-BVPN-instance,并配置相关属性以控制VPN路由信息的发布。

    [PE1] ip vpn-instance vpna

    [PE1-vpn-vpna] route-distinguisher 100:1

    [PE1-vpn- vpna] vpn-target 100:26 both

    [PE1-vpn- vpna] quit

    [PE1] ip vpn-instance vpnb

    [PE1-vpn-vpnb] route-distinguisher 100:2

    [PE1-vpn- vpnb] vpn-target 100:27 both

    [PE1-vpn- vpnb] quit

    PE1CE1CE2 间建立EBGP邻居,并将学到的CE1内部VPN路由引入MBGPVPN-instance地址族。

    [PE1] bgp 100

    [PE1-bgp] ipv4-family vpn-instance vpna

    [PE1-bgp-af-vpn-instance] group 168 external

    [PE1-bgp-af-vpn-instance] peer 168.1.1.1 group 168 as-number 65410

    [PE1-bgp-af-vpn-instance] import-route direct

    [PE1-bgp-af-vpn-instance] quit

    [PE1-bgp] ipv4-family vpn-instance vpnb

    [PE1-bgp-af-vpn-instance] group 169 external

    [PE1-bgp-af-vpn-instance] peer 168.2.1.1 group 169 as-number 65420

    [PE1-bgp-af-vpn-instance] import-route direct

    [PE1-bgp-af-vpn-instance] quit

    [PE1-bgp] quit

    PE1CE1相连的接口Ethernet1/0/0绑定到VPN-A,与CE2相连的接口绑定到VPN-B(需要注意的是,应先配置接口与VPN-instance的关联后,再配置接口的IP地址)。

    [PE1] interface ethernet 1/0/0

    [PE1-Ethernet1/0/0] ip binding vpn-instance vpna

    [PE1-Ethernet1/0/0] ip address 168.1.1.2 255.255.0.0

    [PE1-Ethernet1/0/0] quit

    [PE1] interface ethernet 0/0/0

    [PE1-Ethernet0/0/0] ip binding vpn-instance vpnb

    [PE1-Ethernet0/0/0] ip address 168.2.1.2 255.255.0.0

    [PE1-Ethernet0/0/0] quit

    配置LoopBack接口(对PE路由器,配置LoopBack接口地址时,必须使用32位掩码的主机地址,以防止此路由被聚合,导致LSP不能正确处理内层标签)。

    [PE1] interface loopback0

    [PE1-LoopBack 0] ip address 202.100.1.1 255.255.255.255

    [PE1-LoopBack 0] quit

    配置MPLS基本能力,并在PE1P路由器相连的接口上使能MPLSLDP。建立LSP和实现MPLS报文转发。

    [PE1] mpls lsr-id 202.100.1.1

    [PE1] mpls

    [PE1] mpls ldp

    [PE1] interface Serial2/0/0

    [PE1-Serial2/0/0] ip address 172.1.1.1 255.255.0.0

    [PE1-Serial2/0/0] mpls

    [PE1-Serial2/0/0] mpls ldp enable

    [PE1-Serial2/0/0] quit

    PE1P路由器相连的接口及loopback接口上启用OSPF,并引入直连路由。实现PE内部的互通。

    [PE1] ospf

    [PE1-ospf-1] area 0

    [PE1-ospf-1-area-0.0.0.0] network 172.1.0.0 0.0.255.255

    [PE1-ospf-1-area-0.0.0.0] network 202.100.1.1 0.0.0.0

    [PE1-ospf-1-area-0.0.0.0] quit

    [PE1-ospf-1] import-route direct

    [PE1-ospf-1] quit

    PEPE之间建立MP-IBGP邻居,进行PE内部的VPN路由信息交换。并在VPNv4地址族视图下激活MP-IBGP对等体。

    [PE1] bgp 100

    [PE1-bgp] group 202 internal

    [PE1-bgp] peer 202.100.1.3 group 202

    [PE1-bgp] peer 202.100.1.3 connect-interface loopback0

    [PE1-bgp] ipv4-family vpnv4

    [PE1-bgp-af-vpn] peer 202 enable

    [PE1-bgp-af-vpn] peer 202.100.1.3 group 202

    [PE1-bgp-af-vpn] quit

    [PE1-bgp] quit

    配置PE2

    说明:

    PE2的配置过程与PE1相似,需要注意PE2上对于VPN路由属性的设置,以了解如何控制同一VPN的路由信息在MPLS网上的发布(相同的VPN-target)。在PE2上创建VPN-AVPN-BVPN-instance,并配置相关属性以控制VPN路由信息的发布。

    [PE2] ip vpn-instance vpna

    [PE2-vpn-vpna] route-distinguisher 100:1

    [PE2-vpn-vpna] vpn-target 100:26 both

    [PE2-vpn-vpna] quit

    [PE2] ip vpn-instance vpnb

    [PE2-vpn-vpnb] route-distinguisher 100:2

    [PE2-vpn-vpnb] vpn-target 100:27 both

    [PE2-vpn-vpnb] quit

    PE2CE3CE4间建立EBGP邻居,并将学到的CE3内部VPN路由引入MBGP

    VPN-instance地址族。

    [PE2] bgp 100

    [PE2-bgp] ipv4-family vpn-instance vpna

    [PE2-bgp-af-vpn-instance] group 168 external

    [PE2-bgp-af-vpn-instance] peer 168.3.1.1 group 168 as-number 65430

    [PE2-bgp-af-vpn-instance] import-route direct

    [PE2-bgp-af-vpn-instance] quit

    [PE2-bgp] ipv4-family vpn-instance vpnb

    [PE2-bgp-af-vpn-instance] group 169 external

    [PE2-bgp-af-vpn-instance] peer 168.4.1.1 group 169 as-number 65440

    [PE2-bgp-af-vpn-instance] import-route direct

    [PE2-bgp-af-vpn-instance] quit

    [PE2-bgp] quit

    PE2CE3CE4相连的接口绑定到VPN-AVPN-B

    [PE2] interface ethernet 1/0/0

    [PE2-Ethernet1/0/0] ip binding vpn-instance vpna

    [PE2-Ethernet1/0/0] ip address 168.3.1.2 255.255.0.0

    [PE2-Ethernet1/0/0] quit

    [PE2] interface ethernet 0/0/0

    [PE2-Ethernet0/0/0] ip binding vpn-instance vpnb

    [PE2-Ethernet0/0/0] ip address 168.4.1.2 255.255.0.0

    [PE2-Ethernet0/0/0] quit

    配置LoopBack接口。

    [PE2] interface loopback0

    [PE2-LoopBack 0] ip address 202.100.1.3 255.255.255.255

    [PE2-LoopBack 0] quit

    配置MPLS基本能力,并在PE2P路由器相连的接口上使能MPLSLDP。建立LSP和实现MPLS报文转发。

    [PE2] mpls lsr-id 202.100.1.3

    [PE2] mpls

    [PE2] mpls ldp

    [PE2] interface Serial 2/0/0

    [PE2-Serial2/0/0] ip address 172.3.1.1 255.255.0.0

    [PE2-Serial2/0/0] mpls

    [PE2-Serial2/0/0] mpls ldp enable

    [PE2-Serial2/0/0] quit

    PE2P路由器相连的接口及loopback接口上启用OSPF,并引入直连路由。

    [PE2] ospf

    [PE2-ospf-1] area 0

    [PE2-ospf-1-area-0.0.0.0] network 172.3.0.0 0.0.255.255

    [PE2-ospf-1-area-0.0.0.0] network 202.100.1.3 0.0.0.0

    [PE2-ospf-1-area-0.0.0.0] import-route direct

    PEPE之间建立MP-IBGP邻居,进行PE内部的VPN路由信息交换。

    [PE1] bgp 100

    [PE1-bgp] group 202 internal

    [PE2-bgp] peer 202.100.1.1 group 202

    [PE2-bgp] peer 202.100.1.1 connect-interface loopback0

    [PE2-bgp] ipv4-family vpnv4

    [PE2-bgp-af-vpn] peer 202 enable

    [PE2-bgp-af-vpn] peer 202.100.1.1 group 202

    [PE2-bgp-af-vpn] quit

    4.3      P设备的配置

    配置P设备

    配置P路由器的MPLS基本能力,并在PPE相连的各接口上使能LDP,以转发MPLS报文。

    [P] mpls lsr-id 172.1.1.2

    [P] mpls

    [P] mpls ldp

    [P] interface Serial1/0/0

    [P-Serial1/0/0] ip address 172.1.1.2 255.255.0.0

    [P-Serial1/0/0] mpls

    [P-Serial1/0/0] mpls ldp enable

    [P-Serial1/0/0] interface Serial2/0/0

    [P-Serial2/0/0] ip address 172.2.1.2 255.255.0.0

    [P-Serial2/0/0] mpls

    [P-Serial2/0/0] mpls ldp enable

    PPE相连的各接口上启动OSPF协议,并引入直连路由,实现PE内部的互通。

    [P] ospf  1

    [P-ospf-1] area 0

    [P-ospf-1-area-0.0.0.0] network 172.1.1.0 0.0.255.255

    [P-ospf-1-area-0.0.0.0] network 172.2.1.0 0.0.255.255

    [P-ospf-1-area-0.0.0.0] quit

    [P-ospf-1] import-route direct