Hallo Allerseits,
auf einem Rechner habe ich zwei VMs laufen. In einer läuft Windows mit einer Streaming Software, die über Multicast ein Videostream ins Netz streamt. In der zweiten VM läuft ubuntu Server und hier wird der UDP Stream komprimiert und ins Internet geschickt.
Der Stream hat nun in unregelmäßigen Abständen leichte Fehler in Bild und Ton. Die Fehlerursache müsste zu ~95% an dem Multicast Stream liegen und nicht an dem Stream ins Internet.
Ich bin jetzt kein Netzwerk Spezialist daher tue ich mich etwas schwer mit der Fehleranalyse. Was ich bis jetzt herausgefunden habe:
Mit mulitcat habe ich den Stream in ein mpegts File aufzeichnen lassen und hierin waren schon Fehler zu finden
tcpdump -i br3 -n dst port 1234 zeigt keine Auffälligkeiten
tcpdump -i br3 -n dst port 1234 -s0 -vv bringt checksum Fehler:
[...] 14:43:38.314317 IP (tos 0x0, ttl 1, id 14215, offset 0, flags [none], proto UDP (17), length 1344) 192.168.3.22.1234 > 239.0.0.1.1234: [bad udp cksum 0xb7fd -> 0xec57!] UDP, length 1316 14:43:38.314327 IP (tos 0x0, ttl 1, id 14216, offset 0, flags [none], proto UDP (17), length 1344) 192.168.3.22.1234 > 239.0.0.1.1234: [bad udp cksum 0xb7fd -> 0x9439!] UDP, length 1316 14:43:38.314346 IP (tos 0x0, ttl 1, id 14217, offset 0, flags [none], proto UDP (17), length 1344) 192.168.3.22.1234 > 239.0.0.1.1234: [bad udp cksum 0xb7fd -> 0xa9dd!] UDP, length 1316
Macht es hier Sinn Checksum Offload zu deaktivieren?
Auf dem Host läuft iptables, aber im Netz von br3 ist alles erlaubt.
In dem Windows Programm, welches den UDP Stream streamt, gibt es nicht viele Einstellungsmöglichkeiten. Nur IP, Brodcast Mode, Multicast source IP Master, TTL, UDP/RTP (RTP ist noch unstabieler). TS Packets. Unicast habe ich auch schon versucht, ist nicht besser. Auch habe ich schon direkt auf der Windows VM ein Loopback Adapter erstellt und auf diesen gestreamt, von dort abgegriffen und ins Internet gestreamt, war auch nicht Fehlerfrei. Windows Firewall ist aus.
Habt ihr vielleicht noch eine Idee was ich machen könnte?
Meine Vermutung ist momentan, dass der Fehler in dem Windows Programm liegt, aber kann ich das sicher eingrenzen? Und gibt es da noch Möglichkeiten zu optimieren?
Edit: was ich noch vergessen habe: Eine andere Fehlerquelle könnte theoretisch auch die Virtuelle Festplatte sein, auf der die Videos liegen. Momentan hat die Windows VM noch keine eigene Platte sondern nur ein Image.