Автор работы: Пользователь скрыл имя, 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
$('#log').append('\n\
time = checkSost(0,'A',0);
$('#log').append('Генерация
return time;
}
}
if((line=="A")&&(chgen==1)&&(
if((ouA[i].sost==0)&&(ouA[i].
$('#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\
time = checkSost(0,'B', 0);
$('#log').append('Генерация
ouB[i].sost = tmp;
}
if((ouA[i].sost==-1)||(ouA[i].
$('#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('Не могу
}
if((ouA[i].sost==3)&&(ouA[i].
$('#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\
time = checkSost(0,'B',0);
$('#log').append('Генерация
ouB[i].sost = tmp;
}
if((ouA[i].sost==4)&&(ouA[i].
$('#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\
time = checkSost(0,'B',0);
$('#log').append('Генерация
ouB[i].sost = tmp;
}
}
if((line=="A")&&(chgen==1)&&(
if((ouA[i].sost==0)&&(ouA[i].
$('#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\
time = checkSost(0,'B',0);
$('#log').append('Генерация
return time;
}
if((ouA[i].sost==-1)||(ouA[i].
$('#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('Не могу
}
if((ouA[i].sost==3)&&(ouA[i].
$('#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\
time = checkSost(0,'A',0);
$('#log').append('Генерация
return time;
}
if((ouA[i].sost==4)&&(ouA[i].
$('#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\
time = checkSost(0,'B',0);
$('#log').append('Генерация
return time;
}
}
if((fail==1)&&(chgen==1)&&(i==
$('#log').append('Либо линия
}
$('#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==
if((ouB[i].sost==2)||(count2==
}
if (flag!=0) { // Действия в отсутствие генерации
$('#log').append('Проверка состояния системы
по линиии A \n ------------------------------
time=checkSost(0, 'A', 0);
$('#log').append('------------
$('#log').append('Проверка состояния системы
по линиии B \n ------------------------------
time=checkSost(0, 'B', 0);
$('#log').append('------------
alert("Проверка закончена! Проверьте лог для подробной информации.");
}
else { // Действия в случае генерации
if (genline=='A') {
$('#log').append('------------
$('#log').append('
time = checkSost(0, 'B', 1);
$('#log').append('------------
}
if(genline=='B') {
$('#log').append('------------
$('#log').append('
time = checkSost(0, 'A', 1);
$('#log').append('------------
}
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('<
}
var sostName = '';
var substName = '';
$(function(){
$("select").change(function(){
var sostName = this.value; //получили sostA0_1
arrName = sostName.split('_'); //
var po = arrName[1]; //получили концовку, т.е. po=1
var an = ['null', 0, -1, 2, 3, 4];
var n = arrName[0].substring(5); //n=
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. Инструкция по эксплуатации
Для наглядности, рассмотрим работу с программой на основе скриншотов интерфейса программы
Для генерации новой сети запускаем программу и указываем ей необходимое количество узлов будущей сети
После указания количества ОУ появляется изображение сети.
После вывода изображения сети мы можем задавать неисправности для произвольных ОУ, меняя их состояния как по линии А, так и по линии В
После установки неисправностей
мы запускаем тест работоспособности
сети. Произведя проверку сети и
исправив возможные неисправности,
тест выдает подробный лог о проверке
и перерисовывает схему сети (если
удалось исправить