Gli sviluppatori del pacchetto per la creazione di reti private virtuali OpenVPN hanno presentato il modulo del kernel ovpn-dco, che consente di accelerare notevolmente le prestazioni della VPN. Anche se il modulo è ancora in fase di sviluppo e considera solo il ramo linux-next, avendo uno stato sperimentale, ha già raggiunto un livello di stabilità che permette di utilizzarlo per garantire il funzionamento del servizio OpenVPN Cloud.
Rispetto a una configurazione basata su interfaccia tun, l'uso del modulo sia lato client che server con la crittografia AES-256-GCM ha consentito un incremento della larghezza di banda di 8 volte (da 370 Mbit/s a 2950 Mbit/s). L'uso del modulo solo lato client ha comportato un aumento della larghezza di banda di tre volte per il traffico in uscita, mentre per quello in entrata non ci sono stati cambiamenti. Nell'applicazione del modulo solo lato server la larghezza di banda è aumentata di 4 volte per il traffico in entrata e del 35% per quello in uscita.

L'accelerazione è ottenuta trasferendo tutte le operazioni di crittografia, elaborazione dei pacchetti e gestione del canale di comunicazione al kernel Linux, il che consente di eliminare i costi generali associati al cambio di contesto, ottimizzando il lavoro grazie all'accesso diretto alle API interne del kernel e escludendo la lenta trasmissione di dati tra kernel e spazio utente (la crittografia, la decrittazione e il routing vengono eseguiti dal modulo senza inviare il traffico al gestore nello spazio utente).
Si osserva che l'impatto negativo sulle prestazioni VPN è principalmente causato da operazioni di crittografia ad alta intensità di risorse e da ritardi causati dal cambio di contesto. Per accelerare la crittografia sono stati utilizzati estensioni del processore, come Intel AES-NI, ma i cambi di contesto, prima dell'arrivo di ovpn-dco, rimanevano un collo di bottiglia. Oltre all'uso delle istruzioni fornite dal processore per l'accelerazione della crittografia, il modulo ovpn-dco garantisce inoltre la suddivisione delle operazioni di crittografia in segmenti separati e il loro trattamento in modalità multithreading, il che consente di sfruttare tutti i core CPU disponibili.
Dalle attuali limitazioni dell'implementazione, che saranno rimosse in futuro, si distingue il supporto solo per le modalità AEAD e 'none' (senza autenticazione) e per gli algoritmi AES-GCM e CHACHA20POLY1305. Il supporto per DCO è previsto nella prossima versione di OpenVPN 2.6, programmata per il quarto trimestre di quest'anno. Attualmente, il modulo è supportato nella versione beta del client Linux di OpenVPN3 e nelle build sperimentali del server OpenVPN per Linux. Un modulo simile, ovpn-dco-win, è in fase di sviluppo per il kernel di Windows.
Fonte: opennet.ru
