Como mesclar várias conexões com a Internet em uma?

19

Meu PC tem um total de 4 NICs, 2 placas de rede Gigabit Ethernet com fio e também 2 placas de rede sem fio. (Uma Broadcom com drivers proprietários e Ralink com software de código aberto, que funciona muito melhor que a Broadcom.)

Meu celular pode compartilhar sua conexão sem fio com meu PC, mas eu também tenho uma conexão com fio à Internet. Por isso tenho múltiplas conexões de Internet para acessar a Internet. Como posso mesclar 2 ou mais conexões juntas e equilibrar elas para desfrutar de uma experiência unificada da Internet que é a soma de todas as conexões de Internet conectadas a ela.

Por exemplo, se eu tiver um modem com uma conexão de Internet de 1024kB / s e outro que ofereça 512kB / se um pequeno que ofereça 128kB / s, após balancear a carga e mesclar todas as conexões (Bonding ou Teaming), poderia baixar a uma velocidade de 1664kB / s usando todas as 3 conexões com a Internet como uma, por exemplo.

Essa pergunta sempre me intrigou.

    
por Luis Alvarado 17.07.2011 / 23:34

3 respostas

9

Eu faço algo parecido no trabalho usando o Ubuntu 11.04. Nós executamos a ferramenta de configuração de firewall Shorewall, que além de ser excelente em seu trabalho, fornece algumas ferramentas múltiplas de roteamento ISP rudimentares que podem atender às suas necessidades. Você pode encontrar alguns documentos sobre isso aqui: link .

O que importa é que você não pode usar vários ISPs para uma única conexão ... as coisas são simples assim. O melhor que você pode fazer é tentar direcionar novas conexões igualmente entre os diferentes provedores.

É um problema complexo. Você provavelmente vai acabar batendo a cabeça contra a parede (eu certamente fiz) antes de terminar de depurar todos os problemas. Então, como outros pôsteres sugeriram, você pode ser sábio para considerar cuidadosamente o quão strong é seu desejo.

    
por Bailey S 08.02.2012 / 01:17
8

Você poderia fazer isso usando o pacote ifenslave que anexa e desanexa as interfaces de rede escravas a um dispositivo de ligação.

  1. Instalar:

    sudo apt-get install ifenslave
    
  2. Carregar módulo de ligação do kernel

    sudo modprobe bondingle
    
  3. Configure suas interfaces:

    sudo vi /etc/network/interfaces
    

    Exemplo de configuração, para combinar eth0 e eth1 como escravos para sua interface de ligação:

    #eth0 is manually configured, and slave to the "bond0" bonded NIC
    auto eth0
    iface eth0 inet manual
    bond-master bond0
    
    #eth1 ditto, thus creating a 2-link bond.
    auto eth1
    iface eth1 inet manual
    bond-master bond0
    
    # bond0 is the bonded NIC and can be used like any other normal NIC.
    # bond0 is configured using static network information.
    auto bond0
    iface bond0 inet static
    address 192.168.1.10
    gateway 192.168.1.1
    netmask 255.255.255.0
    # bond0 uses standard IEEE 802.3ad LACP bonding protocol 
    bond-mode 802.3ad
    bond-miimon 100
    bond-lacp-rate 1
    bond-slaves none
    
  4. Reiniciar rede:

    sudo restart networking
    
  5. Ativando / desativando interface limitada:

    ifup bond0
    ifdown bond0
    

    Existem vários modos de ligação como exemplo:

    bond-mode active-backup
    

    Descrição do modo de ligação de backup ativo :

    Política de backup ativo: somente um escravo no vínculo está ativo. Um escravo diferente se torna ativo se, e somente se, o escravo ativo falhar. O endereço MAC do link é visível externamente em apenas uma porta (adaptador de rede) para evitar confundir o comutador. Este modo fornece tolerância a falhas. A principal opção afeta o comportamento deste modo.

    Fonte e mais informações no wiki de ajuda da comunidade Ubuntu .

  

Colagem , significa combinar várias interfaces de rede (NICs) a um único link, fornecendo alta disponibilidade, balanceamento de carga,   rendimento máximo ou uma combinação destes. Fonte

    
por pl1nk 26.11.2012 / 13:51
6

É 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.

    
por Anatoli 03.03.2014 / 09:57