Anybody else being as masochistic as I am to attempt using FRR's IS-IS
with unnumbered interfaces?
It works "like a charm" with IPv6, but IPv4 isn't routed if no IPv4
IPs on the IS-IS connected interfaces.
Using Openfabric (based on and in the isisd code), it all just
works... correctly (So why am I not using Openfabric? as I want to use
it with multi node links/networks which Openfabric doesn't support/do,
and I'm interested in interfacing with other network kit, so IS-IS is
the beterer choice as openfabric is "dead" in IETF, replaced by the
dist-opt-flood extensions to IS-IS)
Though Openfabric will happily insert onlink routes on unnumbered
interfaces, it seems that IS-IS "needs" to have an IPv4 address on the
interface(s), else it doesn't have next hops to insert.
I've searched high and low, and couldn't find any setting I've missed,
and the source code hasn't been too helpful to see/understand if I'm
missing something or if the needs haven't been coded into IS-IS yet.
```
Current configuration:
!
frr version 10.0
frr defaults datacenter
hostname margherita
log syslog informational
service integrated-vtysh-config
!
interface enp67s0f1
ip router isis 1
ipv6 router isis 1
isis csnp-interval 2
isis hello-interval 1
isis hello-multiplier 2
isis network point-to-point
exit
!
interface enp67s0f2
ip router isis 1
ipv6 router isis 1
isis csnp-interval 2
isis hello-interval 1
isis hello-multiplier 2
isis network point-to-point
exit
!
interface enp67s0f3
ip router isis 1
ipv6 router isis 1
isis csnp-interval 2
isis hello-interval 1
isis hello-multiplier 2
isis network point-to-point
exit
!
interface lo
ip address 10.4.127.1/32
ip router isis 1
ipv6 address 2c0f:dead:beef:feed:2:0:4:1/128
ipv6 router isis 1
isis passive
exit
!
router isis 1
is-type level-1
net 49.1004.feed.feed.0004.0001.00
lsp-timers gen-interval 1 refresh-interval 180 max-lifetime 600
redistribute ipv4 connected level-1
redistribute ipv6 connected level-1
topology ipv4-multicast
topology ipv4-mgmt
topology ipv6-unicast
topology ipv6-multicast
topology ipv6-mgmt
topology ipv6-dstsrc
log-adjacency-changes
exit
!
end
```
```
root@margherita:~# vtysh -c "show isis route"
Area 1:
IS-IS paths to level-1 routers that speak IP
Vertex Type Metric Next-Hop Interface Parent
margherita
10.4.127.1/32 IP internal 0
margherita(4)
pu.bl.ic1.0/24 IP internal 0
margherita(4)
IS-IS L1 IPv4 routing table:
Prefix Metric Interface Nexthop Label(s)
-------------------------------------------------------
10.4.127.1/32 0 - - -
pu.bl.ic1.0/24 0 - - -
IS-IS paths to level-1 routers that speak IPv6
Vertex Type Metric Next-Hop Interface Parent
margherita
2c0f:dead:beef:feed:2:0:4:1/128 IP6 internal 0
margherita(4)
quesadilla TE-IS 10 quesadilla
enp67s0f1 margherita(4)
guacamole TE-IS 10 guacamole
enp67s0f2 margherita(4)
tequila TE-IS 10 tequila
enp67s0f3 margherita(4)
2c0f:dead:beef:feed:2:0:4:2/128 IP6 internal 10 quesadilla
enp67s0f1 quesadilla(4)
2c0f:dead:beef:feed:2:0:4:3/128 IP6 internal 10 guacamole
enp67s0f2 guacamole(4)
2c0f:dead:beef:feed:2:0:4:4/128 IP6 internal 10 tequila
enp67s0f3 tequila(4)
IS-IS L1 IPv6 routing table:
Prefix Metric Interface Nexthop
Label(s)
----------------------------------------------------------------------------------------
2c0f:dead:beef:feed:2:0:4:1/128 0 - -
-
2c0f:dead:beef:feed:2:0:4:2/128 10 enp67s0f1
fe80::7777:55ff:fe31:6648 -
2c0f:dead:beef:feed:2:0:4:3/128 10 enp67s0f2
fe80::7777:55ff:fe31:6664 -
2c0f:dead:beef:feed:2:0:4:4/128 10 enp67s0f3
fe80::7777:55ff:fe31:663c -
IS-IS paths to level-1 routers that support IPv6 dst-src routing
Vertex Type Metric Next-Hop Interface Parent
margherita
quesadilla TE-IS 10 quesadilla
enp67s0f1 margherita(4)
guacamole TE-IS 10 guacamole
enp67s0f2 margherita(4)
tequila TE-IS 10 tequila
enp67s0f3 margherita(4)
IS-IS L1 IPv6 (dst-src routing) routing table:
```
adding the "loopback" IP to all connected interfaces:
```
root@margherita:~# for i in 0 1 2 3; do ip a add dev enp67s0f$i 10.4.127.1 ;done
root@margherita:~# vtysh -c "show isis route"
Area 1:
IS-IS paths to level-1 routers that speak IP
Vertex Type Metric Next-Hop Interface Parent
margherita
10.4.127.1/32 IP internal 0
margherita(4)
pu.bli.c1.0/24 IP internal 0
margherita(4)
quesadilla TE-IS 10 quesadilla
enp67s0f1 margherita(4)
guacamole TE-IS 10 guacamole
enp67s0f2 margherita(4)
tequila TE-IS 10 tequila
enp67s0f3 margherita(4)
10.4.127.2/32 IP TE 10 quesadilla
enp67s0f1 quesadilla(4)
pu.bli.c1.0/24 IP TE 10 quesadilla enp67s0f1
quesadilla(4)
guacamole
enp67s0f2 guacamole(4)
tequila
enp67s0f3 tequila(4)
10.4.127.3/32 IP TE 10 guacamole
enp67s0f2 guacamole(4)
10.4.127.4/32 IP TE 10 tequila
enp67s0f3 tequila(4)
IS-IS L1 IPv4 routing table:
Prefix Metric Interface Nexthop Label(s)
----------------------------------------------------------
10.4.127.1/32 0 - - -
10.4.127.2/32 10 enp67s0f1 10.4.127.2 -
10.4.127.3/32 10 enp67s0f2 10.4.127.3 -
10.4.127.4/32 10 enp67s0f3 10.4.127.4 -
pu.bli.c1.0/24 10 enp67s0f1 10.4.127.2 -
enp67s0f2 10.4.127.3 -
enp67s0f3 10.4.127.4 -
IS-IS paths to level-1 routers that speak IPv6
Vertex Type Metric Next-Hop Interface Parent
margherita
2c0f:dead:beef:feed:2:0:4:1/128 IP6 internal 0
margherita(4)
quesadilla TE-IS 10 quesadilla
enp67s0f1 margherita(4)
guacamole TE-IS 10 guacamole
enp67s0f2 margherita(4)
tequila TE-IS 10 tequila
enp67s0f3 margherita(4)
2c0f:dead:beef:feed:2:0:4:2/128 IP6 internal 10 quesadilla
enp67s0f1 quesadilla(4)
2c0f:dead:beef:feed:2:0:4:3/128 IP6 internal 10 guacamole
enp67s0f2 guacamole(4)
2c0f:dead:beef:feed:2:0:4:4/128 IP6 internal 10 tequila
enp67s0f3 tequila(4)
IS-IS L1 IPv6 routing table:
Prefix Metric Interface Nexthop
Label(s)
----------------------------------------------------------------------------------------
2c0f:dead:beef:feed:2:0:4:1/128 0 - -
-
2c0f:dead:beef:feed:2:0:4:2/128 10 enp67s0f1
fe80::7777:55ff:fe31:6648 -
2c0f:dead:beef:feed:2:0:4:3/128 10 enp67s0f2
fe80::7777:55ff:fe31:6664 -
2c0f:dead:beef:feed:2:0:4:4/128 10 enp67s0f3
fe80::7777:55ff:fe31:663c -
IS-IS paths to level-1 routers that support IPv6 dst-src routing
Vertex Type Metric Next-Hop Interface Parent
margherita
quesadilla TE-IS 10 quesadilla
enp67s0f1 margherita(4)
guacamole TE-IS 10 guacamole
enp67s0f2 margherita(4)
tequila TE-IS 10 tequila
enp67s0f3 margherita(4)
IS-IS L1 IPv6 (dst-src routing) routing table:
root@margherita:~#
```