Para o Linux (desde que o seu modem ADSL tenha as ferramentas apropriadas disponíveis), a solução para o seu problema seria bastante fácil de realizar. Você teria que configurar várias rotas com a mesma métrica . Com essa configuração, as conexões seriam (espero) distribuídas uniformemente por todas as rotas disponíveis:
# ip route add default via <1st-gateway> metric 1024
# ip route add default via <2nd-gateway> metric 1024
O valor da métrica é puramente fictício (isso seria importante se você tivesse rotas com custo diferente, por exemplo, UMTS vs. conexão a cabo - números menores significam prioridade mais alta [resp. menor custo]). Isso diria ao kernel para distribuir uniformemente o tráfego acima de ambos os gateways. Note-se que as decisões de roteamento são armazenados em cache pelo kernel, assim, se 90% do seu tráfego vai para, por exemplo, facebook.com
superuser.com
, isso significaria que 90% do seu tráfego passa por um gateway.
Passos análogos seriam necessários para o Windows, mas eu não sou realmente firme em fazer roteamento com o Windows (mas você pode entender o assunto).