Hi Michael,
Thanks for your help.
From the first use of Winpcap I had the buffer size increased to
receive 640 packets (need only 64 in each chunk of data transfer), so
the buffer size is not a solution. Without buffer increased the problem
is much worse, of course, and I could no get the high rates of data
throughput.
I also tried the buffer size to be set to exactly the amount I need to
transfer in one chunk of data (64 packets 8234 bytes each) and that does
not help.
I will play more with the buffer size. Your analysis that these numbers
(default buffer size of 256,000 and 31 packets transmission of 263488)
is very close to what I see. May be it is indeed something is there with
the buffer size function.
I see that if I make the buffer very large when my program starts the
memory usage is increased to that amount of buffer set in my code,
therefore I thought that buffer size is set correctly.
Because we use UDP there is obviously no flow control. I am sending data
from my detector and each image is 64 packets. I have control bits in
the first packet, so in my computer I can recognize the first packet and
if I miss some, I just skip the packets till reach to the next frame/image.
Thanks,
Anton
I'll also note that 31*8234 = 255254 and 32*8234 = 263488 -- which is
right at the default 256,000 user buffer size.
I think that's a big clue that increasing your buffer size will help.
Michael D. Black
Senior Scientist
NG Information Systems
Advanced Analytics Directorate
------------------------------------------------------------------------
*From:* [email protected]
[[email protected]] on behalf of Anton Tremsin
[[email protected]]
*Sent:* Friday, February 04, 2011 11:39 PM
*To:* [email protected]
*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:* [email protected]
[mailto:[email protected]] *On Behalf Of *Mark
Pizzolato - WinPCap-Users
*Sent:* Friday, January 28, 2011 11:57 AM
*To:* [email protected]
*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:* [email protected]
[mailto:[email protected]] *On Behalf Of *Anton Tremsin
*Sent:* Friday, January 28, 2011 11:50 AM
*To:* [email protected]
*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
[email protected]
https://www.winpcap.org/mailman/listinfo/winpcap-users
_______________________________________________
Winpcap-users mailing list
[email protected]
https://www.winpcap.org/mailman/listinfo/winpcap-users
_______________________________________________
Winpcap-users mailing list
[email protected]
https://www.winpcap.org/mailman/listinfo/winpcap-users