Do kódu FreeBSD byla přijata implementace komunikačního protokolu Netlink (RFC 3549), používaného v Linuxu k organizaci interakce jádra s procesy v uživatelském prostoru. Projekt se omezuje na podporu rodiny operací NETLINK_ROUTE pro správu stavu síťového subsystému v jádře.
V současné podobě úroveň podpory Netlink umožňuje používat v FreeBSD linuxovou utilitu ip z balíčku iproute2 pro správu síťových rozhraní, nastavování IP adres, konfiguraci směrování a manipulaci s objekty nexthop, které uchovávají informace o stavu, používané pro přenos paketu na požadované místo určení. Po drobných úpravách hlavičkových souborů je možné použít Netlink v balíčku směrování Bird.
Implementace Netlink pro FreeBSD je vytvořena jako načitatelný modul jádra, který se, kde to je možné, nedotýká jiných subsystémů jádra a vytváří samostatné fronty úloh (tasqueue) pro zpracování příchozích zpráv protokolu a provádění operací v asynchronním režimu. Jako důvod přenosu Netlink je uváděna absence standardního mechanismu pro interakci se subsystémy jádra, což vede k tomu, že různé subsystémy a ovladače vynalézají vlastní protokoly.
Netlink nabízí jednotnou komunikační vrstvu a rozšiřitelný formát zpráv, který může fungovat jako zprostředkovatel, automaticky kombinující v jednom požadavku rozptýlená data z různých zdrojů. Například do Netlinku mohou být převedeny takové subsystémy FreeBSD, jako jsou devd, jail a pfilctl, které nyní používají své vlastní volání ioctl, což výrazně zjednoduší vytváření aplikací pro práci s těmito subsystémy. Kromě toho využití Netlinku pro změnu objektů a skupin nexthop v směrovacím stacku umožní efektivnější interakci s procesy směrování v uživatelském prostoru.
Realizované v současné době možnosti:
- Získání informací o trasách, objektech a skupinách nexthops, síťových rozhraních, adresách a sousedních hostech (arp/ndp).
- Vytváření oznámení o připojení a odpojení síťových rozhraní, nastavování a odstraňování adres, přidávání a odstraňování tras.
- Přidávání a odstraňování tras, objektů a skupin nexthops, brán, síťových rozhraní.
- Integrace s rozhraním Rtsock pro správu směrovací tabulky.
Zdroj: opennet.ru
