基于包大小,请求率和延迟的UDP带宽计算

我需要估计使用UDP编写的测量应用程序的带宽。 我对数字有很好的理解,但不知道如何把它们放在一起。 我检查了一些这样的吞吐量计算器,但是大多数是针对TCP的,所以不完全适用。

  • UDP请求:<100字节(完整的数据包,因为它会在tcpdump中看到)
  • UDP响应:<200字节
  • 请求响应之间的延迟:平均80ms
  • 会有N个(比方说80个)并行线程持续进行。 处理响应需要一些时间,但为了这个问题的目的,让我们忽略这一点,并假设在响应之后立即发出请求的理想情况。

您应该问的问题是,您需要每秒处理多less个请求。 这个数字从你的问题中缺失,因此原来的问题不能得到适当的回答。

然而,在你的问题中有几个数字我可以给出答案。

首先你提到一个100字节的请求大小和200字节的回复大小。 回应大于请求的UDP服务可能会被滥用于reflection攻击。 在devise基于UDP的协议时,这是必须考虑的事情。

另一个重要的考虑是可能将一个stream浪包误解为一个请求。

你提到使用80个线程的可能性。 基于TCP的服务主要使用大量的线程,因为它们通常被devise为每个连接都需要一个线程,而这个线程可能会花费很多时间来等待客户端。

基于UDP的服务中不会发生这种等待期。 这意味着如果您希望所有80个线程并行进行实际处理,则只应使用80个线程。 它需要一个相当强大的机器来并行执行80个线程的实际处理。

如果你没有先做自己的客户IP地址validation,而是处理繁重的处理,那么你将成为DoS攻击的一个简单目标。

如果你正在实现一个基于UDP的协议,并且你正在使用多个线程,那么你可能做错了。