A FreeBSD kódalapjában implementálták a Netlink kommunikációs protokollt (RFC 3549), amelyet a Linuxban a kernel és a felhasználói tér közötti interakció megszervezésére alkalmaznak. A projekt kiterjed a NETLINK_ROUTE műveletek támogatására, amely a hálózati alrendszer állapotának kezelésére szolgál a kernelben.
A jelenlegi állapotában a Netlink támogatási szint lehetővé teszi a FreeBSD számára, hogy a Linuxos ip utility-t az iproute2 csomagból használja a hálózati interfészek kezelésére, IP-címek beállítására, útvonalak konfigurálására és a nexthop objektumok manipulálására, amelyek azokat az adatokat tárolják, amelyek a csomag kívánt célhelyre való továbbításához szükségesek. Némi fejléckód módosítása után a Netlink használható a Bird útválasztó csomagban.
A FreeBSD-hez készült Netlink implementáció egy betölthető kernelmodul formájában van, amely lehetőség szerint nem érinti a kernel más alrendszereit, és külön feladatok sorait (tasqueue) hoz létre a protokollon beérkező üzenetek feldolgozására és a műveletek végrehajtására aszinkron módban. A Netlink portolásának indoka a standard mechanizmus hiánya az alrendszerekkel való interakcióhoz, amely arra vezet, hogy a különböző alrendszerek és illesztőprogramok saját protokolljaikat találják ki.
A Netlink egy egységes kommunikációs réteget és kiterjeszthető üzenetformát kínál, amely közvetítőként működhet, automatikusan egyesítve különböző forrásokból származó szétszórt adatokat egyetlen kérésben. Például a Netlink révén átkonvertálhatók olyan FreeBSD alrendszerek, mint a devd, jail és pfilctl, amelyek jelenleg saját ioctl hívásaikat használják, ez jelentősen megkönnyíti az ezen alrendszerek adataival való munkavégzésre szolgáló alkalmazások létrehozását. Ezenkívül a Netlink használata a routing stackben a nexthop objektumok és csoportok módosítására lehetővé teszi a routing folyamatok hatékonyabb interakcióját a felhasználói térben.
Jelenleg megvalósított lehetőségek:
- Információk beszerzése útvonalakról, objektumokról és nexthop csoportokról, hálózati interfészekről, címekről és szomszédos hosztokról (arp/ndp).
- Értesítések létrehozása hálózati interfészek megjelenéséről és lekapcsolásáról, címek beállításáról és törléséről, útvonalak hozzáadásáról és eltávolításáról.
- Útvonalak, objektumok és nexthop csoportok, átjárók, hálózati interfészek hozzáadása és eltávolítása.
- Rtsock interfész integrálása az útválasztási táblázat kezelésére.
Forrás: opennet.ru
