dignity Posted June 19, 2013 Posted June 19, 2013 (edited) Друзья, нетиповая задача, может кто сталкивался. Все мы знаем, что TCP очень сильно деградирует от задержки + потерь. Есть задача прокинуть как-то HTTP из США в Сибирь, чтобы обеспечить хорошую скорость доступа к ресурсам без недостатков TCP. Смотрю на SCTP, но что-то не могу найти поддержку в Nginx, хотя в Apache есть. Если кто-то сталкивался, есть идеи, буду рад услышать. Edited June 19, 2013 by dignity Вставить ник Quote
MMM Posted June 19, 2013 Posted June 19, 2013 думаю, что нужно простейшие tcp2sctp и sctp2tcp на другом конце, а там уже добавлять по вкусу nginx и т.п. Вставить ник Quote
dignity Posted June 19, 2013 Author Posted June 19, 2013 то что можно инкапсуляцию сделать, понятно. Я пока ищу готовое решение какого-либо туннеля. Инкапсулятор писать лениво... Его же поддерживать придется)) Кроме того, надо будет делать либо на уровня ядра с поддержкой маршрутизации и какого-то tun интерфейса, либо держать несколько туннелей, для каждого порта, условно. Вставить ник Quote
shafiev Posted June 19, 2013 Posted June 19, 2013 Друзья, нетиповая задача, может кто сталкивался. Все мы знаем, что TCP очень сильно деградирует от задержки + потерь. Есть задача прокинуть как-то HTTP из США в Сибирь, чтобы обеспечить хорошую скорость доступа к ресурсам без недостатков TCP. Смотрю на SCTP, но что-то не могу найти поддержку в Nginx, хотя в Apache есть. Если кто-то сталкивался, есть идеи, буду рад услышать. Не думаю, что sctp или же что-то анологичное сильно поможет , все таки большой джиттер и потери фундаментальная проблема. Вставить ник Quote
dignity Posted June 19, 2013 Author Posted June 19, 2013 Пробовать надо. Мне кажется, что заранее сложно сказать. Вставить ник Quote
snark Posted June 19, 2013 Posted June 19, 2013 Туннель между США и Сибирью не поможет? Расстояние, разумеется, не сократится, но "путь" для ТСР будет "ближе" хотя бы из-за меньшего кол-ва хопов. Вставить ник Quote
Saab95 Posted June 19, 2013 Posted June 19, 2013 Еще можно включить упаковку пакетов, очень ускорит доставку пачки подтверждений о доставке. Вставить ник Quote
agr Posted June 19, 2013 Posted June 19, 2013 наверное только кеширование контента поможет. Вставить ник Quote
Minkevich Posted June 20, 2013 Posted June 20, 2013 А рассматривается только такой вариант? Почему бы не использовать протокол SSTP? Вставить ник Quote
dignity Posted June 20, 2013 Author Posted June 20, 2013 SSTP suffers from the same performance limitations as any other IP-over-TCP tunnel. In general, performance will be acceptable only as long as there is sufficient excess bandwidth on the un-tunneled network link to guarantee that the tunneled TCP timers do not expire. If this becomes untrue, performance falls off dramatically. This is known as the "TCP meltdown problem"[5][6] Это из википедии. Сам не сталкивался. Похоже, вы не очень поняли что мне надо)) мне надо разогнать tcp на длинном канале. Кэширование не подходит. Трафик некэшируемый. Вставить ник Quote
-Pave1- Posted June 20, 2013 Posted June 20, 2013 (edited) Не совсем понял, при чем тут всякие SSTP, если честно.... От них delay что ли уменьшится? :) Для разгона TCP знаю только 2 средства: 1. Wan оптимизаторы, как Cisco Waas, Riverbed и т.д. Дорого. 2. Использование tcp window scaling, т.е. расширенное TCP window >> 65k. Все современные ОС по сути это должны уметь. А если не хотят в конкретном случае использовать - надо копать почему, и принуждать к этому. Например в WinXP/2003 надо в реестре включать - правда работает все равно хуже последних. Edited June 20, 2013 by -Pave1- Вставить ник Quote
MMM Posted June 20, 2013 Posted June 20, 2013 то что можно инкапсуляцию сделать, понятно. Я пока ищу готовое решение какого-либо туннеля. Инкапсулятор писать лениво... Его же поддерживать придется)) Кроме того, надо будет делать либо на уровня ядра с поддержкой маршрутизации и какого-то tun интерфейса, либо держать несколько туннелей, для каждого порта, условно. Можно придумать что-то вроде withsctp netcat | netcat Вставить ник Quote
dignity Posted June 20, 2013 Author Posted June 20, 2013 2. Использование tcp window scaling, т.е. расширенное TCP window >> 65k. Все современные ОС по сути это должны уметь. А если не хотят в конкретном случае использовать - надо копать почему, и принуждать к этому. Например в WinXP/2003 надо в реестре включать - правда работает все равно хуже последних. Не, не подходит)) представьте что клиент - обычный домашний хомяк из США, зачем его принуждать. Вставить ник Quote
-Pave1- Posted June 20, 2013 Posted June 20, 2013 (edited) Не, не подходит)) представьте что клиент - обычный домашний хомяк из США, зачем его принуждать. Ну тогда только коммерческий WAN оптимизатор, находящийся "рядом" с этим самым хомячком - и никак иначе... Никаких других путей нет - что ни городи. Т.к. если delay > 10ms и ширина окна 65k - то время проведенное в ожидании подтверждения о приеме данных будет много больше времени непосредственно передачи данных... Тут как бы врожденное ограничение TCP: http://bradhedlund.com/2008/12/19/how-to-calculate-tcp-throughput-for-long-distance-links/ Edited June 20, 2013 by -Pave1- Вставить ник Quote
Ivan_83 Posted June 20, 2013 Posted June 20, 2013 htcp через sysctl задействовать в качестве tcp.cc, дальше читать маны как его ещё можно выкрутить. Вставить ник Quote
dignity Posted June 22, 2013 Author Posted June 22, 2013 Spdy поможет, наверное), просто параллельно пытаюсь не прикладной протокол найти, а транспортный. Похоже, кроме congestion алгоритмов tcp без вариантов. Буду пробовать с yeah. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.