文章目录
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设备上配置
baship 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全局唯一
bashR1 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 的邻居关系
bashbgp 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
bashR1 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