02-16-2024 02:24 PM - edited 02-16-2024 02:28 PM
Hi,
I am working with a topology made up by 4 routers: A, P,B and C.
Routers A, P and B have OSPF and MPLS running between them. Router C is directly connected to B, runs no routing protocols and has a default route that points towards B. Router B and C are utilising the network 172.16.0.0/31 for connectivity with .0 configured on B and .1 on C. Router P is a LSR and sits in between A and B, it has an OSPF neighborship with both A and B. The links between A,P and B are mpls enabled. The one between B and C is not.
I created a loopback interface on Router C and the goal is to ping this interface from router A.
Here's what I did:
-Configured a static on router B that points to the loopback on C. After configuring it, I can now ping the loopback interface I created on C from B just fine.
-Advertised the 172.16.0.0/31 network configured on the link between B and C in OSPF. Router P and A both learn the route and can ping both IPs in the network.
-Configured on A a static route that points towards the loopback of router C with 172.16.0.1 as next-hop. The ping fails.
However, if I configure on A a static route that utilizes as next-hop router C ospf id address then the ping will work.
While I fixed this, I cannot quite figure out the reason why it wouldn't work when the next hop is "172.16.0.1". Just like Router B OSPF router-id address, router A knows 172.16.0.1 through OSPF and I can ping it from A.
Router B can also reach the interface utilized as ping source on Router A.
So, both next-hop addresses seem equally valid to me but obviously, there's some knowledge I am lacking. Could anyone kindly explain to me why it works with one address but not the other?
02-16-2024 02:43 PM
This is pure routing issue I think
It not relate to mpls
The router B if not advertise route of C how A and P know this route?
As I understand you use default route in C
So you need to use static route in B toward C for any prefix behind C and advertise this static route into ospf
MHM
02-16-2024 02:58 PM
IT is like this:
RA<--->P<--->B<-.0--172.16.0.0/31--.1->RC
Router A knows C loopback through a static route that has 172.16.0.1 as next-hop. Router A knows 172.16.0.1 through OSPF, Router A can ping 172.16.0.1
Router P doesn't know C loopback but it is a LSR, Router P knows 172.16.0.1 through OSPF as well
Router B has a static for the loopback on C.
On router A configuring a static like this:
router static
address-family ipv4 unicast
3.3.3.3/32 (router C loopback) 172.16.0.1 (Router C interface in the link between B and C. Router A can ping this IP)
doesn't work
if I replace 172.16.0.1 with router B loopback interface, it works. If router A can reach 172.16.0.1 (C interface) why it cannot reach the loopback that is configured on same router?
02-16-2024 03:12 PM
I run lab and it work
change the subnet between B and C and check again
the OSPF and MPLS not accept subnet 17216.0.0/31 <<- this need to be 30 and dont use .0 this network ID not host IP
02-16-2024 03:50 PM
Hi @ThomasD86 ,
What IOS-XR version do you run on Router A?
Can you please provide a "show cef 3.3.3.3 det" from Router A?
Regards,
02-17-2024 12:57 AM - edited 02-17-2024 01:22 AM
Hi Harold,
Router A is an ASR9k running 7.3.2, Router P is a NCS 5508 running 7.3.2 as well. Router B is another 9k running 7.9.21.
The CEF output shows that something might not be right. I configured both static routes towards router C, one with next hop 172.16.0.235, the other with 172.16.0.50. Router A installs both in its routing table:
S 3.3.3.3/32 [1/0] via 172.16.0.235, 00:22:15
[1/0] via 172.16.55.50, 00:22:15
Looking at the cef however:
show cef 30.235.9.117/32 detail
Sat Feb 17 09:22:36.058 CET
30.235.9.117/32, version 493326, internal 0x1000001 0x30 (ptr 0x7904f380) [1], 0x0 (0x7900aef8), 0xa00 (0x8970c0a8)
Updated Feb 17 09:03:43.819
Prefix Len 32, traffic index 0, precedence n/a, priority 3
gateway array (0x78e75408) reference count 2, flags 0x8078, source lsd (5), 1 backups
[3 type 4 flags 0x108441 (0x794f9e40) ext 0x0 (0x0)]
LW-LDI[type=1, refc=1, ptr=0x7900aef8, sh-ldi=0x794f9e40]
gateway array update type-time 1 Feb 17 09:03:43.820
LDI Update time Feb 17 09:03:43.826
LW-LDI-TS Feb 17 09:03:43.826
via 172.16.0.235/32, 3 dependencies, recursive [flags 0x0]
path-idx 0 NHID 0x0 [0x7904ee08 0x0]
next hop 172.16.0.235/32 via 172.16.0.235/32
local label 24002
next hop 172.16.6.24/32 Hu0/0/0/1 labels imposed {28115 None}
via 172.16.55.50/32, 3 dependencies, recursive [flags 0x0]
path-idx 1 NHID 0x0 [0x7904e188 0x0]
next hop 172.16.55.50/32 via 172.16.55.50/31
local label 24002
next hop 172.16.6.24/32 Hu0/0/0/1 labels imposed {None} <<< no label when next hop is 172.16.55.50
Load distribution: 0 1 (refcount 3)
Hash OK Interface Address
0 Y recursive 172.16.0.235
1 Y recursive 172.16.55.50
It looks like A is not receiving a label to forward traffic to 172.16.55.50.
Router P has no entry for 3.3.3.3 in its cef but looking at the ldp bindings:
RP/0/RP0/CPU0:NCS-01#show mpls ldp binding 3.3.3.3/32
Sat Feb 17 09:36:08.775 CET
3.3.3.3/32, rev 0
No local binding
Remote bindings: (2 peers)
Peer Label
----------------- ---------
172.16.0.48:0 24002
172.16.0.235:0 24024
RP/0/RP0/CPU0:NCS-01#show mpls ldp binding 172.16.55.50/32
Sat Feb 17 09:36:23.919 CET
RP/0/RP0/CPU0:NCS-01#show mpls ldp binding 172.16.0.235/32
Sat Feb 17 09:36:32.767 CET
172.16.0.235/32, rev 256
Local binding: label: 28115
Remote bindings: (7 peers)
Peer Label
----------------- ---------
172.16.128.5:0 24004
172.16.0.43:0 65
172.16.0.47:0 133
172.16.0.48:0 24123
192.168.0.140:0 54
192.168.0.141:0 24119
172.16.0.235:0 ImpNull
It looks that Router B is not passing to P a label for 172.16.55.50/31.
So if I am getting these outputs right: There's no LSP from A to 172.16.55.50.
Ping towards 172.16.55.50 from A works solely because since the network is known in OSPF to P it can route the packet using the ip header infos even if the LSP is broken. However since no mpls encapsulation is happening when trying to ping 3.3.3.3 router P not having this network in its routing table and not being able to use the mpls header for routing since there's none, drops the packet.
Is this correct?
I've made a topology of the scenario to better help understand the outputs:
02-17-2024 01:27 AM
I dont like use /31 but since you need to use it I run lab again and also it work
in router 3 I add 120.0.0.0 0.0.0.1 area 0 under the ospf, this make R3 advertise the prefix with it label to both R2 and R1
R1 will use ip route 4.4.4.4/32 120.0.0.0
R1 know the prefix 120.0.0.0 and it label
so first step in your case is check
are router R1 (R-A) use static route toward R3 IP not R4 IP ?
are R1 know this subnet between R3-R4 via OSPF and add it to MPLS table ?
02-17-2024 02:54 AM
Hi,
thanks for sharing the outputs. In my case the problem seems to be that Router P (R2 in your lab) has no label for the network between B and C (R3 and R4) it knows the network from OSPF but it hasn't assigned a label to it.
Looking at router P:
show mpls ldp neighbor 172.16.0.235
Sat Feb 17 11:38:25.627 CET
Peer LDP Identifier: 172.16.0.235:0
TCP connection: 172.16.0.235:36332 - 172.16.0.44:646
Graceful Restart: No
Session Holdtime: 180 sec
State: Oper; Msgs sent/rcvd: 29603/29607; Downstream-Unsolicited
Up time: 2w3d
LDP Discovery Sources:
IPv4: (2)
Targeted Hello (172.16.0.44 -> 172.16.0.235, active)
Bundle-Ether1
IPv6: (0)
Addresses bound to this peer:
IPv4: (5)
172.16.0.235 172.16.55.49 172.16.55.51 200.100.10.0
200.100.10.2
Router P recognizes that 172.16.55.51 is bound to B.
However, looking at the forwarding info:
show mpls forwarding
Sat Feb 17 11:40:40.729 CET
Local Outgoing Prefix Outgoing Next Hop Bytes
Label Label or ID Interface Switched
------ ----------- ------------------ ------------ --------------- ------------
24000 Pop No ID BD=3 EIM point2point 0
28096 Pop EVPN:600 U BD=3 E point2point 0
28106 Unlabelled 192.168.0.140/32 Te0/0/0/29/0 192.168.0.133 57211366
28110 Unlabelled 2.2.2.2/32 Te0/0/0/29/1 192.168.0.137 0
28111 Pop 192.168.0.141/32 Te0/0/0/29/1 192.168.0.137 42255519
28112 Pop 192.168.0.142/32 Te0/0/0/29/1 192.168.0.137 0
28113 Pop 172.16.0.49/32 Hu0/0/0/9 172.16.6.29 485982
28114 Pop 172.16.128.5/32 Hu0/0/0/9 172.16.6.29 45234600
28115 Pop 172.16.0.235/32 BE1 172.16.55.49 1479884
28116 Pop 172.16.0.48/32 Hu0/0/0/8 172.16.6.25 82917
28117 Pop 172.16.128.4/32 Hu0/0/0/8 172.16.6.25 0
28118 Pop 172.16.128.6/32 Hu0/0/0/8 172.16.6.25 0
28121 Pop 172.16.0.43/32 Hu0/0/0/7 172.16.6.16 77179236
28122 Pop 172.16.128.1/32 Hu0/0/0/7 172.16.6.16 0
28123 Pop 172.16.128.100/32 Hu0/0/0/7 172.16.6.16 0
28124 Pop 172.16.0.47/32 Te0/0/0/28/0 172.16.60.2 76679328
28125 Pop 172.16.128.3/32 Te0/0/0/28/0 172.16.60.2 0
28126 Pop 199.200.100.1/32 Hu0/0/0/8 172.16.6.25 0
28127 Unlabelled BLB(BE1/172.16.55.49) \
BE1 172.16.55.49 0
Router P has no label allocated to reach network 172.16.55.50/31, despite knowing the network:
Routing entry for 172.16.55.50/31
Known via "ospf 1", distance 110, metric 20, type intra area
Installed Feb 17 11:42:50.993 for 00:00:34
Routing Descriptor Blocks
172.16.55.49, from 172.16.0.235, via Bundle-Ether1
Route metric is 20
No advertising protos.
02-17-2024 03:12 AM
I figured this out:
In MPLS LDP configuration, all the 3 routers (A,P and B) were configured to allocate labels only for host routes since I was pointing to a non host route no LSP was created and thus the ping failed:
mpls ldp
log
neighbor
nsr
graceful-restart
!
igp sync delay on-session-up 30
discovery
hello holdtime 30
hello interval 10
targeted-hello holdtime 120
targeted-hello interval 15
!
router-id 172.16.0.235
session protection
address-family ipv4
discovery targeted-hello accept
label
local
allocate for host-routes
Removing the allocate for host-routes bit from all 3 routers, generated a valid LSP.
Thanks for the help everyone!
02-17-2024 03:23 AM
You are welcome
Have a nice weekend
MHM
02-17-2024 07:51 AM
Good catch @ThomasD86 and thanks for the feedback
02-17-2024 03:16 AM
In R3 add new LO 3.3.3.3 and advertise via ospf
Make sure R2 know this new LO vis RIB and MPLS forwarding table
In R1 add static route for R4LO Toward LO in R3 (make this LO 3.3.3.3)
This must work.
MHM
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide