Дискретное моделирование событий C++ (куча на основе массива для очереди с приоритетами)
Во-первых, я понимаю, что когда я получаю ложные ответы, в конечном счете, мне будет больно, и это не то, что я ищу. При этом, вот основной пункт назначения:
"Мы собираемся смоделировать простую скачкообразную атаку в небольшой корпоративной сети. Злоумышленник скомпрометирует компьютер в сети и использует его в качестве отправной точки для других атак. Наша модель атаки упрощена, так что каждая атака принимает набор время и успех с некоторой вероятностью. Периодически злоумышленник и каждая взломанная машина будут пытаться скомпрометировать случайную машину в сети. Атаки, пересекающие систему обнаружения вторжений, будут иметь определенный процентный шанс быть пойманным. Сисадмин будет реагировать (с некоторая задержка) починить машины со 100% уверенностью.
Топология сети - это дерево. В корне дерева находится IDS со всеми связанными компонентами как дочерние. IDS также является сетевым шлюзом. Два коммутатора (не агенты) являются прямыми потомками в IDS. Остальные компьютеры делятся равномерно как дочерние между двумя коммутаторами. Каждое событие от атакующего пересекает IDS. IDS может обнаруживать только атаки с компьютеров под одним коммутатором на компьютеры под другим коммутатором. Системный администратор - это агент в симуляции, который не подключен к сети. Он может получать только уведомления о симуляции от системы обнаружения вторжений ".
Существует 3 типа событий: атака, исправление и уведомление. Я знаю, что события должны храниться в очереди, что нормально, но я не уверен, как реализовать эти события. Создать виртуальный класс Event и группу подклассов, определяющих все события? Один класс для всех событий? Кто знает?
Есть также 3 агента, которые отвечают или генерируют события: злоумышленник, компьютеры и IDS. Опять же - я должен реализовать их все в отдельных классах или было бы достаточно использовать один основной класс.
Моя программа должна иметь 3 входа: количество компьютеров, процент успешных атак и процент обнаруженных в IDS.
То, с чем у меня возникают реальные проблемы, это организация всего моделирования, что делает довольно трудным начало проектирования и реализации. Кажется, я не могу обернуть голову вокруг структуры события, и мое кодирование довольно ржавое, я боюсь признаться. Сдвиг в правильном направлении будет принята с благодарностью.