A fost publicat stiva de rețea F-Stack 2.0, care funcționează în spațiul utilizatorului

A avut loc lansarea proiectului F-Stack 2.0, care dezvoltă o ediție a stivului de rețea FreeBSD, adaptată pentru a funcționa în mod izolat în spațiul utilizatorului sub formă de bibliotecă. Proiectul a fost creat de cea mai mare companie de telecomunicații din China, Tencent, și este utilizat în produsele și serviciile sale. Codul este scris în limbajul C și este distribuit sub licența BSD. Este suportat atât în Linux, cât și în FreeBSD. Proiectul susține, de asemenea, edițiile Nginx 1.28 și baza de date Redis 6.2.6 adaptate pentru utilizarea F-Stack, care demonstrează performanțe mai mari decât versiunile obișnuite care rulează pe stiva de rețea a sistemului de operare.

F-Stack permite utilizarea unui stiv de rețea local, independent de stiva de rețea a sistemului de operare, funcționând în spațiul utilizatorului și interacționând direct cu echipamentele de rețea. F-Stack este poziționat ca o soluție care îmbunătățește performanța proceselor de gestionare a cererilor de rețea în condiții în care stiva TCP/IP standard a nucleului Linux devine un punct slab și limitează scalabilitatea. Teoretic, F-Stack permite atingerea plafonului de performanță a rețelei posibil pentru placa de rețea utilizată și, în anumite situații, oferă posibilitatea de a crește semnificativ numărul cererilor de rețea minuscule procesate.

Îmbunătățirea performanței este realizată prin excluderea operațiunilor precum copierea pachetelor de rețea, planificarea fluxurilor, gestionarea întreruperilor și apelurile către sistem. Pentru interacțiunea cu placa de rețea, ocolind interfețele nucleului sistemului de operare, se utilizează cadrul DPDK (Data Plane Development Kit), care dezvoltă un set de biblioteci pentru lucrul la nivel scăzut cu adaptoare de rețea. DPDK permite reducerea costurilor și optimizarea numărului de cicluri CPU necesare pentru primirea sau trimiterea pachetelor de rețea.

Funcționalitatea stivei TCP/IP corespunde stivei de rețea FreeBSD 15 și a fost desprinsă din acest sistem de operare într-o bibliotecă independentă. Pentru dezvoltarea aplicațiilor, se poate folosi API-ul standard POSIX (socket, epoll, kqueue) sau propriul interfață de programare bazată pe micro-thread-uri, care simplifică crearea aplicațiilor de rețea și permite evitarea unei logici complexe de procesare asincronă a cererilor. Este posibilă utilizarea cu aplicații nemodificate prin încărcarea prin LD_PRELOAD.

Cele mai notabile schimbări din noua versiune:

  • Componentele stivei de rețea au fost actualizate la starea FreeBSD 15 (anterior se folosea FreeBSD 13).
  • A fost implementat modul de operare multi-thread (thread_mode=1) într-un singur proces, completând modul multi-proces deja disponibil.
  • A fost adăugat un mod de operare ușor (primary_slim), în care procesul principal execută doar sarcini de bază de inițializare și coordonare, iar primirea pachetelor și procesarea cozii de primire/transmitere (rx/tx) se realizează doar de către procesele fiice.
  • A fost adăugată suport pentru mecanismul de accelerare hardware.
    TSO (TCP Segmentation Offload) pentru a muta pe partea plăcii de rețea operațiunile de combinare a pachetelor, cu posibilitatea de a reveni la implementarea software. Suportul pentru TSO (TCP Segmentation Offload, mutare pe placa de rețea a procesării pachetelor segmentate) pentru IPv6 a fost îmbunătățit.
  • A fost adăugată posibilitatea de a schimba dimensiunea MTU (Maximum transmission unit) și implementată suportul pentru jumbo-frame-uri.
  • Capabilitățile de gestionare a accelerării hardware pentru calcularea sumelor de verificare a pachetelor trimise au fost extinse.
  • A fost adăugată funcția ff_zc_recv() pentru a primi date fără intermedierea unui buffer (zero-copy). Funcția similară ff_zc_send() pentru trimitere a fost refăcută. A fost optimizată și completată suport pentru IPv6 funcția ff_rss_check().
  • A fost adăugată opțiunea FF_KERNEL_COEXIST pentru a lucra împreună cu stiva de rețea a nucleului.
  • A fost oferită posibilitatea de a salva informații despre trafic în dump-uri pcap cu precizie în nanosecunde.
  • În config.ini au fost adăugate noi parametri idle_loop_interval, extra_eal_args, drain_ring_size, reload_heartbeat_timeout_ms și reload_udp_idle_ms.
  • În compilarea specializată nginx a fost implementat suport pentru reîncărcarea configurației și actualizarea fișierului binar fără întreruperea conexiunilor (graceful_reload=1).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster