[WinPcap-users] High speed UDP receiver

2004-12-21 Thread Paal Grana
Title: Message



We are working on a 
processing system which uses UDP to receive raw data.The burst data rate 
is about 325 MBit/sec andthe packet rateis 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 anyonetried 
that?

Best 
regards,

Paal 




RE: [WinPcap-users] High speed UDP receiver

2004-12-21 Thread Loris Degioanni
Paal,
no, it's not possible to increase the priority of the WinPcap driver.
Actually, changing the priority is a concept that doesn't make a lot of
sense when talking about drivrs (the packet-capture part of the winpcap
driver runs at DPC level, and therefore has higher priority than any other
process of the machine), and in every case playing with priorities rarely
improves things in these cases.
Moving processing in the kernel is sometimes a very good solution (we have
used it for our kernel-level statistics), but you really have to know what
you're doing if you want to avoid months of nightmares.
As for easy things to do:
- make tests with different cards and NIC drivers: some are remarkably
better than others
- make sure that the bottleneck is not your application. WinPcap can be as
fast as light, and it can have huge buffers, but if your application is slow
the buffers will become full and you'll see drops
- try to play with mintocopy to minimize the number of context switches

Loris

 
 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 
  
 



==
 This is the WinPcap users list. It is archived at
 http://www.mail-archive.com/winpcap-users@winpcap.polito.it/

 To unsubscribe use 
 mailto: [EMAIL PROTECTED]
==


Re: [WinPcap-users] High speed UDP receiver

2004-12-21 Thread Guy Harris
Paal Grana wrote:
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
Just out of curiosity, why are you using WinPcap rather than a UDP socket?
==
This is the WinPcap users list. It is archived at
http://www.mail-archive.com/winpcap-users@winpcap.polito.it/
To unsubscribe use 
mailto: [EMAIL PROTECTED]
==


RE: [WinPcap-users] High speed UDP receiver

2004-12-21 Thread Paal Grana
I have tried using UDP sockets, but this has resulted in high CPU load and
lots of lost packets. Ideally I would use a zero-copy UDP socket, but this
is not available yet. Even receiving UDP packets to the windows discard
port (9) installed by the Simple TCP/IP Services, results in a  quite
high CPU load with data rates above 2-300 Mbit/sec. Actually I get a lower
CPU load by sending UDP packets to a UDP port without a service installed,
using WinPcap to read the data and using WinXP SP2 Firewall to stop ICMP
packets (caused by an UDP port without a service).

Paal

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
Sent: 21. desember 2004 20:23
To: [EMAIL PROTECTED]
Subject: Re: [WinPcap-users] High speed UDP receiver


Paal Grana wrote:
 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

Just out of curiosity, why are you using WinPcap rather than a UDP socket?


==
 This is the WinPcap users list. It is archived at
http://www.mail-archive.com/winpcap-users@winpcap.polito.it/

 To unsubscribe use 
 mailto: [EMAIL PROTECTED]
==


= This is the 
WinPcap users list. It is archived at
 http://www.mail-archive.com/winpcap-users@winpcap.polito.it/

 To unsubscribe use
 mailto: [EMAIL PROTECTED]
=