How to send Router Advertisements without prefix?

How can we enable sending RAs from an interface which only has the auto link-local address?
It seems no RAs are sent if the interface has no prefix (e. g. configured via /ipv6/nd/prefix/add or /ipv6/address/add advertise=yes).
We don’t want to advertise a prefix, but send RAs to advertise the router.

Cheers
Maurice

Something seems off about this.

Link local interfaces by their definition are non-routable. Why would you advertise as a router for non-routable address space?

Link-local addresses are non-routable, but this has nothing to do with the interface address.

The device connected to this interface is a router, too. The link to this downstream router is link-local only. Our router is running a DHCPv6 relay which the downstream router uses to acquire a prefix from a router upstream from ours. This prefix (GUA) needs to be routed, so we need to advertise our router.


  Upstream                           
  Router                             
 ┌───────────────┐                   
 │               │                   
 │ DHCPv6 server │                   
 │ (PD only)     │Third party        
 │               │                   
 │ radvd         │                   
 └───────────┬───┘                   
             │                       
             │GUA /64 (SLAAC)        
  Our        │                       
  Router     │                       
 ┌───────────┴───┐                   
 │               │                   
 │ DHCPv6 relay  │                   
 │               │MikroTik           
 │               │                   
 │ radvd         │                   
 └───────────┬───┘                   
             │                       
             │link-local             
  Downstream │                       
  Router     │                       
 ┌───────────┴───┐                   
 │               │                   
 │ DHCPv6 client │                   
 │               │Third party        
 │               │                   
 │ radvd         │                   
 └───────────┬───┘                   
             │GUA /64 (SLAAC)        
 ─┬────┬────┬┴───┬────┬───           
┌─┼─┐┌─┼─┐┌─┼─┐┌─┼─┐┌─┼─┐            
│   ││   ││   ││   ││   │ Hosts      
└───┘└───┘└───┘└───┘└───┘

I guess it’s possible, but Ive not seen it done. Usually globally routable addresses are used because they’re so available, if youre tight locally scoped addresses.

I found an Informational RFC 7404 that seems like what youre talking about, but once again I haven’t seen it done. They point out some significant downsides including the fact that interfaces with link local addresses are not allowed to source ICMP packets, which are pretty important.

Very interesting though.

It is indeed possible and I’ve done it with other routers. These have a setting to explicitly run radvd in a “router only” mode, so no prefixes are advertised.
ICMPv6 works fine as long as the router has a GUA on at least one interface. It is not required that every interface has a GUA.

And this is just one use case. Another one is a network where addresses are assigned via DHCPv6 (exclusively, no SLAAC) and all traffic should be routed (no direct communication between hosts). In this case you don’t advertise a prefix either.

RouterOS seems to have a somewhat weird behaviour when it comes to sending RAs. When there is no prefix to advertise on an interface, it stops sending RAs from this interface entirely.
My current workaround is to add a dummy prefix with disabled on-link and autonomous flags. RouterOS then sends RAs with this (meaningless) prefix. This is rather hackish though, there needs to be a better solution.