MPLS 初级实验配置
一、实验拓扑
二、实验要求
1.R2、R3、R4为公网网段设备
2.R1、R5为私有网段设备,各自网段为 192.168.2.0/24 、192.168.3.0/24,各有环回 192.168.1.1/24、192.168.4.1/24
3.通过MPLS 虚拟专用网络,实现R1上的私有网段能与R5上的私有网段直接通信
三、实验步骤
1.ISP部分
1)IGP路由
①配置底层IP
[r2]int lo0
[r2-LoopBack0]ip add 2.2.2.2 24
[r2-LoopBack0]int g0/0/1
[r2-GigabitEthernet0/0/1]ip add 23.1.1.1 24
[r3]int lo0
[r3-LoopBack0]ip address 3.3.3.3 24
[r3-LoopBack0]int g0/0/0
[r3-GigabitEthernet0/0/0]ip add 23.1.1.2 24
[r3-GigabitEthernet0/0/0]int g0/0/1
[r3-GigabitEthernet0/0/1]ip address 34.1.1.1 24
[r4]int lo0
[r4-LoopBack0]ip add 4.4.4.4 24
[r4-LoopBack0]int g0/0/0
[r4-GigabitEthernet0/0/0]ip add 34.1.1.2 24
②配置OSPF,实现公网所有IP可达
[r2]ospf 1 router-id 2.2.2.2
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[r2-ospf-1-area-0.0.0.0]network 23.1.1.1 0.0.0.0
[r3]ospf 1 router-id 3.3.3.3
[r3-ospf-1]area 0
[r3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
[r3-ospf-1-area-0.0.0.0]network 23.1.1.2 0.0.0.0
[r3-ospf-1-area-0.0.0.0]network 34.1.1.1 0.0.0.0
[r4]ospf 1 router-id 4.4.4.4
[r4-ospf-1]area 0
[r4-ospf-1-area-0.0.0.0]network 4.4.4.4 0.0.0.0
[r4-ospf-1-area-0.0.0.0]network 34.1.1.2 0.0.0.0
查看ospf邻居表,建邻成功
2)MPLS域配置
[r2]mpls lsr-id 2.2.2.2
[r2]mpls
Info: Mpls starting, please wait... OK!
[r2-mpls]mpls ldp
[r2-mpls-ldp]int g0/0/1
[r2-GigabitEthernet0/0/1]mpls
[r2-GigabitEthernet0/0/1]mpls ld
[r2-GigabitEthernet0/0/1]mpls ldp
[r3]mpls lsr-id 3.3.3.3
[r3]mpls
Info: Mpls starting, please wait... OK!
[r3-mpls]mpls ldp
[r3-mpls-ldp]int g0/0/0
[r3-GigabitEthernet0/0/0]mpls
[r3-GigabitEthernet0/0/0]mpls ldp
[r3-GigabitEthernet0/0/0]int g0/0/1
[r3-GigabitEthernet0/0/1]mpls
[r3-GigabitEthernet0/0/1]mpls ldp
[r4]mpls lsr-id 4.4.4.4
[r4]mpls
Info: Mpls starting, please wait... OK!
[r4-mpls]mpls ldp
[r4-mpls-ldp]int g0/0/0
[r4-GigabitEthernet0/0/0]mpls
[r4-GigabitEthernet0/0/0]mpls ldp
查看mpls邻居表
3)配置MPLS 虚拟专用网络
[r2]ip vpn-instance a //创建名为a的vrf空间
[r2-vpn-instance-a]ipv4-family //进入IPV4的配置模式下
[r2-vpn-instance-a-af-ipv4]route-distinguisher 1:1 //RD值,两端可以不一样,因为是RD是区分源设备路由的
[r2-vpn-instance-a-af-ipv4]vpn-target 1:1 //RT值 必须对端的PE端一致
[r2-vpn-instance-a-af-ipv4]int g0/0/0 //进入链接CE端的接口
[r2-GigabitEthernet0/0/0]ip binding vpn-instance a //关联到vrf空间
[r2-GigabitEthernet0/0/0]ip address 192.168.2.2 24 //配置私有ip地址
注:在关联到vrf空间前不能配置接口ip,否则该地址的直连路由将进入公有路由表;
[r1]int lo0
[r1-LoopBack0]ip add 192.168.1.1 24
[r1-LoopBack0]int g0/0/1
[r1-GigabitEthernet0/0/1]ip add 192.168.2.1 24
当MPLS 虚拟专用网络配置完成后
在R2上查看普通公有路由表
查看VRF空间私有路由表
让R1去pingR2的接口IP 192.168.2.2,可以ping通
在R2上直接ping 192.168.2.1 是不行的,因为R2上基于正常普通路由表查询,该公有路由表里是没有192.168.2.0/24网段的。
所以,R2上测试是要基于VRF空间a进行路由查询
[r2]ping -vpn-instance a 192.168.2.1
同理,R4也要做相同配置,建立VRF空间b
[r4]ip vpn-instance b
[r4-vpn-instance-b]ipv4-family
[r4-vpn-instance-b-af-ipv4]route-distinguisher 1:1
[r4-vpn-instance-b-af-ipv4]vpn-target 1:1
[r4-vpn-instance-b-af-ipv4]int g0/0/1
[r4-GigabitEthernet0/0/1]ip binding vpn-instance b
[r4-GigabitEthernet0/0/1]ip address 192.168.3.1 24
[r5]int g0/0/0
[r5-GigabitEthernet0/0/0]ip add 192.168.3.2 24
[r5-GigabitEthernet0/0/0]int lo0
[r5-LoopBack0]ip add 192.168.4.1 24
4)PE与PE之间建立MP-BGP邻居关系
R2与R4设备与该mpls域的PE
这个时候配置的是公有的BGP关系,只能传递普通的公有路由
[r2]bgp 2
[r2-bgp]router-id 2.2.2.2
[r2-bgp]peer 4.4.4.4 as-number 2
[r2-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[r2-bgp]peer 4.4.4.4 next-hop-local
同时还需要再在IPV4的家族模式中,与对端建立一个虚拟专用网络V4的关系,用于传递虚拟专用网络V4路由
[r2-bgp]ipv4-family vpnv4 //进入虚拟专用网络模式
[r2-bgp-af-vpnv4]peer 4.4.4.4 enable //与4.4.4.4建立虚拟专用网络v4的关系
同理R4也需要类似配置
[r4]bgp 2
[r4-bgp]router-id 4.4.4.4
[r4-bgp]peer 2.2.2.2 as-number 2
[r4-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[r4-bgp]peer 2.2.2.2 next-hop-local
[r4-bgp]ipv4-family vpn-instance
[r4-bgp]ipv4-family vpnv4
[r4-bgp-af-vpnv4]peer 2.2.2.2 enable
查看正常普通BGP邻居的命令
[r2]display bgp peer
查看MG-BGP邻居关系的命令
[r2]display bgp vpnv4 all peer
5)CE端与PE端交互路由
静态方法:
CE端直接编写静态路由即可
[r1]ip route-static 192.168.3.0 24 192.168.2.2
[r1]ip route-static 192.168.4.0 24 192.168.2.2
PE端编写到VRF空间内的静态路由
[r2]ip route-static vpn-instance a 192.168.1.0 24 192.168.2.1 //写进R2的私有路由表
将R2上VRF空间学习到的直连、静态重发布到BGP中,通过BGP传给R4
[r2]bgp 2
[r2-bgp]ipv4 vpn-instance a //先进入VRF空间
[r2-bgp-a]import-route direct
[r2-bgp-a]import-route static
[r2-bgp-a]display ip routing-table vpn-instance a
<r4>display bgp vpnv4 vpn-instance b routing-table
同理通信是双向的,R4也可以使用静态方法类似上述操作配置
该实验R4这边我使用动态协议OSPF配置
1)CE端正常启动OSPF即可
[r5]ospf 1 router-id 5.5.5.5
[r5-ospf-1]area 0
[r5-ospf-1-area-0.0.0.0]network 192.168.3.2 0.0.0.0
[r5-ospf-1-area-0.0.0.0]network 192.168.4.1 0.0.0.0
2)PE端,启动虚拟专用网络V4专用的OSPF协议
首先,PE端R4直接启动OSPF是不行的,且刚才在ISP部分,IGP路由时启动了OSPF协议
所以,应该在专用的VRF空间里启动OSPF协议,且需要和第一个进程号不一样
[r4]ospf 2 vpn-instance b //专门给该空间启动OSPF协议2
[r4-ospf-2]area 0
[r4-ospf-2-area-0.0.0.0]network 192.168.3.1 0.0.0.0
这样,R4与R5之间可以建立私有网段的OSPF邻居关系,且互相学习到了路由
3)R4上再使用双向重发布,实现路由共享,让R2通过BGP学习到R5上的所有网段
[r4]bgp 2
[r4-bgp]ipv4-family vpn-instance b
[r4-bgp-b]import-route ospf 2
[r4-bgp-b]q
[r4]ospf 2 vpn-instance b
[r4-ospf-2]import-route bgp
[r2]display bgp vpnv4 vpn-instance a routing-table
R5上也会学习到R1上的所有私有网段
[r5]display ip routing-table protocol ospf
查看R1路由表
6)实验结果
结果:R1和R5设备上私有网段可以相互ping通
部分结果展示:R5ping通R1的192.168.1.0/24网段
7)通过抓包检验MPLS 虚拟专用网络中两层标签
在R2的g0/0/1口抓包
梳理一下过程
R1要去pingR5
流量先给R2,需要在R2上查询FIB表
<r2>display fib vpn-instance a
查看第一条去192.168.4.1 标签值对应着后面的TunnelID 0X3
0X3是那个?0x3就是去 4.4.4.4的路由标签
<r2>display fib //查询正常公网的fib表
查询LFIB表,去R4就是打的1025标签,该标签1025作用就是防止路由黑洞,外层标签
<r2>display mpls lsp
在R4上查看要去192.168.4.1/32是标签应该要打1027,二层标签
<r4>display mpls lsp vpn-instance b //查看双层标签中内层标签号