《电子技术应用》
您所在的位置:首页 > 通信与网络 > 业界动态 > 基于CISCO路由器的BGP/MPLS VPN的研究与实现

基于CISCO路由器的BGP/MPLS VPN的研究与实现

2008-04-09
作者:陶国芳

  摘 要: 针对BGP/MPLS VPN介绍其体系结构、数据的转发、路由协议" title="路由协议">路由协议等,并针对CISCO路由器进行了实例分析。
  关键词: 多协议" title="多协议">多协议标签交换 路由器 边界网关协议 虚拟专网(VPN)


  虚拟专网VPN(Virtual Private Network)是指在公用网络上建立专用网络的技术。整个VPN网络的任意两个节点之间的连接并没有传统专网所需的端到端的物理链路,而是架构在公用网络服务商所提供的网络平台(如Internet、ATM、Frame Relay等)之上的逻辑网络,用户数据在逻辑链路中传输。VPN通过隧道或虚电路等实现网络互联,支持用户安全管理,能够进行网络监控、故障诊断。
  目前,在VPN应用领域有两种主要架构:(1)融边界网关协议BGP(Border Gateway Protocol)和多协议标签交换MPLS(Multi-Protocol Label Switch)技术的VPN;(2)基于IPSec的VPN。本文主要讨论的是BGP/MPLS VPN的技术和实现。
1 MPLS VPN简介
  MPLS是由IETF提出的新一代IP骨干网" title="骨干网">骨干网络交换标准,是一种集成式的IP Over ATM技术。它融合了IP路由技术的灵活性和ATM交换技术的简洁性,在面向无连接的IP网络中引入了MPLS面向连接的属性,提供了类似于虚电路的标签交换业务。一个标签是一个短的、长度固定的数值,由报文的头部携带,不含拓扑信息,只有局部意义。MPLS包头的结构如图1所示。其中20bit的标签字段用来表示标签值;3bit的EXP用来实现CoS(Class of Service);1bit S值用来表示标签栈是否到底了,对于VPN、TE等应用将在第二层和第三层头之间插入两个以上的标签,形成标签栈;8bit TTL值用来防止数据在网上形成环路。


  RFC2547定义了允许ISP使用其IP骨干网为用户提供VPN服务的一种机制。RFC2547也被称为BGP/MPLS VPN,因为BGP被用来在提供商骨干网中发布VPN路由信息,而MPLS被用来将VPN业务从一个VPN站点转发至另一个站点。BGP/MPLS VPN又称为三层MPLS VPN,是一种基于路由方式的VPN解决方案。该技术不仅可以提供一种动态建立的隧道技术,还能够利用公用骨干网络强大的传输能力,极大地提高用户网络运营和管理的灵活性,同时能够满足用户对信息传输安全性、实时性、宽频带和方便性的需要。
2 BGP/MPLS VPN中几个重要的概念
2.1 VPN路由/转发

  BGP/MPLS VPN的安全举措之一就是路由隔离和信息隔离。它通过VRF(VPN Routing /Forwarding)表和MPLS中的LSP来实现。PE路由器上有多个VRF表。这些VRF表与PE路由器上的一个或多个子接口相对应,用于存放这些子接口所属VPN的路由信息。通常情况下,VRF表中只包含一个VPN的路由信息,但是当子接口属于多个VPN时,其对应的VRF表中则包含子接口所属的所有VPN的路由信息。对于每一个VRF表,都具有路由区分符RD(Route Distinguisher)和路由目标RT(Route Target)两大属性。
2.2 路由识别符
  VPN中IP地址的规划是由客户自行制订的,因而有可能会出现客户选择在RFC1918中定义的私有地址作为他们的站点地址或者不同的VPN使用相同的地址域。这会在路由解析时出现冲突,BGP/MPLS VPN使用VPN-IPv4地址族和多协议扩展BGP(MP-BGP)解决该问题。一个VPN-IPv4地址(12字节)由8字节的RD和4字节的IPv4地址组成,如图2所示。这样就可以把相同的地址前缀翻译成不同的VPN-IPv4地址,也就可以分别为每个VPN站点生成与该VPN-IPv4地址对应的不同路由。
  RD和VRF表之间建立了一一对应的关系。通常情况下每个VPN分配惟一的RD。但是对于重叠VPN,即某个站点属于多个VPN的情况,由于PE路由器上的某个子接口属于多个VPN,此时,该子接口所对应的VRF表只能被分配一个RD,从而多个VPN共享一个RD。

 


2.3 路由目标
  RT的本质就是BGP的community属性的扩展,扩展的community有两种格式,如图3所示。其中type字段为0x0002或者0x0102时表示RT。RT用于路由信息的分发,具有全局惟一性,且只能被一个VPN使用。它分成Import RT和Export RT,分别用于路由信息的导入和导出策略。当从VRF表中导出VPN路由时,要用Export RT对VPN路由进行标记;当向VRF表中导入VPN路由时,只有所带RT标记与VRF表中任意一个Import RT相符的路由才会被导入VRF表中。RT使得PE路由器只包含与其直接相连的VPN的路由,而不是全网所有VPN的路由,从而节省了PE路由器的资源,提高了网络拓展性。
3 BGP/MPLS VPN体系结构
3.1 BGP/MPLS VPN模型介绍

  BGP/MPLS VPN示意图如图4所示。在RFC2547中定义了三种类型的路由器:用户网边缘路由器CE在用户侧为用户所有,接收和分发用户网络路由,CE连接到提供商的骨干网边缘路由器PE;PE处理VPN-IPv4路由,是BGP/MPLS VPN的核心;位于骨干网核心的P路由器负责MPLS包的转发。


  VPN是若干个用户站点的集合,而站点是VPN中一个孤立的IP网络,例如可以是公司总部或分支机构等。用户接入BGP/MPLS VPN的方式是每个站点提供一个或多个CE同骨干网PE的连接,每个站点在PE中由各个VRF来表示,它包含了与一个站点相关的路由表、转发表、接口、路由实例以及路由策略等。PE上的接口可以绑定" title="绑定">绑定到惟一的VRF上,一个VRF也可以被绑定到多个接口上,但PE之间不能交换VRF信息。
  BGP/MPLS VPN中有两种重要的数据流:一种是进行路由分发和LSP(标记转发路径)确定的控制流;另一种是用户的VPN业务流。存在两种控制机制:一种负责不同PE间路由信息的交换;另一种负责建立通过提供商骨干网的LSP。
3.2 数据转发过程
  在MPLS网络中传输的VPN数据采用隧道标签(外标签)和VPN标签(内标签)两层标签栈结构,它们分别对应于两个层面的路由:域内路由和VPN路由。域内路由即MPLS中的LSP,是由PE和P路由器通过运行标签分发协议LDP(Label Distribution Protocol)或资源预留协议RSVP(Resource Reservation Protocol)建立的。它所产生的标签转发表用于VPN分组外层标签的交换。VPN路由是由PE路由器之间通过运行MP-iBGP建立的。该协议跨越骨干网的P路由器分发VPN标签形成VPN路由。在PE路由器上除了VRF表外,还有MPLS路由表。该表用于存放VPN标签和子接口的对应关系,为出口PE路由器到CE路由器之间的数据转发提供依据。
  具体数据转发过程如下:当CE路由器通过某个子接口将一个VPN分组发给入口PE路由器后,PE路由器查找该子接口对应的VRF表,从VRF表中得到VPN标签、初始外层标签以及到出口PE路由器的输出接口。当VPN分组被打上两层标签之后,就通过输出接口发送到相应LSP上的第一个P路由器。骨干网中P路由器根据外层标签逐跳转发VPN分组,直至最后一个P路由器弹出外层标签,将只含有VPN标签的分组转发给出口PE路由器。出口PE路由器根据VPN标签,查找MPLS路由表得到对应的输出接口,在弹出VPN标签后通过该接口将VPN分组发送给正确的CE路由器,从而实现整个数据转发过程。特别地,当出口PE路由器和入口PE路由器是同一个路由器时,PE路由器对收到的VPN分组将不经过任何处理直接转发给目的CE路由器。
3.3 路由信息分发过程
  在MPLS VPN中,因为采用了两层标签栈结构,所以P路由器并不参与VPN路由信息的交互。客户路由器通过CE和PE路由器之间、PE路由器之间的路由交互知道属于某个VPN的网络拓扑信息。
  (1)CE-PE之间的路由信息分发。CE-PE之间通过采用静态/缺省路由、IGP(RIPv2、OSPF)等动态路由协议,或建立EBGP连接等方式进行路由信息的交互。当入口PE路由器从某个子接口接收到来自CE路由器的路由信息时,除了将该路由导入对应的VRF表,PE路由器还要为该路由分配一个VPN标签。该VPN标签用以识别接收路由信息的子接口。因此从同一个子接口接收到的路由信息将被分配同样的VPN标签,从而PE路由器可以将收到的VPN分组转发到合适的子接口。
  (2)PE-PE之间的路由信息分发。PE-PE之间通过采用MP-iBGP进行路由信息的交互。PE路由器通过维持iBGP网状连接或使用路由反射器来确保路由信息被分发给所有的PE路由器。当入口PE路由器分发路由信息时,将同时携带路由所在VRF表的RD,即将路由的IPv4地址转化为VPN-IPv4地址。分发的具体路由信息包括该路由的VPN-IPv4地址前缀、下一跳BGP即入口PE路由器的VPN-IPv4地址(其中RD=0)、分配给该路由的VPN标签和该路由所在VRF表的Export RT。该路由信息被称为带有标签的VPN-IPv4路由信息。
  当出口PE路由器收到路由信息时,将查看该路由的RT,如果RT与其任意VRF表中任意一个Import RT相符,就将该路由存入VPN-IPv4的RIB表。在路由选择之后,将最优路由中的VPN-IPv4地址转化成IPv4地址,即去掉地址中的RD,导入到相应的VRF表中。
4 基于Cicso产品的BGP/MPLS VPN实例介绍
  目前支持MPLS的设备不少,而Cicso路由器在网络建设的高端产品中使用最广,其中26、72等系列均支持MPLS功能。杭州师范学院于2004年建设了一个基于Cisco路由器和交换机的网络通信实验室,现有Cisco路由器10台。下面以Cisco路由器为例,介绍相关路由器的配置。


4.1 配置描述
  BGP/MPLS VPN的网络物理结构图如图5所示。VPN的关键是让CE之间能互相学习到私网路" title="网路">网路由,并能根据学习到的私网路由在公网上转发报文。为了能让私网路由发布到远端CE,首先需要将本地CE的私网路由传递到本地PE,然后再由本地PE发布到远端PE,最后由远端PE传递到远端CE。PE、CE之间的私网路由传递可以通过CE与PE之间建立M-EBGP邻居、扩展RIP以及配置静态路由等方式来实现。PE之间的私网路由传递需要通过建立M-IBGP邻居来实现;为了能让私网流量在公网上转发报文,需要在PE、P之间建立MPLS LDP邻居并建立LSP隧道,这样私网流量就可通过隧道在公网上转发。
  配置的大致步骤如下:
  (1)配置PE路由器、P路由器上的MPLS基本能力,使它们能为私网流量建立LSP隧道。
  (2)在PE路由器上配置VPN实例,并绑定在与CE相连的端口上。
  (3)配置PE路由器、P路由器上的IGP协议,使它们能相互学习到其他路由器上的路由,尤其是Loopback地址的路由。因为PE之间的M-IBGP邻居必须通过Loopback接口来建立。
  (4)配置M-BGP协议,包括PE之间的IBGP邻居以及PE和CE之间的EBGP邻居。
4.2 具体配置信息
  在图5中,PE1-router(lo0地址为10.10.10.10/32)通过接口S0/1(172.16.1.1/24)与CE1(172.16.1.2/24)连接;PE2-router(lo0地址为11.11.11.11/32)通过接口S0/1(172.16.2.1/24)与CE2(172.16.2.2/24)连接。形成的VPN逻辑关系视图如图6所示。
  各个路由器的具体配置信息介绍如下:
  (1)PE1-router的关键配置(与P-router2的具体配置相似)。
  hostname PE1-router
  !
  ip cef       //启用CEF转发功能
  !
  ip vrf site1    //定义一个VRF,名字为site1
  rd 100:12     //定义rd的值
  route-target export 100:12 //定义导出策略
  route-target import 100:12 //定义导入策略
  !
  interface lo0
  ip address 10.10.10.10 255.255.255.255
  !
  interface Serial0/1        //配置端口
  ip vrf forwarding site1//把该接口和VRF Site1联系起来
  ip address 172.16.1.1 255.255.255.0//分配Ipv4地址
  encapsulation ppp        //封装PPP协议
  no ip directed-broadcast
  !
  router bgp 6500         //配置BGP路由协议
  bgp log-neighbor-changes
  neighbor 11.11.11.11 remote-as 6500
  //配置和CE1间的路由协议BGP
  neighbor 11.11.11.11 update-source Loopback0
  !
  address-family ipv4 vrf site1//为VPN用户配置Ipv4
  //地址家族
  neighbor 172.16.1.2 remote-as 6501//和PE2建立
  //邻居关系
  neighbor 172.16.1.2 active//激活MP-iBGP邻居关系
  exit-address-family
  !
  address-family vpnv4
  neighbor 11.11.11.11 active
  neighbor 11.11.11.11 send-community extended
  exit-address-family
  !
  (2)CE2配置。
  router ospf 100//网内配置OSPF路由协议
  network 13.13.13.13 0.0.0.0 area 0
  network 192.168.13.20 0.0.0.255 area 0
  network 192.168.13.30 0.0.0.255 area 0
  !
  router bgp 6502//配置和PE2间的BGP路由协议
  redistribute ospf 100
  neighbor 172.16.2.1 remote-as 6500
  !
  BGP/MPLS VPN很好地融合了MPLS和BGP的优点。BGP协议是惟一支持大量路由的路由协议。BGP/MPLS VPN解决了纯三层IP VPN所不能解决的地址重叠和重叠VPN的问题;作为PP-VPN,提高了用户网络管理效率,降低了用户在网络管理方面的投入;具有良好的网络拓展性,解决了传统VPN在实现用户节点全网状连接时的网络第二层问题;具有较高的安全性,MPLS骨干不负责维护任何VPN路由,只进行标签交换,因此其安全性与二层的ATM技术相当。BGP/MPLS VPN可以作为传统的基于二层专线的VPN、纯三层的IP VPN和隧道方式的VPN的替代技术。
参考文献
1 Cisco.MPLS VPN over ATM:with OSPF on the customer side(with Area0).http://www.cisco.com/ en/US/tech/tk436/tk798/technologies_configuration_ex ample09186a0080093f82.shtml,2002
2 韩 波,沈富可.BGP/MPLS VPN在NS-2中的实现.计算机应用,2006;(26)4:980~982
3 Rosen E,Rekhter Y.BGP/MPLS VPNs.RFC 2547,2002
4 Solie K著,李 津,卓 林译.CCIE实验指南.北京:人民邮电出版社,2002
5 Pepelnjak I,Guichard J著,信达工作室译.MPLS和VPN体系结构.北京:人民邮电出版社,2002
6 董 玲,黄 杨.BGP/MPLS VPN实现细节探讨.计算机工程与应用,2005;41(29):117~119

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。