Увидел свет релиз проекта PFQ 3.0, в рамках которого развивается фреймворк для написания обработчиков сетевого трафика для Linux, обеспечивающих эффективный захват сетевых пакетов и классификацию трафика. Фреймворк оптимизирован для работы на многоядерных системах и с устройствами с несколькими аппаратными очередями обработки пакетов. На базе PFQ развивается вариант библиотеки libpcap и анализатора трафика tcpdump.
Основой PFQ выступает специальный модуль ядра, в который встроен движок обработки трафика. Поддерживается работа с любыми драйверами устройств в Linux, для которых предоставляется скрипт pfq-omatic, позволяющий на основе их исходных текстов собрать оптимизированный для PFQ вариант драйвера. При использовании pfq-omatic PFQ встраивается между драйвером и ядром, задействует в драйвере буферы сокетов PFQ и организует передачу пакетов в PFQ непосредственно от драйвера.
С модулем ядра взаимодействует ряд интерфейсных библиотек, выполняемых в пространстве пользователя и позволяющих создавать обработчики трафика как на типовых языках C, C++ и Haskell, так и на специальном предметно-ориентированном языке Q-Lang (eDSL для C++11 и Haskell). Возможно написание обработчиков пакетов, их диспетчеризации между сокетами и перенаправление на другие устройства, что может быть использовано, например, для создания собственных межсетевых экранов, балансировщиков или систем ранней обработки пакетов. В состав также входит пример инструментов для диагностики сетевых проблем.
Из особенностей PFQ отмечается поддержка групп сокетов для параллельного мониторинга нескольких многопоточных приложений; cредства для распределения групп пакетов по сокетам с использованием алгоритмов рандомизированного хэширования или методов детерминированной классификации; возможность добавления для каждой группы фильтров на основе BPF (Berkeley packet filter) или VLAN. Код модуля ядра распространяется под лицензией GPLv2, а библиотеки и утилит - под лицензией BSD.
Производительность PFQ во многом зависит от используемого аппаратного обеспечения, например, на сервере с процессором Xeon и 10-гигабитным сетевым адаптером Intel 82599, PFQ позволяет обработать и перенаправить в пространство пользователя 14.8 млн пакетов в секунду, c распределением нагрузки на 2-3 потока внутри ядра.
|