Po roce a půl vývoje vydání projektu , vyvíjející vysoce výkonný síťový stak pracující v uživatelském prostoru, založený na rámci a TCP/IP stacku FreeBSD (F-Stack není vázán na FreeBSD a jako primární platformu pro nasazení zvažuje Linux). Projekt je využíván v různých produktech a službách , největší telekomunikační společnosti v Číně. Kód je pod licencí BSD. Podporována je činnost v Linuxu a FreeBSD.
F-Stack umožňuje organizovat síťovou interakci v aplikacích, přičemž místo síťového stacku operačního systému použije vlastní síťový stack, fungující v uživatelském prostoru a přímo pracující s síťovým vybavením. specializované edice Nginx a Redis, převedené na použití F-Stack.
Pro vývoj aplikací se využívá jak standardní Posix API (Socket, Epoll, Kqueue), které usnadňuje portování existujících aplikací na F-Stack, tak i vlastní programové rozhraní založené na korutinách (mikrovláknech), usnadňující vytvoření síťových aplikací a umožňující se obejít složitou logiku asynchronního zpracování požadavků. F-Stack také poskytuje prostředky k usnadnění použití v aplikacích s vícenásobnou procesorovou architekturou.
Pro interakci se síťovou kartou, obcházející rozhraní jádra operačního systému, se používá rámec (Data Plane Development Kit), poskytující sadu knihoven pro nízkoúrovňovou práci se síťovými adaptéry, interakci v vícejádrových systémech, využívání kruhových bufferů a velkých stránek paměti („huge page“). Použití DPDK umožňuje přijímat a odesílat síťové pakety s minimálním počtem cyklů CPU (kolem 80 cyklů na paket) a vyvíjet vysoce výkonné komponenty síťového stacku. Funkcionalita TCP/IP stacku je přímo převzata z FreeBSD 11.1 a byla vyčleněna do nezávislé na operačním systému knihovny.
F-Stack se prezentuje jako řešení, které lze použít k zvýšení výkonnosti zpracovatelů síťových požadavků, když se standardní TCP/IP zásobník jádra Linuxu stává úzkým hrdlem a omezuje škálovatelnost. Použití F-Stacku však přináší znatelné optimalizace a v některých případech umožňuje zvýšit počet zpracovaných drobných požadavků několikrát.
Zvýšení výkonnosti se dosahuje vyloučením operací, jako je kopírování síťových paketů, plánování vláken, zpracovávání přerušení a použití systémových volání. F-Stack umožňuje dosáhnout maxima síťové výkonnosti, které je možné pro používanou síťovou kartu. Například řešení založená na F-Stacku prokázala možnost zpracování 10 milionů paralelních připojení, 5 milionů požadavků za sekundu a 1 milion připojení za sekundu.
V novém vydání:
- Byla přidána podpora VLAN;
- Byla zajištěna možnost provozu v izolovaných kontejnerech na bázi Docker;
- Byly implementovány rozhraní ff_dup, ff_dup2, ff_ioctl_freebsd, ff_getsockopt_freebsd a ff_setsockopt_freebsd;
- Byl přidán parametr "idle_sleep" pro snížení zátěže CPU v situacích bez příchozích paketů.
- Byla přidána podpora sestavení pro architekturu ARM64;
- V přeložené verzi Nginx na F-Stacku byly nahrazeny zpracovatele getpeername, getsockname a shutdown;
- Proběhl přechod na novou verzi DPDK 17.11.4 LTS;
- Byl přidán nástroj pro zobrazení aktuálního provozu zpracovávaného aplikacemi na bázi F-Stack (podobné trafshow).
Z plánů do budoucna podpora IPv6, poskytnutí API pro jazyky Python, PHP a Go, podpora API Cyptodev (), využití zerocopy při odesílání paketů, podpora a možnost spuštění jako background process.
Zdroj: opennet.ru
