send(2) does not block, send(2) man page wrong?

Julian Elischer julian at elischer.org
Mon Jan 26 10:53:59 PST 2004


do what ping does (ping -f)
when you get an ENOBUFS do a usleep for 1 mSec.
and then send it again.


On Mon, 26 Jan 2004, Stuart Pook wrote:

> > On 23 Jan 2004, Don Lewis wrote:
> > > the send does not give an error: the packet is just thrown away.
> > 
> > Which is the same result as you would get if the bottleneck is just one
> > network hop away instead of at the local NIC.
> 
> But it isn't. I'm broadcasting onto the local network.  With Linux and
> Solaris (which implement what FreeBSD send(2) says), it is so easy: I just
> send(2) away, and because the send blocks when the kernel buffer space is
> full, I lose very few packets.  With FreeBSD, I lose 60% of the packets.
> (The aim is to broadcast onto a private 802.11b network.)
> 
> If I don't want to saturate the network then I will use kernel level
> traffic shaping to limit the outgoing bandwidth.  I have already done this
> on Linux when I was broadcasting onto my 802.11b network via an access
> point connected via 100Mbits/s Ethernet.  I just used traffic shaping
> to limit the outgoing traffic on that Ethernet interface to 3Mbits/s.
> I didn't have to change my program at all.  (At one point I did try
> to put the delays (with nanosleep) into my program but it worked very
> badly because the scheduling delays were too big.  The kernel does it
> so much better.) Once again it is vital that send blocks.
> 
> I guess that I'm out of luck with *BSD.  I hope that someone will update
> the send(2) man page so that the next person who wants to do what I'm
> doing will know that it isn't possible with FreeBSD.
> 
> Stuart
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
> 



More information about the freebsd-hackers mailing list