Po enain letih razvoja izdanje projekta , razvijajoč učinkovit omrežni stek, ki deluje v uporabniškem prostoru in temelji na okvirju in TCP/IP steku FreeBSD (F-Stack ni vezan na FreeBSD in kot primarno platformo za uporabo obravnava Linux). Projekt se uporablja v različnih izdelkih in storitvah , največje telekomunikacijske podjetje na Kitajskem. Koda je pod licenco BSD. Podprta je tudi uporaba v Linuxu in FreeBSD.
F-Stack omogoča organizacijo omrežne interakcije v aplikacijah, pri čemer namesto omrežnega steka operacijskega sistema uporablja svoj lasten omrežni stek, ki deluje v uporabniškem prostoru in neposredno komunicira z omrežno opremo. specializirane različice Nginx in Redis, predelane za uporabo F-Stack.
Za razvoj aplikacij je na voljo tako standardni Posix API (Socket, Epoll, Kqueue), ki poenostavi prenos obstoječih aplikacij na F-Stack, kot tudi lastni programski vmesnik, temelječ na sodelujočih programih (mikropotokih), ki poenostavi ustvarjanje omrežnih aplikacij in omogoča izogibanje zapleteni logiki asinhrone obdelave zahtev. F-Stack prav tako zagotavlja sredstva za poenostavitev uporabe v aplikacijah z večprocesno arhitekturo.
Za interakcijo z omrežno kartico, mimo vmesnikov jedra operacijskega sistema, se uporablja okvir (Data Plane Development Kit), ki zagotavlja nabor knjižnic za nizkotno delo z omrežnimi adapterji, interakcijo v večjedrnih sistemih, uporabo obročastih pomnilnikov in velikih strani pomnilnika ("huge page"). Uporaba DPDK omogoča sprejemanje in pošiljanje omrežnih paketov z minimalnim številom ciklov CPU (približno 80 ciklov na paket) ter razvijanje visoko zmogljivih komponent omrežnega steka. Funkcionalnost TCP/IP steka je neposredno prevzeta iz FreeBSD 11.1 in je ločena v neodvisno knjižnico operacijskega sistema.
F-Stack se pozicionira kao rešenje koje se može primeniti za poboljšanje performansi obrada mrežnih zahteva u situacijama kada rad uobičajenog TCP/IP steka jezgra Linux postaje usko grlo i ograničava skalabilnost. Pri tome, primena F-Stack-a donosi značajnu optimizaciju i omogućava u nekim situacijama povećanje broja obrađenih manjih zahteva nekoliko puta.
Povećanje performansi postiže se isključivanjem operacija kao što su kopiranje mrežnih paketa, planiranje niti, obrada prekida i korišćenje sistemskih poziva. F-Stack omogućava dostizanje plafona mrežne performanse koji je moguć za korišćenu mrežnu kartu. Na primer, rešenja zasnovana na F-Stack-u pokazala su mogućnost obrade 10 miliona paralelnih konekcija, 5 miliona zahteva u sekundi i 1 milion konekcija u sekundi.
U novom izdanju:
- Dodata podrška za VLAN;
- Obezbeđena mogućnost rada u izolovanim kontejnerima na bazi Dockera;
- Implementirani su interfejsi ff_dup, ff_dup2, ff_ioctl_freebsd, ff_getsockopt_freebsd i ff_setsockopt_freebsd;
- Dodata je opcija "idle_sleep" za smanjenje opterećenja procesora u situaciji kada nema dolaznih paketa.
- Dodata podrška za izgradnju za arhitekturu ARM64;
- U prevedenoj verziji Nginx na F-Stack-u zamenjeni su obradi getpeername, getsockname i shutdown;
- Obavljen je prelazak na novu verziju DPDK 17.11.4 LTS;
- U sastav je dodata utilita za prikaz trenutnog saobraćaja koji obrade aplikacije zasnovane na F-Stack-u (podseća na trafshow).
Od planova za budućnost podrška za IPv6, obezbeđivanje API-a za jezike Python, PHP i Go, podrška za API Cyptodev (), korišćenje zerocopy prilikom slanja paketa, podrška i mogućnost pokretanja u obliku pozadinskog procesa.
Izvor: opennet.ru
