压力测试 - 连接饱和度

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了压力测试 - 连接饱和度相关的知识,希望对你有一定的参考价值。

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

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

第一次,我以80Mbps的速度充斥了计算机。

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

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

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

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

怎么会这样?

答案

因此,在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个字节(加上标头)。

以上是关于压力测试 - 连接饱和度的主要内容,如果未能解决你的问题,请参考以下文章

各种性能测试的侧重点

游戏服务器压力测试总结

怎样测试服务器压力

压力测试报告

性能测试常见术语浅析

压力测试指标