RTP-Streaming mit VLC – Auf meinem PC kommt es zu enormen Verlusten an UDP-Übertragungspaketen – warum?

RTP-Streaming mit VLC – Auf meinem PC kommt es zu enormen Verlusten an UDP-Übertragungspaketen – warum?

Ich habe seltsame Probleme auf meinem Windows 7-PC: Ich habe versucht, den VLC Media Player so einzurichten, dass Audio über RTP gestreamt wird, jedoch geht eine große Anzahl ausgehender UDP-Pakete verloren.

Nach einiger Fehlerbehebung habe ich festgestellt, dass mein PC die gleichen gestreamten Pakete von einem anderen PC problemlos empfangen kann (kein eingehender UDP-Verlust). Wenn mein PC jedoch für die Übertragung des Streams eingerichtet ist, kommt es zu einem UDP-Paketverlust von über 26 %. Selbst wenn die PCs über ein gerades CAT5-Kabel verbunden sind.

Nach einigen Wireshark-Befragungen scheint mein PC diese Pakete überhaupt nicht zu senden. Irgendetwas verhindert, dass sie gesendet werden. Was könnte die Ursache sein? Ich habe keine Ahnung.

Danke für jeden Hinweis.

//EDIT: Ich habe vergessen hinzuzufügen, dass es egal ist, ob der Stream Unicast oder Multicast ist. Die Ergebnisse sind dieselben.

Antwort1

Endlich habe ich eine Lösung gefunden: Wie ich von Anfang an befürchtet hatte, lag das Problem tatsächlich bei Windows. Aus irgendeinem Grund verwendet der IP-Stack standardmäßig nur 8-kByte-Puffer. (Komisch, nicht wahr?) Das reicht nicht für die paar kB UDP-Bursts, die VLC erzeugt.

Es besteht die Möglichkeit, die Größe des Sende-/Empfangspuffers des IP-Stacks mithilfe von Registrierungsschlüsseln zu erhöhen. Aus irgendeinem Grund fehlten diese Schlüssel auf meinem Computer vollständig, sodass die Größe die Standardgröße war.

Um die Sende-/Empfangspuffergrößen zu ändern, aktualisieren (oder erstellen) Sie diesen Registrierungsschlüssel. In meinem Fall wurde das Problem durch die Einstellung einer Puffergröße von 64 kB behoben. Jetzt kein UDP-Ausgangsverlust mehr.

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

Beide Werte sind DWORD (32 Bit), falls Sie diese erstellen müssen.

(Ich habe auch an den Puffergrößeneinstellungen in Netzwerkcontrollern herumgebastelt, das hat jedoch zu nichts geführt.)

verwandte Informationen