Описание программной реализации разработанных алгоритмов

Модуль маршрутизации и обеспечения QoS6biJi реализован на языке Pythone виде приложения для контроллера РОХ.Он включает в себя два класса (см. таблицу 5.2):Node (узел сети) и Ant (муравей).

Таблица 5.2 - Описание классов модуля маршрутизации и обеспечения QoS

Название класса

Описание класса

Node (self, neighbors,N, CurrentQueue. pings,currcntCapacity,maxCapacity,IsHost=Falsc)

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

Ant(self,source, destination, weight)

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

На рисунке 5.5 приведена диаграмма классов, нужно заметить, что язык Python поддерживает вложенные функции, которые не учитываются при построении диаграммы классов.

c AntNet.Node

__hlt_(sef, пеіфЬо(8, N. CunentQueue. pngs. cinentCapacity. maxCapacty, IsHost=Fake) m (XintNode

m getLnkState(self)

я» getTravelngTh»e(self. n)

m se)ectNextNode(self. V. destination, Nodes)

?> Isipfsef, (feta)

m 4pdateNode

«? icdateCuiertCapacty(sef, value, n)

X>T

  • maxCapaoty
  • neighbcrs
  • pngs
  • r

t M

  • CurrentQueue
  • isHost
  • cinentCapacty

C ArtNet.Ant

9 _wt_($ef, source, destination, weight) 9' F<»ward(self, Nodes)

>V t we^it

  • count
  • source

» T-

• cuient

t destnation

Рисунок 5.5- Диаграмма классов модуля маршрутизации и обеспечения QoS

Основные методы класса Мосісописаньї в таблице 5.3.

Таблица 5.3 - Описание методов класса Node

Название метода

Описание метода

printNode(self)

Выводит на консоль информацию о данном узле.

gctLinkStatc(sclf)

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

getTravellingTime(self.n)

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

selectNextNode(self,V,destination, Nodes)

Метод, определяющий какой узел будет следующим узлом для текущего узла. Также, при помощи этой функции осуществляется

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

Isup(self, delta)

Метод, использующийся для обновления статистики по узлам.

updateNode(self, current, delta, Tkdelta, source, destination, f)

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

def updateslaticModelO

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

def updatePheromonTable():

Метод обновления таблицы феромонов.

def updateDataRoutingTable()

Метод обновления таблицы маршрутизации.

updateCurrentCapacity(self, value, n):

Метод, обновляющий информацию,

хранящуюся на контроллере.

Описание методов класса АгПприведено в таблице 5.4.

Таблица 5.4 - Описание методов класса Ant

Название метода

Описание метода

def Forward(self, Nodes)

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

selectNextNode(self,V,destination,Nodes).

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

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

BackwardQ

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

муравья выполняется функция

updateStaticModel. Функция исполняется до тех пор, пока не настанет момент, когда муравей окажется в узле, где был создан.

Основные поля класса ІЧосіеописаньї в таблице 5.5.

Таблица 5.5 - Описание полей класса Node

Название поля

Описании поля

currentCapacity

Поле, описывающее загруженность на каждой из дуг, исходящей из данного узла.

self.maxCapacity

Поле, описывающее максимальную пропускную способность между данным узлом и узлом-соседом.

self.LsHost

Поле, указывающее является ли данный узел хостом.

self.neighbors

Поле, хранящее список соседей данного узла.

sclf.pings = pings

Поле, храпящее последнюю статистику о задержках перемещения между этим узлом и соседним узлом.

sclf.T = [[0 for і in xrange(N)] for j in xrange(len(neighbors))]

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

self.R = [[0 for і in xrange(N)] for j in xrange(len(neighbors))]

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

Основные поля класса NodeonucaHbi в таблице 5.6.

Таблица 5.6 - Описание полей класса Ant

Название поля

Описании поля

self, weight = weight

Поле, хранящее вес муравья и используемое для расчета маршрута с учетом важности трафика.

self.source = source

Поле, хранящее данные об узле, в котором был создан муравей.

self.destination = destination

Поле, хранящее данные об узле назначения муравья.

self.V = П

Список всех посещенных муравьем вершин в процессе путешествия.

self.T_ = []

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

Конфигуратор виртуальных классов» включает следующие блоки:

  • а) алгоритмический блок;
  • б) блок формирования инструкций.

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

Для функционирования модуля необходимо наличие установленного на сервере Puppet мастера. Исходным языком программирования для создания алгоритмического блока является язык C# (использовалась платформа Mono под Linux).

Модуль предназначен для формирования образов виртуальных машин. На рисунке 5.6 показана функциональная схема модуля.

Данная схема отражает следующие функции модуля:

  • а) инициализация и загрузка сведений о имеющемся в ОРЦ программном обеспечении;
  • б) загрузка расписания;
  • в) формирование последовательности установки ПО для создания необходимого набора образов виртуальных машин;
  • г) формирование скриптов (манифестов) для системы управления конфигурациями Puppet.
Функциональная схема модуля

Рисунок 5.6 - Функциональная схема модуля

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

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

Логическая структура программы представлена на рисунке 5.7, где показана укрупнённая схема алгоритма работы конфигуратора виртуальных классов.

При запуске модуль считывает расписание работы ОРЦ и информацию об имеющемся в наличии программном обеспечении, а именно (входные данные):

  • а) совместимость программ;
  • б) зависимость установки программы от наличия других программ;
  • в) время установки;
  • г) шаблоны образов виртуальных машин, полученные ранее;
  • д) набор образов, который необходимо сформировать.

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

Укрупнённая схема алгоритма работы модуля

Рисунок 5.7 - Укрупнённая схема алгоритма работы модуля

' Б /

Укрупнённая схема алгоритма работы модуля (продолжение)

Рисунок 5.7 - Укрупнённая схема алгоритма работы модуля (продолжение)

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

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >