Cisco started putting labels on top of IP packets since IOS release 11.1(17)CT in 1998 and it was then called tag switching. A tag was the name for what is now known as a label. The MPLS labels are advertised between routers so that they can build a label-to-label mappings.
These labels are attached to the IP packets, enabling the routers to forward the traffic by looking
at the label and not the destination IP address. The packets are forwarded by label switching instead of by IP switching. One MPLS label is a field of 32 bits with a certain structure:
MPLS-capable routers might need more than one label on top of the packet to route that packet through the MPLS network. This is done by packing the labels into a stack. The first label in the
stack is called the top label, and the last label is called the bottom label. In between, you can have
any number of labels. You can view MPLS as OSI Layer 2.5
I've been configuring and troubleshooting MPLS networks back in my old ISP days and I still use those skills in my current enterprise network. I needed to review basic MPLS for an IT project, so I used the Cisco Press book MPLS Fundamentals by Luc de Ghein and the MPLS Fundamentals training videos by Keith Barker. I also setup a lab using the network topology below:
You can directly configure the OSPF process and area ID under the interface in OSPFv2 versus configuring networks that will participate in OSPF (version 1) process under the network command. There's also OSPFv3 that supports IPv4 and IPv6 Address Family (AF).
These are the initial router configurations.
R1-PE1#show run
Building configuration...
Current configuration : 1285 bytes
!
! Last configuration change at 12:38:40 UTC Sun Nov 11 2018
upgrade fpd auto
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1-PE1
!
boot-start-marker
boot-end-marker
!
!
!
no aaa new-model
no ip icmp rate-limit unreachable
!
!
!
!
!
!
no ip domain lookup
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
mpls label range 100 199
!
!
!
!
!
!
!
!
!
!
redundancy
!
!
ip tcp synwait-time 5
!
!
!
!
!
!
!
!
!
!
interface Loopback0
ip address 10.1.1.1 255.255.255.255
ip ospf 1 area 0
!
interface FastEthernet0/0
ip address 10.12.0.1 255.255.255.0
ip ospf 1 area 0
duplex half
mpls ip
!
interface FastEthernet1/0
no ip address
shutdown
duplex auto
speed auto
!
interface FastEthernet1/1
no ip address
shutdown
duplex auto
speed auto
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
!
no cdp log mismatch duplex
!
!
!
control-plane
!
!
!
mgcp profile default
!
!
!
gatekeeper
shutdown
!
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line vty 0 4
login
transport input all
!
!
end
R2-P1#show run
Building configuration...
Current configuration : 1322 bytes
!
! Last configuration change at 12:26:18 UTC Sun Nov 11 2018
upgrade fpd auto
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2-P1
!
boot-start-marker
boot-end-marker
!
!
!
no aaa new-model
no ip icmp rate-limit unreachable
!
!
!
!
!
!
no ip domain lookup
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
mpls label range 200 299
!
!
!
!
!
!
!
!
!
!
redundancy
!
!
ip tcp synwait-time 5
!
!
!
!
!
!
!
!
!
!
interface Loopback0
ip address 10.2.2.2 255.255.255.255
ip ospf 1 area 0
!
interface FastEthernet0/0
ip address 10.12.0.2 255.255.255.0
ip ospf 1 area 0
duplex half
mpls ip
!
interface FastEthernet1/0
no ip address
shutdown
duplex auto
speed auto
!
interface FastEthernet1/1
ip address 10.23.0.2 255.255.255.0
ip ospf 1 area 0
duplex auto
speed auto
mpls ip
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
!
no cdp log mismatch duplex
!
!
!
control-plane
!
!
!
mgcp profile default
!
!
!
gatekeeper
shutdown
!
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line vty 0 4
login
transport input all
!
!
end
R3-P2#show run
Building configuration...
Current configuration : 1304 bytes
!
! Last configuration change at 12:26:17 UTC Sun Nov 11 2018
upgrade fpd auto
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R3-P2
!
boot-start-marker
boot-end-marker
!
!
!
no aaa new-model
no ip icmp rate-limit unreachable
!
!
!
!
!
!
no ip domain lookup
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
mpls label range 300 399
!
!
!
!
!
!
!
!
!
!
redundancy
!
!
ip tcp synwait-time 5
!
!
!
!
!
!
!
!
!
!
interface Loopback0
ip address 10.3.3.3 255.255.255.255
ip ospf 1 area 0
!
interface FastEthernet0/0
no ip address
shutdown
duplex half
!
interface FastEthernet1/0
ip address 10.34.0.3 255.255.255.0
ip ospf 1 area 0
duplex auto
speed auto
mpls ip
!
interface FastEthernet1/1
ip address 10.23.0.3 255.255.255.0
ip ospf 1 area 0
duplex auto
speed auto
mpls ip
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
!
no cdp log mismatch duplex
!
!
!
control-plane
!
!
!
mgcp profile default
!
!
!
gatekeeper
shutdown
!
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line vty 0 4
login
transport input all
!
!
end
R4-P3#show run
Building configuration...
Current configuration : 1283 bytes
!
! Last configuration change at 12:45:54 UTC Sun Nov 11 2018
upgrade fpd auto
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R4-P3
!
boot-start-marker
boot-end-marker
!
!
!
no aaa new-model
no ip icmp rate-limit unreachable
!
!
!
!
!
!
no ip domain lookup
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
mpls label range 400 499
!
!
!
!
!
!
!
!
!
!
redundancy
!
!
ip tcp synwait-time 5
!
!
!
!
!
!
!
!
!
!
interface Loopback0
ip address 10.4.4.4 255.255.255.255
ip ospf 1 area 0
!
interface FastEthernet0/0
ip address 10.45.0.4 255.255.255.0
ip ospf 1 area 0
duplex half
mpls ip
!
interface FastEthernet1/0
ip address 10.34.0.4 255.255.255.0
ip ospf 1 area 0
duplex auto
speed auto
mpls ip
!
interface FastEthernet1/1
no ip address
shutdown
duplex auto
speed auto
!
router ospf 1
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
!
no cdp log mismatch duplex
!
!
!
control-plane
!
!
!
mgcp profile default
!
!
!
gatekeeper
shutdown
!
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line vty 0 4
login
transport input all
!
!
end
R5-PE2#show run
Building configuration...
Current configuration : 1285 bytes
!
! Last configuration change at 12:06:50 UTC Sun Nov 11 2018
upgrade fpd auto
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R5-PE2
!
boot-start-marker
boot-end-marker
!
!
!
no aaa new-model
no ip icmp rate-limit unreachable
!
!
!
!
!
!
no ip domain lookup
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
mpls label range 500 599
!
!
!
!
!
!
!
!
!
!
redundancy
!
!
ip tcp synwait-time 5
!
!
!
!
!
!
!
!
!
!
interface Loopback0
ip address 10.5.5.5 255.255.255.255
ip ospf 1 area 0
!
interface FastEthernet0/0
ip address 10.45.0.5 255.255.255.0
ip ospf 1 area 0
duplex half
mpls ip
!
interface FastEthernet1/0
no ip address
shutdown
duplex auto
speed auto
!
interface FastEthernet1/1
no ip address
shutdown
duplex auto
speed auto
!
router ospf 1
network 10.0.0.0 0.255.255.255 area 0
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
!
no cdp log mismatch duplex
!
!
!
control-plane
!
!
!
mgcp profile default
!
!
!
gatekeeper
shutdown
!
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line vty 0 4
login
transport input all
!
!
end
These labels are attached to the IP packets, enabling the routers to forward the traffic by looking
at the label and not the destination IP address. The packets are forwarded by label switching instead of by IP switching. One MPLS label is a field of 32 bits with a certain structure:
MPLS-capable routers might need more than one label on top of the packet to route that packet through the MPLS network. This is done by packing the labels into a stack. The first label in the
stack is called the top label, and the last label is called the bottom label. In between, you can have
any number of labels. You can view MPLS as OSI Layer 2.5
I've been configuring and troubleshooting MPLS networks back in my old ISP days and I still use those skills in my current enterprise network. I needed to review basic MPLS for an IT project, so I used the Cisco Press book MPLS Fundamentals by Luc de Ghein and the MPLS Fundamentals training videos by Keith Barker. I also setup a lab using the network topology below:
Step 1: Configure
basic IP addressing and OSPF routing protocol on the MPLS network (R1 to
R5).
You can directly configure the OSPF process and area ID under the interface in OSPFv2 versus configuring networks that will participate in OSPF (version 1) process under the network command. There's also OSPFv3 that supports IPv4 and IPv6 Address Family (AF).
R1#
R1#configure
terminal
Enter
configuration commands, one per line.
End with CNTL/Z.
R1(config)#hostname
R1-PE1
R1-PE1(config)#
R1-PE1(config)#ip cef // NEED CEF FOR MPLS (ENABLED BY DEFAULT)
R1-PE1(config)#
R1-PE1(config)#no
ip domain lookup
R1-PE1(config)#
R1-PE1(config)#interface
loopback0
R1(config-if)#
*Nov 11
11:36:09.879: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0,
changed state to up
R1-PE1(config-if)#ip
address 10.1.1.1 255.255.255.255
R1-PE1(config-if)#ip ospf 1 area 0 // CONFIGURE OSPF ON THE INTERFACE IN OSPFv2
R1-PE1(config-if)#
R1-PE1(config-if)#interface
f0/0
R1-PE1(config-if)#ip
address 10.12.0.1 255.255.255.0
R1-PE1(config-if)#no
shutdown
R1-PE1(config-if)#
*Nov 11
11:37:12.787: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Nov 11
11:37:13.787: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0,
changed state to up
R1-PE1(config-if)#end
R1-PE1#
*Nov 11 11:39:52.267: %OSPF-5-ADJCHG: Process 1, Nbr
10.2.2.2 on FastEthernet0/0 from LOADING to FULL, Loading Done
R2#
R2#configure
terminal
Enter
configuration commands, one per line.
End with CNTL/Z.
R2(config)#hostname
R2-P1
R2-P1(config)#
R2-P1(config)#ip
cef
R2(config)#
R2-P1(config)#no
ip domain lookup
R2-P1(config)#
R2-P1(config)#interface
loopback0
R2-P1(config-if)#
*Nov 11
11:38:48.251: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0,
changed state to up
R2-P1(config-if)#ip
address 10.2.2.2 255.255.255.255
R2-P1(config-if)#ip
ospf 1 area 0
R2-P1(config-if)#
R2-P1(config-if)#interface
f0/0
R2-P1(config-if)#ip
address 10.12.0.2 255.255.255.0
R2-P1(config-if)#no
shut
R2-P1(config-if)#
*Nov 11
11:39:38.087: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Nov 11
11:39:39.087: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0,
changed state to up
R2-P1(config-if)#do
ping 10.12.0.1
Type
escape sequence to abort.
Sending
5, 100-byte ICMP Echos to 10.12.0.1, timeout is 2 seconds:
.!!!!
Success
rate is 80 percent (4/5), round-trip min/avg/max = 16/27/56 ms
R2-P1(config-if)#
R2-P1(config-if)#ip
ospf 1 area 0
R2-P1(config-if)#
*Nov 11 11:39:52.199: %OSPF-5-ADJCHG: Process 1, Nbr
10.1.1.1 on FastEthernet0/0 from LOADING to FULL, Loading Done
R2-P1(config)#interface
f1/1
R2-P1(config-if)#ip
address 10.23.0.2 255.255.255.0
R2-P1(config-if)#ip
ospf 1 area 0
R2-P1(config-if)#no
shutdown
R2-P1(config-if)#
*Nov 11
11:44:23.403: %LINK-3-UPDOWN: Interface FastEthernet1/1, changed state to up
*Nov 11
11:44:24.403: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/1,
changed state to up
R2-P1(config-if)#end
R2-P1#
*Nov 11 11:46:09.959: %OSPF-5-ADJCHG: Process 1, Nbr
10.3.3.3 on FastEthernet1/1 from LOADING to FULL, Loading Done
R3#
R3#configure
terminal
Enter
configuration commands, one per line.
End with CNTL/Z.
R3(config)#hostname
R3-P2
R3-P2(config)#
R3-P2(config)#ip
cef
R3-P2(config)#
R3-P2(config)#no
ip domain lookup
R3-P2(config)#
R3-P2(config)#interface
loopback0
R3-P2(config-if)#
*Nov 11
11:45:14.831: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0,
changed state to up
R3-P2(config-if)#ip
address 10.3.3.3 255.255.255.255
R3-P2(config-if)#ip ospf 1 area 0
R3-P2(config-if)#ip ospf 1 area 0
R3-P2(config-if)#
R3-P2(config-if)#interface
f1/1
R3-P2(config-if)#ip
address 10.23.0.3 255.255.255.0
R3-P2(config-if)#ip
ospf 1 area 0
R3-P2(config-if)#no
shutdown
R3-P2(config-if)#
*Nov 11
11:45:52.807: %LINK-3-UPDOWN: Interface FastEthernet1/1, changed state to up
*Nov 11
11:45:53.807: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/1,
changed state to up
R3-P2(config-if)#
*Nov 11
11:46:00.035: %OSPF-5-ADJCHG: Process 1, Nbr 10.2.2.2 on FastEthernet1/1 from
LOADING to FULL, Loading Done
R3-P2(config-if)#
R3-P2(config-if)#do
ping 10.23.0.2
Type
escape sequence to abort.
Sending
5, 100-byte ICMP Echos to 10.23.0.2, timeout is 2 seconds:
!!!!!
Success
rate is 100 percent (5/5), round-trip min/avg/max = 20/22/28 ms
R3-P2(config-if)#
R3-P2(config-if)#interface
f1/0
R3-P2(config-if)#ip
address 10.34.0.3 255.255.255.0
R3-P2(config-if)#ip
ospf 1 area 0
R3-P2(config-if)#no
shutdown
R3-P2(config-if)#
*Nov 11
11:47:05.563: %LINK-3-UPDOWN: Interface FastEthernet1/0, changed state to up
*Nov 11
11:47:06.563: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/0,
changed state to up
R3-P2(config-if)#end
R3-P2#
*Nov 11
11:48:59.663: %OSPF-5-ADJCHG: Process 1, Nbr 10.4.4.4 on FastEthernet1/0 from
LOADING to FULL, Loading Done
R4#
R4#configure
terminal
Enter
configuration commands, one per line.
End with CNTL/Z.
R4(config)#hostname
R4-P3
R4-P3(config)#
R4-P3(config)#ip
cef
R4-P3(config)#
R4-P3(config)#no
ip domain lookup
R4-P3(config)#
R4-P3(config)#interface
loopback0
R4-P3(config-if)#
*Nov 11
11:47:57.395: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0,
changed state to up
R4-P3(config-if)#ip
address 10.4.4.4 255.255.255.255
R4-P3(config-if)#ip
ospf 1 area 0
R4-P3(config-if)#
R4-P3(config-if)#interface
f1/0
R4-P3(config-if)#ip
address 10.34.0.4 255.255.255.0
R4-P3(config-if)#ip
ospf 1 area 0
R4-P3(config-if)#no
shutdown
R4-P3(config-if)#
*Nov 11
11:48:40.419: %LINK-3-UPDOWN: Interface FastEthernet1/0, changed state to up
*Nov 11
11:48:41.419: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/0,
changed state to up
R4-P3(config-if)#
*Nov 11
11:48:49.663: %OSPF-5-ADJCHG: Process 1, Nbr 10.3.3.3 on FastEthernet1/0 from
LOADING to FULL, Loading Done
R4-P3(config-if)#do
ping 10.34.0.3
Type
escape sequence to abort.
Sending
5, 100-byte ICMP Echos to 10.34.0.3, timeout is 2 seconds:
!!!!!
Success
rate is 100 percent (5/5), round-trip min/avg/max = 16/24/36 ms
R4-P3(config-if)#
R4-P3(config-if)#interface
f0/0
R4-P3(config-if)#ip
address 10.45.0.4 255.255.255.0
R4-P3(config-if)#ip
ospf 1 area 0
R4-P3(config-if)#no
shutdown
R4-P3(config-if)#
*Nov 11
11:49:34.171: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Nov 11
11:49:35.171: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0,
changed state to up
R4-P3(config-if)#end
R4-P3#
*Nov 11
11:51:10.691: %OSPF-5-ADJCHG: Process 1, Nbr 10.5.5.5 on FastEthernet0/0 from
LOADING to FULL, Loading Done
R5#configure
terminal
Enter
configuration commands, one per line.
End with CNTL/Z.
R5-PE3(config)#hostname
R5-PE2
R5-PE2(config)#
R5-PE2(config)#ip
cef
R5-PE2(config)#
R5-PE2(config)#no
ip domain lookup
R5-PE2(config)#
R5-PE2(config)#interface
loopback0
R5-PE2(config-if)#
*Nov 11
11:30:08.643: %LINEPROTO-5-UPDOWN: Line protocol on Interface Loopback0,
changed state to up
R5-PE2(config-if)#ip
address 10.5.5.5 255.255.255.255
R5-PE2(config-if)#ip
ospf 1 area 0
R5-PE2(config-if)#
R5-PE2(config-if)#interface
f0/0
R5-PE2(config-if)#ip
address 10.45.0.5 255.255.255.0
R5-PE2(config-if)#ip
ospf 1 area 0
R5-PE2(config-if)#no
shutdown
R5-PE2(config-if)#
*Nov 11
11:30:45.035: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Nov 11
11:30:46.035: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0,
changed state to up
R5-PE2(config-if)#
*Nov 11
11:30:50.191: %OSPF-5-ADJCHG: Process 1, Nbr 10.4.4.4 on FastEthernet0/0 from
LOADING to FULL, Loading Done
R5-PE2(config-if)#end
R5-PE2#
R1-PE1#ping
10.5.5.5 source 10.1.1.1
Type
escape sequence to abort.
Sending
5, 100-byte ICMP Echos to 10.5.5.5, timeout is 2 seconds:
Packet
sent with a source address of 10.1.1.1
!!!!!
Success
rate is 100 percent (5/5), round-trip min/avg/max = 40/60/92 ms
Notice the traceroute initially didn't use any MPLS labels.
R1-PE1#traceroute
10.5.5.5 source 10.1.1.1
Type
escape sequence to abort.
Tracing
the route to 10.5.5.5
VRF info:
(vrf in name/id, vrf out name/id)
1 10.12.0.2 16 msec 16 msec 12 msec
2 10.23.0.3 24 msec 56 msec 24 msec
3 10.34.0.4 68 msec 60 msec 60 msec
4 10.45.0.5 68 msec 60 msec 52 msec
Step 2: Configure
MPLS on the core network.
There are just few MPLS commands to enable. I also manually configured the MPLS label range on each router so it's easy to troubleshoot and trace which router is using the labels.
R1-PE1#
R1-PE1#configure
terminal
Enter
configuration commands, one per line.
End with CNTL/Z.
R1-PE1(config)#mpls
?
discovery
Configure LSP discovery
export
Configure periodic export of MPLS PAL table
ip
Dynamic MPLS forwarding for IP
label
Label properties
ldp
Label Distribution Protocol
oam
OAM configuration
static
MPLS static application
traffic-eng
Configure Traffic Engineering parameters
R1-PE1(config)#mpls
label ?
mode
MPLS Label allocation mode
protocol
Set platform default label distribution protocol
range
Label range
R1-PE1(config)#mpls
label range ?
<16-1048575> Minimum label value for dynamic label range
R1-PE1(config)#mpls
label range 100 ?
<100-1048575> Maximum label value for dynamic label range
R1-PE1(config)#mpls label range 100 199 // MANUALLY CONFIGURE MPLS LABELS TO BE
USED
R1-PE1(config)#
R1-PE1(config)#mpls ip // GLOBALLY ENABLE MPLS
R1-PE1(config)#
R1-PE1(config)#interface
f0/0
R1-PE1(config-if)#mpls
?
accounting
Enable MPLS accounting on this interface
bgp
MPLS BGP commands
ip
Configure dynamic MPLS forwarding for IP
l2transport
Layer 2 packet over MPLS config commands
label
Label properties
ldp
Configure Label Distribution Protocol (LDP) parameters
mtu
Set MPLS Maximum Transmission Unit
netflow
Configure Egress Netflow Accounting
traffic-eng
Configure Traffic Engineering parameters
R1-PE1(config-if)#mpls ip // ENABLE MPLS (AND LDP) ON THE SPECIFIED
INTERFACE
R1-PE1(config-if)#end
R1-PE1#
*Nov 11 12:01:36.759: %LDP-5-NBRCHG: LDP Neighbor
10.2.2.2:0 (1) is UP
R2-P1#
R2-P1#configure
terminal
Enter
configuration commands, one per line.
End with CNTL/Z.
R2-P1(config)#mpls
label range 200 299
R2-P1(config)#mpls
ip
R2-P1(config)#interface
f0/0
R2-P1(config-if)#mpls
ip
R2-P1(config-if)#
*Nov 11 12:01:36.631: %LDP-5-NBRCHG: LDP Neighbor
10.1.1.1:0 (1) is UP
R2-P1(config-if)#
R2-P1(config-if)#interface
f1/1
R2-P1(config-if)#mpls
ip
*Nov 11 12:26:31.343: %LDP-5-NBRCHG: LDP Neighbor
10.3.3.3:0 (2) is UP
R2-P1(config-if)#end
R2-P1#
R3-P2#configure
terminal
Enter
configuration commands, one per line.
End with CNTL/Z.
R3-P2(config)#mpls
label range 300 399
R3-P2(config)#mpls
ip
R3-P2(config)#interface
f1/1
R3-P2(config-if)#mpls
ip
*Nov 11 12:26:21.343: %LDP-5-NBRCHG: LDP Neighbor
10.2.2.2:0 (2) is UP
R3-P2(config-if)#interface
f1/0
R3-P2(config-if)#mpls
ip
R3-P2#
*Nov 11 12:26:20.047: %LDP-5-NBRCHG: LDP Neighbor
10.4.4.4:0 (1) is UP
R3-P2(config-if)#end
R3-P2#
R4-P3#
R4-P3#configure
terminal
Enter
configuration commands, one per line.
End with CNTL/Z.
R4-P3(config)#mpls
label range 400 499
R4-P3(config)#mpls
ip
R4-P3(config)#
R4-P3(config)#interface
f1/0
*Nov 11 12:26:09.991: %LDP-5-NBRCHG: LDP Neighbor
10.3.3.3:0 (2) is UP
R4-P3(config-if)#mpls
ip
R4-P3(config-if)#interface
f0/0
R4-P3(config-if)#mpls
ip
*Nov 11 12:12:35.227: %LDP-5-NBRCHG: LDP Neighbor
10.5.5.5:0 (1) is UP
R4-P3(config-if)#end
R4-P3#
R5-PE2#
R5-PE2#configure
terminal
Enter
configuration commands, one per line.
End with CNTL/Z.
R5-PE2(config)#mpls
label range 500 599
R5-PE2(config)#mpls
ip
R5-PE2(config)#
R5-PE2(config)#interface
f0/0
R5-PE2(config-if)#mpls
ip
R5-PE2(config-if)#
*Nov 11 11:52:14.691: %LDP-5-NBRCHG: LDP Neighbor
10.4.4.4:0 (1) is UP
R5-PE2(config-if)#end
R5-PE2#
R5-PE2#
R5-PE2#configure
terminal
Enter
configuration commands, one per line.
End with CNTL/Z.
R5-PE2(config)#mpls
label range 500 599
R5-PE2(config)#mpls
ip
R5-PE2(config)#
R5-PE2(config)#interface
f0/0
R5-PE2(config-if)#mpls
ip
R5-PE2(config-if)#
*Nov 11 11:52:14.691: %LDP-5-NBRCHG: LDP Neighbor
10.4.4.4:0 (1) is UP
R5-PE2(config-if)#end
R5-PE2#
R1-PE1#show
mpls ?
discovery Information about LSP discovery
flow MPLS netflow information
forwarding-table Show the Label Forwarding Table
interfaces Per-interface MPLS forwarding
information
ip MPLS IP information
l2transport MPLS circuit transport info
label Label information
ldp Label Distribution Protocol
information
memory Memory usage information
oam OAM information
static Show MPLS static information
traffic-eng Traffic engineering information
R1-PE1#show
mpls ldp ?
backoff LDP session setup backoff table
bindings Show the LDP Label Information Base
(LIB)
capabilities Display LDP Capabilities information
discovery Display sources for locally generated
LDP Discovery Hello
PDUs
graceful-restart Show Graceful Restart summary
igp IGP-related info
neighbor Display LDP neighbor information
parameters Display LDP configuration parameters
R1-PE1#show
mpls ldp bindings
lib entry: 10.1.1.1/32, rev 2
local binding: label: imp-null
remote binding: lsr: 10.2.2.2:0, label:
200
lib entry: 10.2.2.2/32, rev 4
local binding: label: 100
remote binding: lsr: 10.2.2.2:0, label:
imp-null
lib entry: 10.4.4.4/32, rev 6
local binding: label: 101
remote binding: lsr: 10.2.2.2:0, label:
201
lib entry:
10.5.5.5/32, rev 8
local
binding: label: 102
remote
binding: lsr: 10.2.2.2:0, label: 202
lib entry: 10.12.0.0/24, rev 10
local binding: label: imp-null
remote binding: lsr: 10.2.2.2:0, label:
imp-null
lib entry: 10.23.0.0/24, rev 12
local binding: label: 103
remote binding: lsr: 10.2.2.2:0, label:
imp-null
lib entry: 10.34.0.0/24, rev 14
local binding: label: 104
remote binding: lsr: 10.2.2.2:0, label:
203
lib entry: 10.45.0.0/24, rev 16
local binding: label: 105
remote binding: lsr: 10.2.2.2:0, label:
204
R1-PE1#
R1-PE1#show
mpls ldp bindings ?
A.B.C.D Destination prefix
advertisement-acls Show advertisement access lists
all Display LIB information in all
VRFs
detail Show detailed information
local Display only locally assigned
labels
local-label Match locally assigned label values
neighbor Display labels from LDP neighbor
remote-label Match remotely assigned label values
vrf VRF Routing/Forwarding
instance information
| Output modifiers
<cr>
R1-PE1#show
mpls ldp bindings 10.5.5.5 ?
<0-32>
Mask length
A.B.C.D
Destination mask
R1-PE1#show
mpls ldp bindings 10.5.5.5 32
lib entry: 10.5.5.5/32, rev 8
local binding: label: 102
remote binding: lsr: 10.2.2.2:0, label: 202
R1-PE1#show
mpls forwarding-table ?
A.B.C.D Destination prefix
X:X:X:X::X/<0-128> Destination IPv6 prefix
detail Detailed information
interface Match outgoing interface
labels Match label values
next-hop Match next hop neighbor
slot Specify the slot
vrf Show entries for a VPN
Routing/Forwarding instance
| Output modifiers
<cr>
R1-PE1#show
mpls forwarding-table 10.5.5.5
Local Outgoing
Prefix Bytes Label Outgoing
Next Hop
Label Label
or Tunnel Id Switched interface
102
202 10.5.5.5/32 0 Fa0/0 10.12.0.2
R2-P1#show
mpls ldp bindings 10.5.5.5 32
lib entry: 10.5.5.5/32, rev 8
local binding: label: 202
remote binding: lsr: 10.1.1.1:0, label: 102
remote binding: lsr: 10.3.3.3:0, label: 304
R2-P1#show
mpls forwarding-table 10.5.5.5
Local Outgoing
Prefix Bytes Label Outgoing
Next Hop
Label Label
or Tunnel Id Switched interface
202 304 10.5.5.5/32 0 Fa1/1 10.23.0.3
R3-P2#show
mpls ldp bindings 10.5.5.5 32
lib entry: 10.5.5.5/32, rev 14
local binding: label: 304
remote binding: lsr: 10.4.4.4:0, label: 402
remote binding: lsr: 10.2.2.2:0, label: 202
R3-P2#show
mpls forwarding-table 10.5.5.5
Local Outgoing
Prefix Bytes Label Outgoing
Next Hop
Label Label
or Tunnel Id Switched interface
304 402 10.5.5.5/32 0 Fa1/0 10.34.0.4
R4-P3#show
mpls ldp bindings 10.5.5.5 32
lib entry: 10.5.5.5/32, rev 8
local binding: label: 402
remote binding: lsr: 10.5.5.5:0, label: imp-null // DIRECTLY
CONNECTED ROUTE ON R5 (PENULTIMATE HOP POPPING/POP)
remote binding: lsr: 10.3.3.3:0, label: 304
R4-P3#
R4-P3#show
mpls forwarding-table 10.5.5.5
Local Outgoing
Prefix Bytes Label Outgoing
Next Hop
Label Label
or Tunnel Id Switched interface
402
Pop Label 10.5.5.5/32 0 Fa0/0 10.45.0.5
R5-PE2#show
mpls ldp bindings 10.5.5.5 32
lib entry: 10.5.5.5/32, rev 8
local binding: label: imp-null
remote binding: lsr: 10.4.4.4:0, label: 402
R5-PE2#show
mpls forwarding-table 10.5.5.5
Local Outgoing
Prefix Bytes Label Outgoing
Next Hop
Label Label
or Tunnel Id Switched interface
None
No Label 10.5.5.5/32 0
Notice the traceroute displays an MPLS label.
R1-PE1#traceroute
10.5.5.5 source 10.1.1.1
Type
escape sequence to abort.
Tracing
the route to 10.5.5.5
VRF info:
(vrf in name/id, vrf out name/id)
1 10.12.0.2 [MPLS:
Label 202 Exp 0] 128 msec 56 msec 68 msec
2 10.23.0.3 [MPLS:
Label 304 Exp 0] 40 msec 60 msec 40 msec
3 10.34.0.4 [MPLS:
Label 402 Exp 0] 44 msec 8 msec 40 msec
4 10.45.0.5 68 msec 104 msec 40 msec
These are the initial router configurations.
R1-PE1#show run
Building configuration...
Current configuration : 1285 bytes
!
! Last configuration change at 12:38:40 UTC Sun Nov 11 2018
upgrade fpd auto
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1-PE1
!
boot-start-marker
boot-end-marker
!
!
!
no aaa new-model
no ip icmp rate-limit unreachable
!
!
!
!
!
!
no ip domain lookup
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
mpls label range 100 199
!
!
!
!
!
!
!
!
!
!
redundancy
!
!
ip tcp synwait-time 5
!
!
!
!
!
!
!
!
!
!
interface Loopback0
ip address 10.1.1.1 255.255.255.255
ip ospf 1 area 0
!
interface FastEthernet0/0
ip address 10.12.0.1 255.255.255.0
ip ospf 1 area 0
duplex half
mpls ip
!
interface FastEthernet1/0
no ip address
shutdown
duplex auto
speed auto
!
interface FastEthernet1/1
no ip address
shutdown
duplex auto
speed auto
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
!
no cdp log mismatch duplex
!
!
!
control-plane
!
!
!
mgcp profile default
!
!
!
gatekeeper
shutdown
!
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line vty 0 4
login
transport input all
!
!
end
R2-P1#show run
Building configuration...
Current configuration : 1322 bytes
!
! Last configuration change at 12:26:18 UTC Sun Nov 11 2018
upgrade fpd auto
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2-P1
!
boot-start-marker
boot-end-marker
!
!
!
no aaa new-model
no ip icmp rate-limit unreachable
!
!
!
!
!
!
no ip domain lookup
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
mpls label range 200 299
!
!
!
!
!
!
!
!
!
!
redundancy
!
!
ip tcp synwait-time 5
!
!
!
!
!
!
!
!
!
!
interface Loopback0
ip address 10.2.2.2 255.255.255.255
ip ospf 1 area 0
!
interface FastEthernet0/0
ip address 10.12.0.2 255.255.255.0
ip ospf 1 area 0
duplex half
mpls ip
!
interface FastEthernet1/0
no ip address
shutdown
duplex auto
speed auto
!
interface FastEthernet1/1
ip address 10.23.0.2 255.255.255.0
ip ospf 1 area 0
duplex auto
speed auto
mpls ip
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
!
no cdp log mismatch duplex
!
!
!
control-plane
!
!
!
mgcp profile default
!
!
!
gatekeeper
shutdown
!
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line vty 0 4
login
transport input all
!
!
end
R3-P2#show run
Building configuration...
Current configuration : 1304 bytes
!
! Last configuration change at 12:26:17 UTC Sun Nov 11 2018
upgrade fpd auto
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R3-P2
!
boot-start-marker
boot-end-marker
!
!
!
no aaa new-model
no ip icmp rate-limit unreachable
!
!
!
!
!
!
no ip domain lookup
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
mpls label range 300 399
!
!
!
!
!
!
!
!
!
!
redundancy
!
!
ip tcp synwait-time 5
!
!
!
!
!
!
!
!
!
!
interface Loopback0
ip address 10.3.3.3 255.255.255.255
ip ospf 1 area 0
!
interface FastEthernet0/0
no ip address
shutdown
duplex half
!
interface FastEthernet1/0
ip address 10.34.0.3 255.255.255.0
ip ospf 1 area 0
duplex auto
speed auto
mpls ip
!
interface FastEthernet1/1
ip address 10.23.0.3 255.255.255.0
ip ospf 1 area 0
duplex auto
speed auto
mpls ip
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
!
no cdp log mismatch duplex
!
!
!
control-plane
!
!
!
mgcp profile default
!
!
!
gatekeeper
shutdown
!
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line vty 0 4
login
transport input all
!
!
end
R4-P3#show run
Building configuration...
Current configuration : 1283 bytes
!
! Last configuration change at 12:45:54 UTC Sun Nov 11 2018
upgrade fpd auto
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R4-P3
!
boot-start-marker
boot-end-marker
!
!
!
no aaa new-model
no ip icmp rate-limit unreachable
!
!
!
!
!
!
no ip domain lookup
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
mpls label range 400 499
!
!
!
!
!
!
!
!
!
!
redundancy
!
!
ip tcp synwait-time 5
!
!
!
!
!
!
!
!
!
!
interface Loopback0
ip address 10.4.4.4 255.255.255.255
ip ospf 1 area 0
!
interface FastEthernet0/0
ip address 10.45.0.4 255.255.255.0
ip ospf 1 area 0
duplex half
mpls ip
!
interface FastEthernet1/0
ip address 10.34.0.4 255.255.255.0
ip ospf 1 area 0
duplex auto
speed auto
mpls ip
!
interface FastEthernet1/1
no ip address
shutdown
duplex auto
speed auto
!
router ospf 1
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
!
no cdp log mismatch duplex
!
!
!
control-plane
!
!
!
mgcp profile default
!
!
!
gatekeeper
shutdown
!
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line vty 0 4
login
transport input all
!
!
end
R5-PE2#show run
Building configuration...
Current configuration : 1285 bytes
!
! Last configuration change at 12:06:50 UTC Sun Nov 11 2018
upgrade fpd auto
version 15.2
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R5-PE2
!
boot-start-marker
boot-end-marker
!
!
!
no aaa new-model
no ip icmp rate-limit unreachable
!
!
!
!
!
!
no ip domain lookup
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
mpls label range 500 599
!
!
!
!
!
!
!
!
!
!
redundancy
!
!
ip tcp synwait-time 5
!
!
!
!
!
!
!
!
!
!
interface Loopback0
ip address 10.5.5.5 255.255.255.255
ip ospf 1 area 0
!
interface FastEthernet0/0
ip address 10.45.0.5 255.255.255.0
ip ospf 1 area 0
duplex half
mpls ip
!
interface FastEthernet1/0
no ip address
shutdown
duplex auto
speed auto
!
interface FastEthernet1/1
no ip address
shutdown
duplex auto
speed auto
!
router ospf 1
network 10.0.0.0 0.255.255.255 area 0
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
!
no cdp log mismatch duplex
!
!
!
control-plane
!
!
!
mgcp profile default
!
!
!
gatekeeper
shutdown
!
!
line con 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line aux 0
exec-timeout 0 0
privilege level 15
logging synchronous
stopbits 1
line vty 0 4
login
transport input all
!
!
end