web-dev-qa-db-ja.com

iperfおよびtcpdumpでのパケット損失率

回線のリンク品質をiperfでテストしました。測定された速度(UDPポート9005)は96Mbpsでした。これは、両方のサーバーが100Mbpsでインターネットに接続されているためです。一方、データグラム損失率は3.3〜3.7%であり、少し多すぎることがわかりました。高速転送プロトコルを使用して、tcpdumpで両側のパケットを記録しました。パケット損失を計算したよりも-平均0.25%。この大きな違いがどこから来ているのか、誰か説明がありますか?あなたの意見では、許容できるパケット損失とは何ですか?

10
stefita

CPUが追いつけない結果として、UDPモードのiPerfで大幅なデータ損失が発生しました。何らかの理由で、UDPを使用したiPerfは、TCPを使用したiPerfよりもはるかにCPUを集中的に使用するようです。 iPerfをレートの半分に設定すると、同じ損失率が発生しますか?

許容できるパケット損失の量に関する2番目の質問に答えるには、実際に実行しているアプリケーション、取得したトラフィックの量によって異なります。実際には、帯域幅の制限を下回っていても損失はありません。ほとんどの場合、おそらく.25%についてあまり文句を言わないでしょうが、本当に高いレートで実行している場合は、それでも多くの損失です。

[編集1]このトピックについて私が持っていた他のいくつかの考え:

  1. IPerfのレートを増やしてみてください。どこかに体系的な問題がある場合、どのような率であっても同じ割合の損失が発生する可能性があります。ハードウェアの限界に達している場合、またはプロバイダーが何らかの [〜#〜] red [〜#〜] を実行している場合、特定のレートまでは損失がない可能性が高く、その後、あなたが行くよりも高いほど段階的に悪化する損失。
  2. テストが正確であることを確認するために、iPerfセッションのtcpdump測定を行います。
  3. TCPでiPerfを試してください。これは損失を報告しませんが、損失が発生している場合、接続は非常に大きくスケールアップできません。レイテンシもこれに影響するので、レイテンシができるだけ少ないエンドポイントにテストしてください。
  4. 接続の内側にあるギアに応じて、できるだけ近づけてください。例えば。テストシステムとEdgeルーターの間に複数のスイッチがある場合は、直接接続されているスイッチに移動します。
  5. マネージドスイッチがある場合は、その統計情報をチェックして、そこで損失が発生していないことを確認します。 100Mbpsに近いUDPトラフィックが得られるとドロップが始まる安価なスイッチがいくつか見つかりました(ただし、ほとんどが古くて安価な非管理型スイッチ)。
  6. 2つの異なるクライアントから2つの異なるホストに同時にiPerfsを試してください。これにより、制限がCPUや安価なローカルNICカードの結果ではないことを確認できます。
3
Jed Daniels

Tcpdumpを使用して計算したパケット損失がiperfと一致することを確認するために、iPerfを使用しているときにtcpdumpを使用してパケット損失をチェックしましたか?

測定方法が比較できないことに気付くかもしれません。

0
Craig

まあ、TCPには、1つのフローの利用率を最大化するメカニズムがありますが、UDPにはありません。そのため、各アプリケーションは独自のメカニズムを作成する必要があるため、おそらく各アプリケーションは異なるアプローチを使用しますおそらく、Iperfは、情報が受信されたかどうかを気にせずに、使用可能な最大帯域幅に到達しようとするため、より多くのパケットが失われることを許可します。他のアプリケーションは、多くのパケットを失わないようにして、パケットレートを下げます。接続で利用可能なスループットに。

0
Pipe

iperfは、UDPで順番どおりに到着しないパケットを自動的に破棄しますか?接続のジッターを少し見ているかもしれません。

0
Lloyd Baker