Discussion:
sendto: No buffer space available
(too old to reply)
Walter Doerr
2007-03-15 16:42:48 UTC
Permalink
Hello,

I am using an OpenBSD 4.0 box connected to a 2Mbit SDSL line in
Germany (using user space PPP).

When pinging a host across the SDSL line, I get an occasional
"sendto: No buffer space available" message:


64 bytes from xxx.xxx.xxx.xxx: icmp_seq=566 ttl=254 time=62.674 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=568 ttl=254 time=38.090 ms
ping: sendto: No buffer space available
ping: wrote xxx.xxx.xx 64 chars, ret=-1
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=569 ttl=254 time=1320.651 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=571 ttl=254 time=35.792 ms

Does this message point to a problem within OpenBSD or is this a
problem with the SDSL line?

Why is the ping packet not simply dropped but rather delayed?

I have googled for the error message and some replies indicated that
it is a problem within some ethernet card drivers, so I switched from
fxp to em but the problem persists.


This is the output of netstat -m in case it matters:

443 mbufs in use:
437 mbufs allocated to data
3 mbufs allocated to packet headers
3 mbufs allocated to socket names and addresses
436/552/6144 mbuf clusters in use (current/peak/max)
1248 Kbytes allocated to network (78% in use)
0 requests for memory denied
0 requests for memory delayed
0 calls to protocol drain routines


Any help is greatly appreciated.


Regards,

-Walter Doerr
Claudio Jeker
2007-03-15 18:04:07 UTC
Permalink
Post by Walter Doerr
Hello,
I am using an OpenBSD 4.0 box connected to a 2Mbit SDSL line in
Germany (using user space PPP).
When pinging a host across the SDSL line, I get an occasional
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=566 ttl=254 time=62.674 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=568 ttl=254 time=38.090 ms
ping: sendto: No buffer space available
ping: wrote xxx.xxx.xx 64 chars, ret=-1
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=569 ttl=254 time=1320.651 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=571 ttl=254 time=35.792 ms
Does this message point to a problem within OpenBSD or is this a
problem with the SDSL line?
Why is the ping packet not simply dropped but rather delayed?
I have googled for the error message and some replies indicated that
it is a problem within some ethernet card drivers, so I switched from
fxp to em but the problem persists.
I think I mentionened this already a few times but I'll do it again.
"sendto: No buffer space available" means an ENOBUF error was returned.
On modern systems ENOBUF is almost only generated by the interfaces and
their queues (e.g. if you enable a too restrictive altq limit).
So if you have altq enabled I would look at the pfctl -sq -vv output.

I doubt it is the fxp/em card -- your pinging the other side of the SDSL
line so the traffic flows first through tun(4).
The interface queue on tun(4) can get full because userland ppp fails to
read fast enough or blocks for some time.

As the ping is delayed by 1 second I think ppp blocked and stopped reading
/dev/tun0 for around 1 second. The 1 Mio. Dollar question is why did it
block.

A possible workaround is to switch to the kernel pppoe(4) version.
--
:wq Claudio
Martin Schröder
2007-03-15 20:18:36 UTC
Permalink
Post by Claudio Jeker
I think I mentionened this already a few times but I'll do it again.
"sendto: No buffer space available" means an ENOBUF error was returned.
On modern systems ENOBUF is almost only generated by the interfaces and
their queues (e.g. if you enable a too restrictive altq limit).
So if you have altq enabled I would look at the pfctl -sq -vv output.
I have the same problem, but disabling altq doesn't help.

I can easily repeat it: Firewall is a K6/3-400 with 4.0, sis(tun0) and
rl running squid. If the client (Linux 2.6.16 (SUSE 10.1)) runs at
least two downloads with FireFox and DownThemAll, i.e. more than ca. 4
http requests in parallel, the network will stop occasionally, but
recover.
Post by Claudio Jeker
A possible workaround is to switch to the kernel pppoe(4) version.
Which doesn't do everything pppoe(8) does. :-{

Best
Martin
Walter Doerr
2007-03-19 12:40:02 UTC
Permalink
Hello,

I am using an OpenBSD 4.0 box connected to a 2Mbit SDSL line in
Germany (using user space PPP).

When pinging a host across the SDSL line, I get an occasional
"sendto: No buffer space available" message:


64 bytes from xxx.xxx.xxx.xxx: icmp_seq=566 ttl=254 time=62.674 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=568 ttl=254 time=38.090 ms
ping: sendto: No buffer space available
ping: wrote xxx.xxx.xx 64 chars, ret=-1
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=569 ttl=254 time=1320.651 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=571 ttl=254 time=35.792 ms

Does this message point to a problem within OpenBSD or is this a
problem with the SDSL line?

Why is the ping packet not simply dropped but rather delayed?

I have googled for the error message and some replies indicated that
it is a problem within some ethernet card drivers, so I switched from
fxp to em but the problem persists.


This is the output of netstat -m in case it matters:

443 mbufs in use:
437 mbufs allocated to data
3 mbufs allocated to packet headers
3 mbufs allocated to socket names and addresses
436/552/6144 mbuf clusters in use (current/peak/max)
1248 Kbytes allocated to network (78% in use)
0 requests for memory denied
0 requests for memory delayed
0 calls to protocol drain routines


Any help is greatly appreciated.


Regards,

-Walter Doerr
Stefan Sperling
2007-03-19 14:52:06 UTC
Permalink
Post by Walter Doerr
Hello,
I am using an OpenBSD 4.0 box connected to a 2Mbit SDSL line in
Germany (using user space PPP).
When pinging a host across the SDSL line, I get an occasional
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=566 ttl=254 time=62.674 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=568 ttl=254 time=38.090 ms
ping: sendto: No buffer space available
ping: wrote xxx.xxx.xx 64 chars, ret=-1
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=569 ttl=254 time=1320.651 ms
64 bytes from xxx.xxx.xxx.xxx: icmp_seq=571 ttl=254 time=35.792 ms
That happens to me when I use ppp for VPN in conjunction with pptp.
If the VPN server cannot be reached for a while, e.g. because the link
the VPN tunnel runs on top of is suddenly brought down, ppp will
continue to buffer packets until its buffer is full. Then I see
that message when I try to send more packets.
Post by Walter Doerr
Does this message point to a problem within OpenBSD or is this a
problem with the SDSL line?
No clue. You could enable very verbose logging (set log All)
and see if you find some indication in the logs.

If you use pppoe for your SDSL, you might want to give pppoe(4) a try.
It's in-kernel and has less overhead because it does not context switch
as much as user-ppp.

--
stefan
http://stsp.in-berlin.de PGP Key: 0xF59D25F0

[demime 1.01d removed an attachment of type application/pgp-signature]
Continue reading on narkive:
Loading...