Red Hat Training

A Red Hat training course is available for RHEL 8

39.3. SystemTap でのネットワークパケットドロップの監視

Linux のネットワークスタックは、様々な理由でパケットを破棄する場合があります。Linux カーネルによっては、パケットが破棄される場所を追跡するトレースポイント kernel.trace("kfree_skb")` が含まれます。

dropwatch.stp SystemTap スクリプトは、kernel.trace("kfree_skb") を使用してパケットの破棄を追跡します。スクリプトは、5 秒間隔でパケットを破棄する場所を要約します。

前提条件

手順

  • dropwatch.stp スクリプトを実行します。

    # stap  --example dropwatch.stp

    dropwatch.stp スクリプトを 15 秒間実行すると、以下のような出力になります。

    Monitoring for dropped packets
    51 packets dropped at location 0xffffffff8024cd0f
    2 packets dropped at location 0xffffffff8044b472
    51 packets dropped at location 0xffffffff8024cd0f
    1 packets dropped at location 0xffffffff8044b472
    97 packets dropped at location 0xffffffff8024cd0f
    1 packets dropped at location 0xffffffff8044b472
    Stopping dropped packet monitor
    注記

    パケットドロップの場所をより意味のあるものにするには、/boot/System.map-$(uname -r) を参照してください。このファイルは、各関数の開始アドレスのリストを表示し、dropwatch.stp スクリプトの出力内のアドレスを特定の関数名にマップできるようにします。/boot/System.map-$(uname -r) ファイルの以下のようなスニペットの場合、アドレス 0xffffffff8024cd0f は関数 unix_stream_recvmsg に、アドレス 0xffffffff8044b472 は関数 arp_rcv にマッピングされます。

    [...]
    ffffffff8024c5cd T unlock_new_inode
    ffffffff8024c5da t unix_stream_sendmsg
    ffffffff8024c920 t unix_stream_recvmsg
    ffffffff8024cea1 t udp_v4_lookup_longway
    [...]
    ffffffff8044addc t arp_process
    ffffffff8044b360 t arp_rcv
    ffffffff8044b487 t parp_redo
    ffffffff8044b48c t arp_solicit
    [...]