Estamos executando uma VPN OpenVPN através de um link de satélite BGAN, onde o tempo de ping é de aproximadamente 3 segundos. Nós o usamos em uma configuração tun e estamos rodando no Linux (CentOS). É principalmente o email que será enviado pelo link, mas assim que o email contém anexos grandes, a VPN parece estar paralisada.
O "Eu posso executar ping no túnel, mas qualquer trabalho real faz com que ele bloqueie. Isso é um problema na MTU?" A pergunta no FAQ do OpenVPN parece descrever exatamente o meu problema, mas o uso mssfix
e fragment
ainda não parece fazer muito para melhorar a situação.
Meu teste principal é copiar um arquivo de 2 MB na VPN com scp . Ele copiará cerca de 192kbytes e, em seguida, reportará um estado parado . Se eu esperar alguns segundos, ele começará a copiar novamente e depois será interrompido novamente após mais alguns kbytes.
Este adiamento ocorre ou não eu definir o fragment
ou mssfix
opções na minha configuração OpenVPN (embora configuração fragment 1000
parecia reduzir o adiamento, mas não eliminá-lo). O OpenVPN mtu-test
relatou 1542 como o tamanho da MTU.
Pesquisei na Internet para obter mais conselhos sobre como e quando usar mssfix
e fragment
, mas só encontro páginas dizendo o mesmo que as Perguntas frequentes, e não fornecendo detalhes sobre como e quando usar quais parâmetros.
Minhas perguntas são:
- Quando uso
mssfix
efragment
? - Eu uso
mssfix
efragment
em combinação? - Se
mssfix
efragment
são a solução, o que são atun-mtu
,link-mtu
emtu-disc
parâmetros para?
Além disso, tenho usado a ferramenta iperf para medir a largura de banda. Sem a VPN, ela mede constantemente na ordem de 210 Kbits / s.
Ao usar o iperf na VPN ( $ iperf -c remoteserver -t60 -i5
), ele inicia em 10 Kbits / s, depois sobe continuamente até relatar 1,2 Mb / s e parece que está parado, onde informa 0kbits / seg para várias iterações (I acho que os 1,2 Mbits / s podem ser devido a algum buffer OpenVPN ou mais)
O iperf é a melhor maneira de medir a largura de banda?
Qualquer ajuda com essa situação será muito apreciada.
Respostas:
1542 como um MTU? Nunca ouvi falar disso em um link WAN. Normalmente, MTU é a carga útil máxima, o tamanho do pacote IP menos o cabeçalho para IP (20 bytes) e ICMP (8 bytes). Isso significa MTU = 1500 para uma LAN Ethernet tradicional. Além disso, a maioria das VPNs introduz uma sobrecarga para o encapsulamento de pacotes. Uma MTU VPN típica é 1400.
Nas redes modernas, é difícil concluir o que o MTU será a qualquer momento, pois os caminhos de entrada e saída podem ser diferentes e também podem mudar devido ao roteamento automático de caminho. Para uma rede como essa, pode ser mais eficaz definir a MTU baixa nos hosts que estão nos dois lados do link VPN, como 576.
MSS (tamanho máximo do segmento) é MTU menos os cabeçalhos IP + TCP (40 bytes). Isso normalmente é negociado pela pilha da rede e geralmente não tem os mesmos problemas de negociação que o MTU, a menos que o MTU esteja errado. (A negociação de MTU geralmente é prejudicada por ICMP bloqueado ou roteadores de buraco negro).
A primeira coisa que eu faria é capturar pacotes de rede no final do envio e classificar a exibição pelo tamanho do quadro (talvez seja necessário adicionar esta coluna no Wireshark). Você deve verificar se não está enviando nenhum quadro de tamanho grande, como seria de esperar. Não é incomum que as placas de rede modernas enviem quadros de tamanho grande, se opções como Large Send Offload ou Jumbo Frames estão ativadas. Vi mais de 30.000 quadros de bytes quando essas opções estão ativadas.
fonte
Por curiosidade, você já tentou diminuir o MTU da interface de rede? Talvez o link do satélite estrague muito a fragmentação. Como uma nota contra-intuitiva, você pode tentar o openvpn over TCP para variar. Sei que deve diminuir o desempenho, mas se você não tiver controle sobre a fragmentação ao longo da linha, isso poderá ajudá-lo.
fonte
Quando você usa o TCP, aumente o tamanho da janela do TCP; isso ajudará com o "número de pacotes no ar".
Já faz um tempo desde que eu tive que brincar com essas coisas, mas aqui está um link que o Google encontrou para mim.
Depois de reler sua pergunta, vejo que você está executando o BGAN - eu daria uma boa olhada nisso (ou apenas procure no Google por: "BGAN spoofing").
Quanto à medição da largura de banda, achei o iperf bastante decente, desde que você esteja usando tamanhos razoáveis de pacotes.
fonte
Eu acho que você pode estar latindo para a árvore errada. Sempre que tive problemas de MTU errados, o tráfego parava muito antes dos 192KB. Eu acho que está mais relacionado a alguns na janela "em pacotes de vôo", na janela TCP, ou talvez em alguns buffers no próprio uplink de satélite.
Definitivamente fazer algumas capturas longo de pacotes (tanto 'dentro' e 'fora' da VPN) e veja se você está recebendo todos os
ACK
'sfonte