I have been looking for some information on what the Linux kernel offers in
regard to async UDP traffic but haven't had much luck so I thought I would
throw this out to the list.
I work for a software company that make software MCUs (Multipoint control
units - Video Conferencing). In a pure sense they are simply media routers
which handle almost exclusively UDP traffic. We currently run under Linux,
Solaris and Windows but because of the lack of any real asynchronous UDP
mechanisms in Linux or Solaris we are getting the best performance on our
Windows boxes. There are a lot of *NIX guys around here (including me) who
don't like that Windows takes the cake. We are working with Sun on improving
the async UDP in Solaris 9 but haven't had any real success yet.
Currently we do the same thing in Linux that we do for Solaris; open up
threads for the UDP traffic and have them wait for the data. This obviously
leads to rather poor performance. I know a lot more about the specifics of
our Solaris issues but I assume they apply to Linux as well. Currently
Windows gives us the ability to send out packets asynchronously and then
report to us where the packets have gone. Along with that when data is
received it can be copied directly from the kernel to our app. For our other
OSes it needs to be copied into user space and then into our app.
I don't really know of any answers right now but I would love to hear back
from anyone about what we might be able to do with this. We don't have
nearly the resources we used to so we might be over looking some facilities
offered in the 2.4 kernel that weren't in the 2.2 so I would love to hear
anything.
Thanks,
Brian Raymond
> regard to async UDP traffic but haven't had much luck so I thought I would
> throw this out to the list.
What do you mean by "asynchronous UDP" - all UDP is asynchronous. You ask
it to send it and it gets queued or dropped somewhere - its not subject
to flow control like TCP
Can you explain more ?
Alan
On Mon, Nov 26, 2001 at 09:43:15PM +0000, Alan Cox wrote:
> What do you mean by "asynchronous UDP" - all UDP is asynchronous. You ask
> it to send it and it gets queued or dropped somewhere - its not subject
> to flow control like TCP
>
> Can you explain more ?
Async receive helps a lot when you've got tons of open sockets (needed to
get queuing right). I think that the current tx mechanism is broken; it's
quite useful to get backpressure from network devices for things like mlppp
implemented the right way (as a network protocol, instead of its own layer).
-ben