NIC による一貫性のないパケット配信、NIC パフォーマンス測定
-
22-09-2019 - |
質問
当社の顧客の 1 人が、ストリーミング アプリケーション (win32) で問題を経験しています。アプリケーションによって一定の間隔 (たとえば 20 ミリ秒) で送信されるはずの UDP (RTP) パケットが、実際には大幅に変動するデルタ (たとえば 15 ミリ秒 - 25 ミリ秒 - 10 ミリ秒 - 30 ミリ秒) で送信されているようです。この問題が発生しているのはこの顧客だけであるため、ネットワーク カードまたはその他の OS ネットワーク関連インフラストラクチャが主に疑われます。
問題は、どのようなネットワーク構成でそのような問題が発生する可能性があるかです (AV?、QOS?)。
そして、実際に「send」関数を呼び出してから、パケットが実際にネットワークに配信されるまでの時間をどのように測定すればよいでしょうか?それに利用できるツールはありますか。
解決 3
Guysは問題は、Windowsのタイミング機能は確かにそれはスリープ()が15以上のミリ秒の分解能を有することが判明し、実際にしました。あなたはprogramtically 1を1msに設定している場合を除き。関係ないので、そう、これまでNICに何ています。
他のヒント
疑う どれでも ネットワークの問題がこの問題を引き起こす可能性があります。
基本的な UDP には QoS (サービス品質) の概念がありません (パケットの損失や重複の発生などの可能性さえあります)。ネットワーク カードは、ネットワークに書き込むパケットをキューに入れる必要がありますが、さまざまなアプリケーションからのパケットをキューに入れるため、配信を保証できません。
ルーターでも優先順位を付けることができ、それがこれらのパケットの規則性に影響します。
編集:ローカル NIC を指摘したので、上記を再確認します。この状況ではルーターは適用されません。
要するに、上記の内容が許容範囲外であると期待する理由はまったくありません。
あなたは、考えられる原因は、コンピュータ自体の負荷である(すなわち、そのすべてのネットワークの影響を割り引くことができます)あなたが実際にパケットを生成するコンピュータのNIC上でこれを直接測定していることを言っている場合。
(ほとんどのスケジューラからの優先権を取得する傾向がある)の強力なユーザインタラクションの偏りを持つコンピュータ上で実行されている多くのアプリケーション、特にインタラクティブなものとするものがある場合は、、あなたは、メッセージを作成するアプリケーションは、単純にハードそれを見つけていることを見つけることがそれが必要とする時間を競うます。
すべての顧客のコンピュータが同じソフトウェアがロードされている場合でも、どのようなアプリケーションが実際に実行されており、彼らが彼らと一緒にやっていることは影響を与えていることがあります。