[Winpcap-users] Delay receiving packets - wrongfunctionality ofpcap_setmintocopy()

Black, Michael (IS) Michael.Black2 at ngc.com
Sat Feb 5 06:32:17 PST 2011


#1 64*82334=526967 and the WIN32_DEFAULT_BUFFER_SIZE - 256000 -- Did you increase your buffer size via pcap_setbuff to allow for this?



#2 Can you run your packet generator on the same box as your capture instead of the FPGA?  Remove that from the equation and see if you get the same behavior.



#3 How are you handling flow control since UDP has no flow control?



Michael D. Black

Senior Scientist

NG Information Systems

Advanced Analytics Directorate



________________________________
From: winpcap-users-bounces at winpcap.org [winpcap-users-bounces at winpcap.org] on behalf of Anton Tremsin [ast at ssl.berkeley.edu]
Sent: Friday, February 04, 2011 11:39 PM
To: winpcap-users at winpcap.org
Cc: Gianluca Varenni
Subject: EXT :Re: [Winpcap-users] Delay receiving packets - wrongfunctionality ofpcap_setmintocopy()

Gianluca,

Thanks a lot for helping me. I am in a dire situation since my detector really needs that problem to be solved before our experiments in couple of months time (need to do a lot of debugging and code writing after Winpcap issue is solved).

I am not loosing packets. Sorry if I made it confusing.

The packets always arrive into my C code (although Wireshark may loose them, maybe that was a confusion with packets being lost). I only need my C code to work right.  The rest of packets come only after the timeout.

I varied timeout from 1 ms to 20 sec and the effect is the same. With timeout 0 - the packets do not arrive until I push more packets into Chelsio card and these, in turn, push the once which were already in some buffer.

I am using Chelsio card, but Winpcap I downloaded from the official website (version 4.1.2).

The problem seems to be as if the function setmintocopy() does not work right and the driver decides by itself how much to buffer before sending it to me. One strange thing - the number of packets being delivered to me changes from time to time, however very often number 31 (31 packets, 8234 bytes each) arrive in a single chunk. Sometimes it is 62 packets, sometimes other numbers, e.g. 57. etc.

I will be very glad if someone ca advise something I can try to resolve that issue.

Thanks again,

Anton
Anton,

You say that you are using a Chelsio board. Are you using the official version of WinPcap or Chelsio provided you with a custom one? What do you set as timeout and mintocopy?

Have a nice day
GV


From: winpcap-users-bounces at winpcap.org<mailto:winpcap-users-bounces at winpcap.org> [mailto:winpcap-users-bounces at winpcap.org] On Behalf Of Mark Pizzolato - WinPCap-Users
Sent: Friday, January 28, 2011 11:57 AM
To: winpcap-users at winpcap.org<mailto:winpcap-users at winpcap.org>
Subject: Re: [Winpcap-users] Delay receiving packets - wrong functionality ofpcap_setmintocopy()

Ho Anton,

My first question to you would be:

WHY are you using WinPcap to receive UDP packets?

This sounds like a job for a winsock application….


-          Mark Pizzolato

From: winpcap-users-bounces at winpcap.org<mailto:winpcap-users-bounces at winpcap.org> [mailto:winpcap-users-bounces at winpcap.org] On Behalf Of Anton Tremsin
Sent: Friday, January 28, 2011 11:50 AM
To: winpcap-users at winpcap.org<mailto:winpcap-users at winpcap.org>
Subject: [Winpcap-users] Delay receiving packets - wrong functionality ofpcap_setmintocopy()

I hope someone can help my problem receiving packets in Windows7

I am sending data by UDP packets from an FPGA through 10GB card (Chelsio). Using VC++ 2010 to compile code to receive them.

All packets arrive, no losses seen, but the problem is with the proper operation of pcap_setmintocopy() function.

I send 64 packets with 8234 bytes each. Receiving them through pcp_next_ex() and I only get 31 packets (sometimes 62, sometimes 47, 50 packets) before the timeout occurs. After timeout the rest of the packets arrives.

I set the minimum amount of data in the kernel buffer that causes a read from the application to return (unless the timeout expires) to be 1 byte or it to be all 8234x64 bytes, no difference. Looks like the setmintocpy function has no effect on my kernel buffer to be copied to my application. If I send another set of 64 packets - data arrives into pcp_next_ex(), still only in lamp of 31 (62, 47,50) packets

That is a big problem for my application.

Is there anything I am doing wrong or need to change something in the system/driver to make setmintocopy function to operate properly?

Thanks a lot for your help,

Anton Tremsin


--



Anton S. Tremsin, Ph.D.

Space Sciences Laboratory

University of California at Berkeley

Berkeley, CA 94720

Tel: (510) 642 4554


_______________________________________________
Winpcap-users mailing list
Winpcap-users at winpcap.org<mailto: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/20110205/e5e9b560/attachment.html>


More information about the Winpcap-users mailing list