压力测试 - 连接饱和度

时间:2013-12-19 17:02:32

标签: c# testing udp stress-testing

我在C#(UDP数据包flooder)中做了一个快速压力测试器。

我在家中使用另一台电脑作为测试目标。

第一次,我以80Mbps的速度充斥电脑。

在几秒钟内杀死了互联网连接(在目标计算机中),无法访问任何页面。

但是后来,我以1Gbps的速度淹没了目标计算机(比第一次攻击强10倍以上),令我惊讶的是,它没有扼杀互联网连接。

虽然1Gbps泛洪DID使互联网连接速度慢很多,但并没有消除它。几分钟后页面成功加载。是的,慢,但还活着。

但是在80Mbps的洪水中,即使一小时后,页面根本没有加载。 80Mbps完全杀了它。

怎么会这样?

1 个答案:

答案 0 :(得分:3)

因此,在80 Mbps时,您每秒发送2800万个数据包,而在1 Gbps时,您每秒发送16,400个数据包。问题不是数据量而是数据包数量。每个数据包的开销有一定的数量。不仅有数据开销,而且还有网络硬件和必须解码数据包的软件的切换开销。

如果您在80 Mbps测试中增加了数据包大小,它就不会失败。

对评论的回应

计算数据包的数量很简单,只需将数据速率除以数据包大小即可。每个数据包80 Mbps除以3个字节,大约有2800万个。

我不知道你用什么软件来产生洪水攻击。 UDP flood attack的重点是在短时间内发送尽可能多的数据包。所以你希望分组数据非常小。在1 Gbps测试中发送大数据包阻止它发送尽可能多的数据包。

UDP包头是8个字节。为在80 Mbps测试中使用的数据添加三个字节,并向上舍入(以允许可能的开销)为16个字节。您的1 Gbps测试使用了65,500字节或2 ^ 16(65,536)的数据包长度(包括标头)。因此,这些大数据包中的一个可以容纳2 ^ 12(4,096)个较小的数据包。使用两个线程只会使数据包速率加倍。它仍然没有接近您运行的数据包速率,然后数据包只有3个字节(加上标题)。