[Winpcap-users] Win7 pcap_sendqueue_transmit performance
Monroe Comstock
monroe at inventivelabs.com
Mon Apr 25 09:53:04 PDT 2011
Hello again,
I apologize for the flurry of questions. I'm head down developing my
application at the moment and I have run into an odd behavior that I'd like
to inquire about.
I've got an application that sends about 500 packets (about 300 bytes each)
every 10ms using the pcap_sendqueue_transmit function. I'm also using
QueryPerformanceCounter to record the time it takes to do the send. My
thread that sends the packets uses its own instance of a pcap_t. I've also
tried many combinations of PCAP_OPENFLAG_MAX_RESPONSIVENESS and
PCAP_OPENFLAG_NOCAPTURE_LOCAL to see it they have any impact, yet they don't
appear to.
What I've found is that on a Vista machine (Core2 Duo 3Ghz) I can send these
packets consistently in 5ms or less. However on a Win7 (Core i7 2.8Ghz) the
same call, using the exact same code, takes upwards of 60ms (consistently)
to send the same amount of data. Moreover, if I disable the pcap send
functionality on the Win7 box and just use a normal winsock send, winsock
out performs pcap_sendqueue_transmit by a huge margin (about 15ms to send).
Be advised that I am NOT using time stamps and I send with "sync" set to 0.
Both machines have good NICs (GigE) with checksum offloading, although for
some reason I still seem to need to calculate the IP and UDP checksums
before I add the packets to the queue (Shouldn't the NIC card calculate
these for me?) . But I digress...
So, my question is: Does Windows 7 have some negative effect on the
performance of pcap_sendqueue_transmit that would cause it to have a 10 fold
increase in the transmission time? Or have I forgotten something
elementary?
Thanks again for all your help!
Monroe
More information about the Winpcap-users
mailing list