MPLS VPN隧道建立过程与路由传递过程

2020-06-15 17:25:13 云杰通信 99

MPLS VPN隧道建立过程与路由传递过程

  为了实现两个站点之间跨越公网通信,并保护私网的安全,人们通常采用专线来实现私网的连接,由于专线的缺点,也随着复用技术的出现,一些新的共享带宽技术逐渐代替了专线。

  新的共享带宽的技术有帧中继、X.25等,这些技术其实是一种逻辑的隔离技术,就好像在两个站点之间跨越公共网络建立了专用的隧道,站点通过隧道实现通信。这些技术提高了带宽利用率,价格相对于专线比较便宜,构成了早起Virtual Private Network网络的主要技术。

  Virtual Private Network网络的特点:可以使用公共网络环境实现私网的连接;不同私网之间的网络互相不可见。

  CE:用户边缘设备;直接与运营商网络相连,通常情况下CE感知不到Virtual Private Network的存在,也就不需要支持MPLS。

  PE:服务提供商边缘设备,是运营商的边缘设备,与CE直接相连。在MPLS网络中,对Virtual Private Network的所有处理都发生在PE上。

  P:服务提供商的骨干设备,不与CE直接相连,P设备只需要具备基本的MPLS转发能力就行,不维护Virtual Private Network信息。

  既可以在CE设备上建立隧道,也可以在PE设备上建立隧道

  在CE与CE之间建立隧道,并直接传递路由信息,路由协议数据总是在客户设备之间交换,运营商对客户网络一无所知。不同的客户地址空间可以重叠,安全性非常好;本质是一种静态Virtual Private Network,无法适应实时网络变化,当有新增站点时,需要手工建立新增站点与所有站点的连接,配置繁琐。

  在PE上为每个Virtual Private Network建立相应的隧道,路由信息在PE与PE之间传递,公网中的P设备不知道私网的路由信息。Virtual Private Network的建立和维护由运营商完成,安全性较好;不同的Virtual Private Network用户不共享相同的地址空间。

  特点:客户路由协议总是在客户设备之间交换,而运营商对客户网结构一无所知。

  典型的协议:二层——帧中继;三层——GRE与IPSec;应用层——SSL Virtual Private Network。

  所有Virtual Private Network用户的CE设备都连接到同一台PE上,PE与不同的CE之间运行不同的路由协议(或相同协议的不同进程)。由始发PE将路由发送到公网上,在接收端的PE上将路由过滤后再发送给相应的CE设备。

  Peer-to-Peer是在CE与PE之间交换私网路由信息,然后由PE将私网路由泄露到公网上,所以必须通过严格的路由过滤和选择机制来控制私网路由的传播。

  特点:在CE设备与PE设备之间交换私网信息,由PE设备将私网信息在运营商网络中传播,实现了Virtual Private Network部署及路由发布的动态性。

  上图为共享PE的接入方式,也可以采用专用PE的接入方式。运营商为为每一个Virtual Private Network单独准备一台PE设备,PE和CE之间可以运行任意的路由协议,与其他Virtual Private Network无关。

  特点:无需配置ACL,配置复杂度降低;但是代价过于昂贵,而且没有解决Virtual Private Network客户地址重叠问题。

  两个客户的Virtual Private Network存在相同的地址空间,传统Virtual Private Network网络结构中的设备无法区分客户重叠路由信息。而MPLS Virtual Private Network解决了传统Virtual Private Network技术的固有缺陷——地址空间重叠问题。

  主要问题都是与路由相关的特性,我们再考虑BGP拥有的诸多优点,对此产生思路:公共网络上的Virtual Private Network路由数量庞大,BGP是唯一支持大量路由的协议;BGP可以附加在路由后面的任何信息,并作为可选属性传递给其他邻居。

  (1)本地路由冲突问题上,可以通过在同一台PE设备上为不同的Virtual Private Network建立单独的路由,这样冲突的路由就被隔离开来。?

  (2)在路由传递过程中,为不同的Virtual Private Network路由添加不同的标识,以示区别;这些标识作为BGP属性进行传递。

  (3)由于IP报文不可更改,可以在IP报头前加一些信息。由始发路由器打上标记,接收路由器在收到这些标记的数据包时,根据标记转发给正确的Virtual Private Network。

  <1>本地路由冲突

  专用方式:

  专用PE设备分工明确,每个PE设备只保存自己的Virtual Private Network路由,P设备只保存公网路由。因此解决共享PE设备上地址空间重叠的思路是:将专用PE设备与P设备的功能在同一台PE设备上完成并实现Virtual Private Network路由的隔离。

  共享方式:

  在共享PE设备上使用VRF技术将重叠的路由隔离:每个Virtual Private Network的路由放入自己对应的Virtual Private Network Routing Table中,就像是专用PE一样,这个Routing Table 就称为VRF,即Virtual Private Network路由转发表。每个VRF都对应一个Virtual Private Network instance,Virtual Private Network用户对应的接口绑定到Virtual Private Network instance中。PE设备在维护多个Virtual Private Network Routing Table时,同时还维护一个公网的路由表。

  <2>网络传递中区分冲突路由

  将Virtual Private Network路由路由发布到全局路由表之前,使用一个全局唯一的标识和路由绑定,以区分冲突的私网路由,这个标识称为RD值(Route Distinguisher),由8字节组成,配置时同一个PE设备上分配给每个Virtual Private Network的RD必须唯一。RD用于区分使用相同前缀的IPV4地址,增加了RD值的IPV4地址称为Virtual Private Networkv4地址。

  运营商采用BGP协议作为承载Virtual Private Network路由的协议,并将BGP协议进行了扩展,称为MP-BGP。PE从CE接收到客户的的IPv4私网路由后,将客户私网路由添加各种标识信息后变为Virtual Private Networkv4路由放入MP-BGP的Virtual Private Networkv4路由表中,并通过MP-BGP协议在公网上传递。

  <3>路由的引入问题

  分部1和分部2中存在1.1/32和2.1/32的私网地址,公司希望实现各分部只能与总部通信,分部之间不能相互通信;分部1使用Virtual Private Network RD值为1:1,分部2的Virtual Private Network RD值为2:2。但是使用RD解决路由引入问题时,会出现问题,总部的RD值设置为多少呢?RD值在本地上是唯一的,并且只能配置一个,设置为多少都不太合适。

  解决:

  RT属性用于将路由正确引入Virtual Private Network,有两类Virtual Private Network target属性,import target和export target,分别用于路由的导出与导入;RT封装在BGP的扩展Community属性中,在路由传递中作为可选属性进行传递;Export target:本端的路由在导出VRF,转变为Virtual Private Networkv4路由时,标记该属性,Import target:对端收到路由时,检查其Export Target属性,当此属性与PE上某个Virtual Private Network实例的Import target匹配时,PE就把他加入到该Virtual Private Network实例中。

  分配给分部1的export target为1:1,import target为3:3;分部2的export target为2:2,import target为3:3;总部的export target为3:3,import target为1:1,2:2。这样PE2收到对端PE1发送的Virtual Private Networkv4的路由后,检查其export target,这样路由就会被引入总部的VRF。

  优化:

  使用RT实现路由的正确引入原则:本端export target=对端import target,本端import target=对端export target。

  所有分部使用的import target为3:12,export target为12:3;而总部的值恰好相反,这就能实现分部与总部通信的需求。

  <4>数据转发过程中的冲突路由的查找

  因为数据包没有携带任何标识,所以在ICMP的数据包到达PE1设备时,PE1并不知道该查找哪个Virtual Private Network的路由表找到正确的目的地址。

  解决:

  1、在数据包中增加标识信息,并且使用RD作为区分数据包所属Virtual Private Network的标识符,数据转发时也携带RD信息。缺点是由于RD由8字节组成,额外增大数据包,导致转发效率降低。

  2、借助公网中已经实施的MPLS协议建立的标签隧道,采用标签作为数据包正确转发的标识,MPLS支持标签嵌套,可以将数据包所属Virtual Private Network的标签封装在公网标签内。

  Outer MPLS Label在MPLS Virtual Private Network中被称为公网标签,用于MPLS网络中转发数据。一般公网标签会在到达PE设备时已被倒数第二跳剥掉,漏出Inner Label。Inner MPLS Label在MPLS Virtual Private Network中被称为私网标签,用于将数据正确发送到相应的Virtual Private Network中,PE依靠Inner Label区分数据包属于哪个Virtual Private Network。

  MPLS Virtual Private Network路由传递过程:

  (1)CE与PE之间的路由交换;

  PE与CE之间可以通过静态路由协议交换路由信息,也可以通过动态路由协议(如:OSPF、ISIS、BGP等)交换路由信息。

  (2)VRF路由注入MP-BGP的过程;

  VRF中的IPv4路由被添加上RD,RT与标签等信息成为Virtual Private Networkv4路由方入到MP-BGP的路由表中,并且通过MP-BGP协议在PE设备之间交换路由信息。

  (3)公网标签的分配过程;

  MPLS协议在运营商网络分配公网标签,建立标签隧道,实现私网数据在公网上的转发。PE之间运行的MP-BGP协议为Virtual Private Network 路由分配私网标签,PE设备根据私网标签将数据正确转发给相应的Virtual Private Network。

  (4)MP-BGP路由注入VRF的过程;

  PE2在接收到PE1发送的Virtual Private Networkv4路由后将检查路由的扩展团体属性将携带Export Target值与本端Virtual Private Network的import target值比较,数值相同则将路由引入Virtual Private Network路由表,实现路由的正确导入。

  MPLS Virtual Private Network的数据转发过程:

  (1)CE设备到PE设备的数据转发;

  数据从CE4转发给PE2,在PE2设备上需要查找Virtual Private Network2的路由表,确定数据进行标签转发后,在查找下一跳与出接口,根据分配的标签进行MPLS的封装。

  (2)公网设备上的数据转发;

  数据包在公网上转发时通过MPLS协议建立好的标签隧道将数据报文转发到PE1。转发过程中只改变公网标签。

  注:PE2收到Virtual Private Network用户的数据包后,封装上MPLS的标签,将私网数据通过MPLS建立的标签隧道进行转发,PE2上数据包封装的公网标签为1030,转给P设备后,查找LFIB,进行标签为1030的数据包,对于出标签为3,即将公网标签剥离,将数据发给PE1,PE1收到的仅为内层私网标签的数据包。

  (3)PE设备到CE设备的数据转发。

  PE1收到剥离公网标签的数据包后,根据私网标签查找转发数据包的下一跳,将数据包正确发送给相应Virtual Private Network客户。这里注意数据的转发是双向的,但是过程类似,这里就不在赘述。