39.3. SystemTap을 사용하여 네트워크 패킷 드롭 모니터링
Linux의 네트워크 스택은 다양한 이유로 패킷을 폐기할 수 있습니다. 일부 Linux 커널에는 패킷이 삭제되는 위치를 추적하는 tracepoint kernel.trace("kfree_skb")
가 포함됩니다.
dropwatch.stp
SystemTap 스크립트는 kernel.trace("kfree_skb")
를 사용하여 패킷 삭제를 추적합니다. 스크립트는 5초마다 패킷 삭제 위치를 요약합니다.
사전 요구 사항
- SystemTap 설치에 설명된 대로 SystemTap 을 설치했습니다.
절차
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
함수에 매핑되고0xffffff8044b472
주소는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 [...]