传统VPN技术的缺陷
- 可扩展性不强 静态建立,随着用户网络规模的扩大,隧道数量成几何增长
- 维护和管理问题 由用户自行完成,不同的VPN用户,私网地址可能存在冲突,ISP无法区分用户
MPLS VPN概述
- 是运营商VPN解决方案中基于PE的L3 VPN技术
- 使用BGP在运营商骨干网上发布VPN路由
- 使用MPLS在运营商骨干网上转发VPN报文
MPLS VPN特点
- 通过扩展的BGP协议传输路由报文
- 使用MPLS LSP为公网隧道对私网数据进行封装传输
MPLS VPN网络架构
- CE Customer Edge 用户网络边缘设备 与运营商的PE直接相连 CE感知不到VPN的存在 也不需要必须支持MPLS 【主要作用是将私网路由发布给运营商PE设备】
- PE Provider Edge 运营商边缘设备 与企业用户的CE直接相连 在MPLS网络中 对VPN的处理都在PE上、
- P Provider 运营商骨干设备 只需要具备MPLS转发能力
- PE/P设备都为运营商设备
- 一台PE设备可以接入多台CE设备
- 一台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上增加两个属性
- MP_UNREACH_NLRI字段用于回收VPN路由表 Withdrwan Routes 删除的路由条目
报文分析
发布路由的RT Export Target属性
MP_REACH_NLRI
MP_UNREACH_NLRI
RD Route Distinguishers
- 让BGP可以区分重复的路由前缀,确保唯一性
- 路由前缀不再是普通的IPV4地址,而是RD+IPV4地址(称为VPNv4地址)
- 每个VRF(VPN实例)都必须配置至少一个RD
- VPNv4地址簇主要用于PE之间传递VPN路由
- VPNv4地址只是存在于MP-BGP的路由信息和PE设备的私网路由表中,只是出现在路由的发布学习过程中
- 在VPN数据流量穿越供应商骨干时,包头中没有携带VPNv4地址
| 命名格式 | 备注 |
|---|---|
| 100:1 | 16位自治系统号:32位用户自定义 |
| 65536:1 | 32位自治系统号:16位用户自定义 |
| 192.168.1.1:1 | 32位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访问控制
MPLS VPN报文转发过程
- 外层标签用于指示如何到达BGP下一跳
- 内层标签表示报文的出接口或者属于哪个VPN
MPLS VPN路由传递过程
- CE与PE之间的路由交换
- VRF路由注入MP-BGP的过程
- 公网标签的分配过程
- MP-BGP路由注入VRF的过程
MPLS VPN数据转发过程
- CE设备到PE设备的数据转发
- 公网设备上的数据转发
- PE设备到CE设备的数据转发
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
-
PE1弹出私网标签 标签为24254
-
PE2弹出私网标签 标签为24255
分析:PE设备处理私网标签 P设备只处理MPLS最外层的公网标签 私网标签由PE设备产生