1. 1. MPLS-TE/LSP & OSPF – Junos – Cisco – Cisco - Junos
J1-0.1 R1-0.2
R2-0.3
J2-0.4
EM0 F1/0
F1/1 F1/1
F1/0
EM0
20.0.0.0/30
20.0.0.4/30
20.0.0.8/30
Minimum configs – get OSPF Ready for MPLS-TE
J1 – Loop 10.0.0.1
R1 – Loop 10.0.0.2
R2 – Loop 10.0.0.3
J2 – Loop 10.0.0.4
R1 / R2 - Cisco
!
mpls traffic-eng tunnels
!
router ospf 99
mpls traffic-eng router-id Loopback0
mpls traffic-eng area 0
router-id 10.0.0.X
log-adjacency-changes
redistribute connected subnets
network 0.0.0.0 255.255.255.255 area 0
LSP J1-J2
Destination 10.0.0.4
LSP J2-J1
Destination 10.0.0.1
MPLS-TE
Make sure:
OSPF Works
“mpls te” statement included
J1 kjteoh> show ospf neighbor
Address Interface State ID Pri Dead
20.0.0.2 em0.0 Full 10.0.0.2 1 38
R1#show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
10.0.0.4 128 FULL/DR 00:00:39 30.0.0.2 FastEthernet2/1
10.0.0.3 1 FULL/DR 00:00:29 20.0.0.6 FastEthernet1/1
10.0.0.1 128 FULL/DR 00:00:37 20.0.0.1 FastEthernet1/0
J1 – Junos (J2 has em0 & em1)
kjteoh> show configuration interfaces
em0 {
unit 0 {
family inet {
address 20.0.0.1/30;
}
family mpls;
}
}
lo0 {
description loopback;
unit 0 {
family inet {
address 10.0.0.1/32;
}
}
}
kjteoh> show configuration protocols ospf
traffic-engineering {
shortcuts lsp-metric-into-summary;
}
area 0.0.0.0 {
interface all;
}
F2/1
EM1
30.0.0.0/30
2. 2. MPLS-TE/LSP & OSPF – Junos – LSP J1-J2 – PRIMARY Route
J1-0.1 R1-0.2
R2-0.3
J2-0.4
EM0 F1/0
F1/1 F1/1
F1/0
EM0
20.0.0.0/30
20.0.0.4/30
20.0.0.8/30
R1 / R2 - Cisco
R1#show running-config interface fa 1/0
interface FastEthernet1/0
description R1-J1
ip address 20.0.0.2 255.255.255.252
mpls traffic-eng tunnels
LSP J1-J2
Destination 10.0.0.4
LSP J2-J1
Destination 10.0.0.1
MPLS-TE
kjteoh> show mpls lsp name J1-J2 extensive
10.0.0.4
From: 10.0.0.1, State: Up, ActiveRoute: 0, LSPname: J1-J2
ActivePath: J1-R1-R2-J2 (primary)
LSPtype: Static Configured
LoadBalance: Random
Encoding type: Packet, Switching type: Packet, GPID: IPv4
*Primary J1-R1-R2-J2 State: Up
Priorities: 7 0
SmartOptimizeTimer: 180
Computed ERO (S [L] denotes strict [loose] hops): (CSPF metric: 3)
20.0.0.2 S 20.0.0.6 S 20.0.0.10 S
Received RRO (ProtectionFlag 1=Available 2=InUse 4=B/W 8=Node 10=SoftPreempt 20=Node-ID):
20.0.0.5 20.0.0.9 20.0.0.10
22 Mar 3 09:01:45.304 Selected as active path: due to 'primary'
21 Mar 3 09:00:44.940 Record Route: 20.0.0.5 20.0.0.9 20.0.0.10
20 Mar 3 09:00:44.940 Up
19 Mar 3 09:00:44.719 Originate Call
18 Mar 3 09:00:44.719 CSPF: computation result accepted 20.0.0.2 20.0.0.6 20.0.0.10
17 Mar 3 09:00:14.747 CSPF failed: no route toward 20.0.0.6
J1 – Junos
kjteoh> show configuration protocols
rsvp {
interface all {
hello-interval 0;
}
}
mpls {
label-switched-path J1-J2 {
to 10.0.0.4;
primary J1-R1-R2-J2;
secondary auto-dynamic;
}
path J1-R1-R2-J2 {
20.0.0.2;
20.0.0.6;
20.0.0.10;
}
path auto-dynamic;
interface all;
}
F2/1
EM1
30.0.0.0/30
Your configured LSP name
Cisco: Ensure that this is configured on
ALL interface that will participate in TE
Will show when LSP can't come up or is in
the process of being configured … ie, J2 not
set up to received LSP or Cisco interface not
configured (ospf failed stuck in EXCH mode
etc)
We will configure LSP J1-J2 destination 10.0.0.4/32 (loopback for J2).
We will specify and “explicit route” to take: it is primary and called
J1-R1-R2-J2. The “next-hop” is specified in the explicit-route. Other
Junos options include “Strict/Loose”. Strict means, directly adjacent.
You can config LSP w/o “backup”/secondary route.
CSPF understood
that these routes
were “STRICT”
3. 3. MPLS-TE/LSP & OSPF – What does Cisco TELL US?
J1-0.1 R1-0.2
R2-0.3
J2-0.4
EM0 F1/0
F1/1 F1/1
F1/0
EM0
20.0.0.0/30
20.0.0.4/30
20.0.0.8/30
LSP J1-J2
Destination 10.0.0.4
LSP J2-J1
Destination 10.0.0.1
MPLS-TE
F2/1
EM1
30.0.0.0/30
The Cisco portion is also quite intelligent and it will tell us what LSP are
transiting the router. This is because it is ALSO involved in passing the
signals for the configured LSP on Junos.
R1#show mpls traffic-eng tunnels
P2P TUNNELS/LSPs:
LSP Tunnel J1-J2 is signalled, connection is up
InLabel : FastEthernet1/0, 17
Prev Hop : 20.0.0.1
OutLabel : FastEthernet1/1, 19
Next Hop : 20.0.0.6
RSVP Signalling Info:
Src 10.0.0.1, Dst 10.0.0.4, Tun_Id 60515, Tun_Instance 4
RSVP Path Info:
My Address: 20.0.0.5
Explicit Route: 20.0.0.6 20.0.0.10
Record Route: 20.0.0.1
Tspec: ave rate=0 kbits, burst=0 bytes, peak rate=17179869 kbits
RSVP Resv Info:
Record Route: 20.0.0.9 20.0.0.10
Fspec: ave rate=0 kbits, burst=0 bytes, peak rate=17179869 kbits
LSP Tunnel J2-J1 is signalled, connection is up
InLabel : FastEthernet1/1, 19
Prev Hop : 20.0.0.6
OutLabel : FastEthernet1/0, implicit-null
Next Hop : 20.0.0.1
RSVP Signalling Info:
Src 10.0.0.4, Dst 10.0.0.1, Tun_Id 3503, Tun_Instance 3
RSVP Path Info:
My Address: 20.0.0.2
Explicit Route: 20.0.0.1
Record Route: 20.0.0.6 20.0.0.10
Tspec: ave rate=0 kbits, burst=0 bytes, peak rate=17179869 kbits
RSVP Resv Info:
Record Route: 20.0.0.1
Fspec: ave rate=0 kbits, burst=0 bytes, peak rate=17179869 kbits
LSP configured on J1 → J2
Note:
Receive: FA1/0
Out on : FA1/1
Tells you which direction the LSP is
heading. Additional info to help you track
it down is Src IP and Dst IP
Same applies to LSP J2-J1 which is
coming from J2. PS: I configured on both
ends. The same will be observed on
Cisco R2
On Junos do monitor label-switch-path
In the next slide we will create some failure on Cisco R2 and see
how the LSP perform .. switch path. We have NOT configured fast-
reroute OR adaptive. So it will take same time to fail. Just a note.
If your LSP flaps a lot.. the “instance” will
accumulate/increment and the “Tun_Id”
will constantly change. This is a sign that
your LSP path is not so stable.
Note: Sometimes a LSR transit
router like R1 can tell you ALOT...
more then the router (J1 or J2)
which is originating the LSP Tun.
Note: This document is written
over the course of a few days,
so the Tun_Id & Tun_Instance
won't “add up”.
Also do show mpls forwarding-
table to see Labels transiting.
4. 4. MPLS-TE/LSP & OSPF – Failure on R2@FA1/0
J1-0.1 R1-0.2
R2-0.3
J2-0.4
EM0 F1/0
F1/1 F1/1
F1/0
EM0
20.0.0.0/30
20.0.0.4/30
20.0.0.8/30
LSP J1-J2
Destination 10.0.0.4
LSP J2-J1
Destination 10.0.0.1
MPLS-TE
F2/1
EM1
30.0.0.0/30
Creating a failure on R2 @ FA1/0. This will cause LSP J1-J2 & J2-J1 to
switch path dynamically. We had configured a “secondary” path called
“auto-dynamic” on both Junos J1 & J2. See slide 2.
J1 Junos
kjteoh> show mpls lsp
Ingress LSP: 1 sessions
To From State Rt P ActivePath LSPname
10.0.0.4 10.0.0.1 Up 0 auto-dynamic J1-J2
Total 1 displayed, Up 1, Down 0
kjteoh> show mpls lsp name J1-J2 extensive
Ingress LSP: 1 sessions
10.0.0.4
From: 10.0.0.1, State: Up, ActiveRoute: 0, LSPname: J1-J2
ActivePath: auto-dynamic (secondary)
LSPtype: Static Configured
LoadBalance: Random
Encoding type: Packet, Switching type: Packet, GPID: IPv4
Primary J1-R1-R2-J2 State: Dn
Priorities: 7 0
SmartOptimizeTimer: 180
Will be enqueued for recomputation in 6 second(s).
13 Mar 3 19:00:39.211 CSPF failed: no route toward 20.0.0.10[10 times]
12 Mar 3 18:56:44.480 Clear Call: CSPF computation failed
11 Mar 3 18:56:44.480 CSPF: link down/deleted:
20.0.0.9(10.0.0.3:0)(10.0.0.3)->0.0.0.0(20.0.0.10:0)(20.0.0.10)
10 Mar 3 18:56:37.749 Deselected as active
*Secondary auto-dynamic State: Up
Priorities: 7 0
SmartOptimizeTimer: 180
Computed ERO (S [L] denotes strict [loose] hops): (CSPF metric: 2)
20.0.0.2 S 30.0.0.2 S
Received RRO (ProtectionFlag 1=Available 2=InUse 4=B/W
8=Node 10=SoftPreempt 20=Node-ID):
30.0.0.1 30.0.0.2
R2#show running-config interface fa 1/0
interface FastEthernet1/0
description R2-J2
ip address 20.0.0.9 255.255.255.252
shutdown
mpls traffic-eng tunnels
end
Create Outage Here
Path has change from J1-R1-R2-J2
New Active Path .. auto-dynamic
Primary has gone DOWN
Why it went
DOWN.. happen
on 10.0.0.3
R1#show mpls traffic-eng tunnels
LSP Tunnel J1-J2 is signalled, connection is up
InLabel : FastEthernet1/0, 16
Prev Hop : 20.0.0.1
OutLabel : FastEthernet2/1, implicit-null
Next Hop : 30.0.0.2
RSVP Signalling Info:
Src 10.0.0.1, Dst 10.0.0.4, Tun_Id 63034, Tun_Instance 2
RSVP Path Info:
My Address: 30.0.0.1
Explicit Route: 30.0.0.2
Record Route: 20.0.0.1
New Path/Next-Hop is learned
New Tun_Id & Instance
… note the increment
New ERO with lower CSPF metric. Its actually shorter then
the previous. See slide 2 where the metric CSPF was 3.
Note: R1 is telling you HOW LSPs are transiting.. If you type
show mpls traffic-eng tunnels on R2 now, you will see nothing!
5. 5. MPLS-TE/LSP & OSPF – Outage still ongoing on R2@FA1/0
J1-0.1 R1-0.2
R2-0.3
J2-0.4
EM0 F1/0
F1/1 F1/1
F1/0
EM0
20.0.0.0/30
20.0.0.4/30
20.0.0.8/30
LSP J1-J2
Destination 10.0.0.4
LSP J2-J1
Destination 10.0.0.1
MPLS-TE
F2/1
EM1
30.0.0.0/30
Lets look at the “routing”. Nothing really unusual.
J1 Junos
kjteoh> show route 10.0.0.4
inet.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.0.0.4/32 *[OSPF/10] 00:13:57, metric 2
> to 20.0.0.2 via em0.0
inet.3: 2 destinations, 3 routes (2 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.0.0.4/32 *[RSVP/7/1] 00:13:14, metric 2
> to 20.0.0.2 via em0.0, label-switched-path J1-J2
[OSPF/10] 00:02:54, metric 2
> to 20.0.0.2 via em0.0, label-switched-path J1-J2
Distance of “7” is best!
RSVP is in route table inet.3. Basically
whatever routes learned from MPLS will
be in this table. We will config MPLS-
LDP Tunnels in the LSP and have a look
later. If LSP goes now, regular routing
via OSPF will take over...??
Outage Ongoing Here
J1 Junos
kjteoh> traceroute mpls rsvp J1-J2
ttl Label Protocol Address Previous Hop Probe Status
1 16 RSVP-TE 20.0.0.2 (null) Success
2 3 Unknown 30.0.0.2 20.0.0.2 Egress
AFTER Normalizing... to J1-R1-R2-J2 (no shut R2@FA1/0)
kjteoh> traceroute mpls rsvp J1-J2
ttl Label Protocol Address Previous Hop Probe Status
1 17 RSVP-TE 20.0.0.2 (null) Success
2 16 Unknown 20.0.0.6 20.0.0.2 Success
3 3 Unknown 20.0.0.10 20.0.0.6 Egress
BUT regular traceroute … will use OSPF/Regular routing ?
(I think – should be)
kjteoh> traceroute 10.0.0.4
traceroute to 10.0.0.4 (10.0.0.4), 30 hops max, 40 byte packets
1 20.0.0.2 (20.0.0.2) 5.091 ms 8.930 ms 8.487 ms
2 10.0.0.4 (10.0.0.4) 18.773 ms 18.558 ms 18.909 ms
Study the setup now. The Big Question
is … how come traceroute not
displaying any labels? Should it display
labels?
Is this behavior expected or not?
Because there are NO labels, are the
routers using regular OSPF to route
traffic?
We are taking the
“long” route now...
Important to start
asking yourself Q
about routing now...
does LSP route /
FORWARD traffic?
6. 6. MPLS-TE/LSP & OSPF – Normalization and LDP Tunnels on J1 and J2
J1-0.1 R1-0.2
R2-0.3
J2-0.4
EM0 F1/0
F1/1 F1/1
F1/0
EM0
20.0.0.0/30
20.0.0.4/30
20.0.0.8/30
LSP J1-J2
Destination 10.0.0.4
LSP J2-J1
Destination 10.0.0.1
MPLS-TE
F2/1
EM1
30.0.0.0/30
Configure protocols ldp & include ldp-tunneling in J1 and J2
J1 Junos
mpls {
label-switched-path J1-J2 {
to 10.0.0.4;
ldp-tunneling;
primary J1-R1-R2-J2;
secondary auto-dynamic;
}
...
ldp {
interface all;
}
A new route via protocol LDP is now
present. But please understand that it is
stuffed into LSP J1-J2
J1 Junos
kjteoh> show route 10.0.0.4
inet.0: 10 destinations, 10 routes (10 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.0.0.4/32 *[OSPF/10] 00:05:53, metric 2
> to 20.0.0.2 via em0.0
inet.3: 2 destinations, 4 routes (2 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.0.0.4/32 *[RSVP/7/1] 00:28:19, metric 2
> to 20.0.0.2 via em0.0, label-switched-path J1-J2
[LDP/9] 00:05:52, metric 1
> to 20.0.0.2 via em0.0, label-switched-path J1-J2
[OSPF/10] 00:05:53, metric 2
> to 20.0.0.2 via em0.0, label-switched-path J1-J2
kjteoh> show ldp neighbor 10.0.0.4 detail
Address Interface Label space ID Hold time
10.0.0.4 lo0.0 10.0.0.4:0 43
Transport address: 10.0.0.4, Configuration sequence: 1
Note:
Not much difference. LDP-
Tunnel configured in LSP J1-J2
will take the same RSVP route.
Regular traceroute appears to
use normal routing protocols.
Only real advantage is that we
can now configure MPLS-LDP
Type services on J1 & J2.
Added – same
applies on J2
kjteoh> traceroute mpls ldp 10.0.0.4
Probe options: ttl 64, retries 3, wait 10, paths 16, exp 7, fanout 16
ttl Label Protocol Address Previous Hop Probe Status
1 17 LDP 20.0.0.2 (null) Success
2 16 Unknown 20.0.0.6 20.0.0.2 Success
3 3 Unknown 20.0.0.10 20.0.0.6 Egress
kjteoh> traceroute 10.0.0.4
traceroute to 10.0.0.4 (10.0.0.4), 30 hops max, 40 byte packets
1 20.0.0.2 (20.0.0.2) 14.765 ms 3.491 ms 9.099 ms
2 10.0.0.4 (10.0.0.4) 19.103 ms 18.000 ms 18.371 ms
… note: no labels! What do we need to do to make labels appear?
LDP Neighbor J2
Short Answer:
1. Go to every Cisco box and turn “ mpls ip”
2. Run traceroute from J1 to ALL loop back, observe for labels …
3. Create outage on R2@FA1/1.
4. Re-perform step 2 and observe again! ANSWER!
7. 7. MPLS-TE/LSP & OSPF – Normalization and turn on mpls ip on every cisco box … create outage on R2@FA1/1
J1-0.1 R1-0.2
R2-0.3
J2-0.4
EM0 F1/0
F1/1 F1/1
F1/0
EM0
20.0.0.0/30
20.0.0.4/30
20.0.0.8/30
LSP J1-J2
Destination 10.0.0.4
LSP J2-J1
Destination 10.0.0.1
MPLS-TE
F2/1
EM1
30.0.0.0/30
Configure mpls ip & create outage on Cisco R2@FA1/1
Cisco R1 – sampled mpls ip
interface FastEthernet1/0
description R1-J1
ip address 20.0.0.2 255.255.255.252
mpls ip ← Add this on every interface R1 & R2
mpls traffic-eng tunnels
J1 Junos
kjteoh> show route 10.0.0.3
10.0.0.3/32 *[OSPF/10] 00:16:35, metric 4
> to 20.0.0.2 via em0.0
inet.3: 6 destinations, 10 routes (6 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
10.0.0.3/32 *[LDP/9] 00:06:48, metric 1
> to 20.0.0.2 via em0.0, label-switched-path J1-J2
[OSPF/10] 00:15:52, metric 4
> to 20.0.0.2 via em0.0, label-switched-path J1-J2
kjteoh> traceroute 10.0.0.3
traceroute to 10.0.0.3 (10.0.0.3), 30 hops max, 40 byte packets
1 20.0.0.2 (20.0.0.2) 4.163 ms 8.977 ms 10.049 ms
2 30.0.0.2 (30.0.0.2) 20.058 ms 19.680 ms 19.847 ms
MPLS Label=299872 CoS=0 TTL=1 S=1
3 20.0.0.9 (20.0.0.9) 30.483 ms 30.329 ms 29.809 ms
Note:
In this scenario … mpls labels
begin to appear. Why?
Outage Here
Perform traceroute from J1 to all
loopbacks on observe for labels...
Create outage on R2@FA1/1 and
re-perform traceroutes again!
J2 Junos
kjteoh> show route forwarding-table label 299872 extensive
Routing table: default.mpls [Index 0]
MPLS:
Destination: 299872
Route type: user
Route reference: 0 Route interface-index: 0
Flags: sent to PFE, rt nh decoupled
Nexthop: 20.0.0.9
Next-hop type: Pop Index: 560 Reference: 2
Next-hop interface: em0.0
Destination: 299872(S=0)
Route type: user
Route reference: 0 Route interface-index: 0
Flags: sent to PFE, rt nh decoupled
Nexthop: 20.0.0.9
Next-hop type: Pop Index: 561 Reference: 2
Next-hop interface: em0.0
I think this means
“Strict” / direct adj
Final Note: It is MPLS-IP/LDP that supplies the labels. In this
small network, most of the time LSR will POP labels... this is why
we need to create outage on R2@FA1/1 and create some physical
“distance” between J1 and R2
8. 8. MPLS-TE/LSP & OSPF – Summary
J1-0.1 R1-0.2
R2-0.3
J2-0.4
EM0 F1/0
F1/1 F1/1
F1/0
EM0
20.0.0.0/30
20.0.0.4/30
20.0.0.8/30
LSP J1-J2
Destination 10.0.0.4
LSP J2-J1
Destination 10.0.0.1
MPLS-TE
F2/1
EM1
30.0.0.0/30
1. MPLS LSP between J1 – J2 with secondary path “auto-dynamic”
2. Observed how LSP/TE LSR record stuff. Eg. Slide 3
3. Create LDP-Tunnel between J1-J2
4. traceroute behavior .. label/no-label
5. Create MPLS-LDP participation on ALL Junos/Cisco boxes
6. traceroute behavior … when labels should appear and not appear
7. MPLS forwarding-table on Junos. Eg. Slide 7
kjteoh at gmail.com 3/3/2016
9. 9. MPLS-TE/LSP & OSPF – Junos Configs – Reference.
J1-0.1 R1-0.2
R2-0.3
J2-0.4
EM0 F1/0
F1/1 F1/1
F1/0
EM0
20.0.0.0/30
20.0.0.4/30
20.0.0.8/30
LSP J1-J2
Destination 10.0.0.4
LSP J2-J1
Destination 10.0.0.1
MPLS-TE
F2/1
EM1
30.0.0.0/30
interfaces {
em0 {
description J2-R2;
unit 0 {
family inet {
address 20.0.0.10/30;
}
family mpls;
}
}
em1 {
description J2-R1;
unit 0 {
family inet {
address 30.0.0.2/30;
}
family mpls;
}
}
lo0 {
description loopback;
unit 0 {
family inet {
address 10.0.0.4/32;
}
}
}
}
routing-options {
router-id 10.0.0.4;
}
Cont...
protocols {
rsvp {
interface all {
hello-interval 0;
}
}
mpls {
label-switched-path J2-J1 {
to 10.0.0.1;
ldp-tunneling;
primary J2-R2-R1-J1;
secondary auto-dynamic;
}
path J2-R2-R1-J1 {
20.0.0.9;
20.0.0.5;
20.0.0.1;
}
path auto-dynamic;
interface all;
}
ospf {
traffic-engineering {
shortcuts lsp-metric-into-summary;
}
area 0.0.0.0 {
interface all;
}
}
ldp {
interface all;
}
}
Junos Configs on J2
Note: Many other options on Junos to experiment with. For
example, when LSP switch because of outage, by default it
does not reconfigure itself when the outage recovers. You can
use “timers” here to “optimize-aggressive” and the LSP will go
back to the primary configured PATH.
Fast-Reroute is another option. Usually DON'T configure a
primary & secondary path. Your LSP should ONLY have a
single auto-path generation from CSPF. When outage
happens, let CSPF do the work for you. Fast-Reroute is like
non-stop-forwarding. Even if the path appears to be GONE,
continue to forward traffic until something new comes up!
Another option is “adaptive” which is more graceful … I think.
Other options is a “stand-by” route which can be configured or
if you like to “control” bandwidth, least-filled is nice also. Ie, if
there are two path with the same “cost”, use the one with less
bandwidth. Small problem here … traffic spikes! Enjoy!
kjteoh