实验拓扑图
如图1所示,本次实验使用了6台路由器(R1-R6),其中R3、R4、R5作为运营商网络中的P或PE路由器,R1、R2作为VPN客户端(CE)路由器,R6作为VPN客户端要访问的目标路由器。运营商网络使用OSPF作为IGP协议,并开启MPLS LDP功能。PE路由器使用MP-BGP协议发布VPN路由信息,并创建两个VRF实例(1和2)对应两个VPN客户。CE路由器使用静态路由与PE路由器互通。
实验目的和需求
本次实验旨在通过以下几个方面达到以下目的:
了解MPLS VPN的基本原理和配置方法,包括MPLS LDP、MP-BGP、VRF、RD、RT等概念和功能.。
掌握VRF、RD和RT的作用和配置方法,包括如何创建VRF实例、如何指定RD和RT值、如何将接口划分到VRF中等。
验证MPLS VPN的功能和效果,包括如何测试不同VPN之间的连通性和隔离性。
实验步骤
1. 配置IP地址和路由协议
- 在CE、PE和P路由器上配置IP地址和路由协议,使得各个路由器之间可以互相ping通
- 在PE路由器上配置loopback0接口,作为BGP的源地址
- 在P路由器上配置MPLS LDP,使得P路由器之间可以建立标签交换路径
2. 配置VRF和RD
- 在PE路由器上创建两个VRF实例,分别命名为1和2,分别对应两个VPN客户
- 在每个VRF实例下配置RD值,使得同一VPN内的IP地址可以区分开来
- 在PE路由器上将连接CE的接口划分到相应的VRF中,使得不同VPN之间可以隔离
3. 配置MP-BGP和RT
- 在PE路由器上配置MP-BGP,并激活VPNv4邻居会话,使得PE之间可以交换VPN路由信息
- 在每个VRF实例下配置RT值,使得不同VPN之间可以根据需要导入或导出路由信息
- 在PE和CE之间配置相应的动态或静态路由协议,并根据需要重新分发路由信息
1. 配置IP地址和路由协议
在CE、PE和P路由器上配置IP地址和路由协议,使得各个路由器之间可以互相ping通
在PE路由器上配置loopback0接口,作为BGP的源地址
在P路由器上配置MPLS LDP,使得P路由器之间可以建立标签交换路径
(首先要在系统界面下开启mpls ldp)
在R3、R4、R5上开启MPLS LDP功能,并配置OSPF协议,如下:
r3 r4 r5上操作
[r3][r4][r5]mpls
[r3][r4][r5]mpls ldp
[r3][r4][r5]qui
[r3]
ospf 1 router-id 3.3.3.3
area 0.0.0.0
#
interface GigabitEthernet0/0/2
ip address 34.1.1.3 255.255.255.0
ospf enable 1 area 0.0.0.0
mpls
mpls ldp
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
ospf enable 1 area 0.0.0.0
[r4]
ospf 1 router-id 4.4.4.4
area 0.0.0.0
#
interface GigabitEthernet0/0/2
ip address 34.1.1.4 255.255.255.0
ospf enable 1 area 0.0.0.0
mpls
mpls ldp
#
interface GigabitEthernet0/0/1
ip address 45.1.1.4 255.255.255.0
ospf enable 1 area 0.0.0.0
mpls
mpls ldp
interface LoopBack0
ip address 4.4.4.4 255.255.255.255
ospf enable 1 area 0.0.0.0
[r5]
ospf 1 router-id 5.5.5.5
area 0.0.0.0
interface GigabitEthernet0/0/1
ip address 45.1.1.5 255.255.255.0
ospf enable 1 area 0.0.0.0
mpls
mpls ldp
interface LoopBack0
ip address 5.5.5.5 255.255.255.255
ospf enable 1 area 0.0.0.0
2. 配置VRF和RD
在PE路由器上创建两个VRF实例,分别命名为1和2,分别对应两个VPN客户,在另外一个PE路由器上创建一个VRF实例,命名为1,对应两个VPN用户都要访问的目的地。并且在每个VRF实例下配置RD值,使得同一VPN内的IP地址可以区分开来。
在R3上创建两个VRF实例,并指定RD值,如下:
[r3]
ip vpn-instance 1
route-distinguisher 1:1
#
ip vpn-instance 2
route-distinguisher 2:2
在R5上创建一个VRF实例,并指定RD值,如下:
[r5]
ip vpn-instance 1
route-distinguisher 3:3
在PE路由器上将连接CE的接口划分到相应的VRF中,使得不同VPN之间可以隔离
在R3上将连接R1和R2的接口划分到相应的VRF中,如下:
[r3]
interface GigabitEthernet0/0/0
ip binding vpn-instance 1
ip address 192.168.1.254 255.255.255.0
#
interface GigabitEthernet0/0/1
ip binding vpn-instance 2
ip address 192.168.3.254 255.255.255.0
在R5上将连接R6的接口划分到VRF中,如下:
[r5]
interface GigabitEthernet0/0/0
ip binding vpn-instance 1
ip address 56.1.1.5 255.255.255.0
3. 配置MP-BGP和RT
在PE路由器上配置MP-BGP,并激活VPNv4邻居会话,使得PE之间可以交换VPN路由信息
在R3和R5上配置MP-BGP,并激活VPNv4邻居会话,如下:
[r3]
bgp 35
router-id 3.3.3.3
undo default ipv4-unicast
peer 5.5.5.5 as-number 35
peer 5.5.5.5 connect-interface LoopBack0
ipv4-family vpnv4
policy vpn-target
peer 5.5.5.5 enable
[r5]
bgp 35
router-id 5.5.5.5
undo default ipv4-unicast
peer 3.3.3.3 as-number 35
peer 3.3.3.3 connect-interface LoopBack0
ipv4-family vpnv4
policy vpn-target
peer 3.3.3.3 enable
在每个VRF实例下配置RT值,使得不同VPN之间可以根据需要导入或导出路由信息
在R3上为每个VRF实例配置RT值,如下:
[r3]
ip vpn-instance 1
vpn-target 1:1 export-extcommunity
vpn-target 1:1 import-extcommunity
#
ip vpn-instance 2
vpn-target 2:2 export-extcommunity
vpn-target 2:2 import-extcommunity
在R5上为VRF实例配置RT值,如下:
[r5]
ip vpn-instance 1
route-distinguisher 3:3
vpn-target 1:1 2:2 export-extcommunity
vpn-target 3:3 1:1 2:2 import-extcommunity
在PE和CE之间配置相应的动态或静态路由协议(这里用BGP协议举例),并根据需要重新分发路由信息
R1和R2,与R3配置BGP邻居关系,并宣告自己的路由信息
[r1]
bgp 1
peer 192.168.1.254 as-number 35
network 1.1.1.1 255.255.255.255
network 192.168.1.0
[r2]
bgp 2
peer 192.168.3.254 as-number 35
network 2.2.2.2 255.255.255.255
network 192.168.3.0
[r3]
bgp 35
ipv4-family vpn-instance 1
peer 192.168.1.1 as-number 1
#
ipv4-family vpn-instance 2
peer 192.168.3.1 as-number 2
R5和R6建立BGP邻居关系,并宣告自己的路由信息
[r6]
bgp 6
peer 192.168.2.254 as-number 35
network 6.6.6.6 255.255.255.255
network 192.168.2.0
[r5]
bgp 35
ipv4-family vpn-instance 1
peer 192.168.2.1 as-number 6
实验结果
1. 验证MPLS VPN的连通性
在CE上使用ping或tracer命令测试不同VPN之间的连通性,观察结果是否符合预期
<r1>ping 192.168.2.1
PING 192.168.2.1: 56 data bytes, press CTRL_C to break
Reply from 192.168.2.1: bytes=56 Sequence=1 ttl=252 time=50 ms
Reply from 192.168.2.1: bytes=56 Sequence=2 ttl=252 time=40 ms
<r1>ping 6.6.6.6
PING 6.6.6.6: 56 data bytes, press CTRL_C to break
Reply from 6.6.6.6: bytes=56 Sequence=1 ttl=252 time=40 ms
Reply from 6.6.6.6: bytes=56 Sequence=2 ttl=252 time=40 ms
<r1>tracert 192.168.2.1
traceroute to 192.168.2.1(192.168.2.1), max hops: 30 ,packet length: 40,press CTRL_C to break
1 192.168.1.254 20 ms 20 ms 30 ms
2 34.1.1.4 40 ms 30 ms 30 ms
3 192.168.2.254 < AS=6 > 40 ms 30 ms 40 ms
4 192.168.2.1 < AS=6 > 40 ms 40 ms 30 ms
<r2>ping 192.168.2.1
PING 192.168.2.1: 56 data bytes, press CTRL_C to break
Reply from 192.168.2.1: bytes=56 Sequence=1 ttl=252 time=30 ms
Reply from 192.168.2.1: bytes=56 Sequence=2 ttl=252 time=50 ms
<r2>ping 6.6.6.6
PING 6.6.6.6: 56 data bytes, press CTRL_C to break
Reply from 6.6.6.6: bytes=56 Sequence=1 ttl=252 time=30 ms
Reply from 6.6.6.6: bytes=56 Sequence=2 ttl=252 time=30 ms
<r2>tracert 6.6.6.6
traceroute to 6.6.6.6(6.6.6.6), max hops: 30 ,packet length: 40,press CTRL_C to break
1 192.168.3.254 20 ms 20 ms 20 ms
2 34.1.1.4 30 ms 20 ms 30 ms
3 192.168.2.254 < AS=6 > 40 ms 30 ms 30 ms
4 192.168.2.1 < AS=6 > 40 ms 30 ms 50 ms
<r6>ping 1.1.1.1
PING 1.1.1.1: 56 data bytes, press CTRL_C to break
Reply from 1.1.1.1: bytes=56 Sequence=1 ttl=252 time=40 ms
Reply from 1.1.1.1: bytes=56 Sequence=2 ttl=252 time=50 ms
<r6>ping 2.2.2.2
PING 2.2.2.2: 56 data bytes, press CTRL_C to break
Reply from 2.2.2.2: bytes=56 Sequence=1 ttl=252 time=40 ms
Reply from 2.2.2.2: bytes=56 Sequence=2 ttl=252 time=40 ms
<r6>ping 192.168.1.1
PING 192.168.1.1: 56 data bytes, press CTRL_C to break
Reply from 192.168.1.1: bytes=56 Sequence=1 ttl=252 time=40 ms
Reply from 192.168.1.1: bytes=56 Sequence=2 ttl=252 time=40 ms
<r6>ping 192.168.3.1
PING 192.168.3.1: 56 data bytes, press CTRL_C to break
Reply from 192.168.3.1: bytes=56 Sequence=1 ttl=252 time=30 ms
Reply from 192.168.3.1: bytes=56 Sequence=2 ttl=252 time=30 ms
2. 验证MPLS VPN的隔离性
- 在CE上使用ping或traceroute命令测试不同VPN之间的隔离性,观察结果是否符合预期
<r1>ping 192.168.3.1
PING 192.168.3.1: 56 data bytes, press CTRL_C to break
Request time out
Request time out
<r1>ping 3.3.3.3
PING 3.3.3.3: 56 data bytes, press CTRL_C to break
Request time out
Request time out
<r2>ping 1.1.1.1
PING 1.1.1.1: 56 data bytes, press CTRL_C to break
Request time out
Request time out
<r2>ping 192.168.1.1
PING 192.168.1.1: 56 data bytes, press CTRL_C to break
Request time out
Request time out
BGP/MPLS IP VPN的优点有:文章来源:https://www.toymoban.com/news/detail-703498.html
- 提高网络性能,利用MPLS的快速转发机制,减少报文的路由查找次数,降低网络延迟和抖动。
- 节省地址空间,利用路由区分符(RD)和路由标记(RT)实现不同VPN之间的地址空间隔离,允许VPN使用重叠的私有地址,避免了公网地址的浪费。
- 增强网络安全,利用MPLS的标签交换机制,在公网上建立隧道,实现VPN报文的封装和解封装,保护VPN报文不被窃听或篡改。
- 简化网络管理,利用BGP的多协议扩展(MP-BGP)实现VPN路由的发布和维护,避免了复杂的隧道配置和维护,提高了网络可扩展性和灵活性。
BGP/MPLS IP VPN的缺点有:文章来源地址https://www.toymoban.com/news/detail-703498.html
- 增加网络复杂度,需要在PE和P路由器上配置IP CEF、IGP、MPLS、MP-BGP等多种协议,并在PE路由器上创建和管理多个VPN实例(VRF),增加了网络设备的负载和配置难度。
- 需要额外的设备支持,需要在PE和P路由器上支持MPLS和MP-BGP等功能,并在CE路由器上支持与PE之间的动态或静态路由协议,增加了网络设备的成本和兼容性问题。
- 存在标签栈溢出等风险,如果骨干网中存在多层MPLS隧道或者跨域VPN场景,可能导致报文中携带过多的标签,超过设备的处理能力或MTU限制,造成报文丢失或分片。
到了这里,关于BGP/MPLS IP VPF(N) 实验(ensp)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!