编辑:我们的服务器正在尝试以 500-600Mb/s 的速度捕获数据包,但由于内核原因丢失数据包。
数据正在写入 SSD,并且那里不存在瓶颈。
在选择能够处理这种容量的网卡时,我应该寻找什么?
不寻求产品推荐。只寻求底层技术方面的建议。
谢谢
答案1
您需要一个带有 PCI-e 接口或 PCI-X 的 NIC。并且它必须具有 Intel 或 Broadcom 千兆位芯片组(或当然是 10 Gb)。一些(最近的)Atheros 芯片组也运行良好。其他品牌芯片组的硬件设计达不到要求。
如果您使用板载适配器,请查看主板文档,了解这些适配器如何连接到总线。我见过稍旧的服务器主板,即使主板是 PCI-e,也使用 PCI 作为板载 NIC。
如果您在 Windows 上运行,您可以尝试使用 Microsoft 自己的 NetWork Monitor (netmon) 工具来捕获跟踪。(输出与 WireShark 兼容)。Netmon 与操作系统的集成度比 WireShark 使用的 WinPCap 更高,可能会为您提供更多的吞吐量。
无论如何:0% 数据包丢失是不存在的。由于 x86 架构和 Windows 内核的工作方式,您有时会看到丢失的数据包。它无法保证通过硬件的每个 IO 数据包都能交付。
(这就是高端网络监控设备如此昂贵的原因之一。它们需要非常特殊的硬件和自定义操作系统才能保证以任何可能的速度进行线速捕获。)
我一次以线速运行常规 1 Gb/s 捕获几个小时。
我不需要实时查看捕获的内容。这确实有助于保持捕获性能。GUI 确实会减慢速度。
我使用中等规格的工作站 PC(第一代 Core-i7、32G RAM、Win7 64 位)和 SAS 磁盘(不是 SSD)。Netmon
给我的捕获效果比 WinPCap 略好(每分钟大约丢失 1 个数据包,而每分钟大约丢失 1.3 个数据包。)