Nesta página, apresentamos diretrizes para os operadores de rede garantirem que os apps de rede privada virtual (VPN) de consumidores e empresas proporcionem 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 encaminhá-las para redes diferentes.
Recomendamos que os operadores de rede sigam estas diretrizes:
- Oferecer suporte ao protocolo IPv6 Encapsulating Security Payload (ESP) (próximo cabeçalho 50) na rede, garantindo que o tráfego tenha um desempenho comparável ao protocolo de datagramas do usuário (UDP) ou às conexões do protocolo 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 a conversão de endereços de rede (NAT, na sigla em inglês) e os tempos limite de firewall com estado de no mínimo 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 de energia excessivos.
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 sinal de atividade para manter a conectividade VPN, o que economiza a duração da bateria. Recomendamos que as redes permitam pacotes de ESP para dispositivos a qualquer momento ou expirem o tempo das sessões de 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 tenham 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 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 altos fatores de reutilização de porta. 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á.