HTTP/2 GOAWAY- und RST_STREAM-PCAP-Analyse: Debuggen von Reset-Streams, Proxy-Limits und gRPC-Fehlern
So diagnostizieren Sie HTTP/2 GOAWAY-, RST_STREAM-, gRPC-nicht verfügbare Fehler, Proxy-Stream-Limits, TLS-ALPN-Aushandlung, Verbindungswiederverwendung und Beweise für die Paketerfassung.
HTTP/2-Fehler können schwer zu diagnostizieren sein, da eine TCP-Verbindung viele Streams übertragen kann. Eine einzelne Anfrage kann mit „RST_STREAM“ fehlschlagen, die gesamte Verbindung kann „GOAWAY“ empfangen oder ein gRPC-Client kann „UNAVAILABLE“, „INTERNAL“, „CANCELLED“ oder „Stream Reset“ melden. Benutzer suchen nach „HTTP2 GOAWAY pcap“, „RST_STREAM-Analyse“, „gRPC-Stream-Reset-Paketerfassung“, „HTTP/2-Proxy-Reset“ und „ALPN-HTTP2-Fehlerbehebung“, wenn Protokolle nicht erklären, ob der Client, Proxy, Load Balancer oder Server den Stream beendet hat.
PCAP-Chirurgie ist nützlich, da HTTP/2-Beweise TLS, ALPN, Verbindungszeitpunkt, Stream-Resets und TCP-Schließverhalten bewahren müssen. Wenn TLS verschlüsselt ist und Schlüssel nicht verfügbar sind, zeigen Paketerfassungen weiterhin Timing, TCP-Resets, Verbindungswiederverwendung und manchmal entschlüsseltes HTTP/2 nur in kontrollierten Umgebungen an.
HTTP/2-Verbindung vs. Stream
HTTP/2 multiplext mehrere Streams über eine Verbindung. Ein Stream-Reset ist nicht dasselbe wie ein TCP-Verbindungs-Reset.
- „RST_STREAM“: Ein Stream wurde abgebrochen oder ist fehlgeschlagen.
- „GOAWAY“: Der Endpunkt schließt oder entleert die HTTP/2-Verbindung.
- TCP FIN/RST: Die zugrunde liegende Verbindung wird geschlossen oder abgebrochen.
Anwendungen fassen diese häufig zu einem Fehler zusammen. Paketnachweise und Protokolle sollten sie trennen.
ALPN-Verhandlung
HTTP/2 über TLS hängt normalerweise von ALPN ab. Der TLS-Handshake handelt „h2“ oder ein anderes Protokoll aus. Wenn ALPN HTTP/2 nicht aushandelt, können Client und Server zurückfallen oder ausfallen.
Bewahren:
- ClientHello ALPN-Erweiterung.
- Vom Server ausgewählter ALPN, sofern sichtbar.
- TLS-Warnungen.
- TCP wird während des Handshakes zurückgesetzt.
Wenn HTTP/2 nie ausgehandelt wurde, debuggen Sie „RST_STREAM“ noch nicht.
GOAWAY
„GOAWAY“ teilt dem Peer mit, dass auf dieser Verbindung keine neuen Streams erstellt werden sollen. Dies kann während des ordnungsgemäßen Entleerens, der Bereitstellung, der Alterung der Proxy-Verbindung oder des Lastausgleichsverhaltens normal sein. Es wird zu einem Problem, wenn Clients entleerende Verbindungen falsch wiederverwenden oder wenn GOAWAY während aktiver Anfragen erscheint.
Wichtige Fragen:
- Wer hat GOAWAY geschickt?
- Was war die letzte Stream-ID?
- Sind aktive Streams fehlgeschlagen?
- Hat der Client es erneut versucht, eine neue Verbindung herzustellen?
- Tritt GOAWAY im Alter mit fester Verbindung auf?
RST_STREAM
„RST_STREAM“ beendet einen HTTP/2-Stream. Zu den Ursachen gehören:
- Kundenstornierung.
- Server lehnt eine Anfrage ab.
- Proxy-Timeout.
- Problem mit der Flusskontrolle.
- Maximales Stream-Limit.
- gRPC-Frist überschritten.
- Backend-Reset vom Proxy übersetzt.
Die Stream-ID und das Timing sind wichtig. Ohne sie ist die Paketgeschichte unvollständig.
Die TCP-Schicht ist immer noch wichtig
HTTP/2 sitzt auf TCP. Wenn es bei der zugrunde liegenden Verbindung zu Neuübertragungen, Nullfenstern, Zurücksetzungen, MTU-Problemen oder Leerlaufzeitüberschreitungen kommt, können HTTP/2-Fehler zweitrangig sein.
Korrelat:
- Stream-Reset-Zeit.
- TCP-Neuübertragungen vor dem Zurücksetzen.
- FIN/RST-Absender.
- Leerlaufintervall.
- TLS close_notify, falls sichtbar.
Checklist
Verwenden Sie diesen Workflow:
- Behalten Sie den DNS-, TCP- und TLS-Handshake bei.
- Bestätigen Sie, dass ALPN HTTP/2 ausgehandelt hat.
- Identifizieren Sie, ob der Fehler auf Stream- oder Verbindungsebene auftritt.
- Suchen Sie nach GOAWAY-Zeitpunkt und Absender.
- Suchen Sie in entschlüsselten Traces oder Protokollen nach RST_STREAM-Timing und Stream-ID.
- Mit Proxy-/Load-Balancer-Protokollen korrelieren.
- Überprüfen Sie TCP-Neuübertragung, Nullfenster, FIN und RST.
- Überprüfen Sie, ob der Client den Vorgang korrekt wiederholt.
- Behalten Sie beim Trimmen das Paket-Timing bei.
- Kombinieren Sie pcap-Beweise mit HTTP/2-Debug-Protokollen, wenn sie verschlüsselt sind.
Endgültige Diagnose
HTTP/2 GOAWAY- und RST_STREAM-Fehler sind keine generischen Netzwerkfehler. Dabei handelt es sich um Stream- und Verbindungssteuerungssignale, die mit ALPN, Proxy-Verhalten, gRPC-Fristen, TCP-Zustand und Verbindungswiederverwendung korreliert werden müssen.
PCAP Surgery trägt dazu bei, die Zeitachse zu bewahren, sodass HTTP/2- und gRPC-Fehler auf die richtige Ebene reduziert werden können: TLS-Aushandlung, Stream-Reset, Verbindungsentzug, Proxy-Timeout oder TCP-Transportfehler.