У ядрі Linux 5.7 будуть прискорені складні зіставлення за списками NetFilter

Розробники підсистеми фільтрації та модифікації мережних пакетів 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 версія pipapo на системі з процесором AMD Epyc 7402 показала приріст продуктивності на 420% при розборі 30 тисяч записів, що включають зв'язки порт-протокол. Приріст при зіставленні зв'язки з підмережі та номера порту при аналізі 1000 записів становив 87% для IPv4 і 128% для IPv6.

У ядрі Linux 5.7 будуть прискорені складні зіставлення за списками NetFilter

Інша оптимізація, що дозволяє використовувати 8-бітові групи зіставлення замість 4-бітових, також показала відчутний приріст продуктивності: 66% при аналізі 30 тисяч записів порт-протокол, 43% - підмережа IPv4-порт і 61% - підмережа IPv6-порт. У сумі, з урахуванням оптимізації AVX2, продуктивність pipapo збільшилася у вказаних тестах на 766%, 168% та 269% відповідно. Отримані для складних зіставлень характеристики випереджають перевірки одиничних полів у rbtree (за винятком тесту зв'язки порт+протокол), але поки що відстають від прямих перевірок за допомогою хешей і drop-обробників на базі netdev.

У ядрі Linux 5.7 будуть прискорені складні зіставлення за списками NetFilter

Джерело: opennet.ru

Додати коментар або відгук