Nakon godinu i pol dana razvoja izdavanje projekta , razvijajući visoko-performantni mrežni stog koji radi u korisničkom prostoru, temeljen na okviru i TCP/IP stogu FreeBSD (F-Stack nije vezan uz FreeBSD i kao primarnu platformu za primjenu razmatra Linux). Projekt se koristi u raznim proizvodima i uslugama , najveće telekomunikacijske kompanije u Kini. Kod je licenciran pod BSD licencom. Podržana je radna funkcija u Linuxu i FreeBSD.
F-Stack omogućuje organiziranje mrežne komunikacije u aplikacijama, koristeći vlastiti mrežni stog umjesto mrežnog stoga operativnog sustava, koji funkcionira u korisničkom prostoru i izravno komunicira s mrežnom opremom. specijalizirane verzije Nginx i Redis, prevedene za korištenje s F-Stack.
Za razvoj aplikacija koristi se standardni Posix API (Socket, Epoll, Kqueue), koji olakšava prijelaz na F-Stack postojeće aplikacije, kao i vlastiti programski sučelje zasnovano na kooperativnim nitima (mikro- niti), koje olakšava stvaranje mrežnih aplikacija i omogućuje izbjegavanje složene logike asinkronog rukovanja zahtjevima. F-Stack također pruža alate za pojednostavljenje primjene u aplikacijama s višepostupnom arhitekturom.
Za interakciju s mrežnom karticom, mimo sučelja jezgre operativnog sustava, koristi se okvir (Data Plane Development Kit), koji pruža set biblioteka za nisko-level rad s mrežnim adapterima, interakciju u višekernel sistemima, korištenje ring buffer-a i velikih stranica memorije („huge page“). Korištenje DPDK omogućuje prihvaćanje i slanje mrežnih paketa s minimalnim brojem CPU ciklusa (oko 80 ciklusa po paketu) i razvoj visoko-performantnih komponenti mrežnog stoga. Funkcionalnost TCP/IP stoga je preuzeta iz FreeBSD 11.1 i izdvojena u neovisnu od operativnog sustava biblioteku.
F-Stack se pozicionira kao rješenje koje se može primijeniti za poboljšanje performansi obrada mrežnih zahtjeva u uvjetima kada rad standardnog TCP/IP stoga jezgre Linux postaje usko grlo i ograničava skalabilnost. Upotreba F-Stack-a pruža značajnu optimizaciju i u nekim situacijama omogućuje višestruko povećanje broja obrađenih malih zahtjeva.
Povećanje performansi postiže se isključivanjem operacija kao što su kopiranje mrežnih paketa, planiranje niti, obrada prekida i korištenje sistemskih poziva. F-Stack omogućuje postizanje vrhnja mrežne performanse koja je moguća za korištenu mrežnu karticu. Na primjer, rješenja temeljena na F-Stack-u pokazala su mogućnost obrade od 10 milijuna paralelnih veza, 5 milijuna zahtjeva u sekundi i 1 milijun veza u sekundi.
U novom izdanju:
- Dodana podrška za VLAN;
- Osigurana mogućnost rada u izoliranim kontejnerima temeljenim na Dockeru;
- Implementirani su interfejsi ff_dup, ff_dup2, ff_ioctl_freebsd, ff_getsockopt_freebsd i ff_setsockopt_freebsd;
- Dodana je opcija ‘idle_sleep’ za smanjivanje opterećenja CPU-a u situacijama kada nema dolaznih paketa.
- Dodana podrška za izgradnju za arhitekturu ARM64;
- U prevedenoj verziji Nginx na F-Stack zamijenjeni su obrada getpeername, getsockname i shutdown;
- Ostvaren je prijelaz na novu verziju DPDK 17.11.4 LTS;
- Uključena je alatka za prikaz trenutnog prometa koji obrađuju aplikacije temeljene na F-Stack-u (podsjeća na trafshow).
Iz planova za budućnost podrška za IPv6, pružanje API-ja za jezike Python, PHP i Go, podrška za API Cyptodev (), korištenje zerocopy pri slanju paketa, podrška za i mogućnost pokretanja u obliku pozadinskog procesa.
Izvor: opennet.ru
