Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GPSS Leshinskaya.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
883 Кб
Скачать
☆

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

******************************************************************

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]