The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В ядре Linux 5.7 будут ускорены сложные сопоставления по спискам в NetFilter

16.03.2020 08:24

Разработчики подсистемы фильтрации и модификации сетевых пакетов Netfilter опубликовали набор патчей, значительно ускоряющих обработку больших списков сопоставления (nftables set), в которых требуется проверка сочетания подсетей, сетевых портов, протокола и MAC-адресов. Патчи уже приняты в ветку nf-next, которая будет предложена для включения в состав ядра Linux 5.7. Наиболее заметного ускорения удалось добиться благодаря задействованию инструкций AVX2 (в дальнейшем планируется опубликовать подобные оптимизации на базе инструкций NEON для ARM).

Оптимизации внесены в модуль nft_set_pipapo (PIle PAcket POlicies), решающий задачу сопоставления содержимого пакета с применяемыми в правилах фильтрации произвольными диапазонами состояния полей, такими как диапазоны IP и сетевых портов (nft_set_rbtree и nft_set_hash манипулируют сопоставлением интервалов и прямым отражением значений). Векторизированная при помощи 256-разрядных инструкций AVX2 верcия pipapo на системе с процессором AMD Epyc 7402 показала прирост производительности на 420% при разборе 30 тысяч записей, включающих связки порт-протокол. Прирост при сопоставлении связки из подсети и номера порта при разборе 1000 записей составил 87% для IPv4 и 128% для IPv6.

Другая оптимизация, позволяющая использовать 8-битовые группы сопоставления вместо 4-битовых, также показала ощутимый прирост производительности: 66% при разборе 30 тысяч записей порт-протокол, 43% - подсеть_IPv4-порт и 61% - подсеть_IPv6-порт. В сумме, с учётом оптимизаций AVX2, производительность pipapo увеличилась в указанных тестах на 766%, 168% и 269% соответственно. Полученные для сложных сопоставлений характеристики опережают проверки единичных полей в rbtree (за исключением теста связки порт+протокол), но пока отстают от прямых проверок при помощи хэшей и drop-обработчиков на базе netdev.



  1. Главная ссылка к новости (https://lore.kernel.org/netfil...)
  2. OpenNews: Разработчики Netfilter официально объявили инструментарий iptables устаревшим
  3. OpenNews: Бывший лидер Netfilter прекратил дело о нарушении GPL и выплатит судебные издержки
  4. OpenNews: Разработчики Netfilter представили замену iptables
  5. OpenNews: Для ядра Linux предложен новый пакетный фильтр bpfilter
  6. OpenNews: Выпуск пакетного фильтра nftables 0.9.3
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/52548-netfilter
Ключевые слова: netfilter, optimization, avx2, linux, kernel
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (63) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Константин (??), 09:16, 16/03/2020 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –13 +/
     
  • 1.2, Аноним (2), 09:20, 16/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –22 +/
    > прирост производительности на 420%

    Что они там курят?

     
     
  • 2.3, Аноним (3), 09:24, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Да.
     
     
  • 3.10, Омоним (?), 09:44, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Отлично
     
  • 2.12, anonymous (??), 09:52, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +15 +/
    > Что они там курят?

    Документацию.

     
     
  • 3.55, Аноним (55), 20:44, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Файрвол - это сила! Даешь отпор вредоносам и подозрительному трафику! 💪💪💪
     
  • 2.15, YetAnotherOnanym (ok), 10:27, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    А что не так? Было 1000 пакетов за отрезок времени, стало 5200, вот вам и прирост 420%.
     
     
  • 3.21, A.Stahl (ok), 11:39, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Каждый ЛОРовец точно знает,
    Что больше сотни процентов не бывает!
     
     
  • 4.23, Michael Shigorin (ok), 11:47, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Каждый сто сорок шестой?
     
     
  • 5.28, Аноним (28), 12:39, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +24 +/
    За упомянание этого числа и партбилет на стол положить можно, Миша!
     
     
  • 6.44, Аноним (44), 16:11, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Миша, конечно, добрый, но может при случае и сам кого-нибудь на стол положить, далеко не в эротических целях...
     
  • 6.48, Аноним (48), 19:51, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что за 146? Дайте ссылку.
     
     
  • 7.54, YetAnotherOnanym (ok), 20:34, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    http://lurkmore.to/146
     
  • 2.16, Аноним (16), 11:03, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не бывает прироста в 4 раза?
     
     
  • 3.26, анонимумуму (?), 11:58, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Только в 5
     
  • 3.42, псевдонимус (?), 15:34, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Разве что в военное время.
     
  • 2.27, Fracta1L (ok), 12:09, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > прирост производительности на 420%

    Очевидно, они не курят, а закидываются спидами

     
  • 2.31, анонимно (?), 12:55, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ассемблер они там курят.
    Вообще, очень показательная история что в процах ещё много чего такого содержится что можно здорово подтянуть на оптимизациях.
    Интересно, а какие компиляторы умеют нативно использовать AVX2?
     
     
  • 3.34, Аноним (34), 13:17, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Интересно, а какие компиляторы умеют нативно использовать AVX2?

    Чуть менее, чем все.

     
     
  • 4.40, анонимно (?), 13:28, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Да, любимый гошан аж с 1.11
    Годно.
     
  • 3.64, Вебмакака (?), 14:05, 17/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ахаха! Компиляторы-то умеют, но в главном "системном" недоязычке С векторных типов нет и ещё долго не будет, хотя нужны они были уже 10 лет назад.
     

  • 1.4, Влад (??), 09:33, 16/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +11 +/
    А еще у процесоров amd нету штрафа за использование AVX инстукций. у Intel производительность падает на 30%
     
     
  • 2.5, анонимус_потерял_свой_логин (?), 09:36, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Интел ещё и греется, как ракетный двигатель, когда AVX инструкции задействует, а АМД нет ;-)
     
     
  • 3.11, Аноним (11), 09:47, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    У интела avx512, амд эмулирует поддержку avx (2 блоками). Ну и simd в любом случае греются, по моему опыту с интелом больше simd греется только fpu.
     
     
  • 4.14, llolik (ok), 10:19, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > амд эмулирует поддержку avx (2 блоками)

    ЕМНИП Zen2 уже не эмулирует

     
     
  • 5.18, Анонимленьлогиниться (?), 11:16, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Там просто нет avx512 от слова "вообще".
     
     
  • 6.30, llolik (ok), 12:54, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >  Там просто нет avx512 от слова "вообще".

    Так его ещё есть-то только в самых топовых интелах и широкого распространения оно ещё не получило. К тому же патч в контексте новости написан для AVX2.

     
  • 5.24, Аноним (24), 11:52, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Да, в Zen 2 добавили 256 битные регистры для AVX2.
     
  • 4.25, Аноним (24), 11:54, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >амд эмулирует поддержку avx (2 блоками)

    Только в Zen/Zen+ и только AVX2, который использует 256 битные регистры.

     
     
  • 5.38, Аноним (38), 13:22, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    128-битные, 256-битные появились в Zen2.
     
     
  • 6.52, НяшМяш (ok), 20:17, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Всё верно, до Zen2 256-битный AVX2 эмулировался двумя 128-битными регистрами.
     
     
  • 7.56, Аноним (56), 20:48, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вы меня запутали, но вроде я понял, что у меня на Z+ 128 получается, а маркетоложцы пишут 256.
     
     
  • 8.59, НяшМяш (ok), 23:49, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Таки там есть 256-битный AVX2, только он внутри реализован через использование 1... текст свёрнут, показать
     
  • 4.53, НяшМяш (ok), 20:20, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > avx512

    Кстати, он далеко не на всех интелах, а только на довольно дорогих серверных, а AVX2 считай есть уже везде. Поэтому пока сфокусировались на широкораспространённом 256-битном варианте.

     
  • 2.6, mommy (?), 09:38, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Пруфов как всегда не будет
     
     
  • 3.47, Аноним (47), 17:19, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это вопрос?
     
  • 2.9, Аноним (9), 09:43, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Boost частоты при прогреве AVX инструкциями не достигаются максимальные, но базовую частоту AMD держат гарантированно, в отличие от.
     
     
  • 3.39, TormoZilla (?), 13:24, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >но базовую частоту AMD держат гарантированно

    Так они же бустят на полную раз в год в любом сценарии.

     

  • 1.7, evilman (?), 09:41, 16/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    nftables set != ipset. Первый - встроенный в nftables механизм хеш-таблиц для хранения списков. Второй - самостоятельные модули для того же самого, но только для iptables.
     
     
  • 2.8, Аноним (11), 09:43, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Iptables ещё жив? Я был уверен его выкинули лет 10 назад из ядра.
     
     
  • 3.13, zurapa (ok), 10:14, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ты с какой вселенной?
     
     
  • 4.17, Аноним (11), 11:07, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Да, в 4.9 вроде окончательно выкинули. Довольно давно, почти 5 лет.
     
     
  • 5.29, evilman (?), 12:42, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не выкинули. Модули все на месте, и кому надо, тот без проблем может использовать xtables. По-умолчанию многие дистрибутивы перешли на nftables-бэкэнд и iptables-фронтэнд, т.е. пользователь использует в юзерспейсе iptables-nft, которое транслируют команды iptables в правила nftables, которыми и оперирует ядро.
     
     
  • 6.41, Аноним (41), 14:04, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    На самом деле все хуже. Есть правила, которые iptables-nft переводит неправильно. В руководстве по установке Kubernetes явно написано перейти обратно на iptables-legacy.
     

  • 1.19, Аноним (19), 11:23, 16/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    а что будет замедленнено взамен?!
     
     
  • 2.22, Аноним (22), 11:40, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    https://www.opennet.me/opennews/art.shtml?num=52517
     

  • 1.32, InuYasha (?), 13:01, 16/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    А что делать если нет таких инструкций?
    support: MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, SSE4a, IOMMU, NX bit, AMD64, AMD-V, AES, CLMUL, AVX, CVT16, XOP, FMA4
     
     
  • 2.35, Щас начнем (?), 13:19, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Таки и в новых, ожидаемых к производству Пентиумах и Селеронах AVX, AVX2 тоже будут отсутствовать.
     
  • 2.36, Аноним (34), 13:20, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Курить бамбук, ибо у тебя будет использоваться более медленная реализация.
     
  • 2.37, Crazy Alex (ok), 13:21, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Жить как и раньше
     
  • 2.57, Аноним (56), 20:51, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Мне пригодилось AVX2 только в программе Corel Painter под виндой, и то не обязательно, ибо есть OpenCL
     
     
  • 3.65, InuYasha (?), 14:49, 17/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А меня обломала заточка эмулятора PCSX2 под какие-то интел-специфичные версии SSE и AVX, из-за чего библиотеки просто не работали.
     

  • 1.33, Аноним (33), 13:04, 16/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Не по теме: а существуют удобные GUI для nftables? Веб интерфейс или консольная мордочка вроде Vuurmuur? Сколько не искал, ничего не нашёл ...
     
     
  • 2.46, Аноним (46), 16:57, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Для iptables полно, а по факту все равно это уже везде iptables-nft. Не пофиг, что там внутри, если мышкой на пресеты тыкать?
     
     
  • 3.63, Тарам пам пам (?), 00:43, 17/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Что webmin, что vuurmuur будут показывать логическую структуру правил от iptables, а это не хорошо.
     

  • 1.45, Аноним (45), 16:34, 16/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В longterm ядрах сделают?
     
     
  • 2.62, Аноним (62), 00:12, 17/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    С какого это в ядра, для которых только исправление багов, будут добавлятся новшества?
     

  • 1.49, Аноним (49), 19:56, 16/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пусть попробуют на простом проце, небось не такие красивые цифры получатся. Мало кто может себе на шлюзы такие процы как амд эпик ставить.
     
     
  • 2.60, Аноним (62), 00:05, 17/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Пусть на Z80 попробуют!

    По делу. Если в MIPSах есть векторные инструкции, то со временем и для них запилят. И будет счастье на OpenWRT.

     

  • 1.51, Аноним (51), 20:12, 16/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Такие крутые программисты, добиваются впечатляющих результатов, а таблицы делают в NCEDIT. Когда под Linux выпустят MS Word, чтобы можно было делать нормальные таблицы, а не ASCII-арт?
     
     
  • 2.58, Аноним (56), 20:54, 16/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Такие крутые программисты, что из любви к делу табличку заверстали в ASCII-стиле.
     
  • 2.61, Аноним (62), 00:09, 17/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >Когда под Linux выпустят MS Word

    Это вам обращаться конкретно к программистам Microsoft. Ядро тут совершенно не при делах.

     

  • 1.66, Аноним (66), 00:03, 18/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Когда под Linux выпустят MS Word

    Уже. Libre Office Writer. Даже русские хелпы есть!

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру