Byl zveřejněn síťový stack F-Stack 1.24, který je verzí síťového stacku FreeBSD, fungující v prostoru uživatele a využívající framework DPDK pro dosažení maximálního výkonu. Projekt byl vytvořen největší telekomunikační společností v Číně Tencent a je využíván v jejích produktech a službách. Kód je napsán v jazyce C a je distribuován pod licencí BSD. Podpora pro Linux a FreeBSD je zajištěna.
F-Stack umožňuje využití vlastního lokálního síťového stacku v aplikacích, který je nezávislý na síťovém stacku operačního systému, fungující v prostoru uživatele a pracující přímo se síťovým hardwarem. F-Stack je prezentován jako řešení zvyšující výkon zpracovatelů síťových požadavků v situacích, kdy standardní TCP/IP stack jádra Linuxu generuje úzké místo a omezuje škálovatelnost — v některých případech projekt umožňuje několikanásobně zvýšit počet zpracovávaných drobných síťových požadavků. Teoreticky F-Stack umožňuje dosáhnout stropu síťového výkonu, který je možný pro použitou síťovou kartu.
Zvýšení výkonu je dosaženo odstraněním operací, jako je kopírování síťových paketů, plánování vláken, zpracování přerušení a používání systémových volání. Pro interakci se síťovou kartou, bez použití rozhraní jádra operačního systému, se využívá framework DPDK (Data Plane Development Kit), který rozvíjí sadu knihoven pro nízkoúrovňovou práci se síťovými adaptéry. DPDK umožňuje snížit režijní náklady a dostat se na minimální počet cyklů CPU při příjmu nebo odesílání síťových paketů.
Funkcionalita TCP/IP stacku odpovídá síťovému stacku FreeBSD 13 a byla vyčleněna z této operační soustavy do nezávislé knihovny. Pro vývoj aplikací je možné použít standardní API POSIX (socket, epoll, kqueue) nebo vlastní programové rozhraní založené na mikrovláknách, které usnadňuje vytváření síťových aplikací a umožňuje se obejít bez složité logiky asynchronního zpracování požadavků.
Projekt podporuje verze vícetransportního protokolu převedené na použití F-Stack serveru Nginx 1.25.2 a databázový systém Redis 6.2.6, které vykazují výkon nad rámec běžných sestavení pracujících nad systémovým síťovým zásobníkem.
Nejvýznamnější změny v novém vydání:
- V konfiguračním souboru config.ini byla přidána možnost výběru mezi použitím KNI (Kernel NIC Interface) a virtio_user jako transportu pro přenos paketů mezi jádrem a aplikací pro zpracování paketů založenou na DPDK. Přidána možnost použití ratelimit pro KNI.
- Byla přidána podpora pro aktivaci nastavení síťového zásobníku "net.add_addr_allfibs=1" pro přidávání adres do všech směrovacích tabulek.
- Přidán API ff_get_traffic pro získání provozu, např. pro implementaci QoS (Quality of Service).
- Přidány funkce pthread_create a pthread_join připomínající podobné funkce z POSIX.
- Přidán API ff_dpdk_raw_packet_send pro odesílání raw paketů přímo aplikací přes DPDK, nikoliv přes soket.
- Byla implementována podpora automatického nastavení VLAN, směrování a policy routing.
- Bylo přejděno na verzi DPDK 22.11.6 LTS.
- Ve realizaci Nginx nad F-Stack byla přidána podpora modulu stream.
Zdroj: opennet.ru
