39.3. 使用 SystemTap 监控网络数据包丢弃
Linux 中的网络堆栈可以丢弃由于各种原因的数据包。有些 Linux 内核包括一个追踪点 kernel.trace ("kfree_skb")
,其跟踪数据包在哪里被丢弃。
dropwatch.stp
SystemTap 脚本使用 kernel.trace ("kfree_skb")
来跟踪数据包丢弃;脚本总结了每 5 秒间隔丢弃数据包的位置。
先决条件
- 如安装 SystemTap 所述,已安装了 SystemTap。
流程
运行
dropwatch.stp
脚本:stap --example dropwatch.stp
# stap --example dropwatch.stp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
dropwatch.stp
脚本 15 秒的结果类似如下:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要使数据包的位置更有意义,请参阅
/boot/System.map-$ (uname -r)
文件。此文件列出了每个功能的起始地址,允许您将dropwatch.stp
脚本输出中的地址映射到特定功能名称。以下的/boot/System.map-$ (uname -r)
文件的代码片段中,地址0xffffffff8024cd0f
映射到功能unix_stream_recvmsg
,地址0xffffffff8044b472
映射到功能arp_rcv
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow