Является ли libpcap быстрее, чем чтение сокета для межпроцессного взаимодействия на локальном хосте?

У меня есть (унаследованное) специализированное приложение для отслеживания пакетов, которое анализирует Ethernet с помощью libpcap и анализирует полученные данные. "Анализатор"

Я добавляю другой процесс, который считывает "данные" с карты PCI, и я хотел бы подать эти данные в анализатор. "Отправитель".

И отправитель, и анализатор находятся на одном хосте, работающем в разных процессах.

Со стороны отправителя достаточно просто прочитать карту PCI и отправить данные через сокет. Однако на принимающей стороне я могу либо: а) изменить существующий код libpcap и установить соответствующий фильтр, либо б) просто открыть и прочитать сокет.

Скорость и производительность - важный параметр. Выполняется несколько пар процессов отправитель / получатель, и общее количество для всех них составляет около 1 Гбит / с.

Любое понимание того, какой метод будет быстрее, эффективнее или "лучше"?

Модификация кода получателя libpcap была бы довольно грязной, но, читая другие посты, pcap должен использовать множество хитростей для повышения производительности (mmap и т. Д.).

(Но не будет ли чтение локального сокета использовать те же трюки?)

Спасибо!

(системная среда - ядро ​​Centos 3.16)

0 ответов

Другие вопросы по тегам