MPLS VPN

简介: MPLS VPN

MPLS VPN( BGP/MPLS IP VPN)不是一种技术,而是一种解决方案,多个技术的结合体。控制面使用BGP,转发面用了MPLS。

现在有A公司和B公司,在不同的城市,要实现互访的要求,可以向运营商租借光纤,但成本太高;也可以使用VPN技术。

VPN:在原有的报文前面封装一个或多个全新的头部,完成在公共网络上(不只运营商的网络)的传递。

VPN技术可以在原有报文的前面封装MPLS头部或IP头部

MPLS头部:

L2 VPN :同网段转发 ---二层转发

L3 VPN :不同网段转发 -三层转发

L2 L3VPN又细分为P2P和P2MP网络

IP头部:

L2 VPN :同网段转发 ---二层转发

L3 VPN :不同网段转发 -三层转发

L2 L3VPN又细分为P2P和P2MP网络

对于二层或三层,是看CE两侧的地址

MPLS VPN

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

P:运营商网络中的骨干路由器,不与CE直接相连。P设备只需要具备基本MPLS转发能力,不维护VPN相关信息。

PE:运营商边缘路由器,是与CE直连相连的设备。对VPN的所有处理都在PE上。需要隔离不同用户间的二路由。

CE:用户网络边缘设备,有接口直接与运营商网络相连。CE不知道VPN的存在,也无需支持MPLS。只需与PE交互路由即可。

MP-BGP:负责PE与PE之间传递路由信息

LDP:负责PE与PE之间的隧道建立

VRF:负责PE的VPN用户管理

IGP:负责PE与CE之间的路由信息交换

运营商网络设备(P、PE)底层IGP需要通

MPLS VPN的路由交互

VPN路由信息的发布过程包括三部分:

  • 本地CE到入口PE
  • 入口PE到出口PE
  • 出口PE到远端CE
  1. CE和PE之间交换IPv4路由,使用IGP或BGP协议都可以

  1. 因为PE需要为多个用户提供VPN服务,因此创建了多个VRF,在创建VRF时,需要指定RD和RT值,然后将连接CE的接口与VRF绑定,在使用路由协议和CE交互路由时,进程下需要指定VRF。然后从CE学到的路由就会进入VRF路由表中。              

  VRF: PE收到来自不同的VPN用户相同的路由,所以有了VRF来解决地址空间重叠的问题。


  1. 进入到VRF路由表后,需要通过BGP传递给对端PE,但是BGP只能接收一条相同路由,所以需要在IPv4前加上RD值,变成全局唯一的VPNv4路由。并且添加一个RT值,用于传递给对端PE时,匹配对端PE的入方向RT值,让对端PE接收出入方向RT值对应的路由,注入VRF表中。      

      RD:VRF解决了地址空间重叠问题,但PE之间仍需通过BGP传递路由,但BGP路由表仍然只有一个,所以有了RD值,把路由变成全局唯一的VPNv4路由。

RD值用于解决在MPLS VPN网络中客户IPv4地址空间的冲突问题。

VPNv4路由共有12个字节。RD+IP地址=8字节+4字节。

RT:PE与PE之间传递路由,需要使用MP-BGP协议,因为传递的是VPNv4路由。

传递到对端PE之后,对端PE接收时,不知道传递给他的哪个VPN用户,所以 需要用RT值进行区分,传递给相应的VPN用户。

每个VPN实例都会与一个或多个VPN Target绑定,一个出方向,一个入方向。

如果PE与CE使用IGP协议交互的路由,那么PE需要把客户路由引入BGP中;

如果PE与CE使用BGP协议交互的路由,那么PE不需要把客户路由引入BGP中,因为BGP会自动形成VPNv4路由。


  1. PE与PE交互VPNv4路由,需要建立MP-BGP对等体关系,前提是MPLS VPN骨干网络内部署IGP协议。

  1. 因为对端PE也会连接很多用户,创建VRF。所以需要根据接收到的VPNv4路由携带的出方向的RT值,与自己的VRF表中的入方向RT相匹配,如果出入方向RT值一样,就会接收,并剥离RD值,变成IPv4路由,注入自己本地的VRF表中。

  1. 然后由PE设备发给自己对应的CE设备。

MPLS的使用:P设备上没有VPN路由,无法根据IP地址转发。

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

MPLS VPN的报文转发过程

虽然CE已经知道了对端CE的路由,但还需要将报文转发到对端。

CE把路由发给PE,PE查看fib表,得到对应的Tunnel ID,然后PE压入一个私网标签头部,再根据Tunnel ID找到对应的隧道,对应的是LSP,然后压入公网标签头部,然后PE一路使用公网标签头部走到对端PE,对端PE弹掉公网标签后漏出私网标签,然后根据私网标签找到对应的VRF,弹掉私网标签将IP报文再转发给CE。

外层标签也被称为公网标签,被用于将报文沿着LSP转发到远端PE设备。

内层标签也被称为私网标签,被用于将报文在远端PE设备对应到具体的CE设备。

VRF

VRF:通过在一台三层转发设备上创建多张路由表实现数据或业务的隔离。不同的VRF路由表是不通的。

VRF又称VPN实例,是一种虚拟化技术,在物理设备上创建多个VPN实例,每个VPN实例有独立的接口、路由表和路由协议进程等。部署路由协议时,需要绑定好对应的VPN实例。

基本配置:

ip vpn-instance <name>    创建VPN实例

ipv4-family     使能VPN实例的IPv4类型路由

ip binding vpn-instance <name>    将接口绑定到VPN实例

ospf 1 router-id <id> vpn-instance <name>   创建与VPN实例绑定的路由协议  (静态同理)

如该拓扑图,R1连接R4使用ospf,假设此时R4产生一条路由x(192.168.1.0/24),发给R1,那么R1路由表里会有x(192.168.1.0/24),那如果R1又接了另外一台新设备(R5),同理的,新设备也产生一条路由x(192.168.1.0/24)发给了R1,那此时R1如何去做?这个问题叫做地址空间重叠!于是这就产生了VRF(虚拟路由转发)。

VRF也就是说,在路由器上虚拟出多个虚拟的路由器,这些虚拟路由器都有自己单独的路由表。然后再将这些虚拟路由器与路由器的接口进行绑定,则使接口的路由存放在虚拟路由器中的路由表里。

VRF在PE设备配置

R1收到了R4和新设备(R5)产生的x路由(192.168.1.0/24),R1如何通过BGP发送给R3?因为BGP只能发送最优的路由,也就是说要么发R4的,不发R5的;要么发R5的不发R4的,那这样就不能满足需求!于是有了RD值(路由标识符)的概念。

RD在PE的VRF中配置

RD:PE从CE接收到IPv4路由后,在IPv4前缀前加上RD,转换为全局唯一VPN-IPv4路由。RD值是本地唯一的,两个VRF中,RD值不能冲突。

RD值长度:8字节   例如:1:2 192.168.1.1   ---1:2是RD值

所以IPv4+RD=VPNv4路由    ---同理,PE通过MP-BGP传给对端PE时,实际传递的是VPNv4路由,而并非IPv4路由

此时,R1发给了对端PE R3,R3也会有很多VPN实例,那么R1如何准确无误的把路由发给R3对应的VPN实例呢?此时引出了RT值(路由标签--标识符的名称)的概念。

RT值会在PE的VRF里中配置,出方向和入方向的RT值

这两行的命令代表意思是打开了ipv4单播路由功能,并且是与邻居1.1.1.1开启的    ---这是默认开启的

但我们要通过BGP传递的是BGP路由,因此还要配置打开vpnv4路由传递功能

ipv4-family vpnv4
peer 3.3.3.3 enable

1.运营商搭建

底层IP

底层IGP

底层MPLS LDP

2.链接用户

创建用户VRF

ip vpn-instance vpn1     创建vpn实例

配置用户RD及RT值

route-distinguisher 1:1      ---RD值

vpn-target 100:1 export-extcommunity     --出方向的RT值

绑定用户接口配置IP            ----------绑定接口前一定要dis this,因为绑定之后接口下的配置全部消失,所以绑定前要dis this

ip binding vpn-instance vpn1

配置路由协议学习用户侧路由

PE与CE使用IGP打通

3.运营商在PE之间交换用户路由

bgp <as号>

peer x.x.x.x as-number

配置PE间BGP VPNv4邻居

ipv4-family vpnv4

peer 3.3.3.3 enable

互相引入路由完成路由交互

import-route

VRF--实例   解决用户地址空间重叠问题    --不同用户用了相同网段的问题

RD值        解决BGP路由表中IPv4地址重叠问题 RD+IPv4前缀=VPNv4路由

RT值        解决用户是否对路由感兴趣的问题      ---PE接收该路由,要匹配出入方向

BGPVPNv4邻居 解决VPNv4路由传递问题

配置完成之后,报文转发流程:

5-->4:

5去访问4时,发给下一跳R3,R3查询VRF路由表,发现下一跳是R1(通过BGP学来的),但是正常流程走,R3发给R1,经过R2时,R2没有去往4的路由,所以会丢弃。通过配置MPLS VPN,会通过隧道(0x01)转发(MPLS),到达R1。R1再查询路由表到达R4。那么此时有个问题:R1如何准确无误的发给R4,因为R1是通过全局路由表收到的去往4报文,会去查询全局路由表,但是4产生的路由R1是保存在VRF表的,全局路由表并不存在,所以此时MP-BGP会产生标签,比如VRF表1分配1025标签,VRF表2分配1024标签,再通过对应的标签,查询对应的VRF表,就可以实现转发。

MPLS VPN,MPLS LSP表中有两张表,一张是BGP的LSP表,一张是LDP LSP的表

BGP的LSP表,就是根据标签查找VRF对应表的。这个标签是BGP传递VPNv4路由出去的时候分配的

相关文章
|
19天前
|
网络协议 网络虚拟化 网络架构
MPLS VPN协议高级应用
MPLS VPN协议高级应用
|
19天前
|
网络协议 网络虚拟化
MPLS VPN跨域方案(一)
MPLS VPN跨域方案(一)
|
2月前
|
网络虚拟化
配置BGP/MPLS IP VPN示例
配置BGP/MPLS IP VPN示例
|
2月前
|
网络协议 PHP 网络虚拟化
BGP MPLS VPN(OPTION C)实验笔记
BGP MPLS VPN(OPTION C)实验笔记
100 1
|
2月前
|
网络协议 PHP 网络虚拟化
BGP MPLS VPN(OPTION B)实验笔记
BGP MPLS VPN(OPTION B)实验笔记
92 0
BGP MPLS VPN(OPTION B)实验笔记
|
2月前
|
网络协议 网络虚拟化
MPLS VPN 跨域OptionC2
MPLS VPN 跨域OptionC2
|
2月前
|
网络协议 网络虚拟化
|
2月前
|
网络协议 PHP 网络虚拟化
MPLS VPN 跨域OptionB
使用跨域方式B实现两家公司的通信
|
2月前
|
网络协议 网络虚拟化
MPLS VPN 跨域OptionA
通过跨域A的方式实现两家公司互相通信
|
9月前
|
网络虚拟化
MPLS VPN跨域C2 RR反射器方案(二)
MPLS VPN跨域C2 RR反射器方案
78 0