М.И.Хиль, А.Н.Покушалов АЛГОРИТМ ОЦЕНКИ СТРУКТУРНОЙ НАДЕЖНОСТИ КОМПЬЮТЕРНЫХ СЕТЕЙ При анализе и проектировании компьютерных сетей среди множества параметров эффективности важнейшим является надежность. Понятие надежности системы чаще всего вводится в статистическом смысле и характеризует вероятность сохранения работоспособности за некоторый промежуток времени. Структурная надежность зависит от выбранной структурной схемы сети, степени дублирования аппаратуры и от вероятности разрушения или повреждения отдельных каналов или узлов связи. Для анализа структурной надежности сетей удобно использовать матричнотопологические методы. В их основе лежит представление сети с помощью графа сети. Компьютерную сеть можно представить как совокупность множества X={x1,x2, ...,xN} узлов и множества U={uij } соединяющих узлы xi и xj ребер. В работе используются следующие основные понятия и определения. Множество всех узлов графа G, смежных с некоторым узлом xi, называется окружением узла xi и обозначается N(xi). Степень узла графа равна числу ребер, инцидентных данному узлу. Будем обозначать степень узла х через deg(x). Чередующаяся последовательность узлов и ребер x1, u1, x2, u2, …, xl, ul, xl+1 называется маршрутом, соединяющим узлы xl и xl+1, или (xl, xl+1)-маршрутом. Очевидно, что маршрут можно задать последовательностью x1, x2, …,xl+1 его узлов, а также последовательностью u1, u2, …, ul ребер. Самонепересекающая упорядоченная последовательность ребер из узла xs в узел xt называется путем . Число ребер образующих путь называется рангом пути. Между любыми двумя узлами сети можно построить, как правило, множество путей. Пути называются независимыми, если у них нет общих ребер. Если между любыми двумя узлами существует не менее к независимых путей, то сеть называется к-связной. Сечением сети будем называть минимальную совокупность ребер, удаление которых разделит сеть на две подсети. Число ребер сечения называется рангом сечения. Сечения называются независимыми, если они не содержат одни и те же ребра. Пусть P1l – некоторый путь вида x1, x2, …,xl в графе G, xi и xj – входящие в него узлы, i < j. Очевидно, что часть xi, xi+1,…,xj пути P1l, начинающаяся в узле xi и заканчивающаяся в xj, сама является путем графа G. Этот путь будем называть (xi, xj) – фрагментом пути P1l. Компьютерная сеть функционирует, если обеспечивается возможность передачи сообщений между узлами сети, другими словами имеется хотя бы один путь между узлами. Надежность сети в целом будет определяться как вероятность связности всех узлов сети, участвующих в обмене данными. Таким образом, задача построения надежной сети сводится к задаче анализа различных вариантов ее структуры по заданным показателям надежности, которые зависят как от надежности ее элементов, так и от способа их взаимного соединения. В этом случае в качестве показателя надежности сети в целом можно использовать вероятность наступления сложного события, заключающегося в установлении связей между всеми узлами из заданного множества, и рассчитывать его как отношение суммы взвешенных коэффициентами важности вероятностей соединений пар узлов. n H0 К i 1 i Hi , n K i 1 i где H0 – показатель надежности всей сети; Кi – коэффициент важности i-го соединения узлов (0 Ki 1); Hi – показатель надежности i-го соединения узлов. При проектировании реальных сетей обычно отсутствует необходимость точного расчета надежности сети. Проектировщикам необходимо лишь убедиться в том, что надежность сети, с одной стороны, не ниже заданной и, с другой стороны, не имеет экономически необоснованного запаса. Другими словами, на практике достаточно гарантировать, что истинное значение надежности H0 находится в некоторых пределах Нтin < Н0 < Нтах. Оценка надежности сети с заданной конечной точностью позволит сократить трудоемкость расчетов в тем большей мере, чем ниже требуемая точность оценки. В работе [1] предложена методика расчета оценок надежности, причем нижняя оценка Hμ рассчитывается по совокупности всех путей между узлами, верхняя же Hσ – по совокупности сечений. При расчете надежности по совокупности путей добавление каждого следующего пути приводит к увеличению надежности, а при расчете по совокупности сечений добавление каждого следующего сечения приводит к уменьшению структурной надежности, что создает предпосылки для двусторонней оценки структурной надежности с гарантированной точностью по ограниченным наборам путей и сечений. Это свойство позволяет регулировать трудоемкость оценок надежности в зависимости от заданной точности. Действительно, для решения задачи достаточно последовательно просматривать пути μ, пока не выполнится условие Hμ(m) ≥ Hmin и затем просматривать сечения σ, пока не выполнится условие Hσ(r) ≤ Hmax. Здесь m, r – число путей и сечений соответственно. Если для некоторого т окажется, что Hμ(m) > Hmax, то можно прекратить расчеты и принять решение, что в сети заложена излишняя избыточность, а если для некоторого r окажется, что Hσ(r) < Hmin , то это значит, что требования к надежности сети не выполняются. Число требующих просмотра путей т и сечений r обычно гораздо меньше общего числа путей n и общего числа сечений k графа, чем и достигается сокращение трудоемкости оценки. Одновременно гарантируется, что значение показателя надежности сети лежит в заданных пределах Hμ(m) < H0 < Hσ(r) . Таким образом для выполнения расчетов нам необходим список всех возможных путей и сечений между заданными узлами xa и xb. Причем в [1] показано, что искомая надежность соединения Нab зависит от надежности каждого пути и вариантов их пересечений по общим ребрам. Если учитывать только независимые пути, то трудоемкость вычислений значительно сокращается. Аналогична ситуация с независимыми сечениями. Пусть надежность j-го ребра i-го пути - H (ij ) . Тогда надежность i-го пути H (i ) будет равна mi H (i ) = H (j i ) , j 1 где mi –ранг пути. Если все пути независимы, то вероятность связности узлов xa и xb по множеству независимых путей можно определить как n H ( ab) 1 (1 H ( i ) ) , i 1 где n – количество независимых путей между xa и xb. Поскольку для повышения точности оценки необходимо максимизировать (ab) H , то необходимо максимизировать число независимых путей при одновременной минимизации их рангов. Рассуждая аналогично, нетрудно установить, что для увеличения точности верхней оценки вероятности связности узлов по множеству независимых сечений требуется максимизировать число независимых сечений при минимизации их рангов. Таким образом, задача расчета оценки структурной надежности сети сводится к поиску независимых путей и сечений между узлами графа. Рассмотрим алгоритм реализации данной задачи. Идея алгоритма заключается в направленном переборе всех существующих путей в графе между узлом-источником (узел xa) и узлом-приемником (узел xb). Используется списочное представление графа, при котором граф задается списком N, где запись N(хi) представляет собой окружение узла хi. Алгоритм состоит из следующих этапов: 1. Формирование списка возможных фрагментов пути из узла-источника в узелприемник. 2. Поиск по фрагментам всех возможных путей. 3. Выделение независимых путей минимального ранга. 4. Формирование списка независимых сечений минимального ранга. Для реализации алгоритма используются следующие списки: Q – список формирующихся путей, каждая запись включает в себя последовательность узлов образующих его; R – список пройденных узлов; В – список независимых путей; M – список получившихся фрагментов пути, каждая запись которого соответствует одному пути или одному фрагменту. Первоначально в список Q заносится исходный узел xa. Далее алгоритм работает по следующей схеме. Выбирается очередная запись Q(k), из которой выделяется последний узел xi строящегося пути. По записи N(xi) перебираются все узлы xj смежные с xi, не входящие в Q(k) и имеющие степень узла deg(x)j >1. Добавлением выбранного узла xj в Q(k) формируется новая запись. Если xj встречается в других записях списка Q, т.е. R(xj)=1 и имеет степень узла deg(xj) > 2, либо является узлом-приемником (xj = xb), то сформированная запись заносится в список М. В противном случае корректируется список R (R(xj)=1) и новая запись добавляется в конец списка Q. После просмотра всех узлов смежных с xi запись Q(k) вычеркивается из списка. Первый найденный полный путь (от узла xa к узлу xb) является самым коротким независимым путем и дальнейшем будет использоваться при поиске остальных независимых путей, поэтому его сразу заносим в список независимых путей В. Первый этап заканчивается, когда список Q станет пустым. На втором этапе формируются S(xi, k) – таблица связей, состоящая из k фрагментов пути из xi узла; P – список всех найденных путей из узла xa в узел xb. Из списка M выбирается очередная запись M(k). В этой записи последовательно перебираются все узлы от первого до предпоследнего. В таблицу S(xi, k) заносится фрагмент пути от выбранного узла xj к конечному. После перебора всех узлов выбирается следующая запись. Далее из таблицы S(xi, ki) выбирается ki фрагмент пути от узла-источника (xi = xa). Выбранный путь заноситься для дальнейшего рассмотрения в список Q, включая и узел-источник xa. Далее алгоритм работает по схеме. Обнуляется список R. Из списка Q выбирается очередной фрагмент пути Q(k). Выполняется перебор всех входящих в фрагмент пути узлов. Каждый его узел xj сравнивается с узлом – приемником xb. При совпадении выбранный фрагмент является искомым путем и заносится в список P, иначе узел проверяется на принадлежность списку R. При положительном результате переходим к следующей записи Q(k+1), иначе корректируем список R (R(xj)=1). Если фрагмент пути не содержит узла-приемника xb и каждый составляющий его узел присутствует в фрагменте только один раз, то в список Q добавляются новые записи. Каждая запись состоит из рассматриваемого фрагмента пути и фрагмента пути S(xt, kt), где xt – последний узел рассматриваемого фрагмента пути, kt – количество фрагментов пути из узла xt. Количество добавляемых записей будет равно kt. Если список Q окажется пустым, из таблицы S(xi, ki) выбирается следующий ki+1 фрагмент пути. Второй этап заканчивается, когда будут рассмотрены все ki фрагменты пути. На третьем этапе выделяются все независимые пути, причем они должны быть минимальной длины. Для это за базисный принимается первый найденный путь В(1). В списке М отмечаются все пути, содержащие пары смежных узлов, присутствующие в базисном пути. Из оставшихся выбирается путь с минимальным рангом заносится в список B. Новый путь принимается за базисный и т.д. Поиск прекращается, если для рассмотрения не останется больше ни одного пути. Тогда в списке В будут содержаться все независимые пути минимальной длины. На заключительном этапе находятся всех независимые сечения с минимальными рангами. Общее количество независимых сечений будет равно рангу минимального независимого пути Rp(B(1)). Все найденные независимые сечения заносятся в список С. Этап выполняется за k итераций, причем k = Rp(B(1)) + 1, если Rp(B(1)) – нечетный и k = Rp(B(1)) в противном случае. На каждой итерации рассматриваются группы узлов всех независимых путей, причем на первой итерации будут рассматриваться первые узлы путей, на второй – последние, на третьей – вторые и т.д. Поочередно перебираются все узлы группы, при этом определяется принадлежность рассматриваемого узла xi любому из путей списка P. При положительном результате выбирается следующий узел xj смежный с xi... Ребро (xixj) заносится в список С, если xi и xj не входят в одну и ту же группу, рассматриваемую на текущей итерации и (xixj) уже не было найдено на текущей итерации. По окончании последней итерации в списке С будут присутствовать только независимые сечения c минимальным рангом. Программная реализация предложенного алгоритма оценки структурной надежности компьютерных сетей выполнена на языке высокого уровня Delphi 6.0 Enterprise edition фирмы Inprise Corp. При написании программы использовался объектно-ориентированный подход. В программе использована современная технология Drag-n-Drop, облегчающая работу с объектами. Программа разработана с учетом практического удобства для работы пользователя, обладает продуманным дизайном и проста в обращении. Пример использования программы приведен на рисунке 1. Рисунок 1 – Интерфейс программы расчета структурной надежности Алгоритмы и программы, предложенные в данной работе, могут использоваться при проектировании новых компьютерных сетей, анализе показателей качества существующих сетей и их модернизации. ЛИТЕРАТУРА 1.Мизин И. А., Богатырев В. А., Кулешов А. П. Сети коммутации пакетов/ Под ред. В. С. Семенихина.—М.: Радио и связь, 1986. Программу можно загрузить по адресу: http://www.omg.com.ua