24.03.2023

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

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, требуются модификации только для заголовка.

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

Источник.