É uma questão um pouco antiga, mas se você ainda quiser saber ...
Existem dois cenários típicos, o que gertvdijk e pl1nk estavam discutindo em uma das respostas:
Você tem um computador com 2 IPs públicos (2 ISPs diferentes) e se conecta a outro host (por exemplo, um servidor em um datacenter com um cano de gordura maior que a largura de banda agregada de ambas as conexões ISP do seu computador). Assim, você estabelece uma conexão de ligação com o host através de suas 2 conexões e, em seguida, o host (servidor) atende seu tráfego por meio de sua própria conexão à Internet. Nesse cenário, você pode obter quase 100% da largura de banda combinada em ambas as direções para uma única conexão.
Este é um caso particular de agregação bonding / teaming / ling onde várias interfaces da camada 2 (mesma rede) são unidas. Ele pode ser arquivado estabelecendo-se as conexões da camada 2 (tap) da vpn em cada interface ISP do computador para o host e unindo-as (modo round-robin) para ter uma única interface. O fator limitante neste cenário é quão diferentes são os atrasos (ping) em cada conexão do provedor com o host. Quanto mais semelhantes e estáveis, melhor. Nós o usamos em uma de nossas instalações, funciona bem. Se você gostaria de saber os detalhes sobre como implementá-lo, é só me avisar.
Em seguida, outro cenário ficaria sem um host intermediário, ou seja, uma conexão direta das suas interfaces do ISP com os servidores da Web em todo o mundo. Nesse caso, o melhor que você pode obter é distribuir uniformemente as conexões de saída entre as interfaces - ou seja, uma sessão TCP é executada por meio de um único provedor, uma segunda sessão por meio de outro e assim por diante. É assim porque quando você estabelece uma conexão TCP, ela tem um IP de origem e destino para cada pacote e quando um servidor recebe um pacote de outro IP para o qual não foi realizado um handshake TCP, ele considera o pacote incorreto e o descarta. . Como cada conexão ISP tem seu próprio IP público, para a mesma sessão TCP você não pode enviar um pacote através de uma conexão de um IP e outro através de outra conexão com outro IP.
Você não chegará aqui como alta utilização de largura de banda agregada para um único computador, como no primeiro cenário, mas para um pequeno escritório pode ser uma boa solução. O que você pode fazer para ampliá-lo um pouco é implementar soluções personalizadas para protocolos específicos. Por exemplo, você poderia ter algum tipo de proxy no gateway (que poderia ser o mesmo computador) para downloads http e solicitar diferentes partes de um arquivo enorme estabelecendo diferentes sessões TCP através de diferentes interfaces ISP. Nesse caso, a taxa de download resultante seria próxima a 100% da largura de banda combinada. É como descarregar para o gateway o que o ReGet, o GetRight e os baixadores similares fazem. Google para conteúdo parcial de HTTP 206. Não conheço nenhuma solução de código aberto pronta para esse cenário, mas há appliances de hardware que fazem exatamente isso: pesquise por redes de cogumelos no Google.