logo
Имитационное моделирование сети Ethernet в среде GPSS World

2.1 Листинг базовой программы

* Аргументы:

* 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 - Короткие сообщения (в долях от тысячи).

* Lot_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

Backoff_Delay VARIABLE Slot_Time#V$Backrandom

Backrandom VARIABLE 1+(RN4@((2^V$Backmin)-1))

Backmin VARIABLE (10#(10LP$Retries))+(P$Retries#(10GEP$Retries))

Node_Select VARIABLE 1+(RN3@Node_Count)

Collide VARIABLE ABS((X$Xmit_Node-P$Node_ID)/100000)GE(AC1-X$Xmit_Begin)

Msgtime VARIABLE (0.0001)#V$Msgrand

Msgrand VARIABLE Min_Msg+(RN1GFraction_Short_Msgs)#(Max_Msg-Min_Msg)

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,1,Start_Xmit

TEST E V$Collide,1,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

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