[Winpcap-users] WinPCAP packets capture delay..
Gianluca Varenni
gianluca.varenni at cacetech.com
Tue Sep 21 08:26:43 PDT 2010
The WinPcap driver is not dispatched as a thread, at the end of the story it's mainly interrupt driven.
Have a nice day
GV
From: "Fish" (David B. Trout)
Sent: Monday, September 20, 2010 7:49 PM
To: winpcap-users at winpcap.org
Subject: Re: [Winpcap-users] WinPCAP packets capture delay..
Yes, you are correct. Adjusting "timeBeginPeriod" does not affect QueryPerformanceCounter, but since it does affect task dispatching (apparently) I thought setting it to a lower value might help to cause tasks (including the WinPCap device diver (NPF.sys)) to be dispatched more quickly (i.e. with less delay).
I have no idea what delay/precision Alimjan is referring to.
--
"Fish" (David B. Trout)
fish at softdevlabs.com
From: winpcap-users-bounces at winpcap.org [mailto:winpcap-users-bounces at winpcap.org] On Behalf Of Gianluca Varenni
Sent: Monday, September 20, 2010 4:49 PM
To: winpcap-users at winpcap.org
Subject: Re: [Winpcap-users] WinPCAP packets capture delay..
Importance: High
Timer coalescing/timeBeginPeriod in practice change the scheduling quantum from 10-15ms (depending on the specific windows version) to around 1ms and does not affect QueryPerformanceCounter (which is not based on that timer).
What is the timestamp precision and delay that we are talking about?
Have a nice day
GV
From: "Fish" (David B. Trout)
Sent: Sunday, September 19, 2010 5:06 PM
To: winpcap-users at winpcap.org
Subject: Re: [Winpcap-users] WinPCAP packets capture delay..
You're welcome.
As to your problem there might not be anything you can do about it. Then again however, there might be some things you can do to reduce the effect. Things like using Windows 7 (with its Timer Coalescing feature) instead of Windows XP. Disabling "SpeedStep" if your system supports it (so as to increase the accuracy of QueryPerformanceCounter which is what WinPCap uses to timestamp all its received packets with). You should also check to make sure you have the latest BIOS version installed too.
I doubt it will help any (esp. if you're using Windows 7 with its Timer Coalescing feature), BUT... you might try using "timeBeginPeriod" and "timeEndPeriod", which I've heard sometimes increases the accuracy of Windows's timers.
Finally, many (if not all) of the issues listed in my post to yulou liu ("About the packets loss, what is the bottleneck?") quite likely apply in your case too. That is to say, if you're doing using older single-processor hardware using an older version of Windows, etc, then it's hardly surprising that the timestamps are inconsistent from one another. Windows can only do one thing at a time with only one processor, and even with multiple processors there are bottlenecks involved when you have unnecessary services running and/or unnecessary applications running.
If you're truly interested in obtaining the most accurate timings possible I would use dedicated hardware specifically for that purpose (or at the very least a real-time operating system and not a consumer level operating system like Windows).
Describe your hardware and operating environment again?
--
"Fish" (David B. Trout)
fish at softdevlabs.com
From: winpcap-users-bounces at winpcap.org [mailto:winpcap-users-bounces at winpcap.org] On Behalf Of Alimjan Kuramshin
Sent: Sunday, September 19, 2010 5:46 AM
To: winpcap-users at winpcap.org
Subject: Re: [Winpcap-users] WinPCAP packets capture delay..
Importance: High
Hi, Devid! Maaany thanks for Your reply. NO, it's just an example MAC's, actually i'm using hardware MAC's. And one more thing, my PC (laptop) connected directly to the other PC (or custom device, it doesn't mater i guess)..
Many thanks for Your attention, i've spend about 6-8 month with this problem, and still no luck :(
19.09.2010, в 15:25, Fish (David B. Trout) написал(а):
FYI: be careful with the MAC address you choose.
Any MAC address with the 0x01 bit on in the first byte is considered an all-stations broadcast.
Is that what you actually intended to do? Send 10,000 packets to ALL/every network adapter on your local network?? (if your host has more than one network adapter on the same physical network segment then they'll both receive every packet.)
If you need a MAC address to test with, the IANNA has reserved the range 00-00-5E-00-00-00 through 00-00-5E-FF-FF-FF just for that purpose.
See the section "IANA ETHERNET ADDRESS BLOCK - UNICAST USE" (about 0.75 of the way down the web page) in the following document:
http://www.iana.org/assignments/ethernet-numbers
--
"Fish" (David B. Trout)
fish at softdevlabs.com
From: winpcap-users-bounces at winpcap.org [mailto:winpcap-users-bounces at winpcap.org] On Behalf Of Alimjan Kuramshin
Sent: Saturday, September 18, 2010 2:33 PM
To: winpcap-users at winpcap.org
Subject: [Winpcap-users] WinPCAP packets capture delay..
Importance: High
Hello!
Gianluca, can u run this code on Your machine and running the Wireshark save the log and send it to me, please..
Is there any delays, i mean delays between the packets that Wireshark (winpcap) capture?
P.S. code from WinPcap documentation, sending packets, not one, but 10000 (or 1000000)..
#include <stdlib.h>#include <stdio.h> #include <pcap.h> void main(int argc, char **argv){pcap_t *fp;char errbuf[PCAP_ERRBUF_SIZE];u_char packet[100];int i;volatile int n_pkts = 10000; // 1000000 /* Check the validity of the command line */ if (argc != 2) { printf("usage: %s interface (e.g. 'rpcap://eth0')", argv[0]); return; } /* Open the output device */ if ( (fp= pcap_open(argv[1], // name of the device 65536, // portion of the packet to capture (only the first 100 bytes) PCAP_OPENFLAG_PROMISCUOUS, // promiscuous mode 1000, // read timeout NULL, // authentication on the remote machine errbuf // error buffer ) ) == NULL) { fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", argv[1]); return; } /* Supposing to be on ethernet, set mac destination to 1:1:1:1:1:1 */ packet[0]=1; packet[1]=1; packet[2]=1; packet[3]=1; packet[4]=1; packet[5]=1; /* set mac source to 2:2:2:2:2:2 */ packet[6]=2; packet[7]=2; packet[8]=2; packet[9]=2; packet[10]=2; packet[11]=2; /* Fill the rest of the packet */ for(i=12;i<100;i++) { packet[i]=(u_char)i; } while (n_pkts--) /* Send down the packet */ if (pcap_sendpacket(fp, packet, 100 /* size */) != 0) { fprintf(stderr,"\nError sending the packet: %s\n", pcap_geterr(fp)); return; } return;}/* EOF */Thanks, bye..
_______________________________________________
Winpcap-users mailing list
Winpcap-users at winpcap.org
https://www.winpcap.org/mailman/listinfo/winpcap-users
--------------------------------------------------------------------------------
_______________________________________________
Winpcap-users mailing list
Winpcap-users at winpcap.org
https://www.winpcap.org/mailman/listinfo/winpcap-users
--------------------------------------------------------------------------------
_______________________________________________
Winpcap-users mailing list
Winpcap-users at winpcap.org
https://www.winpcap.org/mailman/listinfo/winpcap-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.winpcap.org/pipermail/winpcap-users/attachments/20100921/96a01333/attachment-0001.htm
More information about the Winpcap-users
mailing list