FreeBSD legger til støtte for Netlink-protokollen som brukes i Linux-kjernen

FreeBSD-kodebasen tar i bruk en implementering av Netlink-kommunikasjonsprotokollen (RFC 3549), som brukes i Linux for å organisere interaksjon mellom kjernen og prosesser i brukerrommet. Prosjektet er begrenset til å støtte NETLINK_ROUTE-familien av operasjoner for å administrere tilstanden til nettverksundersystemet i kjernen.

I sin nåværende form lar Netlink-støttelaget FreeBSD bruke Linux ip-verktøyet fra iproute2-pakken for å administrere nettverksgrensesnitt, angi IP-adresser, konfigurere ruting og manipulere nexthop-objekter som lagrer tilstanden som brukes til å videresende en pakke til ønsket destinasjon. Etter å ha endret hodefilene litt, er det mulig å bruke Netlink i Bird routing-pakken.

Netlink-implementeringen for FreeBSD er pakket som en lastbar kjernemodul som, hvis mulig, ikke påvirker andre kjernedelsystemer og skaper separate oppgavekøer (tasqueue) for å behandle innkommende meldinger via protokollen og utføre operasjoner i asynkron modus. Årsaken til portering av Netlink er mangelen på en standardmekanisme for å samhandle med kjerneundersystemer, noe som fører til at forskjellige undersystemer og drivere finner opp sine egne protokoller.

Netlink tilbyr et enhetlig kommunikasjonslag og et utvidbart meldingsformat som kan fungere som et mellomledd som automatisk kombinerer forskjellige data fra forskjellige kilder til en enkelt forespørsel. For eksempel kan FreeBSD-undersystemer som devd, jail og pfilctl migreres til Netlink, nå ved å bruke deres egne ioctl-anrop, noe som i stor grad vil forenkle opprettelsen av applikasjoner for å jobbe med disse undersystemene. I tillegg vil bruk av Netlink for å modifisere nexthop-objektene og -gruppene i rutingstakken tillate mer effektiv interaksjon med rutingprosesser for brukerrom.

Funksjoner implementert for øyeblikket:

  • Få informasjon om ruter, nexthops-objekter og -grupper, nettverksgrensesnitt, adresser og naboverter (arp/ndp).
  • Dannelse av varsler om utseende og frakobling av nettverksgrensesnitt, angi og slette adresser, legge til og slette ruter.
  • Legge til og fjerne ruter, nexthops-objekter og grupper, gatewayer, nettverksgrensesnitt.
  • Integrasjon med Rtsock-grensesnittet for å administrere rutingtabellen.

Kilde: opennet.ru

Legg til en kommentar