【问题标题】:Is WinPcap optimal for 1 gbps NICWinPcap 是 1 gbps NIC 的最佳选择吗
【发布时间】:2016-05-26 20:35:02
【问题描述】:

图像数据以 200 mb/s 的速度进入我的 NIC。我正在使用 winpcap 来捕获这些数据。这些数据基本上只需要直接进入我的应用程序级别 - 我不需要任何过滤器。为了最大化效率,我的第六感告诉我两个数据存储(从 NIC 驱动缓冲区到 Winkpcap 内核缓冲区;从内核缓冲区到我的用户缓冲区)效率低下并且浪费 CPU。可以优化系统吗?还是有更好的方法来实现这一点? (可能是windows的pf_ring类型解决方案)

【问题讨论】:

  • 请见谅(我不怎么做网络编程),但为什么不直接从应用程序中的接口读取数据(例如,使用原始套接字)?跨度>
  • 不,这很好。我相信它被称为内核绕过,但我找不到任何适用于 windows 的东西——只有 linux
  • 对于 Windows 中的内核绕过,您需要自己做 NIC 驱动程序。使用 WinPcap,它会得到最好的。

标签: c++ networking pcap libpcap winpcap


【解决方案1】:

你可以这样做:

  • 使用 pcap_setbuff 将 WinPcap 缓冲区配置为较大的值(例如 100MiB)
  • 将读取超时设置为较大的值,(例如 1 秒),参数 read_timeoutpcap_open
  • 最重要:确保从缓冲区中取出数据包的速度比 NIC 接收数据包的速度快,例如 200Mbps,您需要每个数据包 60B / 200Mbps = 2.4µs 以确保没有数据包被丢弃。

【讨论】:

    【解决方案2】:

    如果您使用的是 Windows 7 或更高版本,您也可以尝试 Npcap

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-18
      • 2019-11-05
      • 2014-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 1970-01-01
      相关资源
      最近更新 更多