In de codebasis van FreeBSD is de implementatie van het communicatieprotocol Netlink (RFC 3549) opgenomen, dat in Linux wordt gebruikt voor de interactie tussen de kernel en processen in de gebruikersruimte. Het project is beperkt tot ondersteuning voor de NETLINK_ROUTE operation families om de status van de netwerk subsystemen in de kernel te beheren.
In de huidige vorm maakt het niveau van ondersteuning voor Netlink het mogelijk om de Linux-tool ip uit het iproute2-pakket te gebruiken in FreeBSD voor het beheren van netwerkinterfaces, het instellen van IP-adressen, het configureren van routering en het manipuleren van nexthop-objecten, die gegevens bevatten over de status die nodig is voor het verzenden van pakketten naar de gewenste bestemming. Na een geringe wijziging van de headerbestanden kan Netlink in het routingpakket Bird worden gebruikt.
De implementatie van Netlink voor FreeBSD is vormgegeven als een laadbaar kernelmodule die zoveel mogelijk andere kernel subsystemen ongemoeid laat en aparte takenwachtrijen (taskqueues) creƫert voor het verwerken van binnenkomende berichten via het protocol en het uitvoeren van operaties op een asynchrone manier. Een reden voor de portering van Netlink is het gebrek aan een standaardmechanisme voor de interactie met kernel subsystemen, wat ertoe leidt dat verschillende subsystemen en stuurprogramma's hun eigen protocollen moeten uitvinden.
Netlink biedt een uniforme communicatielaag en een uitbreidbaar berichtformaat, dat kan fungeren als een tussenpersoon die automatisch verschillende gegevens van verschillende bronnen in ƩƩn verzoek samenvoegt. Bijvoorbeeld, subsystemen van FreeBSD zoals devd, jail en pfilctl, die momenteel hun eigen ioctl-aanroepen gebruiken, kunnen op Netlink worden overgezet, wat het veel eenvoudiger maakt om applicaties te ontwikkelen die met deze subsystemen werken. Bovendien zal het gebruik van Netlink voor het wijzigen van objecten en groepen nexthops in de routeringstack een efficiƫntere interactie met routeringsprocessen in de gebruikersruimte mogelijk maken.
De momenteel geĆÆmplementeerde mogelijkheden:
- Het verkrijgen van informatie over routes, objecten en groepen nexthops, netwerkinterfaces, adressen en naburige hosts (arp/ndp).
- Het genereren van meldingen over het verschijnen en loskoppelen van netwerkinterfaces, het instellen en verwijderen van adressen, het toevoegen en verwijderen van routes.
- Het toevoegen en verwijderen van routes, objecten en groepen nexthops, gateways en netwerkinterfaces.
- Integratie met de Rtsock-interface voor het beheer van de routeringstabel.
Bron: opennet.ru
