通过具有以太网带宽(ethernet_bandwidth)的值来正确计算TCP(TCP / IP)的带宽吗?
生产带宽的一部分(标题除外):
part_of_productive_bandwidth =(MTU - 40)/ MTU
在一秒钟内回复所需的时间:
time_took_for_reply =(ethernet_bandwidth / TCP_receive_window)* ping
部分生产时间(期望回复除外):
part_of_productive_time =(1 - time_took_for_reply)/ 1
真正的bandwitdh:
real_bandwitdh = ethernet_bandwidth * part_of_productive_bandwidth * part_of_productive_time
或者:
real_bandwitdh = ethernet_bandwidth * (MTU - 40)/MTU *
(1 - (ethernet_bandwidth/TCP_receive_window)*ping)
例如:
ethernet_bandwidth = 1 Gbit/s = 125 000 000 B/s
MTU = 1500 B
TCP_receive_window = 128 KB = 131072 B
ping = 0.001 sec
real_bandwitdh = 125 000 000 * (1500-40)/1500 * (1 - (125 000 000/131072)*0.001) =
125 MB/s * 0.973 * 0.046 = 5.59 MB/s
是真的吗?
答案 0 :(得分:1)
为什么不坚持使用TCP图层统计信息?发送的包数* MTU除以所用的时间。基本上,TCP层显式不考虑任何带宽。整个发送速率估计(也就是窗口大小变化)是基于有多少数据包(在什么阶段 - 慢启动,拥塞避免)经历而没有达到重传。