VPN服务的概念很早就已经提出。传统的VPN是通过电信运营商在传输网上提供的覆盖型的VPN服务。电信运营商对用户出租线路,用户上层使用何种的路由协议、路由怎么走等等,这些电信运营商都不管。这种租用线路来搭建VPN的好处是安全,但是价格昂贵、线路资源浪费严重。随着IP网络的全面铺开,在竞争的压力下,运营商开始尝试提供更加廉价的VPN服务。通过提供给用户一个IP平台,用户通过IPOverIP的封装格式在公网上打隧道,同时也提供了加密等安全保障。这类VPN用户在目前的网络上数量还是相当巨大的。但是这类VPN服务因大量的加密工作、传统路由器根据IP包头的目的地址转发效率不高等等的原因不是非常令人满足。
MPLS技术的出现和相应的路由协议的改进,给我们提供了另一种实现VPN的方法。下面我们分析一下,在MPLS上如何实现VPN。
多协议标记交换MPLS网络
MPLS网络的主要组成包括边缘标记交换路由器(EdgeLSR)、标记交换路由器(LSR)和标记分发协议(LDP)。
标记分发协议是基于网内路由协议,在MPLS网络的所有标记交换设备之间定义标记的协议。标记是在普通的数据报文内定义的一个字段,不同的物理网络,标记的表现形式不一样。标记的分发基于网络的拓扑结构而不是实际的数据报文;同时,标记只在网络的每一段链路上本地有效。在基本的MPLS网络中,标记一般表示路由的信息;但在高级的MPLS网络中,不同的标记还可以用来表示不同的服务等级、不同的VPN或不同转发路径。
非MPLS网络的数据报文并不含标记的信息,边缘标记交换路由器就是负责在MPLS网络的边缘对数据包进行标记和去除标记的工作。在数据包进入MPLS网络的时候,边缘标记交换路由器根据网络拓扑进行数据包的处理,同时根据标记分发协议所定义的标记,给数据包加上标记进入MPLS网络。在数据包离开MPLS网络的时候,边缘标记交换路由器作相反的动作,将数据包的标记去除进入非MPLS网络。
标记交换路由器是根据标记分发协议预先计算出的标记交换表来转发带标记的数据包的核心设备。标记交换路由器只须支持标记转发,因此这种设备可以是一台交换机,也可以是一台路由器。在ATM网络中,标记表现为ATM的参数VPI和VCI。假如一台ATM交换机支持标记分发协议,并据此转发ATM包,它也可以作为MPLS网络的标记交换路由器。
MPLS网络结合了二层交换和三层路由的技术,集中了交换网络和IP网络的优势,既可以实现交换网络的私密性和业务等级,也可以达到IP网络的灵活性和扩展性。在此基础上,MPLS网络还给运营商带来了更多的应用,包括MPLSVPN(二层和三层)、MPLS流量工程和MPLS业务等级。
二层透传——AToM
AToM建设在MPLS网络的基础设施之上,在两个路由器的一对端口之间提供高速的二层透传。这种技术可以用来提供二层VPN,也可以用来实现传统网络的升级。AToM主要组成部分包括:PE路由器、标记分发协议(LDP)和MPLS标记交换隧道(LSPTunnel)。 PE路由器拥有并维护与其直接相连的二层透传的链路信息。PE路由器负责将VPN客户的普通数据包打上标记和去除标记,因此PE路由器必须是一个边缘标记交换路由器。
在两个PE路由器之间实现二层透传的两个端口必须是相同的类型,例如以太网、VLAN、ATMVC、帧中继VC、HDLC或PPP。每一对这样的端口用一个唯一的虚拟链路标志(VCID)来表示。
在两个PE路由器之间要定义穿过MPLS网络的LSP隧道,LSP隧道提供了隧道标记(TunnelLabel),在两个PE路由器之间透传数据。同时在两个PE路由器之间还要定义直接的标记分发协议进程,用来传递虚拟链路的信息,其中最要害的是通过匹配VCID来分发虚拟链路标记(VCLabel)。
当二层透传的端口有数据包进入PE路由器时,PE路由器通过匹配VCID找到与之对应的隧道标记和虚拟链路标记。PE路由器会将此数据包打上两层标记,其中外层标记为隧道标记,指示从该PE路由器到目的PE路由器的路径;内层标记为虚拟链路标记,指示在目的PE路由器上属于哪个VCID对应的路由器端口。
值得一提的是,PE路由器要监视各自端口上的二层协议状态,如帧中继的LMI或ATM的ILMI。当出现故障时,通过标记分发协议进程来取消虚拟链路标记,从而断开此二层透传,避免产生单向无用数据流。
这种基于MPLS的二层透传方式,改变了传统的二层链路必须通过交换网络实现的限制,它从根本上形成了“一个网多种业务”的业务模式,让运营商可以在一个MPLS网络中同时提供二层业务和三层业务。
基于二层透传技术的是二层VPN。现在,二层VPN的各项标准正处于IETF起草阶段,主要包括针对点到点服务的虚拟私用线路服务(VPWS)和针对多点服务的虚拟私用局域网服务(VPLS)。这两种二层VPN都采用以AToM为基础的数据层面,在控制层面上增加自动发现和自动配置等多种功能。
三层VPN——MPLSVPN
三层VPN是专门为VPN所设计的,建设在MPLS网络的基础设施之上,即感知VPN的网络。三层VPN网络的主要组成部分包括:PE路由器、P路由器和网关路由协议(BGP)。
PE路由器拥有并维护与其直接相连的VPN的路由信息。PE路由器负责将VPN客户的普通数据包打上标记和去除标记,因此PE路由器必须是一个边缘标记交换路由器。
在PE路由器上,为每一个VPN设定了一个虚拟路由转发表(VRF),只处理该VPN的路由信息。PE路由器只通过该虚拟路由转发表与VPN用户交换路由信息(可以采用任何一种动态路由协议)。同时PE路由器上还有一个全局路由表,维持MPLS骨干网所需的路由信息。各个路由转发表之间相互隔离,每一个端口(包括物理的和逻辑的)都只能属于一个路由转发表,保证各VPN用户之间的私密性。
每个虚拟路由转发表采用一个路由区分符(RD)来区分彼此的路由,64位的RD加上32位的普通IP地址组成96位全网唯一的VPN-IPv4地址。通过这种方式,三层VPN可以答应不同的VPN内部采用相同的地址而互不影响。
PE路由器之间通过RFC2283定义的多协议扩展的网关路由协议(MP-BGP)来传递VPN-IPv4地址,同时参与传递的还有与该地址对应的扩展BGP属性和VPN标记。其中一项扩展BGP属性是路由目的(RT),用来控制路由信息到虚拟路由转发表之间的引入和引出关系。 当VPN用户的数据包通过任一端口进入PE路由器时,PE路由器只调用与此端口对应的虚拟路由转发表来处理此数据包。PE路由器会将此数据包打上两层标记,其中外层标记为IGP标记,指示从该PE路由器到目的PE路由器的路径;内层标记为VPN标记,指示在目的PE路由器上属于哪个VPN的信息。
P路由器是MPLS网络的标记交换路由器,完全依据标记进行转发。由于P路由器完全不须要读取原始的数据包信息来作出转发决定,P路由器不须要拥有VPN的路由信息,因此P路由器只参与骨干IGP的路由。
这种三层VPN的实现方式从根本上改变了传统的基于点到点的VPN实现方式,它利用了MPLS网络中标记的灵活性和多样性,将每一个VPN作为一个逻辑网络,依附在MPLS骨干网之上,各个用户节点只须简单加入或退出,就可以组建特定的VPN网络。