FRRouting / frr

The FRRouting Protocol Suite
https://frrouting.org/
Other
3.21k stars 1.24k forks source link

staticd does not install subtree/source specific ipv6 routes (regression since at least 7.5) #14247

Open ardje opened 1 year ago

ardje commented 1 year ago

Hi guys,

Got a very easy testcase that just doesn't seem to work:

rtrC# show running-config
Building configuration...

Current configuration:
!
frr version 8.4.2
frr defaults traditional
hostname rtrC
log syslog informational
no ip forwarding
no ipv6 forwarding
service integrated-vtysh-config
!
ipv6 route 2000::/3 from 2001:db8::/48 fe80::200:5eff:fe00:110 eth0 onlink
ipv6 route 4000::/4 fe80::200:5eff:fe00:110 eth0 onlink
!
end
rtrC# show ipv6 route kernel
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

K>* ::/0 [0/1024] via fe80::200:5eff:fe00:110, eth0, 02w6d22h
K>* 2000::/3 from 2001:db9::/48 [0/1024] via fe80::200:5eff:fe00:110, eth0, 00:08:06
rtrC# show ipv6 route static
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

S>* 4000::/4 [1/0] via fe80::200:5eff:fe00:110, eth0 onlink, weight 1, 00:00:20

the kernel route was installed with:

root@rtrC:/etc/ssh# ip -6 ro add 2000::/3 from 2001:db9::/48 via fe80::200:5eff:fe00:110 dev eth0

So non-source-specific routes get installed by staticd, however source specific routes don't.

I tried to debug it on version 9, stracing the staticd daemon, but this is a bit over my head. I would expect it to perform netlink requests (which I can read), but then again I would assume zebra would do the netlink requests and not staticd.

ardje commented 1 year ago

As a side note:

rtrC# show debugging
MGMT debugging status:

Zebra debugging status:
  Zebra kernel debugging is on
  Zebra kernel netlink message dumps (send) are on
  Zebra kernel netlink message dumps (recv) are on

Staticd debugging status

It's as if staticd's debug part is also broken: I miss the:

The working non source specific route ends up as nlmsg's in zebra debug.

ardje commented 7 months ago

The same problem persists with version 9.1 on debian buster in an lxc on armhf. No problems with bird 2. Downgraded to 7.5, same problem Downgraded to 6.0.2, and it works. frr/static of at least 7.5 and higher is incapable of configuring static source specific routes. It puts them in the config file, but it essentially does nothing.

So it's a regression since at least 7.5