我不想做任何疯狂的事情 - 只是测量客户端到服务器的下载和上传速度。
在服务器上我运行:
iperf3 -s
在客户端我运行:
iperf3 -c IP_ADDESS
这些是我的结果:
Connecting to host IP_ADDRESS, port 5201
[ 4] local LAN_IP port 2722 connected to IP_ADDRESS port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.01 sec 256 KBytes 2.08 Mbits/sec
[ 4] 1.01-2.01 sec 128 KBytes 1.05 Mbits/sec
[ 4] 2.01-3.01 sec 128 KBytes 1.05 Mbits/sec
[ 4] 3.01-4.01 sec 128 KBytes 1.05 Mbits/sec
[ 4] 4.01-5.01 sec 128 KBytes 1.05 Mbits/sec
[ 4] 5.01-6.01 sec 128 KBytes 1.05 Mbits/sec
[ 4] 6.01-7.01 sec 128 KBytes 1.05 Mbits/sec
[ 4] 7.01-8.01 sec 128 KBytes 1.05 Mbits/sec
[ 4] 8.01-9.01 sec 0.00 Bytes 0.00 bits/sec
[ 4] 9.01-10.01 sec 128 KBytes 1.05 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-10.01 sec 1.25 MBytes 1.05 Mbits/sec sender
[ 4] 0.00-10.01 sec 1.07 MBytes 896 Kbits/sec receiver
iperf Done.
我知道它首先告诉您它连接到什么,然后每 1 秒(默认情况下)报告它在这 1 秒内的表现如何。什么是:
- 结果?默认情况下,数据从客户端发送到服务器(除非指定 -R,在这种情况下,情况相反)。那么如果这是单向传输的结果,为什么结果中有 2 行呢?
- ID 值。就我而言,他们都是 4 个人。
进行反向传输时:
iperf3 -c IP_ADDRESS -R
结果包括一个额外字段:
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 3.02 MBytes 2.53 Mbits/sec 21 sender
[ 4] 0.00-10.00 sec 2.94 MBytes 2.46 Mbits/sec receiver
该Retr
字段是否意味着 TCP 必须重新传输 21 个数据包?
答案1
我有同样的问题,所以我深入研究代码并希望找到正确的答案。
两条线显示两侧的测量值。有人可能会说这些结果应该是相同的。但正如您在两个结果中看到的那样,接收方测量的数据少于发送方。主要原因是测量是按时间划分的。例如,当您测量 10 秒(从第一个数据包开始)时,您发送了 n 个数据包,但接收方可能会在第一个数据包之后 10 秒以上收到最后一个数据包。所以这些都不算。另外还有丢包的情况。
这充满了
sp->socket
.所以最后这是套接字的文件描述符(转换为 int)。尝试带着-P
旗帜跑步。您将看到每个连接/套接字有不同的 ID。你的假设部分正确。该字段代表
sp->result->stream_retrans
.所以这些都是重传。该字段仅在出现重传时显示(0 不显示)。所以这应该与方向无关。