Задать вопрос
dollar
@dollar
Делай добро и бросай его в воду.

Как сложить пропускную способность нескольких интернет-каналов от разных провайдеров?

Очевидно, что в самом общем виде эта задача нерешаема, т.к. при «перебросе» на другого провайдера сменится IP, и почти все соединения придется устанавливать заново.


Поэтому сразу конкретизирую вопрос:
Необходимо пробросить через нескольких провайдеров одно или несколько TCP соединений, критичных к разрыву и к ширине канала, имея на руках и на «другом конце» свое любое оборудование и ПО.

habr-inet-channels-s.png


«A» — компьютер (условно ноутбук), для которого нужен широкий канал, при этом самого канала нет, а есть много мелких провайдеров. Каждый провайдер крайне нестабилен — может в любой момент повысить пинг, сильно увеличить потерю пакетов, или вовсе отключиться на некоторое время. Однако в сумме их пропускной способности хватит с запасом.


Также имеется возможность развернуть некий сегмент сети (из одного или нескольких устройств). Условно назовем «сегмент X». Пока что это «черный ящик» для меня.


«B» — компьютер, заведомо подключенный к качественному каналу. Рядом можем также развернуть любую схему и установить любое ПО.


Естественно, «B» (или «Y») получает белый ip, а для «A» (или «X») все ip серые (разве что 1-2 провайдера, возможно, выдадут, но не факт).


Собственно, вопрос: есть ли готовое решение? И если нет, то где искать? Цена и размеры «X» и «Y» не имеют значения (в разумных пределах).


Здесь необходимо не только и не столько резервирование трафика, сколько создание единого стабильного широкого канала из многих нестабильных и узких.
  • Вопрос задан
  • 9229 просмотров
Подписаться 8 Оценить Комментировать
Решения вопроса 2
Kindman
@Kindman
А, как насчет Multilink PPP?
Ответ написан
@nrgian
существуют как аппаратные, так и программные решения

например
https://www.openmptcprouter.com
там на первой странице иллюстрация - из нее понятно зачем там сервер

Вот одно из решений
https://habr.com/ru/company/mailru/blog/332950/

Вот ПО бесплатное для решения
https://github.com/VrayoSystems/vtrunkd
Ответ написан
Пригласить эксперта
Ответы на вопрос 9
amc
@amc
en.wikipedia.org/wiki/Link_aggregation#Link_Aggregation_Control_Protocol
Я правда не уверен, сможете ли вы использовать это поверх PPP линков.
Ответ написан
@square
Девять женщин не могут родить ребенка за один месяц.
Ответ написан
@smartlight
из Г. пулю? вряд ли такое возможно.
Ответ написан
Комментировать
@nuzni
Не объединить, но грамотно разделить по задачам(типу трафика, адресно и т.д.) Но вот 2+2=4 вряд ли. Один хрен следующий пакет от второго провайдера будет ждать предыдущий… Кака получается даже в голове
Ответ написан
Комментировать
@Lampus
Что касается торрентов, то автор выше прав. Там создаётся множество TCP/IP сессий, которые можно раскидать по каналам. Я в своё время так делал на Linux'е, прям как в LARTC написано: lartc.org/howto/lartc.rpdb.multiple-links.html
Но сдаётся мне торренты вам как шли так и ехали.

Есть предложение посмотреть в сторону OpenVPN, в теории можно написать для него патч, который позволит раскидывать трафик по нескольким соединениям, а на стороне сервера собирать их все в кучу.
Ответ написан
Комментировать
Kindman
@Kindman
Кстати, можно развернуть
PPP over TCP (накладывает кадры PPP на TCP соединенение. Кадры кодируются так же как и при асинхронном последовательном подключении) либо
PPP over UDP (накладывает кадры PPP на UDP соединенение. Каждый кадр инкапсулируется в дейтаграммый UDP пакет).
Ответ написан
ValdikSS
@ValdikSS
Если вы хотите разделить одно TCP соединение на нескольких провайдеров… Блин, это сложно. Крайне сложно. А вот, например, те же торренты, где куча TCP, легко можно распараллелить на несколько провайдеров в линуксе, например.
Ответ написан
Комментировать
Ответ написан
Комментировать
@JDima
1) Любые варианты раскидывания одной TCP сессиям по 2+ каналам, тем более с заведомо нестабильными характеристиками, абсолютно исключены. Пакеты могут прилетать не в том порядке, это критично. И LACP не позволяет размазать одну сессию по двум каналам (не говоря уже о том, что он не предназначен для стыковки с разными провайдерами). Даже в контролируемой локальной сети с минимальной вариацией задаржки категорически не рекомендуется задействовать per-packer loadbalancing.
2) Чтобы при обвале одного канала сессии без разрыва перебрасывались на другой, надо закупить PI AS и задружиться с провайдерами по BGP, и установить крайне жесткие таймеры/BFD/PfR. Не самый простой вариант для маленькой фирмы, и невыполнимый для частника. Но самый оптимальный.

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

Войдите, чтобы написать ответ

Похожие вопросы