我想模拟一个在DDoS TCP攻击下的网络,并评估一个新解决方案的性能,并与其他解决方案进行比较。我本来打算用NS3来做这件事,但是我在互联网上读到,我不能很好地使用descret事件网络模拟器(NS3是一个descret事件网络模拟器),我想知道为什么吗?最好的选择是什么?
发布于 2020-03-27 23:01:36
不幸的是,DoS攻击不能在ns-3中模拟.通过扩展,也不能模拟DDoS攻击。
DoS攻击是如何工作的?
要理解ns-3不能模拟DoS攻击的原因,我们首先需要了解DoS攻击是如何工作的。正如您提到的,TCP洪泛是模拟DoS攻击的一种方法。为什么要这么做?嗯,任何计算机都有有限的资源,例如内存和磁盘空间。当计算机接收到SYN时,它会创建一个套接字以方便通信。由于资源有限,只能创建有限数量的套接字。因此,DoS攻击是通过在网络上使用SYNs压倒计算机来工作的,从而迫使计算机分配许多不会被使用的套接字。在某种程度上,计算机必须简单地拒绝任何连接,甚至合法连接。这是DoS攻击成功的时候。
为什么ns-3不能模拟它?
在ns-3中,没有关于Node
具有有限资源的概念。Queues
在Nodes
中可以有有限的大小,但是没有办法限制Node
上活动连接的数量。因此,无法模拟DoS攻击。
A(势)解
贡献给ns-3!访问gitlab回购,并尝试添加您想要的功能。
对意见的答复
ns-3中的TCP
我使用“活动连接的数量”作为等效的“套接字数量”。这些术语并不完全等同,但就这个答案而言,没关系。
在SYN洪流中,接收的数据包数量不是问题。相反,问题是每个接收到的SYN都会产生一个半开放的套接字,而计算机上只能存在有限数量的套接字。
您建议将接收数据包的Queue
饱和。您可以发送一堆数据包来填充这个Queue
,这会在一定程度上破坏Node
,但这不会模拟SYN泛滥。SYN泛滥是因为产生了太多半开放的套接字,而不是因为数据包队列已满。
同样,SYN洪水可以工作,因为真正的计算机只能有有限数量的套接字。在ns-3中,Node
上的套接字数量没有限制.
ns-3模型
看来你可能不熟悉ns-3的模型。我不怪你,有一条陡峭的学习曲线。在ns-3中,Node
相当于网络上的计算机/服务器/路由器。附在Nodes
上的是Applications
。反过来,Applications
创建Sockets
以方便通过网络进行通信。
现在让我们看看TcpSocket
,Socket
的一个子类。TcpSocket
通过TcpTxBuffer
、TcpRxBuffer
和其他类变量维护其状态。Buffers
是TCP用来确保可靠、有序和错误检查的数据传递/接收的典型缓冲区。这些TcpSockets
的大小是有限的,但是附加在 Application
**,上的 Buffers
的数量是没有限制的,如果存在这样的限制,那么附加到 Node
**.**上的** Applications
的数量也没有限制,这将有助于模拟内存的使用,但是在ns-3中不存在这样的模型。
这在ns-3谷歌群组上的文章还描述了为什么你不能在不改变源代码的情况下模拟SYN洪流。搜索谷歌集团的更多关于DoS攻击的帖子。链接文章描述了您如何能够模拟其他类型的DoS攻击,但并不显式地支持SYN洪流。
https://stackoverflow.com/questions/60894176
复制相似问题