Как запустить Netfilter (iptables, nftables) с DPDK

Я ищу быстрый межсетевой экран с отслеживанием состояния в Linux, который может обрабатывать множество пакетов и отправлять некоторые из них внешним программам.

Можно ли заставить netfilter (iptables, nftables) работать с Intel DPDK для повышения производительности?


person Konstantin    schedule 09.02.2015    source источник


Ответы (3)


DPDK имеет «сетевой интерфейс ядра», который работает как устройство tap/tun, но не требует копирования. Используя их, вы можете выполнять RX/TX в пользовательском пространстве, а затем передавать пакеты в сетевой стек Linux. Я не знаю, принесет ли это вам большую производительность, кроме возможного устранения некоторых накладных расходов на IRQ.

Некоторые другие варианты, если вы не женаты на netfilter, могут заключаться в использовании одного из сетевых стеков BSD пользовательского пространства (например, libuinet) или базовое ядро поверх DPDK.

person Paul Coccoli    schedule 24.03.2015
comment
Пол, отличный совет по стекам пользовательского пространства! Большое спасибо! - person Konstantin; 24.03.2015

Вам необходимо развернуть программный стек ускорения от 6WIND, чтобы продолжать использовать iptables, iproute2 и т. д. DPDK не предоставляет сетевые стеки.

Предполагая, что вы используете iptables ядра Linux, записи маршрутов, записи IPsec и т. д., используя iptables, setkey, iproute2 и т. д. без изменений; затем программные стеки 6WIND перекладывают обработку пакетов на свои стеки ускорения.

Таким образом, вы можете оставить инструменты администрирования Linux (веб-интерфейс, Openstack и т. д.), в то время как программный стек 6WIND позаботится о производительности. Он отлично работает на DPDK и других процессорах, таких как Tilera, Cavium Octeon, Broadcom XLP, ...

См. их веб-сайт для получения дополнительной информации.

person Vincent    schedule 10.02.2015
comment
Есть ли аналогичная реализация с открытым исходным кодом? - person Konstantin; 10.03.2015
comment
Это больше реклама, чем полный ответ. - person Paul Coccoli; 24.03.2015
comment
@Paul, полностью с тобой согласен. Я не заметил особого внимания к вопросу и решил закрыть его, приняв единственный ответ. - person Konstantin; 24.03.2015

Я пробовал DPDK KNI использовать iptables в сетевом фильтре Linux. Это работало, но общая производительность была немного ниже, чем у iptalbes на чистом ядре.

Согласно моему простому эксперименту с NAT, iptables обеспечивал скорость 290 Мбит/с по каналу 1G для пакетов размером 64 байта. А iptables с КНИ показал 240Мбит/с.

Хотя DPDK KNI работает в режиме PMD и устраняет прерывания, он не увеличивает пропускную способность, поскольку ядро ​​Linux также использует NAPI (новый API), который изменяет режим времени выполнения с прерывания на опрос и наоборот.

Когда я запустил свое простое приложение DPDK для NAT, оно показало 761 Мбит/с, что теоретически является почти максимальной пропускной способностью для пакетов размером 64 байта.

Я думаю, что softirq в ядре Linux потребляет большую часть времени для обработки пакетов.

person gridstation    schedule 07.10.2015