U kodnu bazu FreeBSD prihvaćena je implementacija komunikacijskog protokola Netlink (RFC 3549), koji se koristi u Linuxu za organizaciju interakcije između jezgre i procesa u korisničkom prostoru. Projekt se ograničava na podršku za obitelj operacija NETLINK_ROUTE za upravljanje stanjem mrežnog podsustava u jezgri.
U trenutnom obliku razina podrške za Netlink omogućuje korištenje Linux alata ip iz paketa iproute2 za upravljanje mrežnim sučeljima, postavljanje IP adresa, konfiguriranje usmjeravanja i manipulaciju objektima nexthop, koji sadrže podatke o stanju potrebne za prijenos paketa na željenu odredišnu točku. Nakon manjih promjena u zaglavljima, moguće je koristiti Netlink u paketu za usmjeravanje Bird.
Implementacija Netlinka za FreeBSD izvedena je kao učitajući modul jezgre, koji, gdje god je to moguće, ne utječe na druge podsustave jezgre i stvara odvojene redove zadataka (tasqueue) za obradu pristiglih poruka putem protokola i izvođenje operacija u asinkronom režimu. Kao razlog portiranja Netlinka navodi se nedostatak standardnog mehanizma za interakciju s podsustavima jezgre, što dovodi do toga da različiti podsustavi i driveri izmišljaju vlastite protokole.
Netlink nudi uniforme komunikacijski sloj i proširivi format poruka, koji može djelovati kao posrednik, automatski kombinirajući raznolike podatke iz različitih izvora u jednom zahtjevu. Na primjer, u Netlink se mogu prevesti takvi podsustavi FreeBSD-a kao što su devd, jail i pfilctl, koji trenutno koriste vlastite pozive ioctl, što će znatno olakšati izradu aplikacija za rad s podacima tih podsustava. Osim toga, korištenje Netlinka za promjenu objekata i grupa nexthop u stogu usmjeravanja omogućit će učinkovitiju interakciju sa procesima usmjeravanja u korisničkom prostoru.
Trenutno implementirane mogućnosti:
- Dohvaćanje informacija o rutama, objektima i grupama nexthop-a, mrežnim sučeljima, adresama i susjednim hostovima (arp/ndp).
- Formiranje obavijesti o pojavi i isključenju mrežnih sučelja, postavljanju i uklanjanju adresa, dodavanju i uklanjanju ruta.
- Dodavanje i uklanjanje ruta, objekata i grupa nexthop-a, gateway-a, mrežnih sučelja.
- Integracija s Rtsock sučeljem za upravljanje tablicom usmjeravanja.
Izvor: opennet.ru
