Моделирование DDoS-атаки RUDY на web-server в среде GPSS

Немного теории для понимания сути задачи:

1. Необходимо смоделировать поведение веб-сервера, атакуемого DDoS-атакой типа RUDY.

2. Суть данной атаки заключается в том, что на сервер поступают POST запросы по типу отправки форм, где в первом пакете запроса указан размер передаваемых данных. Сервер выделяет под сие ресурсы и ждет когда же он получит полный пакет данных что бы обработать запрос, а кадры на который разбит пакет приходят по 1 байту в 1-2 секунды, что существенно замедляет процесс обработки запроса, а запросов таких лавина.

Теперь немного ближе к сути проблемы:

Частота прихода транзактов ( читай запросов) порядка 200 з/с. И в принципе при нормальной обработке запроса как отдельной единицы проблем нет.

В теории же СМО транзакт - сущность неделимая и однородная.

Поэтом при моделировании именно атаки RUDY, нам надо как то увеличивать задержку не только на обработку запроса но и на ожидание всех кадров пакета.

Посчитать и задать диапазон задержки для 1 запроса пробовал, работает, но модель примитивна и не отражает сути атаки.

Поэтому пришла в голову мысль после занятия запросом ресурсов, размножить запрос с помощью SPLIT, реализовать задержку для каждого из новых запросов - кадров, а потом собрать их в кучу и выпустить только первоначальный с помощью ASSEMBLE, ну судя по тому, что я прочитал об этих блоках, по логике все должно работать, не деле же интерпритатор GPSS ругается следующим образом "A Transaction which owns a Facility is attempting to terminate.".

По логике запрос не должен выходить пока не пройдут все через задержку и не войдут в ASSEMBLE, но увы и ах...

Подскажите как исправить эту проблему, или возможно другой метод реализации модели данной атаки. заранее признателен!)

RAM STORAGE 1024	; Объем пула ОЗУ
       GENERATE (EXPONENTIAL(1,0,6))	; Генерация потока заявок 1 заявка приходит в промежутке от 4 до 8мс, что приближено к 200 запросам в секунду
       TEST LE Q$BUF,1000,LBL	; Проверка переполнения буфера очереди и перенаправление на сброс пакетов при не выполнении условия
       QUEUE BUF		; Постановка запроса в очередь
       ENTER RAM,2		; Занятие ОЗУ(в среднем страничка сегодня весит 2Мб)
       DEPART BUF		; Выход запроса из очереди
       SEIZE CPU		; Занимаем Процессор
       SPLIT 47,,1
       ADVANCE (EXPONENTIAL(1,0,1500))	; задержка обработки запроса процессором в мс
       ASSEMBLE 47
       ADVANCE (EXPONENTIAL(1,0,350))
       LEAVE CPU		; Освобождение процессора от запроса
       LEAVE RAM		; Освобождение ОЗУ
       TERMINATE 0		; Завершение цикла обработки запроса

LBL    SAVEVALUE DENIAL+,1	; Счетчик запросов, которые не попали в очередь на обработку из-за переполнения буфера
       TERMINATE 0		; Завершение цикла обработки запроса

       GENERATE 60000	; через 60 секунд сгенерируется транзакт, завершение которого остановит программу
       TERMINATE 1		; Завершение программы
       START 1		; Первоначальный счетчик итераций