Изменить: наш сервер пытается захватить пакеты со скоростью 500-600 Мбит / с, но отбрасывает пакеты «из-за ядра».
Данные записываются на твердотельные накопители и не являются узким местом.
Что мне следует искать в сетевой карте, когда я выбираю карту, которая способна обрабатывать такой объем?
Не ищу товарных рекомендаций. Просто совет по базовым технологиям.
Спасибо
Вам понадобится сетевая карта с интерфейсом PCI-e или PCI-X. И у него должен быть гигабитный чипсет Intel или Broadcom (ну или 10 Гб, конечно). Некоторые (недавние) чипсеты Atheros тоже работают хорошо. Аппаратный дизайн чипсетов других производителей просто не подходит.
Если вы используете встроенные адаптеры, проверьте документацию материнской платы, как они подключаются к шине. Я видел несколько более старые серверные платы, которые использовали PCI для встроенных сетевых адаптеров, хотя материнская плата была PCI-e.
Если вы работаете в Windows, вы можете попробовать использовать собственный инструмент Microsoft NetWork Monitor (netmon) для записи трассировок. (Вывод совместим с WireShark). Netmon интегрируется с ОС ближе, чем WinPCap, который используется WireShark, и может дать вам немного больше пропускной способности.
В любом случае: потери пакетов 0% не существует. Из-за архитектуры x86 и того, как работает ядро Windows, иногда можно увидеть потерянный пакет. Это просто не может гарантировать доставку каждого пакета ввода-вывода, который проходит через оборудование.
(Это одна из причин того, что высокопроизводительные устройства для мониторинга сети чертовски дороги. Для них требуется очень специальное оборудование и специальная ОС, чтобы обеспечить гарантированный захват на любой возможной скорости на проводной скорости.)
Я регулярно записываю данные со скоростью 1 Гбит / с на скорости передачи данных в течение нескольких часов за раз.
Мне не нужно в реальном времени видеть, что было снято. Это действительно помогает поддерживать производительность захвата. Графический интерфейс действительно замедлял бы работу.
Я использую ПК со средними характеристиками (Core-i7 первого поколения, 32 ГБ ОЗУ, 64-разрядная версия Win7) с диском SAS (не SSD).
Netmon дает мне немного лучшие захваты, чем WinPCap (около 1 отброшенного пакета в минуту по сравнению с примерно 1,3 пакета в минуту).