FreeBSD tilføjer understøttelse af Netlink-protokollen, der bruges i Linux-kernen

FreeBSD-kodebasen anvender en implementering af Netlink-kommunikationsprotokollen (RFC 3549), som bruges i Linux til at organisere interaktion mellem kernen og processer i brugerrummet. Projektet er begrænset til at understøtte NETLINK_ROUTE-familien af ​​operationer til styring af tilstanden af ​​netværksundersystemet i kernen.

I sin nuværende form tillader Netlink-støttelaget FreeBSD at bruge Linux ip-værktøjet fra iproute2-pakken til at administrere netværksgrænseflader, indstille IP-adresser, konfigurere routing og manipulere nexthop-objekter, der gemmer den tilstand, der bruges til at videresende en pakke til den ønskede destination. Efter lidt ændring af header-filerne er det muligt at bruge Netlink i Bird routing-pakken.

Netlink-implementeringen til FreeBSD er pakket som et indlæst kernemodul, der, hvis det er muligt, ikke påvirker andre kerneundersystemer og skaber separate opgavekøer (tasqueue) til at behandle indgående meddelelser via protokollen og udføre operationer i asynkron tilstand. Årsagen til portering af Netlink er manglen på en standardmekanisme til at interagere med kerneundersystemer, hvilket fører til, at forskellige undersystemer og drivere opfinder deres egne protokoller.

Netlink tilbyder et samlet kommunikationslag og et udvideligt beskedformat, der kan fungere som et mellemled, der automatisk kombinerer forskellige data fra forskellige kilder til en enkelt anmodning. For eksempel kan FreeBSD-undersystemer såsom devd, jail og pfilctl migreres til Netlink, nu ved at bruge deres egne ioctl-kald, hvilket i høj grad vil forenkle oprettelsen af ​​applikationer til at arbejde med disse undersystemer. Derudover vil brug af Netlink til at ændre nexthop-objekter og -grupper i routingstakken tillade mere effektiv interaktion med user-space routingprocesser.

Funktioner implementeret i øjeblikket:

  • Få information om ruter, nexthops-objekter og -grupper, netværksgrænseflader, adresser og naboværter (arp/ndp).
  • Dannelse af meddelelser om udseende og afbrydelse af netværksgrænseflader, indstilling og sletning af adresser, tilføjelse og sletning af ruter.
  • Tilføjelse og fjernelse af ruter, nexthops-objekter og -grupper, gateways, netværksgrænseflader.
  • Integration med Rtsock-grænsefladen til at styre routingtabellen.

Kilde: opennet.ru

Tilføj en kommentar