Повышение качества связи между серверами
Задача - повысить качество связи между двумя серверами (на самом деле больше), подключенными к сети интернет и находящихся друг от друга на большом расстоянии (по три/четыре провайдера в пиринге между ними), в плане отзывчивости и надежности (потерей пакетов быть не должно - читай минимизировать их количество) за счет использования дополнительных/параллельных каналов или повышенной нагрузки на имеющийся канал (может быть удвоение посылаемых данных или еще как, отдельный разговор).
В сетевых технологиях фактически ламер, но наблюдения показывают что в разное время разные провайдеры по разному добавляют 'проблемы' на своем канале.
* Два подключения к одному серверу через одного и того же провайдера - одно подключение может выдать задержку, другое в это же время работает без перерыва (банальная загрузка файла по http)
* OpenVPN , настроенный между двумя серверами при использовании tcp и udp по разному реагирует на потери - udp может тупо продублировать потерю (ping внутри локалки так же будет потерян) а tcp увеличит время отклика и доставит пакет, но потерянное время может оказаться больше чем в случае с udp (неоднозначный вопрос, обсуждения что лучше для тунелинга udp или tcp слишком пространные и философские).
Погуглив увидел пока одну технологию в linux, использующуюся для повышения надежности каналов за счет резервирования - это bonding (trunking), но он используется для прозрачного переключения между каналами при разрыве связи (их ведь нет), но не отвечает за уменьшение времени отклика (или я не прав?).
Теоретически алгоритмы повышения надежности могли бы быть простыми и следующими:
* создаем два (или больше) соединения между серверами, возможно используя разных провайдеров (путей прохождения пакетов) для рассинхронизации проблем на линиях
* каждый посланный сетевой пакет синхронно посылается по обеим линииям, соответственно на принимающей стороне вероятность задержки значительно уменьшается (два канала - вероятность = квадрат от вероятности задержки на одном из них)
* как вариант вместо работы с пакетами на канальном уровне выйти на уровень выше, и контролировать сами соединения, посылая подтверждение о приеме и при возникновении задержки тут же использовать резервный канал.
Теперь вопрос, какими уже разработанными и реализованными в linux технологиями я мог бы воспользоваться для реализации вышеописанного?
Понимаю что тематика форума не соответствует, буду рад если меня пошлют по более верному адресу, можно даже в документацию или гугл, ключевые слова только дайте :) так как что то пытался найти но...
P.S. Убедительная просьба удержаться от рекомендаций по смене провайдеров/города/планеты. Во первых у меня уже есть возможность сравнить как минимум троих крупнейших в городе (Томская область, и уже выбран наиболее оптимальный по цена/качество), и все они создают те или иные проблемы, начиная с проблем со связью и кончая ужасами с саппортом, а во вторых, слава богу, вопрос качества связи на данный момент для меня это вопрос комфорта а не 'жизни и смерти', и в третьих проблемы со связью у меня не так уж и часто.
- Для комментирования войдите или зарегистрируйтесь
Здесь, думается имеется
Здесь, думается, имеется проблема латентности. Если речь идет о собственных каких то программах (имеется ввиду ваша программа-клиент соединяется с вашей программой-сервером) то должнен помочь переход на udp протокол.
Как решить проблему глобально - не знаю.
(:
Сами напросились: forum.nag.ru, там же (т.е. на nag.ru) имеются всевозможные статьи, обзоры и советы по данной тематике.
На forum.nag.ru я получил
На forum.nag.ru я получил единственную рекомендацию купить выделенный канал :) оригинально.
может какие то еще по мимо bonding существуют для резервирования и повышения качества линий связи?
почитай про ospf, bgp
почитай про ospf, bgp
?
На счет последнего (bgp) вообще без комментариев... приходишь к провайдеру и так авторитетно ему: а чей та на мою AS100500 анонсы не принимаются?
RFC 2328 к поставленной автором сего топика задаче отношения не имеет, ибо
.