4 Febbraio 2022

Miglioramento delle prestazioni di NGINX con TLS del kernel e SSL_sendfile( )

Spostare l’implementazione crittografica da user space a kernel space.

NGINX Kernel TLS

Transport Layer Security (TLS) è un protocollo di crittografia estremamente popolare. L’implementazione di TLS nel kernel (kTLS) migliora le prestazioni riducendo significativamente la necessità di operazioni di copia tra lo spazio utente e il kernel.

La combinazione di kTLS e sendfile()significa che i dati vengono crittografati direttamente nello spazio del kernel, prima di essere passati allo stack di rete per la trasmissione. Ciò elimina la necessità di copiare i dati nello spazio utente per essere crittografati dalle librerie TLS e quindi di nuovo nello spazio del kernel per la trasmissione. kTLS consente anche l’offload dell’elaborazione TLS sull’hardware, incluso l’ offload dell’elaborazione crittografica simmetrica TLS sui dispositivi di rete .

I moderni kernel Linux e FreeBSD supportano l’offload di TLS nel kernel, e ora lo fa anche NGINX Open Source! NGINX 1.21.4 introduce il supporto per kTLS quando servono file statici con SSL_sendfile(), che può migliorare enormemente le prestazioni. Come descritto di seguito, sia il kernel che OpenSSL devono essere compilati con kTLS affinché NGINX possa utilizzare SSL_sendfile().

In questo blog descriviamo in dettaglio quale sistema operativo e versioni di OpenSSL supportano kTLS e mostriamo come costruire e configurare il kernel e NGINX per kTLS. Per darti un’idea del miglioramento delle prestazioni che puoi aspettarti da kTLS, condividiamo anche le specifiche ei risultati dei nostri test su FreeBSD e Ubuntu.

Nota: le implementazioni di kTLS sono piuttosto nuove e si evolvono rapidamente. Questo blog descrive il supporto per kTLS a partire da novembre 2021, ma tieni d’occhio gli annunci su nginx.org e il blog NGINX sulle modifiche alle informazioni e alle istruzioni fornite qui.

Requisiti generali

  • Sistema operativo – Uno dei seguenti:
    • FreeBSD 13.0+. A partire da novembre 2021, FreeBSD 13.0+ è l’unico sistema operativo che supporta kTLS in NGINX senza una build manuale di NGINX per incorporare OpenSSL 3.0.0+. Vedi Abilitare NGINX con kTLS su FreeBSD .
    • Una distribuzione Linux basata sul kernel Linux versione 4.17 o successiva, anche se consigliamo di utilizzare quelle basate sulla versione 5.2 o successiva, quando possibile. (Il supporto kTLS è effettivamente disponibile nella versione 4.13, ma OpenSSL 3.0.0 richiede la versione dell’intestazione del kernel 4.17 o successiva.)
  • OpenSSL – Versione 3.0.0 o successiva
  • NGINX – Versione 1.21.4 o successive

Miglioramento delle prestazioni con kTLS

Quando si servono file statici in condizioni di carico elevato, SSL_sendfile()è possibile aumentare la velocità effettiva fino a 2 volte rispetto al TLS dello spazio utente, ma la dimensione dell’aumento delle prestazioni dipende in modo significativo da vari fattori (prestazioni del disco, carico del sistema, ecc.). È anche possibile ridurre l’utilizzo della CPU se la scheda di rete supporta l’offload TLS.

Riepilogo

NGINX 1.21.4 introduce il supporto per kTLS quando servono file statici con SSL_sendfile(). I nostri test mostrano che le prestazioni migliorano tra l’8% e il 29%, a seconda del sistema operativo.

 

Hai dei dubbi? Non sai da dove partire? Contattaci


Abbiamo tutte le risposte alle tue domande per aiutarti nella giusta scelta.

Chatta con noi

Chatta direttamente con il nostro supporto prevendita.

0256569681

Contattaci telefonicamente negli orari d’ufficio 9:30 – 19:30

Contattaci online

Apri una richiesta direttamente nell’area dei contatti.

INFORMAZIONI

ManagedServer.it è il principale provider italiano di soluzioni hosting ad alte performance. Il nostro modello di sottoscrizione ha costi contenuti e prevedibili, affinché i clienti possano accedere alle nostre affidabili tecnologie di hosting, server dedicati e cloud. ManagedServer.it offre, inoltre, eccellenti servizi di supporto e consulenza su Hosting dei principali CMS Open Source come WordPress, WooCommerce, Drupal, Prestashop, Magento.

Torna in alto