计算网络吞吐量

时间:2012-12-04 20:33:59

标签: tcp ip ethernet throughput

假设我有一个4MB的网络,我想计算数据吞吐量,这是考虑最大传输速率减去以太网/ IP / TCP报头的开销。 在网上阅读我发现TCP段的MSS(最大段大小)是576 - 20 - 20,最后两个是TCP和IP头开销,导致93%的数据,这意味着我只会使用我的4MBits中有93%用于传输数据。现在链接ayer开销在哪里?不应该加上它吗?如果我没有错,那么以太网头大约是46字节,所以最终的总和将是576 - 20 - 20 - 46 = 490,导致85%的数据吞吐量,但我做错了吗?

2 个答案:

答案 0 :(得分:3)

只需自下而上。常规以太网帧(没有巨型帧,没有vlan标记)总共为1542 bytes,并且可以具有1500 bytes的有效载荷。没有选项的Ipv4头是20 bytes,没有选项的TCP头也是20 bytes。因此,您最终会获得1460 bytes链路层帧的1542 byte可能的有效负载。因此,您的效率为1460/1542=0.9468223086900129,最大吞吐量为3.7872892347600517Mbps

请注意,这通常会更低。这是在建立TCP会话之后以及您是该链接的唯一用户时,您可以在全双工链路上获得的连续流的理论最大速率。另请注意,一旦您以稍高的速率发送链接将会出现拥塞,您将看到丢弃,并且由于启动缓慢,您的实际TCP吞吐量可能会显着下降。

如果链接是无线的(802.11),由于RTS / CTS机制,计算会变得复杂得多,但对于只有一个活跃用户来说它只有/2而且没有合并损失,这是不现实的。

答案 1 :(得分:2)

通常,协议会影响网络吞吐量,而不仅仅是数据包开销。您提到要测量以太网/ IP / TCP网络上的吞吐量,但这些协议的数据包开销的影响并不是唯一要考虑的因素。 TCP是面向连接的协议,并使用ACK来发信号通知是否已接收到数据包。 user1777914错过了关于ACK的标记,但却出现了一些问题 - 它们不再占用空间,但它们可以延迟数据包的传输。随着延迟的增加,整个网络吞吐量可能会根据应用程序或托管操作系统预期响应的频率而降低。

W上。理查德史蒂文斯撰写了一本关于TCP / IP的令人惊叹的书。 Here除了解释理论TCP性能,影响它以及如何计算之外的其他因素。

Nagle算法也有助于延迟,但如果禁用则会降低吞吐量。