You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
datacom/Datacom-MD/第十一章:MPLS VPN技术.md

901 lines
40 KiB

<h1><center>MPLS VPN技术</center></h1>
> 作者:行癫
------
<h3>第一节MPLS VPN原理与配置</h3>
<h4>MPLS VPN概述</h4>
<h5>1.MPLS VPN定义</h5>
BGP/MPLS IP VPN网络一般由运营商搭建VPN用户购买VPN服务来实现用户网络之间的路由传递、数据互通等
MPLS VPN使用BGP在运营商骨干网上发布VPN路由使用MPLS在运营商骨干网上转发VPN报文BGP/MPLS IP VPN又被简称为MPLS VPN
<img src="https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220217194835189.png" alt="image-20220217194835189" style="zoom:80%;" />
<h5>2.MPLS VPN网络架构</h5>
MPLS VPN网络架构由三部分组成CECustomer Edge、PEProvider Edge和PProvider其中PE和P是运营商设备CE是MPLS VPN用户设备
站点site就是MPLS VPN的用户由CE和其他用户设备构成
![image-20220217210159362](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220217210159362.png)
CE用户网络边缘设备有接口直接与运营商网络相连。CE可以是路由器或交换机也可以是一台主机。通常情况下CE“感知”不到VPN的存在也不需要支持MPLS
PE运营商边缘路由器是运营商网络的边缘设备与CE直接相连。在MPLS网络中对VPN的所有处理都发生在PE上对PE性能要求较高
P运营商网络中的骨干路由器不与CE直接相连。P设备只需要具备基本MPLS转发能力不维护VPN相关信息
**站点的含义可以从下述几个方面理解:**
站点是指相互之间具备IP连通性的一组IP系统并且这组IP系统的IP连通性不需通过运营商网络实现
站点的划分是根据设备的拓扑关系而不是地理位置。如图所示公司A的X省网络和公司A的Y省网络需要通过运营商的骨干网进行互联所以它们被划分为两个站点。若在当前X省网络和Y省网络的CE之间增加一条物理专线不需要通过运营商网络就可以互通那么这两张网络就是一个站点
**站点与VPN的关系**
对于多个连接到同一服务提供商网络的站点通过制定策略可以将它们划分为不同的集合只有属于相同集合的站点之间才能通过服务提供商网络互访这种集合就是VPN
一个Site中的设备可以属于多个VPN换言之一个Site可以属于多个VPN
<h5>3.MPLS VPN技术架构</h5>
MPLS VPN不是单一的一种VPN技术是多种技术结合的综合解决方案主要包含下列技术
MP-BGP负责在PE与PE之间传递站点内的路由信息
LDP负责PE与PE之间的隧道建立
VRF负责PE的VPN用户管理
静态路由、IGP、BGP负责PE与CE之间的路由信息交换
![image-20220217210606263](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220217210606263.png)
<h5>4.为什么要选择MPLS VPN</h5>
**对VPN客户而言**
“感知”不到VPN的存在不需要部署和维护VPN降低企业运维难度和成本
一般部署在运营商的MPLS VPN专网上有一定的安全性保障
**对于运营商而言:**
MPLS在无连接的IP网络中增加了面向连接的控制平面为IP网络增添了管理和运营的手段
支持地址空间重叠、支持重叠VPN、组网方式灵活、可扩展性好
能够方便地支持MPLS TE合理调控现有网络资源最大限度的节省运营商成本
MPLS TEMPLS Traffic EngineeringMPLS流量工程基于一定约束条件LSP隧道并将流量引入到这些隧道中进行转发使网络流量按照指定的路径进行传输。可以在不进行硬件升级的情况下对现有网络资源进行合理调配和利用并对网络流量提供带宽和QoS保证最大限度的节省成本
<h5>5.MPLS VPN常见组网</h5>
根据VPN用户的需求不同可采用以下几种常见的组网方案
Intranet一个VPN中的所有用户形成闭合用户群同一VPN站点之间可以互访不同VPN站点间不能互访
Extranet适用于一个VPN用户希望提供部分本VPN的站点资源给其他VPN的用户访问的场景
Hub&Spoke如果希望在VPN中设置中心访问控制设备其它用户的互访都通过中心访问控制设备进行可采用Hub&Spoke组网方案
![image-20220217211611714](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220217211611714.png)
<h4>MPLS VPN路由交互</h4>
<h5>1.MPLS VPN路由发布概述</h5>
若想实现同一个VPN的不同站点之间的通信首先需要完成不同站点之间的路由交互。在基本MPLS VPN组网中VPN路由信息的发布涉及CE和PEP路由器只维护骨干网的路由不需要了解任何VPN路由信息。VPN路由信息的发布过程包括三部分
本地CE到入口PE
入口PE到出口PE
出口PE到远端CE
![image-20220218102818324](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218102818324.png)
<h5>2.CE与PE之间的路由信息交换</h5>
如图客户X和客户Y属于不同的VPN分别拥有两个站点现需要实现站点间的路由信息交互
CE与PE之间可以使用静态路由、OSPF、IS-IS或BGP交换路由信息。无论使用哪种路由协议CE和PE之间交换的都是标准的IPv4路由
本地CE到入口PE和出口PE到远端CE的路由信息交换原理完全相同
![image-20220218103045001](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218103045001.png)
<h5>3.入口PE到出口PE路由传递1</h5>
PE在接收到CE传递来的路由之后需要独立保存不同VPN的路由且需要解决不同的客户使用重叠IP地址空间的问题
![image-20220218103114637](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218103114637.png)
VPN是一种私有网络不同的VPN独立管理自己的地址范围也称为地址空间address space。不同VPN的地址空间可能会在一定范围内重合例如图中用户X和用户Y都使用192.168.1.0/24网段地址这就发生了地址空间的重叠
**以下两种情况允许VPN使用重叠的地址空间**
两个VPN没有共同的站点
两个VPN有共同的站点但此共同站点中的设备不与两个VPN中使用重叠地址空间的设备互访
**VRF**
VRFVirtual Routing and Forwarding虚拟路由转发又称VPN实例是MPLS VPN架构中的关键技术每个VPN实例使用独立的路由转发表项实现VPN之间的逻辑隔离
![image-20220218103320279](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218103320279.png)
**RD**
PE收到不同VPN的CE发来的IPv4地址前缀本地根据VPN实例配置去区分这些地址前缀。但是VPN实例只是一个本地的概念PE无法将VPN实例信息传递到对端PE故有了RDRoute Distinguisher路由标识符
RD长8字节用于区分使用相同地址空间的IPv4前缀
PE从CE接收到IPv4路由后在IPv4前缀前加上RD转换为全局唯一的VPN-IPv4路由
![image-20220218103426695](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218103426695.png)
注意:
配置RD时只需要指定RD的Administrator子字段和Assigned Number子字段
RD的配置格式有四种常用的两种如下
16bits自治系统号:32bits用户自定义数字例如100:1
32bits IPv4地址:16bits用户自定义数字例如172.1.1.1:1
RD的结构使得每个运营商可以独立地分配RD但为了在某些应用场景下保证路由正常必须保证RD全局唯一
**VPN-IPv4地址**
VPN-IPv4地址又被称为VPNv4地址VPNv4地址共有12个字节包括8字节的路由标识符RDRoute Distinguisher和4字节的IPv4地址前缀
![image-20220218103818426](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218103818426.png)
<h5>4.入口PE到出口PE路由传递2</h5>
PE之间建立BGP邻居关系并通过BGP进行路由传递。为什么采用BGP呢
BGP使用TCP作为其传输层协议提高了协议的可靠性。可以跨路由器的两个PE设备之间直接交换路由
BGP拓展性强为PE间传播VPN路由提供了便利
PE之间需要传送的路由条目可能较大BGP只发送更新的路由提高传递路由数量的同时不占用过多链路带宽
传统的BGP-4不支持处理VPNv4路由
![image-20220218103919029](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218103919029.png)
**MP-BGP**
为了正确处理VPN路由MPLS VPN使用RFC2858Multiprotocol Extensions for BGP-4中规定的MP-BGP即BGP-4的多协议扩展
MP-BGP采用地址族Address Family来区分不同的网络层协议既可以支持传统的IPv4地址族又可以支持其它地址族比如VPN-IPv4地址族、IPv6地址族等
**MP-BGP新增了两种路径属性**
MP_REACH_NLRIMultiprotocol Reachable NLRI多协议可达NLRI。用于发布可达路由及下一跳信息
MP_UNREACH_NLRIMultiprotocol Unreachable NLRI多协议不可达NLRI。用于撤销不可达路由
![image-20220218104058234](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218104058234.png)
**注意:**
NLRINetwork Layer Reachability Information网络层可达信息
关于地址族的一些取值请参考RFC3232Assigned Numbers
MP_REACH_NLRI用于发布可达路由及下一跳信息。该属性由一个或多个三元组组成格式如下
地址族信息Address Family Information由2字节的地址族标识AFIAddress Family Identifier和1字节的子地址族标识SAFISubsequent Address Family Identifier组成
下一跳信息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相同
<h5>5.入口PE到出口PE路由传递 (3)</h5>
MP-BGP将VPNv4传递到远端PE之后远端PE需要将VPNv4路由导入正确的VPN实例
MPLS VPN使用BGP扩展团体属性VPN Target也称为Route Target来控制VPN路由信息的发布与接收
本地PE在发布VPNv4路由前附上RT属性对端PE在接到VPNv4路由后根据RT将路由导入对应的VPN实例
![image-20220218104407514](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218104407514.png)
**RT**
在PE上每一个VPN实例都会与一个或多个VPN Target属性绑定有两类VPN Target属性
Export TargetERT本地PE从直接相连站点学到IPv4路由后转换为VPN IPv4路由并为这些路由添加Export Target属性。Export Target属性作为BGP的扩展团体属性随路由发布
Import TargetIRTPE收到其它PE发布的VPN-IPv4路由时检查其Export Target属性。当此属性与PE上某个VPN实例的Import Target匹配时PE就把路由加入到该VPN实例的路由表
![image-20220218104458786](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218104458786.png)
<h5>6.入口PE到出口PE路由传递 (4)</h5>
PE根据VPNv4路由所携带的RT将路由导入正确的VPN实例之后VPNv4路由的RD值剥除将IPv4路由通告给相应的客户的CE设备
站点B和站点D的CE设备就能学习到去往各自远端站点的路由。同理通过一系列的操作可以实现同一用户同一VPN不同站点之间的路由互通
![image-20220218104538484](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218104538484.png)
<h5>7.数据转发时遇到的问题</h5>
![image-20220218104602974](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218104602974.png)
<h5>8.入口PE到出口PE路由传递 (5)</h5>
PE和P设备之间运行LDP交换公网标签建立PE之间的LSP隧道公网隧道
入口PE在通过MP-BGP传递VPNv4路由时会携带私网标签用于区分不同VPN的数据
出口PE在接收到VPNv4路由后需要执行私网路由交叉和隧道迭代来选择路由
![image-20220218104806411](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218104806411.png)
**PE上分配私网标签的方法有如下两种**
基于路由的MPLS标签分配为VPN路由表的每一条路由分配一个标签one label per route。这种方式的缺点是当路由数量比较多时设备入标签映射表ILMIncoming Label Map需要维护的表项也会增多从而提高了对设备容量的要求
基于VPN实例的MPLS标签分配为整个VPN实例分配一个标签该VPN实例里的所有路由都共享一个标签。使用这种分配方法的好处是节约了标签
私网路由交叉VPNv4路由与本地VPN实例的VPN-Target进行匹配的过程称为私网路由交叉。PE在收到VPNv4路由后既不进行优选也不检查隧道是否存在直接将其与本地的VPN实例进行交叉
隧道迭代为了将私网流量通过公网传递到另一端需要有一条公网隧道承载这个私网流量。因此私网路由交叉完成后需要根据目的IPv4前缀进行路由迭代即该IPv4路由的下一跳有对应的LSP存在只有隧道迭代成功该路由才被放入对应的VPN实例路由表
<h5>9.MPLS VPN中的路由交互全过程</h5>
![image-20220218105341534](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218105341534.png)
IGP或者EBGP交换私网IPv4路由
客户私网路由被学习到VPN路由表中(VPN实例路由表)
IPv4路由引入到MP-BGP如果PE-CE之间运行的就是BGP则无需手工执行路由引入操作
RD被添加到IPv4路由上构成VPNv4路由
VPNv4路由被PE1通过MP-IBGP的Update消息通告给PE2。Update消息携带着MP_REACH_NLRI属性包含VPNv4路由前缀下一跳和标签等重要信息和RT属性。
PE2根据RT将路由导入特定的VRF同时将VPNv4路由的RD剥除将IPv4路由通告给相应的客户的CE设备
客户IPv4路由被通告给CE设备
<h4>MPLS VPN报文转发</h4>
<h5>1.报文转发过程 (1)</h5>
以图中用户X的站点B访问站点A的192.168.1.0/24网段为例报文转发过程如下
![image-20220218105632866](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218105632866.png)
<h5>2.报文转发过程 (2)</h5>
![image-20220218105659613](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218105659613.png)
PE2根据报文入接口找到VPN实例查找对应VPN的转发表
匹配目的IPv4前缀并打上对应的内层标签I-L
根据下一跳地址查找对应的Tunnel-ID
将报文从隧道发送出去即打上公网外层MPLS标签头O-L1
<h5>3.报文转发过程 (3)</h5>
![image-20220218110122698](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218110122698.png)
骨干网的所有P设备都对该报文进行外层标签交换直到到达PE1
<h5>4.报文转发过程 (4)</h5>
![image-20220218110350111](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218110350111.png)
PE1收到该携带两层标签的报文交给MPLS处理MPLS协议将去掉外层标签
PE1继续处理内层标签根据内层标签确定对应的下一跳并将内层标签剥离后以纯IPv4报文的形式发送给CE1
<h5>5.报文转发过程 (5)</h5>
![image-20220218110736336](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218110736336.png)
CE1收到该IPv4报文后进行常规的IPv4处理流程
<h4>MPLS VPN配置与实现</h4>
<h5>1.配置命令 - VPN实例配置</h5>
![image-20220218110921136](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218110921136.png)
![image-20220218110931125](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218110931125.png)
<h5>2.配置命令 - MP-BGP配置</h5>
![image-20220218111050198](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218111050198.png)
<h5>3.配置命令 - PE与CE间路由配置</h5>
![image-20220218111121675](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218111121675.png)
<h5>4.MPLS VPN配置示例 - 背景介绍</h5>
![image-20220218111157869](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218111157869.png)
客户X及Y各自有2个站点现需要通过MPLS VPN实现站点之间的互联分别对应VPNX和VPNY
互联接口、AS号及IP地址信息如图
客户X站点与PE之间采用OSPF交互路由信息客户Y站点与PE之间采用BGP交互路由信息
<h5>5.MPLS VPN配置示例 - 配置思路</h5>
**MPLS VPN骨干网配置**
IGP配置实现骨干网的IP连通性
MPLS与MPLS LDP配置建立MPLS LSP公网隧道传输VPN数据
MP-BGP配置建立后续传递VPNv4路由的MP-BGP对等体关系
**VPN用户接入配置**
创建VPN实例并配置参数RT、RD
将接口加入VPN实例
配置PE与CE之间的路由交换
<h5>6.MPLS VPN配置示例 - 数据规划</h5>
MPLS骨干网采用单区域OSPF实现路由互通所有PE和P互联接口均使能MPLS LDP功能
**PE上的VPN相关配置如表格**
![image-20220218111418110](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218111418110.png)
<h5>7.部署配置</h5>
**MPLS VPN骨干网配置**
在MPLS VPN骨干网络内部署OSPFMPLS VPN骨干网络内部署的OSPF用于实现骨干网络内部的路由互通
以PE1节点的OSPF配置为例
```shell
[PE1]ospf 100 router-id 1.1.1.1
[PE1-ospf-100]area 0
[PE1-ospf-100-area-0.0.0.0]network 10.0.12.1 0.0.0.0
[PE1-ospf-100-area-0.0.0.0]network 1.1.1.1 0.0.0.0
```
在PE1、P、PE2节点配置MPLS及LDP以PE1为例
```shell
[PE1]mpls lsr-id 1.1.1.1
[PE1]mpls
Info: Mpls starting, please wait... OK!
[PE1-mpls]mpls ldp
[PE1-mpls-ldp]Interface GigabitEthernet 0/0/0
[PE1-GigabitEthernet0/0/0]mpls
[PE1-GigabitEthernet0/0/0]mpls ldp
```
在PE1及PE2之间建立MP-BGP对等体关系以PE1为例
```shell
[PE1]bgp 123
[PE1-bgp]router-id 1.1.1.1
[PE1-bgp]peer 3.3.3.3 as-number 123
[PE1-bgp]peer 3.3.3.3 connect-interface LoopBack 0
#进入BGP-VPNv4地址族视图并使能与对等体3.3.3.3的VPNv4地址族能力。
[PE1-bgp]ipv4-family vpnv4 unicast
[PE1-bgp-af-vpnv4]peer 3.3.3.3 enable
```
**MPLS VPN骨干网配置 - 配置验证**
查看公网隧道建立情况
```shell
[PE1]display mpls lsp
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
3.3.3.3/32 NULL/1025 -/GE0/0/0
1.1.1.1/32 3/NULL -/-
```
```shell
[PE2]display mpls lsp
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
3.3.3.3/32 3/NULL -/-
1.1.1.1/32 NULL/1024 -/GE0/0/0
```
查看MP-BGP邻居状态以PE1为例
```shell
[PE1]display bgp vpnv4 all peer
BGP local router ID : 1.1.1.1
Local AS number : 123
Total number of peers : 1 Peers in established state : 1
Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pre fRcv
3.3.3.3 4 123 16 18 0 00:14:20 Established 0
```
**VPN用户接入配置**
创建VPN实例并按照规划配置RD与RT参数以PE1为例
```shell
[PE1]ip vpn-instance VPNX
[PE1-vpn-instance-VPNX]route-distinguisher 100:1
[PE1-vpn-instance-VPNX-af-ipv4] vpn-target 100:321 import-extcommunity
IVT Assignment result:
Info: VPN-Target assignment is successful.
[PE1-vpn-instance-VPNX-af-ipv4]vpn-target 100:123 export-extcommunity
EVT Assignment result:
Info: VPN-Target assignment is successful.
[PE1-vpn-instance-VPNX-af-ipv4] quit
[PE1-vpn-instance-VPNX]quit
[PE1]ip vpn-instance VPNY
[PE1-vpn-instance-VPNY]route-distinguisher 200:1
[PE1-vpn-instance-VPNY-af-ipv4]vpn-target 200:234 import-extcommunity
[PE1-vpn-instance-VPNY-af-ipv4]vpn-target 200:432 export-extcommunity
[PE1-vpn-instance-VPNY-af-ipv4]quit
[PE1-vpn-instance-VPNY]quit
```
将接口绑定到VPN实例
```shell
[PE1]interface GigabitEthernet 0/0/1
[PE1-GigabitEthernet0/0/1]ip binding vpn-instance VPNX
Info: All IPv4 related configurations on this interface are removed!
Info: All IPv6 related configurations on this interface are removed!
[PE1-GigabitEthernet0/0/1]ip address 192.168.100.2 24
[PE1-GigabitEthernet0/0/1]interface GigabitEthernet 0/0/2
[PE1-GigabitEthernet0/0/2]ip binding vpn-instance VPNY
Info: All IPv4 related configurations on this interface are removed!
Info: All IPv6 related configurations on this interface are removed!
[PE1-GigabitEthernet0/0/2]ip address 192.168.100.2 24
```
部署CE1-PE1、CE3-PE2间的路由信息交互以PE1为例
```shell
#创建与实例绑定的OSPF进程
[PE1]ospf 2 vpn-instance VPNX
[PE1-ospf-2]area 0
[PE1-ospf-2-area-0.0.0.0]network 192.168.100.0 0.0.0.255
[PE1-ospf-2-area-0.0.0.0]quit
```
```shell
#配置OSPF进程与MP-BGP之间的路由双向引入
[PE1]ospf 2 vpn-instance VPNX
[PE1-ospf-2]import-route bgp
[PE1-ospf-2]quit
[PE1]bgp 123
[PE1-bgp]ipv4-family vpn-instance VPNX
[PE1-bgp-VPNX]import-route ospf 2
```
部署CE2-PE1、CE4-PE2间的路由信息交互以CE2和PE1为例
```shell
#配置CE2上的EBGP并引入直连路由192.168.1.0/24
[CE2]BGP 200
[CE2-bgp]peer 192.168.100.2 as-number 123
[CE2-bgp]network 192.168.1.0 24
[CE2-bgp]quit
```
```shell
#配置PE1上VPN实例的EBGP对等体
[PE1]bgp 123
[PE1-bgp]ipv4-family vpn-instance VPNY
[PE1-bgp-VPNY]peer 192.168.100.1 as-number 200
```
**配置验证**
查看VPNX用户的CE路由学习情况
```shell
[CE1]display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Destination/Mask Proto Pre Cost Flags NextHop Interface
192.168.1.0/24 Direct 0 0 D 192.168.1.254 GigabitEthernet0/0/1
192.168.2.0/24 OSPF 10 4 D 192.168.100.2 GigabitEthernet0/0/0
192.168.100.0/24 Direct 0 0 D 192.168.100.1 GigabitEthernet0/0/0
192.168.200.0/24 O_ASE 150 1 D 192.168.100.2 GigabitEthernet0/0/0
```
```shell
[CE3]dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Destination/Mask Proto Pre Cost Flags NextHop Interface
192.168.1.0/24 OSPF 10 4 D 192.168.200.2 GigabitEthernet0/0/0
192.168.2.0/24 Direct 0 0 D 192.168.2.254 GigabitEthernet0/0/1
192.168.100.0/24 O_ASE 150 1 D 192.168.200.2 GigabitEthernet0/0/0
192.168.200.0/24 Direct 0 0 D 192.168.200.1 GigabitEthernet0/0/0
```
查看VPNY用户的CE路由学习情况
```shell
[CE2]display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Destination/Mask Proto Pre Cost Flags NextHop Interface
192.168.1.0/24 Direct 0 0 D 192.168.1.254 GigabitEthernet0/0/1
192.168.2.0/24 EBGP 255 0 D 192.168.100.2 GigabitEthernet0/0/0
192.168.100.0/24 Direct 0 0 D 192.168.100.1 GigabitEthernet0/0/0
```
```shell
[CE4]display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Destination/Mask Proto Pre Cost Flags NextHop Interface
192.168.2.0/24 Direct 0 0 D 192.168.1.254 GigabitEthernet0/0/1
192.168.1.0/24 EBGP 255 0 D 192.168.100.2 GigabitEthernet0/0/0
192.168.200.0/24 Direct 0 0 D 192.168.100.1 GigabitEthernet0/0/0
```
```shell
[PE2] display bgp vpnv4 vpn-instance VPNX routing-table 192.168.1.0 24
BGP local router ID : 3.3.3.3
Local AS number : 123
VPN-Instance VPNX, Router ID 3.3.3.3:
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 192.168.1.0/24:
Label information (Received/Applied): 1026/NULL
From: 1.1.1.1 (1.1.1.1)
Relay token: 0x1
Original nexthop: 1.1.1.1
```
```shell
[PE2]display mpls lsp
-------------------------------------------------------------------------------
LSP Information: LDP LSP
-------------------------------------------------------------------------------
FEC In/Out Label In/Out IF Vrf Name
1.1.1.1/32 NULL/1024 -/GE0/0/0
1.1.1.1/32 1024/1024 -/GE0/0/0
```
以192.168.2.0/24网段到192.168.1.0/24网段的数据为例外层标签为1024由MPLS LDP分配。内层标签为1026由MP-BGP分配
```
No. Time Source Destination Protocol Length Info
5 12.109000 192.168.2.254 192.168.1.254 ICMP 102 Echo (ping) request
Frame 5: 102 bytes on wire (816 bits), 102 bytes captured (816 bits) on interface 0
Ethernet II, Src: HuaweiTe_b1:15:3e (00:e0:fc:b1:15:3e), Dst: HuaweiTe_49:20:bb (00:e0:fc:49:20:bb)
MultiProtocol Label Switching Header, Label: 1024, Exp: 0, S: 0, TTL: 254
MultiProtocol Label Switching Header, Label: 1026, Exp: 0, S: 1, TTL: 254
Internet Protocol Version 4, Src: 192.168.2.254, Dst: 192.168.1.254
Internet Control Message Protocol
```
<h3>第二节MPLS VPN部署与应用</h3>
<h4>MPLS VPN应用与组网概述</h4>
<h5>1.MPLS VPN典型应用</h5>
目前MPLS VPN的主要应用包括企业互连和虚拟业务网络
企业互连应用可通过MPLS VPN将分布在各地的分支机构和合作伙伴的IP网络连接在一起
虚拟业务网络可在同一物理网络上运行多种业务如VoIP、IPTV等为每个业务建立一个VPN实现业务隔离
![image-20220218112540999](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218112540999.png)
**MPLS VPN的主要优点包括但不限于以下几项**
可以实现“一点接入,全网连通”,支持异种介质的互连。而不像传统专线那样在每一对用户设备间采用同样的介质连接,可方便地提供普遍服务
可以实现“弹性带宽”,采用流量监管技术,在保证用户基本带宽的同时,对突发流量尽力而为,同时基本带宽也可以“软扩容”,即根据用户的需求在一个范围内连续选择
在资源隔离或隧道绑定的MPLS VPN技术保证下充分保证每个VPN的专有带宽满足各类业务有不同的用户不同的流量模型不同的QoS要求
<h5>2.MPLS VPN基本组网 - Intranet</h5>
当采用Intranet组网方案时一个VPN中的所有用户形成闭合用户群相互之间能够进行流量转发VPN中的用户不能与任何本VPN以外的用户通信其站点通常是属于同一个组织
![image-20220218112633978](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218112633978.png)
PE需要为每个站点创建VPN实例并配置全网唯一的RD
PE通过配置Import RT和Export RT来控制不同VPN的站点做到无法互访
<h5>3.MPLS VPN基本组网 - Extranet</h5>
当采用Extranet组网方案时VPN用户可将部分站点中的网络资源给其他VPN用户进行访问
![image-20220218112719775](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218112719775.png)
**如图Site 2作为能被VPN1和VPN2访问的共享站点需要保证**
PE2能够接收PE1和PE3发布的VPNv4路由
PE2发布的VPNv4路由能够被PE1和PE3接收
PE2不把从PE1接收的VPNv4路由发布给PE3也不把从PE3接收的VPNv4路由发布给PE1
<h5>4.MPLS VPN基本组网 - Hub&Spoke</h5>
当采用Hub&Spoke方案时可以将多个站点中的一个站点设置为Hub站点其余站点为Spoke站点。站点间的互访必须通过Hub站点通过Hub站点集中管控站点间的数据传输
![image-20220218112820498](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218112820498.png)
Spoke站点需要把路由发布给Hub站点再通过Hub站点发布给其他Spoke站点。Spoke站点之间不直接交互路由信息
Spoke-PE需要设置Export Target为“Spoke”Import Target为“Hub”
Hub-PE上需要使用两个接口或子接口创建两个VPN实例一个用于接收Spoke-PE发来的路由其VPN实例的Import Target为“Spoke”另一个用于向Spoke-PE发布路由其VPN实例的Export Target为“Hub”
**从Site1到Site2的路由发布过程如下**
![image-20220218112917570](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218112917570.png)
Spoke-CE1发布路由给Spoke-PE1
Spoke-PE1通过IBGP将该路由发布给Hub-PE
Hub-PE通过VPN实例VPN_in的Import Target属性将该路由引入VPN_in路由表并发布给Hub-CE
Hub-CE学习到该路由并将该路由发布给Hub-PE的VPN实例VPN_out
Hub-PE通过VPN_out发布该路由给Spoke-PE2携带VPN_out的Export Target属性
Spoke-PE2该路由发布给Spoke-CE2
<h5>5.MCE组网</h5>
当一个私网需要根据业务或者网络划分VPN时不同VPN用户间的业务需要完全隔离。此时为每个VPN单独配置一台CE将增加用户的设备开支和维护成本
具有MCEMulti-VPN-InstanceCE多实例CE功能的CE设备可以在MPLS VPN组网应用中承担多个VPN实例的CE功能减少用户网络设备的投入
![image-20220218113034752](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218113034752.png)
MCE将PE的部分功能扩展到CE设备通过将不同的接口与VPN绑定并为每个VPN创建和维护独立的路由转发表Multi-VRF
MCE与对应的PE之间可以通过物理接口、子接口或者逻辑接口进行互联PE上需要将这些接口绑定到对应的VPN实例
<h5>6.MPLS VPN跨域组网</h5>
随着MPLS VPN解决方案的广泛应用服务的终端用户的规格和范围也在增长在一个企业内部的站点数目越来越大某个地理位置与另外一个服务提供商相连的需求变得非常的普遍例如国内运营商的不同城域网之间或相互协作的运营商的骨干网之间都存在着跨越不同自治系统ASAutonomous System的情况
一般的MPLS VPN体系结构都是在一个AS内运行任何VPN的路由信息都是只能在一个AS内按需扩散。AS之间的MPLS VPN部署需要通过跨域Inter-AS MPLS VPN解决方案来实现
![image-20220218113137850](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218113137850.png)
**RFC2547中提出了三种跨域VPN解决方案分别是**
跨域VPN-OptionAInter-Provider Backbones Option A方式需要跨域的VPN在ASBRAS Boundary Router间通过专用的接口管理自己的VPN路由也称为VRF-to-VRF
跨域VPN-OptionBInter-Provider Backbones Option B方式ASBR间通过MP-EBGP发布标签VPN-IPv4路由也称为EBGP redistribution of labeled VPN-IPv4 routes
跨域VPN-OptionCInter-Provider Backbones Option C方式PE间通过Multi-hop MP-EBGP发布标签VPN-IPv4路由也称为Multihop EBGP redistribution of labeled VPN-IPv4 routes
<h4>MPLS VPN典型场景部署介绍</h4>
<h5>1.部署Intranet场景的MPLS VPN</h5>
如图所示客户X及Y各自有2个站点现需要通过MPLS VPN实现站点之间的互联分别对应VPNX和VPNY
互联接口、AS号及IP地址信息CE与PE通过如图的协议或方法交换路由信息
![image-20220218113307716](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218113307716.png)
**部署思路**
MPLS VPN骨干网配置
IGP配置实现骨干网的IP连通性
MPLS与MPLS LDP配置建立MPLS LSP公网隧道传输VPN数据
MP-BGP配置建立后续传递VPNv4路由的MP-BGP对等体关系
VPN用户接入配置
创建VPN实例并配置参数RT、RD
将接口加入VPN实例
配置PE与CE之间的路由交换
**PE-CE之间部署OSPF **
![image-20220218113601464](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218113601464.png)
```shell
[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
```shell
[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用于跟CE1对接的OSPF进程必须与对应的VPN实例绑定。将PE1的VPN实例VPNX的路由表中的BGP路由主要是PE1通过BGP获知的、到达站点B的客户路由引入OSPF以便将这些路由通过OSPF通告给CE1。
```shell
[PE1] bgp 123
[PE1-bgp] ipv4-family vpn-instance VPNX
[PE1-bgp] import-route ospf 1
```
注意:
将PE1的VPN实例VPNX的路由表中通过OSPF进程1学习到的OSPF路由引入BGP从而将到达站点A的客户路由转换成BGP的VPNv4路由以便通告给远端的PE2。
**PE-CE之间部署静态路由**
![image-20220218113803680](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218113803680.png)
```shell
[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
```
注意:
CE2需配置到达站点A内的各个网段的静态路由
```shell
[PE2] ip route-static vpn-instance VPNX 192.168.2.0 24 192.168.200.1
```
注意:
PE2需配置到达站点B内各个网段的静态路由
```shell
[PE2] bgp 123
[PE2-bgp] ipv4-family vpn-instance VPNX
[PE2-bgp] import-route static
```
注意:
将PE2的VPN实例VPNX的路由表中的静态路由引入BGP从而将客户路由转换成BGP的VPNv4路由以便通告给远端的PE1
**PE-CE之间部署EBGP**
![image-20220218113941502](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218113941502.png)
```shell
[CE3] bgp 100
[CE3-bgp] peer 192.168.100.2 as-number 123
[CE3-bgp] network 192.168.1.0 24
```
注意:
CE3只需要执行普通BGP配置且无需支持VRF。
```shell
[PE1] bgp 123
[PE1-bgp] ipv4-family vpn-instance VPNY
[PE1-bgp-VPNY] peer 192.168.100.1 as-number 100
```
注意:
当PE与CE之间使用BGP交互客户路由时无需在PE上手工执行路由重分发操作。在本例中PE1通过BGP从CE3学习到的客户路由后PE1会自动将这些路由转换成VPNv4路由并通告给PE2而PE1通过BGP从PE2获知到达站点D的路由后会自动将它们转换成IPv4路由并通告给CE3。
**特殊场景下的BGP配置 - AS号替换**
在MPLS VPN场景中若PE与CE之间运行EBGP交互路由信息则可能会出现两个站点的AS号相同的情况
![image-20220218114103361](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218114103361.png)
若CE1通过EBGP向PE1发送一条私网路由并经过PE2发送到CE2则CE2会由于AS号重复丢弃这条路由导致属于同一VPN的Site 1和Site 2之间无法连通
可以在PE上执行peer substitute-as命令使能AS号替换功能即PE用本地AS号替换收到的私网路由中CE所在VPN站点的AS号这样对端CE就不会因为AS号重复而丢弃路由了
```shell
[PE1] bgp 123
[PE1-bgp] ipv4-family vpn-instance vpn1
[PE1-bgp-vpn1] peer 192.168.100.1 substitute-as
```
PE1在向CE1发送BGP路由时若发现AS_Path中包含65001则会用本地AS号也就是123去替换65001。所以若有一条路由从CE2传给PE2再由PE2传给PE1当PE1再传递给CE1此时BGP路由的AS_Path属性为{123,123}
**特殊场景下的BGP配置 - SoO**
在CE多归属场景若使能了BGP的AS号替换功能可能会引起路由环路需要SoOSite of Origin特性来避免环路
CE1与CE3处于同一个VPN站点1CE2位于站点Site2Site1和Site2站点所在的AS号都为65001。PE与CE之间运行的都是EBGP路由协议为了Site 1和Site 2之间的路由可以正常学习需要在PE1和PE2上配置AS号替换功能
CE1传递站点内的路由给PE1PE1传递该路由给CE3由于配置AS号替换CE3会接收该路由可能会导致产生路由环路
```shell
[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
```
配置了BGP邻居的SoO后
接收到该邻居的BGP路由时会在路径属性中携带该SoO属性并通告给其他BGP邻居
向该邻居通告BGP路由时会检查路由中的SoO属性是否与配置的SoO值相同若相同则不通告避免引起环路
![image-20220218114307638](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218114307638.png)
**PE-CE之间部署IS-IS**
![image-20220218114328243](https://xingdian-image.oss-cn-beijing.aliyuncs.com/xingdian-image/image-20220218114328243.png)
```shell
[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网段所在接口
```
```shell
[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
```