Я использую libpcap 1.4.0 для захвата пакетов с / на устройство (я использую Linux).
Я страдаю от потери пакетов, и после исследования об этом я нашел PF_RING, и теперь я рассматриваю возможность его использования.
Проблема в том, что я не совсем понимаю, почему использование PF_RING более эффективно, чем использование PF_PACKET в libpcap, когда по умолчанию в libpcap используется метод захвата пакетов «zero-copy» (начиная с libpcap 1.0.0), а также PF_RING …
Может кто-нибудь объяснить мне, почему при использовании libpcap 1.0.0 и более поздних версий использование PF_RING было бы еще более эффективным (если оно действительно более эффективным), чем его не использовать?
Заранее спасибо! 🙂
в соответствии с https://stackoverflow.com/a/8897187/288875 есть еще одна копия из буфера сокета ядра (sk_buff) в память, которую вы будете читать. PF_RING
кажется не сделать эту копию (насколько я помню, делает pfring байпас обычный механизм ядра обработки данных, полученных с сетевой карты).
Других решений пока нет …