计算 1G 的吞吐量 link

calculate throughput for 1G link

我想计算 1G 以太网上的最大网络吞吐量 link。我了解如何以 packets/sec 为单位估算 64 字节帧的最大速率:

IFG             12 bytes
MAC Preamble    8 bytes
MAC DA          6 bytes
MAC SA          6 bytes
MAC type        2 bytes
Payload         46 bytes
FCS             4 bytes
Total Frame size  -> 84 bytes

现在对于 1G link 我们得到:

1,000,000,000 bits/sec * 8 bits/byte => 1,488,096 fps

据我了解,这是数据 link 的表现,对吗? 但是如何计算不同数据包大小(即 64,128...1518)的每秒兆位吞吐量?另外,如何计算 UDP/TCP 吞吐量,因为我必须考虑 headers 开销。

谢谢。

以太网上的最大吞吐量 = (Payload_size / (Payload_size + 38)) * Link 比特率

即如果您发送 50 字节的有效负载数据,对于 1G link,最大吞吐量将为 (50 / 88) * 1,000,000,000,或大约 568 Mbit/s。如果发送 1000 字节的负载,最大吞吐量为 (1000/1038) * 1,000,000,000 = 963 Mbit/s.

IP+UDP 增加了 28 个字节的 headers,所以如果你正在寻找通过 UDP 的数据吞吐量,你应该使用这个公式:

UDP 上的最大吞吐量 = (Payload_size / (Payload_size + 66)) * Link 比特率

并且 IP+TCP 添加 40 个字节的 headers,因此将是:

TCP 上的最大吞吐量 = (Payload_size / (Payload_size + 78)) * Link 比特率

请注意,这些是乐观的计算。 IE。实际上,您可能在 header 数据中有额外的选项,这些选项会增加 header 的大小,从而降低负载吞吐量。您也可能有丢包导致性能下降。

查看有关以太网框架的维基百科文章,尤其是 "Maximum throughput" 部分:

http://en.wikipedia.org/wiki/Ethernet_frame