1 MPLS VPN的原理及构建

1 概述
传统的VPN通常建立在ATM/DDN/FR网上,随着IP网的大规模部署及ATM技术应用的衰落,在IP网上提供VPN业务被认为是一种非常经济的方式,随着MPLS技术的出现,基于MPLS的VPN技术发展迅速并已获得商用 。根据RFC 2764中对IP VPN技术的分类,IP VPN可划分为:VLL(Virtual Leased Lines)、VPDN(Virtual Private Dial Networks)、VPRN(Virtual Private Routed Networks)和VPLS(Virtual Private LAN Segment)四种 。MPLS VPN属于VPRN 。
2 MPLS路由器的结构
MPLS路由器结构与传统的仅支持逐跳路由的路由器结构有所不同,MPLS中的标签交换路由器(LSR)结构如图1所示,图中实线为传统路由器部分,虚线为LSR增加的部分,LSR分为路由模块和转发模块,路由模块中的路由协议可以是OSPF或IS-IS,也可以是它们基于流量工程的扩展,MPLS信令可以是RSVP或CR-LDP,标签分组根据转发模块中的标签转发表来交换标签,IP转发表用于传统逐跳路由的第三层查找 。MPLS通常采用拓扑驱动方式,路由器根据路由表项来建立LSP。
3 MPLS VPN的数据转发过程
MPLS VPN中的路由器有三种:P路由器、PE路由器和CE路由器 。P路由器为运营商主干路由器,负责VPN分组外层标签的交换;PE路由器为运营商边界路由器,存放着VRF表和全局路由表,VRF中存放着VPN路由,全局路由表中存放着运营商的域内路由;CE路由器为客户端路由器,由客户负责维护 。当CE路由器将一个VPN分组转发给入口PE路由器后,PE路由器查找该VPN对应的VRF,从VRF中得到一个VPN标签和下一跳出口PE路由器的地址,VPN标签作为内层标签打在VPN分组上,根据下一跳出口PE路由器的地址可以在全局路由表中查出到达该PE路由器应打上的域内路由的标签,即外层标签,于是VPN分组被打上了两层标签,主干网的P路由器根据外层标签转发VPN分组,在最后一个P路由器处,外层标签弹出,VPN分组只剩下内层标签(此过程被称作次末级弹出机制),接着VPN分组被发往出口PE路由器 。出口PE路由器根据内层标签查找到相应的出口后,将VPN分组上的内层标签删除,将不含标签的VPN分组转发给正确的CE路由器,CE路由器根据自己的路由表将分组转发到正确的目的地 。
4 MP-iBGP 协议
在基于MP-iBGP协议的MPLS VPN体系中,存在两个层面的路由,即域内路由和VPN路由 。所有的PE路由器及P路由器上要运行主干网的域内路由(OSPF或IS-IS等),生成的路由表将触发主干网中LSP的建立(拓扑驱动方式),通过CR-LDP或RSVP等信令协议建立LSP,产生的标签转发表用于VPN分组外层标签的交换 。PE路由器之间运行MP-iBGP协议,该协议跨越主干的P路由器在PE之间分发VPN标签,形成VPN路由,MP-iBGP发布的一条VPN路由包含的信息有:IPv4地址、路由区分符(RD)、路由目标(RT)、VPN标签和下一跳PE地址,其中RD用来消除IPv4地址的歧义,以重用IPv4地址;RT用来控制VRF的导入和导出策略,从而控制网络的连通和拓扑;下一跳PE地址是连接域内路由和VPN路由的纽带,在PE路由器上根据在VRF中得到的下一跳PE地址可以在全局路由表中查找到到达该地址应打上的外层标签 。
由于运行MP-iBGP协议的PE路由器之间必须构成全网状网的会话(因为运行iBGP的路由器不能转发收到的iBGP路由,这种机制用于避免路由环路),因此在大规模的网络应用中存在可扩展性的问题,解决的方法是采用路由反射器或路由域联合,路由反射器答应路由器转发收到的iBGP路由,以避免全网状的会话;采用路由域联合可以将路由域划分成多个区域,这样,只有区域内的路由器需要构成全网状的连接,减少了域内iBGP路由器的邻接数,当然采用路由域联合需考虑对跨域连接的规划 。

推荐阅读