VPN的扩展Word格式.docx
《VPN的扩展Word格式.docx》由会员分享,可在线阅读,更多相关《VPN的扩展Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
既然是VPN其所完成的功能以及达到的目的和传统的VPN是一样的,只是基于MPLS的IP
VPN和传统的IPVPN相比有很多优势。
如对于VPN用户而言,它可以大大简化用户的管理工作量,不再需要使用专门的VPN设备(如VPN拨入服务器)只需要使用传统的路由器就可以构建VPN。
对于运营商而言,采用MPLSVPN很容易实现VPN的扩展,同时给运营商带来更大的商机。
这里解释一下为什么是叫BGP/MPLSVPN呢?
这是因为MPLS应用于Layer3的VPN中要使
用BGP作为MPLS的标签分发协议,就好比MPLS应用于IP单播转发中必须使用LDP作为
其标签分发协议,使用BGP协议在服务提供商网络的PE之间交换VPN路由以及绑定的标签。
2BGP/MPLSVPN架构
图2-1
在MPLSVPN的连接模型中,网络由运营商的骨干网与用户的各个Site组成,所谓VPN就是对site集合的划分,一个VPN就对应一个由若干site组成的集合。
2.1组成原理
1.MPLSVPN的网络构造由服务提供商来完成。
在这种网络构造中,由服务提供商向用户
提供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(VPNRouting&
ForwardingInstance)。
3BGPMPLS/VPN原理
在一个MPLSVPN网络中,需要解决以下三个问题:
1.本地路由冲突问题,即:
在同一台PE上如何区分不同VPN的相同路由。
2.路由在网络中的传播问题,两条相同的路由,都在网络中传播,对于接收者如何分辨彼
此?
3.报文的转发问题,即使成功的解决了路由表的冲突,但是当PE接收到一个IP报文时,
他又如何能够知道该发给那个VPN?
因为IP报文头中唯一可用的信息就是目的地址。
而
很多VPN中都可能存在这个地址。
3.1VRF-VPN路由转发实例(VPNRouting&
ForwardingInstance)
其实解决地址冲突的问题,也存在一些方法:
使用ACL、IPunnumber、NAT。
但这些办法都是基于“打补丁”的思想,没能从本质上解决问题。
要想彻底解决,必须在理论上有所突破。
可以从专用PE上得到启示。
专用路由器方式分工明确,每个PE只保留自己VPN的路由。
P只保留公网路由。
而现在的思路是:
将这些所有设备的功能,和在一台PE上完成。
图3-1
每一个VRF可以看作虚拟的路由器,好像是一台专用的PE设备。
该虚拟路由器包括如下元素:
●一张独立的路由表,当然也包括了独立的地址空间。
●一组归属于这个VRF的接口的集合。
●一组只用于本VRF的路由协议。
对于每个PE,可以维护一个或多个VRF,同时维护一个公网的路由表(也叫全局路由表),
多个VRF实例相互分离独立。
其实实现VRF并不困难,关键在于如何在PE上使用特定的策略规则来协调各VRF和全局路
由表之间的关系。
3.2VRF的路由分发
图3-2
像图中所示,属于一个VPN的site可能分别连接到不同的PE上。
为了保证VPN的连通性,
我们必须在PE之间交换VPN路由信息。
VPN路由拥有自己独立的地址空间,这种路由在服务提供商的公共网络中传递不能采用普通地址结构,否则会因为地址空间的重叠导致路由表的混乱,而是通过RD与IP地址一起构成唯一的VPN-IPV4地址结构来传递。
同时在PE之间也不能采用普通的路由协议,而是通过对BGP作一定的扩展,使用多协议BG(MultiProtocol
BGP)来交换VPN信息。
这些在下一部份将会讲到。
3.3RD--路由标识(RouteDistinguisher)VPN-IPv4地址
在前面提到过,PE之间通过公共网络交换VPN路由,不能采用普通的地址结构和路由协议。
因此,首先引入RD(RouteDistinguisher)的概念。
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地址族路由,同时传递附加在路由上的RouteTarget属性。
通过RD与VPN-IPv4地址,解决了路由在网络中的传播,两条相同的路由,都在网络中传播,对于接收者如何分辨彼此问题。
3.4BGP扩展与RouteTarget属性
PE之间交换VPN信息,在BGP的UPDATE报文中承载VPN-v4地址族路由,这就是对BGP
进行了扩展的MBGP(多协议BGP)。
MBGP不仅能承载IPv4路由,而且能承载VPN,IPv6,
多播等路由。
MBGP有两个主要的工作,为路由指定特定网络层协议的下一跳和NLRI(网
络层可达信息)。
图3-4
BGP扩展团体属性是对团体属性做了扩展,增大了值域,并规定了内部结构。
扩展团体属性是一个过渡可选属性,它由一个扩展团体的集合组成,每个扩展团体是8字节的数。
RouteTarget属性是由BGP的扩展团体属性来表示的。
RouteTarget属性
VPN的成员关系是通过路由所携带的routetarget属性来获得的。
PE中每个Site的路由表中
的路由项可以有一或多个RouteTarget属性。
它表示了该路由可以被哪些site所接收,接收
哪些site的传送来的路由。
一个具有这种属性的路由必须发送给所有在RouteTarget中指明的site所连接的PE路由器,
PE接收到包含此属性的路由后,若此属性指明的site同己一致,则加入到相应的路由表中。
RT的本质是每个VRF表达自己的路由取舍及喜好的方式。
可以分为两部分:
ExportTarget与importTarget;
前者表示了我发出的路由的属性,而后者表示了我对那些路由感兴趣。
例如:
●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,有一个RouteTarget属性的集合用于附加到从某个site接收的路由上,称为Export
RouteTarget,另一个RouteTarget属性的集合用于决定哪些路由可以引入到此site的路由表中,称为ImportRouteTarget。
它们是不同的集合。
这两个集合的组合可以构造任何拓扑类型的VPN。
在PE上,每个VRF都有一个ImportRouteTarget列表,只有当路由的ExportRouteTarget
与VRF的ImportRouteTarget列表相匹配,路由才会被引入到该VRF的路由表中。
RT的灵活应用
由于每个RTExportTarget与importTarget都可以配置多个属性,例如:
我对红色或者蓝色的
路由都感兴趣。
接收时是“或”操作,红色的、蓝色的以及同时具备两种颜色的路由都会被
接受。
所以就可以实现非常灵活的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.6BGP发布路由时需要携带的信息
一个扩展之后的NLRI(NetworkLayerReachabilityInformation),增加了地址族的描述,以及私网label和RD。
跟随之后的是RT的列表
对于使用了扩展属性MP_REACH_NLRI的BGP,我们称之为MP-BGP。
4BGPMPLS/VPN路由分发、报文转发机制
在MPLSVPN中,因为采用了两层标签栈结构,所以P并不参与VPN路由信息的交互,VPN站点内部是通过CE与PE、PE与PE之间的路由交互知道属于某个VPN的网络拓扑信息。
具体可以归纳为如下3个步骤:
1.CE与PE之间的路由交换
2.PE与PE之间的路由交换
3.PE与CE之间的路由交换
4.1CE与PE之间的路由交换
在PE上为不同的VPN站点配置VRF。
PE上维护多个独立的路由表,包括公网和私网路由表(VRF),其中:
1.公网路由表:
包含到达其他PE和P的路由,由骨干网的IGP产生。
2.私网路由表:
包含本VPN可到达的路由(即属于该VPN的不同站点之间的路由)。
图4-1
CE与PE之间通过采用静态路由、动态路由协议(如OSPF,RIP…)进行路由信息的交互。
当IngressPE从某个接口接收到来自CE的路由信息时,将该路由导入对应的VRF。
4.2PE与PE之间的路由交换
PE与PE之间的路由交换本质上就是将PE上得VRF路由注入到MP-IBGP并通过MP-IBGP在PE间交换的过程。
图4-2
PE通过维持IBGP确保路由信息被分发给所有其它的PE。
当IngressPE分发路由信息时,将
同时携带路由所在VRF的RD,即将路由的IPv4地址前缀转化为VPN-IPv4地址。
分发的具体路由信息(VPN-IPv4路由信息)包括:
●该路由的VPN-IPv4地址前缀
●下一跳地址即IngressPE的VPN-IPv4地址(通常是PE上的Loopback接口地址,其RD=0)
●分配给该路由的VPN标签(用来标识属于哪个VPN或者说是哪个VRF)
●该路由所在VRF的ExportRT
4.3PE与CE之间的路由交换
PE与CE之间的路由交换即为MP-IBGP把路由注入到PE上的VRF然后通过PE与CE上运行的路由协议再分发给CE的过程。
图4-3
当EgressPE收到路由信息时,将查看该路由的RT,如果RT和其任意VRF中任意一个Import
RT相符时,就将该路由存入VPN-IPv4的路由表。
在进行路由选择之后,将最优路由中的VPN-IPv4地址转化成IPv4地址(即去掉地址中的RD)
导入到相应的VRF,私网标签保留,记录到转发表中,留做转发时使用。
再由本VRF的路由协议引入并传递给相应的CE。
发给CE时下一跳为接收端PE自己的接口
地址。
这样就完成了从MP-IBGP路由注入到VRF的过程。
4.4MPLS/VPN报文转发
图4-4
在MPLSVPN中,属于同一的VPN的两个Site之间转发报文使用两层标签来解决,在入口PE上为报文打上两层标签,第一层(外层)标签在骨干网内部进行交换,代表了从PE到对端PE的一条隧道,VPN报文打上这层标签,就可以沿着LSP到达对端PE,这时候就需要使用第二层(内层)标签,这层标签指示了报文应该到达哪个site,或者更具体一些,到达哪一个CE,这样,根据内层标签,就可以找到转发的接口。
可以认为,内层标签代表了通过骨干网相连的两个CE之间的一个隧道。
5BGP/MPLSIPVPN标准体系发展
IETF已经在2004年成立了L3VPN的工作组专门研究L3VPN的技术和应用,这里主要讲与BGP/MPLSVPN最直接相关的RFC,BGP/MPLSIPVPN的技术最早由IETF在1999年在RFC
2547提出,后来出了一个修订版叫RFC2547bis,现有的网络设备提供商实现的BGP/MPLS
VPN都是根据RFC2547bis实现的。
随着该技术被各个网络设备厂商支持并应用,该技术已经被实践证明比较成熟。
2006年IETF根据这些年在应用过程中的实践总结进一步完善了该技术,重新发布了RFC4364并声明废弃了RFC2547。
RFC4364里面详细阐述了BGP/MPLSIPVPNs的架构、技术实现和部署。
另外由于BGP/MPLSIPVPNs的技术实现需求,对BGP协议的特性进行了大量的扩展,主要包括:
●RFC2858MultiprotocolExtensionsforBGP-4支持多协议扩展的BGP
●draft-ietf-idr-as4bytesAS号由原来的2字节变为4字节的处理
●RFC1997BGPCommunitiesAttributeBGP的团体属性
●RFC2918RouteRefreshCapabilityforBGP-4BGP的刷新机制
●draft-ietf-idr-route-filterCooperativeRouteFilteringCapabilityforBGP-4BGP的ORF机制
●RFC2796BGPRouteReflectionBGP的路由反射器实现
●RFC3107CarryingLabelInformationinBGP-4如何在BGP中携带MPLS标签
●RFC4360BGPExtendedCommunitiesAttributeBGP的扩展团体属性
使用BGP/MPLS实现的Layer3VPN主要有如下特点:
●VPN的隧道是在网络服务提供商的PE上建立的,而不是在用户的CE之间建立的。
VPN
的路由也是在PE和PE之间传递,而不在CE之间传递。
这样用户就不需要发什么精力
维护自己的VPN。
BGP/MPLSIPVPN也属于服务商提供的VPN技术,对于服务商提
供的VPN,IETF给其了一个术语叫ProviderProvisionedVPN,简称为PPVPN
●把VPN隧道的部署及路由发布变为动态实现,这样有利于VPN的规模扩大,可以很容
易实现添加一个新的VPN或者是新的站点加入到一个现有的VPN中。
●支持地址重叠(不同VPN可以使用相同的地址空间)。
●在服务提供商的网络中,VPN的业务流使用标签交换转发而不是传统的路由转发。
●能够达到和用户租用专线一样的安全性。
●可以利用MPLS技术实现流量工程,支持用户的各种Qos需求。
由于基于MPLS技术的VPN有其固有的优点是传统VPN技术无法比拟的,因此MPLSVPN
技术是未来构建VPN的发展方向,会越来越受到客户和运营商的关注。