Назад | Перейти на главную страницу

Увеличение пропускной способности с помощью нескольких сетевых адаптеров

Если в моей системе два сетевых адаптера и оба подключены к разным интернет-провайдерам с разными IP-адресами, могу ли я распределить на них свой сетевой трафик, чтобы увеличить пропускную способность. Я уже рассматривал такие решения, как net-bonding, где мы создаем логический интерфейс, представляемый приложениям, и две NIC связываются вместе.

Также я видел решения, которые используют протокол SCTP или SCPS-TP вместо TCP.

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

Каковы основные проблемы при разработке такого решения?

Поскольку они находятся в разных сетях, нет способа объединить или связать два соединения вместе, однако вы можете сбалансировать нагрузку исходящих соединений, чтобы первый запрос TCP / IP выходил из интерфейса a, второй - из интерфейса B, третий из ... и т. д.

К сожалению, вы не указали, какую ОС вы используете, так как я не знаю, как это сделать в Windows / MacOS / Solaris / и т. Д., Я буду ссылаться только на решение для Linux.

Вот руководство по настройке маршрутов в Linux

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

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

Википедия о циклическом DNS

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

Не связывайте два интерфейса - позвольте им иметь разные IP-адреса, и настройте DNS-серверы для чередования двух IP-адресов.

Это не в домене приложения, как вы просили, но на самом деле это может быть проще сделать.

-Адам

В программном обеспечении вы можете попробовать кое-что с маршрутизацией, я не совсем уверен, как любая ОС будет обрабатывать два маршрута с одинаковой метрикой (стоимостью). Предполагая, что ваша система настроена со шлюзом по умолчанию 192.168.0.1, следующая команда (Windows) настроит второй шлюз по умолчанию 192.168.0.2

ROUTE ADD 0.0.0.0 MASK 0.0.0.0 192.168.0.2 METRIC 20

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

Ваш вопрос не очень ясен, относится ли это к входящему трафику (сервер) или исходящему трафику (приложение). Если вы имеете дело с входящим трафиком, то, как предложил Адам Циклический DNS это самое простое решение.

Хотя это может занять больше времени / денег, чем вы ожидаете, хардкорное решение - использовать BGP. Используя пиринг BGP, вы подаете заявку и получаете собственный диапазон IP-адресов. Этот диапазон IP-адресов применяется только к вам и не имеет никакого отношения к вашему интернет-провайдеру. Оба ваших интернет-провайдера могут направлять вам трафик одновременно, потому что они оба знают о вашем диапазоне IP-адресов.

http://en.wikipedia.org/wiki/Border_Gateway_Protocol

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