Túnel sobre UDP ou TCP

7

Existe uma maneira de criar algo semelhante a um IPIP ou túnel GRE somente sobre UDP ou TCP?

Eu tenho um túnel GRE entre dois servidores e notei que às vezes ele começa a perder pacotes. Ao mesmo tempo, se eu pingar entre servidores pela Internet, não tenho problemas.

Acredito que esse é um problema de formatação de tráfego do meu provedor (ele não leva em consideração o protocolo GRE). Eu também tentei um túnel IPIP com o mesmo resultado.

    
por nicudotro 13.05.2009 / 14:37

5 respostas

13

Dê uma chance ao openvpn. Você pode criar túneis sobre UDP ou TCP.

    
por 13.05.2009 / 17:52
9

Não sei ao certo o que está causando seu problema específico, mas você deve observar que, em geral, é melhor que os túneis usem um fluxo de transporte não confiável (ou seja, UDP) que confiável.

A razão para isso é que, se acontecer de você perder pacotes, a camada TCP tunnelled deve ser a única que gerencia a retransmissão, e não a camada de transporte real.

Se ambas as camadas tiverem retransmissão incorporada a elas, elas poderão começar a entrar em uma guerra de retransmissão que, em última análise, mata a taxa de transferência.

Além disso, não esqueça que qualquer protocolo de tunelamento reduzirá o MTU efetivo (e consequentemente o TCP MSS). Se o MTU e o MSS não forem ajustados adequadamente, você verá fragmentação excessiva e / ou pacotes descartados.

    
por 13.05.2009 / 14:42
3

Você sabe se está descartando pacotes GRE ou pacotes encapsulados no túnel GRE? Com qualquer tipo de túnel, não é incomum encontrar problemas de MTU com praticamente qualquer tipo de tunelamento. Problemas de MTU podem ser difíceis de diagnosticar porque pacotes menores (como pings padrão) passam pelo túnel muito bem. Você só verá problemas com pacotes maiores e geralmente somente se o aplicativo ou sistema estiver configurando o bit DF (Don't Fragment). Que infelizmente é bem comum.

Você pode testar de ponta a ponta qual é a menor MTU em todo o caminho da rede usando pings com um tamanho de pacote grande e o bit DF definido.

No Windows, você pode definir o bit DF com a opção -f e definir o tamanho do pacote com a opção -l assim:

ping -f -l 1450

No Linux, você define o bit DF com a opção "-M do" e define o tamanho do pacote com a opção -s, assim:

ping -M do -s 1450

Você não disse o que está usando para os endpoints da GRE. Se eles são roteadores da Cisco, este link é muito bom. Caso contrário, pesquise no Google por problemas com a GRE MTU e você encontrará muitas informações.

    
por 13.05.2009 / 21:54
1

PPP sobre SSH talvez?

    
por 13.05.2009 / 14:43
1

Este pequeno guia de tunelamento pode ajudá-lo a escolher o caminho certo.

  • Como Alnitak disse que o TCP suportado é muito ruim para a latência (o IP não precisa da confiabilidade que o TCP oferece e tem um preço). Normalmente, o PPP sobre SSH ou PPP sobre HTTP é mais útil para, eventualmente, passar firewalls.
  • Os Pings são feitos usualmente através do protocolo ICMP e, portanto, são geralmente eliminados por roteadores sobrecarregados que implementam as primeiras quedas. Seria interessante ver se você experimenta quedas com UDP ou TCP "pings" também. Pacotes caindo são bastante comuns na internet.
por 13.05.2009 / 18:53