Скачиваний:
22
Добавлен:
05.11.2020
Размер:
344.82 Кб
Скачать

Разработка имитационной модели и исследование механизма управления потоком “остановка с ожиданием”

  1. Для существующей демонстрационной модели протокола «Остановка с ожиданием» (ABP – Alternating bit protocol) провести моделирование и построить график зависимости усредненной нагрузки канала пакетами подтверждения (пакетов/сек.) от длительности таймаута на ожидание подтверждения при заданном значении объема потерянных пакетов. Моделирование производить для 0%, 10%, 50% и 90% потерянных пакетов. Таймаут задавать в диапазоне от 10 до 100 с шагом 10. При построении графика один тик модельного времени считать равным 1 ms реального времени. Пояснить полученные зависимости и указать, какие особенности реальных каналов связи не учтены при моделировании.

  2. При моделировании учитывать время на обработку входящего пакета приемником. Для этого модифицировать конечный автомат приемника, добавив в него еще одно состояние «Обработка». Время на обработку пакета должно быть случайной величиной, равномерно распределенной в пределах от 0,2 до 0,8 тиков модельного времени (генерацию таких значений можно легко сделать по аналогии с реализацией задержки пакетов в канале связи). По окончании моделирования рассчитать среднее RTT передачи пакетов (усредненное время передачи по ForwardChannel + усредненное время обработки + усредненное время передачи по BackwardChannel). RTT может быть рассчитано на стороне передатчика с использованием часов (главное – исключить случаи с потерянными пакетами и подтверждениями). Среднее значение RTT для каждой комбинации параметров из Вашего задания должно быть указано в отчете.

Для подсчёта количества пакетов к выходу BackwardChannel подключён счётчик, для просмотра количества к нему подключён монитор.

Для модели выставлены параметры:

Для установки значения выхода setTimer в Sender в состоянии Sending добавлен параметр timer. Ему присвоено значение 10.

Запущена модель. Количество пакетов подтверждения - 2066.

В Receiver добавлено состояние обработки при переходе из S1 в S0. Ему присвоено имя Waiting1to0.

Добавлен выходной порт TimerStart для запуска таймера на ожидание и входной порт TimerEnd для получения сигнала об окончании работы таймера. Также создана промежуточная переменная p.

В параметрах портов Receiver для созданных портов выбран тип boolean.

Триггер переходит из S1 в состояние Waiting1to0, если на вход поступил нечётный пакет. При этом запускается таймер и переменной p присваивается значение.

Переход из Waiting1to0 в S0 осуществляется, когда на вход поступает сигнал об остановке таймера. На выход ack подаётся значение 1, на msgOut - значение p.

По аналогии создано состояние обработки Waiting0to1 при переходе из S0 в S1.

Подобным образом, но без промежуточной переменной и без установки значения msgOut работает ожидание при переходе из S1 в S1 и из S0 в S0.

После редактирования Receiver выглядит следующим образом:

На общую схему добавлен генератор случайных чисел и таймер.

На вход генератора подаётся сигнал с выхода TimerStart ресивера.

Числа генерируются в диапазоне от 0,2 до 0,8.

С выхода генератора сигнал передаётся на вход таймера. Выход таймера соединён со входом TimerEnd ресивера.

Общая схема приведена на рисунке:

Вновь запущена модель. Количество переданных пакетов подтверждения стало меньше - 1885.

Для вычисления RTT к выходу messageOut сендера и к выходу BackwardChannel подключены часы. Так как пакет может “потеряться”, время отправки сообщения сохраняется сначала в регистр. Дальше пакет передаётся, когда получено время отправки пакета подтверждения. С помощью AddSubstract время отправки пакета вычитается из времени отправки подтверждения (то есть большее время вычитается из меньшего). В Average вычисляется среднее значение всех временных промежутков - это значение передаётся на Display.

Изображение общей схемы: