Os desenvolvedores do pacote para criar redes privadas virtuais OpenVPN apresentaram o módulo do kernel ovpn-dco, que permite acelerar significativamente o desempenho da VPN. Embora o módulo ainda esteja em desenvolvimento e foque apenas na branch linux-next, seu status experimental já alcançou um nível de estabilidade que permitiu sua utilização para garantir a operação do serviço OpenVPN Cloud.
Comparado à configuração baseada na interface tun, a aplicação do módulo do lado do cliente e do servidor, ao usar a criptografia AES-256-GCM, resultou em um aumento de 8 vezes na largura de banda (de 370 Mbit/s para 2950 Mbit/s). Ao utilizar o módulo apenas no lado do cliente, a largura de banda aumentou três vezes para o tráfego de saída e permaneceu inalterada para o tráfego de entrada. servidor A largura de banda aumentou em 4 vezes para o tráfego de entrada e em 35% para o tráfego de saída.

A aceleração é alcançada através da transferência de todas as operações de criptografia, processamento de pacotes e gerenciamento do canal de comunicação para o núcleo do Linux, o que elimina as sobrecarga associada à troca de contexto, permitindo otimizar o desempenho por meio de acesso direto às APIs internas do núcleo e evitando a transferência lenta de dados entre o núcleo e o espaço do usuário (criptografia, descriptografia e roteamento são realizados pelo módulo sem enviar o tráfego para o manipulador no espaço do usuário).
Observa-se que o impacto negativo no desempenho VPN decorre principalmente de operações de criptografia que demandam muitos recursos e de latências causadas pela troca de contexto. Para acelerar a criptografia, foram utilizados extensões de processador, como o Intel AES-NI, mas as trocas de contexto antes da chegada do ovpn-dco continuavam sendo um gargalo. Além do uso de instruções fornecidas pelo processador para acelerar a criptografia, o módulo ovpn-dco também garante a divisão das operações de criptografia em segmentos separados e seu processamento em modo multithread, o que permite utilizar todos os núcleos disponíveis da CPU.
Das derzeitige Implementierungsbeschränkungen, die in Zukunft behoben werden, umfassen die Unterstützung nur der Modi AEAD und ‚none‘ (ohne Authentifizierung) sowie der Chiffren AES-GCM und CHACHA20POLY1305. Die Unterstützung für DCO wird in die Veröffentlichung von OpenVPN 2.6 aufgenommen, die für das 4. Quartal dieses Jahres geplant ist. Derzeit wird das Modul in der laufenden Beta-Tests des Linux-Clients OpenVPN3 und in experimentellen Builds des OpenVPN-Servers für Linux unterstützt. Ein ähnliches Modul ovpn-dco-win wird ebenfalls für den Windows-Kernel entwickelt.
Fonte: opennet.ru
