Projekt F-Stack 2.0 je objavljen. Razvija verziju mrežnog paketa FreeBSD prilagođenu za samostalnu upotrebu u korisničkom prostoru kao biblioteku. Projekt je kreirala tvrtka Tencent, najveća kineska telekomunikacijska tvrtka, a koristi se u njihovim proizvodima i uslugama. Kod je napisan u C-u i distribuira se pod BSD licencom. Podržava Linux i FreeBSD. Projekt također podržava Nginx 1.28 i Redis 6.2.6, oba portirana na F-Stack, koji pokazuju performanse superiornije od standardnih verzija koje se izvode na vrhu mrežnog steka sustava.
F-Stack omogućuje aplikacijama korištenje vlastitog lokalnog mrežnog stoga, neovisno o mrežnom stogu operacijskog sustava, radeći u korisničkom prostoru i izravno komunicirajući s mrežnom opremom. F-Stack je pozicioniran kao rješenje za povećanje performansi rukovatelja mrežnim zahtjevima u uvjetima gdje je standard... TCP/IP stog jezgre Linux postaje usko grlo i ograničava skaliranje. Teoretski, F-Stack omogućuje dosezanje gornje granice mrežnih performansi korištene mrežne kartice, a u nekim situacijama omogućuje značajno povećanje broja obrađenih malih mrežnih zahtjeva.
Poboljšanja performansi postižu se uklanjanjem operacija kao što su kopiranje mrežnih paketa, raspoređivanje niti, rukovanje prekidima i sistemski pozivi. Za interakciju s mrežnom karticom, zaobilazeći sučelja jezgre operativnog sustava, koristi se okvir Data Plane Development Kit (DPDK). Ovaj okvir pruža sveobuhvatan skup biblioteka za interakciju niske razine s mrežnim adapterima. DPDK smanjuje opterećenje i minimizira cikluse CPU-a prilikom slanja ili primanja mrežnih paketa.
Funkcionalnost snopa TCP/IP Odgovara mrežnom stogu FreeBSD 15 i odvojen je od tog operativnog sustava u neovisnu biblioteku. Razvoj aplikacija može koristiti standardni POSIX API (socket, epoll, kqueue) ili vlasnički API temeljen na mikronitima, što pojednostavljuje stvaranje mrežnih aplikacija i eliminira potrebu za složenom asinhronom logikom obrade zahtjeva. Može se koristiti s nemodificiranim aplikacijama učitanim putem LD_PRELOAD.
Najuočljivije promjene u novom izdanju:
- Komponente mrežnog paketa ažurirane su na FreeBSD 15 (prije se koristio FreeBSD 13).
- Višenitni način rada (thread_mode=1) implementiran je u jednom procesu, nadopunjujući prethodno dostupan višenitni način rada.
- Dodan je lagani način rada (primary_slim) u kojem glavni proces obavlja samo osnovne zadatke inicijalizacije i koordinacije, dok se prijem paketa i obrada redova prijema/odašiljanja (rx/tx) izvodi samo na strani podređenih procesa.
- Dodana podrška za mehanizam hardverskog ubrzanja
TSO (TCP Segmentation Offload) za preusmjeravanje operacija agregacije paketa na mrežnu karticu, s mogućnošću vraćanja na softversku implementaciju. Poboljšana TSO (TCP Segmentation Offload, preusmjeravanje obrade segmenata paketa na mrežnu karticu) podrška za IPv6. - Dodana je mogućnost promjene veličine MTU-a (maksimalne jedinice prijenosa) i implementirana je podrška za jumbo okvire.
- Proširene mogućnosti za upravljanje hardverskim ubrzanjem izračuna kontrolnih zbrojeva za poslane pakete
- Dodana je funkcija ff_zc_recv() za primanje podataka bez međumemorije (nulta kopija). Slična funkcija ff_zc_send() za slanje je prerađena. Optimizirana je i dopunjena. IPv6 podrška funkcija ff_rss_check().
- Dodana je opcija FF_KERNEL_COEXIST za rad zajedno s mrežnim stogom kernela.
- Omogućena je mogućnost spremanja prometnih informacija u pcap dumpovima s točnošću od nanosekunde.
- U datoteku config.ini dodani su novi parametri idle_loop_interval, extra_eal_args, drain_ring_size, reload_heartbeat_timeout_ms i reload_udp_idle_ms.
- Specijalizirana nginx verzija sada podržava ponovno učitavanje konfiguracije i ažuriranje binarne datoteke bez prekidanja veza (graceful_reload=1).
Izvor: opennet.ru
