Here is the lab from MPLS implementation book how to set up MPLS VPN using OSPF between CE and PE routers.
Download the GNS3 file to practice from
here.
Download the completed GNS3 file from
here.
In Peer 1, configure OSPF to connect to Atlanta (PE1)
router ospf 1
network 192.168.1.1 0.0.0.0 area 1
network 192.168.3.5 0.0.0.0 area 0
-------------------------------
In Peer 2,
Peer2(config)#router ospf 1
Peer2(config-router)# network 192.168.2.1 0.0.0.0 area 1
Peer2(config-router)# network 192.168.3.10 0.0.0.0 area 0
---------------------------------
Altanta (PE1)
Atlanta(config)#int s0/0
Atlanta(config-if)#mpls ip
Atlanta(config-if)#
-----------------------------
Core router,
Core(config)#int s0/1
Core(config-if)#mpls ip
Core(config-if)#int s0/0
Core(config-if)#mpls ip
------------------------------
Raleigh (PE2) router,
Raleigh(config)#int s1/3
Raleigh(config-if)#mpls ip
---------------------------------
Configure IGP (RIP - v2) in MPLS network as follow.
router rip
version 2
network 204.134.83.0
-------------
MPLS LDP neighbours are up as follows in Core router.
Core(config-router)#
*Mar 1 00:33:43.787: %LDP-5-NBRCHG: LDP Neighbor 204.134.83.1:0 (1) is UP
Core(config-router)#
*Mar 1 00:33:53.147: %LDP-5-NBRCHG: LDP Neighbor 204.134.83.3:0 (2) is UP
Core(config-router)#
-----------------------------
Checking MPLS neighbour in Atlanta as follow;
Atlanta#sh mpls ldp neighbor
Peer LDP Ident: 204.134.83.2:0; Local LDP Ident 204.134.83.1:0
TCP connection: 204.134.83.2.55476 - 204.134.83.1.646
State: Oper; Msgs sent/rcvd: 10/9; Downstream
Up time: 00:01:05
LDP discovery sources:
Serial0/0, Src IP addr: 204.134.83.6
Addresses bound to peer LDP Ident:
204.134.83.9 204.134.83.6 204.134.83.2
----------------------
In Core router,
Core#sh mpls ldp neighbor
Peer LDP Ident: 204.134.83.1:0; Local LDP Ident 204.134.83.2:0
TCP connection: 204.134.83.1.646 - 204.134.83.2.55476
State: Oper; Msgs sent/rcvd: 10/11; Downstream
Up time: 00:01:50
LDP discovery sources:
Serial0/1, Src IP addr: 204.134.83.5
Addresses bound to peer LDP Ident:
204.134.83.5 192.168.3.6 204.134.83.1
Peer LDP Ident: 204.134.83.3:0; Local LDP Ident 204.134.83.2:0
TCP connection: 204.134.83.3.23917 - 204.134.83.2.646
State: Oper; Msgs sent/rcvd: 10/10; Downstream
Up time: 00:01:41
LDP discovery sources:
Serial0/0, Src IP addr: 204.134.83.10
Addresses bound to peer LDP Ident:
192.168.3.9 204.134.83.10 204.134.83.3
--------------------------------------
MPLS forwarding table in Core router is as follow;
Core#sh mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 204.134.83.1/32 0 Se0/1 point2point
17 Pop tag 204.134.83.3/32 0 Se0/0 point2point
---------------------------
Configure IBGP between two PE routers (Atlanta and Raleigh) as follows;
Atlanta(config)#router bgp 65000
Atlanta(config-router)# no synchronization
Atlanta(config-router)# bgp log-neighbor-changes
Atlanta(config-router)# neighbor 204.134.83.3 remote-as 65000
Atlanta(config-router)# neighbor 204.134.83.3 update-source Loopback0
Atlanta(config-router)# neighbor 204.134.83.3 next-hop-self
Atlanta(config-router)# no auto-summary
Atlanta(config-router)#
------------------------------------
Raleigh(config)#router bgp 65000
Raleigh(config-router)# no synchronization
Raleigh(config-router)# bgp log-neighbor-changes
Raleigh(config-router)# neighbor 204.134.83.1 remote-as 65000
Raleigh(config-router)# neighbor 204.134.83.1 update-source Loopback0
Raleigh(config-router)# neighbor 204.134.83.1 next-hop-self
Raleigh(config-router)# no auto-summary
------------------
IBGP is up message will see in console as follows;
Raleigh(config-router)#
*Mar 1 00:39:18.179: %BGP-5-ADJCHANGE: neighbor 204.134.83.1 Up
----------------------
Now, it's time to configure VRF routing.
Atlanta(config)#ip vrf peer_vpn
Atlanta(config-vrf)#rd 50:1
Atlanta(config-vrf)#route-target both 50:1
----------------
Raleigh(config)#ip vrf peer_vpn
Raleigh(config-vrf)#rd 50:1
Raleigh(config-vrf)#route-target both 50:1
---------------
Try to associate the interface connected to CE1 (Peer1) with vrf peer_vpn as follow; IP address defined in s0/1 will removed due to VRF and need to configure again.
Atlanta(config)#int s0/1
Atlanta(config-if)#ip vrf forwarding peer_vpn
% Interface Serial0/1 IP address 192.168.3.6 removed due to enabling VRF peer_vpn
Atlanta(config-if)#ip address 192.168.3.6 255.255.255.252
------------------
Raleigh(config)#int s0/1
Raleigh(config-if)#ip vrf forwarding peer_vpn
% Interface Serial0/1 IP address 192.168.3.9 removed due to enabling VRF peer_vpn
Raleigh(config-if)#ip address 192.168.3.9 255.255.255.252
---------------------------
Activate VPNV4 between PE1 and PE2 as follow inside BGP configuration.
Atlanta(config)#router bgp 65000
Atlanta(config-router)# address-family vpnv4
Atlanta(config-router-af)#neighbor 204.134.83.3 activate
*Mar 1 00:50:16.979: %BGP-5-ADJCHANGE: neighbor 204.134.83.3 Down Address family activated
Atlanta(config-router-af)#neighbor 204.134.83.3 send-community both
-----------------------------------------------
Raleigh(config)#router bgp 65000
Raleigh(config-router)# address-family vpnv4
Raleigh(config-router-af)# neighbor 204.134.83.1 activate
Raleigh(config-router-af)# neighbor 204.134.83.1 send-community both
Raleigh(config-router-af)#
*Mar 1 00:51:38.747: %BGP-5-ADJCHANGE: neighbor 204.134.83.1 Down Address family activated
Raleigh(config-router-af)#
*Mar 1 00:51:40.855: %BGP-5-ADJCHANGE: neighbor 204.134.83.1 Up
------------------------------------
Redistribution between MPLS IBGP (Core) and CE router's OSPF back to core as follows;
First, let's do restribution from BGP to CE's OSPF network.
----
Atlanta(config)#router ospf 1 vrf peer_vpn
Atlanta(config-router)#redistribute bgp 65000 subnets
Atlanta(config-router)#network 192.168.3.6 0.0.0.0 area 0
Atlanta(config-router)#
*Mar 1 00:57:26.567: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.10.1 on Serial0/1 from LOADING to FULL, Loading Done
----------------------------------
Raleigh(config)#router ospf 1 vrf peer_vpn
Raleigh(config-router)#redistribute bgp 65000 subnets
Raleigh(config-router)#network 192.168.3.9 0.0.0.0 area 0
Raleigh(config-router)#
*Mar 1 01:00:01.031: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.2.1 on Serial0/1 from LOADING to FULL, Loading Done
-------------------------------------
Finally, redistribute from OSPF to MPLS BGP as follows.
Atlanta(config)#router bgp 65000
Atlanta(config-router)#address-family ipv4 vrf peer_vpn
Atlanta(config-router-af)#redistribute ospf 1 vrf peer_vpn
Atlanta(config-router-af)#no sync
Atlanta(config-router-af)#no synchronization
-------------------------------
Raleigh(config)#router bgp 65000
Raleigh(config-router)#address-family ipv4 vrf peer_vpn
Raleigh(config-router-af)#redistribute ospf 1 vrf peer_vpn
Raleigh(config-router-af)#no synchronization
---------------------------------
Let's check in CE1 router (Peer1) whether it can reach to other end Peer2.
Peer1#sh ip route
192.168.10.0/32 is subnetted, 1 subnets
C 192.168.10.1 is directly connected, Loopback1
C 192.168.1.0/24 is directly connected, Loopback0
192.168.2.0/32 is subnetted, 1 subnets
O IA 192.168.2.1 [110/129] via 192.168.3.6, 00:00:27, Serial0/0
192.168.3.0/30 is subnetted, 2 subnets
O IA 192.168.3.8 [110/65] via 192.168.3.6, 00:00:27, Serial0/0
C 192.168.3.4 is directly connected, Serial0/0
----------------------------
Ping to 192.168.2.1 from Peer1 can reach to MPLS network as follow;
Peer1#ping 192.168.2.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 16/33/64 ms
Peer1#
--------------------------
Checking vrf routeing table in Atlanta (PE1) as follow;
Atlanta#sh ip route vrf peer_vpn
192.168.1.0/32 is subnetted, 1 subnets
O IA 192.168.1.1 [110/65] via 192.168.3.5, 00:11:37, Serial0/1
192.168.2.0/32 is subnetted, 1 subnets
B 192.168.2.1 [200/65] via 204.134.83.3, 00:03:30
192.168.3.0/30 is subnetted, 2 subnets
B 192.168.3.8 [200/0] via 204.134.83.3, 00:03:30
C 192.168.3.4 is directly connected, Serial0/1
--------------------------------------
But, in core router, it's only appearing IGP route as follow.
Core#sh ip route
204.134.83.0/24 is variably subnetted, 5 subnets, 2 masks
C 204.134.83.8/30 is directly connected, Serial0/0
R 204.134.83.1/32 [120/1] via 204.134.83.5, 00:00:04, Serial0/1
R 204.134.83.3/32 [120/1] via 204.134.83.10, 00:00:03, Serial0/0
C 204.134.83.2/32 is directly connected, Loopback0
C 204.134.83.4/30 is directly connected, Serial0/1
-----------------------------------------
What about in PE2 router (Raleigh),
Raleigh#sh ip route vrf peer_vpn
192.168.1.0/32 is subnetted, 1 subnets
B 192.168.1.1 [200/65] via 204.134.83.1, 00:08:29
192.168.2.0/32 is subnetted, 1 subnets
O IA 192.168.2.1 [110/65] via 192.168.3.10, 00:12:21, Serial0/1
192.168.3.0/30 is subnetted, 2 subnets
C 192.168.3.8 is directly connected, Serial0/1
B 192.168.3.4 [200/0] via 204.134.83.1, 00:08:29
--------------------------------------------------------------------------------
Let's traceroute from CE1 to CE2;
Peer1#traceroute 192.168.2.1
Type escape sequence to abort.
Tracing the route to 192.168.2.1
1 192.168.3.6 4 msec 16 msec 4 msec
2 204.134.83.6 [MPLS: Labels 17/19 Exp 0] 4 msec 36 msec 4 msec
3 192.168.3.9 [MPLS: Label 19 Exp 0] 24 msec 32 msec 4 msec
4 192.168.3.10 20 msec * 48 msec
--------------------------------------------------
Check the ldp in Core network.
Core#sh mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 204.134.83.1/32 7587 Se0/1 point2point
17 Pop tag 204.134.83.3/32 5020 Se0/0 point2point
-------------------------------------------------
Raleigh#sh mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 16 204.134.83.1/32 0 Se1/3 point2point
17 Pop tag 204.134.83.2/32 0 Se1/3 point2point
18 Pop tag 204.134.83.4/30 0 Se1/3 point2point
19 Untagged 192.168.2.1/32[V] 1144 Se0/1 point2point
20 Aggregate 192.168.3.8/30[V] 0
------------------------------------------------------
Here is the brief, Core route don't know both 192.168.1.x and 2.x network. It only use label and tag in MPLS network.
From Peer2 to Peer1, check as follow.
Peer2#traceroute 192.168.1.1
1 192.168.3.9 4 msec 28 msec 4 msec
2 204.134.83.9 [MPLS: Labels 16/19 Exp 0] 24 msec 24 msec 24 msec
3 192.168.3.6 [MPLS: Label 19 Exp 0] 28 msec 20 msec 4 msec
4 192.168.3.5 24 msec * 40 msec