Ergänzung zu meinem letzten Beitrag Ich habe die Mitschnitte der letzten Tage weiter analysiert und den Fehler nun eindeutig eingegrenzt. Die Backend-Verbindung bricht nicht zufällig ab, sondern systematisch, sobald das Modul größere Datenmengen sendet. Ich denke Viessmann (z.B. @CustomerCareChris, @Flo_Schneider, @CustomerCareLeo) sollte diese Information an die Entwicklung weiter geben. Ursache: MTU/MSS-Problem auf der Ausgaberichtung Das Connect-Modul sendet TCP-Pakete mit 1460 Byte Payload (IP-Gesamtlänge 1500 Byte). Auf PPPoE-Verbindungen (DSL, viele Glasfaser-Anschlüsse) beträgt die effektive MTU jedoch nur 1492 Byte. Mein Router fragmentiert diese Pakete zwar, aber die Fragmente kommen beim Azure-Backend nicht durch oder werden nicht korrekt reassembliert. Der Server wartet auf Bestätigungen, bekommt keine, und beendet die Verbindung nach ca. 24 Sekunden sauber per FIN. Wobei ich in der Azure-Cloud eventuell ein Problem sehe, denn Microsoft dokumentiert für den Azure Load Balancer explizit: „IP fragmentation of UDP and TCP packets isn't supported on load-balancing rules" Interessanterweise funktioniert die Eingangsrichtung einwandfrei: Der Server sendet maximal 1452 Byte Payload, was exakt in die 1492er MTU passt. Das Problem liegt also ausschließlich im Sende-Verhalten des Moduls. Was am Router eingestellt sein muss Damit die Verbindung stabil bleibt, muss sichergestellt werden, dass das Modul keine Pakete größer als 1452 Byte Payload sendet. Das erreicht man durch MSS-Clamping auf dem Router: Für DSL/Glasfaser mit PPPoE: Setze das maximale TCP-Segment (MSS) für ausgehende Verbindungen auf 1452 (oder konservativ 1440). Für reine Ethernet-Anschlüsse (Kabel, FTTH ohne PPPoE): MSS auf 1460 belassen oder auf 1420 setzen, falls Probleme auftreten. Die genaue Einstellung hängt vom Router-Modell ab (bei vielen Geräten unter „Firewall“, „MSS Clamping“ oder „MTU-Optimierung“ zu finden). Wichtig ist, dass die Regel ausgehende TCP-SYN-Pakete auf dem WAN-Interface betrifft. Warum die Verbindung manchmal „zufällig“ steht Wenn das Backend nach dem Verbindungsaufbau nur kleine Keepalive-Pakete sendet und das Modul selbst wenig publiziert, bleiben alle Pakete unter der kritischen Größe. Sobald jedoch größere Datenmengen fließen (z. B. bei Updates, Konfigurationsänderungen oder höheren Publish-Intervallen), tritt der Fehler sofort auf. Das erklärt die scheinbar willkürlichen Phasen ohne Probleme. 07:20:32.181202 Out ... 79.xxx.xx.xxx.54543 > 52.138.229.0.8883: Flags [.],
seq 1651:3103, ack 61406, win 12288, length 1452 ← IP 1492, flags "," (kein DF!)
07:20:32.181226 Out ... id 56, offset 1472, flags none, proto TCP 6,
length 28 79.xxx.xx.xxx 52.138.229.0 ip-proto-6 ← 2. Fragment, 8 Byte Payload Die Paketanalyse zeigt einen Defekt im TCP-Stack des Connect-Moduls: Es sendet 1460 Byte Payload über einen 1492er Pfad, setzt kein DF-Flag und reagiert nicht korrekt auf die im SYN-ACK angezeigte Server-MSS als Sende-Obergrenze. Das ist ein bekanntes PMTUD-Versagen, das durch Firmware behoben werden muss.
... Mehr anzeigen