TCP キープアライブとアイドル タイムアウト PCAP 分析: ファイアウォール、NAT、ロード バランサー、および長時間存続する接続
TCP キープアライブ パケット、アイドル タイムアウト、NAT セッションの有効期限、ファイアウォール接続のドロップ、ロード バランサーのリセット、長時間存続する API 接続、およびパケット キャプチャの証拠を分析する方法。
長期間存続する TCP 接続は、非アクティブ状態が数分または数時間続くと失敗する可能性があります。 SSH セッションがフリーズします。データベース接続がリセットされました。 WebSocket 接続が切断されます。 RTSP TCP インターリーブ ストリームはアイドル期間後に停止します。 API クライアントには壊れたパイプが表示されます。ユーザーは、「TCP キープアライブ pcap」、「ファイアウォール アイドル タイムアウト」、「NAT セッション タイムアウト」、「ロード バランサー リセット アイドル接続」、および「長時間存続する TCP 接続のドロップ」を検索します。これは、アプリケーション エラーが実際のタイムアウトの決定からかなり経ってから表示されることが多いためです。
アイドル タイムアウトの調査はタイミングに依存するため、PCAP 手術は便利です。最後の実際のデータ パケット、TCP キープアライブ プローブ、ACK、FIN/RST パケット、および正確なアイドル期間が必要です。
TCPキープアライブとは
TCP キープアライブは、アイドル状態の接続に小さなプローブを送信して、ピアがまだ到達可能かどうかを確認するオプションのメカニズムです。また、プローブがミドルボックスのタイムアウトよりも頻繁に発生する場合、NAT とファイアウォールの状態を維持することもできます。
しかし、デフォルトでは現代のインフラストラクチャには遅すぎることがよくあります。ファイアウォールは 60 秒後にアイドル状態が期限切れになる可能性がありますが、OS の TCP キープアライブはそれよりずっと後に開始される場合があります。
アイドルタイムアウトの症状
一般的な症状は次のとおりです。
- 接続は機能しますが、一定のアイドル時間が経過すると接続が失敗します。
- アイドル状態がリセットされた後の最初のリクエスト。
- WebSocket はちょうど 60 秒後に切断されます。
- データベース プールに古い接続があります。
- SSH が NAT 経由でフリーズする。
- ロードバランサはタイムアウト後に RST を送信します。
- クライアントはアイドル後にデータを送信しますが、応答を受け取りません。
正確なタイミングがヒントです。
FIN vs RST vs サイレントドロップ
ミドルボックスとエンドポイントは、さまざまな方法でアイドル状態の接続を閉じることができます。
- FIN: 優雅に閉じる。
- RST: 異常終了。
- サイレント ドロップ: パケットなし。それ以降のトラフィックは無視されます。
ファイアウォールがサイレントに状態をドロップすると、両方のエンドポイントは接続がまだ存在すると考える可能性があります。次のデータ パケットにより、再送信またはリセット動作がトリガーされます。
キープアライブの証拠
トレースでは、アイドル期間中に小さなパケットを探します。 TCP キープアライブ プローブは、多くの場合、次の予期されるバイトの直前にシーケンス番号を使用します。アナライザーはそれらをキープアライブとしてラベル付けする場合があります。
質問:
- キープアライブは送信されましたか?
- どのくらいの頻度で?
- ピアはそれらに ACK を返しましたか?
- キープアライブ後にミドルボックスがリセットされましたか?
- 探査の開始が遅すぎましたか?
- キープアライブ間隔の前に接続が切断されましたか?
ロードバランサとプロキシ
ロード バランサーはアイドル タイムアウトを強制することがよくあります。クライアントが接続が 30 分間存続すると予想しているにもかかわらず、ロード バランサーがアイドル状態の接続を 60 秒後に閉じる場合、アプリケーションはハートビートを送信するか再接続する必要があります。
パケット証拠により、誰がクローズまたはリセットを送信したか、最後のデータからどれくらい時間が経過したかがわかります。
Checklist
このワークフローを使用します。
- 存続期間の長い TCP 接続を特定します。
- 最後のアプリケーション データ パケットをマークします。
- 障害が発生するまでのアイドル時間を測定します。
- TCP キープアライブ プローブを探します。
- プローブが ACK されているかどうかを確認します。
- FIN または RST 送信者を特定します。
- 終了が表示されない場合は、サイレント ドロップと再送信を探します。
- タイムアウトをファイアウォール/ロードバランサーの設定と比較します。
- トリミング時にタイミングを保ちます。
- アプリケーションのハートビートと関連付けます。
最終診断
TCP アイドル障害はタイミングの問題です。パケット証拠により、エンドポイントのクローズ、ファイアウォール/NAT 状態の期限切れ、ロード バランサーのタイムアウト、キープアライブの欠落、遅すぎるキープアライブ、サイレント ドロップを区別できます。
PCAP 手術は、アイドル間隔を保持し、証拠を閉じる/リセットするのに役立つため、長期間にわたる接続障害を正確に説明できます。