質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Q&A

解決済

1回答

3967閲覧

iperf3を使用してRTTを計測したい

man_

総合スコア45

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

0グッド

0クリップ

投稿2021/05/06 03:59

#やりたいこと
iperf3を使用して、フローのRTTを計測し,1秒間隔で出力したいです。

#躓いている点
以下のサイトを参考に,iperf3の仕様を調査していました。
https://qiita.com/yokoc1322/items/bfd8b6e69d6bdb3bb1c6

iperf3では、Json形式で出力した場合、RTTが出力されます。しかし、'-J'を使わずに実行した場合RTTは出力されません。

そこで、iperf3を使用して、RTTを毎秒出力する方法はありますでしょうか?
また、iperf3以外で、スループットとRTTを毎秒出力できるツールはありませんか?

有識者の方々、ご助力の程よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

jq公式サイト ) にパイプする方法ではいかがでしょう。
rrt のみを抽出したいのであれば、次のようなコマンド実行です。

shell

1$ iperf3 -c 192.168.10.12 -J -t 3 --get-server-output | jq '.intervals[].streams[].rt 2t' 3157 4223 5258

ここで出てきた数値が rtt です。

他の結果も合わせて画面に出したい場合

-J の JSON 形式のオプションを付けて出力すると、毎回表示されている項目は、この "intervals" の "streams" 以下

JSON

1 "intervals": [{ 2 "streams": [{ 3 "socket": 4, 4 "start": 0, 5 "end": 1.000113, 6 "seconds": 1.000113, 7 "bytes": 15215584, 8 "bits_per_second": 121710917.399750, 9 "retransmits": 301, 10 "snd_cwnd": 189688, 11 "rtt": 326, 12 "omitted": false 13 }],

ここから「.rtt」「.snd_cwnd」「.bits_per_second」を jq で抽出するには、このように実行します。

shell

1$ iperf3 -c 192.168.10.12 -J -t 3 --get-server-output | \ 2 jq '.intervals[].streams[] | .rtt, .snd_cwnd, .bits_per_second' | \ 3 xargs -n 3 4208 209960 124086877.70698 5523 160728 89108490.511791 6239 225888 93330719.108345

投稿2021/05/06 21:48

編集2021/05/07 20:31
zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

man_

2021/05/07 01:29

zembutsuさん回答ありがとうございます。 スループットやCwndも合わせて取得したい場合はどのようなコマンドになりますか?
zembutsu

2021/05/07 20:30

回答を編集して追記しました。
man_

2021/05/09 08:49

zembutsuさん回答ありがとうございます。 コマンドを実行することができました。 しかし、私は値の出力を通信終了後にまとめてではなく、毎秒1つずつ出力させたいです。そのように出力を変更することは可能でしょうか?
zembutsu

2021/05/09 21:29

iperf3ではそのような機能が無いので無理ですね。 watchコマンドを組み合わせて、擬似的に出すようなことは出来ると思います。 あとは、用途が異なりますが、サーバとの通信時間を知りたいのが目的で、 HTTP/HTTPS の通信でも構わないのであれば httping を使う方法もあります。
man_

2021/05/10 02:39

回答ありがとうございます。 TCPのフローに機械学習を適用したく、スループットやRTTをリアルタイムで取得する方法を調べていました。 そのため、watchコマンドで繰り返した場合、輻輳制御手法の結果に影響がありそうなので他の方法を検討してみます。 今回はありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問