Почему я не могу получить равную скорость загрузки и загрузки на симметричном канале? - PullRequest
3 голосов
/ 22 ноября 2008

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

Теперь проблема в том, что на высокоскоростных соединениях мы получаем довольно ожидаемые результаты с точки зрения пропускной способности, но на медленных соединениях (думаю, идеально CDMA 1xRTT link) либо скачивание, либо загрузка выигрывают на за счет обратного направления. У меня есть «вышестоящий орган», который убежден, что соединение CDMA 1xRTT является симметричным, и поэтому мы должны иметь возможность выполнять передачу данных с эквивалентной скоростью (~ 100 кбит / с в каждом направлении) по этой ссылке.

Мои измерения показывают, что без серьезной настройки кода с точки зрения размеров буфера и дросселирования канала передачи данных невозможно достичь одинаковых скоростей в вышеупомянутых условиях. Я попробовал и мой многопоточный код, а также создал простой пакетный файл, который автоматизирует Windows ftp.exe для выполнения передачи данных - тот же результат.

Итак, вопрос заключается в следующем: действительно ли возможно осуществлять передачу данных по медленной симметричной линии с эквивалентными скоростями? Правильно ли «высшее тело» в своих ожиданиях? Если да, есть ли у вас какие-либо предложения относительно того, что мне делать с моим кодом для достижения такой пропускной способности?

PS. Я полностью переписал вопрос, поэтому было бы очевидно, что он принадлежит этому сайту.

Ответы [ 2 ]

5 голосов
/ 22 ноября 2008

CDMA 1x состоит из 15 каналов трафика 9,6 кбит / с. В результате получается общая пропускная способность 144 кбит / с.

Два канала используются для командных и управляющих сигналов (общение с базовыми станциями, ассоциирование / разъединение, SMS-трафик, сигналы вызова и т. Д.).

Это дает вам до 124,8 кбит / с.

-> Каждый канал односторонний. <- </p>

Они динамически переключаются и распределяются в зависимости от необходимости.

Обычно вы получаете больше загрузки, чем загрузки, потому что это типичное использование модема сотового телефона. Но вы никогда не получите общую суммарную пропускную способность более 120 Кбит / с.

На практике из-за накладных расходов на кодирование 1xRTT, исправление ошибок, повторную отправку и т. Д. Вы, как правило, испытываете скорость от 60 кбит / с до 90 кбит / с, даже если у вас есть все возможные каналы.

Это означает, что вы можете, вероятно, получить только 30kbps-60kbps загрузки и выгрузки одновременно.

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

Итак, 1xRTT теоретически может дать вам 124 кбит / с в одну сторону, но из-за накладных расходов, времени переключения, пропускной способности базовой станции или телефонной компании, просто ограничивающей такие соединения по другим причинам, вы не можете зависеть от симметричной связи .

Примечание:

Это будет варьироваться до некоторой степени в зависимости от провайдера и модема. Например, некоторые модемы имеют 16 каналов, а некоторые провайдеры поддерживают 16 каналов. В некоторых случаях эти модемы и провайдеры хорошо работают вместе и могут предоставить приложению полную необработанную полосу пропускания 144 Кбит / с для приложения, имея только один выделенный канал (который должен работать довольно напряженно) для решения проблем управления, коммутации и других проблем. Однако даже в этом случае с накладными расходами модемной связи, затем накладными расходами PPP, затем накладными расходами IP, а затем накладными расходами TCP, вы по-прежнему смотрите на общую пропускную способность, возможно, 100-120 кбит / с, как вверх, так и вниз.

Наконец, ни один провайдер пока не поддерживает прозрачную передачу IP-трафика. Другими словами, если ваш модем движется, модем переключится на новую базовую станцию, но вы полностью прекратите сеанс PPP и должны будете его перезапустить, а также все сеансы TCP и тому подобное. Обычно вы не получаете тот же IP-адрес, и поэтому ваши сеансы TCP не будут восстановлены корректно.

Интересный аспект этого поворота заключается в том, что это может произойти, даже если вы не двигаетесь. Если одна базовая станция загружена, вы можете быть переведены на другую базовую станцию, если вы находитесь достаточно близко - существуют другие вещи, которые могут выполнять передачу вашего модема даже без вашего движения. Поэтому убедитесь, что вы принимаете это во внимание, так как вы, похоже, заинтересованы в поддержании полного дуплексного, симметричного открытого канала. Трудно писать вещи, которые будут изящно выздоравливать, не задумываться об этом и делать это быстро. Вы бы хорошо поработали очень тесно с производителем модема (таким как Kyocera), иначе вы не получите документацию о том, как управлять чипсетом модема на нужном низком уровне.

-Adam

1 голос
/ 23 ноября 2008

Я думаю, что вся драма с высокими равными скоростями в обоих направлениях заключается в том, что мое высшее тело думает, что у них 144 кбит / с на восходящей линии связи и 144 кбит / с на нисходящей линии связи (== две трубы). В то время как на самом деле у нас есть 144 Кбит / с ОДНОЙ трубы, которая переключает направления, когда я передаю файлы.

Прокомментируйте меня, если я прав или нет, пожалуйста.

...