根据数据包大小、请求速率和延迟计算 UDP 带宽

根据数据包大小、请求速率和延迟计算 UDP 带宽

我需要估算要编写的使用 UDP 的测量应用程序的带宽。我对这些数字很了解,但不确定如何将它们组合在一起。我检查了一些吞吐量计算器,例如,但大多数是针对 TCP 的,因此并不完全适用。

  • UDP 请求:<100 字节(完整的数据包,就像在 tcpdump 中看到的那样)
  • UDP响应:<200字节
  • 请求-响应之间的延迟:平均 80ms
  • 将会有 N(例如 80)个并行线程持续运行。处理响应会花费一些时间,但为了回答这个问题,我们先忽略这一点,并假设理想情况是请求在响应之后立即发出。

答案1

您应该问的问题是,您每秒需要处理多少个请求。您的问题中没有包含该数字,因此无法正确回答原始问题。

不过,我可以回答您问题中的几个数字。

首先,您提到请求大小为 100 字节,回复大小为 200 字节。回复大于请求的 UDP 服务可能会被滥用进行反射攻击。这是在设计基于 UDP 的协议时必须考虑到的一点。

另一个重要的考虑因素是杂散数据包可能会被错误地解释为请求。

您提到了使用 80 个线程的可能性。基于 TCP 的服务主要使用大量线程,因为它们通常设计为每个连接都需要一个线程,而该线程可能花费大量时间等待客户端。

在基于 UDP 的服务中不会出现这样的等待时间。这意味着,如果您希望所有 80 个线程都并行进行实际处理,则应该只使用 80 个线程。要让 80 个线程并行进行实际处理,需要一台功能非常强大的机器。

如果您在没有首先对客户端 IP 地址进行验证的情况下进行大量处理,那么您很容易成为 DoS 攻击的目标。

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

相关内容