Tcp iperf如何计算网络统计数据

Tcp iperf如何计算网络统计数据,tcp,udp,iperf,Tcp,Udp,Iperf,iperf是测量网络统计数据(如损耗、吞吐量、抖动)的绝佳工具。我经常用它。但是,我只是想知道它是如何计算这些统计数据的。对于吞吐量,它可以简单地测量在一定时间段内接收到的字节数;对于抖动,它只能测量数据包到达时间。但是,对于UDP丢失,它如何计算。我的猜测是,它通过嵌入序列号来构造有效负载。因此,服务器可以预测哪些数据包丢失。有人知道iperf数据包有效载荷的内容吗 另一件事是,在连接结束时,iperf客户端(发送方)将收到一个服务器报告(包含统计信息)。此报告发送到哪个端口号?此报表使用TC

iperf是测量网络统计数据(如损耗、吞吐量、抖动)的绝佳工具。我经常用它。但是,我只是想知道它是如何计算这些统计数据的。对于吞吐量,它可以简单地测量在一定时间段内接收到的字节数;对于抖动,它只能测量数据包到达时间。但是,对于UDP丢失,它如何计算。我的猜测是,它通过嵌入序列号来构造有效负载。因此,服务器可以预测哪些数据包丢失。有人知道iperf数据包有效载荷的内容吗

另一件事是,在连接结束时,iperf客户端(发送方)将收到一个服务器报告(包含统计信息)。此报告发送到哪个端口号?此报表使用TCP还是UDP?我无法使用tcpdump捕获它


我试图在网上搜索,以找到我上述问题的答案。但是,我只能找到如何使用iperf。似乎没有文件/网站解释iperf的工作原理。有人能提供一些见解或指出一些文档吗?

我不是iperf开发人员,但查看源代码,很容易找到将数据包计数复制到udp消息的位置,请在此处查找数据包计数:

我查看了源代码,还为iperf3获取了一些tcpdump。我对iperf3有以下理解

在iperf UDP数据包中,发送方将时间戳和序列号(iperf源代码称之为pcount)写入有效负载。一旦接收器得到数据包,它就提取抖动的时间戳,以及数据包丢失计数的序列号

通过比较时间戳和当前时间来计算抖动,首先找到延迟D_current。然后,找到| D|u current-D|u previous |(该差抵消了发送方和接收方之间的时钟同步),以产生抖动

损失只是将当前pcount与之前收到的pcount加上1的预期pcount之间的差值累加

无论是iperf udp(客户端带有选项-u)还是tcp,当iperf启动时,将建立一个控制tcp连接。此控制TCP连接用于在测试结束时交换客户端和服务器端统计数据,包括上面计算的CPU UTIL、抖动和损耗

从iperf2日志中,我找不到控制TCP连接