Pärast poolteist aastat arendust projekti väljalaskmine , arendades kõrge jõudlusega võrgustiku pinu, mis töötab kasutaja ruumis, ja põhineb raamistikul ja FreeBSD TCP/IP pinos (F-Stack ei ole seotud FreeBSD-ga ja esmaste rakendamisplatvormidena kaalub Linuxit). Projekti kasutatakse erinevates toodetes ja teenustes , Hiina suurima telekommunikatsioonifirma. Kood on BSD litsentsi all. Toetatakse töö tegemist Linuxis ja FreeBSD-s.
F-Stack võimaldab korraldada võrgusuhtlust rakendustes, kasutades operatsioonisüsteemi võrgu pinu asemel oma võrgupinu, mis töötab kasutaja ruumis ja on otseselt ühendatud võrguteenustega. spetsialiseeritud väljaandeid Nginx ja Redis, kohandatud F-Stacki kasutamiseks.
Rakenduste arendamiseks nii Posix API (Socket, Epoll, Kqueue), mis lihtsustab olemasolevate rakenduste tõlkimist F-Stacki, ning oma programmistiku, mis põhineb koroutine'idel (mikrovoogudel), mis lihtsustab võrgu rakenduste loomist ja võimaldab vältida keerulist asünkroonsete päringute töötluse loogikat. F-Stack pakub ka tööriistu, et lihtsustada rakenduste kasutamist mitme protsessiga arhitektuuriga.
Võrgukaardi suhtlemiseks, mööda operatsioonisüsteemi tuuma liideseid, kasutatakse raamistikku (Data Plane Development Kit), mis pakub madala taseme teegikogumit võrguadapteritega töötamiseks, interaktsiooniks mitme tuumaga süsteemides, ringbuffereid ja suuri mälulehte („huge page“). DPDK kasutamine võimaldab võrgu pakettide vastuvõtmist ja saatmist minimaalse CPU tsüklite arvu täitmisega (umbes 80 tsüklit paketi kohta) ja arendada kõrge jõudlusega võrgu stack komponente. TCP/IP stack’i funktsionaalsus on otseselt laenatud FreeBSD 11.1-st ja eraldatud operatsioonisüsteemist sõltumatuks raamatukoguks.
F-Stack on lahenduseks, mis võimaldab suurendada võrgu päringute töötlemise efektiivsust olukordades, kus Linuxi tuuma tavapärane TCP/IP kiht muutub kitsaskohaks ja piirab skaleeritavust. F-Stack'i rakendamine toob märkimisväärse optimeerimise ja võimaldab teatud olukordades suurendada töödeldavate väikeste päringute arvu mitu korda.
Tõhususe tõus saavutatakse võrgu paketide kopeerimise, voogude planeerimise, katkestuste töötlemise ja süsteemikutsungite välistamise kaudu. F-Stack võimaldab saavutada võrgu jõudluse katet, mis on võimalik kasutatava võrkaartiga. Näiteks on F-Stack'i lahendused demonstreerinud võimalust töödelda 10 miljonit samal ajal ühendust, 5 miljonit päringut sekundis ja 1 miljon ühendust sekundis.
Uues väljaandes:
- Lisatud on VLAN-i tugi;
- Tagatud on töövõime isoleeritud konteinerites, mis põhinevad Docker'il;
- Töötavad liidesed ff_dup, ff_dup2, ff_ioctl_freebsd, ff_getsockopt_freebsd ja ff_setsockopt_freebsd;
- Lisatud on 'idle_sleep' parameeter, et vähendada CPU koormust, kui sissetulevaid pakette ei ole.
- Lisa toetust ARM64 arhitektuuri ehitusele;
- F-Stack redaktsioonis tõlgitud Nginx'is on asendatud getpeername, getsockname ja shutdown käsitlejad;
- Ülemineku teostamine DPDK 17.11.4 LTS uuele versioonile;
- Komplekti on lisatud utiliit aktiivsete F-Stack rakenduste kaudu voolava hetktaseme allalaadimise kuvamiseks (sarnaneb trafshow'ga).
Tuleviku plaanides IPv6 tugi, API pakkumine Python, PHP ja Go keeledele, Cyptodev API tugi (), pakettide saatmisel zerocopy kasutamine, tugi ja võimalus käivitada taustprotsessina.
Allikas: opennet.ru
