We FreeBSD dodali obsługę protokołu Netlink używanego w Linuksie

FreeBSD

FreeBSD ma ugruntowaną pozycję jako system do budowy serwerów internetowych i intranetowych. Zapewnia dość niezawodne usługi sieciowe i wydajne zarządzanie pamięcią.

Kilka dni temu wiadomość została wydana że kod bazowy FreeBSD przyjęło nowa implementacja protokołu komunikacyjnego netlink (RFC 3549), który jest używany w Linuksie do komunikacji między jądrem a procesami w przestrzeni użytkownika.

Rodzina gniazd netlink jest interfejsem jądra Linux, który używany do komunikacji międzyprocesowej (IPC) między procesami jądra i przestrzeni użytkownika i między różnymi procesami przestrzeni użytkownika, podobnie jak gniazda domeny Unix.

Podobnie jak w przypadku gniazd domeny Unix iw przeciwieństwie do gniazd INET, komunikacja Netlink nie może przekraczać granic hostów. Jednak podczas gdy gniazda domeny Unix używają przestrzeni nazw systemu plików, procesy Netlink są zazwyczaj adresowane przez identyfikatory procesów (PID).

Netlink jest zaprojektowany i używany do przesyłania różnych informacji o sieci między przestrzenią jądra a procesami przestrzeni użytkownika. Narzędzia sieciowe, takie jak rodzina iproute2 i narzędzia używane do konfigurowania sterowników bezprzewodowych opartych na mac80211, używają Netlink do komunikacji z jądrem Linuksa z przestrzeni użytkownika. Netlink zapewnia standardowy interfejs oparty na gniazdach dla procesów w przestrzeni użytkownika oraz API po stronie jądra do użytku wewnętrznego przez moduły jądra. Netlink pierwotnie używał rodziny gniazd AF_NETLINK.

Jak dotąd w obecnej formie Warstwa wsparcia Netlink umożliwia FreeBSD korzystanie z narzędzia Linux ip pakietu iproute2 do zarządzania interfejsami sieciowymi, ustawiania adresów IP, konfigurowania routingu i manipulowania obiektami następnego skoku, które przechowują stan użyty do przekazania pakietu do zamierzonego miejsca docelowego. Po nieznacznej zmianie plików nagłówkowych możliwe jest użycie Netlinka w pakiecie routingu Birda.

Implementacja Netlink dla FreeBSD jest spakowany jako ładowalny moduł jądra że jeśli to możliwe, nie wpływa na inne podsystemy jądra i tworzy osobne kolejki zadań (tasqueue) do przetwarzania wiadomości przychodzących za pośrednictwem protokołu i wykonywania operacji w trybie asynchronicznym. Powodem przeniesienia Netlinka jest brak standardowego mechanizmu do interakcji z podsystemami jądra, co prowadzi do tego, że różne podsystemy i sterowniki wymyślają własne protokoły.

netlink oferuje ujednoliconą warstwę komunikacji i rozszerzalny format wiadomości który może działać jako pośrednik, który automatycznie łączy różne dane z różnych źródeł w jedno żądanie. Na przykład podsystemy FreeBSD, takie jak devd, jail i pfilctl, mogą być przeniesione do Netlink, teraz przy użyciu własnych wywołań ioctl, co znacznie uprości budowanie aplikacji do pracy z tymi podsystemami. Dodatkowo, użycie Netlink do modyfikacji obiektów i grup następnego skoku w stosie routingu pozwoli na bardziej wydajną interakcję z procesami routingu w przestrzeni użytkownika.

Interfejsy, adresy, trasy, firewall, fibs, vnet itp. są kontrolowane przez netlink. Jest to protokół asynchroniczny oparty na TLV, który zapewnia komunikację 1-1 i 1-wiele. Obecna implementacja obsługuje podzbiór rodziny NETLINK_ROUTE. Implementacja jest również zgodna z frameworkiem rodziny NETLINK_GENERIC.

Obecnie wdrożone funkcje:

  • Uzyskaj informacje o trasach, obiektach i grupach nexthops, interfejsach sieciowych, adresach i sąsiednich hostach (arp/ndp).
  • Tworzenie powiadomień o pojawieniu się i odłączeniu interfejsów sieciowych, konfiguracja i usuwanie adresów, dodawanie i usuwanie tras.
  • Dodawaj i usuwaj trasy, obiekty i grupy następnego przeskoku, bramy, interfejsy sieciowe.
  • Integracja z interfejsem Rtsock do zarządzania tablicą routingu.

Warto wspomnieć, że na razie projekt ogranicza się do obsługi rodziny operacji NETLINK_ROUTE do zarządzania stanem podsystemu sieciowego w jądrze.

Wreszcie, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami w poniższy link.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.