この記事のディレクトリ
現在のネットワークは通常、帯域幅が広いため、中間デバイスによる遅延が発生すると、ネットワークが長く太くなるという問題が発生しやすくなります。「ロング ファット ネットワークと TCP ロング ファット パイプライン」の記事を通じて、TCP ロング ファット パイプラインでは、TCP のパフォーマンスが非常に低く、ネットワーク帯域幅を最大限に活用することが難しいことをすでに知っています。このようなネットワークをテストすると、ネットワークの最大スループットを得ることができます。量、iperf3 を正しく使用する方法、iperf3 のパラメータを正しく設定する方法。
1. TCPロングファットパイプラインの2つの特徴
まず最初に、TCP ロングファット パイプラインの 2 つの主要な特徴を確認してみましょう。
- 伝送遅延(伝送遅延)が非常に小さく
、パケットの送受信速度が非常に速く、非常に短時間に大量のデータをネットワークに送信することができます。 - 伝播遅延は非常に大きく
、データ パケットがネットワークに送信されてから受信側に送信されるまでに (送信遅延に比べて) 長い時間がかかります。
2. TCPロングファットパイプラインでTCP接続データを送信する際の問題
これは問題を引き起こします。送信者が送信した最初のビットが受信者に到着する前に、送信者はすでに最後のビットを送信しており、ウィンドウは 0 になり、その後データの送信を停止し、受信者が ACK を通じてデータを戻すのを待ちます。通知ウィンドウが表示されると、そのウィンドウを開いて送信を続行できるため、TCP はデータを送信するために全帯域幅を占有することができなくなります。
3. iperf3 を使用して TCP Long-Fat パイプラインの TCP 接続の最大スループットをテストする方法
通常、1Gbps の帯域幅のネットワークでストリーミングする場合、最大 TCP スループットが 1Gbps に達することが期待されますが、前述の長くて太いネットワークの理由により、1Gbps に達しない可能性があります。
この問題を解決するには、主に 2 つの方法があります。
3.1. 1 つの TCP 接続が帯域幅全体を占有することができない場合は、複数の TCP 接続を使用して帯域幅全体を占有することを検討してください。
-
-P パラメータを使用する
パイプが長く太いためウィンドウが十分ではなく、TCP ストリームが最大 100Mbps に達すると仮定すると、TCP 受信ウィンドウは TCP 接続ごとに個別に設定されます。つまり、各 TCP 接続は独自の受信ウィンドウを維持します。そこで、-P パラメーターを使用して 10 個の TCP 接続を同時に開始すると、安定化後、最大スループット (帯域幅) 10*100Mbps = 1Gbps に達することができます。
詳細については、「iPerf3 -P パラメータの詳細なグラフィック分析」を参照してください。 -
複数の iperf3 プロセスを使用する原理
は、-P を使用する場合と同じです。各 TCP 接続が独自の独立した受信ウィンドウを維持するため、より多くの TCP 接続を開くことができます。
詳細については、「大規模フロー テストのための複数の iperf3 プロセスの同時開始」を参照してください。
3.2. TCP ウィンドウを拡張してネットワーク使用率を向上させる
-
-w パラメータを使用して TCP ウィンドウを展開します。
詳細については、「iPerf3 -w パラメータの詳細なグラフィック分析」を参照してください。-w パラメータの実際の値は、Linux 実装によって制限されることに注意してください。一部の設定は最大値を超え、エラーが返されます。一部の設定が最大値を超えた場合は、パラメータを最大値に変更するだけで成功を返します。root 権限で使用でき、システム制限の最大値を変更するには echo コマンドを使用します。
/proc/sys/net/core/wmem_max
/proc/sys/net/core/wmem_default
/proc/sys/net/core/rmem_max
/proc/sys/net/core/rmem_default
echo 425984 > /proc/sys/net/core/rmem_max