Новости и события » Hi-Tech » Для ядра Linux предложен новый пакетный фильтр bpfilter

Для ядра Linux предложен новый пакетный фильтр bpfilter

Как сообщает opennet.ru разработчики подсистемы NetFilter выставили на обсуждение патчи с начальной реализацией нового пакетного фильтра bpfilter, который со временем может заменить ныне поддерживаемые механизмы фильтрации пакетов nftables и iptables. Несмотря на все свои достоинства интенсивность внедрения механизма Nftables оставляет желать лучшего и iptables до сих пор остается более востребован и не желает повторять судьбу ipchains и ipfwadm.

В nftables логика фильтрации и специфичные для протоколов обработчики компилируются в байткод в пространстве пользователя, после чего данный байткод загружается в ядро при помощи интерфейса Netlink и выполняется в специальной виртуальной машине, напоминающей BPF (Berkeley Packet Filters). При этом последние годы в ядре Linux поставляется универсальная встроенная виртуальная машина BPF с JIT, для которой активно ведется работа по улучшению производительности, функциональности и безопасности. Чтобы не поддерживать две разные виртуальные машины, выполняющие сходные задачи, и для достижения более высокой производительности у разработчиков возникла идея построения пакетного фильтра на основе штатного BPF-движка ядра Linux.

В итоге был подготовлен прототип нового пакетного фильтра bpfilter, иллюстрирующий идею применения BPF для фильтрации пакетов. Наиболее важным решением в предложенном прототипе стало желание обеспечить полную совместимость с наборами правил iptables, т. е. bpfilter сможет выступить в роли прозрачной замены iptables, полностью совместимой со всеми существующими конфигурациями (администраторам не придется изучать новый синтаксис правил). Для достижения данной задачи планируется обеспечить совместимость на уровне API, который использует утилита iptables для взаимодействия с ядром (штатную утилиту можно будет пересобрать с реализацией API на базе bpfilter).

Bpfilter обрабатывает запросы API iptables и транслирует их в программы BPF, привязываемые к различным подсистемам. Например, при помощи XDP (eXpress Data Path) можно запустить BPF-программу на уровне сетевого драйвера, с возможностью прямого доступа к DMA-буферу пакетов для высокопроизводительной обработки. Трансляция правил выполняется целиком в пространстве пользователя, что упрощает отладку и повышает безопасность. Для повышения производительности также может применяться JIT-компиляция BPF в машинные инструкции для архитектур x86_64, arm64, ppc64, sparc64, mips64, s390x и arm32, или задействование аппаратных механизмов выполнения BPF на уровне сетевого адаптера (например, Netronome NFP SmartNIC).

Харальд Вельте (Harald Welte), один из основных разработчиков netfilter/iptables, поставил под сомнение идею полной эмуляции API iptables через BPF для обеспечения прозрачной замены iptables, так как полностью повторить поведение iptables будет слишком трудно, а наличие различий при обработке существующих наборов правил iptables может привести к возникновению неожиданных проблем с безопасностью.

К тому же некоторые элементы дизайна iptables нельзя назвать удачными и повторение API iptables в bpfilter может привести к тому, что допущенные 18 лет назад ошибки проектирования iptables закрепятся еще на 10 лет. Например, API iptables не предоставляет способа добавления/замены единичного правила или небольшого набора правил, а может только целиком очистить и перезагрузить всю конфигурацию. Данная особенность делает внесение изменений в межсетевой экран неудобным и существенно усложняет координацию одновременного внесения изменений несколькими обработчиками. Недовольство также вызывает необходимость разделения наборов правил для IPv4 и IPv6.

Вельте предложил не фокусироваться только на повторении iptables, а реализовать в bpfilter эмуляцию nftables API, который спроектирован с учетом недостатков iptables и больше соответствует современным реалиям. Возможность использования API nftables позволит поддержать тех, кто уже перешел на nftables, а для остающихся на iptables будет стимулировать миграцию.

Дэвид Миллер (David Miller), мэйнтейнер сетевой подсистемы ядра, возразил, что iptables до сих пор существенно более распространен и реализация его интерфейса позволит достичь широкого охвата при тестировании. Вельте парировал тем, что в наиболее крупных областях применения, таких как Docker и Kubernetes, используются утилиты командной строки, а не iptables API, поэтому нет смысла в эмуляции API как такового для проведения тестирования в подобных системах.

Миллер также обратил внимание на то, что nftables так и не решил проблемы с производительностью подсистемы фильтрации пакетов, сместив вместо этого внимание на сетевые технологии в пространстве пользователя. Nftables может стать одним из тех экспериментов, которые позволяют разобраться в некоторой проблемной области, но никогда не получают распространения в реальной практике. При этом, bpfilter еще очень далеко до интеграции в ядро, так как представления о его производительности пока носят лишь теоретический характер, код достаточно сырой, отсутствуют многие возможности, а некоторые функции не могут быть реализованы через BPF и требуют дополнительной поддержки в ядре (например, отслеживание соединений).


Сучасні та економічні методи зведення будівель

Сучасні та економічні методи зведення будівель

У сучасному будівництві швидкість, економічність та універсальність є ключовими факторами при виборі технологій і матеріалів. Швидкомонтовані сталеві будівлі повністю відповідають цим вимогам, завдяки чому вони набувають великої популярності у різних сферах...

сегодня 10:39

Свежие новости Украины на сегодня и последние события в мире экономики и политики, культуры и спорта, технологий, здоровья, происшествий, авто и мото

Вверх