Назад | Перейти на главную страницу

Повышение скорости передачи больших файлов по ссылке с высокой задержкой

Итак, мне недавно потребовалось получить через Интернет большой файл из одного из наших зарубежных офисов. Оба офиса имеют 50-мегабитные оптоволоконные линии в обоих направлениях, но время приема-передачи ужасно и варьируется от 450 мс в хороший день до 750 мс в плохой.

Первоначально я пытался вытащить файл через VPN-соединение, но после нескольких неудачных передач (smb действительно отстой по медленным ссылкам) и максимальной скорости около 128 кбит / с быстрый Google показал, что я столкнулся с проблемами масштабирования окна TCP в Windows.

С тех пор я протолкнул файл через коммерческую службу типа частного облака, которая доставила файл сюда быстрее, поэтому нижеследующее больше из любопытства, чем что-либо еще.

К удовольствию добавляется то, что доступ в Интернет на обоих концах осуществляется через HTTP-прокси. Однако у меня есть права администратора на машинах с обеих сторон.

Как бы вы увеличили скорость?

Вещи, которые я пробовал:

1) Простой SFTP между двумя виртуальными машинами Linux, используя штопор для пробивания через прокси-сервер http и третьего посредника для соединения двух концов вместе. Достигнутая скорость: около 600 кбит / с.

2) SFTP, но с использованием OpenSSH с исправлением HPN-SSH. Штопор и промежуточная конфигурация такие же, как 1). Небольшое улучшение скорости.

3) То же, что и 2, но с использованием LFTP с pget -c -n 10 чтобы разбить перевод на куски. На данный момент это лучший результат, скорость 3,5 Мбит / с ...

Все улучшения приветствуются.

В наши дни я обращаюсь к передачам по каналам на большие расстояния и с большей задержкой, оборачивая rsync поверх UDP, используя UDR как транспорт. UDR использует UDT, который описывается как:

UDT - это надежный протокол передачи данных на уровне приложений, основанный на UDP, для распределенных приложений с интенсивным использованием данных в глобальных высокоскоростных сетях. UDT использует UDP для передачи больших объемов данных со своими собственными механизмами контроля надежности и контроля перегрузки. Новый протокол может передавать данные с гораздо большей скоростью, чем TCP. UDT также представляет собой легко настраиваемую структуру, которая может использовать различные алгоритмы управления перегрузкой.

По умолчанию это отключает шифрование, что было очень важно, когда я исправлял HPN-SSH, но подход UDP немного помог. Основное преимущество решения UDR / UDP заключается в том, что функциональность команд не сильно меняется. В конечном итоге вы добавляете команду rsync с udr.

udr rsync -avP --stats --delete --inplace /data/ mir1:/data/

Также см: Возможность оптимизации WAN для SSH трафика

У меня была такая же проблема на $ lastjob.

Оставаясь исключительно в рамках собственной инфраструктуры, я никогда не находил лучшего решения, чем LFTP.

Если вы можете оправдать затраты, вы можете получить устройства, ускоряющие WAN. По сути, они прозрачно превращают ваши запросы в гораздо большие блоки, тем самым значительно сокращая разговоры между двумя сайтами. Riverbed, вероятно, самый известный вариант, но у IIRC есть также модуль для маршрутизаторов Juniper для этого. На данный момент я не знаю ни одной опции FLOSS.

На самом деле я нашел, что лучшим вариантом был Dropbox и др., Но это может быть неприемлемо для вас.