Ilmumas on F-Stack 1.24, mis on FreeBSD võrgustiku steki väljaanne, mis töötab kasutaja ruumis ja kasutab DPDK raamistikku maksimaalse jõudluse saavutamiseks. Projekt on loodud Hiina suurima telekommunikatsiooniettevõtte Tencent poolt ja seda kasutatakse nende toodetes ja teenustes. Kood on kirjutatud C keeles ja levitatakse BSD litsentsi alusel. Tugi tööks Linuxis ja FreeBSD-s.
F-Stack võimaldab rakendustes kasutada oma lokaalset võrgu steki, mis ei sõltu operatsioonisüsteemi võrgu stegist, töötades kasutaja ruumis ja suheldes otse võrgu seadmetega. F-Stack on positsioneeritud lahendusena, mis võimaldab suurendada võrgu päringute töötlejate jõudlust olukordades, kus Linuxi tuum TCP/IP stek muutub kitsaskohaks ja piirab skaleeritavust — teatud olukordades võimaldab projekt märkimisväärselt suurendada töötlemiseks mõeldud väikeste võrgu päringute arvu. Teoreetiliselt võimaldab F-Stack saavutada võrgu jõudluse piiri, mis on võimalik kasutatava võrgu kaardi jaoks.
Jõudluse tõstmine saavutatakse, välistades sellised operatsioonid nagu võrgu pakettide kopeerimine, voogude planeerimine, katkestuste töötlemine ja süsteemi kutsungite rakendamine. Võrgukaardiga suhtlemiseks, mööda operatsioonisüsteemi kernelite alsõid, kasutatakse DPDK (Data Plane Development Kit) raamistikku, mis arendab madalama taseme raamatukogusid võrguadapteritega töötamiseks. DPDK võimaldab vähendada üleliigseid kulusid ja jääda minimaalsete CPU tsüklite hulka võrgu paketide vastuvõtmisel või saatmisel.
TCP/IP stacki funktsionaalsus vastab FreeBSD 13 võrgu stackile ja on eraldatud sellest operatsioonisüsteemist sõltumatuks raamatukoguks. Rakenduste arendamiseks saab kasutada standardset POSIX API-d (socket, epoll, kqueue) või omaloodud programmiliidest, mis põhineb mikrotelingutel, lihtsustades võrgurakenduste loomist ja võimaldades vältida keerulist asünkroonsete päringute töötlemise loogikat.
Projekt toetab F-Stack kasutusele võtmise tõlgitud redaktsioone mitme protokolliga. serverile Nginx 1.25.2 ja Redis 6.2.6, mis demonstreerivad paremaks toimivust kui tavapärased versioonid, mis töötavad süsteemi võrgu puhvri kohal.
Uues väljaandes on kõige märgatavamad muutused:
- Config.ini konfiguratsioonifailis on võimalik valida KNI (Kernel NIC Interface) ja virtio_user vahel pakettide edastamiseks tuuma ja DPDK-põhise pakettide töötlemise rakenduse vahel. KNI-le on lisatud võimalus kasutada silumatust.
- Lisatud on tugi võrgu puhvri seadistuse "net.add_addr_allfibs=1" aktiveerimiseks, et lisada aadresse kõigisse marsruutimis tabelitesse.
- Lisatud on API ff_get_traffic, et saada liiklust, näiteks QoS (teenuse kvaliteedi) rakendamiseks.
- Lisatud on pthread_create ja pthread_join funktsioonid, mis meenutavad sarnaseid POSIX-funktsioone.
- Lisatud on API ff_dpdk_raw_packet_send, et rakendus saaks saata toorpakette otse läbi DPDK, mitte soketi kaudu.
- Rakendatud on VLAN-i, marsruutimise ja poliitika marsruutimise automaatse seadistamise tugi.
- Üleminek DPDK versioonile 22.11.6 LTS on sooritatud.
- Nginxi teostuses F-Stacki peal on lisatud voogmoduli tugi.
Allikas: opennet.ru
