Megjelent az F-Stack 1.24 hálózati verem, amely a FreeBSD hálózati veremének kiadása, és felhasználói térben működik, DPDK keretrendszert alkalmazva a maximális teljesítmény elérése érdekében. A projektet Kína legnagyobb távközlési cége, a Tencent hozta létre, és termékeiben és szolgáltatásaiban használják. A kód C nyelven íródott és BSD licenc alatt terjesztik. Linux és FreeBSD alatt is működik.
Az F-Stack lehetővé teszi, hogy az alkalmazások saját helyi hálózati veremüket használják, amely független az operációs rendszer hálózati veremétől, felhasználói térben működik és közvetlenül az hálózati berendezésekkel kommunikál. Az F-Stack megoldásként van pozicionálva, amely növeli a hálózati kérések feldolgozási teljesítményét, amikor a szokásos Linux kernel TCP/IP verem szűk keresztmetszetet képez és korlátozza a skálázhatóságot — bizonyos helyzetekben a projekt lehetővé teszi a feldolgozott kis hálózati kérések számának többszörös növelését. Elméletileg az F-Stack elérheti a hálózati teljesítmény plafonját, amely elérhető a használt hálózati kártyához.
A teljesítmény növelése olyan műveletek kizárásával valósul meg, mint a hálózati csomagok másolása, szálak ütemezése, megszakítások kezelése és rendszerhívások alkalmazása. A hálózati kártyával való interakcióhoz, megkerülve az operációs rendszer kernelének interfészeit, a DPDK (Data Plane Development Kit) keretrendszert alkalmazzák, amely alacsony szintű munkát végez a hálózati adapterekkel. A DPDK lehetőséget biztosít a költségek csökkentésére és a CPU ciklusok minimalizálására a hálózati csomagok fogadása vagy küldése során.
A TCP/IP verem funkcionalitása megfelel a FreeBSD 13 hálózati veremének, és független könyvtárként kiváltották az operációs rendszerből. Alkalmazások fejlesztéséhez a standard POSIX API-t (socket, epoll, kqueue) vagy saját, mikroszálakra alapozott programozási interfészt használhatunk, amely egyszerűsíti a hálózati alkalmazások létrehozását, és lehetővé teszi a bonyolult aszinkron kérésfeldolgozás logikájának elkerülését.
A projekt támogatja a többprotokollos F-Stack használatára fordított kiadásokat. a szerver Nginx 1.25.2 és Redis 6.2.6 adatbázis, amelyek a normál összeállításokhoz képest magasabb teljesítményt nyújtanak a rendszerhálózati verem felett.
A legfontosabb változások az új kiadásban:
- A config.ini konfigurációs fájlban lehetőség nyílik a KNI (Kernel NIC Interface) és a virtio_user közötti választásra a csomagok átviteléhez a kernel és a DPDK alapú csomagfeldolgozó alkalmazás között. A KNI számára ratelimit használatát is lehetővé tették.
- Hozzáadásra került a hálózati verem beállításának "net.add_addr_allfibs=1" engedélyezése az összes routing táblázatba való cím hozzáadásához.
- Hozzáadva az ff_get_traffic API, amely a forgalom lekérdezésére szolgál, például a QoS (Quality of Service) megvalósításához.
- Hozzáadva a pthread_create és pthread_join funkciók, amelyek hasonlítanak a POSIX hasonló funkcióihoz.
- Hozzáadva az ff_dpdk_raw_packet_send API, amely lehetővé teszi a natív csomagok közvetlen küldését DPDK-n keresztül, nem socketen keresztül.
- Automatikus VLAN konfiguráció, routolás és policy routing támogatás megvalósítása.
- Átállás a DPDK 22.11.6 LTS verziójára.
- Az F-Stack feletti Nginx megvalósításában hozzáadták a stream modul támogatását.
Forrás: opennet.ru
