Das Senden von UDP-Paketen scheint bei eingehenden Paketen auf verschiedenen NICs einen Verlust zu verursachen

701
Mathijs

Ich verwende Windows Server 2012 mit einer Audio-Streaming-Anwendung, die über UDP gestreamt wird. Eine andere Anwendung empfängt Audio, das ebenfalls über UDP gestreamt wird, aber über eine separate Netzwerkkarte ankommt. Es scheint jedoch so, dass je mehr Pakete die erste Anwendung überträgt, desto mehr eingehende Pakete gehen in der zweiten Anwendung verloren.

Die Gesamt-CPU-Last des Systems beträgt etwa 40%, daher sollte es genügend Headroom geben. Ist dieses Thema in irgendeiner Weise sinnvoll? Gibt es etwas, was ich tun könnte, um dieses Verhalten zu verbessern?

0
Erwägen Sie die Aktualisierung der NIC-Treiber und / oder der Firmware des BIOS und dergleichen, aber ich würde auf jeder Schnittstelle eine Wireshark-Ablaufverfolgung ausführen und sicherstellen, dass nichts anderes den Paket-Overhead verursacht, den Sie abschalten könnten. Pimp Juice IT vor 6 Jahren 0
Sie können uns auch mitteilen, welche Audio-Streaming-App Sie verwenden, wenn jemand bestimmte Einstellungen mit dieser App kennt, um sie an diese Probleme anzupassen. Pimp Juice IT vor 6 Jahren 1
Wir brauchen mehr Details, bevor dies beantwortet werden kann. Einige Vorspeisen: Ist der Server physisch oder virtuell? Was machen NICs / Modell? Welche Apps machen das Streaming? Twisty Impersonator vor 6 Jahren 0
Alle Daten kommen über dieselbe Internetverbindung? Appleoddity vor 6 Jahren 0

1 Antwort auf die Frage

1
Mathijs

Nach vielem Graben schien ich eine Lösung für das Problem gefunden zu haben.

Microsoft hat einen Hotfix für Windows Server 2012 bereitgestellt, der das Umgehen der Base Filtering Engine für eingehende Multicast-Streams ermöglicht: https://support.microsoft.com/de-de/help/2808584/datagram-loss-when-you-run-a- Multicast-Empfänger-Anwendung-in-Windows

Der Hotfix ist jedoch nicht für Windows Server 2012 R2 verfügbar. Aber dann fand ich diesen Blogpost: https://personalnexus.wordpress.com/2017/02/06/the-case-of-multicast-message-loss-on-windows-server-2012-r2/

Daher habe ich jetzt eine solide Checkliste der Dinge, die auf unseren Servern konfiguriert werden müssen, und sicherstellen, dass in unseren Anwendungen Multicast-Nachrichten verwendet werden, um sicherzustellen, dass alles reibungslos läuft und der Nachrichtenverlust auf einem akzeptablen Niveau bleibt. Auf unseren neuesten Windows Server 2012 R2-Computern gab es jedoch Anwendungen, bei denen ein schwerwiegender Datagrammverlust auftrat, da der Netzwerkverkehr (im Allgemeinen nicht nur Multicast) auf dem Computer zunahm.

Ich habe das Problem online recherchiert und die Tipps erhalten, die Sie erwarten würden: Holen Sie sich die neuesten NIC-Treiber, erhöhen Sie die NIC-Empfangspuffergröße, aktivieren Sie Offloads, aktivieren Sie die empfangsseitige Skalierung, passen Sie die empfangsseitige Skalierung ab, erhöhen Sie die Sockelpuffergröße usw. Natürlich hatte ich alle diese Dinge bereits ausprobiert, und keines davon hatte funktioniert

Die Lösung laut Blogpost:

Leider beschreibt das Dokument ein Problem in Windows Server 2012, und der dort verfügbare Hotfix kann nicht unter Windows Server 2012 R2 installiert werden. Zum Glück muss es nicht sein. Sie können einfach den Registrierungsschlüssel festlegen und die Base Filtering Engine unterstützt ihn sofort.

New-ItemProperty HKLM:\System\CurrentControlSet\services\Tcpip\Parameters\ -Name UdpExemptPortRange -Value "XXXX-YYYY" -PropertyType MultiString -Force 

Bis jetzt laufen die Streams wieder einwandfrei. Anscheinend kann das BFE die enorme Menge an eingehendem UDP-Verkehr nicht verarbeiten, wenn auch ziemlich viel ausgehender UDP-Verkehr vorliegt.

Freut mich zu hören, dass mein Blogpost hilfreich war :-) PersonalNexus vor 6 Jahren 0