frr icon indicating copy to clipboard operation
frr copied to clipboard

isisd: SR-MPLS transport labels not exchanged without IPv4 loopback address

Open SPYFF opened this issue 5 months ago • 0 comments

Description

I have an SR-MPLS setup with PE-P-PE routers using IS-IS as IGP. With the IGP I want to exchange /128 IPv6 loopback addresses and their MPLS transport labels. Unfortunately MPLS labels does not exchanged within this IPv6-only setup. If I add a /32 IPv4 address to the loopback interface, that fixes the transport label exchange for the IPv6 addresses as well.

Version

I tried it with 10.3, 10.4.1 and 10.5 maybe older versions affected too.

How to reproduce

lo: 1::1/128      lo: a::a/128      lo: 2::2/128
┌──────────┐      ┌──────────┐      ┌──────────┐
│          │      │          │      │          │
│   PE1    ├──────┤    P     ├──────┤   PE2    │
│          │      │          │      │          │
└──────────┘      └──────────┘      └──────────┘
  1. Create a PE1-P-PE2 topology (similar to above)
  2. Configure IPv6 /128 loopback address
  3. Configure IS-IS with MPLS and segment routing
  4. Enabe IPv6 IS-IS and MPLS on the interfaces including the loopback
  5. On PE1 check IPv6 IS-IS routes sh ipv6 ro isis, the output will be:
I>* 2::2/128 [115/30] via fe80::8044:d4ff:feb0:3bec, to-p, weight 1, 00:00:28
I>* a::a/128 [115/20] via fe80::8044:d4ff:feb0:3bec, to-p, label IPv6 Explicit Null, weight 1, 00:00:29
  1. Now add /32 IPv4 loopback addresses
  2. Check the IS-IS routes again (transport label 20022 appeared):
I>* 2::2/128 [115/30] via fe80::8044:d4ff:feb0:3bec, to-p, label 20022, weight 1, 00:00:06
I>* a::a/128 [115/20] via fe80::8044:d4ff:feb0:3bec, to-p, label IPv6 Explicit Null, weight 1, 00:03:28

For example here is the full config of PE1 (with the fix commented):

interface to-p
  ipv6 router isis ISIS_CORE
  isis circuit-type level-2-only
  mpls enable
exit
!
interface lo
  ! ip address 1.1.1.1/32 ! <--- uncomment it for label fix
  ipv6 address 1::1/128
  ipv6 router isis ISIS_CORE
  isis circuit-type level-2-only
  isis passive
  mpls enable
exit
!
router isis ISIS_CORE
  is-type level-2-only
  net 49.0001.0000.0000.aaaa.00
  lsp-mtu 1300
  segment-routing on
  segment-routing global-block 20000 25000
  segment-routing node-msd 8
  segment-routing prefix 1::1/128 index 11 explicit-null
exit

Please find mininet reproducer in the attached zip, including full config of PE1, P and PE2:

isisd-srmpls-repro.zip

Expected behavior

In step 5. the sh ipv6 ro isis command verify the transport labels exchanged even if no /32 IPv4 address:

I>* 2::2/128 [115/30] via fe80::8044:d4ff:feb0:3bec, to-p, label 20022, weight 1, 00:00:06
I>* a::a/128 [115/20] via fe80::8044:d4ff:feb0:3bec, to-p, label IPv6 Explicit Null, weight 1, 00:03:28

Actual behavior

The IPv4 loopback address is mandatory even if not used for anything. Without it the transport labels for the 2::2 address below are not exchanged/created:

I>* 2::2/128 [115/30] via fe80::8044:d4ff:feb0:3bec, to-p, weight 1, 00:00:28
I>* a::a/128 [115/20] via fe80::8044:d4ff:feb0:3bec, to-p, label IPv6 Explicit Null, weight 1, 00:00:29

Additional context

For OSPF I would expect such behavior if no router-id configured, since it borrows the IPv4 loopback address for the router-id (both 32 bits). This behavior above is expected for IS-IS as well, just not documented?

Checklist

  • [x] I have searched the open issues for this bug.
  • [x] I have not included sensitive information in this report.

SPYFF avatar Nov 26 '25 07:11 SPYFF