Estamos alugando vários hosts em um datacenter público. O datacenter não oferece VLANs privadas; todos os hosts recebem um (ou mais) endereços IPv4 / IPv6 públicos. Os hosts vêm com CPUs muito modernas (Haswell quad-core, 3.4GHz) e possuem uplinks Gbit. As diferentes áreas (quartos? Andares? Edifícios?) Do datacenter estão interligadas com - pelo que eu posso dizer - links Gbit ou 500Mbit. Nossos anfitriões estão executando debian wheezy. Atualmente, estamos correndo pouco acima de 10 hosts, com a expectativa de crescimento no futuro próximo.
Estou procurando uma maneira de fazer com que todos os hosts se comuniquem uns com os outros, de forma segura e confidencial. A camada 3 está bem, a camada 2 está ok (mas não é necessária). Como não tenho acesso a VLANs, será necessário algum tipo de VPN.
O que é importante para mim:
- alto rendimento, idealmente próximo a wirespeed
- arquitetura descentralizada em malha - isso é para garantir que a taxa de transferência não seja reduzida por um elemento central (por exemplo, concentrador de VPN)
- O tamanho da CPU não é excessivo (dado os conjuntos de codificação AESNI e GCM, espero que isso não seja um requisito ridículo)
- facilidade operacional de uso; não é muito complicado de configurar; rede pode crescer sem perder conexões estabelecidas
Atualmente, estamos usando o tinc . Ele marca [2] e [4], mas eu só alcanço cerca de 600Mbit / s (simplex) de uma velocidade wirespeed de 960Mbit / s, e perco um núcleo completamente. Além disso, o tinc 1.1 - atualmente em desenvolvimento - ainda não é multithreaded, então estou preso ao desempenho de singlecore.
O IPSec tradicional está fora de questão, já que requer um elemento central ou um sh * tload de túneis a serem configurados (para alcançar [2]). O IPsec com criptografia oportunista seria uma solução, mas não tenho certeza de que ele chegou a um código de produção estável.
Eu tropecei em tcpcrypt hoje. Exceto pela falta de autenticação, parece que eu quero. A implementação do espaço do usuário cheira lentamente, mas também todas as outras VPNs. E eles falam de uma implementação do kernel. Eu não tentei ainda, e estou interessado em como se comporta re [1] e [3].
Quais outras opções existem? O que as pessoas estão fazendo, que não estão na AWS?
Informações adicionais
Estou interessado no GCM, esperando que isso reduza o espaço ocupado pela CPU. Veja o documento da Intel sobre o tópico . Ao falar com um dos desenvolvedores do tinc, ele explicou que, mesmo usando o AESNI para a criptografia, o HMAC (por exemplo, SHA-1) ainda é muito caro na velocidade do Gbit.
Atualização final
O IPsec no modo de transporte funciona perfeitamente e faz exatamente o que eu quero. Depois de muita avaliação, escolhi o Openswan sobre ipsec-tools, simplesmente porque ele suporta o AES-GCM. Nos CPUs Haswell, eu medi cerca de 910-920Mbit / seg de throughput simplex com cerca de 8-9% de carga de CPU de um kworkerd
.