FreeBSD dodaje podršku za Netlink protokol koji se koristi u Linux kernelu

FreeBSD kodna baza usvaja implementaciju komunikacijskog protokola Netlink (RFC 3549), koji se koristi u Linuxu za organiziranje interakcije između kernela i procesa u korisničkom prostoru. Projekat je ograničen na podršku NETLINK_ROUTE familiji operacija za upravljanje stanjem mrežnog podsistema u kernelu.

U svom trenutnom obliku, sloj podrške za Netlink dozvoljava FreeBSD-u da koristi Linux ip uslužni program iz paketa iproute2 za upravljanje mrežnim sučeljima, postavljanje IP adresa, konfiguriranje rutiranja i manipulaciju nexthop objektima koji pohranjuju stanje korišteno za prosljeđivanje paketa na željeno odredište . Nakon neznatne promjene datoteka zaglavlja, moguće je koristiti Netlink u paketu Bird rutiranja.

Implementacija Netlink za FreeBSD je upakovana kao modul kernela koji se može učitati i koji, ako je moguće, ne utiče na druge podsisteme kernela i kreira odvojene redove zadataka (tasqueue) za obradu dolaznih poruka preko protokola i izvođenje operacija u asinhronom režimu. Razlog za prenos Netlink-a je nedostatak standardnog mehanizma za interakciju sa podsistemima kernela, što dovodi do toga da različiti podsistemi i drajveri izmišljaju sopstvene protokole.

Netlink nudi sloj objedinjene komunikacije i proširivi format poruke koji može djelovati kao posrednik koji automatski kombinira različite podatke iz različitih izvora u jedan zahtjev. Na primjer, FreeBSD podsistemi kao što su devd, jail i pfilctl mogu se migrirati na Netlink, sada koristeći vlastite ioctl pozive, što će uvelike pojednostaviti kreiranje aplikacija za rad sa ovim podsistemima. Osim toga, korištenje Netlinka za modificiranje nexthop objekata i grupa u steku rutiranja omogućit će efikasniju interakciju s procesima rutiranja u korisničkom prostoru.

Trenutno implementirane karakteristike:

  • Dobivanje informacija o rutama, nexthops objektima i grupama, mrežnim sučeljima, adresama i susjednim hostovima (arp/ndp).
  • Formiranje obavijesti o pojavljivanju i isključenju mrežnih sučelja, postavljanje i brisanje adresa, dodavanje i brisanje ruta.
  • Dodavanje i uklanjanje ruta, nexthops objekata i grupa, gatewaya, mrežnih sučelja.
  • Integracija sa Rtsock interfejsom za upravljanje tabelom rutiranja.

izvor: opennet.ru

Dodajte komentar