Analisi PCAP HTTP/2 GOAWAY e RST_STREAM: debug di flussi di reimpostazione, limiti proxy ed errori gRPC
Come diagnosticare errori HTTP/2 GOAWAY, RST_STREAM, gRPC non disponibile, limiti del flusso proxy, negoziazione TLS ALPN, riutilizzo della connessione e prove di acquisizione dei pacchetti.
Gli errori HTTP/2 possono essere difficili da diagnosticare perché una connessione TCP può trasportare molti flussi. Una singola richiesta potrebbe non riuscire con "RST_STREAM", l'intera connessione potrebbe ricevere "GOAWAY" oppure un client gRPC potrebbe segnalare "NON DISPONIBILE", "INTERNO", "CANCELLATO" o "stream reset". Gli utenti cercano "HTTP2 GOAWAY pcap", "analisi RST_STREAM", "acquisizione di pacchetti di reimpostazione del flusso gRPC", "reimpostazione proxy HTTP/2" e "risoluzione dei problemi ALPN HTTP2" quando i registri non spiegano se il client, il proxy, il bilanciatore del carico o il server hanno terminato il flusso.
La chirurgia PCAP è utile perché le prove HTTP/2 devono preservare TLS, ALPN, tempi di connessione, reimpostazioni del flusso e comportamento di chiusura TCP. Se TLS è crittografato e le chiavi non sono disponibili, le acquisizioni dei pacchetti mostrano comunque tempistiche, reimpostazioni TCP, riutilizzo della connessione e talvolta HTTP/2 decrittografato solo in ambienti controllati.
Connessione HTTP/2 e flusso
HTTP/2 esegue il multiplexing di più flussi su una connessione. La reimpostazione del flusso non è la stessa cosa della reimpostazione della connessione TCP.
RST_STREAM: uno stream è stato annullato o non è riuscito.- "GOAWAY": l'endpoint sta chiudendo o esaurendo la connessione HTTP/2.
- TCP FIN/RST: la connessione sottostante si chiude o si interrompe.
Le applicazioni spesso li riducono in un unico errore. Le prove dei pacchetti e i log dovrebbero separarli.
Trattativa ALPN
HTTP/2 su TLS dipende solitamente da ALPN. L'handshake TLS negozia "h2" o un altro protocollo. Se ALPN non negozia HTTP/2, il client e il server potrebbero fallback o fallire.
Conserva:
- Estensione ClientHello ALPN.
- ALPN selezionato dal server dove visibile.
- Avvisi TLS.
- Il TCP si reimposta durante l'handshake.
Se HTTP/2 non è mai stato negoziato, non eseguire ancora il debug di RST_STREAM.
GOAWAY
"GOAWAY" dice al peer che non devono essere creati nuovi flussi su quella connessione. Può essere normale durante lo svuotamento regolare, le distribuzioni, l'invecchiamento della connessione proxy o il comportamento del bilanciatore del carico. Diventa un problema quando i client riutilizzano connessioni drenanti in modo errato o quando viene visualizzato GOAWAY durante le richieste attive.
Domande importanti:
- Chi ha inviato GOAWAY?
- Qual è stato l'ultimo ID stream?
- I flussi attivi non sono riusciti?
- Il client ha riprovato con una nuova connessione?
- GOAWAY avviene ad un'età di connessione fissa?
RST_STREAM
"RST_STREAM" termina un flusso HTTP/2. Le cause includono:
- Cancellazione del cliente.
- Il server rifiuta una richiesta.
- Timeout proxy.
- Problema di controllo del flusso.
- Limite massimo di streaming.
- Scadenza gRPC superata.
- Reset del backend tradotto tramite proxy.
L'ID dello stream e la tempistica sono importanti. Senza di loro, la storia del pacchetto è incompleta.
Il livello TCP è ancora importante
HTTP/2 si trova su TCP. Se la connessione sottostante presenta ritrasmissioni, finestra zero, reimpostazione, problemi MTU o timeout di inattività, gli errori HTTP/2 potrebbero essere secondari.
Correlare:
- Orario di ripristino del flusso.
- Ritrasmissioni TCP prima del ripristino.
- Mittente FIN/RST.
- Intervallo di inattività.
- TLS close_notify se visibile.
Checklist
Utilizza questo flusso di lavoro:
- Conserva l'handshake DNS, TCP e TLS.
- Conferma HTTP/2 negoziato da ALPN.
- Identificare se l'errore è a livello di flusso o di connessione.
- Cerca tempi e mittente GOAWAY.
- Cerca la tempistica RST_STREAM e l'ID del flusso nelle tracce o nei log decrittografati.
- Correlare con i log del proxy/bilanciatore del carico.
- Controllare la ritrasmissione TCP, la finestra zero, FIN e RST.
- Controlla se il client riprova correttamente.
- Preserva la tempistica dei pacchetti durante il taglio.
- Combina prove pcap con log di debug HTTP/2 quando crittografati.
Diagnosi finale
Gli errori HTTP/2 GOAWAY e RST_STREAM non sono errori di rete generici. Si tratta di segnali di controllo del flusso e della connessione che devono essere correlati con ALPN, comportamento del proxy, scadenze gRPC, integrità TCP e riutilizzo della connessione.
PCAP Surgery aiuta a preservare la sequenza temporale in modo che gli errori HTTP/2 e gRPC possano essere ridotti al livello giusto: negoziazione TLS, reimpostazione del flusso, drenaggio della connessione, timeout del proxy o errore del trasporto TCP.