Másfél év fejlesztés után a projekt kiadása , amely egy felhasználói térben működő, magasan teljesítő hálózati verem, amely keretrendszeren alapul és a FreeBSD TCP/IP veremén (az F-Stack nem kötődik a FreeBSD-hez és a Linux-ot tekinti elsődleges alkalmazási platformnak). A projekt különböző termékekben és szolgáltatásokban használatos , Kína legnagyobb távközlési vállalatánál. A kód BSD licenc alatt áll. Támogatja a Linux és FreeBSD környezetet.
Az F-Stack lehetővé teszi a hálózati interakciók megszervezését az alkalmazásokban, a rendszermag hálózati veremének használata helyett saját hálózati verem alkalmazásával, amely felhasználói térben működik és közvetlenül kommunikál a hálózati eszközökkel. specializált Nginx és Redis kiadások, amelyek az F-Stack használatára lettek optimalizálva.
Az alkalmazások fejlesztéséhez elérhető a szabványos Posix API (Socket, Epoll, Kqueue), amely megkönnyíti a meglévő alkalmazások F-Stack-re történő átállítását, valamint saját programozási interfész, amely a koroutines (mikroszálak) alapjaira épül, megkönnyítve a hálózati alkalmazások készítését és elkerülve a bonyolult aszinkron kérésfeldolgozási logikát. Az F-Stack emellett eszközöket is biztosít a többszálas architektúrájú alkalmazások egyszerűsítéséhez.
A hálózati kártyával való interakcióhoz, megkerülve a rendszermag interfészeit, a keretrendszert (Data Plane Development Kit) használ, amely könyvtárkészletet biztosít az alacsony szintű munkához a hálózati adapterekkel, interakcióhoz a többmagos rendszerekben, gyűrűs pufferek aktiválásához és nagy memóriapage-ek („huge page”) kezeléséhez. A DPDK használatával lehetővé válik a hálózati csomagok vételének és küldésének végrehajtása minimális CPU ciklusszámmal (körülbelül 80 ciklus csomagonként), valamint a magas teljesítményű hálózati verem komponensek fejlesztése. A TCP/IP verem funkcionalitása közvetlenül a FreeBSD 11.1-ből származik és egy operációs rendszertől független könyvtárba van kiemelve.
Az F-Stack olyan megoldásként van pozicionálva, amely alkalmazható a hálózati kérések feldolgozójának teljesítményének növelésére, amikor a Linux kernel beépített TCP/IP stack-je szűk keresztmetszetként működik és korlátozza a skálázhatóságot. Az F-Stack alkalmazása jelentős optimalizálást nyújt, és bizonyos helyzetekben többszörösére növelheti a feldolgozható apró kérések számát.
A teljesítménynövekedés a hálózati csomagok másolásának, a száltervezésnek, a megszakításkezelésnek és a rendszerhívások alkalmazásának mellőzésével érhető el. Az F-Stack lehetővé teszi a hálózati teljesítmény plafonjának elérését, amely elérhető a használt hálózati kártyához. Például az F-Stack alapú megoldások 10 millió párhuzamos kapcsolat, 5 millió kérés másodpercenként és 1 millió kapcsolat másodpercenkénti feldolgozásának lehetőségét mutatták be.
Az új kiadásban:
- VLAN támogatás hozzáadva;
- Docker alapú elkülönített konténerek használatának lehetősége biztosítva;
- ff_dup, ff_dup2, ff_ioctl_freebsd, ff_getsockopt_freebsd és ff_setsockopt_freebsd interfészek megvalósítva;
- Hozzáadva az "idle_sleep" paraméter a CPU terhelésének csökkentésére bejövő csomagok hiányában.
- ARM64 architektúrára vonatkozó fordítási támogatás hozzáadva;
- Az F-Stack-re átültetett Nginx kiadásában a getpeername, getsockname és shutdown kezelők lecserélve;
- Átállás a DPDK 17.11.4 LTS új verziójára;
- Felszerelésbe egy segédprogram került be; a F-Stack alapú alkalmazások által feldolgozott aktuális forgalom megjelenítésére (hasonlít a trafshow-ra).
A jövőbeni tervek között szerepel IPv6 támogatás, API biztosítása Python, PHP és Go nyelveken, Cyptodev API támogatás (), zerocopy használata csomagok küldésénél, támogatás és a háttérfolyamatként történő futtatás lehetősége.
Forrás: opennet.ru
