Gli sviluppatori del pacchetto per la creazione di reti private virtuali OpenVPN hanno presentato il modulo del kernel ovpn-dco, che consente di migliorare significativamente le prestazioni della VPN. Anche se il modulo è attualmente in fase di sviluppo, mirando solo al ramo linux-next e avendo uno status sperimentale, ha già raggiunto un livello di stabilità che consente di utilizzarlo per fornire servizi con OpenVPN Cloud.
Rispetto alla configurazione basata su interfaccia tun, l'uso del modulo sia sul lato client che sul server con la crittografia AES-256-GCM ha permesso di ottenere un incremento della capacità di 8 volte (da 370 Mbit/s a 2950 Mbit/s). Utilizzando il modulo solo sul lato client, la capacità è aumentata di tre volte per il traffico in uscita e non è cambiata per quello in entrata. Utilizzando il modulo solo sul lato server la capacità è aumentata di 4 volte per il traffico in entrata e del 35% per quello in uscita.

L'accelerazione avviene spostando tutte le operazioni di crittografia, elaborazione dei pacchetti e gestione della connessione nel kernel di Linux, il che consente di eliminare i costi associati al cambio di contesto, ottimizzando il lavoro tramite l'accesso diretto alle API interne del kernel e riducendo il trasferimento lento dei dati tra il kernel e lo spazio utente (la crittografia, la decrittografia e il routing vengono eseguiti dal modulo senza inviare il traffico al gestore nello spazio utente).
Si osserva che c'è un impatto negativo sulle prestazioni VPN si concentrano principalmente su operazioni di crittografia ad alta intensità di risorse e su ritardi causati dal cambio di contesto. Per accelerare la crittografia sono state utilizzate estensioni del processore come Intel AES-NI, ma i cambi di contesto sono rimasti un collo di bottiglia fino all'introduzione di ovpn-dco. Oltre all'uso delle istruzioni fornite dal processore per accelerare la crittografia, il modulo ovpn-dco garantisce inoltre la divisione delle operazioni di crittografia in segmenti separati e la loro elaborazione in modalità multithreading, permettendo di sfruttare tutti i core della CPU disponibili.
Tra i limiti attuali dell'implementazione, che saranno rimossi in futuro, vi è il supporto solo per i modi AEAD e 'none' (senza autenticazione) e i cifrari AES-GCM e CHACHA20POLY1305. Il supporto per DCO è previsto per essere incluso nella release di OpenVPN 2.6, programmata per il quarto trimestre di quest'anno. Attualmente, il modulo è supportato nel client OpenVPN3 per Linux in fase di beta testing e nelle versioni sperimentali del server OpenVPN per Linux. Un modulo simile, ovpn-dco-win, è anche in sviluppo per il kernel di Windows.
Fonte: opennet.ru
