Имитационное моделирование погрешности экспериментального исследования распределения длин путей между узлами глобальной сети (Александра Кононова, LVEE-2019) — различия между версиями

Материал из 0x1.tv

;{{SpeakerInfo}}: {{Speaker|Александра Кононова}}
<blockquote>
The experiment, aimed at finding the distribution of path lengths between nodes in the global network and estimation of parameters of that distribution is described. At particular, described the method of measurement of path length from node <math display="inline">\alpha</math> to the node <math display="inline">\beta</math> with traceroute utility of the GNU/Linux system, and limitations on the selection of nodes <math display="inline">\alpha</math> and <math display="inline">\beta</math>, imposed by traceroute. Measurements results are given and analyzed. Simulation model of this experiment was developed to test the experiment validity in the determination of distribution parameters in the global network. This model is also described. It is shown that the global network could not be described by Barabási-Albert model, but it could be described with some approximation by developed and proposed a pre-fractal model.
</blockquote>

{{VideoSection}}
{{vimeoembed|366009452|800|450}}
<!-- {{youtubelink|}} -->

{{SlidesSection}}
[[File:Имитационное моделирование погрешности экспериментального исследования распределения длин путей между узлами глобальной сети (Александра Кононова, LVEE-2019).pdf|left|page=-|300px]]

{{----}}

== Thesis ==

The experiment, aimed at finding the distribution of path lengths between nodes in the global network and estimation of parameters of that distribution is described. At particular, described the method of measurement of path length from node <math display="inline">\alpha</math> to the node <math display="inline">\beta</math> with traceroute utility of the GNU/Linux system, and limitations on the selection of nodes <math display="inline">\alpha</math> and <math display="inline">\beta</math>, imposed by traceroute. Measurements results are given and analyzed. Simulation model of this experiment was developed to test the experiment validity in the determination of distribution parameters in the global network. This model is also described. It is shown that the global network could not be described by Barabási-Albert model, but it could be described with some approximation by developed and proposed a pre-fractal model.

== Введение ==

Разработка эффективных сетевых приложений невозможна без сведений о структуре сети, в которой они будут работать. Так, в 2011 году, для получения параметров методики МУчОС<ref>Кононова А. И., Городилов А. В., Шаньгин В. Ф. Особенности передачи данных в децентрализованных пиринговых сетях // Изв. вузов. Электроника (ВАК). 2012. No 6(98). С. 95.</ref> передачи мультимедийных данных с учётом особенностей сети, был начат эксперимент по оценке распределения длин путей сетевого уровня модели TCP/IP глобальной сети.

Определим понятие длины пути и распределения длин путей. Из-за свойств стека протоколов TCP/IP, если от узла <math display="inline">\alpha</math> к узлу <math display="inline">\beta</math> в принципе возможна передача данных, маршрут передачи данных на сетевом уровне будет единственным. Пусть это <math display="inline">\alpha \to \alpha_1 \to \ldots \to \alpha_{k-1} \to \beta</math>.

Тогда длина <math display="inline">s(\alpha, \beta)</math> пути от узла <math display="inline">\alpha</math> к узлу <math display="inline">\beta</math>  количество <math display="inline">k</math> пересылок узел-узел в этом маршруте. При этом <math display="inline">s(\alpha_{k-1}, \beta) = 1</math>, ... <math display="inline">s(\alpha_1, \beta) = k-1</math>.

Со временем глобальная сеть изменяет свою структуру, и как маршрут передачи данных, так и его длина <math display="inline">s(\alpha, \beta)</math> могут изменяться. Кроме того, из-за особенностей маршрутизации может быть <math display="inline">s(\alpha, \beta) \neq s(\beta, \alpha)</math>.

Таким образом, под распределением длин путей графа <math display="inline">G</math> понимается ряд чисел <math display="inline">\zeta(x)</math>, показывающий, как часто длина <math display="inline">x</math> встречается среди всех возможных путей в <math display="inline">G</math>: <math display="block">\zeta(x) = p \big(
s(\alpha,\beta)=x   |   \alpha,\beta \in G
\big).</math> Непосредственно измерить распределение длин путей <math display="inline">\zeta(x)</math> для глобальной сети (то есть измерить и проанализировать длины <math display="inline">s(\alpha, \beta)</math> для всех возможных пар <math display="inline">(\alpha, \beta)</math>) невозможно как из-за её гигантских размеров, так и из-за отсутствия в стеке TCP/IP средств для измерения расстояния между двумя произвольно взятыми узлами.

== Выбираем мензурку ==

Для исследования маршрутов сетевого уровня в GNU/Linux предназначена утилита traceroute. При запуске в командной строке узла <math display="inline">\alpha</math> команды результатом будет маршрут передачи данных <math display="inline">\alpha \to \alpha_1 \to \ldots \to \alpha_{k-1} \to \beta</math>, причём одна строка вывода traceroute соответствует одному узлу маршрута. Далее путём синтаксического анализа можно определить длину пути <math display="inline">s(\alpha, \beta)</math>.

Таким образом, для измерения длины пути <math display="inline">s(\alpha, \beta)</math> необходимо иметь право на запуск программ на узле <math display="inline">\alpha</math> (в дальнейшем будем называть его корневым, рис. [[#ei_rdp|[ei_rdp]]]) и знать IP-адрес или имя узла <math display="inline">\beta</math> (будем называть его оконечным).


[[File:2019_miet_kai_gav_ei_rdp|frame|none|alt=|caption Схема измерений выборочных длин путей]]

<span id="ei_rdp" label="ei_rdp">[ei_rdp]</span>

Также необходима возможность соединения <math display="inline">\alpha</math> с <math display="inline">\beta</math>, то есть оконечный узел <math display="inline">\beta</math> должен иметь белый IP-адрес либо находиться в одной подсети с <math display="inline">\alpha</math>.

Ограничения на выбор оконечного узла гораздо мягче, чем для корневого. Соответственно, количество возможных оконечных узлов может быть намного больше (множество оконечных узлов <math display="inline">Q=\{\beta_1, \beta_2, \ldots \beta_n \}</math> на рис. [[#ei_rdp|[ei_rdp]]]).

Соответственно, задавшись парой из корневого узла <math display="inline">\alpha</math> и множества оконечных узлов <math display="inline">Q</math> и измеряя при помощи traceroute расстояния <math display="inline">s(\alpha, \beta_j)</math> от <math display="inline">\alpha</math> до каждого из оконечных <math display="inline">\beta_j \in Q</math>, можно получить некоторую оценку распределения длин путей <math display="inline">\zeta(x)</math> глобальной сети. Эта оценка зависит от выбора корневого узла, от множества оконечных узлов и от времени (от текущей конфигурации глобальной сети).

В ходе этого эксперимента были сформированы три различных множества оконечных узлов (<math display="inline">P, R, T</math> размерами 564, 5222 и 540 уникальных белых IP-адресов соответственно) и три корневых узла (<math display="inline">A, H, M</math>).

Так как все оконечные узлы имели белые IP-адреса, а корневые  серые, каждый маршрут передачи данных <math display="inline">\alpha \to \alpha_1 \to \ldots \to \alpha_{k-1} \to \beta</math> от корневого узла <math display="inline">\alpha</math> до оконечного узла <math display="inline">\beta</math> делился на две части: маршрут от корневого узла <math display="inline">\alpha</math> до шлюза <math display="inline">\alpha_{gw}</math> его провайдера <math display="inline">\alpha \to \ldots \to \alpha_{gw}</math> и маршрут от шлюза провайдера корневого узла до оконечного узла <math display="inline">\alpha_{gw}\to \ldots\to \alpha_{k-1} \to \beta</math>.

Для каждой пары корневого узла <math display="inline">\alpha</math> и оконечного узла <math display="inline">\beta</math> получались два значения длины пути: полная длина <math display="inline">\widetilde{s}(\alpha, \beta) = k</math>, включающая подсеть провайдера корневого узла и скорректированная длина <math display="inline">{s}(\alpha, \beta) = k-gw</math>, исключающая подсеть провайдера корневого узла (то есть включающая только пересылки между узлами с белыми IP-адресами).

После окончания измерений множества полученных значений длин путей <math display="inline">\widetilde{s}</math> и <math display="inline">s</math> обрабатывались GNU Octave. Соответственно, для каждой пары корневого узла <math display="inline">\alpha</math> и множества оконечных узлов <math display="inline">Q</math> получались две оценки распределения длин путей: <math display="inline">\widetilde{\zeta}(x)</math>, включающая подсеть провайдера корневого узла и <math display="inline">\zeta(x)</math>, исключающая подсеть провайдера корневого узла.

== Оцениваем ==

От корневых узлов <math display="inline">A</math> и <math display="inline">M</math> было выполнено по четыре разнесённых во времени измерения расстояний до каждого из наборов <math display="inline">P</math>, <math display="inline">R</math>, <math display="inline">T</math>; от узла <math display="inline">H</math>, из-за ограниченного времени доступа  только по одному измерению до каждого из наборов <math display="inline">P</math>, <math display="inline">R</math>, <math display="inline">T</math>. Таким образом, всего было выполнено 27 измерений и получено 27 оценок <math display="inline">\widetilde{\zeta}(x)</math> распределения длин путей, включающих подсеть провайдера корневого узла (рис. [[#zplot_2x1|[zplot_2x1]]], а)


[[File:2019_miet_kai_gav_zplot_2x1|frame|none|alt=|caption Экспериментально полученное распределение длин путей: а) включая подсеть провайдера корневого узла, б) исключая подсеть провайдера корневого узла ]]

<span id="zplot_2x1" label="zplot_2x1">[zplot_2x1]</span>

и 27 оценок <math display="inline">\zeta(x)</math> распределения длин путей, исключающих подсеть провайдера корневого узла (рис. [[#zplot_2x1|[zplot_2x1]]], б).

В соответствии с множеством оконечных узлов, корневым узлом и порядковым номером измерения обозначены как <math display="inline">PA_0, PA_1, PA_2,</math> <math display="inline">PA_3,</math> <math display="inline">PH_0, PM_0, \ldots PM_3,</math> <math display="inline">RA_0, \ldots RM_3, TA_0, \ldots TM_3</math> и перечислены на рис. [[#5x2_experiment_moments|[5x2_experiment_moments]]] именно в таком порядке.


[[File:2019_miet_kai_gav_5x2_experiment_moments|frame|none|alt=|caption Характеристики экспериментально полученных оценок распределения длин путей: а) включая подсеть провайдера корневого узла, б) исключая подсеть провайдера корневого узла ]]

<span id="5x2_experiment_moments" label="5x2_experiment_moments">[5x2_experiment_moments]</span>

Рис. [[#5x2_experiment_moments|[5x2_experiment_moments]]], а) показывает разброс характеристик (моды <math display="inline">Mo</math>, среднего <math display="inline">\mu</math>, среднеквадратического отклонения <math display="inline">\sigma</math>, асимметрии <math display="inline">A</math> и эксцесса <math display="inline">E</math>) оценок <math display="inline">\widetilde{\zeta}(x)</math> распределения длин путей, включающих подсеть провайдера корневого узла. Ось абсцисс соответствует номеру измерения, как сказано выше; границы между измерениями, соответствующими множествам оконечных узлов <math display="inline">P</math>, <math display="inline">R</math>, <math display="inline">T</math> показаны линиями сетки. Слева от оси ординат разброс показан в виде ящика с усами (усы соответствуют минимальному и максимальному значениям, края ящика  первой и третьей квартилям, линия внутри ящика  медиане, кружок  среднему значению характеристики).

Рис. [[#5x2_experiment_moments|[5x2_experiment_moments]]], б) аналогично показывает разброс характеристик оценок <math display="inline">\zeta(x)</math> распределения длин путей, исключающих подсеть провайдера корневого узла.

Значение эксцесса <math display="inline">E</math> здесь и далее вычисляется по формуле с коррекцией на три (так, чтобы эксцесс нормального распределения был бы равен нулю).

Видно, что значения асимметрии и эксцесса оценок распределения длин путей (как <math display="inline">\widetilde{\zeta}(x)</math>, так и <math display="inline">\zeta(x)</math>) существенно больше нуля.

== Поверяем ==

Насколько корректны полученные оценки <math display="inline">\zeta(x)</math>? Для их проверки было сгенерировано некоторое количество графов <math display="inline">G</math>, размеры которых позволяют:

* рассчитать расстояние <math display="inline">s(\alpha, \beta)</math> для всех возможных пар узлов <math display="inline">\alpha, \beta \in G</math> и рассчитать истинное (полное) распределение длин путей <math display="inline">\zeta(x)</math>;
* выполнить имитацию эксперимента и оценить <math display="inline">\zeta(x)</math> по заданным корневому узлу <math display="inline">r</math> и множеству оконечных узлов <math display="inline">Q</math>.

Размеры множеств <math display="inline">Q</math>, использованных в экспериментальном исследовании, составляют <math display="inline">500-5000</math> узлов. Соответственно, минимальным количеством вершин в <math display="inline">G</math> в расчётах было <math display="inline">|G| = 10^3</math> узлов. Максимальным размером <math display="inline">G</math>, при котором можно выполнить расчёт менее чем за месяц  <math display="inline">|G| = 10^6</math> узлов.

Граф <math display="inline">G</math> из <math display="inline">|G|</math> вершин представлялся в памяти компьютера в виде сжатой матрицы смежности, то есть вектором <math display="inline">\rho_G</math> из <math display="inline">|G|</math> списков, каждый из которых соответствует вершине графа и содержит номера смежных с ней вершин.

Для расчёта длин путей использован поиск в ширину, позволяющего для заданной вершины <math display="inline">\alpha \in G</math> рассчитать расстояния до всех прочих вершин графа <math display="inline">G</math>. Таким образом, результат соответствует экспериментальным измерениям для корневой вершины <math display="inline">\alpha</math> и множества оконечных вершин <math display="inline">Q=G</math>, включающего все вершины графа. Сложность поиска в ширину для представления графа в виде <math display="inline">\rho_G</math> равна <math display="inline">O(|G| +|E_G|)</math>, где <math display="inline">|E_G|</math>  количество рёбер<ref>Седжвик Р. Фундаментальные алгоритмы на С++: Алгоритмы на графах. СПб: Диа Софт, 2003. 1136 с. </ref>. Таким образом, при расчёте полного распределения длин путей все вершины <math display="inline">\alpha \in G</math> графа поочерёдно рассматриваются в качестве корневых, и сложность возрастает в <math display="inline">|G|</math> раз. Для ускорения расчёта использован компилируемый язык C++ (стандарт C++11) и распараллеливание OpenMP.

Кроме полного распределения длин путей <math display="inline">\zeta(x)</math>, для каждого графа <math display="inline">G</math> рассчитывались ещё несколько оценок <math display="inline">\zeta(x)</math> по разным парам <math display="inline">(r,Q)</math> корневой узел-множество оконечных узлов. Эти оценки обозначались <math display="inline">\zeta_i(x)</math>.

Корневая вершина <math display="inline">r</math>, как и оконечные вершины <math display="inline">\beta_j \in Q</math> для каждого <math display="inline">i</math> выбиралась случайно. Количество оконечных вершин <math display="inline">|Q|</math> во время предварительных вычислений варьировалось в диапазоне <math display="inline">500-5000</math> узлов. Так как не было выявлено существенного различия результатов, для итогового моделирования было принято <math display="inline">|Q|=500</math>.

Таким образом, аналогом выполненных в эксперименте измерений (оценивания распределения длин путей глобальной сети по нескольким корневым узлам и нескольким выборкам оконечных узлов) является один прогон модели, включающий генерацию графа <math display="inline">G</math> (модели сети), расчёт полного распределения длин путей <math display="inline">\zeta(x)</math> в нём и его оценок <math display="inline">\zeta_i(x)</math> (моделей экспериментальных оценок). Вид полного <math display="inline">\zeta(x)</math> и его оценок <math display="inline">\zeta_i(x)</math> для одного из прогонов модели представлен на рис. [[#rdp_fullpart_ba|[rdp_fullpart_ba]]]).


[[File:2019_miet_kai_gav_rdp_fullpart_ba|frame|none|alt=|caption Распределение длин путей между узлами (жирная линия  полное <math display="inline">\zeta(x)</math>, тонкие  его оценки <math display="inline">\zeta_i(x)</math>) в дереве Барабаши&quot;– Альберт]]

<span id="rdp_fullpart_ba" label="rdp_fullpart_ba">[rdp_fullpart_ba]</span>

Целью вычислительного эксперимента является сопоставление полного <math display="inline">\zeta(x)</math> и его оценок <math display="inline">\zeta_i(x)</math>, а также их характеристик, в частности, асимметрии и эксцесса.

Так как граф <math display="inline">G</math> является моделью сетевого уровня сети, использующей стек протоколов TCP/IP, <math display="inline">G</math> должен быть связным деревом. Сложность поиска в ширину для дерева составляет <math display="inline">O(|G|)</math>, таким образом, сложность расчёта всех возможных путей составляет <math display="inline">O(|G|^2)</math>.

Были использованы несколько алгоритмов для генерации связного дерева <math display="inline">G</math>. Прежде всего исследована знаменитая модель Барабаши&quot;– Альберт<ref>Jeong H., Tombor B., Albert R. et al. The Large-Scale Organization of Metabolic Networks. 2000. https://arxiv.org/pdf/cond-mat/0010278.pdf</ref>  (типичные результаты прогона модели, то есть полное <math display="inline">\zeta(x)</math> и его оценки, показаны на рис. [[#rdp_fullpart_ba|[rdp_fullpart_ba]]]).

Полное <math display="inline">\zeta(x)</math> для деревьев Барабаши&quot;– Альберт очень похоже на дискретизацию нормального. Все они унимодальны. Большинство оценок <math display="inline">\zeta_i(x)</math> рис. [[#rdp_fullpart_ba|[rdp_fullpart_ba]]] выглядит более островершинными, чем полное <math display="inline">\zeta(x)</math>, но менее островершинными, чем распределения, полученные экспериментально (рис. [[#zplot_2x1|[zplot_2x1]]], а, б). Рассмотрим характеристики полных распределений и их оценок подробнее (рис. [[#5_moments_ba|[5_moments_ba]]]).


[[File:2019_miet_kai_gav_5_moments_ba|frame|none|alt=|caption Характеристики полного распределения длин путей в дереве Барабаши&quot;– Альберт (чёрные точки) и разброс характеристик его оценок (ящики с усами)]]

<span id="5_moments_ba" label="5_moments_ba">[5_moments_ba]</span>

Так как один прогон модели соответствует множеству оценок, а в процессе исследования было выполнено множество прогонов, визуализировать характеристику каждой конкретной оценки аналогично рис. [[#5x2_experiment_moments|[5x2_experiment_moments]]] нерационально. Соответственно, один прогон на рис. [[#5_moments_ba|[5_moments_ba]]] соответствует одной вертикали (по оси абсцисс откладывается номер смоделированного графа; измерения сгруппированы по количеству <math display="inline">|G|</math> вершин в графе). Для каждого прогона и каждой характеристики показан разброс значений характеристики <math display="inline">\zeta_i(x)</math> в виде ящика с усами (аналогично показанному слева на рис. [[#5x2_experiment_moments|[5x2_experiment_moments]]]); кроме того, чёрной точкой на рис. [[#5_moments_ba|[5_moments_ba]]] показано значение характеристики <math display="inline">\zeta(x)</math> (для экспериментальных данных его аналог  характеристика <math display="inline">\zeta(x)</math> глобальной сети  недоступна и поэтому отсутствует на рис. [[#5x2_experiment_moments|[5x2_experiment_moments]]]).

Видно, что асимметрия полных распределений <math display="inline">\zeta(x)</math> для деревьев Барабаши&quot;– Альберт несколько больше нуля, но не достигает полученных в результате эксперимента значений <math display="inline">3-4.5</math>. Асимметрия оценок <math display="inline">\zeta_i(x)</math> может быть как больше, так и (что чаще) ещё меньше асимметрии <math display="inline">\zeta(x)</math>. С ростом количества <math display="inline">|G|</math> вершин в графе асимметрия как <math display="inline">\zeta(x)</math>, так и <math display="inline">\zeta_i(x)</math> не растёт.

Эксцесс полных распределений <math display="inline">\zeta(x)</math> для деревьев Барабаши&quot;– Альберт близок к нулю. Эксцесс оценок <math display="inline">\zeta_i(x)</math> может быть как больше (что чаще), так и меньше эксцесса <math display="inline">\zeta(x)</math>, при этом ни одна из этих величин не достигает полученных в результате эксперимента значений <math display="inline">20-30</math>. С ростом количества <math display="inline">|G|</math> вершин в графе эксцесс как <math display="inline">\zeta(x)</math>, так и <math display="inline">\zeta_i(x)</math> не растёт.

Погрешность оценивания асимметрии достигает 100%, а эксцесса  1000% (последнее обусловлено близостью к нулю эксцесса <math display="inline">\zeta(x)</math>).

Таким образом, различие между асимметрией и эксцессом экспериментально полученных для сетевого уровня глобальной сети данных и распределениями длин путей в деревьях Барабаши&quot;– Альберт обусловлено не случайными отклонениями, не методикой измерения и не отличием в размерах (асимметрия и эксцесс мало изменяются при росте <math display="inline">|G|</math>).

Соответственно, различие должно быть обусловлено моделью роста дерева. В исследовании были рассмотрены несколько моделей роста. Наиболее перспективной выглядит предфрактальная модель, описывающая рост сети как рост множества связанных друг с другом подсетей (рис. [[#rdp_fullpart_pfk_32|[rdp_fullpart_pfk_32]]] и [[#6_moments_pfk_32|[6_moments_pfk_32]]]).


[[File:2019_miet_kai_gav_rdp_fullpart_pfk_32|frame|none|alt=|caption Распределение длин путей между узлами (жирная линия  полное <math display="inline">\zeta(x)</math>, тонкие  его оценки <math display="inline">\zeta_i(x)</math>) в предфрактальном дереве]]

<span id="rdp_fullpart_pfk_32" label="rdp_fullpart_pfk_32">[rdp_fullpart_pfk_32]</span>


[[File:2019_miet_kai_gav_6_moments_pfk_32|frame|none|alt=|caption Характеристики полного распределения длин путей в предфрактальном дереве (чёрные точки) и разброс характеристик его оценок (ящики с усами)]]

<span id="6_moments_pfk_32" label="6_moments_pfk_32">[6_moments_pfk_32]</span>

Вид полного <math display="inline">\zeta(x)</math> и его оценок <math display="inline">\zeta_i(x)</math> для одного из прогонов модели представлен на рис. [[#rdp_fullpart_pfk_32|[rdp_fullpart_pfk_32]]]. На рис. [[#6_moments_pfk_32|[6_moments_pfk_32]]] этот прогон  первый в группе <math display="inline">|G|=10^5</math>.

Так как подсети формируются при росте графа случайным образом, полные <math display="inline">\zeta(x)</math> для предфрактальных деревьев более разнообразны, чем для деревьев Барабаши&quot;– Альберт. Некоторые из них не унимодальны. Соответственно, на рис. [[#6_moments_pfk_32|[6_moments_pfk_32]]] в числе прочих характеристик показано и количество выраженных максимумов <math display="inline">\zeta(x)</math>. В остальном организация рис. [[#6_moments_pfk_32|[6_moments_pfk_32]]] аналогична рис. [[#5_moments_ba|[5_moments_ba]]].

Распределение <math display="inline">\zeta(x)</math> на рис. [[#rdp_fullpart_pfk_32|[rdp_fullpart_pfk_32]]] отличается от рис. [[#5_moments_ba|[5_moments_ba]]] наличием толстого правого хвоста. В целом, в зависимости от соотношения размеров подсетей <math display="inline">\zeta(x)</math> предфрактального дерева может иметь как более или менее толстый правый хвост, аналогичный рис. [[#rdp_fullpart_pfk_32|[rdp_fullpart_pfk_32]]], так и  один или несколько ярко выраженных побочных максимумов (второй прогон в группе <math display="inline">|G|=10^5</math>), либо, наоборот, может иметь тонкий хвост, как для <math display="inline">\zeta(x)</math> деревьев Барабаши&quot;– Альберт (первый прогон в группе <math display="inline">|G|=10^6</math>  в процессе роста сформировалась только одна крупная подсеть).

Соответственно, разброс как характеристик <math display="inline">\zeta(x)</math> для разных прогонов, так и их оценок <math display="inline">\zeta_i(x)</math> для одного прогона модели на рис. [[#6_moments_pfk_32|[6_moments_pfk_32]]] больше, чем на рис. [[#5_moments_ba|[5_moments_ba]]].

Асимметрия и эксцесс <math display="inline">\zeta(x)</math> первого прогона в группе <math display="inline">|G|=10^6</math> (с единственной крупной подсетью) ожидаемо близки к асимметрии и эксцессу <math display="inline">\zeta(x)</math> деревьев Барабаши&quot;– Альберт, а их оценки имеют столь же маленький разброс.

Асимметрия полного <math display="inline">\zeta(x)</math> второго прогона в группе <math display="inline">|G|=10^5</math> (с двумя конкурирующими подсетями, то есть практически одинаковыми максимумами) положительна, при этом асимметрии её оценок могут принимать и отрицательные значения. Эксцесс полного <math display="inline">\zeta(x)</math> и большинство его оценок отрицательны, так как два близких максимума суммарно массивнее хвостов распределения.

Для всех прочих прогонов асимметрия и эксцесс положительны, а их оценки в подавляющем большинстве завышены. При этом с ростом <math display="inline">|G|</math> увеличивается и разброс распределений длин путей от прогонов, и абсолютная величина асимметрии и эксцесса.

Погрешность оценивания асимметрии достигает 100%, а эксцесса  500%.

== Заключение ==

Инструментальные средства, стандартные для большинства дистрибутивов GNU/Linux, а также GNU Octave, позволяют выборочно оценить распределение длин путей между узлами в глобальной сети.

Имитационное моделирование позволяет утверждать, что, несмотря на гигантскую погрешность оценивания асимметрии и эксцесса описываемым методом, полученные экспериментальные данные позволяют уверенно утверждать, что сетевой уровень глобальной сети не описывается моделью Барабаши&quot;– Альберт, но может быть в некотором приближении описан разработанной предфрактальной моделью.




{{----}}
[[File:{{#setmainimage:Имитационное моделирование погрешности экспериментального исследования распределения длин путей между узлами глобальной сети (Александра Кононова, LVEE-2019)!.jpg}}|center|640px]]
{{LinksSection}}
* [ Talks page]
<!-- <blockquote>[©]</blockquote> -->


<references/>

[[Категория:LVEE-2019]]
[[Категория:Draft]]

Версия 13:19, 29 октября 2019

Докладчик
Александра Кононова.jpg
Александра Кононова

The experiment, aimed at finding the distribution of path lengths between nodes in the global network and estimation of parameters of that distribution is described. At particular, described the method of measurement of path length from node to the node with traceroute utility of the GNU/Linux system, and limitations on the selection of nodes and , imposed by traceroute. Measurements results are given and analyzed. Simulation model of this experiment was developed to test the experiment validity in the determination of distribution parameters in the global network. This model is also described. It is shown that the global network could not be described by Barabási-Albert model, but it could be described with some approximation by developed and proposed a pre-fractal model.

Видео

Презентация

Thesis

The experiment, aimed at finding the distribution of path lengths between nodes in the global network and estimation of parameters of that distribution is described. At particular, described the method of measurement of path length from node to the node with traceroute utility of the GNU/Linux system, and limitations on the selection of nodes and , imposed by traceroute. Measurements results are given and analyzed. Simulation model of this experiment was developed to test the experiment validity in the determination of distribution parameters in the global network. This model is also described. It is shown that the global network could not be described by Barabási-Albert model, but it could be described with some approximation by developed and proposed a pre-fractal model.

Введение

Разработка эффективных сетевых приложений невозможна без сведений о структуре сети, в которой они будут работать. Так, в 2011 году, для получения параметров методики МУчОС[1] передачи мультимедийных данных с учётом особенностей сети, был начат эксперимент по оценке распределения длин путей сетевого уровня модели TCP/IP глобальной сети.

Определим понятие длины пути и распределения длин путей. Из-за свойств стека протоколов TCP/IP, если от узла к узлу в принципе возможна передача данных, маршрут передачи данных на сетевом уровне будет единственным. Пусть это .

Тогда длина пути от узла к узлу — количество пересылок узел-узел в этом маршруте. При этом , ... .

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

Таким образом, под распределением длин путей графа понимается ряд чисел , показывающий, как часто длина встречается среди всех возможных путей в : Непосредственно измерить распределение длин путей для глобальной сети (то есть измерить и проанализировать длины для всех возможных пар ) невозможно как из-за её гигантских размеров, так и из-за отсутствия в стеке TCP/IP средств для измерения расстояния между двумя произвольно взятыми узлами.

Выбираем мензурку

Для исследования маршрутов сетевого уровня в GNU/Linux предназначена утилита traceroute. При запуске в командной строке узла команды результатом будет маршрут передачи данных , причём одна строка вывода traceroute соответствует одному узлу маршрута. Далее путём синтаксического анализа можно определить длину пути .

Таким образом, для измерения длины пути необходимо иметь право на запуск программ на узле (в дальнейшем будем называть его корневым, рис. [ei_rdp]) и знать IP-адрес или имя узла (будем называть его оконечным).


Файл:2019 miet kai gav ei rdp
caption Схема измерений выборочных длин путей

[ei_rdp]

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

Ограничения на выбор оконечного узла гораздо мягче, чем для корневого. Соответственно, количество возможных оконечных узлов может быть намного больше (множество оконечных узлов на рис. [ei_rdp]).

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

В ходе этого эксперимента были сформированы три различных множества оконечных узлов ( размерами 564, 5222 и 540 уникальных белых IP-адресов соответственно) и три корневых узла ().

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

Для каждой пары корневого узла и оконечного узла получались два значения длины пути: полная длина , включающая подсеть провайдера корневого узла и скорректированная длина , исключающая подсеть провайдера корневого узла (то есть включающая только пересылки между узлами с белыми IP-адресами).

После окончания измерений множества полученных значений длин путей и  обрабатывались GNU Octave. Соответственно, для каждой пары корневого узла и множества оконечных узлов получались две оценки распределения длин путей: , включающая подсеть провайдера корневого узла и , исключающая подсеть провайдера корневого узла.

Оцениваем

От корневых узлов и  было выполнено по четыре разнесённых во времени измерения расстояний до каждого из наборов , , ; от узла , из-за ограниченного времени доступа — только по одному измерению до каждого из наборов , , . Таким образом, всего было выполнено 27 измерений и получено 27 оценок распределения длин путей, включающих подсеть провайдера корневого узла (рис. [zplot_2x1], а)


Файл:2019 miet kai gav zplot 2x1
caption Экспериментально полученное распределение длин путей: а) включая подсеть провайдера корневого узла, б) исключая подсеть провайдера корневого узла

[zplot_2x1]

и 27 оценок  распределения длин путей, исключающих подсеть провайдера корневого узла (рис. [zplot_2x1], б).

В соответствии с множеством оконечных узлов, корневым узлом и порядковым номером измерения обозначены как и перечислены на рис. [5x2_experiment_moments] именно в таком порядке.


Файл:2019 miet kai gav 5x2 experiment moments
caption Характеристики экспериментально полученных оценок распределения длин путей: а) включая подсеть провайдера корневого узла, б) исключая подсеть провайдера корневого узла

[5x2_experiment_moments]

Рис. [5x2_experiment_moments], а) показывает разброс характеристик (моды , среднего , среднеквадратического отклонения , асимметрии и эксцесса ) оценок распределения длин путей, включающих подсеть провайдера корневого узла. Ось абсцисс соответствует номеру измерения, как сказано выше; границы между измерениями, соответствующими множествам оконечных узлов , , показаны линиями сетки. Слева от оси ординат разброс показан в виде ящика с усами (усы соответствуют минимальному и максимальному значениям, края ящика — первой и третьей квартилям, линия внутри ящика — медиане, кружок — среднему значению характеристики).

Рис. [5x2_experiment_moments], б) аналогично показывает разброс характеристик оценок распределения длин путей, исключающих подсеть провайдера корневого узла.

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

Видно, что значения асимметрии и эксцесса оценок распределения длин путей (как , так и ) существенно больше нуля.

Поверяем

Насколько корректны полученные оценки ? Для их проверки было сгенерировано некоторое количество графов , размеры которых позволяют:

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

Размеры множеств , использованных в экспериментальном исследовании, составляют узлов. Соответственно, минимальным количеством вершин в  в расчётах было узлов. Максимальным размером , при котором можно выполнить расчёт менее чем за месяц — узлов.

Граф из  вершин представлялся в памяти компьютера в виде сжатой матрицы смежности, то есть вектором из  списков, каждый из которых соответствует вершине графа и содержит номера смежных с ней вершин.

Для расчёта длин путей использован поиск в ширину, позволяющего для заданной вершины рассчитать расстояния до всех прочих вершин графа . Таким образом, результат соответствует экспериментальным измерениям для корневой вершины и множества оконечных вершин , включающего все вершины графа. Сложность поиска в ширину для представления графа в виде равна , где — количество рёбер[2]. Таким образом, при расчёте полного распределения длин путей все вершины графа поочерёдно рассматриваются в качестве корневых, и сложность возрастает в  раз. Для ускорения расчёта использован компилируемый язык C++ (стандарт C++11) и распараллеливание OpenMP.

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

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

Таким образом, аналогом выполненных в эксперименте измерений (оценивания распределения длин путей глобальной сети по нескольким корневым узлам и нескольким выборкам оконечных узлов) является один прогон модели, включающий генерацию графа (модели сети), расчёт полного распределения длин путей в нём и его оценок (моделей экспериментальных оценок). Вид полного и его оценок для одного из прогонов модели представлен на рис. [rdp_fullpart_ba]).


Файл:2019 miet kai gav rdp fullpart ba
caption Распределение длин путей между узлами (жирная линия — полное , тонкие — его оценки ) в дереве Барабаши"– Альберт

[rdp_fullpart_ba]

Целью вычислительного эксперимента является сопоставление полного и его оценок , а также их характеристик, в частности, асимметрии и эксцесса.

Так как граф является моделью сетевого уровня сети, использующей стек протоколов TCP/IP, должен быть связным деревом. Сложность поиска в ширину для дерева составляет , таким образом, сложность расчёта всех возможных путей составляет .

Были использованы несколько алгоритмов для генерации связного дерева . Прежде всего исследована знаменитая модель Барабаши"– Альберт[3]  (типичные результаты прогона модели, то есть полное и его оценки, показаны на рис. [rdp_fullpart_ba]).

Полное для деревьев Барабаши"– Альберт очень похоже на дискретизацию нормального. Все они унимодальны. Большинство оценок рис. [rdp_fullpart_ba] выглядит более островершинными, чем полное , но менее островершинными, чем распределения, полученные экспериментально (рис. [zplot_2x1], а, б). Рассмотрим характеристики полных распределений и их оценок подробнее (рис. [5_moments_ba]).


Файл:2019 miet kai gav 5 moments ba
caption Характеристики полного распределения длин путей в дереве Барабаши"– Альберт (чёрные точки) и разброс характеристик его оценок (ящики с усами)

[5_moments_ba]

Так как один прогон модели соответствует множеству оценок, а в процессе исследования было выполнено множество прогонов, визуализировать характеристику каждой конкретной оценки аналогично рис. [5x2_experiment_moments] нерационально. Соответственно, один прогон на рис. [5_moments_ba] соответствует одной вертикали (по оси абсцисс откладывается номер смоделированного графа; измерения сгруппированы по количеству вершин в графе). Для каждого прогона и каждой характеристики показан разброс значений характеристики в виде ящика с усами (аналогично показанному слева на рис. [5x2_experiment_moments]); кроме того, чёрной точкой на рис. [5_moments_ba] показано значение характеристики (для экспериментальных данных его аналог — характеристика глобальной сети — недоступна и поэтому отсутствует на рис. [5x2_experiment_moments]).

Видно, что асимметрия полных распределений для деревьев Барабаши"– Альберт несколько больше нуля, но не достигает полученных в результате эксперимента значений . Асимметрия оценок может быть как больше, так и (что чаще) ещё меньше асимметрии . С ростом количества вершин в графе асимметрия как , так и  не растёт.

Эксцесс полных распределений для деревьев Барабаши"– Альберт близок к нулю. Эксцесс оценок может быть как больше (что чаще), так и меньше эксцесса , при этом ни одна из этих величин не достигает полученных в результате эксперимента значений . С ростом количества вершин в графе эксцесс как , так и  не растёт.

Погрешность оценивания асимметрии достигает 100%, а эксцесса — 1000% (последнее обусловлено близостью к нулю эксцесса ).

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

Соответственно, различие должно быть обусловлено моделью роста дерева. В исследовании были рассмотрены несколько моделей роста. Наиболее перспективной выглядит предфрактальная модель, описывающая рост сети как рост множества связанных друг с другом подсетей (рис. [rdp_fullpart_pfk_32] и [6_moments_pfk_32]).


Файл:2019 miet kai gav rdp fullpart pfk 32
caption Распределение длин путей между узлами (жирная линия — полное , тонкие — его оценки ) в предфрактальном дереве

[rdp_fullpart_pfk_32]


Файл:2019 miet kai gav 6 moments pfk 32
caption Характеристики полного распределения длин путей в предфрактальном дереве (чёрные точки) и разброс характеристик его оценок (ящики с усами)

[6_moments_pfk_32]

Вид полного и его оценок для одного из прогонов модели представлен на рис. [rdp_fullpart_pfk_32]. На рис. [6_moments_pfk_32] этот прогон — первый в группе .

Так как подсети формируются при росте графа случайным образом, полные для предфрактальных деревьев более разнообразны, чем для деревьев Барабаши"– Альберт. Некоторые из них не унимодальны. Соответственно, на рис. [6_moments_pfk_32] в числе прочих характеристик показано и количество выраженных максимумов . В остальном организация рис. [6_moments_pfk_32] аналогична рис. [5_moments_ba].

Распределение на рис. [rdp_fullpart_pfk_32] отличается от рис. [5_moments_ba] наличием толстого правого хвоста. В целом, в зависимости от соотношения размеров подсетей предфрактального дерева может иметь как более или менее толстый правый хвост, аналогичный рис. [rdp_fullpart_pfk_32], так и  один или несколько ярко выраженных побочных максимумов (второй прогон в группе ), либо, наоборот, может иметь тонкий хвост, как для деревьев Барабаши"– Альберт (первый прогон в группе — в процессе роста сформировалась только одна крупная подсеть).

Соответственно, разброс как характеристик для разных прогонов, так и их оценок для одного прогона модели на рис. [6_moments_pfk_32] больше, чем на рис. [5_moments_ba].

Асимметрия и эксцесс первого прогона в группе (с единственной крупной подсетью) ожидаемо близки к асимметрии и эксцессу деревьев Барабаши"– Альберт, а их оценки имеют столь же маленький разброс.

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

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

Погрешность оценивания асимметрии достигает 100%, а эксцесса — 500%.

Заключение

Инструментальные средства, стандартные для большинства дистрибутивов GNU/Linux, а также GNU Octave, позволяют выборочно оценить распределение длин путей между узлами в глобальной сети.

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



Примечания и ссылки

  • [ Talks page]


  1. Кононова А. И., Городилов А. В., Шаньгин В. Ф. Особенности передачи данных в децентрализованных пиринговых сетях // Изв. вузов. Электроника (ВАК). 2012. No 6(98). С. 95.
  2. Седжвик Р. Фундаментальные алгоритмы на С++: Алгоритмы на графах. СПб: Диа Софт, 2003. 1136 с.
  3. Jeong H., Tombor B., Albert R. et al. The Large-Scale Organization of Metabolic Networks. 2000. https://arxiv.org/pdf/cond-mat/0010278.pdf