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.

http2 goaway, rst_stream, grpc non disponibile, reimpostazione del proxy, alpn, analisi pcap, http2 troubleshooting

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:

  1. Conserva l'handshake DNS, TCP e TLS.
  2. Conferma HTTP/2 negoziato da ALPN.
  3. Identificare se l'errore è a livello di flusso o di connessione.
  4. Cerca tempi e mittente GOAWAY.
  5. Cerca la tempistica RST_STREAM e l'ID del flusso nelle tracce o nei log decrittografati.
  6. Correlare con i log del proxy/bilanciatore del carico.
  7. Controllare la ritrasmissione TCP, la finestra zero, FIN e RST.
  8. Controlla se il client riprova correttamente.
  9. Preserva la tempistica dei pacchetti durante il taglio.
  10. 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.