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

相关推荐
数据智能老司机1 小时前
CockroachDB权威指南——SQL调优
数据库·分布式·架构
数据智能老司机1 小时前
CockroachDB权威指南——应用设计与实现
数据库·分布式·架构
数据智能老司机1 小时前
CockroachDB权威指南——CockroachDB 模式设计
数据库·分布式·架构
数据智能老司机20 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机21 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
宁zz21 小时前
乌班图安装jenkins
运维·jenkins
松果猿21 小时前
空间数据库学习(二)—— PostgreSQL数据库的备份转储和导入恢复
数据库
无名之逆21 小时前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
s91236010121 小时前
rust 同时处理多个异步任务
java·数据库·rust
大丈夫立于天地间21 小时前
ISIS协议中的数据库同步
运维·网络·信息与通信