Во FreeBSD реализована поддержка протокола Netlink

good-penguin.png

1 октября 2022 года Alexander V. Chernikov отправил в FreeBSD патч, реализовывающий поддержку протокола Netlink.

Netlink — это протокол связи, который в настоящее время используется в ядре Linux для изменения, чтения и подписки практически на все сетевые состояния. Интерфейсы, адреса, маршруты, брандмауэр, виртуальные сети и т.д. управляются через netlink. Это асинхронный протокол на основе TLV, обеспечивающий связь one-to-one и one-to-many.

На текущий момент реализация ограничивается семейством операций NETLINK_ROUTE для управления состоянием сетевой подсистемы в ядре и позволяет управлять сетевыми интерфейсами, IP-адресами, маршрутизацией и объектами nexthop, хранящими данные о состоянии передаваемого пакета.

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

Большинство моделей данных Netlink прекрасно соответствуют концепциям FreeBSD. Неизмененный двоичный файл ip корректно работает с интерфейсами, адресами и маршрутами.

Для компиляции и работы с FreeBSD netlink некоторым программным обеспечением, таким как net/bird, требуются модификации только для заголовка.

>>> Подробности

©  Linux.org.ru