Могу ли я использовать DPDK в качестве модуля захвата пакетов для приложения сетевого мониторинга?
Мой пассив
network monitoring
приложению требуется, чтобы пакеты перехватывались с сетевого интерфейса (с более высокой скоростью передачи пакетов). Модуль захвата пакетов должен иметь возможность вызывать функцию мониторинга при захвате каждого пакета (а также записывать пакет в
pcap
файл).
Я думал об использовании в качестве модуля захвата пакетов в моем приложении для мониторинга (поскольку мы используем
pcap_loop
и
pfring_loop
в
libpcap
и
pfring
соответственно), но я не уверен, является ли это одним из вариантов использования или предназначен для использования в таком виде ?.
Итак, мои вопросы ... Могу ли я использовать
DPDK
выполнить мои требования ?, Если да, как начать ?.
ОС: Linux. Карнальная
версия: 4.
Версия DPDK: Последняя стабильная версия.
Захват на физическом устройстве.
Приложение захвата имеет привилегии root и будет использоваться сетевым администратором (как часть пассивного обнаружения активов).
Я хочу использовать DPDK, потому что он поддерживает захват со скоростью до 10 Гбит / с.
Спасибо.
2 ответа
Основываясь на обновлениях и пояснениях в комментариях, запрос
Can one replace an existing application which PF_RING API calls with DPDK API which is written in C?
. Простой ответ - да, это возможно .
Вот как следует начать
- определить платформу (желательно Linux / BSD, windows 21.02 все еще в работе)
- определить список поддерживаемых процессоров
- Определите сетевую карту для использования из СПИСКА сетевых адаптеров DPDK.
- Настройте среду Linux с помощью Linux Enviroment
- Изучите базовый пример / скелет для использования basicfwd
- получить начало заголовка Ethernet для пакета с помощью DPDK API
rte_pktmbuf_mtod
. В папке DPDK / examples есть много примеров, которые делают то же самое. - Вызов логики функции обработки пакетов между rx_burst и tx_burst примера / скелета.
Более новые версии libpcap могут сами использовать DPDK, по крайней мере, в Linux. Libpcap в вашей системе может быть настроен или не настроен на его использование. (Существуют также версии libpcap, модифицированные для использования PF_RING.)