1、既然是VPN 其所完成的功能以及达到的目的和传统的VPN 是一样的,只是基于MPLS 的IPVPN 和传统的IP VPN 相比有很多优势。如对于VPN 用户而言,它可以大大简化用户的管理工作量,不再需要使用专门的VPN 设备(如VPN 拨入服务器)只需要使用传统的路由器就可以构建VPN。对于运营商而言,采用MPLS VPN 很容易实现VPN的扩展,同时给运营商带来更大的商机。这里解释一下为什么是叫BGP/MPLS VPN呢?这是因为MPLS应用于Layer 3的VPN中要使用BGP作为MPLS的标签分发协议,就好比MPLS 应用于IP单播转发中必须使用LDP作为其标签分发协议,使用BGP协议在
2、服务提供商网络的PE之间交换VPN路由以及绑定的标签。2 BGP/MPLS VPN架构图2-1在 MPLS VPN 的连接模型中,网络由运营商的骨干网与用户的各个Site组成,所谓VPN 就是对site集合的划分,一个VPN 就对应一个由若干site组成的集合。2.1 组成原理1. MPLS VPN 的网络构造由服务提供商来完成。在这种网络构造中,由服务提供商向用户提供VPN 服务,用户感觉不到公共网络的存在,就好像拥有独立的网络资源一样。2. 同样对于服务提供商骨干网络内部的P 路由器,也就是不与CE 直接相连的路由器而言,也不知道有VPN 的存在,仅仅负责骨干网内部的数据传输。但其必须能够
3、支持MPLS协议,并使能该协议。3. 所有的VPN 的构建、连接和管理工作都是在PE 上进行的。PE 位于服务提供商网络的边缘,从PE 的角度来看,用户的一个连通的IP 系统被视为一个site ,每一个site通过CE与PE 相连,site 是构成VPN 的基本单元。4. 一个VPN 是由多个site组成的,一个site 也可以同时属于不同的VPN。属于同一个VPN的两个site通过服务提供商的公共网络相连,VPN 数据在公共网络上传播,必须要保证数据传输的私有性和安全性。也就是说,从属于某个VPN 的site发送出来的报文只能转发到同样属于这个VPN 的site 里去,而不能被转发到其他si
4、te 中去。5. 同时,任何两个没有共同的site 的VPN 都可以使用重叠的地址空间,即在用户的私有网络中使用自己独立的地址空间,而不用考虑是否与其他VPN 或公网的地址空间冲突。所有这些就都需要依赖于VRF(VPN Routing & Forwarding Instance)。3 BGP MPLS/VPN原理在一个MPLS VPN 网络中,需要解决以下三个问题:1. 本地路由冲突问题,即:在同一台PE 上如何区分不同VPN 的相同路由。2. 路由在网络中的传播问题,两条相同的路由,都在网络中传播,对于接收者如何分辨彼此?3. 报文的转发问题,即使成功的解决了路由表的冲突,但是当PE 接收到
5、一个IP报文时,他又如何能够知道该发给那个VPN?因为IP报文头中唯一可用的信息就是目的地址。而很多VPN 中都可能存在这个地址。3.1 VRF-VPN路由转发实例(VPNRouting&ForwardingInstance)其实解决地址冲突的问题,也存在一些方法:使用ACL、IP unnumber、NAT。但这些办法都是基于“打补丁”的思想,没能从本质上解决问题。要想彻底解决,必须在理论上有所突破。可以从专用PE 上得到启示。专用路由器方式分工明确,每个PE只保留自己VPN 的路由。P只保留公网路由。而现在的思路是:将这些所有设备的功能,和在一台PE 上完成。图3-1每一个VRF 可以看作虚
6、拟的路由器,好像是一台专用的PE 设备。该虚拟路由器包括如下元素: 一张独立的路由表,当然也包括了独立的地址空间。 一组归属于这个VRF的接口的集合。 一组只用于本VRF的路由协议。对于每个PE,可以维护一个或多个VRF,同时维护一个公网的路由表(也叫全局路由表),多个VRF实例相互分离独立。其实实现VRF并不困难,关键在于如何在PE 上使用特定的策略规则来协调各VRF和全局路由表之间的关系。3.2 VRF的路由分发图3-2像图中所示,属于一个VPN 的site可能分别连接到不同的PE 上。为了保证VPN 的连通性,我们必须在PE之间交换VPN 路由信息。VPN 路由拥有自己独立的地址空间,这
7、种路由在服务提供商的公共网络中传递不能采用普通地址结构,否则会因为地址空间的重叠导致路由表的混乱,而是通过RD 与IP地址一起构成唯一的VPN-IPV4 地址结构来传递。同时在PE 之间也不能采用普通的路由协议,而是通过对BGP作一定的扩展,使用多协议BG(MultiProtocolBGP)来交换VPN 信息。这些在下一部份将会讲到。3.3 RD-路由标识(Route Distinguisher)VPN-IPv4地址在前面提到过,PE 之间通过公共网络交换VPN 路由,不能采用普通的地址结构和路由协议。因此,首先引入RD(Route Distinguisher)的概念。RD 来标示每个VRF。
8、RD 与VRF 是一一对应的,每一个VRF 都有自己的RD,RD 在骨干网中保持唯一性,是Site的标识。PE 路由器之间使用BGP 来发布VPN 路由。标准BGP 对每个IP 前缀只能安装和发布一个路由。由于每个VPN 有自己的地址空间,意味着同样的IP 地址会被任意数目的VPN 所使用,在每个VPN 中这个地址表示一个不同的系统。这样就需要允许BGP 对每个VPN 的相同的IP 前缀可以安装和发布多个路由,同时,要使用特定的策略来决定哪一条路由被哪个site 所使用。为此,多协议BGP 使用了新的地址族-VPN-v4 地址。图3-3一个VPN-v4 地址有12 个字节,开始是8 字节的RD
9、,接下去是4 字节的IP地址。如果两个VPN 使用相同的IP地址,PE路由器为它们添加不同的RD,转换成唯一的VPN-v4 地址,不会造成地址空间的冲突。使用VPN-v4 地址解决了VPN 路由在公共网络中传递时的地址空间冲突问题,但由于这已经不再是原有的IP 地址族的地址结构,不能被普通的路由协议所承载,同时,每一个用户网络都是独立的系统,它们之间经过服务提供商的路由信息传递使用IGP 协议显然是不适合的,于是我们需要将BGP 协议作一定的扩展,用它来承载新的VPN-v4 地址族路由,同时传递附加在路由上的Route Target属性。通过RD 与VPN-IPv4 地址,解决了路由在网络中的
10、传播,两条相同的路由,都在网络中传播,对于接收者如何分辨彼此问题。3.4 BGP扩展与Route Target属性PE 之间交换VPN 信息,在BGP的UPDATE 报文中承载VPN-v4 地址族路由,这就是对BGP进行了扩展的MBGP(多协议BGP)。MBGP不仅能承载IPv4路由,而且能承载VPN,IPv6,多播等路由。MBGP 有两个主要的工作,为路由指定特定网络层协议的下一跳和NLRI(网络层可达信息)。图3-4BGP 扩展团体属性是对团体属性做了扩展,增大了值域,并规定了内部结构。扩展团体属性是一个过渡可选属性,它由一个扩展团体的集合组成,每个扩展团体是8字节的数。Route Tar
11、get属性是由BGP的扩展团体属性来表示的。Route Target 属性VPN 的成员关系是通过路由所携带的route target属性来获得的。PE 中每个Site的路由表中的路由项可以有一或多个Route Target 属性。它表示了该路由可以被哪些site 所接收,接收哪些site的传送来的路由。一个具有这种属性的路由必须发送给所有在Route Target中指明的site所连接的PE 路由器,PE 接收到包含此属性的路由后,若此属性指明的site同己一致,则加入到相应的路由表中。RT的本质是每个VRF表达自己的路由取舍及喜好的方式。可以分为两部分:Export Target与impo
12、rt Target;前者表示了我发出的路由的属性,而后者表示了我对那些路由感兴趣。例如: SITE-A:我发的路由是红色的,我也只接收红色的路由。 SITE-B: SITE-C:我发的路由是黑色的,我也只接收黑色的路由。 SITE-D:这样,SITEA 与SITE-B 中就只有自己和对方的路由,两者实现了互访。同理SITEC 与SITE-D 也一样。这时我们就可以把SITE-A与SITEB称为VPN-A,而把SITE-C与SITE-D称为VPN-B,如下图:图3-5对一个PE,有一个Route Target属性的集合用于附加到从某个site接收的路由上,称为ExportRoute Target
13、,另一个Route Target属性的集合用于决定哪些路由可以引入到此site的路由表中,称为Import Route Target。它们是不同的集合。这两个集合的组合可以构造任何拓扑类型的VPN。在 PE 上,每个VRF都有一个Import Route Target列表,只有当路由的Export Route Target与VRF的Import Route Target列表相匹配,路由才会被引入到该VRF的路由表中。RT 的灵活应用由于每个RT Export Target与import Target都可以配置多个属性,例如:我对红色或者蓝色的路由都感兴趣。接收时是“或”操作,红色的、蓝色的以及
14、同时具备两种颜色的路由都会被接受。所以就可以实现非常灵活的VPN 访问控制。图3-63.5 私网标签至此,前两个问题:在PE 本地的路由冲突和网络传播过程的冲突都已解决。但是如果一个PE的两个本地VRF同时存在10.0.0.0/24的路由,当他接收到一个目的地址为10.0.0.1的报文时,他如何知道该把这个报文发给与哪个VRF 相连的CE?肯定还需要在被转发的报文中增加一些信息。路由发布时已经携带了RD,理论上可以使用RD 作为标识呢,但是RD 一共有64 个bit,太大了。这会导致转发效率的降低。所以只需要一个短小、定长的标记即可。由于公网的隧道已经由MPLS来提供,而且MPLS支持多层标签
15、的嵌套,这个标记定义成MPLS标签的格式。这个私网的标签就由MP-BGP来分配,与私网的路由一同发布出去。3.6 BGP发布路由时需要携带的信息一个扩展之后的NLRI(Network Layer Reachability Information),增加了地址族的描述,以及私网label和RD。跟随之后的是RT的列表对于使用了扩展属性MP_REACH_NLRI的BGP,我们称之为MP-BGP。4 BGP MPLS/VPN路由分发、报文转发机制在 MPLS VPN 中,因为采用了两层标签栈结构,所以P并不参与VPN 路由信息的交互,VPN站点内部是通过CE 与PE、PE 与PE 之间的路由交互知道
16、属于某个VPN 的网络拓扑信息。具体可以归纳为如下3 个步骤:1. CE 与PE 之间的路由交换2. PE 与PE 之间的路由交换3. PE 与CE 之间的路由交换4.1 CE与PE之间的路由交换在 PE 上为不同的VPN 站点配置VRF。PE 上维护多个独立的路由表,包括公网和私网路由表(VRF),其中:1. 公网路由表:包含到达其他PE 和P的路由,由骨干网的IGP产生。2. 私网路由表:包含本VPN 可到达的路由(即属于该VPN 的不同站点之间的路由)。图4-1CE 与PE 之间通过采用静态路由、动态路由协议(如OSPF,RIP)进行路由信息的交互。当Ingress PE 从某个接口接收
17、到来自CE 的路由信息时,将该路由导入对应的VRF。4.2 PE与PE之间的路由交换PE 与PE 之间的路由交换本质上就是将PE 上得VRF 路由注入到MP-IBGP 并通过MP-IBGP在 PE 间交换的过程。图4-2PE 通过维持IBGP确保路由信息被分发给所有其它的PE。当Ingress PE 分发路由信息时,将同时携带路由所在VRF的RD,即将路由的IPv4地址前缀转化为VPN-IPv4 地址。分发的具体路由信息(VPN-IPv4 路由信息)包括: 该路由的VPN-IPv4 地址前缀 下一跳地址即Ingress PE的VPN-IPv4地址(通常是PE上的Loopback接口地址,其RD
18、=0) 分配给该路由的VPN 标签(用来标识属于哪个VPN或者说是哪个VRF) 该路由所在VRF的Export RT4.3 PE与CE之间的路由交换PE 与CE 之间的路由交换即为MP-IBGP 把路由注入到PE 上的VRF 然后通过PE 与CE 上运行的路由协议再分发给CE 的过程。图4-3当 Egress PE 收到路由信息时,将查看该路由的RT,如果RT和其任意VRF中任意一个ImportRT相符时,就将该路由存入VPN-IPv4 的路由表。在进行路由选择之后,将最优路由中的VPN-IPv4 地址转化成IPv4地址(即去掉地址中的RD)导入到相应的VRF,私网标签保留,记录到转发表中,留
19、做转发时使用。再由本VRF的路由协议引入并传递给相应的CE。发给CE 时下一跳为接收端PE 自己的接口地址。这样就完成了从MP-IBGP路由注入到VRF的过程。4.4 MPLS/VPN 报文转发图4-4在 MPLS VPN 中,属于同一的VPN 的两个Site 之间转发报文使用两层标签来解决,在入口PE 上为报文打上两层标签,第一层(外层)标签在骨干网内部进行交换,代表了从PE 到对端PE 的一条隧道,VPN 报文打上这层标签,就可以沿着LSP到达对端PE,这时候就需要使用第二层(内层)标签,这层标签指示了报文应该到达哪个site,或者更具体一些,到达哪一个CE,这样,根据内层标签,就可以找到
20、转发的接口。可以认为,内层标签代表了通过骨干网相连的两个CE 之间的一个隧道。5 BGP/MPLS IP VPN标准体系发展IETF 已经在2004 年成立了L3VPN 的工作组专门研究L3VPN 的技术和应用,这里主要讲与BGP/MPLS VPN最直接相关的RFC,BGP/MPLS IPVPN的技术最早由IETF在1999年在RFC2547 提出,后来出了一个修订版叫RFC2547bis,现有的网络设备提供商实现的BGP/MPLSVPN 都是根据RFC2547bis实现的。随着该技术被各个网络设备厂商支持并应用,该技术已经被实践证明比较成熟。2006年IETF根据这些年在应用过程中的实践总结
21、进一步完善了该技术,重新发布了RFC4364并声明废弃了RFC2547。RFC4364里面详细阐述了BGP/MPLS IP VPNs的架构、技术实现和部署。另外由于BGP/MPLS IP VPNs的技术实现需求,对BGP协议的特性进行了大量的扩展,主要包括: RFC2858 Multiprotocol Extensions for BGP-4 支持多协议扩展的BGP draft-ietf-idr-as4bytes AS号由原来的2 字节变为4 字节的处理 RFC1997 BGP Communities Attribute BGP的团体属性 RFC2918 Route Refresh Capab
22、ility for BGP-4 BGP的刷新机制 draft-ietf-idr-route-filter Cooperative Route Filtering Capability for BGP-4 BGP的ORF机制 RFC2796 BGP Route Reflection BGP的路由反射器实现 RFC3107 Carrying Label Information in BGP-4 如何在BGP中携带MPLS标签 RFC4360 BGP Extended Communities Attribute BGP的扩展团体属性使用BGP/MPLS实现的Layer3 VPN 主要有如下特点: V
23、PN 的隧道是在网络服务提供商的PE 上建立的,而不是在用户的CE 之间建立的。VPN的路由也是在PE 和PE 之间传递,而不在CE 之间传递。这样用户就不需要发什么精力维护自己的VPN。BGP/MPLS IPVPN 也属于服务商提供的VPN 技术,对于服务商提供的VPN,IETF给其了一个术语叫Provider Provisioned VPN,简称为PPVPN 把VPN 隧道的部署及路由发布变为动态实现,这样有利于VPN 的规模扩大,可以很容易实现添加一个新的VPN 或者是新的站点加入到一个现有的VPN 中。 支持地址重叠(不同VPN 可以使用相同的地址空间)。 在服务提供商的网络中,VPN 的业务流使用标签交换转发而不是传统的路由转发。 能够达到和用户租用专线一样的安全性。 可以利用MPLS技术实现流量工程,支持用户的各种Qos 需求。由于基于MPLS技术的VPN 有其固有的优点是传统VPN 技术无法比拟的,因此MPLS VPN技术是未来构建VPN 的发展方向,会越来越受到客户和运营商的关注。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1