Solution ZEBRA: netlink-listen recvmsg overrun: No buffer space available

Once on the server with Quagga after adding several thousand network interfaces, I noticed a message in the logs /var/log/zebra.log:

ZEBRA: netlink-listen recvmsg overrun: No buffer space available

Looked at the current values (I everywhere was 212992):

cat /proc/sys/net/core/rmem_default
cat /proc/sys/net/core/rmem_max
cat /proc/sys/net/core/wmem_default
cat /proc/sys/net/core/wmem_max

To solve the problem, I increased the maximum data receive buffer for all connections by 16 megabytes (16777216 byte = 16Mb):

sudo -i
echo 16777216 > /proc/sys/net/core/rmem_max
echo 16777216 > /proc/sys/net/core/wmem_max

And also so that when restarting the system, the value is not reset, added to sysctl.conf:

sudo nano /etc/sysctl.conf
net.core.rmem_max=16777216
net.core.wmem_max=16777216

Also in the /etc/quagga/debian.conf file, add “nl-bufsize”:

zebra_options="  --daemon -A 127.0.0.1 --nl-bufsize 16777216"

And restart quagga to apply the changes:

sudo /etc/init.d/quagga restart

On Ubuntu Server 18.04, I specified in another file:

nano /lib/systemd/system/zebra.service
nano /etc/systemd/system/multi-user.target.wants/zebra.service

 
ExecStart=/usr/sbin/zebra -d -A 127.0.0.1 -s 16777216 -f /etc/quagga/zebra.conf

See also my articles:
Setting up BGP in Quagga
How to enable or disable Proxy ARP on Linux

Join the Conversation

1 Comment

Leave a Reply to cdwertmannCancel reply

  1. The zebra manpage says:
    “Note that kernel < 2.6.14 doesn't allow to increase it over maximum value defined in /proc/sys/net/core/rmem_max. If you want to do it, you have to increase maximum before starting zebra."

    Does that mean using a kernel newer than 2.6.14 does not require increasing kernel limits at all?