Se o uso de várias conexões em paralelo ajuda você a usar mais largura de banda do que uma única conexão, o motivo é a janela TCP. Se o produto de atraso de largura de banda entre as duas extremidades da transferência for grande, o tamanho ideal da janela TCP pode ser maior que o tamanho máximo que as pilhas TCP em uma ou ambas as extremidades estão dispostas a usar. Usar mais de uma conexão TCP permite multiplicar o tamanho efetivo da janela.
Segue-se que nenhuma quantidade de tunelling na camada 3 ou abaixo alcançará o mesmo efeito. Não importa que tipo de túnel você construa, o payload do túnel ainda é TCP, e se houver apenas um deles, ele irá maximizar sua janela.
Suas únicas opções são:
-
Aumente os tamanhos máximos da janela TCP do kernel nas duas extremidades da transferência.
-
Use mais de uma conexão TCP no seu aplicativo.
-
Construa um túnel na camada 4 ou acima. Isso poderia ser, por exemplo, um servidor proxy como um proxy HTTP ou de socks, ou um encaminhador de conexão TCP simples, onde você se conecta ao host local e encaminha a conexão para outro lugar. O software de encapsulamento poderia transportar a carga de tráfego balanceada sobre várias conexões TCP subjacentes (ou poderia fazer outra coisa completamente).
Não tenho conhecimento de nenhum software que faça isso.