MPLS VPN原理与配置

VPN的服务模型

  • Overlay VPN
    • 客户的路由信息时直接交互的
    • 运营商只保证源目可达
    • 例如IPsec、SSL

MPLS VPN原理与配置

  • peer-to-peer VPN
    • 客户的路由信息发送给运营商,由运营商扩散

MPLS VPN原理与配置

传统的VPN通过在所有站点建立全连接隧道(ipsec、SSL等)或者永久虚链路PVC(Permanent Virtual Circuit)的方式实现,不易维护和扩展,特别是向已有的VPN加入新的站点时,需要同时修改所有接入此VPN站点的边缘节点的配置

BGP/MPLS IP VPN基于对等体模型。这种模型使得服务提供商和用户可以交换路由,服务提供商转发用户站点之间的数据而不需要用户参与。相比于传统VPN,BGP/MPLS IP VPN更易于扩展和管理,新增站点时,只需修改提供站点业务的边缘设备配置

BGP/MPLS IP VPN简称MPLS VPN

BGP/MPLS IP VPN(IP是指VPN承载的是IP报文)是一种L3VPN(Layer 3 Virtual Private Network),实现不同站点的三层互访

使用BGP在服务提供商骨干网上发布VPN路由,使用MPLS 在服务提供商公干网络上转发VPN报文

MPLS VPN服务模型
MPLS VPN原理与配置

MPLS VPN服务模型有三个部分组成:CE、PE和P

  1. CE(Customer Edge):用户网络边缘设备,有接口直接跟运营商连接;只维护私有路由并且将私有路由传递给PE
    • CE可以是路由器或交换机、也可以是一台主机。通常,CE是感知不到VPN的存在(CE使用普通路由协议向PE设备传递路由),不需要支持MPLS
  2. PE(Provider Edge):服务提供商边缘设备,与CE相连,收集和传递私网路由;MPLS网络中,对VPN处理的动作都发生在PE上(对PE性能要求高)。PE设备需要做如下几件事;
    • 存储VRF(Virtual Routing Forwarding Instance)
    • 分发私网标签
    • 处理VPNv4路由
  3. P(Provider):服务提供商骨干设备,只需具备MPLS转发能力即可,不维护私网路由信息

PE和P设备由服务提供商管理,CE设备由用户管理(除非用户将CE设备交由服务提供商管理)

一个PE设备可以接入多台CE设备,一台CE设备也可以连接属于相同或不同服务提供商的多台PE设备

  • CE双归组网:CE设备接入多台相同服务提供商的PE设备;冗余性

一、MPLS VPN的基本概念

MPLS VPN需要解决的问题

1.本端PE接收到来自不同客户站点的相同的路由冲突问题(控制层面)

2.远端PE接收到本段PE发出的相同路由无法区分,该如何正确导入客户站点(控制层面)

3.本端PE收到VPN数据是,无法区分发送按哪个客户站点(数据层面)

1.VRF虚拟路由转发

Virtual Route Forwading

作用:用于区分私网路由和公网路由;用于解决私网路由在本地PE上发送重叠问题

  • 在PE设备配置,为不同的客户站点创建不同VRF表
  • 不同VRF表是相互隔离的
  • PE设备创建VRF表后,设备存在VRF表与全局路由表
  • 一个VRF可以由多个物理接口绑定,但一个接口只能绑定一个VRF

1.在PE创建VRF表

ip vpn-instance VPN1
ipv4-family
route-distinguisher 100:100

2.PE上将接口绑定进VRF中

interface G0/0/1
ip bind vpn-instance VPN1		##绑定后IP地址需要重新配置
ip address 10.1.14.1 255.255.255.0

3.CE与PE之间运行路由协议

CE

ospf 10 
area 0.0.0.0 
network 10.1.14.0 0.0.0.255 
network 172.16.1.0 0.0.0.255 

PE(要绑定VRF)

ospf 10 vpn-instance VPN1
area 0.0.0.0 
network 10.1.14.0 0.0.0.255 
import bgp 100		##引入VPNv4路由

4.在PE上将VRF路由引入BGP,成为VPNv4路由

bgp 100
ipv4-family vpn-instance VPN1
import ospf 10

查看命令

display ip routing-table vpn-instance VPN1
ping vpn-instance VPN1 10.1.14.4       ##检查底层链路

2.RD路由区分符

作用:解决私网路由在PE设备上传递出现冲突的问题

格式:N:M;64bit;例如 100:100、100:1、200:200

在私网路由转换为VPNv4路由时添加

  • 32bit IPv4路由+64bit RD值=96bit VPNv4路由

MPLS VPN原理与配置

配置:

ip vpn-instance VPN1
route-distinguisher 100:100  ##RD值

3.RT路由标记

作用:主要用于控制VPNv4路由导入,如何将路由导入到相应的VRF中

  • RT值分为导入值和导出值,格式:N:N

  • 一台PE设备可以配置多个RT值、导入值和导出值可以不一致

  • RT值时BGP的扩展团体属性

    • 运行MP-BGP的设备默认会开启RT值检查。VPNv4路由传递的中间节点设备本地并没有配置RT值,会影响VPNv4路由的传递,要关闭

使用方式:

  • 导出值在PE发出VPNv4路由时携带
  • 导入值在接收VPNv4路由时进行比对,一致则导入对应站点

MPLS VPN原理与配置

配置

ip vpn-instance VPN1
 
route-distinguisher 100:100
vpn-target 100:100 export-extcommunity 	##导出值,可以配置多个
vpn-target 200:200 import-extcommunity 	##导入值,可以配置多个

4.私网标签

控制层面分发

在私网路由转换成VPNv4路由时,由MP-BGP协议分发

  • MP-BGP协议会为每条私网路由分发一个私网标签,通过VPNv4路由发送

PE设备接收到私网标签后,会保存

  • 后续PE设备发送客户站点的数据时,会打上相应的私网标签发送给远端PE

远端PE设备在收到带有私网标签的数据时,通过私网标签决定发完哪个客户站点

查看私网标签

display fib vpn-instance X.X.X.X verbose

MPLS VPN原理与配置

5.公网标签

在公网运行MPLS LDP 协议分发

为实现私网数据能够在公网传递而设计,因为P设备无法识别私网标签

LDP默认为32位的主机路由(IP路由表)分发标签

  • MP-BGP邻居一般通过环回接口建立
    • 该地址会成为VPNv4路由的下一跳
    • 刚地址的路由会成为LDP协议分发标签FEC
  • MP-BGP协议会在发送VPNv4路由时携带路由的下一跳地址(邻居建立的地址)
  • 在公网LDP协议会为该下一跳地址路由(32位主机路由)分发公网标签
    • 在数据访问时,可以通过访问私网路由的下一跳直接找出公网标签

查看私网路由的公网标签

1.查找私网的tunnel ID

tunnel ID由收到的私网路由中‘BGPNexthop’决定

display fib vpn-instance VPN1

MPLS VPN原理与配置

2.查询对应tunnel ID的信息

MPLS VPN原理与配置

6.MP-BGP

PE和PE之间建立VPNv4邻居,用来传递VPNv4路由

MP-BGP为VPNv4路由分发标签

传统的BGP-4只能管理IPv4单播路由信息,对于其他网络层协议的应用,在跨AS传播时会受到限制

所以使用BGP多协议扩展MP-BGP(MultiProtocol BGP),提供对多种网络协议的支持,目前的MP-BGP标准是RFC4760,使用扩展属性和地址族来实现对IPv6、组播和VPN相关内容的支持,BGP协议原有的报文机制和路由机制并没有改变

  • 对IPv6单播网络的支持称为BGP4+
  • 对IPv4组播网络的支持称为MBGP

二、组网实现

1.PE设备上创建VPN实例,配置好RD、RT值

2.将PE上与CE的接口绑定创建的VPN实例

3.CE与PE之间实现路由交换,所以需要部署 静态路由/RIP/OSPF/ISIS/BGP 等路由协议

  • 使用的路由协议需要与VPN实例绑定

4.PE和P设备上配置IGP实现互通,配置MPLS以建立MPLS隧道用于流量转发

5.PE之间建立MP-BGP邻居;如果有RR反射器,则PE与RR建立MP-BGP邻居

查看方式

display bgp vpnv4 all peer		##查看MP-BGP邻居是否建立成功
display bgp vpnv4 all routing-table		##查看VPNv4路由
display ip routing-table vpn-instance XXX 	##查看VRF路由表

三、MPLS VPN工作流程

工作流程分为两个模块,一个是私网路由的传递方式既控制层面,一个是实现VPN流量的转发既数据层面

控制层面

1.CE将宣告路由(172.16.2.1/32)进路由协议(与PE通信的路由协议)


2.本端PE收到CE客户站点的私网路由(172.16.2.1/32),放入VRF表

display ip routing-table vpn-instance xxx

3.本端PE将私网路由(172.16.2.1/32)转换成VPNv4路由(172.16.2.1/32+RD值)

  • MP-BGP协议为私网路由(172.16.2.1/32)分配私网标签(label)
  • 32bit私网(IPv4)路由添加 64bitRD值 变成 96bit VPNv4路由
    • 172.16.2.1(32bit)+100:1(64bit)=172.16.2.1,100:1(96bit)

4.本端PE将VPNv4路由(172.16.2.1/32+RD值)放入BGP update报文的MP-REACH-NLRI字段中放松给远端PE

  • VPNv4路由
  • 私网标签
  • 下一跳(自己与远端PE(或RR)建立BGP邻居的地址,一般使用loopback 0接口)
  • RT导出值

MPLS VPN原理与配置


5.远端PE收到VPNv4路由(172.16.2.1/32+RD值),执行检查

  • 本地是否存在对应RT导入值
  • 下一跳地址(PE发来的BGP update报文中的下一跳)是否存在可用LSP

6.检查通过,保存对应的信息

  • 路由前缀(172.16.2.1)
  • 私网标签
  • 下一跳(PE发来的BGP update报文中的下一跳)

7.远端PE将VPNv4路由(172.16.2.1/32+RD值)转换成IPv4路由(172.16.2.1/32),发送给远端CE

数据层面

远端CE收到本端CE的私网路由(172.16.1.1/32)后,想去访问它

1.远端CE设备发出数据包(IP包)


2.远端PE收到CE的数据包,查找对应实例的VRF表

display ip routing-table vpn-instance 172.16.2.1 verbose

MPLS VPN原理与配置

  • 查找出私网标签
  • 通过BGPNextHop查找出公网标签
  • 封装两层标签(172.16.2.1+私网标签+公网标签)后发送给实际的下一跳(Next hop:10.1.12.2)P设备

3.P设备收到带标签的报文(172.16.2.1+私网标签+公网标签),根据公网LSP进行标签转发,直到本端PE设备


4.本端PE收到带标签的报文(172.16.2.1+私网标签;默认情况下会次末跳弹出公网标签)后,查找对应的实例

  • 弹出私网标签
  • 找到对应的VRF表

5.本端PE以IP包(172.16.2.1)的形式,根据VRF表指导转发,到达本端CE

MPLS VPN原理与配置

私网标签和公网标签的区别?

  • 栈底位不一致

    • 私网标签 S=1
    • 公网标签S=0
  • 分配的协议

    • 私网标签-----MP-BGP
    • 公网标签-----MPLS LDP
  • 实现作用

    • 私网标签----指导私网数据准确找到对应的VRF表
    • 公网标签----使公网设备(P设备)能够传递私网数据

四、MPLS VPN防环

适用场景:CE双归属到PE

1.DN置位

场景:CE双归属到PE,并且**PE和CE之间运行的协议为OSPF****

MPLS VPN原理与配置

作用:防止PE设备出现次优路径以及环路问题

实现方式:当PE向CE传递LSA3/5/7时,会将LSA flag中的DN位 置1,当另一台PE/MCE收到LSA中DN位为1的路由时,接收不计算

关闭DN置位检查

dn-bit-set disable summary/ase/nssa		##关闭 LSA3/5/7 的DN置位检查

2.route-tag

场景:CE双归属到PE,并且PE和CE之间运行的协议为OSPF并且关闭DN置位检查

组成:tag(只存在在LSA5类) + BGP AS号

  • 如果路由适用LSA3类传递,route-tag无效

实现方式:当PE向CE传递路由时会携带上route-tag,当另一台PE收到后会检查route-tag(使用路由固定值tag+自身AS号相加,如果和CE设备发过来的route-tag一致,则接收不计算)

MPLS VPN原理与配置

  • 路由的固定tag值从另一台PE设备发送而来

3.SoO

场景:CE双归属到PE,并且PE和CE之间运行的协议为BGP

作用:防止CE发出的BGP路由,从另一个PE又发送回来

实现:PE收到CE的BGP路由时,如果配置SoO值,添加SoO值;PE发送给CE BGP路由前,会检查BGP路由中对应的SoO值,与peer时配置的SoO值是否一致,如果一致则不会发送

MPLS VPN原理与配置

上一篇:Calico BGP搭建(TOR)


下一篇:谐云Calico大规模场景落地实践