F-Stack 2.0 projekti vabastati, mis arendab FreeBSD võrgu stack'i redaktsiooni, kohandatud töötama isoleeritud kasutajaruumi vormis raamatukoguna. Projekti on loonud Hiinas suurim telekommunikatsiooniettevõte Tencent ning seda kasutatakse tema toodetes ja teenustes. Kood on kirjutatud C keeles ja seda levitatakse BSD litsentsi alusel. Toetatud on töötamine Linuxis ja FreeBSD-s. Projekt toetab ka F-Stack kasutamiseks kohandatud Nginx versioone 1.28 ja andmebaasi Redis 6.2.6, mis näitavad paremat jõudlust kui tavapärased kogud, mis töötavad süsteemi võrgu stack'i peal.
F-Stack võimaldab rakendustes kasutada oma kohalikku võrgu stack'i, mis ei sõltu operatsioonisüsteemi võrgu stack'ist, töötab kasutajaruumi tasemel ja suhtleb otse võrgu seadmetega. F-Stack positsioneeritakse lahendusena, mis võimaldab parandada võrgu päringute töötlejate jõudlust olukordades, kus Linuxi tuuma vaikimisi TCP/IP stack muutub pudelikaelaks ja piirab skaleeritavust. Teoreetiliselt võimaldab F-Stack saavutada võrgu jõudluse piiri, mis on võimalik kasutusele võetud võrgu kaardi jaoks, ja mõnes olukorras annab see võimaluse mitmekordselt suurendada töödeldavate väikeste võrgu päringute arvu.
Jõudluse tõstmine saavutatakse selliste operatsioonide nagu võrgu pakettide kopeerimine, lõimede ajastamine, katkestuste töötlemine ja süsteemikõnede tegemine vältimise kaudu. Võrgu kaardiga suhtlemiseks, mööda operatsioonisüsteemi tuuma liideseid, kasutatakse raamistikku DPDK (Data Plane Development Kit), mis arendab madala taseme raamatukogusid võrgu adapteritega töötamiseks. DPDK võimaldab vähendada kulu ning mahutada minimaalset arv CPU tsüklit võrgu pakettide vastuvõtmise või saatmise ajal.
TCP/IP steki funktsionaalsus vastab FreeBSD 15 võrgustiku stekile ja on eraldatud sellest opsüsteemist iseseisvaks teegiks. Rakenduste arendamiseks saab kasutada standardset POSIX API-d (socket, epoll, kqueue) või omaarkei, mis põhineb mikrotükkidel ja lihtsustab võrgu rakenduste loomist, võimaldades vältida keerulist asünkroonsete päringute töötlemise loogikat. Võib kasutada ka modifitseerimata rakendustega, laadides läbi LD_PRELOAD.
Uue väljaande kõige märgatavamad muudatused:
- Võrgustiku steki komponendid on värskendatud FreeBSD 15 olekusse (varasem versioon oli FreeBSD 13).
- Realiseeritud on mitme lõime töörežiim (thread_mode=1) ühes protsessis, täiustades varasemaid mitme protsessi režiime.
- Lisa lihtne töörežiim (primary_slim), kus põhiprotsess täidab ainult algselt ülesandeid ja töö koordineerimist, samas kui pakettide vastuvõtmine ja edastamise järjekordade töötlemine (rx/tx) toimub ainult alamprotsesside poolel.
- Lisatud tugi riistvara kiirenduse mehhanismile.
TSO (TCP Segmentation Offload) pakettide kokkuviimise operatsioonide viimiseks võrkaartide poole, võimaldades tagasipöördumist tarkvaralisele teostusele. TSO toe parendamine (TCP Segmentation Offload, pakettide segmentide töötlemise viimine võrkaartidele) IPv6 jaoks. - Lisatud võimalus MTU (Maximum Transmission Unit) suuruse muutmiseks ja jumbo-kaadrite toe rakendamiseks.
- Parandatud riistvara kiirenduse juhtimist edastatud pakettide kontrollsumma arvutamiseks.
- Lisatud funktsioon ff_zc_recv() andmete saamiseks vahepealsete puhverdusteta (zero-copy). Analoogne funktsioon ff_zc_send() on ümber kujundatud saatmiseks. Optimeeritud ja täiendatud. IPv6 toe funktsioon ff_rss_check().
- Lisatud valik FF_KERNEL_COEXIST, et töötada koos tuuma võrgustiku stekiga.
- Pakkuge võimalus salvestada teavet liiklusest pcap-dumpides nanosekundilise täpsusega.
- config.ini-sse on lisatud uued parameetrid idle_loop_interval, extra_eal_args, drain_ring_size, reload_heartbeat_timeout_ms ja reload_udp_idle_ms.
- Spetsialiseeritud nginx-i kogumis on realiseeritud konfiguratsiooni laadimise ja binaarfaili värskendamise toetus, katkestamata ühendusi (graceful_reload=1).
Allikas: opennet.ru
