Vydání síťového zásobníku F-Stack 1.13, běžícího v prostoru uživatele

Po roce a půl vývoje se uskutečnilo vydání projektu F-Stack 1.13, vyvíjející vysoce výkonný síťový stak pracující v uživatelském prostoru, založený na rámci DPDK 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 Tencent, největší telekomunikační společnosti v Číně. Kód distribuováno 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. Jsou poskytovány specializované edice Nginx a Redis, převedené na použití F-Stack.

Pro vývoj aplikací podporováno 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 DPDK (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.

Vydání síťového zásobníku F-Stack 1.13, běžícího v prostoru uživatele

Vydání síťového zásobníku F-Stack 1.13, běžícího v prostoru uživatele

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 traffic pro zobrazení aktuálního provozu zpracovávaného aplikacemi na bázi F-Stack (podobné trafshow).

Z plánů do budoucna se vyzdvihuje podpora IPv6, poskytnutí API pro jazyky Python, PHP a Go, podpora API Cyptodev (Intel QAT), využití zerocopy při odesílání paketů, podpora SPDK a možnost spuštění jako background process.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster