Esta página fornece diretrizes para operadores de rede para garantir que os apps de rede privada virtual (VPN)
do consumidor e da empresa ofereçam uma boa experiência do usuário final
nas redes. O Android oferece a classe
VpnManager
para que os desenvolvedores criem soluções de VPN, que são usadas por consumidores e
empresas para criptografar as comunicações ou encaminhadas para diferentes redes.
Recomendamos que os operadores de rede sigam estas diretrizes:
- Oferecer suporte ao protocolo de payload de segurança (ESP) de encapsulamento IPv6 (pacotes de cabeçalho 50) na rede, garantindo que esse tráfego tenha desempenho semelhante ao protocolo de datagramas do usuário (UDP) ou de controle de transmissão (TCP). As sessões de ESP precisam ser permitidas para entrada em dispositivos ou definidas com tempos limite muito altos e encaminhadas na taxa de linha.
- Defina o tempo limite de tradução de endereços de rede (NAT) e de firewall stateful com um mínimo de 600 segundos para conexões UDP na porta 4500 para garantir que as soluções de VPN possam manter uma conectividade confiável sem incorrer em custos excessivos de energia.
Suporte a pacotes do protocolo ESP IPv6 (Next Header 50)
O Encapsulating Security Payload (ESP) é o formato de pacote definido como parte do conjunto de protocolos do Protocolo de Segurança da Internet (IPSec) para criptografar e autenticar pacotes em uma solução de VPN. O SO Android implementa esse protocolo de segurança padrão na solução de VPN integrada.
Em redes compatíveis com IPv6, os pacotes ESP são transportados diretamente em pacotes IPv6 com um campo de cabeçalho seguinte de 50. Se uma rede não oferecer suporte adequado a esses tipos de pacotes, isso pode causar falta de conectividade para soluções de VPN que visam usar esse protocolo sem mais encapsulamento dos pacotes. A rede pode descartar esses pacotes devido à configuração do firewall. Ou os pacotes ESP podem atingir caminhos lentos na rede, com uma performance de throughput severamente degradada em comparação com as conexões TCP ou UDP.
O Internet Engineering Task Force (IETF) recomenda permitir o IPsec por firewalls usados pelos serviços de acesso à Internet do consumidor. Por exemplo, consulte a seção 3.2.4 da RFC 6092. Os pacotes ESP podem ser permitidos com segurança pelos firewalls em ambas as direções, porque se um dispositivo receber um pacote ESP que não faz parte de uma associação de segurança, ele vai descartar o pacote. Como resultado, o dispositivo não precisa enviar pacotes de manutenção para manter a conectividade da VPN, o que economiza a bateria. Recomendamos que as redes permitam pacotes ESP para dispositivos o tempo todo ou que encerrem o tempo limite das sessões ESP somente após longos períodos de inatividade (por exemplo, 30 minutos).
Recomendamos que os operadores de rede ofereçam suporte a pacotes de protocolo ESP (pacotes IPv6 com um cabeçalho seguinte de 50) nas redes e os encaminhem em hardware na taxa de linha. Isso garante que as soluções de VPN não encontrem problemas de conectividade e ofereçam desempenho comparável às conexões UDP ou TCP.
Definir tempo limite suficiente para NAT e firewall stateful
Para manter a confiabilidade da conexão, uma solução de VPN precisa manter uma conexão de longa duração com o servidor de VPN que fornece conectividade de saída e entrada (por exemplo, para receber notificações push, mensagens de chat e chamadas de áudio ou vídeo). A maioria dos apps de VPN IPsec usa o ESP encapsulado em pacotes UDP IPv4 com a porta de destino 4500, conforme descrito na RFC 3948.
Para manter essa conexão, o dispositivo precisa enviar pacotes periodicamente para o servidor. Esses pacotes precisam ser enviados com uma frequência maior do que os tempos limite de NAT e firewall impostos pelo operador de rede. Os keepalives frequentes consomem muita energia no lado do cliente e têm um grande impacto na duração da bateria. Eles também geram tráfego de sinalização substancial na rede, mesmo que o dispositivo esteja inativo.
Recomendamos que os operadores aumentem os tempos limite de NAT e firewall stateful o suficiente para evitar o impacto na bateria. O tempo limite recomendado para o encapsulamento UDP do IPsec (porta 4500) é de 600 segundos ou mais.
Em redes móveis, os timeouts de UDP NAT geralmente são mantidos baixos porque a escassez de endereços IPv4 impõe fatores de reutilização de porta altos. No entanto, quando uma VPN é estabelecida, a rede do dispositivo não precisa oferecer suporte a conexões TCP de longa duração, como aquelas usadas para enviar notificações de entrada. Portanto, o número de conexões de longa duração que a rede precisa oferecer suporte é igual ou menor quando uma VPN está em execução em comparação com quando ela não está.