如何计算网络速度:“goodput”或“goodput”带宽,还是真实带宽?
我正在尝试确定多层系统中服务器和各种客户端之间的延迟和带宽。我相信最容易获得的项目是“有效吞吐量”或有效应用程序层速率,但延迟有点难获得,但更难的是包括“窗口大小”和其他技术因素的真实带宽。
我正在寻找如何从客户端或服务器角度最准确地计算此值的描述......只要我能够在 Azure 上运行服务器。
我愿意(但不限于)使用 IIS 传输一系列字节、基于 TCP 的 WCF 服务,但解决方案需要基于 .NET。
更新
我对这个问题添加了赏金,因为那里有太多信息......但很多信息似乎相互冲突,或者缺少数据,特别是在 .NET 实现中。我最感兴趣的是 C# 或 Silverlight 的 2 个实现。
一些网络专家说我需要考虑 TCP 窗口大小的“慢启动”。
I'm trying to determine the latency and bandwidth between the server and various clients in a multi-tier system. I believe the easiest item to get is the "goodput" or the effective Application-layer rate, but the latency is a bit harder to get at, yet harder still is the true bandwidth that includes "window size" and other technical factors.
I'm looking for either a description of how to most accurately calculate this from either the client or server perspective... as long as I am able to run the server on Azure.
I'm open to (but not limited to) using IIS to stream a series of bytes, a TCP-based WCF service, but the solution needs to be .NET based.
UPDATE
I added a bounty to this question since there is so much information out there... and yet much seems to conflict each other, or have missing data, especially in a .NET implementation. I'm most interested in having 2 implementations C# or Silverlight.
Some networking Gurus have said I need to take the "slow start" of TCP window size into consideration.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我不想看到一笔丰厚的赏金被浪费,所以我将尝试用我所掌握的信息来回答我自己的问题。
[延迟]
使用 Silverlight 测量实际(在线)延迟和速度是不可能的,因为我们无法访问 TCP 套接字,也无法从沙箱访问此类低级接口。这也消除了“TCP SlowStart”。话虽这么说,但可以推断 WCF 延迟和 Goodput 带宽。
WCF 服务
和客户端:
}
[上传下载]
与通过使用 WCF 服务主机确定延迟的方式类似,可以通过下载一组已知(不可压缩)的数据来估计上传和下载速度。数据到客户端,然后返回。
以下博客讨论了通过 WCF 发送大数据的方法。这可以用于使用与上面类似的方式来计算发送/传输数据的速度。
http://kjellsj.blogspot.com/ 2007/02/wcf-streaming-upload-files-over-http.html
I hate to see a good bounty go to waste so I'll attempt to answer my own question with the information I have available.
[Latency]
Measuring actual (on the wire) latency and speed using Silverlight is not possible, since we don't have access to TCP sockets and can't access such low-level interfaces from the sandbox. That also kills the "TCP SlowStart" as well.That being said, it's possible to infer WCF latency and Goodput bandwith.
WCF Service
And the client side:
}
[Upload Download]
In a similar manner that Latency is determined by using a WCF service host, upload and download speed can be estimated by downloading a known (uncompressable) set of data to the client, and back.
The following blog discusses an approach to send large data over WCF. This can be used to calculate the speed in which data is sent/transmitted using a similar manner as above.
http://kjellsj.blogspot.com/2007/02/wcf-streaming-upload-files-over-http.html
一段时间以来,我一直在考虑一种技术,它可以在确定延迟方面产生不错的结果。
如果客户端和服务器具有非常高精度的同步时钟(针对常见的低延迟源;即:time.nist.gov),只需将服务器上的当前时间戳发送到客户端即可允许客户端比较其时间本地时间与服务器时间。时间戳的差异会产生延迟。
这可以与大型“虚拟”文件传输结合使用,以确定持续传输期间和不同网络负载下的延迟。
I've been considering a technique for a while that could produce decent results with regard to determining latency.
If the client and the server have synchronized clocks with very high accuracy (against a common, low-latency source; i.e.: time.nist.gov), simply sending the current timestamp on the server to the client would allow the client to compare its local time with the server's time. The difference in timestamps would yield the latency.
This could be used in combination with large "dummy" file transfers to determine latency during sustained transfers and under different network loads.
您是否尝试过 WCF 跟踪和消息日志记录?如果您在服务和客户端上打开跟踪消息日志记录,则可以打开 服务跟踪查看器并检查所有端到端信息。
Did you try WCF tracing and message logging? If you turn on tracing ane message logging on the service and also on clients you can open all logs in Service trace viewer and check all end to end information.