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