<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    On 04/29/2011 10:41 AM, Jeff Murphy wrote:
    <blockquote
      cite="mid:78D07673-54A0-402F-8ED0-F103303DE672@...2499..."
      type="cite">Attached. Here's a suggested blurb (based on the
      Napatech blurb), feel free to edit 
      <div><br>
      </div>
      <div><br>
      </div>
      <div><span class="Apple-style-span" style="color: rgb(85, 85, 85);
          font-family: Arial,Helmet,Freesans,sans-serif; font-size:
          16px; line-height: 16px;">
          <h3 style="margin: 0px; padding: 0px 0px 10px; border-width:
            0px; outline-width: 0px; font-size: 16px; vertical-align:
            baseline; background-color: transparent; color: rgb(0, 134,
            192);">PCAPRR External DAQ</h3>
          <p style="margin: 0px 0px 10px; padding: 0px; border-width:
            0px; outline-width: 0px; font-size: 15px; vertical-align:
            baseline; background-color: transparent; color: rgb(85, 85,
            85); line-height: 1.2em;">PCAPRR can be used to read from
            multiple network interfaces in cases where those interfaces
            can not be bonded together (e.g. when using Endace
            cards). To build this requires libpcap library. This is <b
              style="margin: 0px; padding: 0px; border-width: 0px;
              outline-width: 0px; font-size: 15px; vertical-align:
              baseline; background-color: transparent; color: rgb(85,
              85, 85);">NOT</b> a Sourcefire used or produced module,
            and support questions should be directed to <a
              moz-do-not-send="true"
              href="mailto:jcmurphy@...3179...">Jeff Murphy</a>. </p>
          <div><br>
          </div>
        </span></div>
      <br>
    </blockquote>
    Cool.  After looking at the modifications you made, I think you're
    really going to run into some issues with basic fairness, though. 
    Basically, assuming the normal Snort method of calling daq_acquire
    (one second timeout, no packet count limit, single-threaded), if one
    card is getting a decent amount of traffic, the other cards will
    never be read from in the round robin implementation.  It's an issue
    I ran into when considering how to allow Snort to open and acquire
    from multiple DAQ module instances simultaneously, and I never
    really came up with a great solution.  If you set a relatively low
    upper bound on the packets processed per acquire call (or in your
    case, pcap_dispatch() call), you will start incurring a huge amount
    of overhead from repeatedly jumping in and out of the call chain
    down to the cards.  Also, if you ever hit the timeout on the card
    you're currently processing, all of the packets waiting on the other
    cards will languish for at least that amount of time (unless you
    signal the caller when a packet is received on another card, but
    even then you have to hope it was on the next card in your round
    robin).  Setting a low or non-existent (non-blocking) timeout helps
    with this, but effectively ends up as a magnified version of the
    previous overhead issue.<br>
    <br>
    Please take the above as constructive criticism/food for thought. 
    I'm really glad that people are building their own DAQ modules and
    hope that they continue to do so.<br>
    <br>
    -Michael<br>
  </body>
</html>