Page MenuHomeVyOS Platform

IPv6 only ISIS (or, in general, dual topology) is not working with other devices running frr
Closed, ResolvedPublicFEATURE REQUEST

Description

ISIS is not working on a IPv6 only environment (or, in general, in dual topology) where other devices are running plain frr.

i.e., given this configuration:

interfaces {
    dummy dum0 {
        address 2001:db8:1:1::1/64
    }
    ethernet eth1 {
        address 2001:db8:3::1/64
        description "dut -> x1"
        mtu 1500
    }
    ethernet eth2 {
        address 2001:db8:3:1::1/64
        description "dut -> x2"
        mtu 1500
    }
}
protocols {
    isis {
        dynamic-hostname
        interface dum0 {
        }
        interface eth1 {
            network {
                point-to-point
            }
        }
        interface eth2 {
            network {
                point-to-point
            }
        }
        level level-2
        net 49.0001.0bad.cafe.0001.00
    }
}

example other frr config:

hostname x1
service integrated-vtysh-config
!
interface eth1
 description x1 -> dut
 ipv6 address 2001:db8:3::2/64
 ipv6 nd ra-interval 5
 ipv6 router isis Gandalf
 isis network point-to-point
 no ipv6 nd suppress-ra
exit
!
interface lo
 ipv6 address 2001:db8:1:2::1/64
 ipv6 router isis Gandalf
exit
!
router isis Gandalf
 is-type level-2-only
 net 49.0042.0000.0000.0002.00
 lsp-timers gen-interval 1 refresh-interval 900 max-lifetime 1800
 topology ipv6-unicast
 log-adjacency-changes
exit

no routes are announced:

vyos@dut:~$ sh ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng,
       O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
       v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

C>* 2001:db8:1:1::/64 is directly connected, dum0, 00:01:21
C>* 2001:db8:3::/64 is directly connected, eth1, 00:01:20
C>* 2001:db8:3:1::/64 is directly connected, eth2, 00:01:19
C * fe80::/64 is directly connected, eth2, 00:01:20
C * fe80::/64 is directly connected, dum0, 00:01:21
C>* fe80::/64 is directly connected, lo, 00:01:31
C * fe80::/64 is directly connected, eth1, 00:01:43
C * fe80::/64 is directly connected, eth0, 00:01:43

It seems there's a missing config on FRR's isisd:

If I manually add:

dut# configure
dut(config)# router isis VyOS
dut(config-router)# topology ipv6-unicast

then everything starts working:

vyos@dut:~$ sh ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng,
       O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
       v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

C>* 2001:db8:1:1::/64 is directly connected, dum0, 00:02:57
I>* 2001:db8:1:2::/64 [115/20] via fe80::a8c1:abff:fe77:5770, eth1, weight 1, 00:00:16
I>* 2001:db8:1:3::/64 [115/20] via fe80::a8c1:abff:fe0d:c90f, eth2, weight 1, 00:00:16
C>* 2001:db8:3::/64 is directly connected, eth1, 00:02:56
C>* 2001:db8:3:1::/64 is directly connected, eth2, 00:02:55
C * fe80::/64 is directly connected, eth2, 00:02:56
C * fe80::/64 is directly connected, dum0, 00:02:57
C>* fe80::/64 is directly connected, lo, 00:03:07
C * fe80::/64 is directly connected, eth1, 00:03:19
C * fe80::/64 is directly connected, eth0, 00:03:19

Details

Difficulty level
Unknown (require assessment)
Version
1.5-rolling-202311130023 -1.4-epa3
Why the issue appeared?
Other
Is it a breaking change?
Perfectly compatible
Issue type
Feature (new functionality)

Event Timeline

Viacheslav triaged this task as Normal priority.May 13 2024, 9:52 AM

(commenting as the root cause of this issue ;) While one could argue that you could configure the other FRR not to use multi-topology, some devices might use IS-IS multi-topology as the default setting, so it would be nice to have it tunable.

@ssasso - thanks for this good catch! Coming from a Junos world, I was a bit surprised at the first place when I enabled ISIS and found no ipv6 isis routes and no multi-topology config option (and yes - we have multi-topology in place)

So I'd second the idea to have a knob available to turn that option ON.

PS: setting the frr option as you explained did the trick for me also!

@Viacheslav here you go:

set interfaces dummy dum0 address '2001:db8:1:1::1/64'

set interfaces ethernet eth1 address '2001:db8:3::1/64'
set interfaces ethernet eth1 description 'dut -> x1'
set interfaces ethernet eth1 mtu '1500'

set interfaces ethernet eth2 address '2001:db8:3:1::1/64'
set interfaces ethernet eth2 description 'dut -> x2'
set interfaces ethernet eth2 mtu '1500'

set interfaces loopback lo

set protocols isis dynamic-hostname
set protocols isis interface dum0
set protocols isis interface eth1 network point-to-point
set protocols isis interface eth2 network point-to-point
set protocols isis level 'level-2'
set protocols isis net '49.0001.0bad.cafe.0001.00'

set service lldp interface all
set service lldp interface eth0 disable

set service router-advert interface eth1
set service router-advert interface eth2

the problem here is that MT options is enable by default when the RIB has ipv4, if not not-MT is enable by default on IPv4 .So, you need to add additional topologies (ipv6-unicast , ipv6-multicast,etc)

More a feature request than a bug

fernando changed the task status from Open to Needs testing.May 29 2024, 11:14 AM
fernando changed Version from 1.5-rolling-202311130023 to 1.5-rolling-202311130023 -1.4-epa3.
fernando changed Why the issue appeared? from Will be filled on close to Other.
fernando changed Is it a breaking change? from Unspecified (possibly destroys the router) to Perfectly compatible.
fernando changed Issue type from Unspecified (please specify) to Feature (new functionality).
fernando changed the subtype of this task from "Bug" to "Feature Request".

we've added this ability to configure the topology on isis :

vyos@isis-01# set protocols isis topology
Possible completions:
   ipv4-multicast       Use IPv4 multicast topology
   ipv4-mgmt            Use IPv4 management topology
   ipv6-unicast         Use IPv6 unicast topology
   ipv6-multicast       Use IPv6 multicast topology
   ipv6-mgmt            Use IPv6 management topology
   ipv6-dstsrc          Use IPv6 dst-src topology

very cool! I just rebuild a 1.5-rolling and upgraded my lab router and voila - works as expected ;-)

many thanks!

just some show commands with test results on my lab

VyOS:

# sh protocols isis | commands 
set dynamic-hostname
set interface eth0.100
set interface eth0.200
set interface lo
set level 'level-2'
set net '49.0001.0001.001f.1233.f990.00'
set topology 'ipv6-unicast'
# run sh ipv6 route isis 
Codes: K - kernel route, C - connected, S - static, R - RIPng,
       O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
       v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

I>* ::/0 [115/20] via fe80::f27c:ffff:eeee:aaaa, eth0.100, weight 1, 00:22:20
  *               via fe80::f27c:ffff:eeee:aaab, eth0.200, weight 1, 00:22:20
...

a Junos neighbor:

user@junos> show isis adjacency vyos detail 
vyos
  Interface: ge-0/0/0.100, Level: 2, State: Up, Expires in 28 secs
  Priority: 64, Up/Down transitions: 1, Last transition: 00:26:12 ago
  Circuit type: 2, Speaks: IP, IPv6, MAC address: 0:aa:bb:cc:dd:ee
  Topologies: Unicast, IPV6-Unicast
  ... 

vyos
  Interface: ge-0/0/1.200, Level: 2, State: Up, Expires in 29 secs
  Priority: 64, Up/Down transitions: 1, Last transition: 00:26:12 ago
  Circuit type: 2, Speaks: IP, IPv6, MAC address: 0:aa:bb:cc:dd:ee
  Topologies: Unicast, IPV6-Unicast
  ...