Сегодня в общем трафике глобальной интернет-сети преобладает трафик службы World Wide Web (WWW). Какие же проблемы возникают при его передаче по протоколу TCP/IP?
Стремительный рост числа информационных ресурсов и экспоненциальный рост количества вэб-пользователей обуславливают значительное увеличение объема WWW-трафика. В связи с этим для оптимизации протоколов, разработки схем распределения трафика и т.п. важно понимание особенностей этого трафика. Служба World Wide Web состоит из большого набора документов, которые называют "вэб-страницами", и доступ к ним можно получить из любой точки глобальной интернет-сети. Каждая вэб-страница относится к виду так называемых "гипермедиадокументов" (hypermedia), где слово "медиа" означает, что документ может содержать не только текст, но и другие элементы (например, графику, видео), а приставка "гипер" – что документ может содержать выбираемые ссылки, которые ведут к другим связанным с ними элементам. Помимо доступа к гипермедиадокументам, на основе службы World Wide Web реализуется также вэб-чат и электронная почта (с доступом через вэб-браузер).
Для реализации службы вэб в интернете используются два основных структурных элемента – клиент и сервер. Для получения доступа и отображения вэб-страницы используется вэббраузер, представляющий собой пользовательское приложение. Браузер – это клиент, который связывается с соответствующим вэб-сервером для получения копии запрашиваемой страницы. Для связи между браузером и вэб-сервером используется протокол передачи гипертекста – HTTP (HyperText Transfer Protocol). Протокол HTTP работает на уровне приложения и основан на принципе "запрос/ответ", то есть после установки сеанса связи с сервером одна из сторон (браузер) должна послать HTTP-запрос (GET), в ответ на который другая сторона (сервер) посылает данные. Для надежной передачи информации HTTP использует протокол транспортного уровня – протокол управления передачей – TCP (Transmission Control Protocol).
В первоначальной версии протокола HTTP/1.0 для каждого сеанса передачи данных открывалось новое TCP-соединение, то есть клиент открывал это соединение и отсылал серверу запрос GET. Передав клиенту копию требуемого документа, сервер закрывал TCP-соединение. Клиент считывал данные из открытого TCP-соединения до тех пор, пока не получал признак конца файла. После этого клиент закрывал свою сторону соединения. В июне 1999 года была определена новая версия протокола HTTP/1.1. Вместо использования для каждой передачи данных отдельного TCP-соединения в версии 1.1 по умолчанию стало применяться одно постоянное TCP-соединение (persistant connection), то есть открыв соединение с сервером, клиент будет использовать его для передачи нескольких запросов и ответов. На сегодняшний день версия 1.1 протокола HTTP является наиболее распространенной.
Анализ WWW-трафика
На трафик, создаваемый вэб-пользователями, оказывают влияние следующие факторы:
- интересы пользователей;
- скорость доступа;
- тарифы интернет-провайдера;
- место подключения к интернету (дом/работа/интернет-кафе и т.п.), то есть возможность загружать и сохранять информацию для последующего использования;
- ограничения (использование фильтров, ограничения, накладываемые на объем и тип загружаемой информации);
- контент WWW и т.д.
Таким образом, определение основных типов вэб-пользователей по создаваемому трафику является комплексной задачей, требующей статистического анализа и учета множества факторов. Согласно данным, получаемым с помощью поисковой системы "Рамблер" и рейтинга Top100, темы, интересующие пользователей русскоязычного сегмента интернета (Рунет), в среднем распределяются так (с незначительными колебаниями в зависимости от дня недели):
- 33% – Компьютеры и интернет;
- 18 % – Развлечения;
- 9% – Новости и СМИ;
- 7% – Бизнес;
- 5% – Музыка;
- 28% – Остальное (Общественная жизнь, Авто/мото, Дом и семья, Отдых и спорт, Наука и образование, Связь, путешествия и транспорт, Культура и искусство, Литература, Здоровье).
Интересно отметить, что по некоторым официальным данным, в настоящее время в России доступ к интернету есть у 8,5 миллионов пользователей, из них почти 3 миллиона человек подключаются к интернету из дома, 3 миллиона 800 тысяч – с работы, а остальные 1 миллион 700 тысяч – из публичных учреждений (интернет-кафе и т.п.). Из этого можно сделать вывод, что наиболее типичным поведением вэб-пользователя является вэб-серфинг, то есть просмотр вэб-страниц, и поиск информации в WWW. Однако подобные предпочтения вэб-пользователей создают незначительный трафик, поскольку в основном пользователь работает с текстовой информацией.
Менее распространенным, но создающим больший (по объему загружаемой информации) трафик, является поведение пользователя, связанное с загрузкой из сети WWW графической и мультимедийной информации (аудио и видео). Далее будут смоделированы следующие типы поведения вэб-пользователей:
- вэб-серфинг и поиск информации в WWW (Web-surfing);
- загрузка пользователем графики (Pictures);
- загрузка пользователем аудио-/видеоклипов (Clips);
- общие случаи, когда пользователь осуществляет вэб-серфинг и поиск информации в WWW, а также просмотр и загрузку графической и мультимедийной информации (General case).
В таблице приведены данные моделирования различного поведения пользователей.
Несмотря на то, что в спецификации протокола HTTP/1.1 определено использование постоянных соединений для передачи нескольких запросов и ответов между клиентом и сервером, в действительности при обращении пользователя к вэбстранице инициируется несколько TCP-соединений (иногда до нескольких десятков). Это объясняется использованием всевозможных баннеров, счетчиков и т.п. при создании и оформлении вэб-страниц. Баннеры представляют собой картинку (графический файл gif- или jpg-формата, размещенный, как правило, на другом сервере), при нажатии на которую осуществляется переход на рекламируемую страницу. Таким образом, при открытии вэб-страницы, помимо TCP-соединений с данным сервером, для передачи копии запрашиваемой страницы будут инициироваться соединения с другими серверами, баннеры которых расположены на конкретной странице. Количество подобных соединений и их трафик прямо пропорциональны количеству объектов и их размеру.
Например, большинство отечественных баннерных служб ограничивают размер файла до 15 Кб, поскольку при большом объеме баннера пользователь не успевает его просмотреть, а следовательно, осуществить переход по нему. Поэтому средний размер для статичного баннера – 5–6 Кб, для анимированного – 7–12 Кб. Еще один часто используемый при разработке вэб-страниц способ – CGI-программы. CGI (Common Gateway Interface) – это интерфейс, позволяющий вэб-серверу по запросу браузера запускать у себя какие-либо программы, а результат их работы отправлять браузеру в http-формате. CGI-программа – это программа (скрипт), работающая на сервере и обменивающаяся данными с браузером через вышеупомянутый интерфейс. На основе CGI-программ реализуются счетчики посещений на вэб-страницах и динамически создаваемые документы. Инициируемые TCP-соединения здесь также имеют небольшой размер – как правило, от нескольких единиц до десятков килобайт.
Распределение числа TCP-соединений в зависимости от объема передаваемой информации
Функция распределения вероятности (ФРВ) числа TCP-соединений в зависимости от объема передаваемой информации
Распределение числа TCP-соединений в зависимости от количества передаваемых в соединении пакетов
На первых двух рисунках сверху представлено распределение числа TCP-соединений в зависимости от объема передаваемой информации, а также функция распределения вероятности (ФРВ) числа TCP-соединений в зависимости от объема передаваемой информации для рассматриваемых моделей поведения пользователя. Анализ данных этого моделирования показывает, что соединения с трафиком меньше 1 Кб относятся к неуспешным соединениям (Connect Failed Connections). Также необходимо отметить, что при любом поведении пользователя значительное количество соединений (от 25% до 70%) имеют трафик от 1 до 3 Кб (рис.). Причем доля этих соединений тем больше, чем выше активность вэб-пользователя, то есть чем чаще он открывает новые вэб-страницы. Практически все соединения в данном диапазоне трафика в большей степени обусловлены использованием вышеупомянутой баннерной рекламы, в меньшей степени – CGI-скриптов.
Наблюдаемый в диапазоне от 5 до 10 Кб второй пик (рис. слева вверху) менее выражен и определяется баннерной рекламой, а также загрузкой ярлыков графических изображений (thumbnails). Именно поэтому данный пик наиболее заметен при просмотре и загрузке пользователем графической информации (вариант с загрузкой графики – 30% соединений). Последующие пики в распределении числа соединений в зависимости от трафика обусловлены размером загружаемых пользователем файлов, то есть текстовых документов в формате doc и pdf, графических файлов в формате jpg, видеоклипов в формате mpeg и avi, а также музыки в формате mp3.
Вывод напрашивается сам собой: в распределении числа TCP-соединений в зависимости от объема передаваемой информации значительное количество соединений имеет трафик в диапазоне 1–3 Кб независимо от поведения и интересов вэб-пользователя, а число соединений зависит лишь от активности пользователя при вэб-серфинге и количества баннерной рекламы в вэбстраницах. В диапазоне свыше 3 Кб распределение числа соединений будет определяться вышеуказанными факторами, влияющими на поведение пользователя.
На гребне волны
Говоря о типах поведения вэб-пользователей, особо следует рассмотреть вариант "Общие случаи", когда пользователь осуществляет вэб-серфинг и поиск информации в WWW, а также просмотр и загрузку графической и мультимедийной информации.
На рисунке представлено распределение числа TCP-соединений в зависимости от количества пакетов (включая SYN, ACK и др.) в соединении.
Из анализа этого распределения следует, что более половины всех соединений (66%) состоят из обмена менее чем 20-ю пакетами с суммарным трафиком меньше 10 Кб (рис. слева внизу). Исходя из того, что в протоколе TCP для соединения используется трехэтапное квитирование (то есть три пакета), для завершения соединения требуется от одного (в случае использования RESET) до четырех пакетов (в случае использования FIN и ACK). Также учитывая использование пакетов подтверждения приема (ACK) и объема команды запроса GET протокола HTTP, получается, что в указанных соединениях непосредственно передача данных осуществляется с помощью менее чем 10-ти пакетов.
Следовательно, можно заключить, что данные соединения завершаются в фазе медленного запуска (Slow Start) протокола TCP и не успевают перейти в фазу предотвращения перегрузки (Congestion Avoidance). Причем доля таких соединений составляет от 50 до 85% в зависимости от поведения пользователя (рис. слева посередине). На верхнем рисунке справа представлено суммарное количество пакетов в TCP-соединениях в зависимости от объема передаваемой информации.
Рисунок наглядно иллюстрирует известный феномен "мышей и слонов", то есть в то время как большинство соединений имеет малый трафик ("мыши"), основная доля пакетов в интернет-трафике принадлежит незначительному количеству соединений с большим объемом передаваемых данных ("слоны").
Обращает на себя внимание точка пересечения (90 Кб) статистических распределений TCPсоединений и суммарного количества пакетов в данных соединениях в зависимости от трафика, которую (точку) в данном случае можно условно определить как границу между "мышами" и "слонами". Причем данное значение оказывается достаточно близким к пороговой величине, отмечаемой рядом авторов и равной 100 Кб. Однако необходимо отметить, что подобная граница может использоваться лишь для условной классификации соединений по их количеству и передаваемому трафику. Выбор порога и критериев для определения "слонов" в целях распределения нагрузки в интернете требует комплексного подхода с учетом последующей стабильности данных соединений.
Быстрый транспорт для вэб
Итак, средний объем вэб-сессий достаточно мал, и между успешными загрузками страницы, инициированными клиентом, зачастую имеется пауза, определяемая временем размышления пользователя (в среднем 15 секунд). Эти особенности передачи вэб-трафика плохо взаимодействуют со свойствами протокола TCP.
А теперь рассмотрим пять методов ускорения коротких передач данных: TCP c разделенным пассивным мониторингом сети (TCP/Shared Pаssive Network Discovery – TCP/SPAND), быстрый запуск ТСР (TCP fast start), медленный запуск TCP, адаптированный к сети (network adaptive TCP slow start), большое исходное окно (larger initial window) и приоритетное обслуживание коротких передач (см. табл.).
Анализ интернет-трафика показывает, что характеристики соединения между клиентом и сервером являются стабильными в диапазоне от нескольких до десятков минут и идентичны характеристикам других соседних узлов. На основании этого была разработана архитектура SPAND, которая определяет сетевые характеристики посредством разделенных пассивных измерений от набора хостов. Основная идея этого метода заключается в следующем: клиенты передают сетевую статистику серверу характеристик (performance server) путем отправки отчетов о характеристиках (performance reports), и данный сервер обобщает собранную информацию для оценки дальнейшего состояния сети.
В алгоритме TCP/SPAND информация о характеристиках сети разделена между многими совмещенными хостами для оценки равномерного распределения сетевых ресурсов на каждое из соединений. На основании такой оценки и объема передаваемой информации передатчик TCP определяет оптимальный исходный размер окна перегрузки. Вместо выполнения медленного запуска он использует схему, задающую скорость для плавной отправки пакетов в своем исходном окне перегрузки. Когда все пакеты в исходном окне отправлены, передатчик переключается на стандартный сценарий TCP.
Суммарное количество пакетов в TCP-соединениях в зависимости от объема передаваемой информации
Статистическое распределение числа TCP-соединений и статистическое распределение суммарного количества пакетов в данных TCP- соединениях в зависимости от объема передаваемой информации
Использование метода быстрого запуска основано на том, что параметры состояния сети, определяющие доступную полосу пропускания, имеют тенденцию оставаться стабильными в течение неопределенного периода, который по длительности значительно превосходит обычные паузы (время размышления пользователя) во время интерактивной сессии вэб, и таким образом разумно инициировать быстрый запуск после подобной паузы. Метод быстрого запуска позволяет TCP-соединениям, особенно тем, в которых передаются небольшие объемы информации с паузами, повторно использовать информацию недавнего прошлого вместо повторения каждый раз процедуры медленного запуска.
Алгоритм адаптированного медленного запуска TCP обращается к истории предыдущих соединений, чтобы определить доступный объем сетевых ресурсов. Методика сетевых измерений идентична той, что используется в TCP/SPAND. На основании оценки доступной полосы пропускания и объема передаваемой информации алгоритм выбирает один из трех методов передачи. Использование большого исходного окна уменьшает количество времени, необходимое для того, чтобы достигнуть значения размера окна перегрузки приемника. Такая экономия времени может быть существенной для коротких передач данных, но для длительных передач этот выигрыш во времени не так значим, поскольку в данном случае влияние фазы медленного запуска на общую продолжительность передачи незначительно.
Изучение протокола TCP позволяет выявить следующие факторы, влияющие на эффективность передачи небольших объемов данных:
- протокол TCP медленно увеличивает свою скорость передачи до максимально допустимой. Таким образом, окно передачи устанавливается минимально возможным независимо от реально допустимого значения;
- протокол TCP связывает алгоритм защиты от ошибок с алгоритмом управления перегрузкой. Потеря пакета определяется либо по истечении времени повторной передачи, либо по получении последовательности двойных подтверждений. Как правило, повторная передача после тайм-аута может серьезно снизить скорость передачи протокола TCP. Для коротких соединений, у которых большую часть времени величина окна перегрузки относительно мала и недостаточно пакетов, чтобы активировать механизм двойных подтверждений, потеря пакетов всегда требует тайм-аута для обнаружения;
- протокол TCP всегда основывается на собственных выборках пакетов, чтобы установить соответствующее значение тайм-аута повторной передачи RTO (Retransmission TimeOut). Для первых пакетов установления соединения (SYN, SYN-ACK) и для первого пакета данных, когда еще нет данных выборки, TCP использует значение исходного тайм-аута ITO (Initial TimeOut) в качестве RTO. Рекомендованное значение ITO равно трем секундам и используется в большинстве современных операционных систем. Некоторые ранние системы используют значение, равное шести секундам. Потеря таких пакетов ведет к серьезному снижению эффективности доставки коротких передач из-за продолжительного тайм-аута.
По этим причинам короткие передачи, как правило, проигрывают продолжительным в борьбе за полосу пропускания узкого участка сети. Метод приоритетного обслуживания коротких передач данных основывается на обеспечении приоритетов коротким передачам с помощью алгоритма активного управления очередью AQM (Active Queue Management) внутри сети.
Данный метод использует архитектуру дифференцированных услуг DiffServ (Differentiated Services), чтобы классифицировать потоки на короткие и длинные в оконечных точках сети. В состав этой архитектуры входят оконечные и магистральные маршрутизаторы. Оконечные маршрутизаторы выполняют задачи разделения потоков по классам обслуживания, а магистральные осуществляют управление потоками на основе этой информации. Сравнивая данные методы с TCP/NewReno (наиболее распространенной версией протокола TCP) и учитывая результаты моделирования, полученные с помощью сетевого имитатора ns2 (network simulator), можно составить сравнительную таблицу (см. табл.).
Подводя итоги
Произошедшие в последние годы перемены – стремительный рост интернет-аудитории, переход от версии 1.0 протокола HTTP к версии 1.1 с более широкими возможностями, изменение вэб-контента и расширение его мультимедийной части (видео, музыка), появление новых технологий вэб-дизайна (баннеры, динамическое создание страниц и т. д.), применение пользователями менеджеров загрузки – требуют качественного и количественного анализа изменений в вэб-трафике, а также внедрения новых механизмов транспортного протокола TCP. Проанализировав полученные результаты, можно сказать, что, во-первых, рассмотренные методы позволяют значительно ускорить передачу небольших объемов данных, а во-вторых, наибольший выигрыш в сокращении времени передачи обеспечивают методы, использующие информацию о состоянии сети и размере передаваемого файла (TCP/SPAND, медленный запуск TCP, адаптированный к сети).