Два порта Ethernet на материнской плате. Как я могу получить удвоенную пропускную способность?


16

Прямой вопрос : Моя материнская плата, классифицированная evga, имеет два порта Ethernet. Я хочу использовать их одновременно, чтобы улучшить скорость удаленного соединения. (Yay для программирования удаленно). Как мне это сделать? В настоящее время / 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

Что я должен изменить? Есть ли пакет, который мне нужно установить, чтобы связать два канала.

Предыстория: я много занимаюсь удаленными вычислениями как из дома в офис, так и из офиса в дом. Но (чтобы вывести моего провайдера из уравнения), давайте сформулируем вопрос так, как будто я действительно заинтересован в максимизации скорости передачи файлов между двумя компьютерами в одной (локальной) сети. Обе коробки имеют двойные сетевые платы Ethernet. Использование простого Linksys WRT54GS в качестве 5-портового коммутатора (игнорируя беспроводную связь и ISP) - как мне увеличить скорость передачи данных между компьютерами?

Обратите внимание: меня не интересует балансировка нагрузки - поправьте меня, если я ошибаюсь, но я хочу связать два канала вместе, чтобы окно отображалось так, как будто оно имеет одно соединение, которое в два раза быстрее.


2
Я думаю, что использование коммутатора ограничит любую выгоду, которую вы получите от параллельного подключения двух кабелей Ethernet. Возможно, если бы вы использовали два переключателя, это могло бы иметь смысл как-то. Я думаю, что единственное возможное преимущество, которое вы получите, - это прямая связь.
WalterJ89

1
Обычно при подключении к домашнему офису узким местом является интернет-провайдер, поэтому агрегация каналов на двух концах канала не сильно улучшится.
bitwelder

Ответы:


3

Важно отметить, что для использования функциональных возможностей группирования сетевых адаптеров коммутатор, через который вы подключены, должен поддерживать группировку, известную как LACP. Вы можете найти такой переключатель через поиск на NewEgg.com и т. Д.

Если у вас есть это, вот простое руководство из вики: https://help.ubuntu.com/community/UbuntuBonding

Удачи!


Да, удачи, потому что, хотя это будет работать, это не приведет к увеличению скорости.
Scaine

13

Маловероятно, что соединение ваших интерфейсов приведет к увеличению скорости. Как правило, даже если вы успешно подключите интерфейсы И сконфигурируете коммутатор для поддержки etherchannel), вы все равно обнаружите, что для каждой пары сеанса TCP / UDP источника / назначения используется только один интерфейс в соединении.

Так что если вы копируете файл 10Gb с одного сервера, то пнуть другую копию 10Gb на этот сервер, при условии , что у вас также есть склеивание на основе сеанса, вы увидите , что оба карт максимизированы. Но принципиально важно, что первая копия будет использовать только одну сетевую карту, а не обе.

Это, безусловно, имеет место с etherchannel Cisco. Фактически, Ethernet-канал Cisco даже не основан на сеансах, он основан на источнике / назначении, поэтому в моем примере выше вы даже не получите увеличение скорости - ваша вторая копия должна быть на совершенно другом сервере, прежде чем вы увидите оба карты используются. Возможно, у вас есть лучший коммутатор, который позволяет каналу порта использовать обе карты одновременно в одном сеансе TCP / UDP, но это потребует некоторых довольно прикольных манипуляций с arp / MAC, и я понятия не имею, поддерживает ли модуль связи в linux.

Что касается вас, вы используете стандартный домашний маршрутизатор, так что о поддержке на стороне коммутатора здесь не может быть и речи, что означает, что ваши возможности еще более ограничены (см. Первую статью, приведенную ниже, где вы заметите, что вы сейчас не может использовать лучший режим для агрегации каналов, режим 4).

Если вы полны решимости пойти дальше, я нашел эту пятилетнюю статью, которая все еще кажется актуальной. Кроме того, эта трехлетняя статья охватывает ту же тему.

Надеюсь, это поможет.


2

Я думаю, что использование коммутатора ограничит любую выгоду, которую вы получите от параллельного подключения двух кабелей Ethernet. Если коммутатор не будет быстрее двух ваших сетевых карт вместе, в этом случае вы можете увидеть увеличение скорости.

Программа балансировки нагрузки - это то, что вы ищете. Вам не нужно «балансировать нагрузку», если вы этого не хотите, но это самый простой способ объединить соединения, которые я знаю. Идея не слишком сложна

Виртуальная сетевая карта -> Программа балансировки нагрузки -> Сетевая карта 1 + 2

Этот ответ имеет то, что вы ищете, я считаю: Балансировка сетевой нагрузки с помощью Network Manager

Я не уверен в деталях, но уверен, что это общая идея.

Если карты NIC существенно менее мощные, чем ваш маршрутизатор / коммутатор, единственное преимущество, которое вы, вероятно, получите, - это прямое соединение между двумя компьютерами или параллельное соединение на всем пути. Но теория и практика не всегда работают.

Единственный способ проверить, является ли сетевой адаптер узким местом в вашей системе, - это провести тест скорости между каждым компьютером с использованием всех 4 сетевых карт. Я могу дать вам общую идею о том, как это сделать, но конкретный материал для Ubuntu, с которым мне понадобится помощь.

  1. У каждого сетевого адаптера должен быть свой IP-адрес, например 192.168.0.1 + 192.168.0.2 для компьютера 1 и * .3 + * .4 для компьютера 2
  2. Единственный тест скорости для локальных сетей, который я видел, это просто время передачи битового файла. Я не уверен, что есть лучший метод, я никогда его не видел.

    3 Установите маршруты вручную, чтобы * .1 был интерфейсом для доступа к * .3 и * .2 для доступа к * .4.
    ПК1 192.168.0.1 <-> 192.168.0.3 ПК2 192.168.0.2 <-> 192.168.0.4

Я никогда не использовал таблицы IP, так что вот что я нашел в качестве примера.

[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. Другой вариант - найти способ подключения клиента ssh (или терминала) через определенные интерфейсы. Я не уверен, как это все же сделано для клиентской стороны.

Если IP-таблицы настроены правильно, вы сможете отправить 2 файла с ПК 1 на оба интерфейса на ПК 2, и каждый файл будет проходить по разному маршруту. Если передача с двумя соединениями происходит быстрее, чем просто одно ... (надеюсь, в два раза быстрее), возможно, у вас что-то есть.


2

Я не думаю, что вы сказали, используете ли вы Gigabit NIC, я полагаю, что вы, поскольку у вас есть 2 NIC и, следовательно, возможно, игровая материнская плата.

Так как это так, если вы пытаетесь получить базу 2x100, вам лучше купить дешевый 4-8-портовый гигабитный коммутатор и подключить его к вашему интернет-маршрутизатору. Затем вы можете подключить все компьютеры, на которых работает Ethernet, к этому коммутатору, и на всех ваших компьютерах по-прежнему работает Wi-Fi и Интернет.

Я делаю это сейчас, потому что я купил Netgear WNDR3400 и установил на него DD-WRT, чтобы у меня было несколько хороших опций, включая встроенный современный NAS-сервер.

Единственная проблема заключалась в том, что у маршрутизатора было 100 баз на портах Ethernet. Поэтому за 40 долларов я купил 5-портовый гигабитный коммутатор, подключил его к маршрутизатору, затем подключил все мои компьютеры к гигабитному коммутатору и подключил игровые приставки к маршрутизатору.

Все отлично работает, и я могу передавать файлы между компьютерами с молниеносной скоростью.

Ну удачи!


1

Существует библиотека под названием firehose, которая может передавать данные по нескольким сетевым устройствам одновременно. Это не дает вам ни одного виртуального сетевого устройства и не поддерживает TCP. Он предназначен для потокового видео с высокой пропускной способностью для видеоредакторов. Может быть вам интересно, хотя:

http://heroinewarrior.com/firehose.php



1

Использование связывания портов и политики Round-Robin на обоих устройствах, подключенных через неуправляемый коммутатор, фактически почти удвоит вашу скорость передачи. Политика Round-Robin по умолчанию использует балансировку нагрузки для нескольких устройств и в случае сбоя одного устройства возвращается к однопортовому.

Тем не менее, я считаю, что ваш WRT54GS является маршрутизатором и, следовательно, управляется так, что вы не получите полной выгоды от соединения.

Предполагая, что вы использовали дешевый 8-портовый истинный коммутатор, который поддерживал политику RR, а затем подключили его к маршрутизатору, вы получите увеличенную скорость передачи данных между двумя устройствами, используя соединение через коммутатор, и обычные скорости передачи в Интернет и остальные сети. сеть.

Вы также должны увеличить свои буферы чтения / записи, txqeueuelen и вашу память netcore и tcp.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.