FreeBSD lägger till stöd för Netlink-protokollet som används i Linux-kärnan

FreeBSD-kodbasen använder en implementering av Netlink-kommunikationsprotokollet (RFC 3549), som används i Linux för att organisera interaktion mellan kärnan och processer i användarutrymmet. Projektet är begränsat till att stödja NETLINK_ROUTE-familjen av operationer för att hantera tillståndet för nätverksundersystemet i kärnan.

I sin nuvarande form tillåter Netlink-stödlagret FreeBSD att använda Linux ip-verktyget från iproute2-paketet för att hantera nätverksgränssnitt, ställa in IP-adresser, konfigurera routing och manipulera nexthop-objekt som lagrar tillståndet som används för att vidarebefordra ett paket till önskad destination . Efter att ha ändrat huvudfilerna något är det möjligt att använda Netlink i Bird routing-paketet.

Netlink-implementeringen för FreeBSD är paketerad som en laddningsbar kärnmodul som, om möjligt, inte påverkar andra kärndelsystem och skapar separata uppgiftsköer (tasqueue) för att behandla inkommande meddelanden via protokollet och utföra operationer i asynkront läge. Anledningen till att portera Netlink är avsaknaden av en standardmekanism för att interagera med kärndelsystem, vilket leder till att olika delsystem och drivrutiner uppfinner sina egna protokoll.

Netlink erbjuder ett enhetligt kommunikationslager och ett utökbart meddelandeformat som kan fungera som en mellanhand som automatiskt kombinerar olika data från olika källor till en enda begäran. Till exempel kan FreeBSD-undersystem som devd, jail och pfilctl migreras till Netlink, nu med sina egna ioctl-anrop, vilket avsevärt kommer att förenkla skapandet av applikationer för att arbeta med dessa undersystem. Dessutom kommer användning av Netlink för att modifiera nexthop-objekten och grupperna i routingstacken att möjliggöra effektivare interaktion med routingprocesser för användarutrymme.

För närvarande implementerade funktioner:

  • Få information om rutter, nexthops-objekt och grupper, nätverksgränssnitt, adresser och angränsande värdar (arp/ndp).
  • Bildande av meddelanden om utseende och frånkoppling av nätverksgränssnitt, ställa in och ta bort adresser, lägga till och ta bort rutter.
  • Lägga till och ta bort rutter, nexthops-objekt och grupper, gateways, nätverksgränssnitt.
  • Integration med Rtsock-gränssnittet för att hantera routingtabellen.

Källa: opennet.ru

Lägg en kommentar