Задача - повысить качество связи между двумя серверами (на самом деле больше), подключенными к сети интернет и находящихся друг от друга на большом расстоянии (по три/четыре провайдера в пиринге между ними), в плане отзывчивости и надежности (потерей пакетов быть не должно - читай минимизировать их количество) за счет использования дополнительных/параллельных каналов или повышенной нагрузки на имеющийся канал (может быть удвоение посылаемых данных или еще как, отдельный разговор).
Конечная задача осложняется еще и тем что серверов много и связь между ними может прерываться (были случаи с проблемами пиринга между провайдерами, когда связь не работала A->C но можно было настроить vpn A->B и B->C ) или сами серверы могут выключаться, соответственно нужно прозрачно и это отслеживать.
Хочется программного решения, желательно linux (любой дистрибутив), на windows не надеюсь, оно в сложных случаях комбинаций простого бриджа и openvpn может глючить, а freebsd не умею, но при необходимости со всем можно разобраться.
Контроль за линиями можно возложить на bonding (trunking), а какими средствами уменьшить шансы потерь на канале и минимизировать латентность, хотя бы и за счет повышения нагрузки на каналы и/или использования одновременно двух каналов? Например, у меня есть треугольник A - B - C - A (каждая связь использует комбинацию разных провайдеров в пиринге), при обрыве одного из любых тунелей все три сервера должны оставаться в одной работающей локальной сети.
Алгоритм то может быть дубовым - все пакеты синхронно отправляются сразу на два канала, какой первый дошел, тот и отправляется дальше - налицо теоретическое уменьшение шансов появления потерь на произведение шансов потерь на этих каналах. Возможно есть более изощренные и эффективные алгоритмы?
Я надеялся на openvpn, настроенный на udp соединения, но пользы не получилось, вообще качество связи при tcp и udp тунелинга меняется, но результат просто по разному начинает реагировать на проблемы в сети, но не уменьшает шансов их проявления.