回線のリンク品質をiperf
でテストしました。測定された速度(UDPポート9005)は96Mbpsでした。これは、両方のサーバーが100Mbpsでインターネットに接続されているためです。一方、データグラム損失率は3.3〜3.7%であり、少し多すぎることがわかりました。高速転送プロトコルを使用して、tcpdump
で両側のパケットを記録しました。パケット損失を計算したよりも-平均0.25%。この大きな違いがどこから来ているのか、誰か説明がありますか?あなたの意見では、許容できるパケット損失とは何ですか?
CPUが追いつけない結果として、UDPモードのiPerfで大幅なデータ損失が発生しました。何らかの理由で、UDPを使用したiPerfは、TCPを使用したiPerfよりもはるかにCPUを集中的に使用するようです。 iPerfをレートの半分に設定すると、同じ損失率が発生しますか?
許容できるパケット損失の量に関する2番目の質問に答えるには、実際に実行しているアプリケーション、取得したトラフィックの量によって異なります。実際には、帯域幅の制限を下回っていても損失はありません。ほとんどの場合、おそらく.25%についてあまり文句を言わないでしょうが、本当に高いレートで実行している場合は、それでも多くの損失です。
[編集1]このトピックについて私が持っていた他のいくつかの考え:
Tcpdumpを使用して計算したパケット損失がiperfと一致することを確認するために、iPerfを使用しているときにtcpdumpを使用してパケット損失をチェックしましたか?
測定方法が比較できないことに気付くかもしれません。
まあ、TCPには、1つのフローの利用率を最大化するメカニズムがありますが、UDPにはありません。そのため、各アプリケーションは独自のメカニズムを作成する必要があるため、おそらく各アプリケーションは異なるアプローチを使用しますおそらく、Iperfは、情報が受信されたかどうかを気にせずに、使用可能な最大帯域幅に到達しようとするため、より多くのパケットが失われることを許可します。他のアプリケーションは、多くのパケットを失わないようにして、パケットレートを下げます。接続で利用可能なスループットに。
iperfは、UDPで順番どおりに到着しないパケットを自動的に破棄しますか?接続のジッターを少し見ているかもしれません。