In FreeBSD haben sie Unterstützung für das in Linux verwendete Netlink-Protokoll hinzugefügt

FreeBSD

FreeBSD ist als System zum Erstellen von Internet- und Intranet-Servern gut etabliert. Es bietet ziemlich zuverlässige Netzwerkdienste und eine effiziente Speicherverwaltung.

Vor einigen Tagen die Nachricht wurde veröffentlicht dass der Basiscode von FreeBSD wurde übernommen eine neue Implementierung des Kommunikationsprotokolls Netlink (RFC 3549), das in Linux verwendet wird, um zwischen dem Kernel und Prozessen im Benutzerbereich zu kommunizieren.

Die Steckdosenfamilie Netlink ist eine Linux-Kernel-Schnittstelle, die Wird für die Interprozesskommunikation (IPC) zwischen Kernel- und Userspace-Prozessen verwendet und zwischen verschiedenen User-Space-Prozessen, ähnlich wie bei Unix-Domain-Sockets.

Ähnlich wie bei Unix-Domain-Sockets und anders als bei INET-Sockets kann die Netlink-Kommunikation Hostgrenzen nicht überschreiten. Während Unix-Domain-Sockets jedoch den Namensraum des Dateisystems verwenden, werden Netlink-Prozesse im Allgemeinen durch Prozessidentifikatoren (PIDs) adressiert.

Netlink wurde entwickelt und verwendet, um verschiedene Netzwerkinformationen zu übertragen zwischen Kernel-Space- und User-Space-Prozessen. Netzwerk-Hilfsprogramme wie die iproute2-Familie und die Hilfsprogramme, die zum Konfigurieren von mac80211-basierten drahtlosen Treibern verwendet werden, verwenden Netlink, um vom Benutzerbereich aus mit dem Linux-Kernel zu kommunizieren. Netlink bietet eine Socket-basierte Standardschnittstelle für User-Space-Prozesse und eine Kernel-seitige API für die interne Verwendung durch Kernel-Module. Netlink verwendete ursprünglich die Socket-Familie AF_NETLINK.

Bisher in seiner jetzigen Form Die Netlink-Unterstützungsschicht ermöglicht es FreeBSD, das Linux-Dienstprogramm ip zu verwenden des iproute2-Pakets, um Netzwerkschnittstellen zu verwalten, IP-Adressen festzulegen, Routing zu konfigurieren und Nexthop-Objekte zu manipulieren, die den Zustand speichern, der zum Weiterleiten eines Pakets an das beabsichtigte Ziel verwendet wird. Nach geringfügiger Änderung der Header-Dateien ist es möglich, Netlink in Birds Routing-Paket zu verwenden.

Die Netlink-Implementierung für FreeBSD ist als ladbares Kernelmodul gepackt das ggf. wirkt sich nicht auf andere Kernel-Subsysteme aus und erstellt separate Aufgabenwarteschlangen (Tasqueue), um eingehende Nachrichten über das Protokoll zu verarbeiten und Vorgänge im asynchronen Modus auszuführen. Der Grund für die Portierung von Netlink ist das Fehlen eines Standardmechanismus mit Kernel-Subsystemen zu interagieren, was dazu führt, dass verschiedene Subsysteme und Treiber ihre eigenen Protokolle erfinden.

Netlink bietet eine einheitliche Kommunikationsschicht und ein erweiterbares Nachrichtenformat der als Mittelsmann fungieren kann, der unterschiedliche Daten aus verschiedenen Quellen automatisch in einer einzigen Anfrage kombiniert. Zum Beispiel können FreeBSD-Subsysteme wie devd, jail und pfilctl auf Netlink portiert werden und verwenden jetzt ihre eigenen ioctl-Aufrufe, was die Erstellung von Anwendungen für die Arbeit mit diesen Subsystemen erheblich vereinfacht. Darüber hinaus ermöglicht die Verwendung von Netlink zum Modifizieren von Nexthop-Objekten und -Gruppen im Routing-Stack eine effizientere Interaktion mit User-Space-Routing-Prozessen.

Die Schnittstellen, Adressen, Routen, Firewall, Fibs, Vnets usw. werden über netlink gesteuert. Es ist ein TLV-basiertes asynchrones Protokoll, das 1-1- und 1-viele-Kommunikation bereitstellt. Die aktuelle Implementierung unterstützt die Teilmenge der NETLINK_ROUTE-Familie. Die Implementierung ist auch mit dem NETLINK_GENERIC-Familien-Framework kompatibel.

Derzeit implementierte Funktionen:

  • Erhalten Sie Informationen über Routen, Nexthops-Objekte und -Gruppen, Netzwerkschnittstellen, Adressen und benachbarte Hosts (arp/ndp).
  • Bildung von Benachrichtigungen über das Erscheinen und Trennen von Netzwerkschnittstellen, Konfigurieren und Entfernen von Adressen, Hinzufügen und Entfernen von Routen.
  • Fügen Sie Routen, Next-Hop-Objekte und -Gruppen, Gateways und Netzwerkschnittstellen hinzu und entfernen Sie sie.
  • Integration mit der Rtsock-Schnittstelle zur Verwaltung der Routing-Tabelle.

Erwähnenswert ist, dass sich das Projekt bisher auf die Unterstützung der NETLINK_ROUTE-Operationsfamilie beschränkt, um den Zustand des Netzwerksubsystems im Kernel zu verwalten.

Schließlich, wenn Sie daran interessiert sind, mehr darüber zu erfahren, können Sie die Details in . einsehen den folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.