MPLS-VPN技术

454 阅读5分钟

传统VPN技术的缺陷

  • 可扩展性不强 静态建立,随着用户网络规模的扩大,隧道数量成几何增长
  • 维护和管理问题 由用户自行完成,不同的VPN用户,私网地址可能存在冲突,ISP无法区分用户

MPLS VPN概述

  • 是运营商VPN解决方案中基于PE的L3 VPN技术
  • 使用BGP在运营商骨干网上发布VPN路由
  • 使用MPLS在运营商骨干网上转发VPN报文

图片.png

MPLS VPN特点

  • 通过扩展的BGP协议传输路由报文
  • 使用MPLS LSP为公网隧道对私网数据进行封装传输

MPLS VPN网络架构

图片.png

  • CE Customer Edge 用户网络边缘设备 与运营商的PE直接相连 CE感知不到VPN的存在 也不需要必须支持MPLS 【主要作用是将私网路由发布给运营商PE设备】
  • PE Provider Edge 运营商边缘设备 与企业用户的CE直接相连 在MPLS网络中 对VPN的处理都在PE上、
  • P Provider 运营商骨干设备 只需要具备MPLS转发能力
  1. PE/P设备都为运营商设备
  2. 一台PE设备可以接入多台CE设备
  3. 一台CE设备也可以连接属于相同或不同运营商的多台PE设备

VPN-instance VPN实例

  • 在MPLS VPN中,不同VPN之间的路由隔离通过VPN实例实现,VPN实例中包含对应Site站点的VPN成员关系和路由规则,PE上每个VPN实例都有相对独立的路由表和LFIB(标签转发表)

MPLS VPN特点

  • 实现隧道的动态建立
  • 解决本地地址冲突问题
  • VPN私网路由易于控制

VRF虚拟路由转发表

  • 用来存放客户路由表的一个容器 只有本地意义

MP-BGP技术

  • MP-BGP通过不同的地址簇来区分不同的网络协议
  • MP-BGP在原有BGP上增加两个属性

图片.png 图片.png

  • MP_UNREACH_NLRI字段用于回收VPN路由表 Withdrwan Routes 删除的路由条目

报文分析

发布路由的RT Export Target属性

图片.png

MP_REACH_NLRI

图片.png

MP_UNREACH_NLRI

图片.png

RD Route Distinguishers

  • 让BGP可以区分重复的路由前缀,确保唯一性
  • 路由前缀不再是普通的IPV4地址,而是RD+IPV4地址(称为VPNv4地址)
  • 每个VRF(VPN实例)都必须配置至少一个RD
  • VPNv4地址簇主要用于PE之间传递VPN路由
  • VPNv4地址只是存在于MP-BGP的路由信息和PE设备的私网路由表中,只是出现在路由的发布学习过程中
  • 在VPN数据流量穿越供应商骨干时,包头中没有携带VPNv4地址
命名格式备注
100:116位自治系统号:32位用户自定义
65536:132位自治系统号:16位用户自定义
192.168.1.1:132位ip地址:16位用户自定义
ip vpn-instance vpn1
  route-distinguisher 100:1

RT Route Targets

  • 扩展的团体属性
  • 控制VPNv4路由信息的发布与接收
  • 跟在VPNv4前缀后面被一起传递,一条路由可以附加多个RT值
  • 本质就是用于每个VPN实例对于路由的喜好和取舍方式
  • RT定义了一条VPN路由可以为哪些站点所接收,以及PE可以接收哪些站点发送来的路由

Export Target 导出

  • 在本地PE将从与自己直接相连的站点学习的VPN-IPV4路由发布给其他PE之前,为这些路由设置Export Target属性

Import Target 导入

  • PE在接收到其他PE路由器发布的VPN-IPV4路由时,检查其Export Target属性,只有当此属性与PE上VPN实例的Import Target属性匹配时,才把路由加到相应的VPN路由表中

配置原则

  • 本端Export Target = 对端的Import Target

  • 本端Import Target = 对端的Export Target

  • 由于每个RT export target与import target都可以配置多个value,接收是“或”操作,所以就可以实现非常灵活的VPN访问控制

图片.png

MPLS VPN报文转发过程

  • 外层标签用于指示如何到达BGP下一跳
  • 内层标签表示报文的出接口或者属于哪个VPN

图片.png

MPLS VPN路由传递过程

  • CE与PE之间的路由交换

图片.png

  • VRF路由注入MP-BGP的过程

图片.png

  • 公网标签的分配过程

图片.png

  • MP-BGP路由注入VRF的过程

图片.png

MPLS VPN数据转发过程

  • CE设备到PE设备的数据转发

图片.png

  • 公网设备上的数据转发

图片.png

  • PE设备到CE设备的数据转发

图片.png

MPLS VPN前期配置

  • 确定VPN用户需求(用户数量、vpn数量、vpn实例数量)
  • 配置骨干网路由(pe、p之间的igp路由,保证ip连通性)
  • 配置骨干网MPLS(建立公网隧道)
  • 配置骨干网BGP(pe间常规BGP)

MPLS VPN配置思路

  • 配置VRF、RD、RT
  • 配置PE和CE间的路由协议(静态、动态)
  • 配置IGP和BGP间的路由注入
  • 配置PE间的MP-BGP

MPLS VPN配置命令

# PE配置VRF、RD、RT

ip vpn-instance vpn                                  // 创建VPN实例
 ipv4-family
  route-distinguisher 100:1
  vpn-target 100:1 {both | export-extcommunity | import-extcommunity}
 
interface g0/0
 ip binding vpn-instance vpn                         // 接口绑定VPN实例
 
-----------------------------------------------
# 配置PE和CE间的路由协议

ip route-static vpn-instance vpn 目标 掩码 下一跳     // PE使用静态路由到达CE路由

-----------------------------------------------

rip 1 vpn-instance vpn                              // 使用rip
ospf 1 route-id 1.1.1.1 vpn-instance vpn            // 使用ospf
isis 1 vpn-instance vpn                             // 使用isis

-----------------------------------------------

bgp 123                                             // 使用bgp
 ipv4-family vpn-instance vpn
 
-----------------------------------------------

display ip vpn-instance vpn
display ip vpn-instance verbose vpn
display ip vpn-instance import-vt ivt-value
display ip vpn-instance vpn interface
display ip routeing-table vpn-instance vpn

-----------------------------------------------
# 配置PE间的MP-BGP

bgp 123
 peer 3.3.3.3 as-number 123
 peer 3.3.3.3 connect-interface loopback 0
 ipv4 family vpnv4
  peer 3.3.3.3 enable                              // 建立MP-BGP邻居
  
# 路由引入

bgp 123
 ipv4 vpn-instance site_A
  import rip route-policy site_A
  • ⚠️ 华三在路由引入处与华为有出入 其他命令相似
# 路由引入
ip vpn-instance site_A
 address-family ipv4
  import-route rip route-policy site_A

MPLS VPN标签分析

  • R3-PE2-PE1-R1 图片.png

  • PE1弹出私网标签 标签为24254 图片.png

  • PE2弹出私网标签 标签为24255 图片.png

图片.png

分析:PE设备处理私网标签 P设备只处理MPLS最外层的公网标签 私网标签由PE设备产生