IOS-XR and ARM

Hello, everyone.

I’ve ran into an interesting issue while studying MPLS on XR and I would like your input on it.

IOS-XR documentation for LDP states the following when it comes to determining the LDP router ID:

obrázok

I have the following loopbacks configured:

obrázok

When I enable MPLS LDP, it picks 1.1.1.1 as the RID

obrázok

I was quite suprised by this because I thought the RID selection process would fall to Step 3 since I haven’t configured any RIDs.

However, this process called ARM always picks one loopback (always the first one for some reason) as the global RID and that’s used instead (that is, if you don’t configure an RID manually).

obrázok

This is apparently some IP address repository manager. It always picks the global RID upon booting XR.

Is it not possible to make it to the third step of the LDP RID selection process, then? Does ARM also always pick the first loopback it can find?

I did not manage to find much documentation regarding this, did anyone here experience this kind of problem before?

Thank you!
David

Hello David

What you’ve observed is expected behavior. LDP’s router-ID selection follows a documented 3-step priority:

  1. Configured LDP router-ID: if you explicitly set router-id A.B.C.D under mpls ldp
  2. Global router ID from ARM: the system-wide router-ID published by IP ARM (Address Repository Manager)
  3. Calculated fallback: the primary IPv4 address of the highest-numbered loopback

In practice, ARM’s global router-ID (Step 2) is populated automatically as soon as the router boots with any loopback interface present, so Step 3 is rarely reached. This is why you see 1.1.1.1 used instead of the documented Step 3 algorithm.

ARM’s automatic global-router-ID selection chooses the primary IPv4 address of the lowest-numbered (first available) Loopback interface. This is typically Loopback0, not the highest numbered or the highest IPv4 address. You can verify this directly using this command:

show arm router-ids

The output of this command shows exactly which interface ARM picked. In your case, it found Loopback0 (1.1.1.1) first and stopped looking.

Now, can you bypass ARM and force step 3? Unfortunately, no, there is no documented CLI command to disable ARM’s global-router-ID computation system-wide just to force LDP to Step 3. ARM is a router-wide system function, not an LDP-specific toggle.

The best practice (and Cisco’s recommendation) is to short-circuit the entire selection chain by explicitly configuring the router ID as described in Step 1. This eliminates ambiguity, prevents session flaps from auto-selected defaults changing, and guarantees deterministic, stable behavior. This is the standard approach. It’s not a workaround, but the recommended design. Make sense?

I hope this has been helpful!

Laz

Hello Laz,

That makes perfect sense, thank you. It’s similar to how the BGP RID selection process works, which also picks the lowest-numbered loopback.

XR and RIDs are always a bit confusing topic since everything XE does regarding them, XR does differently.

Thank you again!
David

1 Like