IPFire 2.27 - Rilasciato Core Update 160
IPFire 2.27 - Rilasciato Core Update 160
Disponibile l'aggiornamento di IPFire 2.27 Core Update 160, consigliatissimo!!!
Avevamo già visto nel rilascio della versione di test le migliorie e i bug fix presenti in questa release, dalle patch riguardanti glibc (GNU C Library) e openssl 1.1.1k alla correzione del Bug 12265.
Come accennato sull'articolo riguardante la versione di test, la novità più importante di questa release riguarda il lavoro di sviluppo incentrato sulla ricerca e rimozione dei colli di bottiglia con l'obbiettivo di aumentare il throughput sull'hardware e la riduzione della latenza il tutto per migliorare le prestazioni di rete.
Packet steering e CPU-affinity
Per la gestione dei pacchetti, IPFire utilizza funzioni di Packet Steering e CPU-affinity. Sulle NIC di nuova generazione è stata implementata la possibilità di distribuire il lavoro a più core della CPU attraverso la gestione di code. Il Packet Steering è una tecnica di gestione del flusso. Gestita dal driver, della NIC (network-offloading) quindi a livello software, il Packet Steering crea un hash dagli indirizzi IP e dai numeri di porta, che poi utilizza per determinare a quale core della CPU accodare il pacchetto. L'uso dell'hash garantisce che i pacchetti per lo stesso flusso di dati vengano inviati allo stesso core della CPU, il che aumenta le prestazioni massimizzando le operazioni di caching e riducendo il locking sulla CPU.
Su IPFire i pacchetti venivano indirizzati su un core della CPU casuale. Per sfruttare la tecnica di Packet Steering al meglio è stata inserita una "tupla" per il salvataggio che memorizza la coda e garantisce che i pacchetti appartenenti alla stessa connessione vengano indirizzati allo stesso core della CPU.
Come dicevamo, la scheda di rete (NIC) deve supportare questa tecnologia, in particolare il network-offloading.
Per approfondimenti sull'implementazione a livello kernel su linux (IPFire è linux based), potete fare riferimento alla documentazione originale che trovate su kernel.org