VLC を使用した RTP ストリーミング - PC で大量の送信 UDP パケット損失が発生します - なぜでしょうか?

VLC を使用した RTP ストリーミング - PC で大量の送信 UDP パケット損失が発生します - なぜでしょうか?

Windows 7 PC で奇妙な問題が発生しています。VLC メディア プレーヤーを設定して、RTP 経由でオーディオをストリーミングしようとしましたが、大量の送信 UDP パケットが失われています。

デバッグを少し行った後、私の PC は別の PC から同じストリーミング パケットをまったく問題なく受信できる (受信 UDP 損失なし) のに、PC がストリームを送信するように設定されている場合は、26% を超える UDP パケット損失が発生することがわかりました。PC が CAT5 のストレート ケーブルを使用して接続されている場合でも同じです。

Wireshark で調べてみると、私の PC はこれらのパケットをまったく送信していないようです。何かがパケットの送信を妨げています。原因は何でしょうか? まったくわかりません。

ヒントがあればよろしくお願いします。

//編集: 追加するのを忘れましたが、ストリームがユニキャストかマルチキャストかは関係ありません。結果は同じです。

答え1

ついに解決策を見つけました。最初から心配していた通り、問題は確かに Windows にありました。何らかの理由で、デフォルトでは IP スタックは 8 KB のバッファーしか使用しません。(笑えますよね?) これは、VLC が生成する数 KB の UDP バーストには不十分です。

レジストリ キーを使用して、IP スタックの送受信バッファ サイズを増やすことができます。何らかの理由で、私のマシンにはこれらのキーがまったく存在しなかったため、サイズはデフォルトのものになっていました。

送受信バッファ サイズを変更するには、このレジストリ キーを更新 (または作成) します。私の場合は、64 KB のバッファ サイズを設定すると問題が解決しました。UDP 送信の損失はなくなりました。

[HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Services \Afd \Parameters]
DefaultReceiveWindow = 65536
DefaultSendWindow = 65536

両方の値は DWORD (32 ビット) です (作成する必要がある場合)。

(ネットワーク コントローラーのバッファー サイズ設定もいじってみましたが、何も変わりませんでした。)

関連情報