In FreeBSD hebben ze ondersteuning toegevoegd voor het Netlink-protocol dat in Linux wordt gebruikt

FreeBSD

FreeBSD is goed ingeburgerd als een systeem voor het bouwen van internet- en intranetservers. Het biedt redelijk betrouwbare netwerkdiensten en efficiënt geheugenbeheer.

Een aantal dagen geleden het nieuws is vrijgegeven dat de basiscode van FreeBSD heeft aangenomen een nieuwe implementatie van het communicatieprotocol netlink (RFC 3549) die in Linux wordt gebruikt om te communiceren tussen de kernel en processen in de gebruikersruimte.

De socket-familie netlink is een Linux-kernelinterface die gebruikt voor interprocescommunicatie (IPC) tussen kernel- en gebruikersruimteprocessen en tussen verschillende gebruikersruimteprocessen, vergelijkbaar met Unix-domeinsockets.

Net als Unix-domeinsockets en in tegenstelling tot INET-sockets, kan Netlink-communicatie niet over hostgrenzen heen gaan. Hoewel Unix-domeinsockets de naamruimte van het bestandssysteem gebruiken, worden Netlink-processen over het algemeen geadresseerd door proces-ID's (PID's).

Netlink is ontworpen en wordt gebruikt om diverse netwerkinformatie over te dragen tussen kernelruimte- en gebruikersruimteprocessen. Netwerkhulpprogramma's, zoals de iproute2-familie en de hulpprogramma's die worden gebruikt om op mac80211-gebaseerde draadloze stuurprogramma's te configureren, gebruiken Netlink om vanuit gebruikersruimte met de Linux-kernel te communiceren. Netlink biedt een standaard socket-gebaseerde interface voor gebruikersruimteprocessen en een kernel-side API voor intern gebruik door kernelmodules. Netlink gebruikte oorspronkelijk de AF_NETLINK-familie van sockets.

Tot nu toe in zijn huidige vorm, Met Netlink-ondersteuningslaag kan FreeBSD het Linux ip-hulpprogramma gebruiken van het iproute2-pakket om netwerkinterfaces te beheren, IP-adressen in te stellen, routering te configureren en nexthop-objecten te manipuleren die de status opslaan die wordt gebruikt om een ​​pakket door te sturen naar de beoogde bestemming. Na een kleine wijziging van de header-bestanden is het mogelijk om Netlink te gebruiken in het routeringspakket van Bird.

De Netlink-implementatie voor FreeBSD is verpakt als een laadbare kernelmodule dat, indien mogelijk, heeft geen invloed op andere kernelsubsystemen en creëert aparte taakwachtrijen (tasqueue) om binnenkomende berichten via het protocol te verwerken en bewerkingen in asynchrone modus uit te voeren. De reden voor het overzetten van Netlink is het ontbreken van een standaardmechanisme om te communiceren met kernelsubsystemen, wat ertoe leidt dat verschillende subsystemen en stuurprogramma's hun eigen protocollen uitvinden.

netlink biedt een uniforme communicatielaag en een uitbreidbaar berichtformaat die kan optreden als tussenpersoon die automatisch ongelijksoortige gegevens uit verschillende bronnen combineert in één verzoek. FreeBSD-subsystemen zoals devd, jail en pfilctl kunnen bijvoorbeeld worden geport naar Netlink, waarbij ze nu hun eigen ioctl-aanroepen gebruiken, wat het bouwen van applicaties voor deze subsystemen aanzienlijk zal vereenvoudigen. Bovendien zorgt het gebruik van Netlink om nexthop-objecten en -groepen in de routeringsstack te wijzigen voor een efficiëntere interactie met routeringsprocessen voor gebruikersruimten.

De interfaces, adressen, routes, firewall, fibs, vnets, etc. worden aangestuurd via netlink. Het is een op TLV gebaseerd asynchroon protocol dat 1-1 en 1-veel communicatie mogelijk maakt. De huidige implementatie ondersteunt de subset van de NETLINK_ROUTE-familie. De implementatie is ook compatibel met het NETLINK_GENERIC-familieframework.

Functies die momenteel zijn geïmplementeerd:

  • Verkrijg informatie over routes, nexthops-objecten en -groepen, netwerkinterfaces, adressen en naburige hosts (arp/ndp).
  • Vorming van meldingen over het verschijnen en loskoppelen van netwerkinterfaces, configuratie en verwijdering van adressen, toevoegen en verwijderen van routes.
  • Routes, next hop-objecten en groepen, gateways, netwerkinterfaces toevoegen en verwijderen.
  • Integratie met de Rtsock-interface om de routeringstabel te beheren.

Het is vermeldenswaard dat het project tot nu toe beperkt is tot het ondersteunen van de NETLINK_ROUTE-familie van bewerkingen om de status van het netwerksubsysteem in de kernel te beheren.

Tot slot, als u er meer over wilt weten, kunt u de details raadplegen in de volgende link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.