Dwa porty Ethernet na płycie głównej. Jak mogę podwoić przepustowość?

16

Bezpośrednie pytanie : moja sklasyfikowana płyta główna evga ma dwa porty Ethernet. Chcę ich używać jednocześnie, aby poprawić szybkość połączenia zdalnego. (Tak, do programowania zdalnego). Jak mam to zrobic? Obecnie / 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

Co powinienem zmienić? Czy jest jakiś pakiet, który muszę zainstalować, aby połączyć dwa kanały?

Tło: Wykonuję wiele zdalnych obliczeń zarówno z domu do biura, jak i z biura do domu. Ale (aby zabrać mojego ISP z równania), sformułujmy pytanie tak, jakby naprawdę chciałem zmaksymalizować szybkość przesyłania plików między dwoma komputerami w tej samej (lokalnej) sieci. Oba urządzenia mają podwójne płyty główne Ethernet. Używając prostego Linksys WRT54GS jako przełącznika 5-portowego (zignoruj ​​sieć bezprzewodową i isp) - jak zmaksymalizować prędkości transferu między komputerami?

Uwaga: nie jestem zainteresowany równoważeniem obciążenia - popraw mnie, jeśli się mylę, ale chcę połączyć dwa kanały razem, aby okno wyglądało tak, jakby miało jedno połączenie, które jest dwa razy szybsze.

M. Tibbits
źródło
2
Sądzę, że przejście przez przełącznik ograniczy wszelkie korzyści wynikające z równoległego używania 2 kabli Ethernet. Może jeśli użyjesz dwóch przełączników, może to mieć jakiś sens. Myślę, że jedyną możliwą korzyścią, jaką otrzymasz, jest bezpośrednie połączenie.
WalterJ89,
1
Zasadniczo w przypadku połączenia między domem a biurem wąskim gardłem jest dostawca usług internetowych, więc agregacja łączy na dwóch końcach łącza nie poprawia się znacznie.
bitwelder

Odpowiedzi:

3

Ważne jest, aby pamiętać, że aby korzystać z funkcji grupowania karty sieciowej, przełącznik, przez który jesteś podłączony, musi obsługiwać zespół, czyli LACP. Możesz znaleźć taki przełącznik poprzez wyszukiwanie na NewEgg.com itp.

Kiedy to zrobisz, oto prosty przewodnik z wiki: https://help.ubuntu.com/community/UbuntuBonding

Powodzenia!

NetNinja
źródło
Tak, powodzenia, ponieważ chociaż to zadziała, nie spowoduje wzrostu prędkości.
Scaine
13

Jest bardzo mało prawdopodobne, że połączenie interfejsów spowoduje zwiększenie prędkości. Zwykle nawet jeśli pomyślnie złączysz interfejsy ORAZ skonfigurujesz przełącznik do obsługi kanału ethernet), to nadal okaże się, że tylko jeden interfejs w wiązaniu jest używany dla każdej pary źródłowej / docelowej sesji TCP / UDP.

Jeśli więc skopiujesz plik 10 Gb z jednego serwera, a następnie rozpoczniesz kolejną kopię 10 Gb na tym serwerze, zakładając, że masz także powiązanie oparte na sesji, zobaczysz, że obie karty są maksymalnie obciążone. Ale co najważniejsze, pierwsza kopia zużyje tylko JEDNĄ kartę sieciową, a nie obie.

Tak jest z pewnością w przypadku kanału Ethernet Cisco. W rzeczywistości kanał ethernetowy Cisco nie jest oparty nawet na sesji, jest oparty na źródle / miejscu docelowym, więc w moim przykładzie powyżej nie uzyskałbyś nawet wzrostu prędkości - twoja druga kopia musiałaby znajdować się na zupełnie innym serwerze, zanim zobaczysz oba używane karty. Być może masz lepszy przełącznik, który pozwala kanałowi portu używać obu kart jednocześnie w jednej sesji TCP / UDP, ale wymagałoby to dość funky manipulacji arp / MAC i nie mam pojęcia, czy moduł łączenia w systemie Linux obsługuje to.

Jeśli chodzi o ciebie, używasz domowego routera o standardowym torfowisku, więc nie ma tu mowy o obsłudze przełączników, co oznacza, że ​​twoje opcje są jeszcze bardziej ograniczone (zobacz pierwszy artykuł podany poniżej, gdzie zauważysz, że teraz nie można użyć najlepszego trybu do agregacji łączy, tryb 4).

Jeśli jesteś zdecydowany to kontynuować, znalazłem ten pięcioletni artykuł, który nadal wydaje się istotny. Ponadto ten trzyletni artykuł dotyczy tego samego tematu.

Mam nadzieję, że to pomoże.

Scaine
źródło
2

Sądzę, że przejście przez przełącznik ograniczy wszelkie korzyści wynikające z równoległego używania 2 kabli Ethernet. Chyba że zmiana jest szybsza niż połączenie dwóch kart sieciowych łącznie, w takim przypadku może wystąpić wzrost prędkości.

Program równoważenia obciążenia jest tym, czego szukasz. Nie musisz „balansować obciążenia”, jeśli nie chcesz, ale jest to najłatwiejszy sposób na połączenie znanych mi połączeń. Pomysł nie jest zbyt skomplikowany

Wirtualna karta sieciowa -> Program równoważenia obciążenia -> karta sieciowa 1 + 2

Wierzę, że ta odpowiedź ma to, czego szukasz: równoważenie obciążenia sieciowego za pomocą Network Managera

Nie jestem pewien co do szczegółów, ale jestem pewien, że taki jest ogólny pomysł.

O ile karty sieciowe nie są znacznie słabsze od routera / przełącznika, jedyną korzyścią, jaką prawdopodobnie uzyskasz, jest bezpośrednie połączenie między dwoma komputerami lub połączenie równoległe przez całą drogę. Ale teoria i praktyka nie zawsze się sprawdzają.

Jedynym sposobem, w jaki mogę wymyślić, czy karta sieciowa jest wąskim gardłem w twoim systemie, jest wykonanie testu prędkości między każdym komputerem przy użyciu wszystkich 4 kart sieciowych. Mogę dać ogólny pomysł, jak to zrobić, ale rzeczy specyficzne dla Ubuntu będą mi potrzebne.

  1. Ustaw każdą kartę sieciową, aby miała własny adres IP, np. 192.168.0.1 + 192.168.0.2 dla komputera 1 i * .3 + * .4 dla komputera 2
  2. Jedyny test prędkości dla sieci lokalnych, jaki widziałem, to po prostu czas przesyłania pliku bitowego. Nie jestem pewien, czy istnieje lepsza metoda, nigdy jej nie widziałem.

    3 Ustaw trasy ręcznie, aby * .1 był interfejsem umożliwiającym przejście do * .3 i * .2 do * .4.
    PC1 192.168.0.1 <--> 192.168.0.3 PC2 192.168.0.2 <--> 192.168.0.4

Nigdy nie korzystałem z tablic ip, więc oto coś, co znalazłem jako przykład.

[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. inną opcją jest znalezienie sposobu, aby klient ssh (lub terminal) mógł się połączyć za pośrednictwem określonych interfejsów. Nie jestem pewien, jak to się stało po stronie klienta.

Jeśli tabele IP są skonfigurowane poprawnie, powinieneś być w stanie wysłać 2 pliki z PC 1 do obu interfejsów na PC 2, a każdy plik będzie podążał inną drogą. Jeśli transfer z dwoma połączeniami jest szybszy niż tylko jedno (mam nadzieję, że dwa razy szybciej), możesz mieć coś.

WalterJ89
źródło
2

Nie sądzę, żebyś powiedział, czy korzystasz z Gigabitowej karty sieciowej, chyba tak, ponieważ masz 2 karty sieciowe, a zatem prawdopodobnie płytę główną do gier.

Ponieważ tak jest, jeśli próbujesz uzyskać bazę 2x100, lepiej kupić tani przełącznik Gigabit 4-8 portów i podłączyć go do routera internetowego. Następnie możesz podłączyć wszystkie komputery z Ethernetem do tego przełącznika i nadal mieć działające Wi-Fi i Internet na wszystkich swoich komputerach.

Robię to teraz, ponieważ kupiłem Netgear WNDR3400 i umieściłem na nim DD-WRT, aby móc mieć kilka fajnych opcji, w tym wbudowany bardzo nowoczesny serwer NAS.

Jedynym problemem było to, że router miał 100 portów bazowych na portach Ethernet. Więc za 40 USD kupiłem 5-portowy przełącznik Gigabit, podłączyłem go do routera, następnie podłączyłem wszystkie komputery do przełącznika Gigabit i podłączyłem konsole do gier do routera.

Wszystko działa świetnie i mogę błyskawicznie przesyłać pliki między komputerami.

Więc powodzenia!

William
źródło
1

Istnieje biblioteka o nazwie firehose, która może przesyłać dane jednocześnie przez wiele urządzeń sieciowych. Nie daje to jednak żadnego wirtualnego urządzenia sieciowego i nie obsługuje TCP. Jest przeznaczony do przesyłania strumieniowego wideo o wysokiej przepustowości dla edytorów wideo. Może Cię to jednak zainteresować:

http://heroinewarrior.com/firehose.php

Alistair Buxton
źródło
1

Stosowanie zasad łączenia portów i Round-Robin na obu urządzeniach podłączonych za pomocą niezarządzanego przełącznika w rzeczywistości prawie podwoi szybkość transferu. Zasady Round-Robin domyślnie równoważą obciążenie na wielu urządzeniach i wracają do jednego portu, jeśli jedno urządzenie ulegnie awarii.

Uważam jednak, że Twój WRT54GS jest routerem i dlatego jest zarządzany, więc nie uzyskasz pełnej korzyści z połączenia.

Zakładając, że użyjesz taniego 8-portowego prawdziwego przełącznika, który obsługiwał zasady RR, a następnie podłączysz go do routera, uzyskasz zwiększone prędkości przesyłania między dwoma urządzeniami za pomocą łączenia przez przełącznik i normalne prędkości przesyłania do Internetu i reszty sieć.

Powinieneś również zwiększyć swoje bufory odczytu / zapisu, txqeueuelen oraz pamięć netcore i tcp.

Stuart K. Smith
źródło