Если в моей системе два сетевых адаптера и оба подключены к разным интернет-провайдерам с разными IP-адресами, могу ли я распределить на них свой сетевой трафик, чтобы увеличить пропускную способность. Я уже рассматривал такие решения, как net-bonding, где мы создаем логический интерфейс, представляемый приложениям, и две NIC связываются вместе.
Также я видел решения, которые используют протокол SCTP или SCPS-TP вместо TCP.
Моя затруднительная ситуация заключается в том, что мне нужно использовать решение, присутствующее в области приложения. Предположим, я пишу программное обеспечение для нескольких клиентских систем, я бы не хотел, чтобы они меняли свой tcp с помощью sctp или слишком углублялись в связывание (также с netbonding, он работает, только если IP-адреса из одной сети).
Каковы основные проблемы при разработке такого решения?
Поскольку они находятся в разных сетях, нет способа объединить или связать два соединения вместе, однако вы можете сбалансировать нагрузку исходящих соединений, чтобы первый запрос TCP / IP выходил из интерфейса a, второй - из интерфейса B, третий из ... и т. д.
К сожалению, вы не указали, какую ОС вы используете, так как я не знаю, как это сделать в Windows / MacOS / Solaris / и т. Д., Я буду ссылаться только на решение для Linux.
Вот руководство по настройке маршрутов в Linux
Вы должны иметь возможность сделать то же самое при настройке маршрутизации исходящего трафика в любой ОС.
С другой стороны, если вам нужно сбалансировать загрузку входящих подключений, предложение для циклического перебора 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-адресов.
Мне всегда больше всего везло, когда я запускал это через маршрутизатор с двойным WAN, например, одно из многих устройств DrayTek. Они отлично работают для типичного веб-серфинга, но вам нужно беспокоиться о более продвинутых приложениях, которые поддерживают сеанс или проверяют ссылающийся IP-адрес. В некоторых случаях, например при подключении через VPN или голосовой / видеоконференцсвязи, вы можете столкнуться с проблемами подключения, которые сводят на нет преимущества увеличения пропускной способности. Обычно это можно обойти, статически назначив порты одному соединению.