Давно размышлял о том, что если есть несколько интернет-соединений, каждое из которых недостаточно быстрое и недостаточно надежное, то их надо объединить. Типичное применение -- интернет на даче. Прочитал некоторое количество информации по этому поводу и спешу систематизировать, пока не забыл.
1. Чаще всего в таких случаях используют балансировку нагрузки. Это приводит к тому, что часть соединений устанавливается по одному каналу, часть по другому. В принципе, это полезно, не очень сложно и относительно безболезненно. Но это не дает суммирования скоростей, потому что поток данных при скачивании конкретного большого файла будет течь ровно по одному из каналов.
2. На русскоязычных форумах на вопрос о том, как сделать именно суммирование, отвечают: никак, сам дурак.
3. Технология bonding позволяет суммировать скорости, но работает она на уровне 2 OSI (ethernet), а не уровне 3 (IP) и предназначена для объединения ресурсов нескольких одинаковых сетевых плат по параллельным проводам. К модемным соединениям это напрямую не применимо.
4. Можно обзавестись сервером в датацентре и прокинуть до него несколько туннелей по каждому из каналов, а затем эти туннели склеить между собой с помощью bonding. Это работает. Описаны
реализация через OpenVPN и
реализация через SSH.
5. Со скоростью все не так уж здорово.
Один из экспериментаторов получил из двух 3G-модемов скорость одного 3G-модема и связывает это с плохой latency. В более общем случае и с более приличными каналами
утверждается, что итоговая скорость будет равна скорости самого медленного канала, умноженной на количество каналов. И надо вычесть накладные расходы от VPN, которые, например, могут составлять 20%.
6. Bonding не имеет собственного механизма контроля исправности каналов. То есть, в случае поломки одного из трех каналов получим потерю 33% пакетов. Поэтому придется колхозить скрипты, которые будут что-нибудь пинговать и оперативно изымать канал из связки.