前言
随着ALL IP趋势的明朗,运营商建设统一的IP承载网已经势在必行,各种业务承载在一张IP网络上,为了保证不同业务的QOS水平,业务之间的有效隔离成为大家关注的一个焦点。MPLS VPN技术是当前发展最快、成熟度最高的技术之一,通过近几年在一定领域的部署实施,证明了该技术在运营商网络是切实可行的,是业务隔离的有效工具。目前在运营商网络部署实施的MPLS VPN大部分在在一个AS内,然而,实际部署的业务,如运营商内部的语音业务,企业客户的VPN专线业务,往往都是跨越多个AS,VPN如何有效跨越多个AS,是目前需要关注和解决的问题。
2. MPLS VPN跨域方法概述
同在单个AS内建立VPN的过程一样,跨域VPN的建立过程也同样关注两个方面,一是VPN信息的传递方法,一是VPN隧道的建立方法,经过近几年的实践和快速发展,业界提出了几种VPN跨域方法,即OPTION A/B/C三种,不同方法采用不同的VPN信息传递模式和VPN隧道构建方法,具有鲜明的特点和适合不同的应用场景。
另外,MPLS VPN可以分为MPLS/BGP三层VPN和MPLS L2VPN,两种VPN都支持上述的三种跨域方法,采用相同的跨域理念,只不过MPLS/BGP VPN由于使用较早和部署较广,其对应的跨域方法已经标准化,MPLS L2VPN目前在标准化进程上稍微落后,其对应的跨域标准还没有正式发布,但一些主流厂家对此已有部分或全部支持。
3. MPLS/BGP跨域
3.1 OPTIONA跨域实现方法

OPTION A跨域也叫做背靠背跨域,即两个AS的边界路由器ASBR互相作为PE和CE,如上图所示,ASBR1作为AS1的PE设备,ASBR2在此看作ASBR1连接的CE设备,反之亦然。
VPN信息传递
同一AS的PE和ASBR之间通过正常的MBGP协议传递VPN路由信息,ASBR之间通过正常的PE和CE之间的路由传递方法传送VPN路由信息,如上图,VPNA2通过IGP协议把路由信息传递给PE2,PE2通过MBGP协议把VPNA2的信息传递给ASBR2,ASBR2作为ASBR1的CE设备,通过IGP协议把VPNA2的信息传递给ASBR1,ASBR1再通过MBGP协议把VPNA2的信息传递给PE1,PE1再通过IGP协议把VPNA2的信息传递到VPNA1,至此,VPN信息传递完毕。
VPN隧道构建
在OPTIONA跨域方法中,VPN隧道构建比较简单,各个AS单独构建PE到ASBR的LSP双层隧道,内层标签代表VPN信息,外层标签代表到达VPN路由下一跳PE的公网标签,和在单个AS内LSP隧道的建立过程和方式一样,ASBR和ASBR之间通过裸IP转发,没有LSP隧道。
特点
ASBR需要处理VPN路由信息,并且需要配置VRF实例
ASBR需要为每个VPN分配一个物理或逻辑链路
每个AS内单独建立双层LSP隧道,ASBR之间依靠IP连接
适用于VPN业务开展初期,VPN数量较少的情况下
3.2 OPTION B跨域实现方法

OPTION B跨域也叫单跳MP-EBGP跨域,AS内通过正常的MPLS/BGP传递VPN信息和构建LSP隧道,AS之间通过单跳的MP-EBGP协议传递VPN信息并构建LSP隧道。
VPN信息传递
如上图所示,CE2通过IGP传递私网信息给PE2,PE2通过MP-IBGP传递VPN信息到ASBR2,ASBR2通过单跳的MP-EBGP传递VPN路由信息给ASBR1,然后,ASBR1再通过MP-IBGP传递VPN信息给PE1,PE1再通过IGP协议把私网信息传递给CE1,至此,CE1拥有到达CE2的路由信息。如果中间跨域多个AS,AS内部全部按照MP-IBGP协议传递,ASBR之间全部按照单跳的MP-EBGP传递。
LSP隧道构建
当使用BGP传递路由时,如果是EBGP传递,下一跳必定改变为自己,如果通过IBGP传递,下一跳可以改变为自己也可以不改变,另外,当采用MP-BGP传递VPN路由信息,下一跳更改时,那么就需要为VPN重新分配标签。
如上图所示,在OPTION B跨域中,ASBR2向ASBR1传递VPN路由时,下一跳必定改变为自己,同时ASBR2重新为VPN分配标签,ASBR1向PE1传递VPN路由信息时,分两种情况考虑,一是ASBR1向PE1传递VPN路由信息时,下一跳改变为自己,一是ASBR1向PE1传递私网路由信息时,下一跳不改变,也就是下一跳仍然为ASBR2。
在改变路由下一跳为ASBR1的情况下,ASBR1重新为VPN分配标签,VPN从PE1到达PE2的路径为PE1→ASBR1→ASBR2→PE2,在AS1内,构建PE1到ASBR1的双层LSP隧道,内层为VPN标签(ASBR1分配的),外层为PE1到ASBR1的公网隧道,在ASBR之间构建单层LSP隧道,只携带VPN标签(ASBR2分配的),在AS2内构建双层LSP隧道,内层为VPN标签,PE2分配的,外层为ASBR2到PE2的公网隧道。在两个ASBR处由于VPN标签都重新分配,所以最底层的标签在两个ASBR处都会有SWAP操作,也正是通过VPN标签的SWAP,把两个AS的VPN隧道连接起来。
如果不改变VPN路由的下一跳,那么PE1接收的VPN路由的下一跳就是AS2域内的ASBR2,则VPN从PE1到PE2的路径为PE1→ASBR2→PE2,那么就需要构建一条从PE1一直到ASBR2的双层LSP隧道,内层为VPN标签(ASBR2分配的),外层为PE1到ASBR2的公网隧道,ASBR2到PE2也构建双层LSP隧道,内层为VPN标签(PE2分配的),外层为ASBR2到PE2的公网隧道。在这种情况下,ASBR2和ASBR1之间需要运行某种标签分发协议,目的是分发ASBR2的公网标签,另外,在ASBR2处LSP的内外层标签都会进行SWAP操作,从而把两条LSP粘结成一个端到端的LSP隧道。
特点
ASBR需要处理VPN信息,但不需要配置VRF实例
ASBR之间一条链路传递所有VPN信息
根据不同的情况,ASBR之间构建单层或双层LSP隧道
当VPN业务发展到一定阶段,ASBR之间的链路受限时,可以考虑OPTION B跨域方法
3.3 OPTION C跨域实现方法

OPTION C跨域也叫多跳MP-EBGP跨域,由于BGP只要能建立TCP连接,就能成为BGP邻居并传递路由信息,因此,OPTION C通过多跳的MP-EBGP直接在源、宿端PE之间传递VPN路由信息,然后在源、宿端PE之间构建LSP公网隧道。
VPN信息传递
OPTION C跨域时VPN信息传递比较简单,即直接在源和宿端PE间通过多跳MP-EBGP传递,如上图,PE2和PE1之间建立多跳的MP-EBGP连接,VPN信息直接从PE2传递到PE1。
LSP隧道构建
从VPN信息传递的方式可以看出,VPN从PE1到PE2之间只有一跳,VPN的下一跳为PE2,PE2为VPN分配标签,并且一直不会改变。
现在重要的是确定PE1到PE2的外层LSP怎样建立,首先,PE2和ASBR2在一个AS,通过IGP协议,ASBR2会有PE2的路由信息,通过正常的LDP协议,ASBR2和PE2会构建一个LSP隧道,ASBR1和PE2不在一个AS,ASBR1没有PE2的路由信息,此时可以通过EBGP协议把PE2的路由信息传递给ASBR1,另外,对BGP协议进行扩展(RFC3107),让BGP在传递路由时同时分配标签,这样,ASBR1和ASBR2之间的LSP形成,并在ASBR2处形成标签SWAP,同样,ASBR1和PE1之间也通过扩展的IBGP传送PE2的路由信息,同时分配标签,并在ASBR1处形成标签SWAP,但这一段LSP的建立和ASBR之间LSP的建立不一样,ASBR之间是直连的,下一跳直接可达,PE1和ASBR1之间不是直连的,但PE1和ASBR1位于同一个AS,通过LDP可以构建一个LSP隧道,这样,在PE1到ASBR1之间的LSP隧道最终包括三层标签,最底层VPN标签(PE2分配),中间一层为到PE2的标签(ASBR1通过扩展BGP分配),最外层为到ASBR1的标签(LDP分配),ASBR之间构建一个双层LSP隧道,底层为VPN标签(PE2分配),外层为到PE2的标签(ASBR2通过扩展BGP分配),ASBR2到PE2之间为双层LSP隧道,内层为VPN标签(PE2分配),外层为到PE2的标签(LDP分配)这三段隧道通过在ASBR处的标签SWAP粘结起来,最终形成端到端的LSP隧道。
特点
ASBR不需要处理VPN信息,最符合VPN的要求,即中间设备不感知VPN信息
使用BGP扩展来传递公网标签
在宿端AS之外的AS出现三层标签的LSP隧道。
当VPN业务大规模发展时,可以使用OPTION C跨域方法
3.4 OPTION A/B/C跨域方法对比
项目 方法 | OPTION A | OPTION B | OPTION C | 备注 |
ASBR VPN感知 | 需要处理VPN信息,并配置VRF | 需要处理VPN信息,不配置VRF | 不感知VPN信息 | |
ASBR负载 | 处理所有VPN信息,负载重 | 处理所有VPN信息,负载重 | 不处理VPN信息,负载轻 | |
链路 | 每个VPN在ASBR之间占用一个链路 | 一个链路 | 一个链路 | |
跨域VPN传递 | ASBR通过IGP传递VPN | ASBR之间通过MP-EBGP传递VPN信息 | 源、宿端PE直接通过MP-EBGP传递 | |
对接 | 对接简单,ASBR互为PE、CE设备,IP对接 | 当MP-IBGP不改变下一跳为自己时,ASBR之间需要运行LDP | ASBR之间需要运行BGP扩展来传递公网标签 | 除宿端AS外的其他AS内也要运行BGP扩展来传送公网标签 |
隧道 | AS内部建立双层LSP,ASBR之间IP转发 | ASBR之间单层或ASBR到上游PE之间建立双层LSP | 宿端AS、ASBR之间建立双层LSP,其他AS建立三层LSP隧道 | |
维护 | 简单 | 复杂 | 复杂 | |
场景 | VPN数量少,业务开展早期 | VPN数量始终,ASBR之间链路受限,业务开展中期 | VPN数量大,业务大量开展时期 | |
4. L2 VPN跨域
L2 VPN跨域理念和MPLS/BGP跨域理念类似,但L2 VPN有一些自己不同的实现方法,下面主要就L2 VPN跨域和MPLS/BGP跨域的不同点进行说明。
4.1 传递VPN信息的协议不同
我们知道,目前L2 VPN的实现主要包括两种方式,即MARTINI和KOMPELLA,MARTINI通过扩展的远程LDP会话传送L2 VPN信息,KOMPELLA通过扩展的MP-BGP来传递VPN信息。
4.2 传递VPN信息的内容不同
L3 VPN传递IP路由和VPN对应的标签,L2 VPN不包括IP路由信息,它传递的主要是二层相关的信息,如MARTINI L2 VPN传递VC ID、二层接口信息以及对应的标签,KOMPELLA L2 VPN传递CE ID及标签块信息。
注:KOMPELLA L2 VPN通过分配标签块,可以自动和新的CE站点建立连接,方便日后扩容,而且,通过BGP特有的RR,可以有效减少连接数目,适合较为复杂的拓扑,MARTINI L2 VPN所有的连接需要手工配置,不支持自动发现站点功能,有FULL MESH的限制,适合于较为简单的网络拓扑。
4.3 支持VPN跨域的方法
两种L2 VPN跨域都可以支持OPTION A/C,但鉴于OPTION B跨域逐段传递VPN信息的特点,KOMPELLA L2VPN天然可以支持,但MARTINI L2 VPN不适合采用OPTION B跨域。
4.4 L2 VPN采用OPTION B跨域的特点
KOMPELLA L2 VPN采用分配标签块的方法,和L3 VPN在ASBR形成单个的标签SWAP表项有所不同,参考上面OPTION B跨域说明,PE2为CE2分配一个标签块,假设包括10个标签,用于和10个其他CE建立连接,标签块到达ASBR2时,ASBR2会重新分配一个范围为10的标签块给ASBR1,这样,在ASBR2处就会形成一个标签SWAP表,假设形成10个连接,就会包括10个SWAP表项,CE2和CE1的连接会对应SWAP的第一个表项,依次类推,按照CE ID的不同,最终通过ASBR2的所有连接都会对应一个SWAP表项。
4.5 VPLS跨域
VPLS可以看作L2 VPN的特例,实现方法也主要包括MARTINI和KOMPELLA两种,也有OPTION A/B/C三种跨域方法(注意MARTINI和KOMPELLA支持跨域方法的不同),研究VPLS跨域时,不需要考虑VSI实例的学习转发功能,只需要考虑PE和PE之间PW的建立,此时就和L2 VPN的跨域理念和实现方法一模一样。
4.6 L2 VPN跨域和MPLS/BGP跨域的比较
项目VPN | MPLS/BGP VPN | L2 VPN | 备注 |
MARTINI | KOMPELLA |
协议 | MP-BGP | 扩展的远程LDP | MP-BGP | VPLS跨域和L2 VPN跨域相同 |
VPN信息内容 | VPN路由和标签 | VC ID和标签 | CE ID和标签块 |
跨域方法 | OPTION A/B/C | OPTION A/C | OPTION A/B/C |
网络拓扑 | 复杂 | 简单 | 复杂 |
5. 华为公司产品对VPN跨域的支持
华为公司充分考虑了运营商VPN业务发展的需求,对作为PE和ASBR的系列设备的VPN功能进行了全面开发,以适应不同厂家设备的对接以及应对不同发展阶段的需求。华为公司的NE40/80,NE40E/80E是作为运营商网络中PE和ASBR的理想设备,它支持全面的MPLS VPN功能,包括MPLS/BGP VPN,MARTINI/KOMPELLA L2 VPN和VPLS,他们也支持MPLS/BGP VPN的三种跨域方法,支持MARTINI L2 VPN/VPLS的OPTION A/C的跨域方法以及KOMPELLA L2 VPN/VPLS的OPTION A/B/C的三种跨域方法