Pasë një vit e gjysmë zhvillimi publikimi i projektit , që zhvillon një stekë rrjeti me performancë të lartë që punon në hapësirën e përdoruesit, i bazuar në kornizën dhe stekën TCP/IP të FreeBSD (F-Stack nuk është i varur nga FreeBSD dhe e konsideron Linux si platformën kryesore për përdorim). Projekti përdoret në produkte dhe shërbime të ndryshme , kompaninë më të madhe të telekomunikacionit në Kinë. Kodi është nën licencën BSD. Mbështetet ekzekutimi në Linux dhe FreeBSD.
F-Stack ofron mundësinë për të organizuar ndërveprimin rrjetor në aplikacione duke përdorur një stekë rrjeti të tijën përveç stekës rrjetore të sistemit operativ, që funksionon në hapësirën e përdoruesit dhe punon drejtpërdrejt me pajisjet rrjetore. edita të specializuara të Nginx dhe Redis, të modifikuara për përdorimin e F-Stack.
Për zhvillimin e aplikacioneve si një API standard Posix (Socket, Epoll, Kqueue), që thjeshton kalimin në F-Stack të aplikacioneve ekzistuese, ashtu dhe një ndërfaqe të vetme të programimit të bazuar në korutina (mikrotëhe), që thjeshton krijimin e aplikacioneve rrjetore dhe lejon shmangien e logjikës së komplikuar të përpunimit asinkron të kërkesave. F-Stack gjithashtu ofron mjete për të lehtësuar përdorimin në aplikacione me arkitekturë shumë-procesore.
Për ndërveprimin me kartën rrjetore, përmes ndërfaqeve të bërthamës së sistemit operativ, përdoret korniza (Data Plane Development Kit), që ofron një grup bibliotekash për punë me nivel të ulët me adaptuesit rrjetorë, ndërveprimin në sisteme me shumë bërthama, angazhimin e buferëve rrethorë dhe faqeve të mëdha të memories ("huge page"). Përdorimi i DPDK ofron mundësinë për të pranuar dhe dërguar paketa rrjetore me një numër minimal ciklesh CPU (rreth 80 cikle për paketë) dhe për të zhvilluar komponentë me performancë të lartë të stekës rrjetore. Funksionaliteti i stekës TCP/IP është marrë nga FreeBSD 11.1 dhe është ndarë në një bibliotekë të pavarur nga sistemi operativ.
F-Stack pozicionohet si një zgjidhje që mund të përdoret për të përmirësuar performancën e manipuluesve të kërkesave rrjetore në kushte kur funksionimi i stekës TCP/IP të bërthamës së Linux-it bëhet një pikë ngushtice dhe kufizon shkallëzimin. Përdorimi i F-Stack ofron një optimizim të dukshëm dhe lejon në disa raste rritjen e numrit të kërkesave të vogla të përpunuara disa herë.
Rritja e performancës arrihet duke përjashtuar operacione si kopjimi i paketimeve rrjetore, planifikimi i rrymave, përpunimi i ndërprerjeve dhe aplikimi i thirrjeve sistemore. F-Stack lejon arritjen e kufirit të performancës rrjetore, të mundshme për kartën e rrjetit që përdoret. Për shembull, zgjidhjet e bazuara në F-Stack demonstruan mundësinë e përpunimit të 10 milion lidhjeve paralelisht, 5 milion kërkesave në sekondë dhe 1 milion lidhjesh në sekondë.
Në lëshimin e ri:
- Shtuar mbështetje për VLAN;
- Siguruar mundësinë e punës në konteinerë të izoluar të bazuar në Docker;
- Realizuar interfeset ff_dup, ff_dup2, ff_ioctl_freebsd, ff_getsockopt_freebsd dhe ff_setsockopt_freebsd;
- Shtuar parametri 'idle_sleep' për të reduktuar ngarkesën në CPU në situata kur nuk ka paketa hyrëse
- Shtuar mbështetje për ndërtimin për arkitekturën ARM64;
- Në redaktimin e përkthyer në F-Stack të Nginx janë zëvendësuar trajtuesit getpeername, getsockname dhe shutdown;
- Kryer kalimi në versionin e ri DPDK 17.11.4 LTS;
- Pjesë e shtuar është utilita për të treguar trafikun aktual që po përpunohet nga aplikacionet në bazë të F-Stack (ngjan me trafshow).
Nga planet për të ardhmen mbështetje për IPv6, ofrimi i API për gjuhët Python, PHP dhe Go, mbështetje për API Cyptodev (), përdorimi i zerocopy gjatë dërgimit të paketimeve, mbështetje dhe mundësia e ekzekutimit në formën e një procesi në sfond.
Burimi: opennet.ru
