如何衡量网络压力?

时间:2014-11-17 10:30:32

标签: networking optimization tcp measurement

假设我正在构建自己的下载加速器。

让我们将其简化为:

  • 我的代码在第三方运行,其网络参数我无法控制
  • 从单个IP
  • 下载项目
  • 可以调整并行范围传输的数量
  • 学习理想参数会有很多转移
  • 客户端运行Linux
  • 服务器无法控制
  • 路径通过WAN,下载通过HTTPS
  • 下载的细分受众群

如何测量是否有足够的连接来使客户端和服务器之间的路径饱和?

来自getsockopt(..., TCP_INFO)的哪些位实际上有用?

我可以根据不同的网络条件调整多快?

可以测量客户端系统的CPU和内存压力,网络压力如何?

1 个答案:

答案 0 :(得分:2)

答案非常简单:一个TCP连接足以使客户端和服务器之间的路径饱和。

至少,客户端和服务器之间的标准TCP / IP协议和标准网络设备也是如此。如果路径中有一些设备正在进行某种自定义处理,那就是“限制”#34;那么单个TCP连接可能答案是不同的。但在这种情况下,除非您准确指定自定义处理是什么,否则无法回答。正如其他人所评论的那样,在大多数情况下,网络流量整形或限制可能是基于IP地址而不是基于TCP报头进行的,因此创建额外的TCP连接并不会有所帮助。如果您的情况不同,那可能会有趣 - 请进一步解释。

在我看来(只是一种意见,你当然可能不同意)关于构建自定义"下载加速器"的问题的真正答案。是:不要这样做。 TCP的工作原理非常好。除了一些特殊情况(例如SCPS-TP)之外,您不太可能通过使用多个连接或弄乱套接字选项来提高TCP性能。如果您确实设法提高性能,那么您可能会以降低其他用户的整体网络性能为代价。这是不明智的。