Введение 4
Обзор подходов к кэшированию 7
1. Используемые технологии 12
1.1. Библиотека pcap и использующие ее утилиты 12
1.2. Инструменты для обработки аргументов командной строки 13
1.3. Selenium Webdriver 13
1.4. Xvfb и PyVirtualDisplay 14
1.5. Netfilter Framework и сетевые пакеты в ядре Linux .... 14
1.6. VirtualBox и окружение виртуальной машины 16
2. Описание решения 17
2.1. Устройство кэша 17
2.2. Анализатор TCP RE 18
2.3. Генерация и анализ pcap-файлов 20
2.4. Модули ядра TCP RE 20
3. Эксперименты 22
3.1. Кэширование различных типов трафика 22
3.2. Загруженность системы 24
3.2.1. Описание стенда 24
3.2.2. Измерение нагрузки на канал связи 24
4. Заключение 27
Список литературы 28
Несмотря на огромное количество существующих Интернет-ресурсов, зачастую возникает ситуация, когда много людей обращаются к одному источнику в сети, запрашивая одинаковую информацию. Это приводит к тому, что часть сетевой инфраструктуры занимается передачей идентичных данных[1]. Кэширование трафика — один из подходов к улучшению этого аспекта, позволяющий уменьшить нагрузку на каналы связи.
На данный момент активно применяются технологии кэширования, работающие на уровнях прикладных протоколов, в особенности кэширование HTTP[14] ввиду популярности этого вида трафика[15]. Вместе с этим развиваются более общие идеи кэширования, основанные на работе с пакетами протокола транспортного уровня TCP. Ввиду этой особенности они способны кэшировать данные разных протоколов прикладного уровня. В этом состоят принципы работы пакетного кэширования TCP RE (англ. Redundancy Elimination — устранение избыточности). В статье “Comparison of Caching Strategies in Modern Cellular Backhaul Networks” [17] сравниваются различные подходы к кэшированию на примере трафика мобильных сетей, при этом TCP RE показывает лучший результат. Однако остается ряд открытых вопросов по этой технологии:
1. Насколько эффективно кэшируются различные виды трафика?
2. Как реализовать кэширующие компоненты, где их разумно будет применять?
3. Насколько кэширование будет загружать систему, снижая пропускную способность канала?
Цель данной работы — исследовать кэширование TCP RE и дать развернутые ответы на эти вопросы. В связи с этим программный комплекс состоит из трех компонент: анализатора кэширования TCP RE;системы генерации и анализа файлов захвата трафика; модулей для ОС Linux, реализующих кэширование TCP RE.
Анализатор предствляет из себя приложение пользовательского уровня. Удобен тем, что позволяет захватывать и анализировать пакеты и из открытого онлайн-соединения и из файлов с записями сессий (pcap- файлы). Последняя функциональность очень важна, т. к. исследование одной и той же сессии через переиспользование pcap-файла упрощает процесс измерения эффективности кэширования.
Автомазированная система генерирации файлов захватов трафика и их последующего анализа упрощает процесс выявления закономерностей в сетевых пакетах, передающих одинаковые данные, позволяет легко корректировать сценарии сессий.
Устройство кэша в виде двух модулей применимо для снижения нагрузки на канал между двумя серверами (на которых они соответственно установлены). Реализация таких кэширующих компонент для ОС Linux и эксперимент на стенде позволят измерить загруженность системы.
Эксперименты направлены на измерение эффективности кэширования, поэтому в ходе их проведения важны два типа показателей: те, которые характеризуют выигрыш от применения алгоритма и те, которые показывают нагрузку на канал связи. Их вычисление требует различных подходов, поэтому они будут измерены отдельно друг от друга.
Выигрышем от применения схемы кэширования TCP RE разумно
считать долю сэкономленного трафика. Как ее вычислить? Можно рас- подразумеваются данные протокола прикладного уровня сетевого пакета), и выбрать в качестве модели вычисления получение одного и того же ресурса (веб-страницы, файла) два раза подряд — самый очевидный сценарий, при котором одинаковые пакеты должны возникать. Но недостаток такой статистики состоит в том, что данные существенно разных размеров одинаково влияют на ее величину. Это может существенно повлиять на результаты, если в ходе эксперимента возникает какой-то “шумовой” трафик (например, от других одновременно работающих приложений). Возможна фильтрация кэшируемых пакетов по IP-адресам, однако этот способ фактически будет зависим от позиции проведения эксперимента и работы DNS-серверов, разрешающих имя запрашиваемого хоста при использовании CDN (англ. Content Delivery Network — сеть доставки контента)[2]. Другой подход состоит в изменении статистики путем добавления весов. Если в качестве веса пакета взять его размер и вычислять показатель ^, где Sr — суммарный размер повторившихся пакетов, St — суммарный размер всех прошедших пакетов, то влияние побочного трафика небольших размеров уменьшится до приемлемого уровня. И в целом такая модель больше сооветствует поведению пользователя — обычно программы, работающие в фоновом режиме, не отключаются при целевом посещении Интернет-ресурсов. Таким образом, эксперименты этого класса состоят в первичном и повторном обращении к ресурсу и измерении выбранной меры экономии трафика.
Нагрузку на канал связи можно оценить путем сравнения двух пропускных способностей: во время сессии с выключенными модулями ядра, осуществляющими TCP RE кэширование, и во время аналогичной по действиям сессии, но уже с включенным функционалом. Таким образом можно оценить затраты на процесс поиска пакета в кэше и изменения данных.
В результате исследовательской работы были решены следующие задачи:
1. Создан анализатор кэширования TCP RE
2. Спроектирована и реализована система для автоматизированной генерации pcap-файлов и их анализа
3. Разработаны модули ядра, реализующие кэширование TCP RE
4. Выполнены измерения эффективности кэширования TCP RE:
• Эффективности кэширования различных видов трафика:
- Веб: 29.9 ± 0.8%
— Видео: 28.4 ± 0.9%
— Загрузка файлов: 27.1 ± 2.0%
• Максимальное падение средней пропускной способности составило 10%, в среднем — 5%.
[1] Cisco San Jose. CA, “Cisco Visual Networking Index: Global Mobile Data Traffic Forecast Update”, 2012-2017 // Cisco Public Information. — 2013.
[2] Wein Joel M, Kloninger John Josef, Nottingham Mark C et al. Content delivery network (CDN) content server request handling mechanism with metadata framework support. — 2007. — US Patent 7,240,100.
[3] Doyle Ronald P. et al. The trickle-down effect: Web caching and server request distribution // Computer Communications. — 2002. — Vol. 25, no. 4. — P. 345-356.
[4] Fall Kevin R, Stevens W Richard. TCP/IP illustrated, volume 1: The protocols. — addison-Wesley, 2011.
[5] Ihm Sunghwan. Pushing the Limits of Web Caching: Eliminating Redundant Network Traffic // URL http://www.krnet.or.kr/board/data/dprogram/1794/B2-1- KRnet2013.pdf (дата обращения 9.05.2016). — 2013.
[6] J. Wang. A survey of web caching schemes for the internet // ACM SIGCOMM Computer Communication Review.— 1999.— Vol. 29, no. 5. — P. 36-46.
[7] LRFU (least recently/frequently used) replacement policy: A spectrum of block replacement policies / Donghee Lee, Jongmoo Choi, Jong- Hun Kim et al. // IEEE Trans. Comput. — 1996. — Vol. 50, no. 12. — P. 1352-1361.
[8] Linux 2.4 Packet Filtering.— URL: http://www.netfilter.org/ documentation/HOWTO//packet-filtering-HOWTO.html. (дата обращения 17.05.2016).
[9] Manpage of PCAP.— URL: http://www.tcpdump.org/manpages/ pcap.3pcap.html. (дата обращения 28.04.2016).
[10] Manpage of argparse for python 3.— URL: https://docs.python. org/3/library/argparse.html. (дата обращения 10.05.2016).
[11] Mogul Jeffrey C, Deering Steven E. Rfc 1191: Path MTU Discovery // URL https://tools.ietf.org/html/rfc1191 (дата обращения 14.05.2016). — 1990.
[12] Rescorla Eric. Rfc 2818: Http over tls // URL https://tools.ietf.org/html/rfc2818 (дата обращения 12.05.2016).— 2000.
[13] Rfc 1738: Uniform resource locators (URL) / T. Berners-
Lee, L. Masinter, M. McCahill et al. // URL
https://tools.ietf.org/html/rfc1738 (дата обращения 12.04.2016).— 1994.
[14] Rfc 2616: hypertext transfer protocol-http/1.1, 1999 /
Roy Fielding, Jim Gettys, Jeffrey Mogul et al. // URL http://www.rfc.net/rfc2616.html (дата обращения 10.04.2016).— 2009.
[15] Thompson K., Miller G. J., Wilder R. Wide-area Internet traffic patterns and characteristics // Network, iEEE. — 1997.— Vol. 11, no. 6. — P. 10-23.
[16] WebDriver. — URL: https://www.w3.org/TR/webdriver/. (дата обращения 17.05.2016).
... Всего источников –20.