У FreeBSD додано підтримку протоколу Netlink, що використовується в ядрі Linux

У кодову базу FreeBSD прийнято реалізацію комунікаційного протоколу Netlink (RFC 3549), що використовується в Linux для організації взаємодії ядра з процесами в просторі користувача. Проект обмежується підтримкою сімейства операцій NETLINK_ROUTE для керування станом підсистеми мережі в ядрі.

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

Реалізація Netlink для FreeBSD оформлена у вигляді модуля ядра, що завантажується, по можливості не зачіпає інші підсистеми ядра і створює окремі черги завдань (tasqueue) для обробки повідомлень, що надходять по протоколу, і виконання операцій в асинхронному режимі. Як причина портування Netlink називається відсутність стандартного механізму для взаємодії з підсистемами ядра, що призводить до того, що різні підсистеми та драйвери винаходять власні протоколи.

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

Реалізовані на даний час можливості:

  • Отримання інформації про маршрути, об'єкти та групи nexthops, мережеві інтерфейси, адреси та сусідні хости (arp/ndp).
  • Формування повідомлень про появу та відключення мережних інтерфейсів, встановлення та видалення адрес, додавання та видалення маршрутів.
  • Додавання та видалення маршрутів, об'єктів та груп nexthops, шлюзів, мережевих інтерфейсів.
  • Інтеграція з інтерфейсом Rtsock для керування таблицею маршрутизації.

Джерело: opennet.ru

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