Таймер повторной передачи

Иногда процесс загрузки Web-страниц замирает в самом пачале. Эти задержки происходят преимущественно из-за того, ч го у отправителя много времени уходит на то, чтобы обнаружить утерю IP-пакетов. В этом разделе мы расскажем о том, как процесс установления ТСР-соединения может растяпуться на несколько ce- купд в результате большого начального значения таймаута повторной передачи (RTO — Retransmission Timeout). Затем мы объясним, почему такие задержки возникают сравнительно часто именно при передаче данных с помощью HTTP, а не при работе других протоколов прикладного уровня.

ЗАДЕРЖКИ В ПРОЦЕССЕ УСТАНОВЛЕНИЯ ТСР-СОЕДИНЕНИЙ

С точки зрения пользователя, щелчок мышью на гиперссылке приводит непосредственно к отображению требуемой страницы в окне браузера. Невидимо для пользователя браузер выполняет последовательность действий, необходимых для получения и отображения Web страницы: установление ТСР-соединения, передача HTTP-запроса, получение ответа, Анализ содержимого и его отображение в окне. Так как браузер представляет собой интерактивное приложение, то задержка при выполнении хотя бы одной из перечисленных операций становится заметной пользователю. Это силыю контрастирует с пеиитерактивпыми приложениями, например, электронной почтой, в которых пользователь не ожидает немедленного ответа. Хотя Telnet и FTP в некоторой мере интерактивны, но в них четко отделяется установление соединения и передача данных. При этом среднестатистический пользователь взаимодействует с удаленным Компьютером достаточно долгое время; так что несколько секунд дополнительной задержки при установлении ТСР-соедине- пия и передаче имени пользователя и пароля не силыю влияют на степень удовлетворения пользователя работой с приложением.

Установка ТСР-соединения представляет собой трехшаговую процедуру: клиент отправляет пакет SYN, в ответ сервер отправляет клиенту накет SYN-ACK и, наконец, процедура завершается отправкой пакета ACK клиентом. Если пакеты не теряются, то на установление соединения уходит лишь время на отправку и получение перечисленных пакетов. В случае потери пакета SYN или SYN-ACK времени тратится существенно больше. У отправителя TCP-пакета имеется всего два способа обнаружения потери пакета: получение повторного подтверждения или завершение таймаута повторной передачи, как об этом говорилось в главе 5 (раздел 5.2.5). Но получатель не посылает повторных подтверждений, если отправитель не передал пи одного пакета данных. В начале соединения, когда отправитель еще не передал пи одного пакета, скорость передачи пакетов ограничивается пе- большим размером скользящего окпа. При отсутствии повторпых подтверждений TCP-отправитель должен для обпаружепия потери пакета полагаться на таймер повторпой передачи. При этом выбор Значения RTO достаточно критичен. Слишком большое значение приведет к чрезмерпой задержке в случае потери пакета, а слишком маленькое — к излишним повторным передачам. Чтобы пайти компромисс, отправитель выбирает величину RTO на основе приблизительной оценки времени прохода пакета до получателя и обратно (RTT — Round-Trip Time).

Но в начале связи отправитель еще не имеет данных об RTT. Эго осложняет выбор RTO для начальных пакетов соединения. Чтобы разрешить эту проблему, спецификация TCP предписывает устанавливать начальный RTO равным трем секундам [PA00]. Если SYN-ACK не ириходит в течение трех секупд после отправки пакета SYN, то отправитель увеличивает RTO до шести секупд и удваивает его после каждой последующей повторпой передачи, как показано на рис 8.1. Сочетание большого начального RTO и увеличение этого времени в геометрической прогрессии позволяют избежать излишних передач пакетов SYN или SYN-ACK в случае взаимодействия компьютеров с большим RTT. Если пакет SYN или SYN-ACK утерян, то задержка дополнительной отправки пакета помогает не перегружать сеть. эти консервативные методы повторной передачи утерянных пакетов SYN и SYN-ACK не оказывают заметного влияпия на пеиптерактивиые приложения. В то же время потеря одного или нескольких пакетов SYN или SYN-ACK заметно сказывается на работе Web. Потеря двух следующих друг за другом пакетов SYN приведет к суммарной задержке в девять секунд перед тем, как будет отправлен третий пакет SYN. При разработке протокола считалось, что вероятность потери одного или более пакетов SYN или SYN-ACK будет достаточно малой. Но широкое использование Web привело к высокой загрузке сетей и к сравнительно большой вероятности потери пакета (0.05 или более) [Pax99J. Несмотря на применение высокоскоростных липий связи во мпогих сегментах Internet на критических участках возникают заторы. Участки, подсоединяющие к Internet отдельные организации, университеты или даже целые страпы, часто бывают перегружены, особенно в часы пик. Соединение между Internet и провайдерами Обычно всегда перегружены. Даже при небольшом трафике сильпо перегружепый Web-cepвep может терять пакеты SYN. Операционная система, под управлением которой работает Web-cepвep, поддерживает очередь ТСР-соединеиий, а если эта очередь переполняется, новые пакеты SYN отбрасываются.

Рис 8.1. Клиент повторно отправляет серверу утерянный пакет SYN

Большие задержки влияют на поведение пользователей. Если пользователю надоело ждать, то он/она может отменить запрос пажатием кнопки Stop в браузере. Затем оп нажимает кнопку Reload для повторения запроса. В итоге, когда пользователь нажимает Stop, браузер отдает распоряжение операционной системе о закрытии данного соединения (это будет дегалыю описапо в разделе 8.2.1). Когда же пользователь нажимает кнопку Reload, браузер немедленно начинает устанавливать новое TCP-соединение. Операционная система нри этом иосылает серверу пакет SYN и устанавливает начальное значение RTO по умолчанию (скажем, три секунды). Если посланный пакет SYN достигает сервера, соединение устанавливается быстрее, чем при ожидании окончания трех- или шестисекундного таймаута. Действия пользователя по отмене/повторению иопьггки соединения фактически вызывают немедленную переотправку пакета SYN. Пользователь может также нажать только кпопку Reload, не нажимая Stop. Нажатие Reload одновременно вызывает и закрытие текущего соединения, и открытие пового.

Завершение и повторное установление «зависшего» соединения обычно уменьшает задержку, воспринимаемую пользователем, но происходит это за счет увеличения нагрузки на сервер и на сеть. Например, операционная система Компьютера с Web-сервером могут отбросить пакеты SYN от разных пользователей, если все запросы пришли со слишком малым промежутком времени. Если же пользователи при этом повторят свои запросы, то каждый из них пошлет на сервер по одному пакету SYN. Это только увеличит и без того высокую иагрузку на сервер. Такое поведение только увеличивает трафик на загруженном участке сети. Перегрузка приводит к потере пакетов. Так как большинство Web-запросов и ответов коротки, то SYN и SYN-ACK составляют относительно большую долю всех утеряипых пакетов. Если в результате потери пакета пользователь останавливает и тут же спова запускает запрос, то клиент вскоре посылает второй пакет SYN. Это увеличивает трафик на перегруженном участке сети.

ЗАДЕРЖКИ В ПРОЦЕССЕ ПЕРЕДАЧИ ДАННЫХ В WEB

По сравнению с началом соединения, длиипые таймауты повторной передачи в процесса передачи ответа возникают реже по двум причинам:

•          Меньшее значение RTO. Отправитель пакетов TCP постепенно уточняет значение RTO, измеряя временя между отправкой запросов и получением ответов. Постепенно RTO приобретает значение, близкое к реалыгаму RTT между отправителем и получателем. Например, RTT между отправителем и получателем равно 200 мс. В начале связи отправитель устанавливает грехсекуидное RTO. Затем отправитель выбирает RTO в зависимости от среднего значения RTT. В результате RTO снижается до 250-300 мс.

•          Повторяющиеся подтверждения. Появление таймаутов повторной передачи менее вероятно, когда отправитель пакетов TCP начинает посылать свои данные. По мере получения данных получатель пакетов TCP подтверждает их по- лучепие АСК-пакетами, отражающими число полученных байтов в смежных пакетах данных. В случае утери пакета это число не увеличивается в последующих АСК-пакетах. При получении таких повторяющихся пакетов отправитель попимает, что ранее переданный пакет был утеряп. Это служит ему сигналом передать утерянный пакег, не дожидаясь таймаута повторной передачи, как это описывалось ранее в главе 5 (раздел 5.2.5).

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

Большинство Web-ответов, однако, имеют не очень большие размеры, примерно or 8 до 12 килобайтов. Эти короткие пересылки проходят по большей части (если не целиком) на фазе медленного старта. Эта фаза начинается с небольшого начального размера скользящего окна в один или два пакета, как описано в главе 5 (раздел 5.2.6). С небольшим скользящим окпом вероятность успешно доставить большое число пакетов после утери пакета очепь мала.

Маловероятно, что получатель TCP-пакетов отправит три повторяющихся ACK, необходимых для быстрой повторной передачи утерянного пакета [BPS+98J. Например, утеря первого пакета ответа сервера вызовет передачу единственного повторяющегося ACK в ответ на приход второго иакета, как показано на рис. 8.2. Небольшой размер скользящего окна мешает серверу отправить дополнительные пакеты до тех иор, пока не получено подтверждение о прибытии первого пакета. Ожидапие окончания интервала повторпой передачи приостанавливает передачу сервером данных. Кроме того, после таймаута повторной передачи отправитель TCP-пакетов вынужден вернуться к своему первоначальному небольшому размеру скользящего окна, как показано на рис. 8.3. Таймаугы повторной передачи могут вызвать значительные задержки при передаче данных. Останов и перезапуск сеанса передачи данных может привести к более быстрому отклику, чем при ожидании таймаута повторпой передачи.

Рис 8.2. Клиент посылает повторпый пакет ACK серверу

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100