Abrir uma pasta compartilhada pela VPN e esperar enquanto a listagem do diretório se arrasta é uma experiência conhecida, e o primeiro instinto é culpar a banda. Normalmente o link está quase ocioso. O protocolo passa o tempo à espera de respostas, e cada espera custa uma ida e volta completa que a LAN nunca cobrava. Corrija a forma do trabalho e o compartilhamento volta a ser utilizável.

A cópia de trabalho remota tem a forma errada

O SMB abre arquivos, lê metadados e confirma em muitas trocas pequenas. Uma cópia de trabalho de controle de versão em uma unidade mapeada pressupõe a latência do sistema de arquivos local e lê muitos arquivos pequenos. Um banco de dados de desktop busca páginas enquanto o usuário trabalha. Cada uma dessas coisas transforma o atraso em multiplicador, porque o custo cresce conforme o número de trocas que a operação faz; por isso um túnel de 40 ms transforma algumas centenas de operações em vários segundos. O tamanho da carga útil é quase irrelevante nessa aritmética.

O custo da criptografia é uma pequena parte; a perda é pior, porque uma retransmissão mais uma janela de congestionamento colapsada custa muito mais que os bytes envolvidos.

Conte idas e voltas antes dos megabytes

Meça o atraso antes de comprar capacidade. Um único ping diz o que cada troca paga.

ping -c 10 fileserver.example.net

O resumo dá os tempos de ida e volta mínimo, médio e máximo, e a dispersão importa tanto quanto a média. Multiplique a média pelo número de trocas que uma listagem de diretório faz, depois compare com o tempo que você realmente observa. Se um arquivo grande é transferido rápido enquanto a navegação está lenta, a restrição são a latência e o número de requisições. Adicionar dez vezes mais capacidade a um link que nunca satura não muda absolutamente nada.

Mova o trabalho, não os bytes

Mude onde o trabalho acontece em vez de pagar por um cano mais largo. Sirva o repositório em vez de montá-lo, e copie em massa com uma ferramenta que envie apenas diferenças.

rsync -av --info=progress2 ./project/ [email protected]:/srv/share/project/

Servir o repositório, como fazem o hgweb ou um Git remoto, permite ao cliente trabalhar em um clone local, de modo que suas chamadas ao sistema de arquivos nunca atravessem o túnel. O rsync percorre os dois lados e envia os blocos alterados, eliminando a maioria das trocas que uma cópia ingênua paga. Um banco de dados de desktop pertence a um motor no lado do servidor, com o cliente reduzido a uma interface, ou todo o cliente roda em um host interno. Cada opção muda a quanto atraso o protocolo está exposto, e é disso que se trata.

Travamentos no mesmo tamanho são sintoma de MTU

Transferências grandes que param depois de aproximadamente a mesma quantidade de dados, enquanto ping e páginas pequenas funcionam, apontam para o tamanho do pacote e não para a banda.

ping -M do -s 1400 -c 3 fileserver.example.net

Um teste bem-sucedido significa que um pacote IP de 1428 bytes atravessa o caminho sem fragmentação, já que os cabeçalhos ICMP e IP acrescentam 28 bytes. Uma falha com a marca de não fragmentar sugere que a MTU utilizável do túnel é menor do que o servidor supõe. Um servidor que envia buffers de 9000 bytes para um caminho de 1500 bytes força fragmentação ou descartes, e a descoberta da MTU do caminho pode falhar em silêncio quando o ICMP é filtrado. Baixe a MTU do túnel, ative mssfix no OpenVPN, ou reduza os buffers do servidor, e então repita a mesma transferência para confirmar.

Meça a diferença que importa

Execute a mesma operação de três maneiras onde a política permitir: localmente, pelo túnel e por um caminho direto de internet. Para cada uma, anote o tempo de ida e volta, a taxa de um fluxo grande e quanto tempo uma listagem de diretório ou a abertura de um aplicativo leva. Comparar a execução local com a execução pelo túnel mostra qual custo domina. Uma cópia que termina devagar sugere problema de taxa ou atraso, enquanto uma cópia que morre em um ponto constante sugere o tamanho do pacote ou um dispositivo com estado no caminho.

Quando só os primeiros megabytes se arrastam, olhe a autenticação e os metadados; quando tudo se arrasta, olhe a capacidade e as perdas. Corrija a causa correspondente e pare de esperar que um link WAN se comporte como um cabo de LAN.

Artigos relacionados