Netlink: File exists
Chris Webb
chris at arachsys.com
Wed Feb 3 00:03:57 CET 2010
Ondrej Zajicek <santiago at crfreenet.org> writes:
> But this explanation of error message "Netlink: File exists" would assume
> that you receive default route wia BGP, which is not usual.
The debug output suggested by Ondrej Filip suggests that this is exactly
what's going on:
>>> bgp1: Connecting to 84.45.39.149 from local address 84.45.39.150
>>> bgp1: Connected
>>> bgp1: Sending OPEN(ver=4,as=44934,hold=240,id=5bcb3901)
>>> bgp1: Got OPEN(as=25577,hold=180,id=542d5af6)
>>> bgp1: Got KEEPALIVE
>>> bgp1: BGP session established
>>> bgp1: State changed to feed
>>> bgp1: Sending KEEPALIVE
>>> bgp1: Connected to table master
>>> bgp1 < added 91.203.56.0/23 dev eth0
>>> bgp1 < out of scope 127.0.0.0/8 dev lo
>>> bgp1 < added 84.45.39.148/30 dev eth1
>>> bgp1: State changed to up
>>> bgp1: Sending UPDATE
>>> bgp1: Got UPDATE
>>> bgp1 > added [best] 0.0.0.0/0 via 84.45.39.149 on eth1
>>> kernel1 < added 0.0.0.0/0 via 84.45.39.149 on eth1
>>> Netlink: File exists
>>> bgp1 < rejected by protocol 0.0.0.0/0 via 84.45.39.149 on eth1
[...]
I don't think I should be getting 0.0.0.0/0 by BGP. That's a little puzzling
and probably should be fixed or at least filtered.
> > Also, I needed
> >
> > sysctl net.core.rmem_max=524284
> >
> > before starting quagga to avoid netlink "recvmsg overrun" messages and
> > occasional loss of prefixes. Am I right in assuming that bird will need the
> > same thing for the same reason?
>
> I don't know about such requirement.
In the same debug output, I'm seeing
[...]
??? <<80 messages lost>>
>>> bgp1: Got UPDATE
[...]
??? <<198 messages lost>>
[...]
I suspected that this might be prefixes being lost because bird isn't
increasing the size of the netlink buffer sufficiently and there's an
overflow. I think quagga does something like
setsockopt(nl->sock, SOL_SOCKET, SO_RCVBUF, &nl_rcvbufsize,
sizeof(nl_rcvbufsize));
where nl_rcvbufsize needs to be set (via a command-line option) to something
like 262143 or 524287 to avoid losing routes. I guess I could override the
net.core.rmem_default sysctl globally to achieve the same effect, but that
affects every socket buffer, not just the bird netlink socket.
Cheers,
Chris.
More information about the Bird-users
mailing list