Russian Language English Language

15. Обучающие системы

15.1 ЛАБОРАТОРНАЯ РАБОТА ПО ИССЛЕДОВАНИЮ ВЕРОЯТНОСТНО-ВРЕМЕННЫХ ХАРАКТЕРИСТИК ПРОКСИ-СЕРВЕРА


Экспресс информация

Редколлегия журнала

Подписка на новости

Гостевая книга

Предоставление материалов

Письмо в редакцию

На начало


2015, Номер 2 ( 27)



Place for sale

BC/NW 2015 № 2 (27):15.1

 

Московский Энергетический Институт

(национальный исследовательский университет)

 

Л. И. Абросимов, М. Д. Крамаренко, О. С. Гончаренко

 

Лабораторные работы по исследованию вероятностно-временных характеристик прокси-сервера

2015

Оглавление:

Теоретическая часть

Лабораторная работа №1. Исследование ВВХ прокси-сервера по UDP протоколу.

1.      Пояснение к заданию

1.1.                     Основные сведения по UDP протоколу

1.2.                     Общие характеристики измерительного стенда

1.3.                     Описание комплекса измерительных средств

1.3.1.  SystemTap основные сведения

1.3.2.  Работа с SystemTap

1.4.                     Ознакомление со сценариями исследований

1.5.                     Получение и обработка результатов

2.      Домашняя подготовка

2.1.                     Ознакомление с описанием лабораторной работы

2.2.                     Ознакомиться с UDP протоколом

2.3.                     Ознакомится с SystemTap

3.      Пункты выполнения лабораторной  работы

3.1.                     Часть 1

3.1.1.  Сценарий по определению ВВХ зонда

3.1.2.  Сценарий по определению названий функций и их адресов возврата

3.1.3.  Требования к оформлению результатов

3.2.                     Часть 2

3.2.1.  Сценарий по определению ВВХ для каждой функции при ГВ=0 и ГВ=1

3.2.2.  Сценарий по определению ВВХ для каждой цепочки функций

3.2.3.  Требования к оформлению результатов

4.      Контрольные вопросы

Лабораторная работа №2. Исследование ВВХ прокси-сервера по TCP протоколу.

1.      Краткое пояснение

1.1.                     Основные сведения по TCP протоколу

1.2.                     Конкретные характеристики измерительного стенда

1.3.                     Описание КИС для работы с TCP протоколом

1.4.                     Получение и обработка результатов

2.      Домашняя подготовка

2.1.                     Ознакомление с описанием лабораторной работы

2.2.                     Ознакомиться с TCP протоколом

3.      Пункты выполнения лабораторной  работы

3.1.                     Часть 1

3.2.                     Часть 2

4.      Контрольные вопросы


 

Теоретическая часть

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

Одной из основных характеристик эффективности функционирования ВС является производительность, которая должна оцениваться общим количеством выполненных информационно-вычислительных работ – транзакций.

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

В данном цикле лабораторных работ исследуются вероятностно-временные характеристики прокси-сервера, роль которого выполняет одноядерная ЭВМ, а также протоколы транспортного уровня UDP и TCP. Цель – получение знаний о работающей сетевой подсистеме ядра Linux, а также приобретение навыков работы с программами-трассировщиками, и знаний по установке зондов, для фиксирования критических точек выполнения исследуемого процесса.


 

Лабораторная работа №1

Исследование ВВХ прокси-сервера по UDP протоколу

Рассматриваются сетевая подсистема ядра ОС Linux, производящая посылку получение пакетов по протоколу UDP и использование программы-трассировщик SystemTap.

5.     Пояснение к заданию

Основной задачей измерений характеристик производительности является экспериментальное определение вероятностно-временных характеристик, включающих интервалы времени http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image004.gif и дисперсию http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image006.gif обработки каждым обслуживающим узлом http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image001.gif транзакций соответствующего типа.

Обслуживающий узел http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image001.gif - это модель устройства ВС, свойства которого описываются параметрами и соотношениями, которые соответствуют моделям систем массового обслуживания транзакций с очередями. Обрабатывающие модули, временно сосредотачивающие ресурсы узла для обработки транзакции, назовем элементами http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image002.gif обслуживающего узла http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image001.gif.

Производительность элементов http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image002.gif ВС оценивается набором интервалов времени {http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image003.gif}, которые затрачивает каждый элемент http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image002.gif каждого  обслуживающего узла http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image001.gif при обработке транзакции соответствующего типа.

Производительность узла http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image001.gif ВС оценивается математическим ожиданием времени http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image004.gif и интенсивностью http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image005.gif обработки каждым обслуживающим узлом http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image001.gif транзакции соответствующего типа.

5.1.                    Основные сведения по UDP протоколу

Протокол UDP (User Datagram Protocol) является одним из основных протоколов, расположенных непосредственно над IP. Он предоставляет прикладным процессам транспортные услуги, немногим отличающиеся от услуг протокола IP. Протокол UDP обеспечивает доставку дейтограмм, но не требует подтверждения их получения. Протокол UDP не требует соединения с удаленным модулем UDP ("бессвязный" протокол). К заголовку IP-пакета UDP добавляет поля порт отправителя и порт получателя, которые обеспечивают мультиплексирование информации между различными прикладными процессами, а также поля длина UDP-дейтограммы и контрольная сумма, позволяющие поддерживать целостность данных. Таким образом, если на уровне IP для определения места доставки пакета используется адрес, на уровне UDP - номер порта.

Данные, отправляемые прикладным процессом через модуль UDP, достигают места назначения как единое целое. Например, если процесс-отправитель производит 5 записей в порт, то процесс-получатель должен будет сделать 5 чтений. Размер каждого записанного сообщения будет совпадать с размером каждого прочитанного. Протокол UDP сохраняет границы сообщений, определяемые прикладным процессом. Он никогда не объединяет несколько сообщений в одно и не делит одно сообщение на части. Ниже приведена структура UDP пакета.

Таблица 1.

Биты

0 - 15

16 - 31

0-31

Порт отправителя (Source port)

Порт получателя (Destination port)

32-63

Длина датаграммы (Length)

Контрольная сумма (Checksum)

64-...

Данные (Data)

5.2.                    Общие характеристики измерительного стенда

Стенд состоит из двух ЭВМ, соединенных перекрестным кабелем типа витая пара. Канал связи предоставляет дуплексный режим связи и гарантирует отсутствие коллизий. Первая ЭВМ является приемником-генератором. Вторая ЭВМ выполняет функции прокси-сервера и её характеристики представлены ниже.

·        Процессор                                                    Intel Pentium 4

§  Частота генератора                        101 МГц

§  Частота процессора                       1616 МГц

§  Разрядность                                    32 бита

·        Материнская плата                                                 (rev. 2.2)

§  Чипсет                                             intel i845D

·        Оперативная память

§  Объем                                             1024 МБ

§  Частота работы                              134.7 МГц

·        Сетевая карта

§  Производитель                     Realtek Semiconductor Co.

·        Характеристики программного обеспечения:

§  Название дистрибутива                 Fedora Core 11

§  Версия ядра                                   2.6.29.4-167

§  Разрядность                                   32 бита

В данных  лабораторных работах используются одноядерные компьютеры в качестве прокси-серверов, в связи с тем, что использование многоядерных систем может привести к методическим погрешностям. Что затруднит в дальнейшем проверку правильности выполнения работы.

5.3.                    Описание комплекса измерительных средств

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

Для измерения ВВХ цепочек и стадий необходимо замерить временные параметры выполнения подпрограмм, представляющих функции соответствующих стадий и цепочек. Схема взаимодействия КИС с символьным устройством представлена на рисунке 1

http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image014.gif

Рис. 1. Схема взаимодействия КИС с модулем драйвера символьного устройства.

Модуль КИС является драйвером символьного устройства, поэтому для загрузки модуля КИС в ядро ОС Linux необходимо воспользоваться стандартным инструментарием загрузки модулей ядра ОС Linux. В случае используемой версии и дистрибутива ОС таким средством является системная утилита insmod. Вызов утилиты insmod необходимо производить от имени учетной записи суперпользователя – root из программной оболочки ОС Linux, на экспериментальном стенде программной оболочкой является программа bash.

 

5.3.1. SystemTap основные сведения

SystemTap — это средство, которое позволяет собирать и анализировать информацию о работающей Linux системе. В отличие от встроенных средств, таких как netstat, ps, top, SystemTap был разработан с целью предоставить больше возможностей для сбора и представления информации. SystemTap представляет собой интерфейс командной строки и скриптовый язык программирования. Системные администраторы могут использовать SystemTap для мониторинга и анализа производительности системы, а разработчики программного обеспечения могут использовать SystemTap для анализа поведения приложения в работающей системе.

Основная идея SystemTap состоит в том, чтобы обозначить события и назначить для них обработчики. Во время выполнения скрипта, SystemTap занимается мониторингом событий и, как только произойдет событие, ядро системы выполнит обработчик. Событиями могут быть начало или конец сессии SystemTap, срабатывание таймера и другие. Обработчиком является последовательность скриптовых операторов, которые будут выполнены после срабатывания события. Обычно обработчики извлекают информацию из контекста события или выводят информацию на экран.

Преимуществами SystemTap перед встроенными средствами, является возможность:

1.           установить измерительные зонды непосредственно в ядро ОС;

2.           задавать набор функций, на которые будут устанавливаться зонды;

3.           задавать логику алгоритма работы зонда;

4.           измерять время выполнения функций в тиках процессора, что дает возможность учесть аппаратную реализацию однопроцессорной ЭВМ.

5.3.2. Работа с SystemTap

Перед тем как приступить к работе с SystemTap, необходимо убедится, что на выбранной ЭВМ установлен комплекс. Для тестирования системы необходимо выполнить следующую команду

stap -v -e 'probe vfs.read {printf("readperformed\n"); exit()}'

Если на компьютере установлен и функционирует комплекс, то на экране будет отображено следующая информация:

Pass 1: parsed user script and 45 library script(s) in 340usr/0sys/358real ms.

Pass 2: analyzed script: 1 probe(s), 1 function(s), 0 embed(s), 0 global(s) in

290usr/260sys/568real ms.

Pass 3: translated to C into "/tmp/stapiArgLX/stap_e5886fa50499994e6a87aacdc43cd392_399.c" in

490usr/430sys/938real ms.

Pass 4: compiled C into "stap_e5886fa50499994e6a87aacdc43cd392_399.ko" in

3310usr/430sys/3714real ms.

Pass 5: starting run.

read performed

Pass 5: run completed in 10usr/40sys/73real ms.

После проверки можно приступить к работе с программой.

Синхронные события

Синхронные события привязаны к инструкции в определенном месте в коде ядра.

Примеры синхронных событий:

  • syscall.system_call
  • vfs.file_operation
  • kernel.function("function")
  • module("module").function("function")

Асинхронные события

Асинхронные события не привязаны к определенной инструкции или определенному месту в коде ядра.

Примеры асинхронных событий:

  • begin — начало сессии SystemTap
  • end — конец сессии SystemTap
  • timer.event() — отсчет таймера

Обработчики

Обработчик события заключается в фигурные скобки ({}).

Для вывода на экран используется функция форматного вывода printf («format string\n», arguments), которая схожа с аналогичной функцией в C.

Некоторые функций SystemTap для использования совместно с printf():

  • pid() — ID процесса
  • uid() — ID пользователя
  • execname() — название процесса
  • cpu() — номер процессора

Ниже приведен пример скрипта и  результат его выполнения

Скрипт:

probe syscall.open

{

   printf ("%s(%d) open\n", execname(), pid())

}

Результат:

 vmware-guestd(2206) open

 hald(2360) open

 hald(2360) open

 hald(2360) open

 df(3433) open

 df(3433) open

 df(3433) open

 hald(2360) open

5.4.                    Ознакомление со сценариями исследований

Как говорилось в пункте 1 экспериментальное определение ВВХ, требуется для измерения характеристик производительности прокси-сервера. Для этого нам нужно определить сценарии исследований. Под сценариями подразумеваются серии экспериментов проводимых на лабораторных стендах.

Так как для проведения экспериментов используются ИЗ, то для начала стоит определить какую погрешность в исследования вносит зонд. Для этого нам необходимо определить вероятностно-временные характеристики самого зонда.

После определения ВВХ зонда можно приступить к определению названия функций, и адресов их возврата. Для этого используется программа SystemTap и специально разработанный скрипт, устанавливающий зонды Kprobes на все символьные имена соответствующие маске, указанной в скрипте. При проведении эксперимента зонды Kprobes устанавливаются на все символьные имена, содержащиеся в файлах исходного кода папок «net» и «drivers/net» сетевой подсистемы ядра ОС Linux. В результате проведения экспериментов получены файлы трассировки выполнения обработки экспериментов ядром ОС Linux.

Третий сценарий подразумевает определение ВВХ для каждой функции, выполняемой при ГВ=0 и ГВ=1 при ретрансляции дейтаграмм. Список данных функций будет приведен в приложении 1. Для каждой из подпрограмм необходимо провести две серии экспериментов обработок UDP дейтаграмм, и  получить файлы, содержащие временные отметки вызова и возврата, а так же значение программного счетчика прерываний в момент снятия каждой из меток.

В последнем сценарии определяется ВВХ для каждой цепочки функций при ретрансляции дейтаграмм. Реализация данного сценария отличается выбором подпрограмм функций, с которых начинается выполнение соответствующей цепочки.

Все четыре сценария исследований рассмотренные выше делятся на две лабораторные работы по два академических часа, и выполняются в лабораторном классе на измерительном стенде.

5.5.                    Получение и обработка результатов

В результате проведения экспериментов будут получены файлы трассировки. Для первого сценария необходимо определить математическое ожидание времени http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image016.gif и дисперсия http://network-journal.mpei.ac.ru/ru/24/3/1/article.files/image017.gif выполнения ИЗ. (здесь должно быть описание нахождение требуемых величин)

 По второму сценарию из полученных данных формируется список имен подпрограмм, в котором из списка символьных удалены имена макросов и встроенные подпрограммы. Для этого, полученные в результате эксперимента символьные имена сравниваются с именами, содержащимися в специализированном файле kallsyms. Файл kallsyms содержит информацию о всех символьных именах ядра ОС Linux с пометками, обозначающими типы символьных имен. Для обработки информации используется программа построчной обработки текстовых файлов awk в совокупности со специально разработанным скриптом, реализующим алгоритм поиска и сравнения символьных имен.

В результате обработки формируется список названий подпрограмм, для которых осуществляется операция вызова, следовательно, существует операция и адрес возврата. Для определения адресов возврата, для каждой из подпрограмм списка названий подпрограмм используется скрипт программы SystemTap для получения адреса возврата подпрограммы из стека во время выполнения подпрограммы и скрипт программы awk для генерации скриптов SystemTap для каждой из, выделенных, подпрограмм.

В третьем исследовании в результате проведения двух серий экспериментов, должны быть получены файлы, содержащие временные отметки вызова и возврата, а так же значение программного счетчика прерываний в момент снятия каждой из меток.

Обработка полученных данных состоит из:

1.  определения времени выполнения каждого измерения вычитанием из временной метки возврата временной метки вызова подпрограммы;

2.  фильтрации экспериментов, прерываемых на обработку прерываний;

3.  вычисления математического ожидания и дисперсии каждого эксперимента;

4.  построения гистограмм функции плотности вероятности распределения времени выполнения каждого эксперимента;

5.  вычисления математического ожидания времени выполнения каждой подпрограммы;

6.  вычисления дисперсии времени выполнения каждой подпрограммы.

Для проведения вышеуказанной обработки используются разработанные скрипты для программы awk. Построение графиков можно производить при помощи программы gnuplot.

Обработка результатов четвертого сценария включает в себя определение экспериментального и расчетного математического ожидания времени выполнения каждой цепочки функций на стадиях приема и отправки; вычисления дисперсии времени выполнения каждой цепочки.

2.     Домашняя подготовка

2.1.          Ознакомление с описанием лабораторной работы

2.2.          Ознакомиться с UDP протоколом

2.3.          Ознакомится с SystemTap

3.     Пункты выполнения лабораторной  работы

3.1.                     Часть 1

3.1.1.  Сценарий по определению ВВХ зонда

3.1.2.  Сценарий по определению названий функций и их адресов возврата

3.1.3.  Требования к оформлению результатов

Отчет должен состоять из пунктов выполнения лабораторной работы с приложенными результатами измерений, а также графиков и расчетов. Для составления отчета можно использовать gnuplot (построение графиков), Mathcad.

3.2.                     Часть 2

3.2.1.  Сценарий по определению ВВХ для каждой функции при ГВ=0 и ГВ=1

3.2.2.  Сценарий по определению ВВХ для каждой цепочки функций

3.2.3.  Требования к оформлению результатов

4.      Контрольные вопросы

4.1.                     Что значит, зонд обладает систематической инструментальной погрешностью?

4.2.                     

 

 

 

 

 

Сокращения:

ВВХ – вероятностно-временные характеристики

ЭМВОС – эталонная модель взаимодействия открытых систем

КИС – комплекс измерительных средств

ИЗ – измерительный зонд

Тик – длительность равная времени периода увеличения значения таймера-счетчика на единицу

ГВ – глубина вложенности

ВС – вычислительная сеть

Цепочки  узла – набор функций, выполняемых при обработке транзакции определенным протоколом

Kprobes – измерительных комплекс c использованием программных зондов

 

 

 

Приложение 1


rt_hash

__nf_ct_refresh_acct

dst_release

ipt_do_table

__alloc_skb

__ip_select_ident

pfifo_fast_enqueue

csum_partial_copy_fromiovecend

sk_wake_async

ipqhashfn

skb_pull

unlink_from_unused

__copy_skb_header

nf_ct_deliver_cached_events

__ip_route_output_key  

udp_packet

ip_cork_release

ip_copy_metadata

 

ipt_local_out_hook

 

sock_alloc_send_skb

 

ip_select_ident

 

qdisc_enqueue_root

 

ip_generic_getfrag

 

sock_wmalloc

 

sock_def_write_space

 

ip4_hashfn

 

eth_type_trans

 

ipt_local_in_hook

 

sock_def_readable

 

inet_getpeer

 

__skb_clone

 

ip_route_input

 

ipv4_confirm

 

__netdev_alloc_skb