A FreeBSD kódbázis a Netlink kommunikációs protokoll (RFC 3549) megvalósítását alkalmazza, amelyet Linuxban használnak a kernel és a felhasználói térben lévő folyamatok interakciójának megszervezésére. A projekt a NETLINK_ROUTE műveletcsalád támogatására korlátozódik a kernelben lévő hálózati alrendszer állapotának kezelésére.
Jelenlegi formájában a Netlink támogatás lehetővé teszi a FreeBSD számára, hogy az iproute2 csomagból származó Linux ip segédprogramot használja a hálózati interfészek kezeléséhez, IP-címek beállításához, útválasztás konfigurálásához és a nexthop objektumok manipulálásához, amelyek állapotadatokat tárolnak a csomagok kívánt célhelyre történő továbbítására. A fejlécfájlok kisebb módosításai után lehetőség nyílik a Netlink használatára a Bird routing csomagban.
A FreeBSD-hez készült Netlink implementáció betölthető kernelmodulként készült, amely lehetőség szerint nem érinti a többi kernel-alrendszert, és külön feladatsorokat (tasqueues) hoz létre a protokollon keresztül érkező üzenetek feldolgozásához és aszinkron módban történő műveletek végrehajtásához. A Netlink portolásának oka a rendszermag-alrendszerekkel való interakcióhoz szükséges szabványos mechanizmus hiánya, ami ahhoz vezet, hogy különböző alrendszerek és illesztőprogramok saját protokollokat találnak ki.
A Netlink egységes kommunikációs réteget és bővíthető üzenetformátumot kínál, amely közvetítőként működik, amely automatikusan egyetlen kérésbe egyesíti a különböző forrásokból származó adatokat. Például az olyan FreeBSD alrendszerek, mint a devd, a jail és a pfilctl, amelyek jelenleg saját ioctl hívásokat használnak, átvihetők a Netlinkre, ami nagyban leegyszerűsíti az ezekkel az alrendszerekkel való munkavégzéshez szükséges alkalmazások létrehozását. Ezenkívül a Netlink használata a nexthop objektumok és csoportok módosítására az útválasztási veremben hatékonyabb interakciót tesz lehetővé a felhasználói tér-útválasztási folyamatokkal.
Jelenleg bevezetett funkciók:
- Információk beszerzése útvonalakról, objektumokról és nexthops csoportokról, hálózati interfészekről, címekről és szomszédos gazdagépekről (arp/ndp).
- Értesítések generálása hálózati interfészek megjelenéséről, lekapcsolásáról, címek beállítása és törlése, útvonalak hozzáadása és törlése.
- Útvonalak, objektumok és nexthops csoportok, átjárók, hálózati interfészek hozzáadása és eltávolítása.
- Integráció Rtsock interfésszel az útválasztási tábla kezeléséhez.
Forrás: opennet.ru