Re: UDP packets loss

From: John Heffner
Date: Thu Nov 16 2006 - 14:02:00 EST


eli@xxxxxxxxxxxxxxxxxx wrote:
Hi,
I am running a client/server test app over IPOIB in which the client sends
a certain amount of data to the server. When the transmittion ends, the
server prints the bandwidth and how much data it received. I can see that
the server reports it received about 60% that the client sent. However,
when I look at the server's interface counters before and after the
transmittion, I see that it actually received all the data that the client
sent. This leads me to suspect that the networking layer somehow dropped
some of the data. One thing to not - the CPU is 100% busy at the receiver.
Could this be the reason (the machine I am using is 2 dual cores - 4
CPUs).

I still have the following argumet: the network and the network driver are
capable of transffering data at a high rate and the networking stack is
unable to keep the pace. If I used TCP probably TCP's flow control would
eventually slow the whole thing to a rate such all parts can handle. But
is there a way to overcome this situation and to avoid packets drop? If
this would happen then TCP would work at higher rates as well?? Perhaps
increase buffers sizes? Maybe the kernel is not designed to handle packets
rate like IPOIB can generate?

Increasing buffer sizes is not likely to help your problem. If the receiving machine just can't keep up, you need flow control to avoid loss. There clearly is an upper bound on the packet rate any given receiver can handle, and you are hitting it.

BTW, TCP will be significantly faster than UDP because with UDP you incur an extra full context switch on every packet.

-John
-
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html