UDPパケット損失を測定して最小限に抑える方法

UDPパケット損失を測定して最小限に抑える方法

VOIP アプリケーション経由で通話すると、音声が途切れることがあります。すべての VOIP アプリケーションはデータ転送に UDP を使用するので、Linux にはパケット損失の量を測定し、ネットワークのパフォーマンスを測定するツールはありますか。

UDP パケット損失の一般的な原因は何でしょうか。また、パケット損失が大量にある場合はどのような対策を講じる必要がありますか。

答え1

特に LAN における UDP 損失の主な原因の 1 つは、バッファ オーバーフローです。これはスイッチ、または送信サーバーや受信サーバーで発生する可能性があります。Linux でパケット損失を確認するために使用できるメカニズムの 1 つは、次のコマンドを実行することです。

watch -n 1 -d 'cat /proc/net/udp'

次のような出力が表示されます。最後の列はドロップされたパケットの数です。

Every 1.0s: cat /proc/net/udp                                                                                                                                 Mon Sep 28 15:01:00 2015

  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode ref pointer drops
11362: 00000000:3443 00000000:0000 07 00000000:00000000 00:00000000 00000000     0        0 18224 2 ffff880808040000 0
19543: 00000000:D438 00000000:0000 07 00000000:00000000 00:00000000 00000000     0        0 3809742 2 ffff8808060c8400 0
30819: 00000000:0044 00000000:0000 07 00000000:00000000 00:00000000 00000000     0        0 12644 2 ffff88100f2b0400 0

次に、これらの問題に対処するために、さまざまなトリックを試すことができます (ここでも Linux を例に挙げます)。

  • データを消費するアプリに十分なCPUが利用可能であることを確認する。
  • I/O を実行するスレッドがネットワークデバイスに可能な限り近いことを確認する
  • udpバッファサイズがすべてデータに対応できる大きさであることを確認します(ここでも、watchコマンドの出力を監視して、tx_queueまたは列が大きくなるかどうかを確認できます)。次に、sudo 、または、またはをrx_queue使用してudpバッファを増やします(xxx、yyyy、zzzは次のように定義されます)。sysctl -w 'net/ipv4/udp_mem=xxx yyy zzzz'sysctl -w 'net/core/rmem_default=????'sysctl -w 'net/core/wmem_default=????'ここ

恥ずかしげもなく自己宣伝をするために、私は「Pontus Vision スレッド マネージャーこれを継続的に自動的に調整します。

答え2

UDPパケット損失の一般的な原因は何でしょうか?

輻輳 (パケットが多すぎる)、QOS 不足 (ランダム パケットがドロップされる、VoIP が優先的に処理されない)、および/または機器の障害 (回線品質など)。前者の場合は、QOS 対応の機器を入手し、後者の場合は、回線 (ハードウェア、スイッチなど) に問題がないか確認します。

インターネット接続には、両端に QOS ルーターが必要ですが、これはおそらくプロバイダーが用意していないでしょう (プロバイダーが VoIP を提供している場合は、インフラストラクチャが整備されている可能性があります)。とはいえ、ダウン チャネルは通常アップ チャネルよりもはるかに大きいため、ダウン チャネルのみを優先するローカル ルーターで通常は「十分」です。

ただし、回線品質が悪いと対処が難しい問題になります。

答え3

UDP パケット損失が発生している場合は、TCP パケット損失もほぼ確実に発生しています。違いは、TCP は失われたパケットを再送信しますが、UDP は再送信しないという点です。VoIP アプリケーションは再送信できません。再送信すると、情報が役に立たなくなるためです。

VoIP通話はインターネット経由で行われるものと仮定します。QoSは必要かもしれませんが、インターネット接続が適切に機能していない場合は役に立ちません。これを使用してください。パケット損失テスト確認してください。パケット損失がどこで発生しているかがわかります。つまり、ISP 内かローカル サイト内かです。

ローカル サイトで問題が見つかった場合は、ケーブル モデムまたは DSL モデムの信号雑音比、出力電力、減衰 (DSL) が適切かどうかを確認してください。

関連情報