Dans FreeBSD, ils ont ajouté la prise en charge du protocole Netlink utilisé sous Linux

FreeBSD

FreeBSD est bien établi en tant que système de construction de serveurs Internet et Intranet. Il fournit des services réseau assez fiables et une gestion de la mémoire efficace.

Il y a plusieurs jours la nouvelle est sortie que le code de base de FreeBSD a adopté une nouvelle implémentation du protocole de communication Lien réseau (RFC 3549) qui est utilisé sous Linux pour communiquer entre le noyau et les processus dans l'espace utilisateur.

La famille des douilles Lien réseau est une interface du noyau Linux qui utilisé pour la communication interprocessus (IPC) entre les processus du noyau et de l'espace utilisateur et entre différents processus d'espace utilisateur, similaires aux sockets de domaine Unix.

Semblable aux sockets de domaine Unix et contrairement aux sockets INET, la communication Netlink ne peut pas traverser les limites de l'hôte. Cependant, alors que les sockets de domaine Unix utilisent l'espace de noms du système de fichiers, les processus Netlink sont généralement adressés par des identificateurs de processus (PID).

Netlink est conçu et utilisé pour transférer diverses informations réseau entre l'espace noyau et les processus de l'espace utilisateur. Les utilitaires réseau, tels que la famille iproute2 et les utilitaires utilisés pour configurer les pilotes sans fil basés sur mac80211, utilisent Netlink pour communiquer avec le noyau Linux à partir de l'espace utilisateur. Netlink fournit une interface standard basée sur un socket pour les processus de l'espace utilisateur et une API côté noyau pour une utilisation interne par les modules du noyau. Netlink utilisait à l'origine la famille de sockets AF_NETLINK.

Jusqu'à présent dans sa forme actuelle, La couche de support Netlink permet à FreeBSD d'utiliser l'utilitaire Linux ip du paquet iproute2 pour gérer les interfaces réseau, définir les adresses IP, configurer le routage et manipuler les objets nexthop qui stockent l'état utilisé pour transférer un paquet vers la destination souhaitée. Après avoir légèrement modifié les fichiers d'en-tête, il est possible d'utiliser Netlink dans le paquet de routage de Bird.

L'implémentation de Netlink pour FreeBSD est conditionné sous la forme d'un module de noyau chargeable que, si possible, n'affecte pas les autres sous-systèmes du noyau et crée des files d'attente de tâches distinctes (tasqueue) pour traiter les messages entrants 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, conduisant différents sous-systèmes et pilotes à inventer leurs propres protocoles.

Lien réseau offre une couche de communication unifiée et un format de message extensible qui peut agir comme un intermédiaire qui combine 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 peuvent être portés sur Netlink, en utilisant désormais leurs propres appels ioctl, ce qui simplifiera grandement la création d'applications fonctionnant avec ces sous-systèmes. De plus, l'utilisation de Netlink pour modifier les objets et les groupes de prochain saut dans la pile de routage permettra une interaction plus efficace avec les processus de routage de l'espace utilisateur.

Les interfaces, adresses, routes, pare-feu, fibs, vnets, etc. sont contrôlés via netlink. Il s'agit d'un protocole asynchrone basé sur TLV qui fournit des communications 1-1 et 1-many. L'implémentation actuelle prend en charge le sous-ensemble de la famille NETLINK_ROUTE. L'implémentation est également compatible avec le framework de la famille NETLINK_GENERIC.

Fonctionnalités actuellement implémentées :

  • Obtenez des informations sur les routes, les objets et groupes de sauts suivants, les interfaces réseau, les adresses et les hôtes voisins (arp/ndp).
  • Formation de notifications sur l'apparition et la déconnexion des interfaces réseau, la configuration et la suppression d'adresses, l'ajout et la suppression de routes.
  • Ajoutez et supprimez des itinéraires, des objets et des groupes de saut suivant, des passerelles, des interfaces réseau.
  • Intégration avec l'interface Rtsock pour gérer la table de routage.

Il convient de mentionner que jusqu'à présent, 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.

Enfin, si vous souhaitez en savoir plus, vous pouvez consulter les détails dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.