1 概述
1.1 MPL VPN技术背景
VPN(Virtual Private Network)的概念最早是从专线引发的。先举一个例子说明为什么需要VPN,例如一个公司在全国各地都有分公司,那么通常它必须租用专线实现企业内部的互联网络,这种方式需要在两地或多个地点之间租用长途线路,不论是否有数据传输这条长途线路都固定分配,用户付出的代价很高。专线网络具有以下特点:
1. 安全性高,线路为用户专用,不同用户间是物理隔离的;
2. 价格昂贵;
3. 带宽浪费严重;
由于专线网络具有的一些固有缺陷,VPN的目的就是通过公用网络将异地的网点互联实现一个私有网就像用专线联接起来的一样。其实现的方式就是在公网上建立某种形式的链路作为IP的隧道进行异地网点互联。在公网上实现VPN ,用户只需要付出到网络服务提供商的本地线路费用,并且在没有数据传输时可以断开连接进一步节省了开销。
1.2 VPN定义
顾名思义,虚拟专用网(Virtual Private Network)不是真的专用网络,但却能够实现专用网络的功能。所谓虚拟,是指用户不再需要拥有实际的长途数据线路,而是使用服务提供商现成网络的数据线路(通过使用隧道技术)。所谓专用网络,是指用户可以为自己制定一个最符合自己需求的网络,就像是私有的网络一样。
1.3 BGP/MPLS VPN
我们知道实现VPN的方式有很多种,例如有基于第二层隧道协议(L2TP)的VPN,也有基于第三层隧道协议(如IPSec)的VPN。而BGP/MPLS IP VPN是另外一种实现VPN的方式,可以说它是一种介于第二层和第三层隧道协议的VPN,这主要是由MPLS决定的。
既然是VPN其所完成的功能以及达到的目的和传统的VPN是一样的,只是基于MPLS的IP VPN和传统的IP VPN相比有很多优势。如对于VPN用户而言,它可以大大简化用户的管理工作量,不再需要使用专门的VPN设备(如VPN拨入服务器)只需要使用传统的路由器就可以构建VPN。
对于运营商而言,采用MPLS VPN很容易实现VPN的扩展,同时给运营商带来更大的商机。
这里解释一下为什么是叫BGP/MPLS VPN呢?这是因为MPLS应用于Layer 3的VPN中要使用BGP作为MPLS的标签分发协议,就好比MPLS应用于IP单播转发中必须使用LDP作为其标签分发协议,使用BGP协议在服务提供商网络的PE之间交换VPN路由以及绑定的标签。
2 BGP/MPLS VPN架构
图2-1
在MPLS VPN的连接模型中,网络由运营商的骨干网与用户的各个Site组成,所谓VPN就是对site集合的划分,一个VPN就对应一个由若干site组成的集合。
2.1 术语
先引入几个概念:
CE(Custom Edge):用户Site中直接与服务提供商相连的边缘设备,一般是路由器
PE(Provider Edge):骨干网中的边缘设备,它直接与用户的CE相连
P 路由器(Provider Router):骨干网中不与CE直接相连的设备
VPN Site:VPN用户的站点,是VPN中的一个孤立的IP网络,该网络内部本身是IP互联的,但是和其它站点(或者是子网)一般来说不通过骨干网不具有连通性。公司总部,分支机构都是site的具体例子。CE通常是VPN Site中的一个路由器或三层交换设备甚至是一个主机。一个CE设备总是被认为处于一个单独的站点,但是一个站点可以同时属于多个VPN。
VRF:每个PE都维护和管理一系列的转发表, 其中一个转发表叫做“缺省的转发表”或者叫“全局转发表”;其它的转发表叫“VPN 路由转发表(VPN Routing and Forwarding tables)”。如果一个报文通过AC到达PE,该AC没有同任何VRF关联的话,那么将使用全局的路由表为该报文的目的地址查找路由。可以简单的理解为,全局的转发表存放的是公网的路由(保证SP网络中本身PE和PE,PE和P之间能够互通),VRF存储的是VPN站点的私有路由。
2.2 组成原理
1. MPLS VPN的网络构造由服务提供商来完成。在这种网络构造中,由服务提供商向用户提供VPN服务,用户感觉不到公共网络的存在,就好像拥有独立的网络资源一样。
2. 同样对于服务提供商骨干网络内部的 P 路由器,也就是不与CE 直接相连的路由器而言,也不知道有VPN的存在,仅仅负责骨干网内部的数据传输。但其必须能够支持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 里去,而不能被转发到其他site 中去。
5. 同时,任何两个没有共同的site 的VPN都可以使用重叠的地址空间,即在用户的私有网络中使用自己独立的地址空间,而不用考虑是否与其他VPN或公网的地址空间冲突。所有这些就都需要依赖于VRF(VPN Routing & Forwarding Instance)。
3 BGP MPLS/VPN原理
在一个MPLS VPN网络中,需要解决以下三个问题:
1. 本地路由冲突问题,即:在同一台PE上如何区分不同VPN的相同路由。
2. 路由在网络中的传播问题,两条相同的路由,都在网络中传播,对于接收者如何分辨彼此?
3. 报文的转发问题,即使成功的解决了路由表的冲突,但是当PE接收到一个IP报文时,他又如何能够知道该发给那个VPN?因为IP报文头中唯一可用的信息就是目的地址。而很多VPN中都可能存在这个地址。
3.1 VRF-VPN路由转发实例(VPN Routing & Forwarding Instance)
其实解决地址冲突的问题,也存在一些方法:使用ACL、IP unnumber、NAT。但这些办法都是基于“打补丁”的思想,没能从本质上解决问题。
要想彻底解决,必须在理论上有所突破。可以从专用PE上得到启示。专用路由器方式分工明确,每个PE只保留自己VPN的路由。P只保留公网路由。而现在的思路是:将这些所有设备的功能,和在一台PE上完成。
图3-1
每一个VRF可以看作虚拟的路由器,好像是一台专用的PE设备。该虚拟路由器包括如下元素:
一张独立的路由表,当然也包括了独立的地址空间。
一组归属于这个VRF的接口的集合。
一组只用于本VRF的路由协议。
对于每个PE,可以维护一个或多个VRF,同时维护一个公网的路由表(也叫全局路由表),多个VRF实例相互分离独立。
其实实现VRF并不困难,关键在于如何在PE上使用特定的策略规则来协调各VRF和全局路由表之间的关系。
3.2 VRF的路由分发
图3-2
如图中所示,属于一个VPN的site可能分别连接到不同的PE上。 为了保证VPN的连通性,我们必须在PE之间交换VPN路由信息。 VPN路由拥有自己独立的地址空间,这种路由在服务提供商的公共网络中传递不能采用普通地址结构,否则会因为地址空间的重叠导致路由表的混乱,而是通过RD与IP地址一起构成唯一的VPN-IPV4地址结构来传递。同时在PE之间也不能采用普通的路由协议,而是通过对BGP作一定的扩展,使用多协议BGP(MultiProtocol BGP)来交换VPN信息。这些在下一部份将会讲到。
3.3 RD--路由标识(Route Distinguisher)与VPN-IPv4地址
在前面提到过,PE之间通过公共网络交换VPN路由,不能采用普通的地址结构和路由协议。因此,首先引入RD(Route Distinguisher)的概念。
RD来标示每个VRF。 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,接下去是4字节的IP地址。如果两个VPN使用相同的IP地址,PE路由器为它们添加不同的RD,转换成唯一的VPN-v4地址,不会造成地址空间的冲突。
使用VPN-v4地址解决了VPN路由在公共网络中传递时的地址空间冲突问题,但由于这已经不再是原有的IP地址族的地址结构,不能被普通的路由协议所承载,同时,每一个用户网络都是独立的系统,它们之间经过服务提供商的路由信息传递使用IGP协议显然是不适合的,于是我们需要将BGP协议作一定的扩展,用它来承载新的VPN-v4地址族路由,同时传递附加在路由上的Route Target属性。
通过RD与VPN-IPv4地址,解决了路由在网络中的传播,两条相同的路由,都在网络中传播,对于接收者如何分辨彼此问题。
3.4 BGP扩展与Route Target属性
PE之间交换VPN信息,在BGP的UPDATE报文中承载VPN-v4地址族路由,这就是对BGP进行了扩展的MBGP(多协议BGP)。MBGP不仅能承载IPv4路由,而且能承载VPN,IPv6,多播等路由。 MBGP有两个主要的工作,为路由指定特定网络层协议的下一跳和NLRI(网络层可达信息)。
图3-4
BGP扩展团体属性是对团体属性做了扩展,增大了值域,并规定了内部结构。扩展团体属性是一个过渡可选属性,它由一个扩展团体的集合组成,每个扩展团体是8字节的数。Route Target属性是由BGP的扩展团体属性来表示的。
Route Target 属性
VPN的成员关系是通过路由所携带的route target属性来获得的。 PE中每个Site的路由表中的路由项可以有一或多个Route Target属性。 它表示了该路由可以被哪些site所接收,接收哪些site的传送来的路由。
一个具有这种属性的路由必须发送给所有在Route Target中指明的site所连接的PE路由器,PE接收到包含此属性的路由后,若此属性指明的site同己一致,则加入到相应的路由表中。
RT的本质是每个VRF表达自己的路由取舍及喜好的方式。可以分为两部分:Export Target与import Target;前者表示了我发出的路由的属性,而后者表示了我对那些路由感兴趣。例如:
SITE-A:我发的路由是红色的,我也只接收红色的路由。
SITE-B:我发的路由是红色的,我也只接收红色的路由。
SITE-C:我发的路由是黑色的,我也只接收黑色的路由。
SITE-D:我发的路由是黑色的,我也只接收黑色的路由。
这样,SITE-A与SITE-B中就只有自己和对方的路由,两者实现了互访。同理SITE-C与SITE-D也一样。这时我们就可以把SITE-A与SITE-B称为VPN-A,而把SITE-C与SITE-D称为VPN-B,如下图:
图3-5
对一个PE,有一个Route Target属性的集合用于附加到从某个site接收的路由上,称为Export Route Target,另一个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都可以配置多个属性,例如:我对红色或者蓝色的路由都感兴趣。接收时是“或”操作,红色的、蓝色的以及同时具备两种颜色的路由都会被接受。所以就可以实现非常灵活的VPN访问控制。
图3-6
3.5 私网标签
至此,前两个问题:在PE本地的路由冲突和网络传播过程的冲突都已解决。但是如果一个PE的两个本地VRF同时存在10.0.0.0/24的路由,当他接收到一个目的地址为10.0.0.1的报文时,他如何知道该把这个报文发给与哪个VRF相连的CE?肯定还需要在被转发的报文中增加一些信息。
路由发布时已经携带了RD,理论上可以使用RD作为标识呢,但是RD一共有64个bit,太大了。这会导致转发效率的降低。所以只需要一个短小、定长的标记即可。由于公网的隧道已经由MPLS来提供,而且MPLS支持多层标签的嵌套,这个标记定义成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之间的路由交互知道属于某个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-1
CE与PE之间通过采用静态路由、动态路由协议(如OSPF,RIP…)进行路由信息的交互。 当Ingress PE从某个接口接收到来自CE的路由信息时,将该路由导入对应的VRF。
4.2 PE与PE之间的路由交换
PE与PE之间的路由交换本质上就是将PE上得VRF路由注入到MP-IBGP并通过MP-IBGP在PE间交换的过程。
图4-2
PE通过维持IBGP确保路由信息被分发给所有其它的PE。当Ingress PE分发路由信息时,将同时携带路由所在VRF的RD,即将路由的IPv4地址前缀转化为VPN-IPv4地址。
分发的具体路由信息(VPN-IPv4路由信息)包括:
该路由的VPN-IPv4地址前缀
下一跳地址即Ingress PE的VPN-IPv4地址(通常是PE上的Loopback接口地址,其RD=0)
分配给该路由的VPN标签(用来标识属于哪个VPN或者说是哪个VRF)
该路由所在VRF的Export RT
4.3 PE与CE之间的路由交换
PE与CE之间的路由交换即为MP-IBGP把路由注入到PE上的VRF然后通过PE与CE上运行的路由协议再分发给CE的过程。
图4-3
当Egress PE收到路由信息时,将查看该路由的RT,如果RT和其任意VRF中任意一个Import RT相符时,就将该路由存入VPN-IPv4的路由表。
在进行路由选择之后,将最优路由中的VPN-IPv4地址转化成IPv4地址(即去掉地址中的RD)导入到相应的VRF,私网标签保留,记录到转发表中,留做转发时使用。
再由本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,这样,根据内层标签,就可以找到转发的接口。可以认为,内层标签代表了通过骨干网相连的两个CE之间的一个隧道。
5 锐捷网络BGP MPLS VPN实现
5.1 组网需求
要求:有两个VPN用户,VPNA和VPNB。VPNA在福州和上海有自己的站点,VPNB 在北京和上海有自己的站点,现在要VPNA 内的用户可以访问自己福州和上海的资源,VPNB 内的用户可以访问自己北京和上海的资源,两个VPN 之间不能互相访问。
5.2 组网拓扑
图5-1
5.3 配置步骤
1. 配置PE
以PE_SH 为例:
配置VRF
在PE_SH上定义两个VRF,VRFA_SH和VRFB_SH,分别为这两个VRF定义R值和RT值,并把VRF和对应的接口关联起来。
配置BGP 协议
在PE_FZ和PE_BJ配置过程和上面类似。
2. 配置CE
以VPNB_SH 为例:
配置BGP
VPNA_SH、VPNA_FZ和VPNB_BJ的上CE的配置和VPNB_SH类似。
3. 配置P
以P1为例:
P2上的配置和P1类似。
6 BGP/MPLS IP VPN标准体系发展
IETF已经在2004年成立了L3VPN的工作组专门研究L3VPN的技术和应用,这里主要讲与BGP/MPLS VPN最直接相关的RFC, BGP/MPLS IP VPN的技术最早由IETF在1999年在RFC 2547提出,后来出了一个修订版叫RFC2547bis,现有的网络设备提供商实现的BGP/MPLS VPN都是根据RFC2547bis实现的。随着该技术被各个网络设备厂商支持并应用,该技术已经被实践证明比较成熟。2006年IETF根据这些年在应用过程中的实践总结进一步完善了该技术,重新发布了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 Capability 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主要有如下特点:
VPN的隧道是在网络服务提供商的PE上建立的,而不是在用户的CE之间建立的。VPN的路由也是在PE和PE之间传递,而不在CE之间传递。这样用户就不需要发什么精力维护自己的VPN。BGP/MPLS IP VPN也属于服 务商提供的VPN技术,对于服务商提供的VPN,IETF给其了一个术语叫Provider Provisioned VPN,简称为PPVPN
把VPN隧道的部署及路由发布变为动态实现,这样有利于VPN的规模扩大,可以很容易实现添加一个新的VPN或者是新的站点加入到一个现有的VPN中。
支持地址重叠(不同VPN可以使用相同的地址空间)。
在服务提供商的网络中,VPN的业务流使用标签交换转发而不是传统的路由转发。
能够达到和用户租用专线一样的安全性。
可以利用MPLS技术实现流量工程,支持用户的各种Qos需求。
由于基于MPLS技术的VPN有其固有的优点是传统VPN技术无法比拟的,因此MPLS VPN技术是未来构建VPN的发展方向,会越来越受到客户和运营商的关注。
更多技术博文
-
全调度以太网(GSE),中国智算网络新标准
GSE网络作为一种全调度以太网技术,专为大规模AI训练集群设计,通过按需调度实现无损性能,提供灵活快速的部署方案,构建开放生态,显著提升智算效率和运维体验。
-
#知识百科
-
-
以太和PON,谁能更好地支撑办公室横向流量业务?
了解以太彩光与PON的区别,解析办公资源共享难题,锐捷极简以太彩光方案助您高效适配办公网,共享打印无压力!
-
#交换机
-
-
场景无线 驱动高效办公!锐捷新一代企业无线办公解决方案全新发布!
面对企业数智化转型中的无线办公网络挑战,锐捷新一代企业无线办公解决方案通过全场景AP、智能调度与云端智能运维等技术,实现网络性能、用户体验与运维效率的全面提升。
-
#无线网
-
#办公网
-
-
以太彩光和PON,运维管理谁技高一筹?
锐捷网络提供极简以太全光方案,简化配置流程,降低学习成本,让全光网络升级更平滑。
-
#交换机
-