Оглавление 1 Постановка задачи 2 Введение 3 Построение

advertisement
Оглавление
1 Постановка задачи .......................................................................................................................... 2
2 Введение .......................................................................................................................................... 2
3 Построение модели сети передачи данных ( СПИ ) .................................................................... 2
4 Алгоритмы расчёта устойчивости к отказам ............................................................................... 3
4.1 Метод монте-карло.................................................................................................................. 3
4.2 Подсчёт математического ожидания ..................................................................................... 4
4.3 Min-cost flow ............................................................................................................................ 4
5 Проветка адекватности разработанной методики ....................................................................... 4
6 Программная реализация ............................................................................................................... 5
6.1 Описание программной модели ............................................................................................. 5
6.2 Алгоритмы маршрутизации ................................................................................................... 6
6.3 Проведение экспериментов .................................................................................................... 6
6.4 Пользовательский интерфейс для запуска экспериментов ................................................. 7
6.5 Описание макропараметров эксперимента ........................................................................... 7
7 Результаты ....................................................................................................................................... 7
1 Постановка задачи
Задание № 8. «Выбор и оценка показателей технической готовности сетей
передачи данных (Исследовательская работа)».
В задании требуется разработать методику комплексной оценки технической
готовности сетей обмена данными с коммутацией пакетов, для которых отказ или сбой
одного из узлов (локальных сетей) лишь частично нарушает работоспособность. В состав
типового узла включаются оконечные системы (автоматизированные рабочие места
абонентов сети) и телекоммуникационный сервер (маршрутизатор), выполняющий
доведение данных до узла получателя. Техническая готовность для отдельного абонента
определяется как процент времени, в течение которого имеется техническая возможность
ведения обмена данными с другим абонентом.
2 Введение
Как известно, СПИ состоят из набора узлов ( компьютеров, роутеров ... ), соединённых
некоторыми каналами передачи данных ( витая пара, оптоволокно, электромагнитное поле ...
). Случается так, что узлы СПИ иногда отказывают, перестают выполнять свои функции.
Однако часто получается так, что сбой в работе нескольких узлов не приводит к смерти всей
сети в целом. Целью данной работы является разработка методики определения степени
готовности сети к сбою отдельных узлов. По ходу работы будет построена математическая
модель СПИ и разработан алгоритм, оценивающий степень готовности. Так же будет
приведён способ проверки адекватности алгоритма.
3 Построение модели сети передачи данных ( СПИ )
Как уже упоминалось ранее, СПИ представляет из себя набор узлов и набор связей
между узлами. Существует математический аппарат, который хорошо подходит для
моделирования подобных систем – теория графов. Пусть сеть представляет из себя пару
объектов: Net= ⟨V , E ⟩ , где V – множество вершин графа ( узлов СПИ ), а E – множество
пар: E = {⟨ai , bi ⟩ ,∣a i ,b i ∈V } - соединения между узлами. Однако в множестве V есть
вершины разного типа: компьютеры, обменивающиеся данными и роутеры, передающие
данные. Таким образом Net= ⟨ PC , Rout ,V = PC∪ Rout , E ⟩ .
Теперь необходимо учесть то, что узлы сети иногда работают некорректно. То есть в
модель необходимо добавить некоторую функцию надёжности узла. Показателем
надёжности узла будем считать пару чисел: ⟨ p , t ⟩ , p – вероятность бесперебойной работы
узла в течении фиксированного времени t 0 , t – время, необходимое на ремонт узла. Выберем
t 0 , равный времени передачи пакета данных между узлами, для простоты будем считать, что
это
время
одинаково
для
любой
пары
соединённых
узлов.
:V
ℝ∗
ℝ
Net=
⟨
PC
,
Rout
,V
=
PC∪
Rout
,
E
,
t
,
⟩
0
Итого:
, где
, результатом действия
⟨
p
,
t
⟩
и будет пара
.
В модель СПИ необходимо добавить ещё один элемент: алгоритм маршрутизации
Net= ⟨ PC , Rout ,V = PC∪ Rout , E , t0 , , TrafAlg ⟩ . TrafAlg – совокупность
пакетов:
алгоритмов прошивки роутеров, определяющая по какому соединению передать пакет
дальше и как вести себя с соседями, которые вышли из строя.
Финально получаем, что моделью СПИ будем считать граф с двумя типами вершин:
персональный компьютер и роутер, связь между вершинами означает, что два узла
соединены линией связи. Задана функция надёжности узлов и алгоритм маршрутизации. По
сети ходят пакеты, t 0 - время между посещением пакета двух соседних узлов в пути
доставки. Для простоты t 0 будем считать постоянной для любой пары узлов, но можно
показать, что методику можно распространить и на случай t a ,b . Целью исследования будет
разработка метода оценки степени устойчивости сети к сбоям в отдельных узлах.
4 Алгоритмы расчёта устойчивости к отказам
В задании критерий устойчивости был определён, как процент времени, в течение
которого имеется техническая возможность ведения обмена данными с другим абонентом.
Так как отказы узлов сети являются вероятностными событиями, то имеет смысл вести речь
о ожидаемом проценте времени бесперебойной связи между двумя узлами-компьютерами.
4.1 Метод монте-карло
Наиболее простым способом получения результата является непосредственное
моделирование процесса доставки пакетов. Отметим сразу, что в этом методе нам
потребуется генератор случайных, или псевдослучайных чисел. Выбираем два узлакомпьютера, устойчивость связи между которыми мы хотим оценить: a и b. В процессе
моделирования будем периодически посылать пакеты от a к b.
Будем
поддерживать
следующую
структуру
данных:
массив
double [ N ]invalidTime , где N =∣V∣ - время, которое узлу осталось быть в состоянии отказа (
время до починки ). Если в ячейке записано 0.0, то узел работает исправно. С
периодичностью t 0 для каждой вершины подбрасывается монетка, которая с вероятностью
vi
p записывает в i-ю ячейку
v i t ( моделирует сбой в i-м узле ). Считаем, что у
нас есть deamon-поток, который во время моделирования сам уменьшает ячейки
invalidTime[ ] ( моделирует процесс починки ). Пакеты могут проходить только по корректно
работающим узлам. Если пакет был направлен в некорректный узел, то в зависимости от
алгоритма маршрутизации, он либо пропадает, либо перенаправляется по другому пути.
Сначала замерим T etalon - время прохождения пакета в идеальном случае, когда никаких
сбоев нет. Далее будем проводить серию экспериментов с возможностью возникновения
сбоев. В каждом эксперименте a отсылает пакет b. Если T k ≤ T bound = 2∗ T etalon , где T k - время в
k-м эксперименте то k-й эксперимент назовём успешным, иначе считаем, что связь в сети
была нестабильна. В итоге в нашем распоряжении будет два числа: K success и K total количество успешных и проведённых экспериментов соответственно. По закону больших
K success
K success
Q Net , при K total ∞ .
чисел отношение K
стремится к искомой нами величине: K
total
total
Отметим, что выбор T bound = 2∗ T etalon - условный, в качестве T bound можно выбрать и какойлибо другой разумный ограничитель. Более того, можно выбрать и другой разумный
критерий успешности передачи пакета. Способ подсчёта Монте-карло останется
корректным.
Преимуществом данного метода является его простота. Недостатком метода является
его трудоёмкость: с ростом требований к точности результата, необходимое количество
экспериментов растёт экспоненциально. Тем не менее метод годится для оценки
стабильности сети, или для сравнения с другими методами.
4.2 Подсчёт математического ожидания
Говоря о математическом ожидании, необходимо определить вероятностное
пространство, вероятности событий и случайную величину. Вероятностным пространством
будут данные, выдаваемые генератором случайных чисел. Считаем, что при каждом запросе
генератор выдаёт 1 и 0 с равной вероятностью. Случайная величина IsStab равна 1 в случае
успешного эксперимента ( стабильной связи ) и 0 иначе. Тогда готовность сети будет
оцениваться как: Q Net= E IsStab = 1∗ P связь стабильна 0∗ P связь не стабильна .
В общем случае, при абстрактном алгоритме маршрутизации и абстрактном критерии
стабильной связи, задача слишком сложна. Но в некоторых частных случаях решить её
можно. Например, допустим, что алгоритм маршрутизации абсолютно оптимален: он знает
структуру всей сети и умеет заглядывать в будущие значения генератора случайных чисел.
Тогда алгоритм маршрутизации будет выбирать кратчайший путь, который не будет сбоить
во время доставки. В этом случае нам достаточно перебрать все пути, которыми можно
доставить пакет менее чем за время T bound = 2∗ T etalon и найти вероятность того, что вдоль
хотябы одного пути можно доставить пакет без сбоев.
Предположение о том, что алгоритм маршрутизации обеспечит оптимальный путь
может быть оправдано: современные роутеры стремятся доставить пакет по оптимальному
или близкому к оптимальному пути. Однако предположение о том, что роутер может
заглядывать в будущее выглядит сказочным. Возможно от этого предположения получится
уйти, но ситуация требует дополнительного математического анализа.
Преимуществом данного способа является то, что трудоёмкость вычислений не зависит
от требования к точности экспоненциально. Однако очевидны и недостатки: сущственные
ограничения при выборе алгоритма маршрутизации.
4.3 Min-cost flow
Существует математический аппарат для анализа графа по рёбрам которого требуется
что-либо доставлять (в данном случае пакеты). Граф каждому ребру которого приписывается
пропускная способность и пропускная плотность называется сетью. Вероятность сбоя на
ребре можно интерпретировать, как стоимость прохождения пакета по ребру. В этом случае
нам требуется провести поток заданной величины от пользователя a (истока) к пользователю
b (стоку) и при этом сэкономить стоимость. Чем ниже цена (вероятность сбоя), тем в
большей степени сеть устойчива к сбоям. Построение такого потока можно производить при
помощи алгоритма min-cost-flow.
Рассматриваемый метод является альтернативным способом оценки устойчивости СПИ
к сбоям. Но в этом методе не учитывается такой пункт модели СПИ, как алгоритм
маршрутизации. Однако указанная методика может быть полезной при сравнении с другими
способами.
5 Проветка адекватности разработанной методики
В разделе “Алгоритмы расчёта устойчивости к отказам” настоящей работы было
приведено три различных способа оценки устойчивости СПИ. Критерием адекватности
методик может послужить то, как хорошо результаты оценок соответствуют друг другу.
6 Программная реализация
В процессе выполнения данной работы, была разработана (см. пункт 3 настоящей
работы) и программно реализована компьютерная модель СПИ.
6.1 Описание программной модели
Программная модель СПИ представлена набором узлов: объектов, реализующих
интерфейс INode:
public interface INode {
public List<IOutcome> getOutcomes();
public Set<INetPackage> getActivPackages();
public boolean receivePackage(INetPackage pkg);
public boolean ping();
}
метод getOutcomes() возвращает список исходящих соединений узла (соединений по
которым сообщения могут передаваться наружу). Метод getActivPackages()
возвращает список пакетов, которые в данном узле ожидают отправления.
receivePackage(INetPackage pkg) – вызывается, когда данному узлу передаётся пакет.
Далее если пакет предназначался для данного узла, то пакет принимается, в противном
случае пакет начинает ждать дальнейшей отправки. ping() – возвращает true, если узел
функционирует корректно и false, если произошёл сбой.
Интерфейс исходящего соединения выглядит так:
public interface IOutcome {
public INode getDestination();
}
Единственный его метод, getDestination()
соединение.
возвращает узел, в который ведёт
Каждый узел может быть либо компьютером, тогда он реализует интерфейс
IСomputer, либо хабом, тогда он реализует интерфейс IHub.
public interface IComputer extends INode {
public void addPackagesListener(IPackagesListener pkgListener);
public void removePackagesListener(IPackagesListener pkgListener);
}
public interface IHub extends INode {
public void addErrorPeriod(int additionErrorSteps);
public int getRemaindErrorPeriod();
}
Методы add/removePackagesListener(…) предназначены для того, чтобы по ходу
эксперимента
можно
было
следить
за
доставляемыми
пакетами.
addErrorPeriod(int additionErrorSteps) – увеличивает время, которое хабу
осталось находиться в состоянии сбоя на величину additionErrorSteps.
Отличие между IСomputer и IHub состоит в том, что IСomputer может только
отправлять пакеты от себя лично и не может служить промежуточным звеном. А IHub
занимается только тем, что пересылает чужие пакеты, является только промежуточным
звеном.
Целью исследования является изучение процесса доставки пакетов по сети. При
помощи интерфейса IPackage в компьютерной модели представляется сетевой пакет.
public interface INetPackage {
public IComputer getGoalDestination();
}
getGoalDestination() – возвращает компьютер, пункт назначения.
6.2 Алгоритмы маршрутизации
Как упоминалось в пункте 3 настоящей работы, в модель СПИ входит ещё и такой
элемент, как TrafAlg – алгоритм маршрутизации пакетов. В программной модели способ
маршрутизации пакетов абстрагируется интерфейсом:
public interface IPackagesTransportAlgorithm {
public void doTransporting(INode fromNode);
}
При вызове метода doTransporting(INode
рассылки пакетов из узла fromNode.
fromNode)
производится один шаг
В ходе исследования было реализовано два алгоритма маршрутизации:
TotalBroadcastPkgsTransAlg и SmartOutcomeChooseAlgorithm. Первый
(TotalBroadcastPkgsTransAlg) реализует самый простой алгоритм маршрутизации,
пересылает пакеты абсолютно всем соседям, кроме того от которого этот пакет получен
(кажеццо домашняя сетка так и делает). Однако такой алгоритм пригоден только для сетей
без циклов.
Алгоритм SmartOutcomeChooseAlgorithm реализует ситуацию, когда каждый
хаб хранит некоторый кеш вида: если пункт назначения пакета равен computer1, то
пересылать нужно на соседний узел neighbor1. Если информации о пункте назначения в
кеше нет, то происходит пересылка всем соседям. По ходу работы информация в кешах
изменяется. Узлы делятся друг с другом информацией о том, какой пункт назначения к ним
ближе всего, а СПИ, в итоге самообучается. Такой алгоритм маршрутизации способен
работать, в том числе и с циклическими сетями.
Основные исследования проводились с СПИ с циклами и с алгоритмом
SmartOutcomeChooseAlgorithm. Мотивация такого решения приведена в пункте 7
настоящей работы.
6.3 Проведение экспериментов
В данном пункте будет приведено общее описание сценария проведения эксперимента.
В первом этапе эксперимента производится генерация СПИ по макропараметрам сети
(показателю связности сети, среднему количеству соседей …, описание параметров см. в
6.5). Далее происходит самообучение сети: запускается пересылка пакетов между
случайными компьютерами сети, сбои не моделируются. Через некоторое время хабы
нужным образом настроят свои кеши.
Далее происходит моделирование сбоев в сети: каждый хаб на каждом шаге с
определённой вероятностью выходит из строя. По сети отправляются контрольные пакеты,
программный агент – наблюдатель замеряет среднее время прохождения пакетов при
наличии и отсутствии сбоев.
Однако в реальной ситуации по СПИ, как правило, происходит передача данных не
только между контрольными компьютерами, многие компьютеры параллельно
обмениваются данными. Поэтому во время проведения эксперимента действует
программный агент, который периодически отправляет пакеты “шума”. Время прохождения
этих пакетов не замеряется. Действия этого агента лишь моделируют загруженность сети.
Ставится ряд экспериментов, в которых варьируются некоторые параметры. Собранная
информация в виде графиков показывается пользователю.
Отдельно стоит выделить эксперимент с расчетом Min-cost flow. Это особый
показатель, характеризующий устойчивость СПИ к сбоям. Чем выше показатель, тем больше
готовность. Расчет этого показателя реализован в статическом методе класса
MincostflovAlg. Подробнее см. в пункте 4.3.
6.4 Пользовательский интерфейс для запуска экспериментов
Пользовательский интерфейс состоит из двух областей. Слева находится панель,
позволяющая менять параметры эксперимента, справа находится панель со вкладками.
Каждая вкладка содержит график(и) эксперимента. Подробнее о содержании и семантике
вкладок см. В пункте 7 настоящей работы.
6.5 Описание макропараметров эксперимента
noisePackagesPerStep – среднее количество пакетов “шума” (см. 6.3) за 1 шаг
моделирования;
noisePackagesPerStepBegin, noisePackagesPerStepEnd,
noisePackagesPerStepStep – используются для проведения эксперимента,
показывающего влияние загруженности СПИ на устойчивость к сбоям;
transportAlgCacheSize
–
размер
кеша
узлов
СПИ
(см.
описание
SmartOutcomeChooseAlgorithm);
errorPeriod – время, которое узел будет восстанавливаться после сбоя;
errorPeriodBegin, errorPeriodEnd, errorPeriodStep – используются для
проведения эксперимента, показывающего влияние показателя errorPeriod на
устойчивость к сбоям;
errorAppearPercen – вероятность возникновения ошибки в узле за один шаг
эксперимента;
errorAppearPercentBegin, errorAppearPercentEnd,
errorAppearPercentStep
–
используются
для
проведения
эксперимента,
показывающего влияние показателя errorAppearPercen на устойчивость к сбоям;
neighborCount – показатель связанности сети: количество соседей;
neighborCountBegin, neighborCountEnd, neighborCountStep – используются
для проведения эксперимента, показывающего влияние показателя neighborCount на
устойчивость к сбоям;
flowCostLimit – стоимость максимального потока в сети.
7 Результаты
Отметим, что в ходе исследования устойчивость СПИ к сбоям оценивалась не как
процент времени в течении которого пользователь может стабильно обмениваться данными,
а как изменение времени передачи пакетов по сети. Мотивация этого решения такова: трудно
предъявить строгий критерий того, что значит стабильный обмен данными. Пакет может
идти в полтора, в два раза дольше, в десять раз дольше, или пропасть вовсе. Критерий:
пакеты хоть как-то доставляются плохо подходит в данной ситуации. Так как соединение с
малой эффективностью тоже является нестабильным.
По мнению авторов, гораздо более адекватной характеристикой устойчивости СПИ к
сбоям является то, как сильно снижается её эффективность при появлении сбоев отдельных
узлов.
Как отмечалось ранее, эксперименты проводились с алгоритмом маршрутизации
SmartOutcomeChooseAlgorithm, так как только этот алгоритм подходит для сетей с
циклами. Исследование ациклических сетей на устойчивость к сбоям менее интересно, так
как в этом случае любой сбой приводит к потери связности, что исключает стабильную
передачу данных.
От предложенного способа оценки через подсчёт математического ожидания в ходе
исследования пришлось отказаться. Любой алгоритм маршрутизации, который может
разругивать циклы в СПИ слишком сложен для такого анализа.
Про mincostflow:
Как видно из графика-результата численного эксперимента с ростом количества
соседей, время прохождения пакетов по сети при наличии сбоев снижается, а показатель
min-cost flow – монотонно возрастает. Это согласуется с практическими соображениями: чем
больше соседей, тем выше связность и больше возможностей восстановиться после сбоя.
Download