[Winpcap-users] WinPCAP Packet ordering

neil.powell neil.powell neil.powell at HERRHAIR.COM
Fri Feb 25 00:44:33 PST 2011


Hello,
    
 I would like to ask a question to the mailing list; I apologise if this has
been
 answered before I did search the archive but didn't see anything relating to my
 question.
    
 Firstly let me explain what I am trying to achieve...
    
    
 I am writing a Windows application that is targeting Windows 7 64bit
 multiprocessor machines.  The basic idea is as follows....  I have a piece of
 hardware (FPGA based) that is delivering layer II packets over a Gbit network;
 each packet is NO more than 1500 bytes.  The data rate pushed out of the FPGA
is
 typically 50Mbytes per sec or lower.
    
 The purpose of the Windows application is the capture each packet off the
 network, do some quick data integrity checks on the payload and dump it to disk
 ASAP.  The FPGA has a 12bit packet counter (0-4095); this count is placed
inside
 our bespoke payload so that the data can be reconstituted on the PC. During the
 data integrity checks I check the packet count to ensure the packets are in
 order before I begin reconstituting the data; I also sanity check the timestamp
 of each packet to make sure it too is increasing.
    
    
  Here is my question/problem.....
  On multicore 64 bit machines (with a 64 bit OS) can the packets come out of
 order?
  My justification for the question is as follows. During debug of the windows
 application I report the timestamp and pkt number of each packet.  Whilst it
 appears that I do not drop packets I do see packets numbers come out of order. 
 Here is a debug trace.
  
    Timestamp             Pkt #
    15:38:40:415412   2222
    15:38:40:415413   2223
    15:38:40:415424   2224
    15:38:40:415425   2225
    15:38:40:415426   2226
    15:38:40:415428   2227
    15:38:40:415428   Found Packet: 2236 Expecting Packet: 2228
    15:38:40:415430   2237
    15:38:40:415431   2238
    15:38:40:415433   2239
    15:38:40:415433   Found Packet: 2228 Expecting Packet: 2240
    15:38:40:415434   2229
    15:38:40:415445   2230
    15:38:40:415447   2231
    15:38:40:415447   2232
    15:38:40:415448   2233
    15:38:40:415451   2234
    15:38:40:415452   2235
    15:38:40:415453   Found Packet: 2240 Expecting Packet: 2236
    15:38:40:415454   2241
    15:38:40:415456   2242
    15:38:40:415457   2243
    15:38:40:415467   2244
    15:38:40:415469   2245
    15:38:40:415471   2246
    
 If you follow the trace you can see that I don't drop packets but they are
 indeed out of order.  
 I must stress that this situation is NOT frequent but is exacerbated by high
 data rates or heavy disk usage.
 I have spent some time eliminating all the obvious… debug output buffering, 
 FPGA output and disk writes all of which have drawn a blank.
  
 I am using WinPCAP in the following manner:
  
 pcap_open:
 snaplen = 1500;
 flags =

PCAP_OPENFLAG_PROMISCUOUS|PCAP_OPENFLAG_NOCAPTURE_LOCAL|PCAP_OPENFLAG_MAX_RESPONSIVENESS;
 read_timeout = 0;
  
 pcap_setbuff:
 100Mb
  
 pcap_setmintocopy:
 0
  
  
 Thank you in advance
  
  
  
 Neil Powell
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winpcap.org/pipermail/winpcap-users/attachments/20110225/70fc96c5/attachment.html>


More information about the Winpcap-users mailing list