课《通信网技术基础》
程 实 验 报
班级: 专业: 通信工程
学号: 姓名: 任课教师:
江凌云
2013/2014 学年 第 二 学期
告
实验二 MPLS VPN的实现
一、实验目的
该实验通过MPLS VPN的数据配置, 使学生掌握路由器相关接口的IP 地址设置、路由协议的配置以及MPLS VPN的完整的创建过程, 从而加深对IP 网络的IP 编址、路由协议以及MPLS 的相关理论的理解。
二、实验内容
利用网络模拟器GNS3模拟Cisco 的实验环境, 搭建IP 网络, 完成CE 、PE 和P 路由器上的数据配置, 使属于同一VPN 的两个路由器能够互通。
三、实验设备
1.硬件:PC机 2.软件:
①网络模拟器 GNS3-0.8.6-all-in-one ②终端仿真程序 SecureCRT6.7
③Cisco IOS文件 C3640-JK9O3S-M-12.4(7a).BIN
四、 实验步骤及要求
1)创建工程
打开GNS3软件,新建项目,命名为:MPLS_VPN_B11010918,如下图所示。
2)选择路由器
从左竖栏路由器图标中拖出7个c3600路由器,分别为R1-R7,其中R1、R3为PE ,
R2为P 路由器,R1-R3组成MPLS 骨干网,R4和R5为CE ,R6和R7为普通路由器,R4和R6组成VPN1 Site1,R5和R7组成VPN1 Site2,如下图所示。
可以使用绘制椭圆按钮
来绘制椭圆形标记以标识骨干网和VPN 的边界, 如下图所示。
3)配置路由器插槽
选择R1,右键选择“配置”项,设置插槽如下图所示:
同理设置R2~R7,其中R6和R7只需设置插槽口slot0即可,不需设置slot1。
4)连接路由器
使用左栏连接线按钮
连接各路由器,如下图所示:
5)使用保存工程按钮保存工程。
2. 接口配置
路由器各接口的IP 地址配置如下图:
1)设置R1接口
① 以R1为例,选中R1路由器,右键选择“开始”项,等待R1接口变成绿色,然后选中R1,右键选择console 项,打开SecureCRT 窗口。
② 当窗口中出现“R1#”时(表示进入路由器配置的特权模式),可以进行接口IP 地址设置且激活接口。
在进行接口IP 地址设置前,为防止CPU 占用率过高,我们需要计算Idle PC的值,选中R1路由器,右键选择“Idle PC”,此时路由器会计算Idle PC的值,我们选择带“*”的值点击保存就可以了。每种型号的路由器只需要第一次使用时设置一次Idle PC值,当再次使用这个型号的路由器时,GNS3就会自动识别并调用相应的Idle PC值。 接着用以下命令设置接口IP 地址,设置完后注意检查接口设置,检查无误后保存设置。具体操作:
R1#config t 进入全局配置模式
R1(config)#int f0/0 进入接口f0/0配置模式 R1(config-if)#ip address 12.1.1.1 255.255.255.0 配置接口f0/0的IP 地址 R1(config-if)#no shutdown 激活接口f0/0 R1(config-if)#int f1/0
R1(config-if)#ip address 14.1.1.1 255.255.255.0 R1(config-if)#no shutdown R1(config-if)#int loopback0
R1(config-if)#ip address 1.1.1.1 255.255.255.255 配置loopback 地址 R1(config-if)#end 退出全局配置模式 R1#show ip int b 显示接口IP 配置简报 R1#write 保存配置
使用show ip int b命令后检查得到的显示信息是否如下
R1#show ip int b
③ 切换到GNS 主界面,使用保存工程按钮
保存工程。
2)设置R2接口
按照1)的步骤设置R2:
R2#config t 进入全局配置模式
R2(config)#int f0/0 进入接口f0/0配置模式 R2(config-if)#ip address 12.1.1.2 255.255.255.0 配置接口f0/0的IP 地址 R2(config-if)#no shutdown 激活接口f0/0 R2(config-if)#int f1/0
R2(config-if)#ip address 23.1.1.2 255.255.255.0 R2(config-if)#no shutdown R2(config-if)#int loopback0
R2(config-if)#ip address 2.2.2.2 255.255.255.255 配置loopback 地址 R2(config-if)#end 退出全局配置模式 R2#show ip int b 显示接口IP 配置简报 R2#write 保存配置
3)设置R3接口
按照1)的步骤设置R3:
R3#config t 进入全局配置模式
R3(config)#int f0/0 进入接口f0/0配置模式 R3(config-if)#ip address 35.1.1.3 255.255.255.0 配置接口f0/0的IP 地址 R3(config-if)#no shutdown 激活接口f0/0 R3(config-if)#int f1/0
R3(config-if)#ip address 23.1.1.3 255.255.255.0 R3(config-if)#no shutdown R3(config-if)#int loopback0
R3(config-if)#ip address 3.3.3.3 255.255.255.255 配置loopback 地址 R3(config-if)#end 退出全局配置模式 R3#show ip int b 显示接口IP 配置简报 R3#write
4)设置R4接口
按照1)的步骤设置R4:
R4#config t 进入全局配置模式
R4(config)#int f0/0 进入接口f0/0配置模式 R4(config-if)#ip address46.1.1.4 255.255.255.0 配置接口f0/0的IP 地址 R4(config-if)#no shutdown 激活接口f0/0 R4(config-if)#int f1/0
R4(config-if)#ip address 14.1.1.4 255.255.255.0 R4(config-if)#no shutdown R4(config-if)#end 退出全局配置模式 R4#show ip int b 显示接口IP 配置简报 R4#write
5)设置R5接口
按照1)的步骤设置R5:
R5#config t 进入全局配置模式
R5(config)#int f0/0 进入接口f0/0配置模式 R5(config-if)#ip address57.1.1.5 255.255.255.0 配置接口f0/0的IP 地址 R5(config-if)#no shutdown 激活接口f0/0 R5(config-if)#int f1/0
R5(config-if)#ip address35.1.1.5 255.255.255.0 R5(config-if)#no shutdown R5(config-if)#end 退出全局配置模式 R5#show ip int b 显示接口IP 配置简报 R5#write
6)设置R6接口
按照1)的步骤设置R6:
R6#config t 进入全局配置模式
R6(config)#int f0/0 进入接口f0/0配置模式 R6(config-if)#ip address 46.1.1.6 255.255.255.0 配置接口f0/0的IP 地址 R6(config-if)#no shutdown 激活接口f0/0 R6(config-if)#int loopback0
R6(config-if)#ip address6.6.6.6 255.255.255.255 配置loopback 地址 R6(config-if)#end 退出全局配置模式 R6#show ip int b 显示接口IP 配置简报 R6#write
7)设置R7接口
按照1)的步骤设置R7:
R7#config t 进入全局配置模式
R7(config)#int f0/0 进入接口f0/0配置模式 R7(config-if)#ip address 57.1.1.7 255.255.255.0 配置接口f0/0的IP 地址 R7(config-if)#no shutdown 激活接口f0/0 R7(config-if)#int loopback0
R7(config-if)#ip address7.7.7.7 255.255.255.255 配置loopback 地址 R7(config-if)#end 退出全局配置模式 R7#show ip int b 显示接口IP 配置简报 R7#write
4. 骨干网内路由协议配置
在MPLS 域内配置路由协议为OSPF 协议,确保MPLS 域内的R1、R2和R3在域内的所有直连接口和Loopback0口互通。具体配置命令如下:
R1(config)#router ospf 123 建立OSPF 路由进程,进程号为123 R1(config-router)#router-id 1.1.1.1 R1(config-router)#network 1.1.1.1 0.0.0.0 a 0
R1(config-router)#network 12.1.1.0 0.0.0.255 a 0
R2(config)#router ospf 123
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 2.2.2.2 0.0.0.0 a 0 R2(config-router)#network 12.1.1.0 0.0.0.255 a 0 R2(config-router)#network 23.1.1.0 0.0.0.255 a 0 R2(config-router)#exit R2(config)#int f0/0
R2(config-if)#ip ospf priority 255 R2(config-if)#int f1/0
R2(config-if)#ip ospf priority 255
R3(config)#router ospf 123
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 3.3.3.3 0.0.0.0 a 0 R3(config-router)#network 23.1.1.0 0.0.0.255 a 0
检查无误后保存路由器配置和工程。
4. 骨干网内MPLS 协议配置 1)全局开启CEF
R1(config)#ip cef
R2(config)#ip cef
R3(config)#ip cef
2)配置LDP
配置R1在骨干网内的接口开通LDP 。 R1(config-if)#int f0/0
R1(config-if)#mpls label protocol ldp
R1(config-if)#mpls ip
配置R2在骨干网内的接口开通LDP 。 R2(config)#int f0/0
R2(config-if)#mpls label protocol ldp R2(config-if)#mpls ip R2(config)#int f1/0
R2(config-if)#mpls label protocol ldp
R2(config-if)#mpls ip
配置R3在骨干网内的接口开通LDP 。 R3(config)#int f1/0
R3(config-if)#mpls label protocol ldp
R3(config-if)#mpls ip
3)检查配置
配置完毕后测试R1~R3的loopback0口是否实现标签交换,命令如下:
R1#traceroute 3.3.3.3 source 1.1.1.1
从结果可以看出,R2到R3以及R3到R2的loopback0已经实现标签交换。 我们还可以使用以下命令查看LDP 邻居、查看LFIB 表和FIB 表。 R1#sh mpls ldp neighbor 查看LDP 邻居 R1#show mpls forwarding-table 查看LFIB 表 R1#show mpls ip binding 查看FIB 表
4)保存
检查无误后保存路由器配置和工程。
5. 配置普通BGP
在R1和R3之间配置普通BGP ,因为在配置MP-BGP 之前,需要保证正常的BGP 邻居是正常连通的。
1)在R1上配置普通BGP :
R1(config)#router bgp 100
R1(config-router)#bgp router-id 1.1.1.1 R1(config-router)#no auto-summary R1(config-router)#no synchronization
R1(config-router)#neighbor 3.3.3.3 remote-as 100
R1(config-router)#neighbor 3.3.3.3 update-source loopback0
2)在R3上配置普通BGP :
R3(config)#router bgp 100
R3(config-router)#bgp router-id 3.3.3.3 R3(config-router)#no auto-summary R3(config-router)#no synchronization
R3(config-router)#neighbor 1.1.1.1 remote-as 100
R3(config-router)#neighbor 1.1.1.1 update-source loopback0
3)查看普通BGP 邻居关系:
R1(config-router)#end
R1#show ip bgp summary
R3(config-router)#end
R3#show ip bgp summary
4)保存:
检查无误后保存路由器配置和工程。
6. 在PE 上创建VRF
在PE 上为用户创建相应的VRF ,并且指定RD 值,需要通信的两个用户网络之间,VRF 和RD 值保持一致。
1)在R1上创建VRF ,并指定RD 值:
R1(config)#ip vrf vpn1
R1(config-vrf)#rd 100:1
2)在R3上创建VRF ,并指定RD 值:
R3(config)#ip vrf vpn1
R3(config-vrf)#rd 100:1
3)在PE 上将连CE 的接口划入VRF :
在PE 上将相应的CE 接口划入相应的VRF ,以后从该接口进入的用户数据包,则属于相应的VRF ,该用户的数据只能根据该VRF 路由表作出转发决策。 ① 在R1上将连CE R4的接口f1/0划入VRF : R1(config-vrf)#int f1/0
R1(config-if)#ip vrf forwarding vpn1 将接口划入名称为vpn1的VRF
R1(config-if)#ip add 14.1.1.1 255.255.255.0
② 在R3上将连CE R5的接口f0/0划入VRF : R3(config-vrf)#int f0/0
R3(config-if)#ip vrf forwarding vpn1
R3(config-if)#ip add 35.1.1.3 255.255.255.0
当一个正常的接口被划入VRF 之后,接口上的地址会消失,所以需要重新配置一次该接口的IP 地址。
4)在PE 上查看VRF 的路由表情况
从用户发到PE 的数据包,PE 只能根据该用户的VRF 路由表作出转发决策,也就是说,如果两个要通信的用户网络,如果各自的内网路由没有出现在PE 的VRF 路由表里,那么他们将不能通信。
① 在PE R1上查看VRF vpn1的路由表:
R1#show ip route vrf vpn1
② 查看PE R1的全局路由表,已经不会再有连CE 接口f1/0的路由了:
R1#show ip route
4)保存
检查无误后保存路由器配置和工程。
7. 创建MP-BGP
通过上面在PE 上查看VRF 路由表发现,VRF 路由表中并没有双方用户的路由,所以必须创建MP-BGP ,来为双方用户网络传递路由信息。
1)在PE R1及R3上创建MP-BGP :
R1(config)#router bgp 100
R1(config-router)#no auto-summary R1(config-router)#address-family vpnv4
R1(config-router-af)#neighbor 3.3.3.3 activate
R1(config-router-af)#neighbor 3.3.3.3 send-community both
R3(config)#router bgp 100
R3(config-router)#no auto-summary
R3(config-router)#address-family vpnv4
R3(config-router-af)#neighbor 1.1.1.1 activate
R3(config-router-af)#neighbor 1.1.1.1 send-community both
因为要传递vpnv4的路由,所以创建的address-family 为vpnv4,并且将正常的BGP 邻居在vpnv4里面激活,而且还需要将这些BGP 的扩展属性手工强行发给对端,否则对方收到的路由信息不会携带扩展属性,也就无法正常区分用户的路由信息。
配置好后,还需查看MP-BGP 邻居:
R1#show ip bgp all summary
2)为MP-BGP 创建VRF
MP-BGP 在收到用户的路由信息后,必须将其放入相应的VRF 路由表,但是这个VRF 表是要手工创建的,并且和该用户相关联的VRF 名字保持一致:
R1(config)#router bgp 100
R1(config-router)#address-family ipv4 vrf vpn1
R1(config-router-af)#no synchronization
R3(config)#router bgp 100
R3(config-router)#address-family ipv4 vrf vpn1
R3(config-router-af)#no synchronization
3)配置RT 控制VRF 路由信息
MP-BGP 的VRF 路由表能让什么样的路由进入,是靠RT 来控制的,要想让用户的路由被MP-BGP 传递,就必须为VRF 配置相应的RT ,只有RT 允许的RD 路由,才能进入和出去VRF 表。
R1(config)#ip vrf vpn1
R1(config-vrf)#route-target both 100:1
R3(config)#ip vrf vpn1
R3(config-vrf)#route-target both 100:1
4)配置PE-CE 的路由协议,并将MP-BGP 的路由重分布进该路由协议
虽然MP-BGP 的VRF 已经允许相应的用户路由进入,但是在PE 上,此时并不能获知用户的路由信息,所以MP-BGP 的VRF 路由表中,依然为空,要想让MP-BGP 的VRF 路由表能够导入相应的用户路由,那就必须和用户CE 之前启用路由协议,以获得对方的路由信息,从而导入MP-BGP 的VRF 表。
①在PE R1一端启用RIP 路由协议: a. 在PE R1上配置RIP :
R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#no auto-summary
R1(config-router)#address-family ipv4 vrf vpn1 R1(config-router-af)#no auto-summary R1(config-router-af)#network 14.0.0.0
R1(config-router-af)#redistribute bgp 100 metric 1
发布路由都是在address-family 中进行的,并且请关闭自动汇总功能,且将MP-BGP 的路由重分布进RIP ,否则对方CE 将无法得知远程用户的路由信息。 b. 在CE R4上配置RIP :
R4(config)#router rip
R4(config-router)#version 2
R4(config-router)#no auto-summary R4(config-router)#network 14.0.0.0 R4(config-router)#network 46.0.0.0
② 在PE R3一端启用OSPF 路由协议: a. 在PE R3上配置OSPF :
R3(config)#router ospf 100 vrf vpn1 R3(config-router)#router-id 35.1.1.3
R3(config-router)#network 35.1.1.3 0.0.0.0 a 0
R3(config-router)#redistribute bgp 100 subnets
同样也要将MP-BGP 的路由重分布进OSPF ,以便传递给CE 端。 b. 在CE R5上配置OSPF : R5(config)#router ospf 100
R5(config-router)#router-id 5.5.5.5
R5(config-router)#network 35.1.1.5 0.0.0.0 a 0 R5(config-router)#network 57.1.1.5 0.0.0.0 a 0
R5(config-router)#exit
5)将PE-CE 间的路由重分布进MP-BGP
PE-CE 之间在运行IGP 时,无法自动导入MP-BGP ,所以手工重分布。 ① 在R1上将RIP 路由导入MP-BGP : R1(config)#router bgp 100
R1(config-router)#address-family ipv4 vrf vpn1
R1(config-router-af)#redistribute rip
② 在R3上将OSPP 路由导入MP-BGP : R3(config)#router bgp 100
R3(config-router)#address-family ipv4 vrf vpn1
R3(config-router-af)#redistribute ospf 100
6)保存
检查无误后保存路由器配置和工程。
8. 用户端路由器的配置
用户端(通常称为C 路由器)R6及R7加入各自CE 的路由协议进程: R6(config)#router rip
R6(config-router)#version 2
R6(config-router)#no auto-summary R6(config-router)#network 46.0.0.0 R6(config-router)#network 6.6.6.6
R7(config)#router ospf 100
R7(config-router)#router-id 7.7.7.7
R7(config-router)#network 7.7.7.7 0.0.0.0 a 0 R7(config-router)#network 57.1.1.0 0.0.0.255 a 0
保存路由器配置和工程。至此,设置已完全结束。
9. 验证:查看路由 1)查看MP-BGP 路由
R3#show ip bgp vpnv4 all
R3#show ip bgp vpnv4 vrf vpn1 6.6.6.6/32
可以看出,MP-BGP 已经拥有双方用户网络的内部路由信息,并且通过查看MP-BGP 路由详细信息可知,这些路由带有BGP 扩展属性RT 即Extended Community: RT:100:1。
2)查看PE 上VRF 路由
R1#show ip route vrf vpn1
R3#show ip route vrf vpn1
可以看出,PE R1及PE R3上的VRF 已经拥有双方用户的网络信息。
3)查看CE 路由
因为PE 上已经拥有双方用户的路由信息,并且PE 和CE 之间也运行路由协议,这些路由也会出现在CE 的路由表中,从而双方用户可以实现通信:
R4#show ip route
同理查看R6,可以看到,两个CE 上已经拥有所有用户的内部路由。
4)查看客户端路由
R6#show ip route
同理可以查看R7上路由,可以看出,经过设置,两个客户端终于有了去往对方的路由
信息。
10. 测试用户间通信并跟踪路由
R6#ping 7.7.7.7 source 6.6.6.6
R6#traceroute 7.7.7.7 source 6.6.6.6
由上可以看出,R6和 R7之间已经成功穿越MPLS 网络将数据包发送给对方远程用户
网络,MPLS_VPN配置成功,工作正常。
五、实验思考题
1.简述三层MPLS VPN的基本原理。
答:MPLS VPN是一种基于MPLS 技术的IP-VPN, 根据PE 设备是否参与VPN 路由处理又细分为二层VPN 和三层VPN, 一般而言,MPLS/BGP VPN指的是三层VPN 。
2.简述三层MPLS VPN中PE 路由器的配置步骤。 答:配置VRF, 接口启用VRF, 配置MP-IBGP
3.MPLS VPN 中P 路由器转发的数据包有两层标签, 说明这两层标签分别是由什么协议分配的。
答:外层标签一般是由LDP 来分配,内层标签由MP-BGP 来分配
4.简述MPLS VPN中RT 和RD 的作用。
答: RD 主要用于生成VPN4 ROUTE。VPNV4 ROUTE由64bit 的RD 和32bit 的IPV4
前缀组成。主要用于MP-BGP 识别VPN 路由;
RT 主要用于MP-BGP 导入VRF 路由。MP-BGP 从VRF 处接收到IPV4路由,接着检查该VRF 的RT, 并吧export RT作为extend —community 附加到NLRI 上,并发送到相应的PE 上。对端PE 接收到该NLRI 后,检查extend-community 所对应VRF 的import RT,若吻合则导入到该VRF 内。
课《通信网技术基础》
程 实 验 报
班级: 专业: 通信工程
学号: 姓名: 任课教师:
江凌云
2013/2014 学年 第 二 学期
告
实验二 MPLS VPN的实现
一、实验目的
该实验通过MPLS VPN的数据配置, 使学生掌握路由器相关接口的IP 地址设置、路由协议的配置以及MPLS VPN的完整的创建过程, 从而加深对IP 网络的IP 编址、路由协议以及MPLS 的相关理论的理解。
二、实验内容
利用网络模拟器GNS3模拟Cisco 的实验环境, 搭建IP 网络, 完成CE 、PE 和P 路由器上的数据配置, 使属于同一VPN 的两个路由器能够互通。
三、实验设备
1.硬件:PC机 2.软件:
①网络模拟器 GNS3-0.8.6-all-in-one ②终端仿真程序 SecureCRT6.7
③Cisco IOS文件 C3640-JK9O3S-M-12.4(7a).BIN
四、 实验步骤及要求
1)创建工程
打开GNS3软件,新建项目,命名为:MPLS_VPN_B11010918,如下图所示。
2)选择路由器
从左竖栏路由器图标中拖出7个c3600路由器,分别为R1-R7,其中R1、R3为PE ,
R2为P 路由器,R1-R3组成MPLS 骨干网,R4和R5为CE ,R6和R7为普通路由器,R4和R6组成VPN1 Site1,R5和R7组成VPN1 Site2,如下图所示。
可以使用绘制椭圆按钮
来绘制椭圆形标记以标识骨干网和VPN 的边界, 如下图所示。
3)配置路由器插槽
选择R1,右键选择“配置”项,设置插槽如下图所示:
同理设置R2~R7,其中R6和R7只需设置插槽口slot0即可,不需设置slot1。
4)连接路由器
使用左栏连接线按钮
连接各路由器,如下图所示:
5)使用保存工程按钮保存工程。
2. 接口配置
路由器各接口的IP 地址配置如下图:
1)设置R1接口
① 以R1为例,选中R1路由器,右键选择“开始”项,等待R1接口变成绿色,然后选中R1,右键选择console 项,打开SecureCRT 窗口。
② 当窗口中出现“R1#”时(表示进入路由器配置的特权模式),可以进行接口IP 地址设置且激活接口。
在进行接口IP 地址设置前,为防止CPU 占用率过高,我们需要计算Idle PC的值,选中R1路由器,右键选择“Idle PC”,此时路由器会计算Idle PC的值,我们选择带“*”的值点击保存就可以了。每种型号的路由器只需要第一次使用时设置一次Idle PC值,当再次使用这个型号的路由器时,GNS3就会自动识别并调用相应的Idle PC值。 接着用以下命令设置接口IP 地址,设置完后注意检查接口设置,检查无误后保存设置。具体操作:
R1#config t 进入全局配置模式
R1(config)#int f0/0 进入接口f0/0配置模式 R1(config-if)#ip address 12.1.1.1 255.255.255.0 配置接口f0/0的IP 地址 R1(config-if)#no shutdown 激活接口f0/0 R1(config-if)#int f1/0
R1(config-if)#ip address 14.1.1.1 255.255.255.0 R1(config-if)#no shutdown R1(config-if)#int loopback0
R1(config-if)#ip address 1.1.1.1 255.255.255.255 配置loopback 地址 R1(config-if)#end 退出全局配置模式 R1#show ip int b 显示接口IP 配置简报 R1#write 保存配置
使用show ip int b命令后检查得到的显示信息是否如下
R1#show ip int b
③ 切换到GNS 主界面,使用保存工程按钮
保存工程。
2)设置R2接口
按照1)的步骤设置R2:
R2#config t 进入全局配置模式
R2(config)#int f0/0 进入接口f0/0配置模式 R2(config-if)#ip address 12.1.1.2 255.255.255.0 配置接口f0/0的IP 地址 R2(config-if)#no shutdown 激活接口f0/0 R2(config-if)#int f1/0
R2(config-if)#ip address 23.1.1.2 255.255.255.0 R2(config-if)#no shutdown R2(config-if)#int loopback0
R2(config-if)#ip address 2.2.2.2 255.255.255.255 配置loopback 地址 R2(config-if)#end 退出全局配置模式 R2#show ip int b 显示接口IP 配置简报 R2#write 保存配置
3)设置R3接口
按照1)的步骤设置R3:
R3#config t 进入全局配置模式
R3(config)#int f0/0 进入接口f0/0配置模式 R3(config-if)#ip address 35.1.1.3 255.255.255.0 配置接口f0/0的IP 地址 R3(config-if)#no shutdown 激活接口f0/0 R3(config-if)#int f1/0
R3(config-if)#ip address 23.1.1.3 255.255.255.0 R3(config-if)#no shutdown R3(config-if)#int loopback0
R3(config-if)#ip address 3.3.3.3 255.255.255.255 配置loopback 地址 R3(config-if)#end 退出全局配置模式 R3#show ip int b 显示接口IP 配置简报 R3#write
4)设置R4接口
按照1)的步骤设置R4:
R4#config t 进入全局配置模式
R4(config)#int f0/0 进入接口f0/0配置模式 R4(config-if)#ip address46.1.1.4 255.255.255.0 配置接口f0/0的IP 地址 R4(config-if)#no shutdown 激活接口f0/0 R4(config-if)#int f1/0
R4(config-if)#ip address 14.1.1.4 255.255.255.0 R4(config-if)#no shutdown R4(config-if)#end 退出全局配置模式 R4#show ip int b 显示接口IP 配置简报 R4#write
5)设置R5接口
按照1)的步骤设置R5:
R5#config t 进入全局配置模式
R5(config)#int f0/0 进入接口f0/0配置模式 R5(config-if)#ip address57.1.1.5 255.255.255.0 配置接口f0/0的IP 地址 R5(config-if)#no shutdown 激活接口f0/0 R5(config-if)#int f1/0
R5(config-if)#ip address35.1.1.5 255.255.255.0 R5(config-if)#no shutdown R5(config-if)#end 退出全局配置模式 R5#show ip int b 显示接口IP 配置简报 R5#write
6)设置R6接口
按照1)的步骤设置R6:
R6#config t 进入全局配置模式
R6(config)#int f0/0 进入接口f0/0配置模式 R6(config-if)#ip address 46.1.1.6 255.255.255.0 配置接口f0/0的IP 地址 R6(config-if)#no shutdown 激活接口f0/0 R6(config-if)#int loopback0
R6(config-if)#ip address6.6.6.6 255.255.255.255 配置loopback 地址 R6(config-if)#end 退出全局配置模式 R6#show ip int b 显示接口IP 配置简报 R6#write
7)设置R7接口
按照1)的步骤设置R7:
R7#config t 进入全局配置模式
R7(config)#int f0/0 进入接口f0/0配置模式 R7(config-if)#ip address 57.1.1.7 255.255.255.0 配置接口f0/0的IP 地址 R7(config-if)#no shutdown 激活接口f0/0 R7(config-if)#int loopback0
R7(config-if)#ip address7.7.7.7 255.255.255.255 配置loopback 地址 R7(config-if)#end 退出全局配置模式 R7#show ip int b 显示接口IP 配置简报 R7#write
4. 骨干网内路由协议配置
在MPLS 域内配置路由协议为OSPF 协议,确保MPLS 域内的R1、R2和R3在域内的所有直连接口和Loopback0口互通。具体配置命令如下:
R1(config)#router ospf 123 建立OSPF 路由进程,进程号为123 R1(config-router)#router-id 1.1.1.1 R1(config-router)#network 1.1.1.1 0.0.0.0 a 0
R1(config-router)#network 12.1.1.0 0.0.0.255 a 0
R2(config)#router ospf 123
R2(config-router)#router-id 2.2.2.2
R2(config-router)#network 2.2.2.2 0.0.0.0 a 0 R2(config-router)#network 12.1.1.0 0.0.0.255 a 0 R2(config-router)#network 23.1.1.0 0.0.0.255 a 0 R2(config-router)#exit R2(config)#int f0/0
R2(config-if)#ip ospf priority 255 R2(config-if)#int f1/0
R2(config-if)#ip ospf priority 255
R3(config)#router ospf 123
R3(config-router)#router-id 3.3.3.3
R3(config-router)#network 3.3.3.3 0.0.0.0 a 0 R3(config-router)#network 23.1.1.0 0.0.0.255 a 0
检查无误后保存路由器配置和工程。
4. 骨干网内MPLS 协议配置 1)全局开启CEF
R1(config)#ip cef
R2(config)#ip cef
R3(config)#ip cef
2)配置LDP
配置R1在骨干网内的接口开通LDP 。 R1(config-if)#int f0/0
R1(config-if)#mpls label protocol ldp
R1(config-if)#mpls ip
配置R2在骨干网内的接口开通LDP 。 R2(config)#int f0/0
R2(config-if)#mpls label protocol ldp R2(config-if)#mpls ip R2(config)#int f1/0
R2(config-if)#mpls label protocol ldp
R2(config-if)#mpls ip
配置R3在骨干网内的接口开通LDP 。 R3(config)#int f1/0
R3(config-if)#mpls label protocol ldp
R3(config-if)#mpls ip
3)检查配置
配置完毕后测试R1~R3的loopback0口是否实现标签交换,命令如下:
R1#traceroute 3.3.3.3 source 1.1.1.1
从结果可以看出,R2到R3以及R3到R2的loopback0已经实现标签交换。 我们还可以使用以下命令查看LDP 邻居、查看LFIB 表和FIB 表。 R1#sh mpls ldp neighbor 查看LDP 邻居 R1#show mpls forwarding-table 查看LFIB 表 R1#show mpls ip binding 查看FIB 表
4)保存
检查无误后保存路由器配置和工程。
5. 配置普通BGP
在R1和R3之间配置普通BGP ,因为在配置MP-BGP 之前,需要保证正常的BGP 邻居是正常连通的。
1)在R1上配置普通BGP :
R1(config)#router bgp 100
R1(config-router)#bgp router-id 1.1.1.1 R1(config-router)#no auto-summary R1(config-router)#no synchronization
R1(config-router)#neighbor 3.3.3.3 remote-as 100
R1(config-router)#neighbor 3.3.3.3 update-source loopback0
2)在R3上配置普通BGP :
R3(config)#router bgp 100
R3(config-router)#bgp router-id 3.3.3.3 R3(config-router)#no auto-summary R3(config-router)#no synchronization
R3(config-router)#neighbor 1.1.1.1 remote-as 100
R3(config-router)#neighbor 1.1.1.1 update-source loopback0
3)查看普通BGP 邻居关系:
R1(config-router)#end
R1#show ip bgp summary
R3(config-router)#end
R3#show ip bgp summary
4)保存:
检查无误后保存路由器配置和工程。
6. 在PE 上创建VRF
在PE 上为用户创建相应的VRF ,并且指定RD 值,需要通信的两个用户网络之间,VRF 和RD 值保持一致。
1)在R1上创建VRF ,并指定RD 值:
R1(config)#ip vrf vpn1
R1(config-vrf)#rd 100:1
2)在R3上创建VRF ,并指定RD 值:
R3(config)#ip vrf vpn1
R3(config-vrf)#rd 100:1
3)在PE 上将连CE 的接口划入VRF :
在PE 上将相应的CE 接口划入相应的VRF ,以后从该接口进入的用户数据包,则属于相应的VRF ,该用户的数据只能根据该VRF 路由表作出转发决策。 ① 在R1上将连CE R4的接口f1/0划入VRF : R1(config-vrf)#int f1/0
R1(config-if)#ip vrf forwarding vpn1 将接口划入名称为vpn1的VRF
R1(config-if)#ip add 14.1.1.1 255.255.255.0
② 在R3上将连CE R5的接口f0/0划入VRF : R3(config-vrf)#int f0/0
R3(config-if)#ip vrf forwarding vpn1
R3(config-if)#ip add 35.1.1.3 255.255.255.0
当一个正常的接口被划入VRF 之后,接口上的地址会消失,所以需要重新配置一次该接口的IP 地址。
4)在PE 上查看VRF 的路由表情况
从用户发到PE 的数据包,PE 只能根据该用户的VRF 路由表作出转发决策,也就是说,如果两个要通信的用户网络,如果各自的内网路由没有出现在PE 的VRF 路由表里,那么他们将不能通信。
① 在PE R1上查看VRF vpn1的路由表:
R1#show ip route vrf vpn1
② 查看PE R1的全局路由表,已经不会再有连CE 接口f1/0的路由了:
R1#show ip route
4)保存
检查无误后保存路由器配置和工程。
7. 创建MP-BGP
通过上面在PE 上查看VRF 路由表发现,VRF 路由表中并没有双方用户的路由,所以必须创建MP-BGP ,来为双方用户网络传递路由信息。
1)在PE R1及R3上创建MP-BGP :
R1(config)#router bgp 100
R1(config-router)#no auto-summary R1(config-router)#address-family vpnv4
R1(config-router-af)#neighbor 3.3.3.3 activate
R1(config-router-af)#neighbor 3.3.3.3 send-community both
R3(config)#router bgp 100
R3(config-router)#no auto-summary
R3(config-router)#address-family vpnv4
R3(config-router-af)#neighbor 1.1.1.1 activate
R3(config-router-af)#neighbor 1.1.1.1 send-community both
因为要传递vpnv4的路由,所以创建的address-family 为vpnv4,并且将正常的BGP 邻居在vpnv4里面激活,而且还需要将这些BGP 的扩展属性手工强行发给对端,否则对方收到的路由信息不会携带扩展属性,也就无法正常区分用户的路由信息。
配置好后,还需查看MP-BGP 邻居:
R1#show ip bgp all summary
2)为MP-BGP 创建VRF
MP-BGP 在收到用户的路由信息后,必须将其放入相应的VRF 路由表,但是这个VRF 表是要手工创建的,并且和该用户相关联的VRF 名字保持一致:
R1(config)#router bgp 100
R1(config-router)#address-family ipv4 vrf vpn1
R1(config-router-af)#no synchronization
R3(config)#router bgp 100
R3(config-router)#address-family ipv4 vrf vpn1
R3(config-router-af)#no synchronization
3)配置RT 控制VRF 路由信息
MP-BGP 的VRF 路由表能让什么样的路由进入,是靠RT 来控制的,要想让用户的路由被MP-BGP 传递,就必须为VRF 配置相应的RT ,只有RT 允许的RD 路由,才能进入和出去VRF 表。
R1(config)#ip vrf vpn1
R1(config-vrf)#route-target both 100:1
R3(config)#ip vrf vpn1
R3(config-vrf)#route-target both 100:1
4)配置PE-CE 的路由协议,并将MP-BGP 的路由重分布进该路由协议
虽然MP-BGP 的VRF 已经允许相应的用户路由进入,但是在PE 上,此时并不能获知用户的路由信息,所以MP-BGP 的VRF 路由表中,依然为空,要想让MP-BGP 的VRF 路由表能够导入相应的用户路由,那就必须和用户CE 之前启用路由协议,以获得对方的路由信息,从而导入MP-BGP 的VRF 表。
①在PE R1一端启用RIP 路由协议: a. 在PE R1上配置RIP :
R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#no auto-summary
R1(config-router)#address-family ipv4 vrf vpn1 R1(config-router-af)#no auto-summary R1(config-router-af)#network 14.0.0.0
R1(config-router-af)#redistribute bgp 100 metric 1
发布路由都是在address-family 中进行的,并且请关闭自动汇总功能,且将MP-BGP 的路由重分布进RIP ,否则对方CE 将无法得知远程用户的路由信息。 b. 在CE R4上配置RIP :
R4(config)#router rip
R4(config-router)#version 2
R4(config-router)#no auto-summary R4(config-router)#network 14.0.0.0 R4(config-router)#network 46.0.0.0
② 在PE R3一端启用OSPF 路由协议: a. 在PE R3上配置OSPF :
R3(config)#router ospf 100 vrf vpn1 R3(config-router)#router-id 35.1.1.3
R3(config-router)#network 35.1.1.3 0.0.0.0 a 0
R3(config-router)#redistribute bgp 100 subnets
同样也要将MP-BGP 的路由重分布进OSPF ,以便传递给CE 端。 b. 在CE R5上配置OSPF : R5(config)#router ospf 100
R5(config-router)#router-id 5.5.5.5
R5(config-router)#network 35.1.1.5 0.0.0.0 a 0 R5(config-router)#network 57.1.1.5 0.0.0.0 a 0
R5(config-router)#exit
5)将PE-CE 间的路由重分布进MP-BGP
PE-CE 之间在运行IGP 时,无法自动导入MP-BGP ,所以手工重分布。 ① 在R1上将RIP 路由导入MP-BGP : R1(config)#router bgp 100
R1(config-router)#address-family ipv4 vrf vpn1
R1(config-router-af)#redistribute rip
② 在R3上将OSPP 路由导入MP-BGP : R3(config)#router bgp 100
R3(config-router)#address-family ipv4 vrf vpn1
R3(config-router-af)#redistribute ospf 100
6)保存
检查无误后保存路由器配置和工程。
8. 用户端路由器的配置
用户端(通常称为C 路由器)R6及R7加入各自CE 的路由协议进程: R6(config)#router rip
R6(config-router)#version 2
R6(config-router)#no auto-summary R6(config-router)#network 46.0.0.0 R6(config-router)#network 6.6.6.6
R7(config)#router ospf 100
R7(config-router)#router-id 7.7.7.7
R7(config-router)#network 7.7.7.7 0.0.0.0 a 0 R7(config-router)#network 57.1.1.0 0.0.0.255 a 0
保存路由器配置和工程。至此,设置已完全结束。
9. 验证:查看路由 1)查看MP-BGP 路由
R3#show ip bgp vpnv4 all
R3#show ip bgp vpnv4 vrf vpn1 6.6.6.6/32
可以看出,MP-BGP 已经拥有双方用户网络的内部路由信息,并且通过查看MP-BGP 路由详细信息可知,这些路由带有BGP 扩展属性RT 即Extended Community: RT:100:1。
2)查看PE 上VRF 路由
R1#show ip route vrf vpn1
R3#show ip route vrf vpn1
可以看出,PE R1及PE R3上的VRF 已经拥有双方用户的网络信息。
3)查看CE 路由
因为PE 上已经拥有双方用户的路由信息,并且PE 和CE 之间也运行路由协议,这些路由也会出现在CE 的路由表中,从而双方用户可以实现通信:
R4#show ip route
同理查看R6,可以看到,两个CE 上已经拥有所有用户的内部路由。
4)查看客户端路由
R6#show ip route
同理可以查看R7上路由,可以看出,经过设置,两个客户端终于有了去往对方的路由
信息。
10. 测试用户间通信并跟踪路由
R6#ping 7.7.7.7 source 6.6.6.6
R6#traceroute 7.7.7.7 source 6.6.6.6
由上可以看出,R6和 R7之间已经成功穿越MPLS 网络将数据包发送给对方远程用户
网络,MPLS_VPN配置成功,工作正常。
五、实验思考题
1.简述三层MPLS VPN的基本原理。
答:MPLS VPN是一种基于MPLS 技术的IP-VPN, 根据PE 设备是否参与VPN 路由处理又细分为二层VPN 和三层VPN, 一般而言,MPLS/BGP VPN指的是三层VPN 。
2.简述三层MPLS VPN中PE 路由器的配置步骤。 答:配置VRF, 接口启用VRF, 配置MP-IBGP
3.MPLS VPN 中P 路由器转发的数据包有两层标签, 说明这两层标签分别是由什么协议分配的。
答:外层标签一般是由LDP 来分配,内层标签由MP-BGP 来分配
4.简述MPLS VPN中RT 和RD 的作用。
答: RD 主要用于生成VPN4 ROUTE。VPNV4 ROUTE由64bit 的RD 和32bit 的IPV4
前缀组成。主要用于MP-BGP 识别VPN 路由;
RT 主要用于MP-BGP 导入VRF 路由。MP-BGP 从VRF 处接收到IPV4路由,接着检查该VRF 的RT, 并吧export RT作为extend —community 附加到NLRI 上,并发送到相应的PE 上。对端PE 接收到该NLRI 后,检查extend-community 所对应VRF 的import RT,若吻合则导入到该VRF 内。