In FreeBSD wurde die Unterstützung für das Netlink-Protokoll hinzugefügt, das im Linux-Kernel verwendet wird.

In den Code-Bereich von FreeBSD wurde die Implementierung des Kommunikationsprotokolls Netlink (RFC 3549) aufgenommen, das in Linux zur Organisation der Interaktion zwischen dem Kernel und Prozessen im Benutzermodus verwendet wird. Das Projekt beschränkt sich auf die Unterstützung der NETLINK_ROUTE-Betriebsfamilie zur Verwaltung des Zustands der Netzwerksubsysteme im Kernel.

In der aktuellen Form ermöglicht das Niveau der Netlink-Unterstützung die Verwendung des Linux-Tools ip aus dem iproute2-Paket in FreeBSD zur Verwaltung von Netzwerkschnittstellen, zur Zuordnung von IP-Adressen, zur Routenbildung und zur Manipulation von nexthop-Objekten, die Informationen über den Zustand speichern, der zur Paketübertragung an den gewünschten Zielort verwendet wird. Nach geringfügigen Änderungen an den Header-Dateien ist die Verwendung von Netlink im Routing-Paket Bird möglich.

Die Implementierung von Netlink für FreeBSD wird als ladbares Kernel-Modul bereitgestellt, das nach Möglichkeit keine anderen Kernelsubsysteme beeinträchtigt und separate Taskwarteschlangen (tasqueue) zur Verarbeitung eingehender Nachrichten über das Protokoll und zur Durchführung von Operationen im asynchronen Modus erstellt. Als Grund für die Portierung von Netlink wird das Fehlen eines standardisierten Mechanismus zur Interaktion mit den Kernelsubsystemen genannt, was dazu führt, dass verschiedene Subsysteme und Treiber ihre eigenen Protokolle entwickeln.

Netlink bietet eine einheitliche Kommunikationsschicht und ein erweiterbares Nachrichtenformat, das als Vermittler fungieren kann, der disparate Daten aus verschiedenen Quellen in einer Anfrage automatisch zusammenführt. Zum Beispiel könnten Subsysteme von FreeBSD wie devd, jail und pfilctl, die derzeit ihre eigenen ioctl-Aufrufe verwenden, auf Netlink umgestellt werden, was die Erstellung von Anwendungen für die Arbeit mit diesen Subsystemen erheblich vereinfachen würde. Zudem würde die Verwendung von Netlink zur Modifikation von Objekten und Gruppen von nexthops im Routing-Stack eine effizientere Interaktion mit den Routing-Prozessen im Benutzermodus ermöglichen.

Derzeit umgesetzte Möglichkeiten:

  • Abrufen von Informationen über Routen, Objekte und Gruppen von nexthops, Netzwerkschnittstellen, Adressen und benachbarte Hosts (arp/ndp).
  • Erstellung von Benachrichtigungen über das Auftauchen und Abziehen von Netzwerkschnittstellen, das Einrichten und Löschen von Adressen sowie das Hinzufügen und Entfernen von Routen.
  • Hinzufügen und Entfernen von Routen, Objekten und Gruppen von nexthops, Gateways, Netzwerkinterfaces.
  • Integration mit der Rtsock-Schnittstelle zur Verwaltung der Routingtabelle.

Quelle: opennet.ru

60GB SSD 8Gb DDR4