Во FreeBSD добавили поддержку протокола Netlink, используемого в Linux.

FreeBSD

FreeBSD хорошо зарекомендовала себя как система для построения серверов Internet и Intranet. Он обеспечивает довольно надежные сетевые службы и эффективное управление памятью.

Несколько дней назад новость была выпущена что базовый код FreeBSD приняла новая реализация протокола связи Сетевая ссылка (RFC 3549), который используется в Linux для связи между ядром и процессами в пользовательском пространстве.

Семейство сокетов Сетевая ссылка это интерфейс ядра Linux, который используется для межпроцессного взаимодействия (IPC) между процессами ядра и пользовательского пространства. и между различными процессами пользовательского пространства, подобно сокетам домена Unix.

Подобно сокетам домена Unix и в отличие от сокетов INET, связь Netlink не может пересекать границы хоста. Однако, в то время как сокеты домена Unix используют пространство имен файловой системы, процессы Netlink обычно адресуются идентификаторами процессов (PID).

Netlink разработан и используется для передачи различной сетевой информации. между процессами пространства ядра и пространства пользователя. Сетевые утилиты, такие как семейство iproute2 и утилиты, используемые для настройки беспроводных драйверов на базе mac80211, используют Netlink для связи с ядром Linux из пользовательского пространства. Netlink предоставляет стандартный интерфейс на основе сокетов для процессов пользовательского пространства и API на стороне ядра для внутреннего использования модулями ядра. Изначально Netlink использовала семейство сокетов AF_NETLINK.

Пока в нынешнем виде Уровень поддержки Netlink позволяет FreeBSD использовать утилиту Linux ip. пакета iproute2 для управления сетевыми интерфейсами, установки IP-адресов, настройки маршрутизации и управления объектами nexthop, в которых хранится состояние, используемое для пересылки пакета в желаемое место назначения. Немного изменив файлы заголовков, можно использовать Netlink в пакете маршрутизации Bird.

Реализация Netlink для FreeBSD упакован как загружаемый модуль ядра что, если возможно, не влияет на другие подсистемы ядра и создает отдельные очереди задач (tasqueue) для обработки входящих сообщений по протоколу и выполнения операций в асинхронном режиме. Причина портирования Netlink — отсутствие стандартного механизма для взаимодействия с подсистемами ядра, что приводит к тому, что разные подсистемы и драйверы изобретают свои собственные протоколы.

Сетевая ссылка предлагает унифицированный коммуникационный уровень и расширяемый формат сообщений который может выступать в качестве посредника, который автоматически объединяет разрозненные данные из разных источников в один запрос. Например, такие подсистемы FreeBSD, как devd, jail и pfilctl, можно портировать на Netlink, используя теперь собственные вызовы ioctl, что значительно упростит создание приложений для работы с этими подсистемами. Кроме того, использование Netlink для изменения объектов и групп nexthop в стеке маршрутизации позволит более эффективно взаимодействовать с процессами маршрутизации в пользовательском пространстве.

Интерфейсы, адреса, маршруты, брандмауэр, fibs, vnets и т.д. управляются через netlink. Это асинхронный протокол на основе TLV, который обеспечивает связь 1-1 и 1-множество. Текущая реализация поддерживает подмножество семейства NETLINK_ROUTE. Реализация также совместима с платформой семейства NETLINK_GENERIC.

В настоящее время реализованы следующие функции:

  • Получить информацию о маршрутах, объектах и ​​группах nexthops, сетевых интерфейсах, адресах и соседних хостах (arp/ndp).
  • Формирование уведомлений о появлении и отключении сетевых интерфейсов, настройке и удалении адресов, добавлении и удалении маршрутов.
  • Добавляйте и удаляйте маршруты, объекты и группы next hop, шлюзы, сетевые интерфейсы.
  • Интеграция с интерфейсом Rtsock для управления таблицей маршрутизации.

Стоит отметить, что пока проект ограничен поддержкой семейства операций NETLINK_ROUTE для управления состоянием сетевой подсистемы в ядре.

Наконец, если вы хотите узнать об этом больше, вы можете ознакомиться с подробностями в по следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.