> I'me running a couple of openbsd routers running (still OpenBSD 6.0)
> with carp failover and ospfd+ospf6d. Everything seems running fine but i
> see clockwork every 5 min the following message:
> 
> ospfd[PROCESSID]: desync; scheduling fib reload
> ospfd[PROCESSID]: reload interface list and routing table
> 
> It appaers from source/docs that RTM_DESYNC could com from buffer
> shortage.

Yes, on the route socket.  It is unreasonable for the kernel to
maintain an infinite number of route change messages, so about 9 years
ago we developed this scheme of marking the situation for userland to
handle.  Such a mechanism didn't exist before, because noone had run
into the concern before -- people weren't turning *BSD systems into
full-table/high-churn routing systems before our daemons came along.

> We have changed default sysctl settings for: 
> kern.maxcluster=24576 
> net.inet.ip.ifq.maxlen=4096
> net.inet6.ip6.ifq.maxlen=1024
> 
> as from netstat -m  we ran out of 2048 mbufs at defaults. 

Come on, think for a second.  See "ip" and "ip6"?  That doesn't grow
the queue on the routing socket.  If anything it probably makes
your situation worse.

As for growing the size of the route socket buffer -- it is unclear
whether that won't make the situation worse.  When a desync is
detected in userland, you will already have read and consumed the full
queue -- which now has a gap in it, and requires a fresh restart.  So
you are promising to do MORE wasteful work before recovering.

Anyways, there are two circumstances where it happens: route buffer limits,
or temporary mbuf shortage.  I think you've hit the latter.

Reply via email to