相应的主题:

https://stackoverflow.com/questions/3613989/what-of-traffic-is-network-overhead-on-top-of-http-s-requests


最大段大小(不包括TCP或IP
头)通常在层之间协商为MTU的大小减去头的大小。对于以太网,MTU通常配置为1500字节。 TCP标头为160位或20个字节。 IPv4标头的固定部分是160位或20个字节。 ……因此:


用于TCP / IPv4上的HTTP

开销= TCP + IP = 40字节

有效负载= 1500-40 = 1460字节

开销%= 2%(40 * 100/1460) br />
[  5] local 10.0.51.1 port 5001 connected with 10.0.51.20 port 45009
[  5]  0.0-10.0 sec   112 MBytes  94.1 Mbits/sec
[  4] local 10.0.51.1 port 5001 connected with 10.0.51.94 port 35065
[  4]  0.0-10.0 sec  1.10 GBytes   941 Mbits/sec


我可以通过将MTU提高到9000来将开销降低到将近2%:

为什么
实际的“带宽损耗”明显大于理论值?
如果公式缺少一些有价值的东西? >

#1 楼

以太网数据包1.5k

1500-20 B(IPv4)-20 B(TCP +校验和)= 1460 B DATA(和40 B开销)

添加40 B + 14 B(以太网)+ 4 B(FCS)+ 12 B(帧间间隙)+ 8 B(前导)= 78 B开销

78/1460 * 100 = 5.34%开销

1460 /(1460 + 78)* 100 = 94.93%吞吐量/吞吐量

1,000,000,000(1Gbit)* 94.93%= 949Mbit / s(0.949Gbit / s)

您测量的941Mbit / s给出了(949-941)/ 949 * 100 =理论值与实际值之间的0.84%的误差。


超大数据包9k-理论最大值>
(9000-40) / ( 9000 - 40 + 78 ) *100 = 99.14%  (Overhead 0.86%)  


1,000,000,000(1Gbit)* 99.14%= 991Mbit / s(0.99Gbit / s)

评论


也许还有慢启动功能的影响,但是我不确定它是否足够大。谢谢。 :)

–没药
15年7月15日在10:35

啊,以太网在帧末尾有一个4字节的FCS,让我将其添加到计算中。

– Pieter
15年7月15日在12:00

#2 楼

通常根据总数据大小来计算开销。这样,该数字就与效率值相匹配。 :8 + 12 = 20
L2开销-以太网头,FCS = 18
L3开销-IPv4头= 20
L4开销-TCP头= 20

L3最大数据包大小1500导致L1数据总大小为1500 + 18 + 20 = 1538字节,最大L4有效负载大小为1500-20-20 = 1460字节。


开销:78/1538 * 100%= 5.07%

效率:1460/1538 * 100%= 94.93%


9k超大框架(非802.3) ),您将获得


管理费用:78/9038 * 100%= .86%

效率:8960/9038 * 100%= 99.14%


这些是理论上的最佳情况。在现实生活中,您还会有一些硬件和操作系统开销会稍微影响效率值。卸载和多核中断控制等功能可以减少处理开销,并使您更接近理论数字(与高速NIC更为相关)。正如Pieter指出的那样,您所测量的结果看起来很现实。