Балансировка нагрузки с локальной сетью и Wi-Fi


8

У меня есть Mac, на котором работает Mac OS X 10.6 или Ubuntu 9.10 или Windows XP (Multiboot). Решение может быть для любой системы, которая работает лучше.

У меня есть два интернет-провайдера , к одному можно получить доступ через Wi-Fi , к одному можно получить доступ через локальную сеть . В Mac OS XI можно определить приоритет, какую сеть выбрать в первую очередь. Но я хочу сбалансировать нагрузку на обе сети.

Я не хочу покупать дополнительное оборудование. У меня есть несколько неиспользуемых маршрутизаторов Wi-Fi, если это поможет.

Компиляция и настройка программ в Linux для меня не проблема.

Аналогичный вопрос: балансировка нагрузки с несколькими шлюзами


2
Вы захотите проверить, что любое предлагаемое решение будет иметь правила для постоянных соединений через его интерфейс. Если ваше соединение переходит между провайдерами, сервер на другом конце может запутаться. Я знаю, например, что Yahoo IM прервет свое соединение, если вы подключаетесь с другого IP-адреса.
Даг Харрис

Похоже, вам нужен какой-то беспроводной повторитель Multi-WAN, чтобы пропитывать сигналы от 2 разных WIFI-маршрутизаторов и передавать их на ваш компьютер через соединение LAN.
Джангофан

LISP (протокол разделения локатора / идентификатора) может быть решением, но это слишком сложно для меня. ;-)
Synox

Что вы хотите, чтобы баланс нагрузки?
Дэвид Шварц

загрузка больших файлов, видеопотоки, YouTube и т. д.
Synox

Ответы:


1

Закрытой темой для linux будет настройка метрики для маршрутов. Меньшие числа предпочтительнее более высоких чисел. Если вы дадите обоим маршрутам одну и ту же метрику, я думаю, они будут выбраны с равной вероятностью.

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

  • По умолчанию, я думаю, у вас будет только один маршрут по умолчанию. Это означает, что весь исходящий трафик предпочтет один интерфейс по умолчанию. Вам необходимо изучить наличие нескольких маршрутов по умолчанию или динамическое изменение этого маршрута с течением времени.
  • В течение жизни отдельного входящего (TCP) соединения оно должно оставаться на том же интерфейсе, на котором оно было установлено. Я думаю.

Во всяком случае, это все указатели, которые я могу думать в данный момент.


metricэто параметр для сетевых интерфейсов в Windows и OS X; любая ОС, которая поддерживает несколько сетевых интерфейсов, потребует установки приоритета.
apraetor

1

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

Входящий трафик в ответ на ваши запросы также должен быть сбалансирован, поскольку он вернется к интерфейсу (Public IP), из которого поступил запрос.

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

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


1

В Connectify Dispatch есть решение, которое будет делать именно то, что вам нужно. В настоящее время только для Windows, но люди успешно виртуализировали и использовали свое программное обеспечение на OS X.

Поскольку вы уже запускали (работали) Windows XP, я подумал, что вы сможете разобраться с этой частью самостоятельно.


Самая большая проблема заключается в том, что Windows легко предлагает поддержку нескольких сетевых карт, в то время как в OS X это не так просто реализовать.


0

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

Затем я направляю один из IP-адресов сервера на один из IPS.

на Mac OS 10.6:

route add -host XXX.XXX.XXX.XXX 192.168.1.1

Я знаю, это очень специфично, и работает, только если ips сервера всегда одинаковы. И если приложение может балансировать нагрузку любым способом.


0

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

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

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

Пример: запускать обновления с использованием 192.168.2. * Интернет-провайдер Wi-Fi запускает период полураспада с использованием 192.168.1. * Интернет-провайдер.


0

Упомянутый ниже URL-адрес специально предназначен для победы 7, но вы должны получить представление о нем. Он изменяет метрику шлюза по умолчанию в зависимости от нагрузки на интерфейс, что приводит к распределению нагрузки.

http://www.youtube.com/watch?v=Qh5Eb8sXvuk


0

Я слышал один и тот же вопрос дюжину раз, дюжина разных способов. Во-первых, внутренние и внешние сеансы обрабатываются одинаково, но не совпадают. Для каждого внутреннего сеанса может быть несколько внешних, и наоборот. То, о чем вы говорите, не является логически невозможным, но требует немного программирования и подготовки. Некоторые устройства создаются с возможностью агрегирования Ethernet-соединений или Wi-Fi для более высокой скорости сети внутри сети, но для внешних сетей я обнаружил только устройства с FAILOVER, что означает, что они переключаются только тогда, когда это необходимо. Однако вы можете использовать базовое переключение (если операторы с 0 или 1) в протоколе соединения, который перенаправляет трафик через другой шлюз для каждого ВНЕШНЕГО сеанса. Затем вам нужно будет отслеживать каждую ВНЕШНЮЮ СЕССИЮ, привязанную к каждой ВНУТРЕННЕЙ СЕССИИ, оборачивая подсессию внутри основного сеанса с помощью sessionID. Затем вам нужно будет иметь возможность проверить домен сайта или использовать sessionID для завершения внутренней маршрутизации (другими словами, вам нужно будет отличать сообщения от клиента для каждого внешнего сеанса \ соединения, на основе которого сайт, к которому они запрашивали данные или отправляли данные, чтобы был установлен канал для каждого сайта, чтобы сайт не отклонял канал). Это означает, что вам придется встроить новый сетевой протокол в маршрутизатор и решить, как дифференцировать соединения (если это делается только по домену сайта, это может быть осуществимо с маршрутизатором, но клиент может попытаться использовать IP-адрес внешние ворота для сайта, что отрицает это; если это делается на обоих концах, клиент должен отслеживать некоторый идентификатор, обычно числовое значение двоичного маскирования, которое позволяет сопоставить получаемый посыл с внешним сеансом, маршрутизируемым на главном шлюзе). Другими словами, вам нужно было бы запрограммировать свой собственный протокол для управления сетью, и вам нужно было бы решить, хотите ли вы создать его самостоятельно (используя программирование как клиента, так и хоста), или если вы хотите что-то построить это совместимо со старым существующим программированием (которое должно быть связано обменом сообщениями между хостом и клиентом, что увеличивает нагрузку на хост, но ничего нового для клиента). Если вы знаете свой Unix, или вы знаете свои программы Winserver, это может быть сделано с небольшим количеством времени, но это требует большего количества ресурсов, выделяемых для каждого устройства, которое будет сбалансировано. клиент должен отслеживать некоторый идентификатор, обычно числовое значение двоичного маскирования, которое позволяет сопоставить получаемый посыл с внешним сеансом, маршрутизируемым на главном шлюзе). Другими словами, вам нужно было бы запрограммировать свой собственный протокол для управления сетью, и вам нужно было бы решить, хотите ли вы создать его самостоятельно (используя программирование как клиента, так и хоста), или если вы хотите что-то построить это совместимо со старым существующим программированием (которое должно быть связано обменом сообщениями между хостом и клиентом, что увеличивает нагрузку на хост, но ничего нового для клиента). Если вы знаете свой Unix, или вы знаете свои программы Winserver, это может быть сделано с небольшим количеством времени, но это требует большего количества ресурсов, выделяемых для каждого устройства, которое будет сбалансировано. клиент должен отслеживать некоторый идентификатор, обычно числовое значение двоичного маскирования, которое позволяет сопоставить получаемый посыл с внешним сеансом, маршрутизируемым на главном шлюзе). Другими словами, вам нужно было бы запрограммировать свой собственный протокол для управления сетью, и вам нужно было бы решить, хотите ли вы создать его самостоятельно (используя программирование как клиента, так и хоста), или если вы хотите что-то построить это совместимо со старым существующим программированием (которое должно быть связано обменом сообщениями между хостом и клиентом, что увеличивает нагрузку на хост, но ничего нового для клиента). Если вы знаете свой Unix, или вы знаете свои программы Winserver, это может быть сделано с небольшим количеством времени, но это требует большего количества ресурсов, выделяемых для каждого устройства, которое будет сбалансировано. как правило, числовое значение двоичной маскировки, которое позволяет сопоставить полученную отправку с внешним сеансом, маршрутизируемым на главном шлюзе). Другими словами, вам нужно было бы запрограммировать свой собственный протокол для управления сетью, и вам нужно было бы решить, хотите ли вы создать его самостоятельно (используя программирование как клиента, так и хоста), или если вы хотите что-то построить это совместимо со старым существующим программированием (которое должно быть связано обменом сообщениями между хостом и клиентом, что увеличивает нагрузку на хост, но ничего нового для клиента). Если вы знаете свой Unix, или вы знаете свои программы Winserver, это может быть сделано с небольшим количеством времени, но это требует большего количества ресурсов, выделяемых для каждого устройства, которое будет сбалансировано. как правило, числовое значение двоичной маскировки, которое позволяет сопоставить полученную отправку с внешним сеансом, маршрутизируемым на главном шлюзе). Другими словами, вам нужно было бы запрограммировать свой собственный протокол для управления сетью, и вам нужно было бы решить, хотите ли вы создать его самостоятельно (используя программирование как клиента, так и хоста), или если вы хотите что-то построить это совместимо со старым существующим программированием (которое должно быть связано обменом сообщениями между хостом и клиентом, что увеличивает нагрузку на хост, но ничего нового для клиента). Если вы знаете свой Unix, или вы знаете свои программы Winserver, это может быть сделано с небольшим количеством времени, но это требует большего количества ресурсов, выделяемых для каждого устройства, которое будет сбалансировано. это позволяет посылать получение, чтобы быть сопоставленным с внешним сеансом, маршрутизируемым на главном шлюзе). Другими словами, вам нужно было бы запрограммировать свой собственный протокол для управления сетью, и вам нужно было бы решить, хотите ли вы создать его самостоятельно (используя программирование как клиента, так и хоста), или если вы хотите что-то построить это совместимо со старым существующим программированием (которое должно быть связано обменом сообщениями между хостом и клиентом, что увеличивает нагрузку на хост, но ничего нового для клиента). Если вы знаете свой Unix, или вы знаете свои программы Winserver, это может быть сделано с небольшим количеством времени, но это требует большего количества ресурсов, выделяемых для каждого устройства, которое будет сбалансировано. это позволяет посылать получение, чтобы быть сопоставленным с внешним сеансом, маршрутизируемым на главном шлюзе). Другими словами, вам нужно было бы запрограммировать свой собственный протокол для управления сетью, и вам нужно было бы решить, хотите ли вы создать его самостоятельно (используя программирование как клиента, так и хоста), или если вы хотите что-то построить это совместимо со старым существующим программированием (которое должно быть связано обменом сообщениями между хостом и клиентом, что увеличивает нагрузку на хост, но ничего нового для клиента). Если вы знаете свой Unix, или вы знаете свои программы Winserver, это может быть сделано с небольшим количеством времени, но это требует большего количества ресурсов, выделяемых для каждого устройства, которое будет сбалансировано. и вам нужно будет решить, хотите ли вы создать его самостоятельно (используя программирование как клиента, так и хоста), или же вы хотите создать что-то, совместимое с существующим более старым программированием (которое должно быть связано обменом сообщениями между хостами). и клиент, надевая больше хозяина, но ничего нового для клиента). Если вы знаете свой Unix, или вы знаете свои программы Winserver, это может быть сделано с небольшим количеством времени, но это требует большего количества ресурсов, выделяемых для каждого устройства, которое будет сбалансировано. и вам нужно будет решить, хотите ли вы создать его самостоятельно (используя программирование как клиента, так и хоста), или же вы хотите создать что-то, совместимое с существующим более старым программированием (которое должно быть связано обменом сообщениями между хостами). и клиент, надевая больше хозяина, но ничего нового для клиента). Если вы знаете свой Unix, или вы знаете свои программы Winserver, это может быть сделано с небольшим количеством времени, но это требует большего количества ресурсов, выделяемых для каждого устройства, которое будет сбалансировано. больше надевать на хозяина, но ничего нового для клиента). Если вы знаете свой Unix, или вы знаете свои программы Winserver, это может быть сделано с небольшим количеством времени, но это требует большего количества ресурсов, выделяемых для каждого устройства, которое будет сбалансировано. больше надевать на хозяина, но ничего нового для клиента). Если вы знаете свой Unix, или вы знаете свои программы Winserver, это может быть сделано с небольшим количеством времени, но это требует большего количества ресурсов, выделяемых для каждого устройства, которое будет сбалансировано.

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


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

Я сделал. Но интерфейс все равно разместил его как стену текста.
Htd Tech

Для справки: балансировка нагрузки для одного соединения заключается в том, что в действительности это невозможно, если вы не работаете над ним с обеих сторон. Но для ускорения доступа в Интернет существуют сторонние карты с несколькими сетевыми картами, которые будут одновременно подключаться к внутренним сетям. Если у вас есть несколько служб ISP, вы можете разрешить вашей системе обрабатывать баланс пропускной способности. Это не совсем применимо для игр или для несжатого видео, поскольку оба конца согласовывают размеры пакетов, но если вы много работаете в сети, это выполнимо и получит некоторое повышение производительности.
Htd Tech

Я нашел только один разрыв абзаца и исправил это. «Секрет» в том, что вам нужен двойной возврат (пустая строка) между абзацами. В противном случае система запускает его вместе для вашего удобства.
fixer1234
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.