We are working on a
processing system which uses UDP to receive raw data. The burst data rate
is about 325 MBit/sec and the packet rate is about 28500 packets/sec.
Our challenge is to receive these data without loosing anything (or as little as
possible). We are using WinPcap 3.1 beta 2 and our software is written in
VS2003/C++. Ther kernel buffer has been increased to 50 Mbyte. The computer is a
3.2 GHz dual Xeon running Win XP Prof. Data is received in bursts of up to 0,5
sec.
Our experience so
far is that we loose about 3-5% when we do simple processing parallell to data
reception. The data receiver is running in a separate thread and I have tried to
increase the priority, but this did not make a large improvement.
When only receiving
data and not doing anything else I am able to receive almost 100% of the data.
This, however, is not a good solution for us, as we are trying to make a close
to realtime processing system.
My question is: is
it possible to recompile the WinPcap kernel driver so that the driver gets a
higher priority? Or can anyone suggest a good way to receive data without loss
and do processing at the same time? I have also been thinking of moving some of
our first-line processing into the kernel-driver. Has anyone tried
that?
Best
regards,
Paal