Разработка имитационной модели локальной вычислительной сети по гост в 26765.52-87 для исследования алгоритмов повышения ее надежности, безоп

Автор работы: Пользователь скрыл имя, 04 Июня 2013 в 16:34, курсовая работа

Описание

Настоящее техническое задание распространяется на разработку имитационного моделирования алгоритма защиты сети, а так же разработку модели сети. Данный алгоритм должен позволять обнаруживать и отключать «генератор помехи», а так же проверять работоспособность сети. Данная модель сети должна позволять генерировать сообщения от контроллера на любой заданный абонент, имитировать отказы и сбои любого из абонентов и контроллера сети, имитировать, текущее время, отображать процесс прохождения сообщений к ОУ и состояния ОУ. Модель и алгоритм обеспечения восстановления работоспособности сети должны пройти отладку с предоставлением отчета.

Содержание

Техническое задание………………………………………………………………………………….……………………...3
Эскизный проект…………………………………………………………………………………………………….………..7
1. Общие положения…………………………………………………………………………..................................7
2. Основные технические решения………………………………………………………………………………..7
Реализация…………………………………………………………………………………………………………………......9
Генератор сети………………………………………………………………………………………………...9
Описание……………………………………………………………………………………………….....9
Листинг …………………………………………………………………………………………………..9
Анализатор сети ……………………………………………………………………………………….……27
Описание………………………………………………………………………………………...……..27
Листинг…………………………………………………………………………………………………27
Графический визуализатор сети……………………………………………………………………………31
Интерфейс программы………………………………………………………………………………....31
Инструкция по эксплуатации…………………………………………………………………………31
Листинг программы…………………………………………………………………………………….35
Эксперимент………………………………………………………………………………………………………………....41
Описание эксперимента……………………………………………………………………………………..41
Результаты эксперимента……………………………………………………………………………………42
Приложение…………………………………………………………………………………………………………………..79
Список используемой литературы……………………………………………………………………………………….....81

Работа состоит из  1 файл

Federalnoe_gosudarstvennoe_byudzhetnoe_obrazovat.docx

— 1.12 Мб (Скачать документ)

$('#log').append('\n\nПроверка после  отключения: \n');

time = checkSost(0,'A',0);

$('#log').append('Генерация отсутствует,  выявлен генерящий ОУ: '+ ouA[i].name +'\n\n'); fail=0;

return time;

 

}

}

if((line=="A")&&(chgen==1)&&(ouB[i].sost!=2)) {

if((ouA[i].sost==0)&&(ouA[i].dsost==0)) {

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Получен ответ: ОК \n'); time = time +  4;

tmp = ouB[i].sost;

ouB[i].sost = -1;

$('#log').append('\n\nПроверка после  отключения: \n');

time = checkSost(0,'B', 0);

$('#log').append('Генерация присутствует, продолжаю работу\n\n');

ouB[i].sost = tmp;

}

if((ouA[i].sost==-1)||(ouA[i].dsost==1)) {

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Нет ответа \n'); time = time +  4;

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Нет ответа \n'); time = time +  4;

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Нет ответа \n');  time = time +  4;

$('#log').append('Не могу отключить,  продолжаю работу\n');

}

if((ouA[i].sost==3)&&(ouA[i].dsost==0)) {

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Получен ответ: занят \n'); time = time +  4;

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Получен ответ: ОК \n'); time = time +  4;

tmp = ouB[i].sost;

ouB[i].sost = -1;

ouA[i].sost = 0;

$('div[id="sostB'+ ouA[i].number +'"]').removeClass();

$('div[id="sostB'+ ouA[i].number +'"]').addClass('sost_1');

$('#log').append('\n\nПроверка после  отключения: \n');

time = checkSost(0,'B',0);

$('#log').append('Генерация присутствует, продолжаю работу\n\n');

ouB[i].sost = tmp;

}

if((ouA[i].sost==4)&&(ouA[i].dsost==0)) {

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Получен ответ: занят \n'); time = time +  4;

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Получен ответ: ОК \n'); time = time +  4;

tmp = ouB[i].sost;

ouB[i].sost = -1;

$('#log').append('\n\nПроверка после  отключения: \n');

time = checkSost(0,'B',0);

$('#log').append('Генерация присутствует, продолжаю работу\n\n');

ouB[i].sost = tmp;

}

}

if((line=="A")&&(chgen==1)&&(ouB[i].sost==2)) {

 

if((ouA[i].sost==0)&&(ouA[i].dsost==0)) {

$('#log').append(time + ': Запрос на отключение '+ ouA[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Получен ответ: ОК \n'); time = time +  4;

changeDsost(0,'B');

ouB[i].sost = -1;

$('div[id="sostB'+ ouB[i].number +'"]').removeClass();

$('div[id="sostB'+ ouB[i].number +'"]').addClass('sost_2');

$('#log').append('\n\nПроверка после  отключения: \n');

time = checkSost(0,'B',0);

$('#log').append('Генерация отсутствует,  выявлен генерящий ОУ: '+ ouB[i].name +'\n\n'); fail=0;

return time;

}

if((ouA[i].sost==-1)||(ouA[i].dsost==1)) {

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Нет ответа \n'); time = time +  4;

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Нет ответа \n'); time = time +  4;

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Нет ответа \n');  time = time +  4;

$('#log').append('Не могу отключить,  продолжаю работу\n');

}

if((ouA[i].sost==3)&&(ouA[i].dsost==0)) {

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Получен ответ: занят \n'); time = time +  4;

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Получен ответ: ОК \n'); time = time +  4;

changeDsost(0,'B');

ouB[i].sost = -1;

$('div[id="sostB'+ ouB[i].number +'"]').removeClass();

$('div[id="sostB'+ ouB[i].number +'"]').addClass('sost_2');

ouA[i].sost = 0;

$('div[id="sostA'+ ouA[i].number +'"]').removeClass();

$('div[id="sostA'+ ouA[i].number +'"]').addClass('sost_1');

$('#log').append('\n\nПроверка после  отключения: \n');

time = checkSost(0,'A',0);

$('#log').append('Генерация отсутствует,  выявлен генерящий ОУ: '+ ouB[i].name +'\n\n'); fail=0;

return time;

}

if((ouA[i].sost==4)&&(ouA[i].dsost==0)) {

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Получен ответ: занят \n'); time = time +  4;

$('#log').append(time + ': Запрос на отключение '+ ouB[i].name +' \n'); time = time +  20;

$('#log').append(time + ': Ожидание  ответа... \n'); time = time +  32;

$('#log').append(time + ': Получен ответ: ОК \n'); time = time +  4;

changeDsost(0,'B');

ouB[i].sost = -1;

$('div[id="sostB'+ ouB[i].number +'"]').removeClass();

$('div[id="sostB'+ ouB[i].number +'"]').addClass('sost_2');

$('#log').append('\n\nПроверка после  отключения: \n');

time = checkSost(0,'B',0);

$('#log').append('Генерация отсутствует,  выявлен генерящий ОУ: '+ ouB[i].name +'\n\n'); fail=0;

return time;

 

}

}

if((fail==1)&&(chgen==1)&&(i==countNodes-1)) {

$('#log').append('Либо линия неисправна, либо генерящий ОУ не может  быть отключен \n\n');

}

$('#log').append('--\n');

}

 

return time;

}

 

 

 

 

 

 

 

 

 

2. Анализатор сети

2.1. Описание

Анализатор 

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

 

Модуль статистики

Модуль статистики предназначен для сбора логов  (результата работы анализатора) и вывод их на анализ пользователю.

 

2.2. Листинг

var time=0;

var count1 = 0;

var count2 = 0;

function Main() { // Основная функция

for(var i=0; i<countNodes; i++) { // Проверка на генерацию

if(ouA[i].sost==-1) {count1++;}

if(ouB[i].sost==-1) {count2++;}

if((ouA[i].sost==2)||(count1==countNodes)) {var flag = 0; changeDsost(1,'A'); time=checkSost(0, 'A', 0); $('#log').append('Подозрение  на генерацию в сети по линии  A \n'); var genline = 'A';}

if((ouB[i].sost==2)||(count2==countNodes)) {var flag = 0; changeDsost(1,'B'); time=checkSost(0, 'B', 0); $('#log').append('Подозрение  на генерацию в сети по линии  B \n'); var genline = 'B';}

}

if (flag!=0) { // Действия в отсутствие генерации

$('#log').append('Проверка состояния системы по линиии A \n ------------------------------------ \n');

time=checkSost(0, 'A', 0);

$('#log').append('------------------------------------ \n');

$('#log').append('Проверка состояния системы по линиии B \n ------------------------------------ \n');

time=checkSost(0, 'B', 0);

$('#log').append('------------------------------------ \n');

alert("Проверка закончена! Проверьте лог для подробной информации.");

 

}

else {  // Действия в случае генерации

if (genline=='A') {

$('#log').append('------------------------------------ \n');

$('#log').append('Последовательное отключение ОУ по линиии B \n ------------------------------------ \n');

time = checkSost(0, 'B', 1);

$('#log').append('----------------------\n');

}

if(genline=='B') {

$('#log').append('------------------------------------ \n');

$('#log').append('Последовательное отключение ОУ по линиии A \n ------------------------------------ \n');

time = checkSost(0, 'A', 1);

$('#log').append('----------------------\n');

}

alert("Проверка закончена! Проверьте лог для подробной информации.");

}

}

</script>

<script type="text/javascript">

$(document).ready(function() {

for (var i = 0; i < countNodes; i++) { //Заводим указанное  число компов и рисуем их

$('.field').append('<div class="element"></div>');

$('.element').eq(i).append('<div class="line_a"><span>line_A</span></div><div class="A"><div class="buttons"><select name="sostA'+i+'"><option   value="sostA'+i+'_1">Включен</option><option   value="sostA'+i+'_2">Нерабочий</option><option   value="sostA'+i+'_3">Генерация</option><option   value="sostA'+i+'_4">Сбой</option><option   value="sostA'+i+'_5">Занят</option></select></div><div class="sost_1" id="sostA'+i+'"></div></div><div class="p"><p style="">ОУ №'+i+'</p></div><div class="B"><div class="sost_1" id="sostB'+i+'"></div><div class="buttons"><select name="sost'+i+'"><option   value="sostB'+i+'_1">Включен</option><option   value="sostB'+i+'_2">Нерабочий</option><option   value="sostB'+i+'_3">Генерация</option><option   value="sostB'+i+'_4">Сбой</option><option   value="sostB'+i+'_5">Занят</option></select></div></div><div class="line_b"><span>line_B</span></div>');

 

}

var sostName = '';

var substName = '';

 

 

 

$(function(){                                                    //Изменение состояния только на 1 элемент

$("select").change(function(){

var sostName = this.value;   //получили sostA0_1

arrName = sostName.split('_');   //обрезали до arrName[0]= sostA0, arrName[1]=1

var po = arrName[1];    //получили концовку, т.е. po=1

var an = ['null', 0, -1, 2, 3, 4];   

var n = arrName[0].substring(5);  //n=0 - номер ОУ

var line = arrName[0].substr(4,1);

$('div[id="'+ arrName[0] +'"]').removeClass();

$('div[id="'+ arrName[0] +'"]').addClass('sost_'+po);

if(line=='A') ouA[n].changeSost(an[po]);

if(line=='B') ouB[n].changeSost(an[po]);

  });

});

 

 

 

});

</script>

</head>

<body>

<div class="workzone">

<div class="buttonss">

<input type="button" class="start_button" onclick="Main()" value="Запуск">

<input type="button" class="start_button" onclick="resetSost()" value="Сброс состояний">

<input type="button" class="start_button" onclick="clearLog()" value="Очистка лога">

</div>

<div class="field">

<div style="margin-bottom:5px;" class="name">interface</div>

</div>

<div class="log">

   <div class="name">log</div>

   <textarea id="log" value=""></textarea>

  </div>

</div>

</body>

</html>

 

 

 

 

 

3. Графический визуализатор сети

 

3.1. Интерфейс программы

Программа позволяет создавать  и визуализировать графы (в нашем  случае сети). Интерфейс программы состоит из кнопки указания количества узлов и окна вывода изображения сети.

3.2. Инструкция по эксплуатации

Для наглядности, рассмотрим работу с программой на основе скриншотов интерфейса программы

 

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

 

 

 

 

 

 

 

 

После указания количества ОУ появляется изображение сети.

После вывода изображения  сети мы можем задавать неисправности  для произвольных ОУ, меняя их состояния  как по линии А, так и по линии  В

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

Информация о работе Разработка имитационной модели локальной вычислительной сети по гост в 26765.52-87 для исследования алгоритмов повышения ее надежности, безоп