MPLS VPN部署与应用
1.前言BGP/MPLS IP VPN因其支持地址空间重叠、组网方式灵活、可扩展性好,并能够方便地支持MPLS TE等一系列优点,已经在广域IP承载网络得到了广泛的应用。
针对不同客户的业务需求以及组网情况,MPLS VPN的部署方式不尽相同
2.目标
描述MPLS VPN的应用场景与组网类型
部署MPLS VPN的Intranet方案
部署MPLS VPN的Hub&Spoke方案
描述OSPF对MPLS VPN扩展功能与特性
3.MPLS VPN典型应用
目前,MPLS VPN的主要应用包括企业互连和虚拟业务网络。
企业互连应用:可通过MPLS VPN将分布在各地的分支机构、出差员工和合作伙伴的IP网络连接在一起;
虚拟业务网络:可在同一物理网络上运行多种业务,如VoIP、IPTV等,为每个业务建立一个VPN,实现业务隔离。
1.MPLS VPN基本组网 - Intranet
当采用Intranet组网方案时,一个VPN中的所有用户形成闭合用户群,相互之间能够进行流量转发,VPN中的用户不能与任何本VPN以外的用户通信,其站点通常是属于同一个组织。

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

3.MPLS VPN基本组网 - Hub&Spoke


4.MCE组网
当一个私网需要根据业务或者网络划分VPN时,不同VPN用户间的业务需要完全隔离。此时,为每个VPN单独配置一台CE将增加用户的设备开支和维护成本。
具有MCE(Multi-VPN-Instance,CE多实例CE)功能的CE设备可以在MPLS VPN组网应用中承担多个VPN实例的CE功能,减少用户网络设备的投入。

5.MPLS VPN跨域组网
随着MPLS VPN解决方案的广泛应用,服务的终端用户的规格和范围也在增长,在一个企业内部的站点数目越来越大,某个地理位置与另外一个服务提供商相连的需求变得非常的普遍,例如国内运营商的不同城域网之间,或相互协作的运营商的骨干网之间都存在着跨越不同自治系统(AS,Autonomous System)的情况。
一般的MPLS VPN体系结构都是在一个AS内运行,任何VPN的路由信息都是只能在一个AS内按需扩散。AS之间的MPLS VPN部署需要通过跨域(Inter-AS) MPLS VPN解决方案来实现。

6.部署Intranet场景的MPLS VPN
如图所示,客户X及Y各自有2个站点,现需要通过MPLS VPN实现站点之间的互联,分别对应VPNX和VPNY;
互联接口、AS号及IP地址信息,CE与PE通过如图的协议或方法交换路由信息;

1.PE-CE之间部署OSPF
[CE1] ospf 1
[CE1-ospf-1] area 0
[CE1-ospf-1-area-0.0.0.0] network 192.168.100.0 0.0.0.255
[CE1-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
CE1的OSPF配置还是传统的OSPF配置,CE1无需支持VRF。
PE1用于跟CE1对接的OSPF进程必须与对应的VPN实例绑定。
将PE1的VPN实例VPNX的路由表中的BGP路由(主要是PE1通过BGP获知的、到达站点B的客户路由)引入OSPF,以便将这些路由通过OSPF通告给CE1。
[PE1] ospf 1 vpn-instance VPNX
[PE1-ospf-1] area 0
[PE1-ospf-1-area-0.0.0.0] network 192.168.100.0 0.0.0.255
[PE1-ospf-1-area-0.0.0.0] quit
[PE1-ospf-1] import bgp
将PE1的VPN实例VPNX的路由表中通过OSPF进程1学习到的OSPF路由引入BGP,从而将到达站点A的客户路由转换成BGP的VPNv4路由,以便通告给远端的PE2。
[PE1] bgp 123
[PE1-bgp] ipv4-family vpn-instance VPNX
[PE1-bgp] import-route ospf 1

2.PE-CE之间部署静态路由
CE2需配置到达站点A内的各个网段的静态路由。
[CE2] ip route-static 192.168.1.0 24 192.168.200.2
[CE2] ip route-static 192.168.100.0 24 192.168.200.2
PE2需配置到达站点B内各个网段的静态路由
[PE2] ip route-static vpn-instance VPNX 192.168.2.0 24 192.168.200.1
将PE2的VPN实例VPNX的路由表中的静态路由引入BGP,从而将客户路由转换成BGP的VPNv4路由,以便通告给远端的PE1。
[PE2] bgp 123
[PE2-bgp] ipv4-family vpn-instance VPNX
[PE2-bgp] import-route static

3.PE-CE之间部署EBGP
CE3只需要执行普通BGP配置,且无需支持VRF
[CE3] bgp 100
[CE3-bgp] peer 192.168.100.2 as-number 123
[CE3-bgp] network 192.168.1.0 24
当PE与CE之间使用BGP交互客户路由时,无需在PE上手工执行路由重分发操作。在本例中,PE1通过BGP从CE3学习到的客户路由后,PE1会自动将这些路由转换成VPNv4路由并通告给PE2;而PE1通过BGP从PE2获知到达站点D的路由后,会自动将它们转换成IPv4路由并通告给CE3。
[PE1] bgp 123
[PE1-bgp] ipv4-family vpn-instance VPNY
[PE1-bgp-VPNY] peer 192.168.100.1 as-number 100

A.特殊场景下的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号重复而丢弃路由了。
PE1在向CE1发送BGP路由时,若发现AS_Path中包含65001,则会用本地AS号,也就是123去替换65001。所以,若有一条路由从CE2传给PE2,再由PE2传给PE1,当PE1再传递给CE1,此时BGP路由的AS_Path属性为{123,123}。
[PE1] bgp 123
[PE1-bgp] ipv4-family vpn-instance vpn1
[PE1-bgp-vpn1] peer 192.168.100.1 substitute-as

B.特殊场景下的BGP配置 - SoO
在CE多归属场景,若使能了BGP的AS号替换功能,可能会引起路由环路,需要SoO(Site of Origin)特性来避免环路。
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会接收该路由,可能会导致产生路由环路。
配置了BGP邻居的SoO后:
接收到该邻居的BGP路由时,会在路径属性中携带该SoO属性并通告给其他BGP邻居。
向该邻居通告BGP路由时,会检查路由中的SoO属性是否与配置的SoO值相同,若相同则不通告,避免引起环路。
[PE1] bgp 123
[PE1-bgp] ipv4-family vpn-instance vpn1
[PE1-bgp-vpn1] peer 192.168.100.1 soo 200:1
[PE1-bgp-vpn1] peer 192.168.200.1 soo 200:1

4.PE-CE之间部署IS-IS
[CE4] isis 1
[CE4-isis-1] network-entity 49.0001.0000.0000.1111.00
[CE4-isis-1] is-level level-2
[CE4-isis-1] quit
[CE4] interface GigabitEthernet 0/0/0
[CE4-GigabitEthernet0/0/0] isis enable 1
[CE4-GigabitEthernet0/0/0]quit
[CE4] interface GigabitEthernet 0/0/1
[CE4-GigabitEthernet0/0/1] isis enable 1
#GE0/0/1接口是192.168.2.0/24网段所在接口
[PE2] isis 1 vpn-instance VPNY
[PE2-isis-1] network-entity 49.0002.0000.0000.2222.00
[PE2-isis-1] is-level level-2
[PE2-isis-1] import-route bgp level-2
[PE2-isis-1] quit
[PE2] interface GigabitEthernet 0/0/2
[PE2-GigabitEthernet0/0/2] isis enable 1
[PE2] bgp 123
[PE2-bgp] ipv4-family vpn-instance VPNY
[PE2-bgp] import-route isis 1

7.部署Hub&Spoke场景的MPLS VPN
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。

1.VRF配置
Spoke-PE上创建一个VPN实例,RT配置如图。
Hub-PE上创建VPN_in和VPN_out两个VPN实例,分别用于从Spoke-PE接收私网路由或向Spoke-PE发布私网路由,RT配置如图。

2.方式一部署 - 路由发布过程
Spoke-CE与Spoke-PE之间通过EBGP交互路由信息,建立EBGP连接后,把相关的路由发布到BGP即可。
Hub-PE与Hub-CE之间建立两条EBGP连接,分别用来发布和接收私网路由。

3.方式一部署 - Hub-PE与Hub-CE间配置
# Hub-PE与Hub-CE建立两条EBGP连接
[Hub-PE] bgp 123
[Hub-PE-bgp] ipv4-family vpn-instance VPN_in
[Hub-PE-bgp-VPN_in] peer 192.168.31.1 as-number 65001
[Hub-PE-bgp-VPN_in]quit
[Hub-PE-bgp] ipv4-family vpn-instance VPN_out
[Hub-PE-bgp-VPN_out] peer 192.168.32.1 as-number 65001
[Hub-PE-bgp-VPN_out] peer 192.168.32.1 allow-as-loop

由于Hub-CE通过VPN_out对应的EBGP连接发送给Hub-PE的路由可能带有AS 123,则这些路由将会被Hub-PE丢弃,故Hub-PE上必须手工配置允许本地AS编号重复。
# Hub-CE与Hub-PE建立两条EBGP连接
[Hub-CE] bgp 65001
[Hub-CE-bgp] peer 192.168.31.2 as-number 123
[Hub-CE-bgp] peer 192.168.32.2 as-number 123
方式二部署 - 路由发布过程
以选用OSPF作为IGP协议为例:
Spoke-CE与Spoke-PE之间通过OSPF(进程100)邻居关系交互路由信息。
Hub-PE通过两个OSPF进程与Hub-CE建立OSPF邻居,分别负责私网路由的发送和接收。

方式二部署 - Hub-PE与Hub-CE间配置
# Hub-PE上执行OSPF和BGP的相互引入
[Hub-PE] OSPF 100 vpn-instance VPN_in
[Hub-PE-ospf-100]import-route bgp
[Hub-PE-ospf-100]quit
[Hub-PE]bgp 100
[Hub-PE-bgp]ipv4-family vpn-instance VPN_out
[Hub-PE-bgp-VPN_out]import-route ospf 200
# Hub-CE上OSPF 200到OSPF 100的路由引入
[Hub-CE]OSPF 200
[Hub-CE-ospf-200]import-route OSPF 100

方式三部署 - 路由发布过程
以选用OSPF作为IGP协议为例,Spoke-CE与Spoke-PE之间通过OSPF(进程100)邻居关系交互路由信息。
Hub-PE与Hub-CE之间建立两条EBGP连接,分别用来发布和接收私网路由,Hub-PE与Hub-CE的配置与方式一相同。

8.MPLS VPN中的OSPF/BGP
当PE-CE间部署OSPF交互路由信息时,若在PE上使用标准BGP/OSPF过程(简称为BGP/OSPF互操作)互来传递路由信息,则远端PE在将BGP引入VPN实例的OSPF进程时,会直接产生Type5 LSA,不同站点都会将其他站点的路由视为自治系统外部路由(AS_external)。
为了解决标准BGP/OSPF的互操作导致的OSPF路由信息丢失的问题,BGP和OSPF都做了相应的拓展。

1.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 计算得出的路由。
A.Domain ID
在PE上将OSPF引入BGP时,PE将根据本地的配置为BGP路由增加域ID属性,域ID作为BGP的扩展团体属性传播。
在PE将BGP路由引入OSPF时,若BGP路由携带的Domain ID与本地相同,则认为两个站点属于同一个OSPF路由域。若不相同,则认为不在同一个路由域。

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

9.OSPF防环
Type3路由防环
如图是Type3 LSA路由产生环路的一个例子:
其中站点1和站点2都属于VPN1。
站点1通过OSPF Area0接入骨干网的PE1;
站点2通过OSPF Area0分别接入骨干网的PE2和PE3(双归属负载分担场景)。

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

Type5/7路由防环
如图是Type5 LSA路由产生环路的一个例子:
其中站点1和站点2都属于VPN1。
站点1通过EBGP接入骨干网的PE1;
站点2通过OSPF分别接入骨干网的PE2和PE3。

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

10.OSPF sham link
1.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实现。

2.Sham link的工作机制
Sham link在两台PE之间创建了一条区域内链路。当LSA在伪装链路中泛洪,所有的OSPF路由类型都不会改变,不会转换成LSA3或者LSA5的类型。
Sham link被看成是两个VPN实例之间的链路,链路的两端是PE上的端点地址,分别作为建立连接时的源和目的地址。伪连接的源地址和目的地址使用32位掩码的Loopback接口地址,该Loopback接口需要绑定到VPN实例中,并通过BGP发布。

3.Sham link的配置示例
在PE上创建用于建立sham Link的接口(PE2配置类似)。
[PE1]interface LoopBack0
[PE1-LoopBack0] ip binding vpn-instance VPNA
[PE1-LoopBack0]ip address 1.1.1.1 32
#在BGP的VPN地址族中发布出去
[PE1-bgp-VPNA]network 1.1.1.1 32
在PE节点上配置sham Link(PE2节点配置类似)。
[PE1-ospf-1]area 0
[PE1-ospf-1-area-0.0.0.0]sham-link 1.1.1.1 2.2.2.2
调整cost值,确保后门链路的cost要大于sham Link上的cost。
[CE1-GigabitEthernet0/0/0]ospf cost 1000