MPLS VPN相关知识


[TOC]

MPLS VPN相关知识

VPN [Virtual Private Network,虚拟专用网络] 指的是在一个公共网络中实现虚拟的专用网络,从而使得用户能够基于该专用网络实现通信的技术

MPLS VPN也是VPN技术中的一种。本章所介绍的MPLS VPN指的是BGP/MPLS IP VPN,这是一种被业界广泛使用的三层VPN

MPLS VPN原理与配置

MPLS VPN概述

BGP/MPLS IP VPN网络一般由运营商搭建,VPN用户购买VPN服务来实现用户网络之间的路由传递、数据互通等

MPLS VPN使用BGP在运营商骨干网上发布VPN路由,使用MPLS在运营商骨干网上转发VPN报文

BGP/MPLS IP VPN又被简称为MPLS VPN,是一种常见的L3VPN [Layer 3 VPN] 技术

MPLS VPN网络架构

MPLS VPN网络架构由三部分组成:CE [Customer Edge]PE [Provider Edge]P [Provider] ,其中PE和P是运营商设备,CE是MPLS VPN用户设备

站点 [site] 就是MPLS VPN的用户,由CE和其他用户设备构成

  • CE:用户网络边缘设备 [Customer Edge],有接口直接与运营商网络相连
    • CE可以是路由器或交换机,也可以是一台主机。通常情况下,CE感知不到VPN的存在,不需要支持MPLS
  • PE:运营商边缘路由器 [Provider Edge],是运营商网络的边缘设备,与CE直接相连
    • 在MPLS网络中,对VPN的所有处理都发生在PE上,对PE性能要求较高
  • P:运营商网络中的骨干路由器 [Provider],不与CE直接相连
    • P设备只需要具备基本MPLS转发能力,不维护VPN相关信息
MPLS VPN网络架构

站点的含义可以从下述几个方面理解:

  • 站点是指相互之间具备IP连通性的一组IP系统,并且这组IP系统的IP连通性不需通过运营商网络实现

  • 站点的划分是根据设备的拓扑关系,而不是地理位置

站点与VPN的关系

  • 对于多个连接到同一服务提供商网络的站点,通过制定策略,可以将它们划分为不同的集合,只有属于相同集合的站点之间才能通过服务提供商网络互访,这种集合就是VPN
  • 一个Site中的设备可以属于多个VPN,换言之,一个Site可以属于多个VPN
  • 出现站点为一台主机的情况,此时该主机就是CE设备

MPLS VPN技术架构

MPLS VPN不是单一的一种VPN技术,是多种技术结合的综合解决方案,主要包含下列技术:

  • MP-BGP:负责在PE与PE之间传递站点内的路由信息
  • LDP:负责PE与PE之间的隧道建立
  • VRF:负责PE的VPN用户管理
  • 静态路由、IGP、BGP:负责PE与CE之间的路由信息交换

MPLS VPN的优势

  • 对VPN客户而言:
    • 感知不到VPN的存在,不需要部署和维护VPN,降低企业运维难度和成本
    • 一般部署在运营商的MPLS VPN专网上,有一定的安全性保障
  • 对于运营商而言:
    • MPLS在无连接的IP网络中增加了面向连接的控制平面,为IP网络增添了管理和运营的手段
    • 支持地址空间重叠、支持重叠VPN、组网方式灵活、可扩展性好
    • 能够方便地支持MPLS TE合理调控现有网络资源,最大限度的节省运营商成本

补充:

MPLS TE [MPLS Traffic Engineering,MPLS流量工程] :基于一定约束条件LSP隧道,并将流量引入到这些隧道中进行转发,使网络流量按照指定的路径进行传输

  • 可以在不进行硬件升级的情况下对现有网络资源进行合理调配和利用,并对网络流量提供带宽和QoS保证,最大限度的节省成本
MPLS VPN常见组网

根据VPN用户的需求不同,可采用以下几种常见的组网方案:

  • Intranet:一个VPN中的所有用户形成闭合用户群,同一VPN站点之间可以互访,不同VPN站点间不能互访
  • Extranet适用于一个VPN用户希望提供部分本VPN的站点资源给其他VPN的用户访问的场景
  • Hub&Spoke:如果希望在VPN中设置中心访问控制设备,其它用户的互访都通过中心访问控制设备进行,可采用Hub&Spoke组网方案

MPLS VPN路由交互

MPLS VPN控制层面

  • 通过VRF和RD隔离不同用户的私网路由信息并构建唯一的VPNv4路由
  • 通过RT值控制VPNv4路由的发布和接收
  • 通过MP-BGP传递VPNv4路由前缀、标签以及RT等信息
  • 通过MPLS LDP构建公网标签转发路径

MPLS转发层面:通过内外两层标签进行数据转发,内层标签区分私网数据,外层标签穿通公网网络

MPLS VPN路由发布概述

在基本MPLS VPN组网中,VPN路由信息的发布涉及CE和PE,P路由器只维护骨干网的路由,不需要了解任何VPN路由信息。VPN路由信息的发布过程包括三部分:

  • 本地CE到入口PE、入口PE到出口PE、出口PE到远端CE

CE与PE之间的路由信息交换

  • CE与PE之间可以使用静态路由、OSPF、IS-IS或BGP交换路由信息。无论使用哪种路由协议,CE和PE之间交换的都是标准的IPv4路由
  • 本地CE到入口PE和出口PE到远端CE的路由信息交换原理完全相同

入口PE到出口PE路由传递

一、不同的客户使用重叠IP地址空间的问题

PE在接收到CE传递来的路由之后,需要独立保存不同VPN的路由,且需要解决不同的客户使用重叠IP地址空间的问题

解决不同的客户使用重叠IP地址空间的问题产生的原因

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

不同VPN的地址空间可能会在一定范围内重合,这就发生了地址空间的重叠 [Address Spaces Overlapping]

以下两种情况允许VPN使用重叠的地址空间:

  • 两个VPN没有共同的站点
  • 两个VPN有共同的站点,但此共同站点中的设备不与两个VPN中使用重叠地址空间的设备互访

VRF [Virtual Routing and Forwarding,虚拟路由转发] ,又称VPN实例,是MPLS VPN架构中的关键技术,每个VPN实例使用独立的路由转发表项,实现VPN之间的逻辑隔离

**RD [ Route Distinguisher,路由标识符 ] **

  • RD长8字节,用于区分使用相同地址空间的IPv4前缀
  • PE从CE接收到IPv4路由后,在IPv4前缀前加上RD,转换为全局唯一的VPN-IPv4路由

配置RD时,只需要指定RD的Administrator子字段和Assigned Number子字段

RD的配置格式有四种,常用的两种如下:

  • 16bits自治系统号:32bits用户自定义数字
  • 32bits IPv4地址:16bits用户自定义数字

RD的结构使得每个运营商可以独立地分配RD,但为了在某些应用场景下保证路由正常,必须保证RD全局唯一

VPN-IPv4地址

VPN-IPv4地址称为VPNv4地址:VPNv4地址共有12个字节,包括8字节的路由标识符RD [Route Distinguisher] 和4字节的IPv4地址前缀

二、通过BGP进行路由传递

PE之间建立BGP邻居关系,并通过BGP进行路由传递

采用BGP的优势:

  • BGP使用TCP作为其传输层协议,提高了协议的可靠性。可以跨路由器的两个PE设备之间直接交换路由
  • BGP拓展性强,为PE间传播VPN路由提供了便利
  • PE之间需要传送的路由条目可能较大,BGP只发送更新的路由,提高传递路由数量且不占用过多链路带宽

传统的BGP-4不支持处理VPNv4路由

MP-BGP

为了正确处理VPN路由,MPLS VPN使用[RFC2858 Multiprotocol Extensions for BGP-4] 中规定的MP-BGP,即BGP-4的多协议扩展

MP-BGP采用地址族 [Address Family] 来区分不同的网络层协议,既可以支持传统的IPv4地址族,又可以支持其它地址族

MP-BGP新增了两种路径属性:

  • MP_REACH_NLRI:Multiprotocol Reachable NLRI多协议可达NLRI。用于发布可达路由及下一跳信息
  • MP_UNREACH_NLRI:Multiprotocol Unreachable NLRI多协议不可达NLRI。用于撤销不可达路由
  • NLRI:Network Layer Reachability Information,网络层可达信息

  • MP_REACH_NLRI用于发布可达路由及下一跳信息。该属性由一个或多个三元组<地址族信息、下一跳信息、网络可达性信息>组成,格式如下:

    • 地址族信息域 [Address Family Information] :由2字节的地址族标识AFI [Address Family Identifier] 和1字节的子地址族标识SAFI [Subsequent Address Family Identifier] 组成
      • AFI标识网络层协议,对应RFC3232的Address Family Number所定义的地址族值
        • IPv4的值是1,IPv6的值是2
      • SAFI表示NLRI的类型。AFI值为1,SAFI值为128表示NLRI中的地址为MPLS-labeled VPN-IPv4地址
    • 下一跳信息域 [Next Hop Network Address Information] :由一字节的下一跳网络地址长度和可变长度的下一跳网络地址组成
    • 网络层可达性信息域 [NLRI] :由一个或多个三元组<长度、标签、前缀>组成,该部分内容将在后面的课程里详细介绍

MP_UNREACH_NLRI用于通知对等体删除不可达的路由

该属性的格式如下:

  • 地址族标识AFI:与MP_REACH_NLRI属性中的相同
  • 子地址族标识SAFI:与MP_REACH_NLRI属性中的相同,表示NLRI的类型
  • 撤销路由 [Withdrawn Routes] :不可达路由列表,也是由一个或多个NLRI组成。BGP发言者可以通过在撤销路由域中携带与之前发布的可达路由中相同的NLRI来撤销路由

MP-BGP的报文类型、VPNv4路由发布策略仍与普通BGP相同

三、MP-BGP将VPNv4传递到远端PE

MP-BGP将VPNv4传递到远端PE之后,远端PE需要将VPNv4路由导入正确的VPN实例

MPLS VPN使用BGP扩展团体属性-VPN Target [也称为Route Target] 来控制VPN路由信息的发布与接收

本地PE在发布VPNv4路由前附上RT属性,对端PE在接到VPNv4路由后根据RT将路由导入对应的VPN实例

BGP扩展团体属性 RT

与RD相同,RT由Type、Administrator和Assigned Number三个字段构成,长度也是8字节

  • 配置VPN-Target时,只需要指定VPN-Target的Administrator子字段和Assigned Number子字段
  • VPN-Target的配置格式与RD格式一致

在PE上,每一个VPN实例都会与一个或多个VPN Target属性绑定,有两类VPN Target属性:

  • Export Target [ERT] :本地PE从直接相连站点学到IPv4路由后,转换为VPN IPv4路由,并为这些路由添加Export Target属性
    • Export Target属性作为BGP的扩展团体属性随路由发布
  • Import Target [IRT] :PE收到其它PE发布的VPN-IPv4路由时,检查其Export Target属性
    • 当此属性与PE上某个VPN实例的Import Target匹配时,PE就把路由加入到该VPN实例的路由表
四、PE根据VPNv4路由所携带的RT将路由导入正确的VPN实例之后

PE根据VPNv4路由所携带的RT将路由导入正确的VPN实例之后,VPNv4路由的RD值剥除,将IPv4路由通告给相应的客户的CE设备

外层标签 [公网标签] 由LDP为VPN路由的NextHop [一般是PE的某个接口地址]分发,P根据外层标签转发数据到PE

内层标签 [私网标签] 由PE的MP-BGP为VPN路由分发。PE根据内层标签确定数据所属的VPN

五、
  • PE和P设备之间运行LDP,交换公网标签,建立PE之间的LSP隧道 [公网隧道]
  • 入口PE在通过MP-BGP传递VPNv4路由时,会携带私网标签,用于区分不同VPN的数据
  • 出口PE在接收到VPNv4路由后,需要执行私网路由交叉和隧道迭代来选择路由

PE上分配私网标签的方法有如下两种:

基于路由的MPLS标签分配:为VPN路由表的每一条路由分配一个标签 [one label per route ]

  • 缺点:当路由数量较多时,设备入标签映射表ILM [Incoming Label Map] 需要维护的表项也会增多,从而提高了对设备容量的要求

基于VPN实例的MPLS标签分配:为整个VPN实例分配一个标签,该VPN实例里的所有路由都共享一个标签

  • 优点:节约标签

私网路由交叉:VPNv4路由与本地VPN实例的VPN-Target进行匹配的过程称为私网路由交叉。PE在收到VPNv4路由后,既不进行优选,也不检查隧道是否存在,直接将其与本地的VPN实例进行交叉

隧道迭代:为了将私网流量通过公网传递到另一端,需要有一条公网隧道承载这个私网流量。因此私网路由交叉完成后,需要根据目的IPv4前缀进行路由迭代,即该IPv4路由的下一跳有对应的LSP存在;只有隧道迭代成功,该路由才被放入对应的VPN实例路由表

MPLS VPN中的路由交互全过程

  1. IGP或者EBGP交换私网IPv4路由
  2. 客户私网路由被学习到VPN路由表中 [VPN实例路由表]
  3. IPv4路由引入到MP-BGP,RD被添加到IPv4路由上,构成VPNv4路由
  4. VPNv4路由被PE1通过MP-IBGP的Update消息通告给PE2
    • Update消息携带着MP_REACH_NLRI属性(包含VPNv4路由前缀,下一跳和标签等重要信息)和RT属性
  5. PE2根据RT将路由导入特定的VRF,同时将VPNv4路由的RD剥除,将IPv4路由通告给相应的客户的CE设备
  6. 客户IPv4路由被通告给CE设备

小结

在MPLS VPN中,PE与CE,PE与PE之间需要进行VPN路由信息的传递

  • PE与CE之间可以采用BGP、IGP以及静态路由方式交互IPv4路由信息
  • PE与PE之间通过MP-BGP交互VPNv4路由信息,包含:
    • RD:与IPv4前缀组合组成VPNv4前缀
    • RT:用于控制PE之间路由信息的接收和发布
    • 标签:数据转发时的内层(私网)标签,在PE上用来区分不同VPN的数据

MPLS VPN报文转发

以图中用户X的站点B访问站点A的192.168.1.0/24网段为例,报文转发过程如下:

报文转发过程
  1. CE3上存在到192.168.1.0/24网段路由,发送一个普通IP报文
  2. PE2根据报文入接口找到VPN实例,查找对应VPN的转发表
  3. 匹配目的IPv4前缀,并打上对应的内层标签 [I-L]
  4. 根据下一跳地址,查找对应的Tunnel-ID
  5. 将报文从隧道发送出去,即打上公网 [外层] MPLS标签头 [O-L1]
  6. 骨干网的所有P设备都对该报文进行外层标签交换,直到到达PE1
  7. PE1收到该携带两层标签的报文,交给MPLS处理,MPLS协议将去掉外层标签
  8. PE1继续处理内层标签:根据内层标签确定对应的下一跳,并将内层标签剥离后,以纯IPv4报文的形式发送给CE1
  9. CE1收到该IPv4报文后,进行常规的IPv4处理流程

MPLS VPN配置与实现

VPN实例配置

1. 创建VPN实例或进入VPN实例视图

[PE] ip vpn-instance vpn-instance-name	#缺省情况下,未配置VPN实例
参数 参数说明
vpn-instance-name 指定VPN实例的名称

2. 使能VPN实例的IPv4地址族或进入VPN实例IPv4地址族视图

[PE-vpn-instance-InstanceName] ipv4-family #缺省情况下,未使能VPN实例的IPv4地址族

3. 为VPN实例地址族配置路由标识RD

[PE-vpn-instance-InstanceName] route-distinguisher route-distinguisher 
  • RD常见格式有两种:
    • 2字节自治系统号:4字节用户自定义数
    • IPv4地址:2字节用户自定义数
  • 无论采用哪种格式,必须保证RD值全局唯一
  • VPN实例地址族下一旦配置RD后,RD将不能被修改或删除。如果要修改,需要去使能VPN实例相应的地址族或者删除VPN实例,然后再重新配置

4. 配置VPN实例的VPN-Target属性

[PE-vpn-instance-InstanceName] vpn-target vpn-target &<1-8> [ both | export-extcommunity | import-extcommunity ]

vpn-target命令用来配置VPN实例地址族入方向或出方向的VPN-Target扩展团体属性

  • VPN-Target的格式与RD一致
  • 一条vpn-target命令一次最多可配置8个VPN-Target。如希望配置更多的VPN-Target,可以多次使用vpn-target命令
参数 参数说明
vpn-target 指定vpn-target添加到VPN实例地址族的VPN-Target扩展团体列表
both 指定vpn-target添加到VPN实例地址族的入方向和出方向VPN-Target扩展团体属性列表中如果用户不指定关键字bothexport-extcommunityimport-extcommunity,则缺省为both
export-extcommunity 指定vpn-target添加到VPN实例地址族的出方向VPN-Target扩展团体属性列表中
import-extcommunity 指定vpn-target添加到VPN实例地址族的入方向VPN-Target扩展团体属性列表中

5. 将接口绑定到VPN实例

[PE-GigabitEthernet0/0/0]ip binding vpn-instance vpn-instance-name

ip binding vpn-instance命令用来将PE上的接口与VPN实例绑定。缺省情况下,接口不与任何VPN实例绑定,属于根实例。配置接口与VPN实例绑定后,或取消接口与VPN实例的绑定,都会清除该接口的IP地址、三层特性和IP相关的路由协议,如果需要应重新配置

MP-BGP配置

1. BGP基本配置

[PE] bgp { as-number-plain | as-number-dot }
参数 参数说明 取值
as-number-plain 指定整数形式的AS号 整数形式,取值范围是1-4294967295
as-number-dot 指定点分形式的AS号 格式为x.y,x的取值范围是1-65535,y的取值范围是0-65535
[PE-bgp] peer ipv4-address as-number as-number
[PE-bgp] peer ipv4-address connect-interface loopback interface-number

PE之间必须使用32位掩码的Loopback接口地址来建立MP-IBGP对等体关系,以便能够迭代到隧道

2. 使能与指定MP-BGP对等体之间交换VPNv4路由信息

[PE-bgp] ipv4-family vpnv4 [ unicast ]
[PE-bgp-af-vpnv4] peer ipv4-address enable

缺省情况下,只有BGP-IPv4单播地址族的对等体是自动使能的。即在BGP视图下配置peer as-number命令后,系统会自动配置相应的peer enable命令。其他地址族视图下都必须手动使能

3. 配置对VPNv4路由进行过滤

[PE-bgp-af-vpnv4] policy vpn-target

policy vpn-target命令用来对接收到的VPN路由根据VPN-Target进行过滤。缺省情况下,该功能已经使能。在某些特定组网场景下,需要手动关闭过滤

PE与CE间路由配置

1. PE与CE间采用EBGP传递路由

[PE-bgp] ipv4-family vpn-instance vpn-instance-name
[PE-bgp-InstanceName] peer ipv4-address as-number as-number
  • PE上需进入VPN实例IPv4地址族视图,并将CE配置为VPN私网对等体
  • CE上配置与普通EBGP配置相同,并将VPN路由通过import或network的方式引入BGP

2. PE与CE间采用IGP传递路由 [以OSPF为例]

[PE] ospf process-id [ router-id router-id ] vpn-instance vpn-instance-name
[PE-ospf-processid] import-route bgp [ permit-ibgp ] [ cost cost | route-policy route-policy-name | tag tag | type type ]
[PE-bgp] ipv4-family vpn-instance vpn-instance-name 
[PE-bgp] import-route ospf process-id [ med med | route-policy route-policy-name ]
  • PE上需要创建与VPN实例绑定的OSPF进程,并与CE建立OSPF邻居关系。同时需要在OSPF和BGP之间互相引入路由
  • CE上配置与普通OSPF配置相同

MPLS VPN部署与应用

MPLS VPN应用与组网概述

MPLS VPN典型应用

MPLS VPN的主要应用包括企业互连和虚拟业务网络

  • 企业互连应用:可通过MPLS VPN将分布在各地的分支机构和合作伙伴的IP网络连接在一起
  • 虚拟业务网络:可在同一物理网络上运行多种业务,如VoIP、IPTV,为每个业务建立一个VPN,实现业务隔离

MPLS VPN基本组网

内联网 Intranet

当采用Intranet组网方案时,一个VPN中的所有用户形成闭合用户群,相互之间能够进行流量转发,VPN中的用户不能与任何本VPN以外的用户通信,其站点通常是属于同一个组织

  • PE需要为每个站点创建VPN实例,并配置全网唯一的RD
  • PE通过配置Import RT和Export RT来控制不同VPN的站点做到无法互访
外联网 Extranet

当采用Extranet组网方案时,VPN用户可将部分站点中的网络资源给其他VPN用户进行访问

Hub&Spoke

当采用Hub&Spoke方案时,可以将多个站点中的一个站点设置为Hub站点,其余站点为Spoke站点。站点间的互访必须通过Hub站点,通过Hub站点集中管控站点间的数据传输

Hub&Spoke
  • Spoke站点需要把路由发布给Hub站点,再通过Hub站点发布给其他Spoke站点
    • Spoke站点之间不直接交互路由信息
  • Spoke-PE需要设置Export Target为Spoke,Import Target为Hub
  • Hub-PE上需要使用两个接口或子接口,一个用于接收Spoke-PE发来的路由,其VPN实例的Import Target为Spoke;另一个用于向Spoke-PE发布路由,其VPN实例的Export Target为Hub

MCE组网

具有MCE [Multi-VPN-Instance,CE多实例CE] 功能的CE设备可以在MPLS VPN组网应用中承担多个VPN实例的CE功能,减少用户网络设备的投入

  • MCE将PE的部分功能扩展到CE设备,通过将不同的接口与VPN绑定,并为每个VPN创建和维护独立的路由转发表 [Multi-VRF]
  • MCE与对应的PE之间可以通过物理接口、子接口或者逻辑接口进行互联,PE上需要将这些接口绑定到对应的VPN实例

MPLS VPN跨域组网

随着MPLS VPN解决方案的广泛应用,服务的终端用户的规格和范围也在增长,在一个企业内部的站点数目越来越大,某个地理位置与另外一个服务提供商相连的需求变得非常的普遍,存在着跨越不同自治系统的情况

AS之间的MPLS VPN部署需要通过跨域 [Inter-AS] MPLS VPN实现

RFC2547中提出了三种跨域VPN解决方案,分别是:

  • 跨域VPN-OptionA [Inter-Provider Backbones Option A] 方式:需要跨域的VPN在ASBR间通过专用的接口管理自己的VPN路由,也称为VRF-to-VRF
  • 跨域VPN-OptionB [Inter-Provider Backbones Option B] 方式:ASBR间通过MP-EBGP发布标签VPN-IPv4路由,也称为EBGP redistribution of labeled VPN-IPv4 routes
  • 跨域VPN-OptionC [Inter-Provider Backbones Option C] 方式:PE间通过Multi-hop MP-EBGP发布标签VPN-IPv4路由,也称为Multihop EBGP redistribution of labeled VPN-IPv4 routes

MPLS VPN典型应用场景与部署

Intranet场景

部署思路

  1. MPLS VPN骨干网配置
    1. IGP配置,实现骨干网的IP连通性
    2. MPLS与MPLS LDP配置,建立MPLS LSP公网隧道,传输VPN数据
    3. MP-BGP配置,建立后续传递VPNv4路由的MP-BGP对等体关系
  2. VPN用户接入配置
    1. 创建VPN实例并配置参数(RT、RD)
    2. 将接口加入VPN实例
    3. 配置PE与CE之间的路由交换
特殊场景下的BGP配置 - AS号替换

在MPLS VPN场景中,若PE与CE之间运行EBGP交互路由信息,则可能会出现两个站点的AS号相同的情况

  • 若CE1通过EBGP向PE1发送一条私网路由,并经过PE2发送到CE2,则CE2会由于AS号重复丢弃这条路由,导致属于同一VPN的Site 1和Site 2之间无法连通
  • 可以在PE上执行peer substitute-as命令使能AS号替换功能,即PE用本地AS号替换收到的私网路由中CE所在VPN站点的AS号,这样对端CE就不会因为AS号重复而丢弃路由了
特殊场景下的BGP配置 - SoO

在CE多归属,若使能了BGP的AS号替换功能,可能会引起路由环路,需要SoO [Site of Origin]特性来避免环路

配置了BGP邻居的SoO后:

  • 接收到该邻居的BGP路由时,会在路径属性中携带该SoO属性并通告给其他BGP邻居。
  • 向该邻居通告BGP路由时,会检查路由中SoO属性是否与配置的SoO值相同,若相同则不通告,避免引起环路

示例如下:

  • CE1与CE3处于同一个VPN站点1,CE2位于站点Site2,Site1和Site2站点所在的AS号都为65001。PE与CE之间运行的都是EBGP路由协议,为了Site 1和Site 2之间的路由可以正常学习,需要在PE1和PE2上配置AS号替换功能
  • CE1传递站点内的路由给PE1,PE1传递该路由给CE3,由于配置AS号替换,CE3会接收该路由,可能会导致产生路由环路

Hub&Spoke场景

Hub&Spoke有以下组网方案:

  • 方式一:Hub-CE与Hub-PE,Spoke-PE与Spoke-CE使用EBGP
  • 方式二:Hub-CE与Hub-PE,Spoke-PE与Spoke-CE使用IGP
  • 方式三:Hub-CE与Hub-PE使用EBGP,Spoke-PE与Spoke-CE使用IGP
  • 无法通过Hub-CE与Hub-PE使用IGP,Spoke-PE与Spoke-CE使用EBGP来部署Hub&Spoke组网的MPLS VPN

OSPF VPN拓展

OSPF与BGP互操作

MPLS VPN中的OSPF/BGP

当PE-CE间部署OSPF交互路由信息时,若在PE上使用标准BGP/OSPF过程互来传递路由信息,则远端PE在将BGP引入VPN实例的OSPF进程时,会直接产生Type5 LSA,不同站点都会将其他站点的路由视为自治系统外部路由[AS_external]

BGP扩展团体属性

为了保留OSPF的路由信息,BGP新增了部分可携带OSPF路由信息的团体属性:

  • Domain ID:域标识符用来标识和区分不同的域。
  • Route Type:包含被引入到BGP的OSPF路由的 Area-ID 以及Route Type
    • Area-ID:PE 的VPN实例的OSPF进程与CE建立邻接关系的区域号
    • Route Type:被引入的 OSPF 路由的类型
      • 1 或 2:表示路由的类型为区域内部路由, 也就是 PE 根据 Type-1 及 Type-2 LSA 所计算出来的路由
      • 3:表示路由的类型为区域间路由
      • 5:表示路由的类型为 OSPF 外部路由,也就是 PE 通过 Type-5 LSA 计算得出的路由。当 Route-Type 字段的值为 5 时, Area-ID 字段的值需为 0.0.0.0
      • 7:表示路由的类型为 NSSA 路由,也就是 PE 通过 Type-7 LSA 计算得出的路由

Domain ID

在PE上将OSPF引入BGP时,PE将根据本地的配置为BGP路由增加域ID属性,域ID作为BGP的扩展团体属性传播

在PE将BGP路由引入OSPF时:

  • 若BGP路由携带的Domain ID与本地相同,则认为两个站点属于同一个OSPF路由域
  • 若不相同,则认为不在同一个路由域

Domain ID与Route Type

根据BGP路由中的Domain ID与Route Type属性,PE将产生不同类型的OSPF LSA类型发布到VRF的OSPF进程中

Domain ID与本地是否相同 Route Type PE生成的OSPF LSA类型
1、2、3 3
5、7 5、7
1、2、3、5、7 5、7

OSPF防环

Type3路由防环 - DN位
  • 为了防止3类LSA环路,OSPF多实例进程使用LSA Options域中一个原先未使用的比特作为标志位,称为DN位。使用DN位可以防止Type3 LSA环路
  • PE路由器的OSPF实例进程在进行SPF计算时,忽略DN置位的Type3 LSA
Type5/7路由防环 - VPN Route Tag

可以使用VPN Route Tag(VPN路由标记)来防止此5类或7类路由环路

PE在根据收到的BGP的私网路由生成5/7类LSA时,携带VPN路由标记。当PE发现LSA的VPN路由标记和本地配置的一样,就会忽略这条LSA,因此可以避免上述环路

Sham link的应用场景

通常情况下,BGP对等体之间通过BGP扩展团体属性在MPLS VPN骨干网上承载路由信息。另一端PE上运行的OSPF可利用这些信息来生成PE到CE的Type 3 LSA,这些路由是区域间路由 [Inter_Area route]

若在CE1和CE2之间增加一条后门 [Backdoor] 链路,并且直接运行OSPF交互路由。通过后门链路学习到的路由类型为区域内路由 [Intra_Area route]

Sham link的应用场景

由于区域内路由优于区域间路由,故后门链路会被优选,若想实现后门链路作为备份链路,可采用sham link实现

Sham link的工作机制

Sham link在两台PE之间创建了一条区域内链路。当LSA在伪装链路中泛洪,所有的OSPF路由类型都不会改变,不会转换成LSA3或者LSA5的类型

Sham link被看成是两个VPN实例之间的链路,链路的两端是PE上的端点地址,分别作为建立连接时的源和目的地址。伪连接的源地址和目的地址使用32位掩码的Loopback接口地址,该Loopback接口需要绑定到VPN实例中,并通过BGP发布


文章作者: 十二惊惶
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 十二惊惶 !
  目录