For quite a while I have been trying to understand Hierarchical LSPs uder Cisco New Model developed for Mobile Operators known as Unified MPLS For Mobile Transport (UMMT). In case you haven't noticed, this new model came into picture officially early this year and after certain revisions they reached on version 3 or UMMT 3.0 as final model so far.
The idea behind UMMT is to move away from Traditional flat IP network design that Service Providers have been using for many years. Where they usually run Single IS-IS Level-2 Domain across entire core or Single OSPF Area as well. This design has couple of problems to begin with:
> Single Flat Network Domain Means any small change or instability will cause LSA Flooding or Re-Calculation.
> The network doesn't scale very well as it grows. Eventually large IGP domains means lots of burden on IGP which also further affects our Convergence Requirements from Today's Networks.
> You cannot break network into small pieces/domains as our LSPs requirements are End to End from PE's perspective in order to offer services such as L2/L3 MPLS VPNs & Traffic Engineering etc.
The Idea behind UMMT 3.0 Model is to break the network into multiple domains using different IGP Instances and yet not to compromise on our End To End LSP requirements. So the final picture looks some thing like following:
But as you can below it helps allot with minimizing the routes in every single domains which further helps with Network Convergence requirements of modern networks. Though Network Convergence is a big topic in itself and there are lot of recipes that goes with it in order to achieve the ultimate goal of 50 msec or less convergence time. But I'll focus more on Network Convergence is coming posts.
Although UMMT is a kind of model only, but Cisco is showcasing it's ASR & ME Product line being part of model as follows:
UMMT uses our old friend BGP for creating End to End LSP (Inter Domain) on top of existing LDP based LSPs (Intra Domain). For this they developed something called BGP Labeled Unicast documented under rfc 3107 which to my surprise was written in 2001 :)
With That being said. Here is a Quick Lab Demonstrating how everything fits together and how overall label space will work:
Complete Configuration:
================
R1
##
!
en
!
conf t
!
ho CE-1
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 1.1.1.1 255.255.255.255
exit
!
int f0/0
ip add 150.0.0.1 255.255.255.0
no sh
exit
!
router eigrp 100
no auto
net 1.1.1.1 0.0.0.0
net 150.0.0.1 0.0.0.0
exit
!
end
!
++++++++++++++++++++++++++++
R9
##
!
en
!
conf t
!
ho CE-2
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 9.9.9.9 255.255.255.255
exit
!
int f0/0
ip add 150.0.0.9 255.255.255.0
no sh
exit
!
router eigrp 100
no auto
net 9.9.9.9 0.0.0.0
net 150.0.0.9 0.0.0.0
exit
!
end
!
++++++++++++++++++++++++++++
R2
##
!
en
!
conf t
!
ho PE-1
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 2.2.2.2 255.255.255.255
exit
!
int f1/0
no sh
xconnect 8.8.8.8 1 encapsulation mpls
exit
exit
!
int f1/1
ip add 23.23.23.2 255.255.255.0
mpls ip
no sh
exit
!
mpls label protocol ldp
!
mpls ldp router-id lo0
!
router ospf 1
net 2.2.2.2 0.0.0.0 area 0
net 23.23.23.2 0.0.0.0 area 0
exit
!
router bgp 100
no auto
no sync
net 2.2.2.2 mask 255.255.255.255
nei 4.4.4.4 remote 100
nei 4.4.4.4 update lo0
nei 4.4.4.4 send-label
exit
!
end
!
++++++++++++++++++++++++++++
R3
##
!
en
!
conf t
!
ho P-1
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 3.3.3.3 255.255.255.255
exit
!
!
mpls label protocol ldp
!
mpls ldp router-id lo0
!
int f0/0
ip add 23.23.23.3 255.255.255.0
mpls ip
no sh
exit
!
int f0/1
ip add 34.34.34.3 255.255.255.0
mpls ip
no sh
exit
!
router ospf 1
net 0.0.0.0 255.255.255.255 area 0
exit
!
end
!
++++++++++++++++++++++++++++
R4
##
!
en
!
conf t
!
ho RR-1
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 4.4.4.4 255.255.255.255
exit
!
!
mpls label protocol ldp
!
mpls ldp router-id lo0
!
int f1/0
ip add 34.34.34.4 255.255.255.0
mpls ip
no sh
exit
!
int f1/1
ip add 45.45.45.4 255.255.255.0
mpls ip
no sh
exit
!
router ospf 2
net 4.4.4.4 0.0.0.0 area 0
net 45.45.45.4 0.0.0.0 area 0
exit
!
ip prefix-list R4Loopback0 seq 5 permit 4.4.4.4/32
!
route-map ospf2-into-ospf1 permit 10
match ip address prefix-list R4Loopback0
exit
!
router ospf 1
net 34.34.34.4 0.0.0.0 area 0
redistribute ospf 2 subnets match internal route-map ospf2-into-ospf1
exit
!
router bgp 100
no auto
no sync
nei 2.2.2.2 remote 100
nei 2.2.2.2 update lo0
nei 2.2.2.2 route-reflector-client
nei 2.2.2.2 next-hop-self all
nei 2.2.2.2 send-label
!
nei 6.6.6.6 remote 100
nei 6.6.6.6 update lo0
nei 6.6.6.6 route-reflector-client
nei 6.6.6.6 next-hop-self all
nei 6.6.6.6 send-label
exit
!
end
!
++++++++++++++++++++++++++++
R5
##
!
en
!
conf t
!
ho P-2
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 5.5.5.5 255.255.255.255
exit
!
!
mpls label protocol ldp
!
mpls ldp router-id lo0
!
int f0/0
ip add 45.45.45.5 255.255.255.0
mpls ip
no sh
exit
!
int f0/1
ip add 56.56.56.5 255.255.255.0
mpls ip
no sh
exit
!
router ospf 2
net 0.0.0.0 255.255.255.255 area 0
exit
!
end
!
++++++++++++++++++++++++++++
R6
##
!
en
!
conf t
!
ho RR-2
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 6.6.6.6 255.255.255.255
exit
!
!
mpls label protocol ldp
!
mpls ldp router-id lo0
!
int f1/1
ip add 56.56.56.6 255.255.255.0
mpls ip
no sh
exit
!
int f1/0
ip add 76.76.76.6 255.255.255.0
mpls ip
no sh
exit
!
!
router ospf 2
net 6.6.6.6 0.0.0.0 area 0
net 56.56.56.6 0.0.0.0 area 0
exit
!
ip prefix-list R6Loopback0 seq 5 permit 6.6.6.6/32
!
route-map ospf2-into-ospf3 permit 10
match ip address prefix-list R6Loopback0
exit
!
router ospf 3
net 76.76.76.6 0.0.0.0 area 0
redistribute ospf 2 subnets match internal route-map ospf2-into-ospf3
exit
!
router bgp 100
no auto
no sync
nei 4.4.4.4 remote 100
nei 4.4.4.4 update lo0
nei 4.4.4.4 route-reflector-client
nei 4.4.4.4 next-hop-self all
nei 4.4.4.4 send-label
!
nei 8.8.8.8 remote 100
nei 8.8.8.8 update lo0
nei 8.8.8.8 route-reflector-client
nei 8.8.8.8 next-hop-self all
nei 8.8.8.8 send-label
exit
!
end
!
++++++++++++++++++++++++++++
R7
##
!
en
!
conf t
!
ho P-3
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 7.7.7.7 255.255.255.255
exit
!
!
mpls label protocol ldp
!
mpls ldp router-id lo0
!
int f0/1
ip add 76.76.76.7 255.255.255.0
mpls ip
no sh
exit
!
int f0/0
ip add 87.87.87.7 255.255.255.0
mpls ip
no sh
exit
!
router ospf 3
net 0.0.0.0 255.255.255.255 area 0
exit
!
end
!
++++++++++++++++++++++++++++
R8
##
!
en
!
conf t
!
ho PE-2
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 8.8.8.8 255.255.255.255
exit
!
!
mpls label protocol ldp
!
mpls ldp router-id lo0
!
int f1/1
ip add 87.87.87.8 255.255.255.0
mpls ip
no sh
exit
!
int f1/0
no sh
xconnect 2.2.2.2 1 encapsulation mpls
exit
exit
!
router ospf 3
net 8.8.8.8 0.0.0.0 area 0
net 87.87.87.8 0.0.0.0 area 0
exit
!
router bgp 100
no auto
no sync
net 8.8.8.8 mask 255.255.255.255
nei 6.6.6.6 remote 100
nei 6.6.6.6 update lo0
nei 6.6.6.6 send-label
exit
!
end
!
+++++++++++++++++++++++++++++
Label Space & Verification
=================
PE-1#sh mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 Pop Label 3.3.3.3/32 0 Fa1/1 23.23.23.3
17 Pop Label 34.34.34.0/24 0 Fa1/1 23.23.23.3
18 17 4.4.4.4/32 0 Fa1/1 23.23.23.3
19 No Label l2ckt(1) 29118 Fa1/0 point2point
PE-1#sh ip route 8.8.8.8
Routing entry for 8.8.8.8/32
Known via "bgp 100", distance 200, metric 0, type internal
Last update from 4.4.4.4 00:39:45 ago
Routing Descriptor Blocks:
* 4.4.4.4, from 4.4.4.4, 00:39:45 ago
Route metric is 0, traffic share count is 1
AS Hops 0
MPLS label: 22
PE-1#sh ip cef 8.8.8.8
8.8.8.8/32
nexthop 23.23.23.3 FastEthernet1/1 label 17 22
PE-1#sh ip cef 8.8.8.8 detail
8.8.8.8/32, epoch 0, flags rib defined all labels
1 RR source [no flags]
recursive via 4.4.4.4 label 22
nexthop 23.23.23.3 FastEthernet1/1 label 17
PE-1#sh bgp ipv4 unicast labels
Network Next Hop In label/Out label
2.2.2.2/32 0.0.0.0 imp-null/nolabel
8.8.8.8/32 4.4.4.4 nolabel/22
P-1#sh mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 2.2.2.2/32 60043 Fa0/0 23.23.23.2
17 Pop tag 4.4.4.4/32 63026 Fa0/1 34.34.34.4
P-1#sh mpls forwarding-table labels 17 detail
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
17 Pop tag 4.4.4.4/32 111825 Fa0/1 34.34.34.4
MAC/Encaps=14/14, MRU=1504, Tag Stack{}
CA0C17A0001CC20B1B2000018847
No output feature configured
Per-packet load-sharing
RR-1#sh mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 Pop Label 3.3.3.3/32 0 Fa1/0 34.34.34.3
17 16 2.2.2.2/32 57654 Fa1/0 34.34.34.3
18 Pop Label 23.23.23.0/24 0 Fa1/0 34.34.34.3
19 Pop Label 5.5.5.5/32 0 Fa1/1 45.45.45.5
20 Pop Label 56.56.56.0/24 0 Fa1/1 45.45.45.5
21 17 6.6.6.6/32 0 Fa1/1 45.45.45.5
22 21 8.8.8.8/32 60902 Fa1/1 45.45.45.5
RR-1#sh mpls forwarding-table labels 22 detail
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
22 21 8.8.8.8/32 111502 Fa1/1 45.45.45.5
MAC/Encaps=14/22, MRU=1496, Label Stack{17 21}
C20D1B200000CA0C17A0001D8847 0001100000015000
No output feature configured
RR-1#sh bgp ipv4 unicast labels
Network Next Hop In label/Out label
2.2.2.2/32 2.2.2.2 17/imp-null
8.8.8.8/32 6.6.6.6 22/21
P-2#sh mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 4.4.4.4/32 63393 Fa0/0 45.45.45.4
17 Pop tag 6.6.6.6/32 63803 Fa0/1 56.56.56.6
P-2#sh mpls forwarding-table labels 16 detail
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 4.4.4.4/32 124541 Fa0/0 45.45.45.4
MAC/Encaps=14/14, MRU=1504, Tag Stack{}
CA0C17A0001DC20D1B2000008847
No output feature configured
Per-packet load-sharing
P-2#sh mpls forwarding-table labels 17 detail
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
17 Pop tag 6.6.6.6/32 125808 Fa0/1 56.56.56.6
MAC/Encaps=14/14, MRU=1504, Tag Stack{}
CA0E04F4001DC20D1B2000018847
No output feature configured
Per-packet load-sharing
RR-2#sh mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 Pop Label 5.5.5.5/32 0 Fa1/1 56.56.56.5
17 16 4.4.4.4/32 0 Fa1/1 56.56.56.5
18 Pop Label 45.45.45.0/24 0 Fa1/1 56.56.56.5
19 Pop Label 7.7.7.7/32 0 Fa1/0 76.76.76.7
20 Pop Label 87.87.87.0/24 0 Fa1/0 76.76.76.7
21 17 8.8.8.8/32 60618 Fa1/0 76.76.76.7
22 17 2.2.2.2/32 62592 Fa1/1 56.56.56.5
RR-2#show mpls forwarding-table labels 21 detail
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
21 17 8.8.8.8/32 124158 Fa1/0 76.76.76.7
MAC/Encaps=14/18, MRU=1500, Label Stack{17}
C20F1B200001CA0E04F4001C8847 00011000
No output feature configured
RR-2#sh bgp ipv4 unicast labels
Network Next Hop In label/Out label
2.2.2.2/32 4.4.4.4 22/17
8.8.8.8/32 8.8.8.8 21/imp-null
P-3#sh mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 6.6.6.6/32 64910 Fa0/1 76.76.76.6
17 Pop tag 8.8.8.8/32 62636 Fa0/0 87.87.87.8
P-3#sh mpls forwarding-table labels 17 detail
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
17 Pop tag 8.8.8.8/32 134673 Fa0/0 87.87.87.8
MAC/Encaps=14/14, MRU=1504, Tag Stack{}
CA101C74001DC20F1B2000008847
No output feature configured
Per-packet load-sharing
PE-2#sh mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 Pop Label 7.7.7.7/32 0 Fa1/1 87.87.87.7
17 Pop Label 76.76.76.0/24 0 Fa1/1 87.87.87.7
18 16 6.6.6.6/32 0 Fa1/1 87.87.87.7
19 No Label l2ckt(1) 32252 Fa1/0 point2point
PE-1#traceroute 8.8.8.8 source loopback 0
Type escape sequence to abort.
Tracing the route to 8.8.8.8
VRF info: (vrf in name/id, vrf out name/id)
1 23.23.23.3 [MPLS: Labels 17/22 Exp 0] 1052 msec 1084 msec 440 msec
2 34.34.34.4 [MPLS: Label 22 Exp 0] 612 msec 1416 msec 1324 msec
3 45.45.45.5 [MPLS: Labels 17/21 Exp 0] 864 msec 972 msec 604 msec
4 56.56.56.6 [MPLS: Label 21 Exp 0] 644 msec 1376 msec 1292 msec
5 *
76.76.76.7 [MPLS: Label 17 Exp 0] 1136 msec 832 msec
6 87.87.87.8 1752 msec 1524 msec 1464 msec
CE-1#traceroute 9.9.9.9 source loopback 0
Type escape sequence to abort.
Tracing the route to 9.9.9.9
1 150.0.0.9 1480 msec 1100 msec 880 msec
P-1#sh ip route 8.8.8.8
% Network not in table
+++++++++++++++++++++++++++++++++++++++++
Stay Tuned For Next Part Of Series as we will dig the UMMT deeper :)
The idea behind UMMT is to move away from Traditional flat IP network design that Service Providers have been using for many years. Where they usually run Single IS-IS Level-2 Domain across entire core or Single OSPF Area as well. This design has couple of problems to begin with:
> Single Flat Network Domain Means any small change or instability will cause LSA Flooding or Re-Calculation.
> The network doesn't scale very well as it grows. Eventually large IGP domains means lots of burden on IGP which also further affects our Convergence Requirements from Today's Networks.
> You cannot break network into small pieces/domains as our LSPs requirements are End to End from PE's perspective in order to offer services such as L2/L3 MPLS VPNs & Traffic Engineering etc.
The Idea behind UMMT 3.0 Model is to break the network into multiple domains using different IGP Instances and yet not to compromise on our End To End LSP requirements. So the final picture looks some thing like following:
But as you can below it helps allot with minimizing the routes in every single domains which further helps with Network Convergence requirements of modern networks. Though Network Convergence is a big topic in itself and there are lot of recipes that goes with it in order to achieve the ultimate goal of 50 msec or less convergence time. But I'll focus more on Network Convergence is coming posts.
Although UMMT is a kind of model only, but Cisco is showcasing it's ASR & ME Product line being part of model as follows:
UMMT uses our old friend BGP for creating End to End LSP (Inter Domain) on top of existing LDP based LSPs (Intra Domain). For this they developed something called BGP Labeled Unicast documented under rfc 3107 which to my surprise was written in 2001 :)
With That being said. Here is a Quick Lab Demonstrating how everything fits together and how overall label space will work:
Complete Configuration:
================
R1
##
!
en
!
conf t
!
ho CE-1
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 1.1.1.1 255.255.255.255
exit
!
int f0/0
ip add 150.0.0.1 255.255.255.0
no sh
exit
!
router eigrp 100
no auto
net 1.1.1.1 0.0.0.0
net 150.0.0.1 0.0.0.0
exit
!
end
!
++++++++++++++++++++++++++++
R9
##
!
en
!
conf t
!
ho CE-2
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 9.9.9.9 255.255.255.255
exit
!
int f0/0
ip add 150.0.0.9 255.255.255.0
no sh
exit
!
router eigrp 100
no auto
net 9.9.9.9 0.0.0.0
net 150.0.0.9 0.0.0.0
exit
!
end
!
++++++++++++++++++++++++++++
R2
##
!
en
!
conf t
!
ho PE-1
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 2.2.2.2 255.255.255.255
exit
!
int f1/0
no sh
xconnect 8.8.8.8 1 encapsulation mpls
exit
exit
!
int f1/1
ip add 23.23.23.2 255.255.255.0
mpls ip
no sh
exit
!
mpls label protocol ldp
!
mpls ldp router-id lo0
!
router ospf 1
net 2.2.2.2 0.0.0.0 area 0
net 23.23.23.2 0.0.0.0 area 0
exit
!
router bgp 100
no auto
no sync
net 2.2.2.2 mask 255.255.255.255
nei 4.4.4.4 remote 100
nei 4.4.4.4 update lo0
nei 4.4.4.4 send-label
exit
!
end
!
++++++++++++++++++++++++++++
R3
##
!
en
!
conf t
!
ho P-1
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 3.3.3.3 255.255.255.255
exit
!
!
mpls label protocol ldp
!
mpls ldp router-id lo0
!
int f0/0
ip add 23.23.23.3 255.255.255.0
mpls ip
no sh
exit
!
int f0/1
ip add 34.34.34.3 255.255.255.0
mpls ip
no sh
exit
!
router ospf 1
net 0.0.0.0 255.255.255.255 area 0
exit
!
end
!
++++++++++++++++++++++++++++
R4
##
!
en
!
conf t
!
ho RR-1
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 4.4.4.4 255.255.255.255
exit
!
!
mpls label protocol ldp
!
mpls ldp router-id lo0
!
int f1/0
ip add 34.34.34.4 255.255.255.0
mpls ip
no sh
exit
!
int f1/1
ip add 45.45.45.4 255.255.255.0
mpls ip
no sh
exit
!
router ospf 2
net 4.4.4.4 0.0.0.0 area 0
net 45.45.45.4 0.0.0.0 area 0
exit
!
ip prefix-list R4Loopback0 seq 5 permit 4.4.4.4/32
!
route-map ospf2-into-ospf1 permit 10
match ip address prefix-list R4Loopback0
exit
!
router ospf 1
net 34.34.34.4 0.0.0.0 area 0
redistribute ospf 2 subnets match internal route-map ospf2-into-ospf1
exit
!
router bgp 100
no auto
no sync
nei 2.2.2.2 remote 100
nei 2.2.2.2 update lo0
nei 2.2.2.2 route-reflector-client
nei 2.2.2.2 next-hop-self all
nei 2.2.2.2 send-label
!
nei 6.6.6.6 remote 100
nei 6.6.6.6 update lo0
nei 6.6.6.6 route-reflector-client
nei 6.6.6.6 next-hop-self all
nei 6.6.6.6 send-label
exit
!
end
!
++++++++++++++++++++++++++++
R5
##
!
en
!
conf t
!
ho P-2
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 5.5.5.5 255.255.255.255
exit
!
!
mpls label protocol ldp
!
mpls ldp router-id lo0
!
int f0/0
ip add 45.45.45.5 255.255.255.0
mpls ip
no sh
exit
!
int f0/1
ip add 56.56.56.5 255.255.255.0
mpls ip
no sh
exit
!
router ospf 2
net 0.0.0.0 255.255.255.255 area 0
exit
!
end
!
++++++++++++++++++++++++++++
R6
##
!
en
!
conf t
!
ho RR-2
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 6.6.6.6 255.255.255.255
exit
!
!
mpls label protocol ldp
!
mpls ldp router-id lo0
!
int f1/1
ip add 56.56.56.6 255.255.255.0
mpls ip
no sh
exit
!
int f1/0
ip add 76.76.76.6 255.255.255.0
mpls ip
no sh
exit
!
!
router ospf 2
net 6.6.6.6 0.0.0.0 area 0
net 56.56.56.6 0.0.0.0 area 0
exit
!
ip prefix-list R6Loopback0 seq 5 permit 6.6.6.6/32
!
route-map ospf2-into-ospf3 permit 10
match ip address prefix-list R6Loopback0
exit
!
router ospf 3
net 76.76.76.6 0.0.0.0 area 0
redistribute ospf 2 subnets match internal route-map ospf2-into-ospf3
exit
!
router bgp 100
no auto
no sync
nei 4.4.4.4 remote 100
nei 4.4.4.4 update lo0
nei 4.4.4.4 route-reflector-client
nei 4.4.4.4 next-hop-self all
nei 4.4.4.4 send-label
!
nei 8.8.8.8 remote 100
nei 8.8.8.8 update lo0
nei 8.8.8.8 route-reflector-client
nei 8.8.8.8 next-hop-self all
nei 8.8.8.8 send-label
exit
!
end
!
++++++++++++++++++++++++++++
R7
##
!
en
!
conf t
!
ho P-3
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 7.7.7.7 255.255.255.255
exit
!
!
mpls label protocol ldp
!
mpls ldp router-id lo0
!
int f0/1
ip add 76.76.76.7 255.255.255.0
mpls ip
no sh
exit
!
int f0/0
ip add 87.87.87.7 255.255.255.0
mpls ip
no sh
exit
!
router ospf 3
net 0.0.0.0 255.255.255.255 area 0
exit
!
end
!
++++++++++++++++++++++++++++
R8
##
!
en
!
conf t
!
ho PE-2
!
no ip do lo
!
no cdp run
!
line con 0
no exec-time
logging syn
exit
!
int lo0
ip add 8.8.8.8 255.255.255.255
exit
!
!
mpls label protocol ldp
!
mpls ldp router-id lo0
!
int f1/1
ip add 87.87.87.8 255.255.255.0
mpls ip
no sh
exit
!
int f1/0
no sh
xconnect 2.2.2.2 1 encapsulation mpls
exit
exit
!
router ospf 3
net 8.8.8.8 0.0.0.0 area 0
net 87.87.87.8 0.0.0.0 area 0
exit
!
router bgp 100
no auto
no sync
net 8.8.8.8 mask 255.255.255.255
nei 6.6.6.6 remote 100
nei 6.6.6.6 update lo0
nei 6.6.6.6 send-label
exit
!
end
!
+++++++++++++++++++++++++++++
Label Space & Verification
=================
PE-1#sh mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 Pop Label 3.3.3.3/32 0 Fa1/1 23.23.23.3
17 Pop Label 34.34.34.0/24 0 Fa1/1 23.23.23.3
18 17 4.4.4.4/32 0 Fa1/1 23.23.23.3
19 No Label l2ckt(1) 29118 Fa1/0 point2point
PE-1#sh ip route 8.8.8.8
Routing entry for 8.8.8.8/32
Known via "bgp 100", distance 200, metric 0, type internal
Last update from 4.4.4.4 00:39:45 ago
Routing Descriptor Blocks:
* 4.4.4.4, from 4.4.4.4, 00:39:45 ago
Route metric is 0, traffic share count is 1
AS Hops 0
MPLS label: 22
PE-1#sh ip cef 8.8.8.8
8.8.8.8/32
nexthop 23.23.23.3 FastEthernet1/1 label 17 22
PE-1#sh ip cef 8.8.8.8 detail
8.8.8.8/32, epoch 0, flags rib defined all labels
1 RR source [no flags]
recursive via 4.4.4.4 label 22
nexthop 23.23.23.3 FastEthernet1/1 label 17
PE-1#sh bgp ipv4 unicast labels
Network Next Hop In label/Out label
2.2.2.2/32 0.0.0.0 imp-null/nolabel
8.8.8.8/32 4.4.4.4 nolabel/22
P-1#sh mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 2.2.2.2/32 60043 Fa0/0 23.23.23.2
17 Pop tag 4.4.4.4/32 63026 Fa0/1 34.34.34.4
P-1#sh mpls forwarding-table labels 17 detail
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
17 Pop tag 4.4.4.4/32 111825 Fa0/1 34.34.34.4
MAC/Encaps=14/14, MRU=1504, Tag Stack{}
CA0C17A0001CC20B1B2000018847
No output feature configured
Per-packet load-sharing
RR-1#sh mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 Pop Label 3.3.3.3/32 0 Fa1/0 34.34.34.3
17 16 2.2.2.2/32 57654 Fa1/0 34.34.34.3
18 Pop Label 23.23.23.0/24 0 Fa1/0 34.34.34.3
19 Pop Label 5.5.5.5/32 0 Fa1/1 45.45.45.5
20 Pop Label 56.56.56.0/24 0 Fa1/1 45.45.45.5
21 17 6.6.6.6/32 0 Fa1/1 45.45.45.5
22 21 8.8.8.8/32 60902 Fa1/1 45.45.45.5
RR-1#sh mpls forwarding-table labels 22 detail
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
22 21 8.8.8.8/32 111502 Fa1/1 45.45.45.5
MAC/Encaps=14/22, MRU=1496, Label Stack{17 21}
C20D1B200000CA0C17A0001D8847 0001100000015000
No output feature configured
RR-1#sh bgp ipv4 unicast labels
Network Next Hop In label/Out label
2.2.2.2/32 2.2.2.2 17/imp-null
8.8.8.8/32 6.6.6.6 22/21
P-2#sh mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 4.4.4.4/32 63393 Fa0/0 45.45.45.4
17 Pop tag 6.6.6.6/32 63803 Fa0/1 56.56.56.6
P-2#sh mpls forwarding-table labels 16 detail
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 4.4.4.4/32 124541 Fa0/0 45.45.45.4
MAC/Encaps=14/14, MRU=1504, Tag Stack{}
CA0C17A0001DC20D1B2000008847
No output feature configured
Per-packet load-sharing
P-2#sh mpls forwarding-table labels 17 detail
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
17 Pop tag 6.6.6.6/32 125808 Fa0/1 56.56.56.6
MAC/Encaps=14/14, MRU=1504, Tag Stack{}
CA0E04F4001DC20D1B2000018847
No output feature configured
Per-packet load-sharing
RR-2#sh mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 Pop Label 5.5.5.5/32 0 Fa1/1 56.56.56.5
17 16 4.4.4.4/32 0 Fa1/1 56.56.56.5
18 Pop Label 45.45.45.0/24 0 Fa1/1 56.56.56.5
19 Pop Label 7.7.7.7/32 0 Fa1/0 76.76.76.7
20 Pop Label 87.87.87.0/24 0 Fa1/0 76.76.76.7
21 17 8.8.8.8/32 60618 Fa1/0 76.76.76.7
22 17 2.2.2.2/32 62592 Fa1/1 56.56.56.5
RR-2#show mpls forwarding-table labels 21 detail
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
21 17 8.8.8.8/32 124158 Fa1/0 76.76.76.7
MAC/Encaps=14/18, MRU=1500, Label Stack{17}
C20F1B200001CA0E04F4001C8847 00011000
No output feature configured
RR-2#sh bgp ipv4 unicast labels
Network Next Hop In label/Out label
2.2.2.2/32 4.4.4.4 22/17
8.8.8.8/32 8.8.8.8 21/imp-null
P-3#sh mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 6.6.6.6/32 64910 Fa0/1 76.76.76.6
17 Pop tag 8.8.8.8/32 62636 Fa0/0 87.87.87.8
P-3#sh mpls forwarding-table labels 17 detail
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
17 Pop tag 8.8.8.8/32 134673 Fa0/0 87.87.87.8
MAC/Encaps=14/14, MRU=1504, Tag Stack{}
CA101C74001DC20F1B2000008847
No output feature configured
Per-packet load-sharing
PE-2#sh mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
16 Pop Label 7.7.7.7/32 0 Fa1/1 87.87.87.7
17 Pop Label 76.76.76.0/24 0 Fa1/1 87.87.87.7
18 16 6.6.6.6/32 0 Fa1/1 87.87.87.7
19 No Label l2ckt(1) 32252 Fa1/0 point2point
PE-1#traceroute 8.8.8.8 source loopback 0
Type escape sequence to abort.
Tracing the route to 8.8.8.8
VRF info: (vrf in name/id, vrf out name/id)
1 23.23.23.3 [MPLS: Labels 17/22 Exp 0] 1052 msec 1084 msec 440 msec
2 34.34.34.4 [MPLS: Label 22 Exp 0] 612 msec 1416 msec 1324 msec
3 45.45.45.5 [MPLS: Labels 17/21 Exp 0] 864 msec 972 msec 604 msec
4 56.56.56.6 [MPLS: Label 21 Exp 0] 644 msec 1376 msec 1292 msec
5 *
76.76.76.7 [MPLS: Label 17 Exp 0] 1136 msec 832 msec
6 87.87.87.8 1752 msec 1524 msec 1464 msec
CE-1#traceroute 9.9.9.9 source loopback 0
Type escape sequence to abort.
Tracing the route to 9.9.9.9
1 150.0.0.9 1480 msec 1100 msec 880 msec
P-1#sh ip route 8.8.8.8
% Network not in table
+++++++++++++++++++++++++++++++++++++++++
Stay Tuned For Next Part Of Series as we will dig the UMMT deeper :)
HTH...
Deepak Arora
Evil CCIE
Great example! Thank you!
ReplyDeleteyeah, indeed great example Deepak.
ReplyDeleteWhich router you practised this with?
Can i try same topology on GNS3 with 7200 Router?
Thnaks
Chinar
As long as your router supports "next-hop-self all" under BGP, you should be fine.
ReplyDeleteGood job, thanks!
ReplyDeleteVery good example. Is it mandatory to do the ¨send-label¨from the PE ? Can´t we just generate de BGP label only from the RR ? And by doing this just redistribute the OSPF subnets (only loopbacks) into BGP to the other RR BGP neighbor with the send-label ?
ReplyDelete