MPLS VPN基础

文章目录

MPLS VPN

既然能用MPLS解决私网经过公网进入私网之间进行通信,为什么还要用MPLSVPN?

  • 当私网中出现多个站点,需要使用一定的技术来对私网流量进行区分,同时也要实现用户之间的隔离
  • MPLS网络一般是运营商进行搭建的,但是也能实现基本的内网经过公网之后到内网之间的通信,但是存在很大弊端
  • 因此使用 MPLS VPN
    隔离靠VRF:用来让LER下方连接的私网之间进行隔离

区分靠RD:RD不可以控制路由的加载,没有能力控制路由究竟进入哪一个VRF的功能,能通过RD区分具体的VPNv4路由

进入对应的VRF使用RT:究竟进入哪一个VRF,RT来决策

传递靠MP-BGP:多协议BGP,用于传递VPNv4路由
传统GRE、IPsecVPN的优缺点

  • 便宜,不需要找运营商(运营商只负责互通)

  • 只需要自己配置就可以

  • 假设运营商中间出现网络拥塞,用户体验得不到保障

  • 服务质量和带宽得不到保障

  • 用户业务和运营商业务是相互隔离的

MPLS VPN相比于传统的GRE、IPsecVPN的优点

  • 吸取传统VPN优点:运营商传递的是 VPNv4 路由
  • 可以对数据流量进行优化,保障网络的稳定性
  • 用户业务和运营商业务之间也是相互隔离的

VPN组件

VRF

VPN实例,把一个物理设备虚拟成很多逻辑设备,逻辑设备之间相互隔离,用来让 LER 下方连接的私网之间进行隔离 虚拟路由转发表 VPN-instance 提供路由隔离

包含内容:IP路由表、标签转发表、接口列表、RD、路由过滤策略

在LER设备上配置

bash 复制代码
ip vpn-instance VPN_A    #创建VPN实例
ipv4-family    #打开IPv4地址族功能
inter g0/0/0
ip bind vpn-instance VPN_A    #进入接口将接口加入VPN实例,绑定的不同VPN实例可以针对不同的客户
ip add 12.1.1.2 24    #将接口加入VPN实例之后会清空IP配置
dis ip routing-table vpn-instance VPN_A    #查看虚拟路由表

#此时在LER设备上进行 ICMP 的 Ping 测试需要在命令后加参数
ping -vpn-instance VPN_A 3.3.3.3 进行连通性测试(同样支持普通ICMP里面的参数)
ping -vpn-instance VPN_A -a 1.1.1.1 3.3.3.3    #指定源地址去进行 Ping 测试
tracert -vpn-instance VPN_A -v -a 1.1.1.1 3.3.3.3    # -v表示显示详细信息,-a表示指定源地址,-q表示探测包的数量
#在配置完RT之后,我们使用上面的 Tracert 命令就能看见数据包经过IP网络进入MPLS网络的效果
RD

路由标识符,用于区分使用相同地址空间的IPv4前缀,必须保证PE上的RD全局唯一

bash 复制代码
R1
ip vpn-instance VPN_A    #当用户的路由加入到VRF之后,我们需要给他添加一个RD值
route-distinguisher 100:1    #RD用来标识进入此LER设备的路由变成 VPN 路由之后打的Tag就是100:1

R3
ip vpn-instance VPN_A
route-distinguisher 100:2

加上RD属性之后就变成了VPNv4路由,之后就需要建立 MP-BGP 用以承载 VPNv4 路由

MP-BGP

因为本身有MPLS作为支撑,所以可以直接跨设备建立邻居

所以在MPLS网络中需要建立 MP-IBGP 的邻居关系

bash 复制代码
bgp 100
peer 3.3.3.3 as 100
peer 3.3.3.3 con loo 0
undo peer 3.3.3.3 enable    #关闭掉IPv4的邻居关系
ipv4-family vpnv4    #在BGP中使能 VPNv4
peer 3.3.3.3 enable    #激活 VPNv4 的邻居关系

dis bgp vpnv4 all peer    #查看VPNv4的所有邻居

bgp 100
ipv4 vpn-instance VPN_A    #进入VPN实例进行路由宣告
network x.x.x.x 24    #在VPN实例里面宣告路由

dis bgp vpnv4 vpn-instance VPN_A routing-table 3.3.3.3    #查看VPN实例下的BGP路由
dis bgp vpnv4 route-distinguisher 100:1 routing-table 12.1.1.0    #查看RD、RT信息,并且指定要查询的路由
dis bgp vpnv4 all routing-table peer 3.3.3.3 advertised-routes    #查看所有对邻居3.3.3.3通告的路由信息

#此时因为没有配置RT,VPNv4路由无法接受,因此MP-IBGP邻居收不到传来的路由条目,刚刚的查询命令查不到相应的东西
RT

称为VPN的 Target、BGP扩展团体属性、控制VPN路由信息的加载、每个VPN实例关联一个或多个VPN Targer 属性

接受的RT叫 IRT,发送的RT叫 ERT

bash 复制代码
R1
ip vpn-instance VPN_A    #还是需要在LER设备上进行配置
vpn-target 100:1 export-extcommunity    # R1-LER 配置出去的RT为100:1

R3
ip vpn-instance VPN_A
vpn-target 100:1 import-extcommunity    # R3-LER 配置进来的RT为100:1

R3
ip vpn-instance VPN_A    #还是需要在LER设备上进行配置
vpn-target 100:2 export-extcommunity    # R3-LER 配置出去的RT为100:2

R1
ip vpn-instance VPN_A
vpn-target 100:2 import-extcommunity    # R1-LER 配置进来的RT为100:2

#现在使用命令就能在 R3-LER 设备上看到本端LER传递的路由信息
dis bgp vpnv4 route-distinguisher 100:1 routing-table 12.1.1.0    #查看RD、RT信息,并且指定要查询的路由
dis bgp vpnv4 vpn-instance VPN_A routing-table 3.3.3.3   #查看VPN实例下的BGP路由,配置RT之后就可以正常查询了
bash 复制代码
在LER设备上进行 ICMP 的 Ping 测试需要在命令后加参数
ping -vpn-instance VPN_A 3.3.3.3 进行连通性测试(同样支持普通ICMP里面的参数)
ping -vpn-instance VPN_A -a 1.1.1.1 3.3.3.3    #指定源地址去进行 Ping 测试
tracert -vpn-instance VPN_A -v -a 1.1.1.1 3.3.3.3    # -v表示显示详细信息,-a表示指定源地址,-q表示探测包的数量
#在配置完RT之后,我们使用上面的 Tracert 命令就能看见数据包经过IP网络进入MPLS网络的效果

Author:DC

相关推荐
bug菌¹12 分钟前
滚雪球学Oracle[3.5讲]:Oracle特有的SQL功能
数据库·sql·oracle·特性·sql功能
沟沟里的农民14 分钟前
【PostgreSQL】PG数据库表“膨胀”粗浅学习
数据库·postgresql
goTsHgo1 小时前
MySQL 锁 简介
数据库·mysql
Lill_bin1 小时前
高并发处理方案:构建可扩展的系统
java·服务器·开发语言·后端·微服务
Yanc_L1 小时前
【环境搭建】远程服务器搭建ElasticSearch
运维·服务器·github
MXsoft6182 小时前
机房建设及运维方案重构:迎接信息技术新时代的挑战
数据库
Nervousr3 小时前
SQL自学:分组数据GROUP BY子句和HAVING子句
数据库·笔记·sql·mysql
好好学习的人3 小时前
SQL第13课挑战题
数据库·sql
知识分享小能手3 小时前
mysql学习教程,从入门到精通,SQL HAVING 子句(32)
大数据·开发语言·数据库·sql·学习·mysql·数据分析
快乐江小鱼3 小时前
深入浅出MongoDB(五)
数据库·mongodb