Objavljen je mrežni stog F-Stack 1.24, koji predstavlja izdanje mrežnog stoga FreeBSD, koje radi u korisničkom prostoru i koristi DPDK okvir za postizanje maksimalne učinkovitosti. Projekt je stvorila najveća telekomunikacijska kompanija u Kini, Tencent, i koristi se u svojim proizvodima i uslugama. Kod je napisan na jeziku C i distribuira se pod BSD licencom. Podržana je upotreba na Linuxu i FreeBSD-u.
F-Stack omogućuje korištenje vlastitog lokalnog mrežnog stoga u aplikacijama, neovisno o mrežnom stogu operativnog sustava, djelujući u korisničkom prostoru i izravno radeći s mrežnom opremom. F-Stack se pozicionira kao rješenje koje poboljšava učinkovitost obraditelja mrežnih zahtjeva kada standardni TCP/IP stog jezgre Linuxa postane usko grlo i ograničava skaliranje — u nekim situacijama projekt omogućuje višestruko povećanje broja obrađenih sitnih mrežnih zahtjeva. Teoretski, F-Stack omogućuje postizanje stropne mrežne učinkovitosti koja je moguća za korištenu mrežnu karticu.
Povećanje performansi postiže se isključivanjem operacija poput kopiranja mrežnih paketa, planiranja niti, obrade prekida i primjene sistemskih poziva. Za interakciju s mrežnom karticom, mimo sučelja jezgre operativnog sustava, koristi se DPDK (Data Plane Development Kit), koji razvija skup knjižnica za niskorazinsko upravljanje mrežnim adapterima. DPDK smanjuje troškove i osigurava minimalan broj CPU ciklusa pri prijemu ili slanju mrežnih paketa.
Funkcionalnost TCP/IP stoga odgovara mrežnom stogu FreeBSD 13 i izdvojena je iz ove operacijske sustave u neovisnu knjižnicu. Za razvoj aplikacija mogu se koristiti standardni POSIX API (socket, epoll, kqueue) ili vlastito programsko sučelje zasnovano na mikro-nitima, koje pojednostavljuje izradu mrežnih aplikacija i omogućuje izbjegavanje složene logike asinkrone obrade zahtjeva.
Projekt podržava verzije više protokola prevedene na korištenje F-Stack. poslužitelja Nginx 1.25.2 i DB Redis 6.2.6, koji pokazuju performanse iznad uobičajenih buildova koji rade na sistemskom mrežnom steku.
Najznačajnije promjene u novom izdanju:
- U konfiguracijskoj datoteci config.ini omogućeno je odabir između korištenja KNI (Kernel NIC Interface) i virtio_user kao transporta za razmjenu paketa između jezgre i aplikacije za obradu paketa temeljene na DPDK-u. Dodana je mogućnost korištenja ratelimit za KNI.
- Dodana je podrška za uključivanje postavke mrežnog steka „net.add_addr_allfibs=1“ za dodavanje adresa u sve tablice usmjeravanja.
- Dodana je API funkcija ff_get_traffic za dobivanje prometa, na primjer, za implementaciju QoS (Kvaliteta usluge).
- Dodane su funkcije pthread_create i pthread_join, koje podsjećaju na slične funkcije iz POSIX-a.
- Dodana je API funkcija ff_dpdk_raw_packet_send za slanje raw paketa iz aplikacije direktno putem DPDK-a, a ne putem socketa.
- Implementirana je podrška za automatsko podešavanje VLAN-a, usmjeravanje i policy routing.
- Prešlo se na verziju DPDK 22.11.6 LTS.
- U implementaciji Nginx-a iznad F-Stack-a dodana je podrška za modul stream.
Izvor: opennet.ru
