クレイジーなことはしたくありません。クライアントからサーバーへのダウンロードとアップロードの速度を測定するだけです。
私が実行したサーバーで:
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秒間のパフォーマンスを報告します。何ですか:
リバース転送を行う場合:
iperf3 -c IP_ADDRESS -R
結果には1つの追加フィールドが含まれます。
[ 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
フィールドは、21パケットをTCPによって再送信する必要があったことを意味しますか?
同じ質問があったので code を掘り下げ、正しい答えが見つかることを願っています。
2本の線は、両側からの測定値を示しています。これらの結果は同じであると主張する人もいるかもしれません。しかし、両方の結果からわかるように、受信者が測定したデータは送信者よりも少なくなっています。主な理由は、測定が時間分割されていることです。したがって、たとえば10秒間(最初のパケットから開始して)を測定すると、nパケットを送信しますが、レシーバーは最初のパケットから10秒を超えて最後のパケットを受信する可能性があります。したがって、これらはカウントされません。さらに、パケット損失があります。
これはsp->socket
で埋められます。結局、これはソケットのファイル記述子です(これはintに変換されます)。 -P
フラグを指定して実行してみてください。接続/ソケットごとに異なるIDが表示されます。
あなたの仮定は部分的に正しいです。このフィールドはsp->result->stream_retrans
を表します。これらは再送信です。このフィールドは、再送信が発生した場合にのみ表示されます(0は表示されていません)。したがって、これは方向に依存しないはずです。