- •Применение пакета gpss при моделировании систем телекоммуникаций
- •Содержание
- •Введение
- •1 Система имитационного моделирования gpss World
- •1.1 Основы построения системы моделирования gpss World
- •1.2 Синтаксис языка gpss
- •1.3 Объекты имитационной модели
- •1.4 Структура модели на gpss world
- •2.1 Транзакты - динамические объекты системы
- •2 Организация процесса моделирования в gpss world
- •2.2 Системные числовые атрибуты
- •2.3 Модельное время
- •2.4 Списки
- •2.5 Внутренняя организация gpss
- •2.6 Библиотечные генераторы случайных чисел
- •2.7 Запуск и завершение моделирования
- •3 Команды gpss
- •3.1 Команды описания и управления
- •3.7 Команда halt
- •4 Операторы блоков
- •4.1 Блоки, связанные с транзактами
- •4.2 Блоки, связанные с аппаратными объектами
- •4.3 Блоки, предназначенные для сбора статистических данных
- •4.4 Блоки, изменяющие маршрут
- •5 Gpss-модели систем телекоммуникации
- •5.1 Имитационная модель простой телефонной системы
- •5.1.1 Постановка задачи
- •5.1.2 Листинг программы
- •5.1.3 Анализ работы модели
- •5.2 Исследование на имитационной модели работы телефонной сети
- •5.2.1 Постановка задачи
- •5. 2. 2 Листинг программы
- •5.2.3 Анализ работы телефонной системы
- •5.3 Моделирование работы переговорного пункта
- •5 .3.1 Постановка задачи
- •5. 3. 2 Листинг программы
- •5.3.3 Анализ работы модели
- •5.4. Модель частной телефонной станции
- •5.4.1 Постановка задачи
- •5. 4. 2 Листинг программы
- •5.4.3 Анализ работы модели
- •5.5 Имитационное моделирование сети Ethernet
- •5.5.1 Постановка задачи
- •5.5.2 Листинг программы
- •5.5.3 Запуск модели
- •5.5.4 Анализ результатов базовой модели
- •5.6 Модель вычислительной системы с несколькими абонентскими
- •Список литературы
5.5 Имитационное моделирование сети Ethernet
5.5.1 Постановка задачи
Исследуется 10-мегабитная сеть Ethernet. Сеть Ethernet с сотней подключенных в данный момент рабочих станций работает удовлетворительно. Было определено, что сетевой трафик состоит из двух классов сообщений, которые генерируются с одинаковой пропорцией во всех узлах.
Общая структура входящего потока сообщений в час пик может быть смоделирована как пуассоновский процесс со случайным выбором отдельных рабочих станций.
Сообщения поступают экспоненциально и бывают двух типов: короткие и длинные. Выбирается узел и удерживается в течение передачи сообщения и всех выдержек времени в случае коллизии. Каждый узел Ethernet может быть занят одним сообщением до тех пор, пока оно не будет отправлено или пока не произойдет некоторое количество коллизий (во время попыток передачи другими узлами), после чего объявляется постоянная ошибка и узел освобождается. Время измеряется в миллисекундах. Подразумевается, что отдельные узлы отстоят друг от друга на 2,5 м. При расчете окна коллизии для определения разделяющего расстояния используется идентификационный номер узла. Задержки распространения между смежными узлами равны 0,01 микросекунды. Каждый бит перемещается за 0,1 микросекунды. Межкадровый интервал моделируется путем задержки сети передающим узлом на некоторое дополнительное время, после того как он передал свое сообщение. Сообщения представлены транзактами GPSS. Узлы и сеть представлены устройствами GPSS. Дополнительное устройство используется во время передачи преднамеренных помех для предотвращения начала передачи нового сообщения. Коллизия возникает из-за нескольких одновременных попыток передачи 2 или более узлов. Задержка распространения сигнала препятствует одновременному распознаванию узлов друг другом, тем самым приводя к возможности коллизии. Интервал времени, в течение которого сигнал из другого узла может быть обнаружен, называется «окном коллизии». Коллизия представлена лишением передающего транзакта права занимать Ethernet и отправкой его в подпрограмму выдержки времени. Новый занимающий транзакт передает преднамеренные помехи в Ethernet и затем сам выдерживает некоторый временной интервал. Когда отправляется сообщение транзакта, транзакт занимает устройство Ethernet с приоритетом 0 и может быть вытеснен (PREEMPT) только транзактом с приоритетом 1. Когда транзакт передает преднамеренные помехи, он занимает устройство Ethernet с приоритетом 1 и не может быть вытеснен.
5.5.2 Листинг программы
* Аргументы:
* 1. Node__Count - Количество узлов, отстоящих друг от друга на 2.5 м.
* 2. Min_Msg - Минимальное сообщение (бит).
* 3. Max_Msg - Максимальное сообщение (бит).
* 4. Fraction_ Short_ Msgs — Доля коротких сообщений (в долях от тысячи)
* 5. Intermessage_Time - Общий интервал между сообщениями.
* Исходные данные:
* Node_Count = 100 - Общее число узлов Ethernet.
* Intermessage_Time = 1.0 - Среднее значение общего количества сообщений, поступающих каждую миллисекунду.
* Min_Msg = 512 - Минимальное сообщение в битах.
* Max_Msg = 12144 - Максимальное сообщение в битах.
* Fraction Short Msgs = 600 - Короткие сообщения (в долях от тысячи).
* Slot_time = 0.0512 - Время прохождения 512 битов.
* Jam_Time = 0.0032 - Время прохождения 32 битов.
* Backoff_Limit = 10 - Не больше, чем 10 повторов в случае коллизии.
* Interframe_Time = 0.0096 - Время прохождения 96 битов.
*******************************************************************
Node_Count EQU 100
Intermessage_Time EQU 1.0
Min_Msg EQU 512
Max_Msg EQU 12144
Fraction_Short_Msgs EQU 600
Slot_Time EQU 0.0512
Jam_Time EQU 0.0032
Backoff_Limit EQU 10
Interframe_Time EQU 0.0096
********************************************************************
* Определение функций и переменных GPSS
*
*******************************************************************Backoff_Delay VARIABLE Slot_Time#V$Backrandom
Backrandom VARIABLE 1+(RN4@((2AV$Backmin)-1))
Backmin VARIABLE (10#(10'L'P$Retries))+(P$Retries#(10'GE'P$Retries))
Node_Select VARIABLE 1+(RN3@Node_Count)
Collide VARIABLE ABS ((X$Xmit_Node-P$Node_ID)/100000)'GE' (ACl-X$Xmit_Begin)
Msgtime VARIABLE (0.0001)#V$Msgrand
Msgrand VARIABLE Min_Msg+(RN1'G'Fraction_Short_Msgs)#(Max_Msg-Min_Ms)
*******************************************************************
*
* Диаграмма задержки сообщений *
*******************************************************************
Msg_Delays QTABLE Global_Delays,1,1,20
*******************************************************************
*
* Главная часть модели *
*******************************************************************
Генерация сообщений
*******************************************************************
GENERATE (Exponential(1,0,Intermessage_Time))
ASSIGN Node_ID,V$Node_Select
ASSIGN Message_Time,V$Msgtime
ASSIGN Retries,0
*******************************************************************
*******************************************************************
QUEUE Global_Delays
SEIZE P$Node_ID
Try_To_Send PRIORITY 1
SEIZE Jam ;
RELEASE Jam
TEST E F$Ethernet,l,Start_Xmit
*******************************************************************
*
* Ethernet занят. Проверим, находимся ли мы в окне коллизии передающего узла.
* Если это так, данный узел в любом случае начнет передачу, т.к. несущая не
* будет обнаружена. В этом случае мы должны инициировать коллизию.
* Если задержка распространения до передающего узла больше или равна времени передачи, происходит коллизия.
*******************************************************************
TEST E V$Collide,I,Start_Xmit
* * * * * * * * * * * * * * * * Коллизия * * * * * * * * * * * * * * * * * * * * * * Collision PREEMPT Ethernet,PR,Backoff ,,RE
SEIZE Jam
ADVANCE Jam_Time
RELEASE Jam
RELEASE Ethernet
PRIORITY 0
Backoff ASSIGN Retries+,1
TEST LE P$Retries,Backoff_Limit,Xmit_Error
ADVANCE V$Backoff_Delay
TRANSFER ,Try_To_Send
*******************************************************************
Занятие Ethernet и начало передачи.
*******************************************************************
Start_ Xmit SEIZE Ethernet
SAVEVALUE Xmit_Node,P$Node_ID
SAVEVALUE Xmit_Begin,AC1
PRIORITY 0
ADVANCE P$Message_Time
ADVANCE Interframe_Time
RELEASE Ethernet
Free_ Node RELEASE P$Node_ID
DEPART Global_Delays
TERMINATE
*******************************************************************
Xmit_Error SAVEVALUE Error_Count+, 1
TRANSFER ,Free_Node
*******************************************************************
*
* Сегмент таймера
*
*******************************************************************
GENERATE 1000
TERMINATE 1
******************************************************************
