MPLS VPN在企业网络中的应用
2020-12-04圣文顺孙艳文
圣文顺,周 诚,孙艳文
(南京工业大学浦江学院,江苏 南京 211200)
0 引 言
90年代初,随着社会与经济的不断发展,互联网流量快速增长,众多企业进入了互联网云时代。由于许多公司不在同一个地点办公,因此一所跨城域大型公司可能包括多个子公司和办事处。NAT虽然可以满足基本需求,但由于过去硬件技术的限制,路由器采用最长匹配算法[1]逐跳转发数据包,成为网络数据转发的瓶颈,因此快速路由技术[2]成为当时研究的一个热点。
MPLS(multi-protocol label switching)即多协议标签交换技术,VPN则是指虚拟专用网络。MPLS VPN技术是运用多协议标签交换技术在主干网络上构建关于企业的IP虚拟局域网,从而实现了网络在不同地区的应用,具备快速、高效、安全的特性。MPLS VPN能为不同的网络用户提供差别性的服务,它将公共网络的多样性、拓展性、可靠性并结合流量工程等相关网络技术体现出来,从而让网络的使用更为快速、高效。在各种方案中,IETF确定MPLS协议作为标准的协议。MPLS采用短而定长的标签进行数据转发[3],大大提高了硬件限制下的转发能力;而且MPLS可以扩展到多种网络协议(如IPv6,IPX等)。随着设备硬件性能不断提升,MPLS在提高数据转发速度上的优势逐渐弱化,但其支持多层标签嵌套[4]和设备内转控分离[5]的特点,使其在VPN、TE等新兴应用中得到了广泛应用。
1 MPLS VPN的产生原因
众所周知,目前IPv4地址的可用资源已经趋于枯竭,并且已经成为了制约网络发展的瓶颈,因此NAT(network address translation)技术[6-7]应运而生。NAT方式通过满足通信的基本要求,进行网络通信,但是也必然存在一定的缺陷。
首先,NAT方式要对应路由器来开启NAT进程,因此会加大路由器的负荷;其次,NAT方式容易造成局域网的IP地址对外不可见,使得分公司和办事处无法直接访问总部内部的应用程序。随着互联网在软件应用中地位的逐渐提升,带宽大和时延低也成为一种需求。
为了满足更快的数据传输率,每个路由器生产商进行了大批量的改进和研究工作,例如思科公司为路由器优化了路由表搜索算法并添加了CEF等功能。但仍旧不能彻底解决当前互联网市场所存在的问题。
MPLS技术的诞生是两个曾经相互对立的ATM和IP技术融合的产物。MPLS技术兼顾了IP技术信令简单和ATM交换引擎高效的优点。IP设备厂商和ATM设备厂商,都是在各自原来的基础上实现MPLS技术。相对于IP设备厂商而言,它并不是修改了原有的IP包封装于二层链路帧中的规范,而是在二、三层包头之间增加了一个标签。ATM设备厂商则使用标签来代替VPI/CVI概念,并且需要在ATM交换机上修改信令控制代码,确保路由协议可实现不同路由之间三层信息的传递。
在图1中,AR1与AR2的loopback1接口的地址都是属于私网地址,由于它们不在同一块网络中,若它们的IP地址同为172.16.1.1,是不会产生冲突的;然而,若是将这种情况放入VPN网络中,传统的VPN网络结构中的设备是无法识别用户重叠的路由信息的。因此MPLS VPN的出现解决了传统VPN技术的固有缺陷之一,即地址空间的重叠问题。
图1 网络体系结构
2 选择路由协议来承载MPLS VPN
MPLS技术的核心优势是利用标签列表的查找代替传统路由表的递归查询,从而实现标签的快速交换,提高数据传输速率。MPLS在解决大数据量网络传输速度的同时,还需要考虑客户数据的保密性问题,于是催生了MPLS VPN。MPLS VPN是MPLS技术与VPN的结合,通常应用在大型企业与运营商内部。MPLS VPN提供了路由反射、环路避免、流量工程和负载均衡等多种优化服务,但是如何选择路由协议去承载MPLS VPN,无疑是当下一大难点。
一般的IGP协议只能用来承载IPV4报文,然而这是远远不够的,MP BG报文的出现解决了无法承载VPN报文和IPV6报文的问题。它在承载VPN报文的同时还携带一些必要的扩展属性。因此该文给出如下选择方法来选择路由协议:
(1)公共网络上的VPN路由数量庞大,BGP是唯一支持大量路由的协议[8];
(2)BGP的报文基于TLV的结构[9-10],便于扩展;
(3)BGP可以承载附加在路由后面的任何信息,并作为可选属性传递给其他邻居;
(4)本地路由冲突的问题:可以通过在同一台PE设备上为不同的VPN建立单独的路由,这样冲突的路由就被隔离开来;
(5)在路由传递过程中,为不同的VPN路由添加不同的标识以示区别,这些标识可作为BGP属性[11-12]进行传递;
(6)由于IP报文不可更改,可以在IP报文头前加一些信息。由始发路由器打上标记,接收路由器在收到带标记的数据包时,根据标记转发给正确的VPN。
3 在网络传递过程中区分冲突路由
将VPN路由发布到全局路由表之前,使用一个全局唯一的标识和路由绑定,用以区分冲突的私网路由[13]。这个标识被称为RD(route distinguisher)。
RD即VPN路由标识符[14],由8字节组成,用于区分相同地址空间的IPv4前缀,配置时同一PE设备上分配给每个VPN的RD必须唯一。增加了RD的IPv4地址称为VPN-IPv4地址(即VPNv4地址)[15]。运营商设备采用BGP协议作为承载VPN路由的协议,并将BGP协议进行了扩展,称为MP-BGP(multiprotocol extensions for BGP-4)[16]。PE从CE接收到客户的IPv4私网路由后,将客户的私网路由添加各种标识信息后变为VPNv4路由放入MP-BGP的VPNv4路由表中,并通过MP-BGP协议在公网上传递。
由于CE与PE间路由协议的规划,其设备之间需要交互路由信息。由于MPLS VPN是三层VPN网络,因此CE节点设备必须选择三层设备。三层设备指接入层、汇聚层、核心层,即是指MPLS VPN技术在网络中通过三个层次来进行设计与应用。核心层的作用是调节并疏散网络中的信息;接入层的作用是做到全面化、系统化来满足网络交互与隔离的需求;汇聚层的作用则是做好处理和分析工作,提升网络服务。CE与PE设备间采用静态路由协议,方便了维护人员进行管理并减少了维护的复杂度。
4 MPLS VPN企业网的安全策略
MPLS VPN为了实现网络的安全性,通过采取隔离用户路由信息和隔离用户地址等方法来提高标记欺骗和抵抗外部入侵的目的。MPLS是一种隧道技术,使用它来建立VPN十分高效。但是MPLS技术本身非常新颖,所以对MPLS VPN的安全性从多方面做了一个详细的、适用于BGP的分析和介绍。
在用户网络边缘设备CE(customer edge)上,有接口直接与服务提供商SP(service provider)网络相连,CE可以是SVN、交换机或一台主机。通常情况下,CE“感知”不到VPN的存在,也不需要支持MPLS。服务提供商边缘设备PE((provider edge)则与CE直接相连,在MPLS网络中,对VPN的所有处理都发生在PE上。
若在CE节点和PE节点之间运行动态路由协议,则CE路由器的IP地址是PE路由器唯一了解的VPN网络内部信息。要将MPLS网络核心隐藏,则需要将CE和PE路由器设置为静态路由。MPLS VPN网络对数据信息和传输安全保障的具体方法如下:
(1)MPLS核心层。
RD(路由标志:route distinguisher)的唯一性保证了用户在无需进行NAT,甚至不用任何变动的情况下,依旧可以保留原有的IP地址和应用,并穿过基于MPLS的VPN。使得IP VPN与用户IP网络的集成更加容易、便捷。
在MPLS VPN网络中,为了保证每个端点的唯一性,供应商将定义的唯一的一个RD和VPN的IP地址一一结合。用户保留自己的私有地址而无需通过NAT或者供应商所给的地址,原因是VPN相关节点的FIB中存入了VPN的IP地址入口信息,且这些信息都将通过流量路由找到它对应的节点。
一般连接EXTRANET VPN,需要通过RD定义的两个VPN之间的信任关系。因为两个相连之间可以实现VPN互连根本意识不到其余VPN的存在。
(2)MPLS-VPN加密保证安全性。
BGP(border gateway protocol)规定哪些路由信息可以通过哪些属性和协议进行通信。每个VPN的唯一RD和逻辑端口号决定了VPN成员的属性。然而用户并不知道RD的值,只能通过定义的端口才能通信。为了让每个边缘LSR只保存和自己相关的FIB(forwarding information base)表和VPN信息,BGP在LSR之间交换FIB表进行更新,并且这种更新只能发生在LSR上,加强了其安全性和保密性。
因为每个用户的RD都是由其逻辑端口号所决定,而RD在一开始定义时只与某个VPN相关联,所以用户只能访问相关联的VPN。由于用户只能意识到这个VPN,因此通过加密来保证其安全性。
(3)数据的完整性保障。
数据的完整性通过MPLS VPN对普通数据包进行选择封装来实现。每个路由节点收到的数据包都由MPLS协议进行封装,然后按标签分类进行交换。因而不需要对整个数据包进行识别,保证了数据的完整性。
(4)路由隔离。
VPN之间的路由隔离是由MPLS VPN来实现的。路由隔离是指每个虚拟路由转发实例(VFI)都是由连接每个的VPN的PE路由器来维护的,其驻留都来自同一VPN。每个VPN都会产生一个相对独立的VFI,所以不会被该PE路由器上其他VPN影响。
然而在穿越MPLS核心到其他路由器时,往往会将BGP的信息重新分发给核心网络,因此在多协议BGP里增加了唯一的VPN标志符来实现隔离。这种隔离只将路由信息重新分发,并将保存到特定的VFI中。所以穿过MPLS的每个VPN路由之间都是独立、隔离的。
5 MPLS VPN的配置说明
模拟MPLS VPN仿真网络,进行虚拟局域网络逻辑结构统一、基于公网进行内网数据传输的可靠性测试实验,目的是验证MPLS VPN技术满足跨区域企业专用网络的相关技术要求。
5.1 配置需求
分部与总部之间采用MPLS VPN进行通信,用户与运营商之间使用BGP协议传递路由。如图1所示,配置MPLS VPN需要从以下两个方面考虑:用户侧设备的配置和运营商骨干网络的配置。
用户侧设备的配置主要考虑CE与PE之间使用何种协议将私网路由传递到运营商网络;而运营商骨干网络的配置需要从以下三个方面考虑:运营商骨干网络IGP协议的配置,保证运营商网络路由可达;VPN的配置,将私网路由通过运营商设备封装并传递;MP-BGP与MPLS协议的配置,实现私网路由的传递与标签隧道[17]的建立。专用PE设备分工明确,每个PE设备只保存自己的VPN路由,P设备只保存公网路由。因此解决共享PE设备上地址空间重叠的思路是:
将专用PE设备与P设备的功能在同一台PE设备上完成,并实现VPN路由的隔离。其实传统VPN解决地址冲突的问题也存在一些方法:使用ACL,NAT等,但这些办法都没能从本质上解决问题。要想彻底解决问题,必须在理论上有所突破。可以从专用PE上得到启示,专用PE设备分工明确,每个PE只保存自己的VPN路由,P设备只保存公网路由。而现在的思路是:将专用PE设备与P设备的功能在一台PE设备上完成。在共享PE设备上使用VRF技术将重叠的路由隔离:每个VPN的路由放入自己对应的VPN Routing Table中。
PE设备在维护多个VPN Routing Table时,同时还维护一个公网的路由表。
5.2 配置思路
前提1:直连IP地址可达,地址不冲突,线路无故障。
前提2:IGP可达,IP路由表中存在MPLS VPN建立邻居使用loopback地址。检测的时候使用ping -a 挂源去ping。
前提3:BGP邻居关系建立。MPLS VPN使用的是MP-BGP,所以想要实现VPN,就要先建立BGP的邻居关系[18],否则向上层前提检查。如果上层前提没问题,检查peer是否指定,IPv4地址簇[19]是否指定peer ip地址enable。
5.3 配置MPLS VPN
(1)首先全局使用MPLS和mpls ldp。
建议配置mpls lsr-id(建议一台设备的所有ID,都最好统一)。
mpls lsr-id 3.3.3.3
mpls
#
mpls ldp
(2)创建VPN实例。
创建VPN实例的时候需要配置RD值和RT值,其中RD值负责形成VPNv4地址(格式为RD+IPV4地址)。
RT值负责不同VRF表的加入,本端出方向值与对端入方向值[20]相同,对端才能加入本端发过去的表,数据是有去有回。因此,对端的出方向要和本端的入再一致。有时候配置起来RT的出和入使用的都是一个值,RD值和RT值工程师人为规划就可以。骨干网创建实例与设置RT(route target)属性配置代码如下:
ip vpn-instance zhouchneg1
ipv4-family
route-distinguisher 1∶1
vpn-target 12∶3 export-extcommunity
vpn-target 3∶12 import-extcommunity
#
ip vpn-instance zhoucheng2
ipv4-family
route-distinguisher 2∶2
vpn-target 12∶3 export-extcommunity
vpn-target 3∶12 import-extcommunity
(3)接口处理。
下行接口因为要将网络添加到不同的VRF表中,因此,下行接口或者连接CE、连接终端的接口要绑定到VPN实例中,在配置的时候,先绑定实例,再配置IP地址等信息,不然一旦绑定就会将接口的信息全部清空。上行接口以及P设备沿途的接口需要在接口下使能MPLS、使能mpls ldp,用于标签的传递。总结起来就是下行接口绑实例,上行接口转发标签。在接口上绑定VPN的配置代码如下:
interface GigabitEthernet0/0/0
ip binding vpn-instance zhouchenhg1
ip address 10.1.13.3 255.255.255.0
interface GigabitEthernet0/0/1
ip binding vpn-instance zhoucheng2
ip address 10.1.23.3 255.255.255.0
(4)配置MP-BGP。
在BGP的VPNV4地址中,peer对等体,然后将不同协议学来的路由分别引入进内网即可。使用BGP传递路由的代码如下:
bgp 500
peer 5.5.5.5 as-number 500
peer 5.5.5.5 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
peer 5.5.5.5 enable
#
ipv4-family vpnv4
policy vpn-target
peer 5.5.5.5 enable
#
ipv4-family vpn-instance zhoucheng1
peer 10.1.13.1 as-number 100
#
ipv4-family vpn-instance zhoucheng2
peer 10.1.23.2 as-number 200
5.4 用户设备核心配置
用户设备的配置主要是为了使得总部与分公司之间互相通达,但各分公司之间则实现网络隔离(见图2~图4)。
图2 总部与分部互ping可通
图3 分公司之间网络隔离
图4 分公司与公网成功隔离
具体的配置代码如下:
bgp 100
peer 10.1.13.3 as-number 500
#
ipv4-family unicast
undo synchronization
network 172.16.1.1 255.255.255.255
peer 10.1.13.3 enable
bgp 200
peer 10.1.23.3 as-number 500
#
ipv4-family unicast
undo synchronization
network 172.16.2.1 255.255.255.255
peer 10.1.23.3 enable
6 结束语
通过该文的解析可以很清楚地发现,在企业网络中部署MPLS VPN,可以非常有效地增强企业网络通信的安全性,只有总部才会知道所有分部门的具体信息,而分部门之间是无法通信的,运营商也无法学习到各个分部门的路由信息。
MPLS VPN技术在广域网以及其他网络的相关应用,应结合用户与市场的实际需求,才能使国内企业不断发展并稳步向前。广域网在MPLS VPN技术应用的支持下,日益提升网络的安全,以此达到满足国内企业网络通信安全发展的目的。未来的网络安全情况很是严峻,MPLS VPN在一定程度上解决了企业通信安全的问题,但是配置很复杂,对于运维人员来说也是一个不小的挑战。