Duas portas Ethernet na placa-mãe. Como posso obter o dobro da largura de banda?

16

Pergunta Direta : Minha placa-mãe classificada da evga possui duas portas Ethernet. Eu quero usá-los simultaneamente para melhorar a velocidade de uma conexão remota. (Yay para programar remotamente). Como eu faço isso? No momento / etc / network / interfaces:

auto lo eth0 eth1

iface lo inet loopback

iface eth0 inet static
address 192.168.1.202
netmask 255.255.255.0
gateway 192.168.1.2

ifrace eth1 inet static
address 192.168.1.201
netmask 255.255.255.0

O que devo mudar? Existe um pacote que eu preciso instalar para ligar os dois canais.

Antecedentes: faço muita computação remota, tanto de casa como do escritório, e de escritório para casa. Mas (para tirar meu ISP da equação), vamos enquadrar a questão como se eu estivesse realmente apenas interessado em maximizar a taxa de transferência de arquivos entre dois computadores na mesma rede (local). Ambas as caixas possuem duas placas-mãe Ethernet. Usando um Linksys WRT54GS simples como um switch de 5 portas (ignore o wireless e o isp) - como maximizar as taxas de transferência entre os computadores?

Observação: não estou interessado em balanceamento de carga - Corrija-me se estiver errado, mas quero vincular os dois canais para que a caixa apareça como se tivesse uma conexão duas vezes mais rápida.

M. Tibbits
fonte
2
Eu acho que passar por um switch limitaria qualquer benefício que você obteria ao usar 2 cabos Ethernet em paralelo. Talvez se você usasse dois interruptores, talvez faça algum sentido. Eu acho que o único benefício possível que você terá é com uma conexão direta.
WalterJ89
11
Geralmente, em uma conexão de escritório doméstico, o gargalo é o ISP; portanto, a agregação de links nas duas extremidades do link não melhora muito.
bitwelder

Respostas:

3

É importante observar que, para utilizar a funcionalidade de formação de equipes da NIC, o switch ao qual você está conectado deve oferecer suporte à formação de equipes, também conhecida como LACP. Você pode encontrar uma opção como essa através de uma pesquisa no NewEgg.com etc.

Depois de ter isso, aqui está um guia simples do wiki: https://help.ubuntu.com/community/UbuntuBonding

Boa sorte!

NetNinja
fonte
Sim, boa sorte, porque, embora isso funcione, não resultará em um aumento de velocidade.
Scaine
13

É muito improvável que a ligação de suas interfaces resulte em um aumento de velocidade. Normalmente, mesmo que você vincule as interfaces com êxito E configure o comutador para suportar o etherchannel), continuará descobrindo que apenas uma interface no vínculo é usada para cada par de sessão TCP / UDP de origem / destino.

Portanto, se você copiar um arquivo de 10 Gb de um servidor e iniciar outra cópia de 10 Gb nesse servidor, supondo que você também tenha uma ligação baseada em sessão, verá as duas placas no máximo. Mas, crucialmente, a primeira cópia consumirá apenas UMA placa de rede, não as duas.

Esse certamente é o caso do etherchannel da Cisco. Na verdade, o etherchannel da Cisco nem é baseado em sessão, é baseado em origem / destino; portanto, no meu exemplo acima, você nem obteria um aumento de velocidade - sua segunda cópia teria que ser em um servidor completamente diferente antes de ver os dois cartões usados. Talvez você tenha um switch melhor que permita que o canal da porta utilize os dois cartões simultaneamente em uma sessão TCP / UDP, mas isso exigiria alguma manipulação arp / MAC bastante descolada e não faço ideia se o módulo de ligação no linux suporta isso.

Quanto a você, você está usando um roteador doméstico padrão, então o suporte do lado do switch está fora de questão aqui, o que significa que suas opções são ainda mais limitadas (consulte o primeiro artigo alinhado abaixo, onde você observará que agora não pode usar o melhor modo para agregação de links, modo 4).

Se você está determinado a continuar com isso, eu achei este artigo de cinco anos que ainda parece relevante. Além disso, este artigo de três anos cobre o mesmo terreno.

Espero que ajude.

Scaine
fonte
2

Eu acho que passar por um switch limitaria qualquer benefício que você obteria ao usar 2 cabos Ethernet em paralelo. A menos que o switch seja mais rápido do que as suas duas placas de rede combinadas, nesse caso, você poderá ver um aumento de velocidade.

O programa de balanceamento de carga é o que você está procurando. Você não precisa "equilibrar a carga" se não quiser, mas é a maneira mais fácil de mesclar as conexões que eu conheço. A ideia não é muito complicada

NIC virtual -> Programa de balanceamento de carga -> NIC 1 + 2

Esta resposta tem o que você procura, acredito: Balanceamento de carga de rede com o Network Manager

Não tenho certeza dos detalhes, mas tenho certeza de que essa é a ideia geral.

A menos que as placas da NIC sejam substancialmente menos poderosas que o seu roteador / switch, o único benefício que você provavelmente obterá é com uma conexão direta entre os dois computadores, ou uma conexão paralela por todo o caminho. Mas teoria e prática nem sempre dão certo.

A única maneira de pensar para testar se a NIC é o gargalo no seu sistema é fazer um teste de velocidade entre cada computador usando todas as 4 NICs. Eu posso lhe dar uma idéia geral de como fazer isso, mas as coisas específicas do Ubuntu que precisarei de ajuda.

  1. Defina cada NIC para ter seu próprio endereço IP como 192.168.0.1 + 192.168.0.2 para o computador 1 e * .3 + * .4 para o computador 2
  2. O único teste de velocidade para redes locais que eu já vi é apenas transferir tempo em um arquivo de bit. Não tenho certeza se existe um método melhor, nunca vi um.

    3 Defina as rotas manualmente para que * .1 seja a interface para chegar a * .3 e * .2 para * .4.
    PC1 192.168.0.1 <--> 192.168.0.3 PC2 192.168.0.2 <--> 192.168.0.4

Eu nunca usei tabelas IP, então aqui está algo que encontrei como exemplo.

[root]# ip route add xx.xxx.239.120 via xx.xxx.239.120 dev eth0 table 4
[root]# ip route add table 4 default via xx.xxx.239.120 
[root]# iptables -t mangle -A PREROUTING -p tcp --dport 80 -s xx.xxx.239.120 -j MARK --set-mark 4 
[root]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source xx.xxx.239.120 [root]# ip rule add fwmark 4 table 4
  1. outra opção é encontrar uma maneira de o cliente ssh (ou terminal) se conectar através de determinadas interfaces. Ainda não sei como isso foi feito para o cliente.

Se as tabelas IP estiverem configuradas corretamente, você poderá enviar 2 arquivos do PC 1 para as duas interfaces no PC 2 e cada arquivo seguirá uma rota diferente. Se a transferência com as duas conexões for mais rápida que apenas uma .. (espero que seja duas vezes mais rápida), você pode ter alguma coisa.

WalterJ89
fonte
2

Eu não acho que você tenha dito se estava ou não usando uma placa de rede Gigabit, suponho que esteja, pois você tem duas placas de rede e, portanto, provavelmente uma placa-mãe para jogos.

Como esse é o caso, se você está tentando obter uma base 2x100, é melhor comprar um switch Gigabit barato de 4-8 portas e conectá-lo ao seu roteador da Internet. Em seguida, você pode conectar todos os computadores que executam a Ethernet nesse comutador e ainda ter wifi e Internet funcionando em todos os seus computadores.

Faço isso agora porque comprei um Netgear WNDR3400 e coloquei o DD-WRT nele para que eu pudesse ter algumas opções legais, incluindo um servidor NAS muito atualizado.

O único problema era que o roteador era 100 base nas portas Ethernet. Então, por US $ 40, comprei um switch Gigabit de 5 portas e o conectei ao meu roteador, depois conectei todos os meus computadores ao switch Gigabit e conectei meus consoles de jogos ao roteador.

Tudo funciona muito bem e eu posso transferir arquivos entre os computadores na velocidade da luz.

Bem, boa sorte!

William
fonte
1

Existe uma biblioteca chamada firehose que pode transferir dados por vários dispositivos de rede simultaneamente. Porém, ele não fornece um único dispositivo de rede virtual e não suporta TCP. Ele foi projetado para streaming de vídeo de alta largura de banda para editores de vídeo. Pode ser interessante para você:

http://heroinewarrior.com/firehose.php

Alistair Buxton
fonte
1

O uso das políticas Port Bonding e Round-Robin nos dois dispositivos conectados por meio de um switch não gerenciado quase dobrará sua taxa de transferência. A política Round-Robin usa como padrão o balanceamento de carga em vários dispositivos e volta à porta única se um dispositivo falhar.

No entanto, acredito que o seu WRT54GS é um roteador e, portanto, gerenciado para que você não obtenha todos os benefícios da ligação.

Supondo que você usasse um comutador verdadeiro barato de 8 portas que suportava a política RR e depois o conectasse ao roteador, você obteria velocidades de transferência aumentadas entre os dois dispositivos usando ligação através do comutador e velocidades normais de transferência para a Internet e o restante do rede.

Você também deve aumentar seus buffers de leitura / gravação, txqeueuelen e sua memória netcore e tcp.

Stuart K. Smith
fonte