MPLSVPN跨域技术白皮书李劲松.pdf
MPLS VPN 跨域技术白皮书 一MPLS VPN 的体系结构理解 在这里我们说明几个概念:LSP,VPN 的 LSP,公网 LSP,BGP LSP 1)LSP:一段标签路径 2)公网的 LSP:使用 LDP 或是 RSVP 信令协议,使用公网路由触发创建的 LSP,是两个 PE 设备之间的一条隧道。3)VPN 的 LSP:通过 VPN 路由触发创建的 LSP,是两个 VPN 之间的一条隧道,由于每个 PE 上可以有多个 VPN 存在,VPN 的 LSP 要保证当一个数据报文从这条 LSP 到达一个PE 后,它必须能区分出,这个数据报文是属于哪个 VPN 的。因此也是一条 LSP 隧道,虽然仅仅只有一跳。4)BGP 的 LSP:是使用 BGP 作为信令为公网的 BGP 路由分配的标签路径,符合标准 RFC3107。MPLS VPN 的基本框架是两层的标签,或说是两层的 LSP,或是两层的隧道,隧道是迭加在一起的,职责分别是,公网的隧道保证数据报文送到某个指定的 PE,VPN 的隧道负责报文送到某个指定的 VPN。后面将使用上面的这些概念来分析几种不同的跨域 VPN 解决方案 二跨域 VPN 的需求产生 随着 MPLS VPN 解决方案的越来越流行,服务的终端用户的规格和范围也在增长,在一个特殊的企业内部的站点数目越来越大,某个地理位置与另外一个服务提供商相连的可能性的需求变得非常的普遍,比如我们国内运营商的不同城域网之间,或是同骨干网之间都存在着非常现实的跨越不同自治域问题,这些都需要一个不同于基本的 MPLS VPN 体系结构所提供的互连模型跨域的 MPLS VPN,为了支持服务提供商之间的 VPN 路由选择信息交换,需要一个新的机制,以便可以穿过提供商间的链路来广播路由前缀和标签信息,但是一般的 MPLS VPN 体系结构都是在一个自治系统内运行,任何 VPN 的路由信息都是可以在一个自治系统内按需扩散,就是没有提供一个自治系统内的 V PN 信息向其他服务商所属的自治系统扩散的功能,因此,为了支持以上的跨域 VPN 的需求,就需要扩展现有的协议和修改 MPLS VPN 体系框架。以上图示仅仅是跨越两个自治域的 VPN 客户互连,当然现实中也可能需要跨越更多的自治域。现在解决以上跨域问题的技术方案主要有三种,1)VRF-TO-VRF(背靠背方式)2)MP-EBGP(单跳的 MP-EBGP 方式)3)MULTIHOP-EBGP(多跳的 MP-EBGP 方式)三VRF-TO-VRF 方式(背靠背方式)1方案描述 ASBR1 ASBR2 VPN-A-1 VPN-A-2 PE-1 PE2 CE2 CE-1 AS#1 AS#2 149.27.2.0/24 怎么让两个AS内VPN可以互通?VPN 用户连接在不同的AS上 PE-1 PE-2 AS#1 AS#2 CE-1 VPN-A-1 VPN-A-2 CE-2 CE-3 在ASBR之间进行VPN实例的一一影射 CE-4 VPN-A VPN-A VPN-B VPN-B VPN-B-1 VPN-A-1 PE-ASBR-2 PE-ASBR-1 对于一个需要跨域的 VPN 客户:VPN-A,需要在所在自治域的 PE-ASBR 上配置一个相同的 VPN,如上图所示,分别在 PE-ASBR-1 和 PE-ASBR-2 上配置一个 VNP-A,然后在这两个 ASBR 上创建一个逻辑链路(或是物理链路),分别将 VPN-A 关联到这条链路上。在这种应用中,其实是把 ASBR 作为了一个 PE 设备,在这个 PE 上创建了一个相同的 VPN,然后把对端的 ASBR 看作自己的 CE 设备,这样对于两个自治域而言,就是是在运营一个域内的 MPLS VPN 业务一样,先把域内的 VPN 信息扩散到 ASBR 上(其实就是 PE 设备),然后再把 VPN 信息扩散到对端的 ASBR(相当与是自己的 CE 设备),这个 ASBR 上的 VPN接收下 VPN 信息后(其实相当于另外一个自治域的 PE 设备),再把他扩散到自己域内的 PE设备。最终到达 CE 设备,这样就实现了两个自治域内的 VPN 路由信息的交互。2路由信息的扩散 控制信令:在 PE 和 ASBR 之间仍然跑 MP-IBGP 协议,在两个 ASBR 之间的两个VPN 之间可以跑普通的 PE-CE 路由协议,建议跑 BGP 协议,或是静态路由,因为这是两个ASBR 之间的信令交互。以上应用的信令和普通的一个自治域内的 MPLS VPN 是一样的,因此在这个方案里是不需要扩展任何信令协议,也不需要增加任何特殊的处理流程。因此是天然支持的 路由信息交互流程,比如在 CE1 中有一条 10.0.0.0/8 的路由信息,它的发扩散流程如下:D代表目的网段,N 代表下一跳,label:代表所携带的标签,PE 和 ASBR 之 间使用云团表示,是代表之间可能还有 P 设备,虚线代表逻辑连接 PE1 发送给 ASBR1 的仍然是带标签的私网路由,两个 ASBR 之间交互的是普通的 IPV4的路由信息。D:10.0.0.0/8 N:pe-asbr-1 ce3 D:10.0.0.0/8 N:pe2 ce1 pe1 pe-asbr-1 pe-asbr-1 pe2 D:10.0.0.0/8 N:ce1 D:10.0.0.0/8 N:pe1 label:L1 D:10.0.0.0/8 N:pe-asbr-1 Label:L2 AS#1 AS#2 vpn lsp 公网 lsp vpn lsp 公网 lsp IP 3VPN 报文数据转发流程 数据报文在每个 AS 内还是和普通的域内的 MPLS VPN 是一样的标记转发,由于 PE和 ASBR 之间可能有 P 设备因此报文转发时,需要加上域内的标签,报文中的两层标记是制域内的 P 设备上的转发情况,到 PE 设备上,如果支持的倒数第二跳弹出的话,应该只剩下一层标签,图中通用两层标签来表示。在两个 ASBR 之间是普通的 IP 转发,这也就是为什么对于不同的 VPN,需要在 ASBR 之间需要独享的逻辑链路原因了,因为是 IP 报文转发,是不能区分 VPN 的,因此必须是独享的逻辑链路 根据上面我们分析的 MPLS VPN 的体系结构,可以将这种方案图示如下:4方案的关键点描述 为了支持不同自治域的 VPN 互通,必须在 ASBR 路由器上对应配置相同的 VPN,如果跨越多个自治域,配置工作量很大,且对中间域影响比较大,中间域必须支持 VPN 业务,另外如果 VPN 比较多,那在每一个 ASBR 上的配置工作量也是很大的。不过此方案应用非常简单,且不要扩展协议和做特殊配置,属于天然支持,在需要跨域的 VPN 数量比较少的情况,可以考虑使用,简单的也是实用的。四MP-EBGP 方式(单跳 MP-EBGP 方式)1方案描述 Lx l2 IP ce1 pe1 pe-asbr-1 pe-asbr-1 pe2 ce3 AS#1 AS#2 IP IP Lx l1 IP IP 在两个 ASBR 之间运行 MP-EBGP 协议,MP-EBGP 协议将一个域内的所有的 VPN 信息传递给另外一个域,传递的是私网路由和标签信息,因为 MP-EBGP 在传递路由时,是要改变路由的下一跳,根据一个标签分配的原则,当一个 FEC 的下一跳被改变时,必须在本地更换标签,因此 ASBR 在收到域内的 VPN 路由信息,再向外发布时,必须给这些 VPN路由信息重新分配标签,VPN 路由信息伴随着新的标签被发布出去,而在 ASBR 本地,新旧标签形成一个标签的交换操作。对端的 ASBR 收到从 MP-EBGP 来的 VPN 路由信息后,在本地保存,在继续向自己域内的 PE 设备扩散,当这个 ASBR 向域内的 MP-IBGP 邻居发布路由时,它可以选择不改变路由的下一跳,或是将路由的下一跳改为自己,如果改变了路由的下一跳,同上面的标签分配原则,也需要为这些 VPN 路由重新分配标签,在本地形成标签的交换操作。2路由信息的扩散 根据 ASBR 向 IBGP 发送 VPN 路由时是否改变路由的下一跳,我们分别图示它们的标签路径 1)不改变 VPN 路由的下一跳 MP-eBGP PE-1 PE-2 AS#1 AS#2 CE-1 VPN-A-1 VPN-A-2 CE-2 CE-3 VVPN-B-2 CE-4 PE-ASBR-1 PE-ASBR-2 使 用 MP-eBGP交换VPN路由的标签 VPN-B-1 PE-ASBR-1 在收到 VPN 路由后,在向 PE-ASBR-2 发布路由时,为 VPN 路由新分了标签,在本地生成了标签交换(l1/l2),PE-ASBR-2 收到路由后因为没有改变路由的下一跳,所以就没有更换标签,因此我们从上图的 VPN LSP 来看,在 PE-ASBR-1 处因为有标签交换,所以可以看成是两条的 VPN LSP 被粘连在一起,再看公网的 LSP,在两个域内的建立情况是不一样的,AS#2 域内的 LSP 是一直建立到 PE-ASBR-1 路由器,也就是说在两个 ASBR之间需要运行 LDP 或是 RSVP 等信令协议。2)改变下一跳的情况 在 PE-ASBR-1 和 PE-ASBR-2 上分别对 VPN 路由变换了标签,因此看 VPN LSP,是相当于三条 VPN LSP 被粘连在一起了。由于两个 ASBR 之间有一段独立的 LSP,所以每个域内的 VPN LSP 只是建立在域内,和方式 1)是明显不一样的(它是建立到对端的 ASBR 路ce4 D:10.0.0.0/8 N:pe2 ce1 pe1 pe-asbr-1 pe-asbr-2 pe2 D:10.0.0.0/8 N:ce1 D:10.0.0.0/8 N:pe1 label:L1 D:10.0.0.0/8 N:pe-asbr-1 Label:l2 D:10.0.0.0/8 N:pe-asbr-1 Label:L2 AS#1 AS#2 vpn lsp 公网 lsp vpn lsp 公网 lsp vpn lsp P p ce3 D:10.0.0.0/8 N:pe2 ce1 pe1 pe-asbr-1 pe-asbr-2 pe2 D:10.0.0.0/8 N:ce1 D:10.0.0.0/8 N:pe1 label:L1 D:10.0.0.0/8 N:pe-asbr-1 Label:l2 D:10.0.0.0/8 N:pe-asbr-2 Label:L3 AS#1 AS#2 vpn lsp 公网 lsp vpn lsp 公网 lsp vpn lsp P p 由器上)。同样看公网的 LSP,都是建立在域内的,因此这种方式下,在两个 ASBR 之间是不需要运行 LDP 或是 RSVP 等信令协议的。3数据流程 1)ASBR 上不改变下一跳的情况 上图中标签 Lx,Ly,Lz 等是代表公网 LSP 的标签 2)ASBR 上改变下一跳的情况 4关键点分析 报文转发时,需要在两个 ASBR 上都要对 VPN 的 LSP 做一次交换。还有一个问题需要注意的是,这种解决方案需要在 ASBR 上接收本域内和域外传过来的所有 VPN 路由,ce1 公网 lsp Lz L1 IP L2 IP Lx L3 IP Ly L3 IP L1 IP ce3 pe1 pe-asbr-1 pe-asbr-1 pe2 AS#1 AS#2 vpn lsp 公网 lsp vpn lsp vpn lsp P p IP IP ce1 公网 lsp Lz L1 IP L2 IP Lx L2 IP Ly L2 IP L1 IP ce3 pe1 pe-asbr-1 pe-asbr-1 pe2 AS#1 AS#2 vpn lsp 公网 lsp vpn lsp vpn lsp P p IP IP 然后在把 VPN 给扩散出去,但是 MPLS VPN 的特性结构中要求,只有一个 PE 上有 VPN 匹配一条 VPN 路由时,这条 VPN 路由才会被保存下来,因此对于上述 ASBR 上需要保存 VPN路由的需求必须做特殊的配置(因为 ASBR 上可能根本就没有配置 VPN),让 ASBR 把收到的 VPN 路由全部的保存下来,而不管,本地是否有和它匹配的 VPN。由于这种方案需要在 ASBR 上保存所有的 VPN 路由,因此这本身就是对路由器提出了很高的要求,使 ASBR 更容易成为故障点。不过只要 VPN 的路由数量不是很多,这种方案不失为一种配置简单且实用的方案。五MUTIHOP-EBGP 方式(多跳 MP-EBGP 方式)1组网拓扑 在 MP-EBGP 方案中,VPN 的路由信息是通过自治域之间的 ASBR 路由器来保存和扩散的,当 VPN 路由比较多时,会对这台 ASBR 产生很大的压力,由于是要经过多个域的时候,在每个域的 ASBR 上都要保存相同的 VPN 路由,如果这种解决方案中的路由器同时也承当公网 IP 转发的 ASBR 时,对设备的要求就更高,因此 MP-EBGP 方案中,对于需要承担 VPN 路由信息的 ASBR 一般都单独设置,就是一般不让它同时充当 VPN 的 ASBR,又承当 IP 的 ASBR 功能。其实前面的两种解决方案中,考虑的都是怎么把一个域的 VPN 路由信息,怎么给中继到另外一个域中,都是通过一个中间设备,把路由收下来以后,继续向其他的域扩散。因此这也就把这些中继的路由器硬是套上了支持 VPN 特性的需求。尤其是在跨域比较多时,影响到的设备就尤其多,这个和 MPLS VPN 的基本思想,就是除了 PE 设备外,其他的设备都是开不见 VPN 信息的思想是相违背的。因此自然而然想到最好的解决办法就是,在跨域情况下,也和一个域的 MPLS VPN 网络一样,VPN 路由是直接可以扩散的,不需要中间设备的保存和扩散,其实 BGP 本身就是有这种功能的,就是两个不同的自治域,可以直接的建立 BGP 连接,交互路由信息,那对RR2 RR1 PE-1 PE-2 AS#1 AS#2 CE-1 VPN-A-1 VPN-A-2 CE-2 CE-3 VVPN-B-2 CE-4 ASBR-1 ASBR-2 用Multihop-eBGP交换VPN路由的标签 VPN-B-1 BGP4+与 VPN 的路由信息也是一样的,也是可以让两个自治域的 PE 设备(或是 RR)之间直接的交互 VPN 的路由信息。这点是很容易做到的,就是通过 MULTIHOP-EBGP 来实现,但是,这样我们只是解决了 VPN 信息的扩散问题,还有一种重要的问题要解决,那就是分属不同域的两个 PE 之间怎么建立一条公网的 LSP 呢(或是 LSP 隧道)?这也是 MULTIHOP-EBGP跨域 VPN 解决方案中,最需要解决的问题。2控制流程 由于 VPN 的路由信息获得是通过 MBGP 直接获得的,和普通的域内的 MPLS VPN 是一样的,因此我们在次对 VPN 路由信息的扩散,不做重点描述,主要描述公网隧道的建立问题。如图:PE1 和 PE2 就是分属两个不同域的 PE 设备,他们上面的 VPN 路由已经通过MULTIHOP-EBGP 方式已经发布出去,比如 PE2 收到 PE 上的一条 VPN 路由,它的下一跳是 10.0.0.1,现在需要的是在 PE2 上有一条目的地址为 10.0.0.1 的一条 LSP 隧道,下面我们就看这条隧道到底是怎么生成的。首先 PE1 把 VPN 路由的下一跳地址的网段路由 10.0.0.1/32 发布出去,通过域内的 IGP(pe1)(asbr-1)(asbr-2)(pe2)AS#1 AS#2(P)(p)D:10.0.0.1/32 D:10.0.0.1/32 N:pe1 D:10.0.0.1/32 N:asbr1 Label:L1 D:10.0.0.1/32 N:asbr2 Label:L2 BGP LSP 公网LSP 公网LSP 等使域内的路由器都可以学到这条路由,首先这条路由在自己的域内根据标签信令协议等创建了一条公网的 LSP,然后 ASBR1 把这条路由向对端的 ASBR2 发送时,要给这条路由分配一个标签 L1,就是形成一个 BGP 的 LSP,然后把这条 BGP 的 LSP 和刚才域内创建的 LSP粘连起来。对端的 ASBR2 学到这条公网路由后,再为这条公网分配一个新的标签 l2,在本地形成标签的交换信息,然后把这条路由发布给域内的 PE 设备 PE2。在这里要说明一点的是,两个 ASBR 之间虽然交互的公网路由,但是并不是普通的公网路由的报文格式,而是携带了标签的公网路由信息(遵循 RFC3107)。另外对于公网路由的标记分配,并不是两个 AS的每一条公网路由都需要分配标签的,只有那些充当了 VPN 路由的下一跳的网段才需要分配标签。PE2 通过新的 BGP 扩展协议获得了这个 VPN 路由的下一跳地址的路由后,由于是携带了标签,所以很容易识别,因为这条路由是 IBGP 学来的路由,所以肯定要根据 BGP 路由的下一跳地址来叠代一条域内的相同的 IGP 路由,在上图中,PE2 收到了 10.0.0.1/32 的路由信息,它的下一跳地址是 asbr-2 的接口网段,这个网段应该在域内已经创建了一条公网的LSP,这时将 10.0.0.1/32 的这条路由的 BGP 标签和根据它的下一跳地址找到的域内的公网LSP 叠加起来。这样在 PE2 上就形成了一个目的地址为 10.0.0.1 的公网 LSP 隧道。如上图所示,我们会注意到这条公网 LSP 和普通的 MPLS VPN 中的 LSP 隧道是不一样,主要表现在,在 AS#2 域中的公网 LSP 是两层的标签的,而在 AS#1 域中是单层的标签。隧道的两层标签中,上面的一条是公网的 LSP 和 BGP 的 LSP 粘连在一起的。而下面的一层仅仅是域内的普通的一条 LSP 隧道。这样我们就在 PE1 和 PE2 之间有了一条端到端的 LSP 隧道,将 VPN 路由关联到这条隧道上去,就可以支持跨域的 MPLS VPN 了 3数据流程 假设 PE2 收到了 PE1 的一条 VPN 路由,标签是 Lv,下一跳就是 PE1 的一个接口地址。那么转发的数据流程如下:报文从 PE2 转出时,需要压上三层标签,分别的 VPN 路由的标签,BGP LSP 的标签,公网 LSP 的标签。到 ASBR2 时,就只剩下两层标签了,分别是 VPN 的路由标签和 BGP LSP的标签,进入 ASBR1 后,BGP LSP 就终结掉了,就剩下 VPN 路由的标签和公网 LSP 的标签了,以后就是普通的 MPLS VPN 的转发流程了。4关键点分析 MULTIHOP-EBGP 的跨域方案应该说是最理想的,因为它符合 MPLS VPN 的体系结构的一些要求,比如 VPN 的路由信息只出现在 PE 设备上,而 P 路由器只负责报文的转发,这样就使中间域的设备可以不支持 MPLS VPN 业务,就是一个普通的支持 IP 转发的ASBR 路由器,在充当以上跨域的前提下,还可以同时支持普通的 IP 业务。尤其是在跨越多个域时优势更加明显,而且这个方案更适合支持 MPLS VPN 的负载分担等功能。而且没有可能会成为性能瓶颈的点。不过由于这种解决方案中需要对普通的 BGP 做扩展,且隧道的生成也是有别于普通的 MPLS VPN 结构,因此维护和理解起来难度比较大。六应用推荐 除了上面的这些典型的跨域方案外,还有一些和普通的 IP 隧道结合的跨域方案,比如通过在几个自治间直接使用 GRE 隧道打通,这样就大大的简化了跨域的应用,也不失是在特定环境下的优秀方鞍。另外以上的各种跨域方案的分析主要是结合 MPL2 L3VPN 讨论,不过这些方案也适用(pe1)(asbr-1)(asbr-2)(pe2)AS#1 AS#2(P)(p)BGP LSP 公网LSP 公网LSP IP IP Lv IP Lv L2 IP L1 IP Lv Ly IP Lv IP Lx L2 于 MPLS L2VPN 应用,不再赘述。