Pubblicazione dello stack di rete F-Stack 1.24, eseguito in spazio utente

È stato pubblicato il stack di rete F-Stack 1.24, che rappresenta una rivisitazione dello stack di rete FreeBSD, operante nello spazio utente e utilizzando il framework DPDK per massimizzare le prestazioni. Il progetto è stato creato dalla più grande azienda di telecomunicazioni in Cina, Tencent, ed è impiegato nei suoi prodotti e servizi. Il codice è scritto in C e distribuito sotto licenza BSD. Sono supportati anche Linux e FreeBSD.

F-Stack consente di utilizzare nel software uno stack di rete locale personale, indipendente dallo stack di rete del sistema operativo, operativo nello spazio utente e in grado di interagire direttamente con l'hardware di rete. F-Stack è presentato come una soluzione per migliorare le prestazioni dei gestori di richieste di rete quando lo stack TCP/IP del kernel Linux diventa un collo di bottiglia e limita la scalabilità; in alcune situazioni, il progetto consente di aumentare significativamente il numero di piccole richieste di rete elaborate. Teoricamente, F-Stack permette di raggiungere il massimo della prestazione di rete possibile per la scheda di rete utilizzata.

Il miglioramento delle prestazioni è ottenuto escludendo operazioni come la copia di pacchetti di rete, la pianificazione dei thread, la gestione delle interruzioni e l'uso di chiamate di sistema. Per interagire con la scheda di rete, bypassando le interfacce del kernel del sistema operativo, viene utilizzato il framework DPDK (Data Plane Development Kit), che sviluppa un insieme di librerie per un lavoro a basso livello con gli adattatori di rete. DPDK consente di ridurre i costi operativi e ottimizzare al minimo il numero di cicli CPU durante la ricezione o l'invio di pacchetti di rete.

La funzionalità dello stack TCP/IP corrisponde a quella dello stack di rete FreeBSD 13 ed è stata estratta da questo sistema operativo in una libreria autonoma. Per lo sviluppo di applicazioni è possibile utilizzare l'API POSIX standard (socket, epoll, kqueue) oppure un'interfaccia di programmazione personalizzata basata su micro-thread, che semplifica la creazione di applicazioni di rete e permette di evitare logiche complesse di gestione asincrona delle richieste.

Il progetto supporta le versioni di Nginx multprotocollo tradotte per utilizzare F-Stack server 1.25.2 e il database Redis 6.2.6, che dimostrano prestazioni superiori rispetto alle normali versioni che operano sullo stack di rete del sistema.

Le modifiche più significative nella nuova versione includono:

  • Nel file di configurazione config.ini è fornita l'opzione di scegliere tra l'uso di KNI (Kernel NIC Interface) e virtio_user come trasporto per la trasmissione dei pacchetti tra il kernel e l'applicazione di elaborazione pacchetti basata su DPDK. È stata aggiunta la possibilità di utilizzare il ratelimit per KNI.
  • Aggiunta la possibilità di configurare l'opzione dello stack di rete "net.add_addr_allfibs=1" per inserire indirizzi in tutte le tabelle di routing.
  • È stato aggiunto l'API ff_get_traffic per ottenere il traffico, ad esempio, per implementare QoS (Quality of Service).
  • Sono state aggiunte le funzioni pthread_create e pthread_join, simili alle corrispondenti funzioni di POSIX.
  • È stato aggiunto l'API ff_dpdk_raw_packet_send per l'invio di pacchetti raw direttamente tramite DPDK, invece che attraverso un socket.
  • È stata implementata la supporto per la configurazione automatica di VLAN, routing e policy routing.
  • È stato effettuato il passaggio alla versione DPDK 22.11.6 LTS.
  • Nella realizzazione di Nginx sopra F-Stack è stato aggiunto il supporto per il modulo stream.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster