К сожалению, DoS-атаки не могут быть смоделированы в ns-3 . Кроме того, DDoS-атаки также не могут быть смоделированы.
Как работает DoS-атака?
Чтобы понять, почему ns-3 не может имитировать DoS-атаку, нам нужно сначала понять, как работает DoS-атака. Как вы упоминаете, переполнение TCP SYN является одним из способов имитации DoS-атаки. Почему это работает? Ну, любой компьютер имеет ограниченное количество ресурсов, например, память и дисковое пространство. Когда компьютер получает SYN, он создает сокет для облегчения связи. Учитывая, что существует конечное количество ресурсов, может быть создано только конечное количество сокетов. Итак, атака DoS работает, перегружая компьютер в сети с помощью SYN, заставляя компьютер выделять много сокетов, которые не будут использоваться. В какой-то момент компьютер должен просто отказаться от любого подключения, даже законного подключения. Это когда DoS-атака прошла успешно.
Почему ns-3 не может имитировать это?
В ns-3 не существует понятия Node
, имеющего конечное число ресурсы, скажем так. Queues
в Nodes
может иметь конечный размер, но нет способа ограничить количество активных соединений на Node
. Er go, нет возможности симулировать DoS-атаку.
A (Потенциальное) решение
Внести вклад в ns-3! Посетить gitlab repo и попробуйте добавить желаемую функциональность.
Ответ на комментарий (комментарии)
TCP в ns-3
Я использовал «количество активных соединений» как эквивалент «количества сокетов». Эти термины не совсем эквивалентны, но для целей этого ответа все в порядке.
В потоке SYN количество полученных пакетов составляет , а не . Скорее проблема в том, что каждый полученный SYN порождает полуоткрытый сокет, и на компьютере может существовать только конечное количество сокетов.
Вы предлагаете насыщать Queue
, который получает пакеты. Вы могли бы послать кучу пакетов для насыщения этого Queue
, и это будет нарушать экстент от Node
до некоторого , но это не будет имитировать поток SYN. Переполнение SYN работает, потому что порождается слишком много полуоткрытых сокетов, а не потому, что очередь пакетов заполнена.
Опять переполнение SYN работает, потому что реальный компьютер может иметь только конечное число сокетов. В ns-3, нет ограничения на количество гнезд на Node
.
Модель ns-3
It Возможно, вы не знакомы с моделью ns-3 . Я не виню тебя; есть крутая кривая обучения. В ns-3 Node
является эквивалентом компьютера / сервера / маршрутизатора в сети. К Nodes
прикреплены Applications
. В свою очередь, Applications
создает Sockets
для облегчения связи по сети.
Давайте теперь посмотрим на TcpSocket
, подкласс Socket
. TcpSocket
поддерживает свое состояние с помощью TcpTxBuffer
, TcpRxBuffer
и других переменных класса. Buffers
- это буферы classi c, используемые TCP для обеспечения надежной, упорядоченной и проверенной доставки / приема данных. Размер этих Buffers
ограничен, однако нет ограничений на число TcpSockets
, прикрепленных к Application
, и нет ограничения на число Applications
, прикрепленных к Node
. Если бы существовал такой предел, это помогло бы имитировать использование памяти, но в ns-3 такой модели не существует.
Эта запись в ns-3 Группах Google также описывает, почему вы не можете смоделировать потоки SYN без изменения исходного кода. Найдите в этой группе Google больше сообщений о DoS-атаках. В связанном посте описывается, как вы можете имитировать другие типы DoS-атак, но потоки SYN явно не поддерживаются.