Eu tenho tentado configurar um túnel proxy para jogos no último mês e encontrei (para mim) um problema muito estranho.
Atualmente estou usando um socksifier para redirecionar / editar o comando connect () no soquete de um jogo para fazer com que ele seja roteado pelos servidores proxy Socks5 para gerar o menor caminho de latência entre o cliente > servidor do jogo. No entanto, este método resulta em picos de alta latência quando vários pacotes de jogos são enviados todos em um curto período de tempo. Infelizmente, o jogo envia / usa o TCP e eu decidi fazer o mesmo com o nosso proxy.
Quando usamos SSH (plink / putty com o parâmetro nodelay forçado / definido) para criar um proxy socks em 127.0.0.1 (usando Dynamic Portforwarding) e usamos socksifier para redirecionar o tráfego para o host local, o problema de pico de latência desaparece e corre muito mais suavemente. É quase como se houvesse um problema de gargalo ou congestionamento em algum lugar, mas os servidores não são apenas os mesmos, assim como as configurações de disciplina de congestionamento e enfileiramento (tentei fq + bbr, noqueue e pfifo). Eu pensava originalmente que usar o SSH resultaria em pior desempenho devido à sobrecarga de criptografia.
Alguém pode explicar esse problema que estou correndo? Está me enlouquecendo e eu tentei todos os aplicativos de servidor lá fora. Eu configurei TCP_NODELAY já (nos sockets) e tentei mexer com TCP_QUICKACK e TCP_LOWLATENCY.
Alguma informação extra: Nós também tentamos usar uma variedade de Proxifiers pagos e gratuitos, como Proxifier e ProxyCap. O estranho é que usar o Proxifier (e qualquer outra alternativa livre) ainda reproduz esse problema, mas o uso do ProxyCap não. Eu enviei um email para o ProxyCap e eles responderam dizendo que eles definiram TCP_NODELAY nos soquetes dos servidores aos quais você se conecta (e possivelmente no soquete do Windows que eu diria) .. mas eu já fiz isso. O jogo é baseado no Windows e os servidores proxy estão sendo hospedados no Linux VPS (tentou cada distribuição "common / mainstream" para os mesmos resultados)
EDIT: Eu testei diferentes valores de SO_SNDBUF e SO_RCVBUF em ambas as extremidades. A latência geral muda com valores menores / mais altos, mas a questão da spiking ainda permanece. Também tentei SO_DONTROUTE no final do cliente para nenhum sucesso.
EDIT2: Parece que provavelmente tem algo a ver com pacotes pendurados entre o soquete do jogo e a rede de saída. Plink + PCap usam o loopback para criar um servidor proxy para rotear o tráfego até a rede de saída, mas nosso método não. Mesmo sem editar nada no jogo (puramente o jogo e nada mais), esse problema persiste. Estreitando !!!
Agradeço a todos e agradeço qualquer pensamento dado para ajudar a identificar o culpado.