В чем разница между технологией PF_RING и PACKET_RX_RING

Я наткнулся на PF_RING, читая документацию ядра PACKET_MMAP ( https://www.kernel.org/doc/Documentation/networking/packet_mmap.txt).

Может кто-нибудь объяснить разницу между реальной технологией (детали реализации и различия) между PF_RING и PACKET_RX_RING/PACKET_TX_RING в PACKET_MMAP

0 ответов

PF_RING имеет два очень разных режима работы.

  • Тот, который называется "vanilla", работает "выше" уровня драйвера, поэтому он должен быть в основном похож на PACKET_MMAP. Оба они просто совместно используют буфер между пользовательским приложением и сетевым стеком. Я думаю, что PF_RING также отбрасывает пакеты, так что можно сказать, что это эксклюзив. PACKET_MMAP, напротив, позволяет стеку ядра обрабатывать пакеты после копирования в пользовательское пространство.
  • Режим "ДНК" или "нулевое копирование" реализует обход ядра. Вместо копирования данных в общий кольцевой буфер используются сами буферы драйвера. Это, очевидно, требует специальных драйверов и означает, что никакие другие процессы не смогут получать трафик от затронутых интерфейсов. Поддерживаются многие обычные карты. Благодаря этому сокращенному копированию, переключениям контекста и прерываниям (при желании вы можете выполнять опрос) вы можете значительно увеличить производительность. Наиболее близкой к этому восходящей технологии является AF_XDP.

Возможно, я что-то ошибся (я просто погуглил немного из любопытства и никоим образом не являюсь экспертом в PF_RING), поэтому следите за другими ответами. Я действительно думаю, что большая часть того, что я написал, верна.

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