Ptolemy II ABP
.docxРазработка имитационной модели и исследование механизма управления потоком “остановка с ожиданием”
Для существующей демонстрационной модели протокола «Остановка с ожиданием» (ABP – Alternating bit protocol) провести моделирование и построить график зависимости усредненной нагрузки канала пакетами подтверждения (пакетов/сек.) от длительности таймаута на ожидание подтверждения при заданном значении объема потерянных пакетов. Моделирование производить для 0%, 10%, 50% и 90% потерянных пакетов. Таймаут задавать в диапазоне от 10 до 100 с шагом 10. При построении графика один тик модельного времени считать равным 1 ms реального времени. Пояснить полученные зависимости и указать, какие особенности реальных каналов связи не учтены при моделировании.
При моделировании учитывать время на обработку входящего пакета приемником. Для этого модифицировать конечный автомат приемника, добавив в него еще одно состояние «Обработка». Время на обработку пакета должно быть случайной величиной, равномерно распределенной в пределах от 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.
Изображение общей схемы: