FreeBSD ajoute la prise en charge du protocole Netlink utilisé dans le noyau Linux

La base de code FreeBSD adopte une implémentation du protocole de communication Netlink (RFC 3549), utilisé sous Linux pour organiser l'interaction du noyau avec les processus dans l'espace utilisateur. Le projet se limite à prendre en charge la famille d'opérations NETLINK_ROUTE pour gérer l'état du sous-système réseau dans le noyau.

Dans sa forme actuelle, la prise en charge de Netlink permet à FreeBSD d'utiliser l'utilitaire Linux ip du package iproute2 pour gérer les interfaces réseau, définir les adresses IP, configurer le routage et manipuler les objets nexthop qui stockent les données d'état utilisées pour transférer un paquet vers la destination souhaitée. Après des modifications mineures des fichiers d'en-tête, il est possible d'utiliser Netlink dans le package de routage Bird.

L'implémentation Netlink pour FreeBSD est conçue comme un module de noyau chargeable qui, si possible, n'affecte pas les autres sous-systèmes du noyau et crée des files d'attente de tâches distinctes (tasqueues) pour traiter les messages arrivant via le protocole et effectuer des opérations en mode asynchrone. La raison du portage de Netlink est l'absence d'un mécanisme standard pour interagir avec les sous-systèmes du noyau, ce qui conduit différents sous-systèmes et pilotes à inventer leurs propres protocoles.

Netlink offre une couche de communication unifiée et un format de message extensible qui peut agir comme un intermédiaire combinant automatiquement des données disparates provenant de différentes sources en une seule requête. Par exemple, les sous-systèmes FreeBSD tels que devd, jail et pfilctl, qui utilisent actuellement leurs propres appels ioctl, peuvent être transférés vers Netlink, ce qui simplifiera grandement la création d'applications pour travailler avec ces sous-systèmes. De plus, l'utilisation de Netlink pour modifier les objets et les groupes nexthop dans la pile de routage permettra une interaction plus efficace avec les processus de routage de l'espace utilisateur.

Fonctionnalités actuellement implémentées :

  • Obtention d'informations sur les routes, les objets et les groupes de sauts suivants, les interfaces réseau, les adresses et les hôtes voisins (arp/ndp).
  • Générer des notifications sur l'apparition et la déconnexion des interfaces réseau, définir et supprimer des adresses, ajouter et supprimer des itinéraires.
  • Ajout et suppression de routes, d'objets et de groupes de sauts suivants, de passerelles et d'interfaces réseau.
  • Intégration avec l'interface Rtsock pour la gestion des tables de routage.

Source: opennet.ru

Ajouter un commentaire