問題タブ [iperf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Runtime.getRuntime().exec() androidでiperfコマンドを正しく実行する方法
Android デバイスで iperf サーバーとクライアントを実行しようとしているので、exec() を使用してアプリを開発しました。ls、ping などのコマンドでは問題なく動作していますが、 iperf -sを実行しようとするとエラーが発生しました。コードは次のとおりです。マニフェストファイルにインターネット許可を追加しました。助けていただければ幸いです
iperf コマンドの作業ディレクトリと環境は??
次のエラーが発生しました
wifi - IPERF; 隣接する Wi-Fi チャネルでのパケット損失
2 つの iperf クライアントとサーバーがあります。どちらも5GHz。どちらも20MHzチャンネルです。1 つの iperf クライアントはチャネル 36 を介してデータを送信し、もう 1 つはチャネル 40 を介してデータを送信しています。両方のチャネルで同時にデータを送信すると、大きな損失が発生しますが、いずれかの iperf クライアントを介してデータを送信するとほとんど損失はありません。このシナリオの考えられる理由は何ですか? そして、それらを修正する方法は?
注: これらのチャネルで動作している他の Wi-Fi デバイスはありません。実験は部屋に設置されているので、範囲は問題になりません。UDP が使用されています。
iperf サーバー コマンド:
iperf -s -u -w 320k
iperf クライアント コマンド:iperf -c 192.168.XX.XXX -u -w 320k -t 10 -i 1 -b 300M
python - haproxy の Iperf を使用した udp トラフィック
私は、Docker Container を使用した Haproxy の「パフォーマンス評価」に関する個人的なプロジェクトに取り組んでいます。私は Python でプログラミングしており、トラフィックの生成に iperf を使用しています。
クライアントとサーバーとしていくつかの Docker コンテナーを作成しました。クライアントは、ロード バランサーとして機能する Haproxy コンテナーを介してサーバーに udp トラフィックを送信することになっています。
問題は、クライアントからサーバーに udp トラフィックを送信しようとすると、Haproxy が接続を拒否することです。公式ドキュメントには、UDP ポートをバインドまたはリッスンする方法が見つかりませんでした。
(前もって)ご返信に感謝いたします。
これが私のhaproxy.cfgのコピーです。
global
quiet
nbproc 4
daemon
listen tcp_haproxy 172.17.4.230:5001
balance roundrobin
server server0 172.17.4.227:5001
server server1 172.17.4.228:5001
server server2 172.17.4.229:5001
linux - net.core.rmem_max より大きい TCP 受信ウィンドウ サイズ
iperf
10Gbit リンクを介して接続された 2 つのサーバー間で測定を実行しています。観察した最大ウィンドウ サイズをシステム構成パラメーターと関連付けようとしています。
特に、最大ウィンドウ サイズが 3 MiB であることを確認しました。ただし、システム ファイルに対応する値が見つかりません。
実行するsysctl -a
と、次の値が得られます。
最初の値は、最大受信ウィンドウ サイズが 6 MiB であることを示しています。ただし、TCP は要求されたサイズの 2 倍を割り当てる傾向があるため、受信ウィンドウの最大サイズは、私が測定したとおり 3 MiB である必要があります。からman tcp
:
TCP は、setsockopt(2) 呼び出しで要求されたバッファーのサイズの 2 倍を実際に割り当てるため、後続の getsockopt(2) 呼び出しは、setsockopt(2) 呼び出しで要求されたのと同じサイズのバッファーを返さないことに注意してください。TCP は管理目的と内部カーネル構造のために余分なスペースを使用し、/proc ファイルの値は実際の TCP ウィンドウと比較してより大きなサイズを反映しています。
ただし、2 番目の値 はnet.core.rmem_max
、最大レシーバー ウィンドウ サイズが 208 KiB を超えることはできないことを示しています。によると、これはハードリミットであると想定されていますman tcp
。
tcp_rmem max: 各 TCP ソケットが使用する受信バッファの最大サイズ。この値はglobalをオーバーライドしません
net.core.rmem_max
。これは、ソケットで SO_RCVBUF を使用して宣言された受信バッファーのサイズを制限するためには使用されません。
で指定されたものよりも大きな最大ウィンドウ サイズが表示されるのはnet.core.rmem_max
なぜですか?
注意: 帯域幅と遅延の積も計算しました。window_size = Bandwidth x RTT
これは約 3 MiB (10 Gbps @ 2 ミリ秒 RTT) であり、トラフィック キャプチャを検証しています。
python - Mininet ネットワークを介して「ランダムな」トラフィックを送信する
Mininet を使用してデータセンターのルーティングアルゴリズムをテストしたいと考えています。トラフィックは、特定のパラメーターに準拠する必要があります。
- さまざまなサイズの「ファイル」で構成する必要があります (これらは実際にファイルである必要はないことに注意してください。サイズが制御可能である限り、たとえば iperf で生成されるトラフィックは問題ありません)。
- ファイル サイズは、特定のディストリビューションから取得する必要があります。
- データが送信されるソース/宛先ホストのペアは、特定のファイルに対してランダムに選択する必要があります。
- ファイルが送信されてから後続のファイルが送信されるまでの間隔はランダムにする必要があります。と
- 転送に時間がかかる 2 つのホスト間で巨大なファイルが送信された場合でも、ネットワーク内の他のホスト間でデータを送信できるはずです。
ポイント1~4はお世話になっています。私は何日も #5 に苦労してきましたが、正しく動作させることができません。私の最初の考えは、サブプロセス/スレッドを生成して、iperf コマンドをホストに送信することでした。
コマンド test_custom_iperf は、Python Mininet API のバージョンの iperf をモデルにして、-n
転送サイズ パラメーターを含めます。
このノンブロッキングにするのは非常に困難でした。何らかの理由でコマンドを送信できるようにする必要があり、server.sendInt()
これを行うには、クライアントのコマンドが完了するまで待つ必要があります。
この作業を行うために何ができるかについてのアドバイスをいただければ幸いです。
bash - bashスクリプトで目的の時間関数を実行中にプログレスバーを描画する
[===> ] 20% 完了など、完了する関数のパーセンテージを与えながらプログレス バーを追加したい。たとえば、使用するコードがあり、必要なiperf
期間を指定します。
server - PyQt4: iperf3 を開始する QProcess がサーバーに接続できない
これが私がやろうとしていることです: PyQt4 を使用して GUI プログラムを構築し、2 台のコンピューター間の接続のテストを容易にします (人的エラーを最小限に抑えるため)。したがって、このプログラムの一部は、QProcess を使用して、クライアントまたはサーバーとして機能する iperf3 を開始することです。QProcess は正常に iperf3 を開始して結果を出力できましたが、ターミナルからサーバーに接続できたにもかかわらず、何らかの理由で PyQt の iperf3 クライアントがサーバーに接続できません。
サーバーとクライアントとして機能する状況と組み合わせの簡単な説明を次に示します。
- クライアントとしてのターミナルの iperf3 -> サーバーとしての PyQt の iperf3 - 成功
- クライアントとしてのターミナルの iperf3 -> サーバーとしてのターミナルの iperf3 - 成功
- クライアントとしての PyQt の iperf3 -> サーバーとしての PyQt の iperf3 - 接続できません
- クライアントとしての PyQt の iperf3 -> サーバーとしてのターミナルの iperf3 - 接続できません
ファイアウォールを確認し、無効にして問題が解決するかどうかを確認しましたが、解決しませんでした。念のため、ターミナルで iperf3 に使用したコマンドについて知りたい場合は、次のとおりです。
- クライアント - iperf3 -c 127.0.0.1 -u -t 10
- サーバー - iperf3 -s
QProcessに関しては:
- self.process.start('iperf3',['-c 127.0.0.1 -u -t 10'])
- self.process.start('iperf3',['-s'])
さらに詳しい情報が必要な場合は、お知らせください。この問題に関するヘルプ/洞察に感謝します。ところで、私はこのプログラムを今のところラップトップでローカルにテストしているので、ループバック アドレスを確認する必要があります。