Red Hat Training

A Red Hat training course is available for RHEL 8

45.8. TCP 状態変更情報の表示

TCP セッション時に、TCP の状態が変わります。tcpstates ユーティリティーは、eBPF 関数を使用してこれらの状態の変更を追跡し、各状態の期間を含む詳細を出力します。たとえば、tcpstates を使用して、接続の初期化に時間がかかりすぎるかどうかを特定します。

手順

  1. 以下のコマンドを使用して、TCP 状態変更の追跡を開始します。

    # /usr/share/bcc/tools/tcpstates
    SKADDR           C-PID C-COMM     LADDR     LPORT RADDR       RPORT OLDSTATE    -> NEWSTATE    MS
    ffff9cd377b3af80 0     swapper/1  0.0.0.0   22    0.0.0.0     0     LISTEN      -> SYN_RECV    0.000
    ffff9cd377b3af80 0     swapper/1  192.0.2.1 22    192.0.2.45  53152 SYN_RECV    -> ESTABLISHED 0.067
    ffff9cd377b3af80 818   sssd_nss   192.0.2.1 22    192.0.2.45  53152 ESTABLISHED -> CLOSE_WAIT  65636.773
    ffff9cd377b3af80 1432  sshd       192.0.2.1 22    192.0.2.45  53152 CLOSE_WAIT  -> LAST_ACK    24.409
    ffff9cd377b3af80 1267  pulseaudio 192.0.2.1 22    192.0.2.45  53152 LAST_ACK    -> CLOSE       0.376
    ...

    接続の状態が変更されるたびに、tcpstates は、更新された接続の詳細を含む新しい行を表示します。

    複数の接続が状態を同時に変更する場合は、最初の列 (SKADDR) のソケットアドレスを使用して、同じ接続に属するエントリーを判断します。

  2. Ctrl+C を押して、追跡プロセスを停止します。

関連情報

  • tcpstates(8) の man ページ
  • /usr/share/bcc/tools/doc/tcpstates_example.txt ファイル