Rilascio dello stack di rete F-Stack 1.24, eseguito nello spazio utente

È stata pubblicata la rete F-Stack 1.24, che rappresenta una revisione dello stack di rete FreeBSD, funzionante in spazio utente e utilizza il framework DPDK per ottenere prestazioni massime. Il progetto è stato creato dalla più grande compagnia di telecomunicazioni in Cina, Tencent, ed è utilizzato nei suoi prodotti e servizi. Il codice è scritto in C e è distribuito con licenza BSD. È supportato il funzionamento in Linux e FreeBSD.

F-Stack consente di utilizzare nel proprio applicativo uno stack di rete locale, indipendente dallo stack di rete del sistema operativo, operante in spazio utente e lavorando direttamente con l'hardware di rete. F-Stack viene posizionato come una soluzione che aumenta le prestazioni dei gestori delle richieste di rete, quando lo stack TCP/IP di Linux diventa un collo di bottiglia e limita la scalabilità: in alcune situazioni, il progetto consente di raddoppiare il numero delle piccole richieste di rete elaborate. Teoricamente, F-Stack permette di raggiungere il massimo della performance di rete possibile per la scheda di rete utilizzata.

Il miglioramento delle prestazioni si ottiene grazie all'esclusione di operazioni come la copia dei pacchetti di rete, la pianificazione dei thread, la gestione delle interruzioni e l'uso delle 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 la gestione a basso livello degli adattatori di rete. DPDK consente di ridurre i costi di overhead e di mantenere un numero minimo 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 indipendente. Per lo sviluppo di applicazioni, è possibile utilizzare l'API standard POSIX (socket, epoll, kqueue) o un'interfaccia di programmazione proprietaria basata su micro-thread, che semplifica la creazione di applicazioni di rete e consente di evitare logiche complesse di gestione asincrona delle richieste.

Il progetto supporta le edizioni multi-protocollo tradotte per l'utilizzo in F-Stack server Nginx 1.25.2 e il database Redis 6.2.6, che mostrano prestazioni superiori rispetto alle build standard che funzionano sopra lo stack di rete del sistema.

Le modifiche più significative nella nuova versione:

  • Nel file di configurazione config.ini è stata fornita la possibilità di scegliere tra l'utilizzo di KNI (Kernel NIC Interface) e virtio_user come trasporto per il trasferimento dei pacchetti tra il kernel e l'applicazione di elaborazione dei pacchetti basata su DPDK. È stata aggiunta la possibilità di utilizzare il ratelimit per KNI.
  • È stata aggiunta la supporto per abilitare la configurazione dello stack di rete "net.add_addr_allfibs=1" per aggiungere 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 analoghe funzioni di POSIX.
  • È stata aggiunta l'API ff_dpdk_raw_packet_send per inviare pacchetti raw direttamente attraverso DPDK, anziché tramite socket.
  • È stata implementata la supporto per la configurazione automatica di VLAN, routing e policy routing.
  • Eseguito l'aggiornamento alla versione DPDK 22.11.6 LTS.
  • Nell'implementazione di Nginx sopra F-Stack è stata aggiunta la 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