MPLS L3VPN基本原理

1,423 阅读11分钟

@[toc]

概述

MPLSL3VPN是服务提供商VPN解决方案中一种基于PE的L3VPN技术,它使用BGP在服务提供商骨干网上发布VPN路由,使用MPLS在服务提供商骨干网上转发VPN 报文。 MPLSL3VPN组网方式灵活、可扩展性好,并能够方便地支持MPLSQoS和MPLSTE,因此得到越来越多的应用。 MPLS L3VPN 模型由三部分组成:CE、PE和P。

CE(CustomerEdge)设备:用户网络边缘设备,有接口直接与SP(Service Provider,服务提供商)相连。CE 可以是路由器或交换机,也可以是一台主机。CE“感知”不到VPN的存在,也不需要必须支持MPLS。
PE(Provider Edge)路由器:服务提供商边缘路由器,是服务提供商网 络的边缘设备,与用户的CE直接相连。在MPLS网络中,对VPN 的所有处理都发生在PE 上。
P(Provider)路由器:服务提供商网络中的骨干路由器,不与CE直接相 连。P设备只需要具备基本MPLS转发能力。

图1是一个MPLS L3VPN 组网方案的示意图。

CE和PE 的划分主要是根据SP与用户的管理范围,CE和PE 是两者管理范围的边界。

CE设备通常是一台路由器,当CE 与直接相连的PE 建立邻接关系后,CE把本站点的 VPN路由发布给PE,并从PE学到远端VPN 的路由。CE与PE之间使用BGP/IGP交换路 由信息,也可以使用静态路由。

PE从CE 学到CE 本地的VPN 路由信息后,通过BGP与其它PE交换VPN 路由信息。 PE路由器只维护与它直接相连的VPN 的路由信息,不维护服务提供商网络中的所有 VPN 路由。

P路由器只维护到PE的路由,不需要了解任何VPN 路由信息。

当在MPLS骨干网上传输VPN流量时,入口PE 做为Ingress LSR(Label Switch Router,标签交换路由器),出口PE做为 Egress LSR,P路由器则做为Transit LSR。

基本概念

1. Site

在介绍VPN 时经常会提到“Site”,Site(站点)的含义可以从下述几个方面理解:

Site是指相互之间具备IP连通性的一组IP系统,并且,这组IP系统的IP 连通性不需通过服务提供商网络实现;

Site的划分是根据设备的拓扑关系,而不是地理位置,尽管在大多数情况 下一个Site中的设备地理位置相邻;

一个 Site中的设备可以属于多个VPN,换言之,一个Site可以属于多个 VPN;

Site通过CE 连接到服务提供商网络,一个Site可以包含多个CE,但一个 CE只属于一个Site。

对于多个连接到同一服务提供商网络的Sites,通过制定策略,可以将它们划分为不同 的集合(set),只有属于相同集合的Sites之间才能通过服务提供商网络互访,这种集合 就是VPN。

2. 地址空间重叠

VPN是一种私有网络,不同的VPN独立管理自己使用的地址范围,也称为地址空间 (Address Space)。

不同VPN的地址空间可能会在一定范围内重合,比如,VPN1 和VPN2 都使用了 10.110.10.0/24网段的地址,这就发生了地址空间重叠(OverlappingAddressSpaces)。

3. VPN实例

在MPLSVPN 中,不同VPN 之间的路由隔离通过VPN 实例(VPN-instance)实现。 PE为每个直接相连的Site建立并维护专门的VPN 实例。VPN 实例中包含对应Site的 VPN成员关系和路由规则。如果一个 Site中的用户同时属于多个VPN,则该 Site的VPN 实例中将包括所有这些VPN的信息。

为保证VPN 数据的独立性和安全性,PE 上每个VPN 实例都有相对独立的路由表和 LFIB(Label Forwarding Information Base,标签转发表)。

具体来说,VPN 实例中的信息包括:标签转发表、IP路由表、与VPN 实例绑定的接 口以及VPN 实例的管理信息。VPN实例的管理信息包括RD(RouteDistinguisher,路由 标识符)、路由过滤策略、成员接口列表等。

4.VPN-IPv4地址

传统BGP无法正确处理地址空间重叠的VPN 的路由。假设VPN1 和VPN2 都使用了 10.110.10.0/24网段的地址,并各自发布了一条去往此网段的路由,BGP将只会选择其中 一条路由,从而导致去往另一个VPN的路由丢失。

PE路由器之间使用MP-BGP来发布VPN 路由,并使用VPN-IPv4 地址族来解决上述 问题。

VPN-IPv4 地址共有12个字节,包括8字节的RD和4字节的IPv4 地址前缀。

图2 VPN-IPv4 地址结构

PE从CE 接收到普通IPv4 路由后,需要将这些私网VPN路由发布给对端PE。私网路 由的独立性是通过为这些路由附加RD实现的。

SP可以独立地分配RD,但必须保证RD的全局唯一性。这样,即使来自不同服务提供 商的VPN使用了同样的IPv4地址空间,PE 路由器也可以向各VPN 发布不同的路由。

建议为PE上每个VPN 实例配置专门的RD,以保证到达同一CE的路由都使用相同的 RD。RD为0的VPN-IPv4 地址相当于全局唯一的IPv4 地址。

RD的作用是添加到一个特定的IPv4 前缀,使之成为全局唯一的VPN IPv4 前缀。

RD或者是与自治系统号(ASN)相关的,在这种情况下,RD是由一个自治系统号和 一个任意的数组成;或者是与IP地址相关的,在这种情况下,RD是由一个IP地址和一个 任意的数组成。

RD有三种格式,通过2字节的Type字段区分:

Type 为0时,Administrator子字段占2字节,Assigned number子字 段占4字节,格式为:16bits自治系统号:32bits用户自定义数字。例如:100:1
Type 为1时,Administrator子字段占4字节,Assigned number子字 段占2字节,格式为:32bitsIPv4地址:16bits用户自定义数字。例如:172.1.1.1:1
Type 为2时,Administrator子字段占4字节,Assigned number子字 段占2字节,格式为:32bits自治系统号:16bits用户自定义数字,其中的自治系统号最 小值为65536。例如:65536:1

为保证RD的全局唯一性,建议不要将Administrator子字段的值设置为私有AS号或 私有IP地址。

5. VPN Target属性

MPLSL3VPN 使用BGP扩展团体属性——VPN Target(也称为RouteTarget)来控 制VPN 路由信息的发布。

PE路由器上的VPN 实例有两类VPN Target 属性:

Export Target属性:在本地PE 将从与自己直接相连的Site学到的 VPN-IPv4 路由发布给其它PE 之前,为这些路由设置Export Target属性;
Import Target属性:PE 在接收到其它PE路由器发布的VPN-IPv4 路由 时,检查其Export Target属性,只有当此属性与PE上VPN实例的Import Target属性 匹配时,才把路由加入到相应的VPN路由表中。 也就是说,VPN Target属性定义了一条VPN-IPv4 路由可以为哪些Site所接收,PE 路由器可以接收哪些Site发送来的路由。

与RD类似,VPN Target也有三种格式:

16bits 自治系统号:32bits用户自定义数字,例如:100:1。
32bits IPv4 地址:16bits用户自定义数字,例如:172.1.1.1:1。
32bits 自治系统号:16bits用户自定义数字,其中的自治系统号最小值为 65536。例如:65536:1。

6. MP-BGP

MP-BGP(Multiprotocol extensions for BGP-4)在PE路由器之间传播VPN组成 信息和路由。MP-BGP向下兼容,既可以支持传统的IPv4地址族,又可以支持其他地址族 (比如VPN-IPv4 地址族)。使用MP-BGP既确保VPN 的私网路由只在VPN 内发布,又 实现了MPLS VPN成员间的通信。

7. 路由策略(Routing Policy)

在通过入口、出口扩展团体来控制VPN 路由发布的基础上,如果需要更精确地控制 VPN路由的引入和发布,可以使用入方向或出方向路由策略。 入方向路由策略根据路由的VPN Target属性进一步过滤可引入到VPN实例的路由, 它可以拒绝接收引入列表中的团体选定的路由,而出方向路由策略则可以拒绝发布输出列表 中的团体选定的路由。 VPN实例创建完成后,可以选择是否需要配置入方向或出方向路由策略。

8. 隧道策略(Tunneling Policy)

隧道策略用于选择给特定VPN 实例的报文使用的隧道。 隧道策略是可选配的,VPN实例创建完成后,就可以配置隧道策略。缺省情况下,选 择LSP做为隧道,不进行负载分担(负载分担条数为1)。另外,隧道策略只在同一AS域 内生效。

报文转发

在基本MPLSL3VPN 应用中(不包括跨域的情况),VPN 报文转发采用两层标签方式:

第一层(外层)标签在骨干网内部进行交换,指示从PE到对端PE的一条 LSP。VPN 报文利用这层标签,可以沿LSP到达对端PE;
第二层(内层)标签在从对端PE到达CE 时使用,指示报文应被送到哪个 Site,或者更具体一些,到达哪一个CE。这样,对端PE根据内层标签可以找到转发报文的 接口。

特殊情况下,属于同一个VPN 的两个Site连接到同一个PE,这种情况下只需要知道 如何到达对端CE。

图3 VPN 报文转发示意图

  • Site 1发出一个目的地址为1.1.1.2的IP报文,由CE 1将报文发送至PE 1。
  • PE1根据报文到达的接口及目的地址查找VPN 实例表项,匹配后将报文转发 出去,同时打上内层和外层两个标签。
  • MPLS网络利用报文的外层标签,将报文传送到PE 2(报文在到达PE 2前一 跳时已经被剥离外层标签,仅含内层标签)。
  • PE2根据内层标签和目的地址查找VPN 实例表项,确定报文的出接口,将报 文转发至CE 2。
  • CE 2根据正常的IP转发过程将报文传送到目的地。

路由信息发布

在基本MPLSL3VPN 组网中,VPN 路由信息的发布涉及CE和PE,P路由器只维护骨 干网的路由,不需要了解任何VPN路由信息。PE路由器也只维护与它直接相连的VPN 的 路由信息,不维护所有VPN路由。因此,MPLS L3VPN 网络具有良好的可扩展性。

VPN路由信息的发布过程包括三部分:本地CE到入口PE、入口PE到出口PE、出口 PE到远端CE。完成这三部分后,本地CE与远端CE之间将建立可达路由,VPN 私网路由 信息能够在骨干网上发布。

下面分别对这三部分进行介绍。

  1. 本地CE到入口PE的路由信息交换

CE与直接相连的PE 建立邻接关系后,把本站点的VPN 路由发布给PE。 CE与PE 之间可以使用静态路由、RIP、OSPF、IS-IS或EBGP。无论使用哪种路由协 议,CE发布给PE 的都是标准的IPv4路由。

  1. 入口PE 到出口PE的路由信息交换

PE从CE 学到VPN 路由信息后,为这些标准IPv4路由增加RD和VPN Target属性, 形成VPN-IPv4 路由,存放到为CE 创建的VPN 实例中。 入口PE通过MP-BGP把VPN-IPv4 路由发布给出口PE。出口PE根据 VPN-IPv4 路 由的ExportTarget属性与自己维护的VPN 实例的Import Target属性,决定是否将该路 由加入到VPN实例的路由表。 PE之间通过IGP来保证内部的连通性。

  1. 出口PE 到远端CE的路由信息交换

远端CE有多种方式可以从出口PE学习VPN 路由,包括静态路由、RIP、OSPF、IS-IS 和EBGP,与本地CE 到入口PE 的路由信息交换相同。