Network Lower Level Protocols
From DTraceBook
This chapter uses DTrace for analyzing the lower levels of the network stack, including sockets, IP, TCP, UDP, ICMP, XDR and Ethernet.
Contents |
Sample One-Liners
See the DTrace book for more one-liners.
Socket
Socket accepts by process name:
dtrace -n 'syscall::accept*:entry { @[execname] = count(); }'
Socket connections by process and user stack trace:
dtrace -n 'syscall::connect*:entry { trace(execname); ustack(); }'
mib Provider
IP event statistics:
dtrace -n 'mib:::ip* { @[probename] = sum(arg0); }'
TCP event statistics with kernel function:
dtrace -n 'mib:::tcp* { @[strjoin(probefunc, strjoin("() -> ", probename))] = sum(arg0);}'
ip Provider
Received IP packets by host address:
dtrace -n 'ip:::receive { @[args[2]->ip_saddr] = count(); }'
IP send payload size distribution by destination:
dtrace -n 'ip:::send { @[args[2]->ip_daddr] = quantize(args[2]->ip_plength); }'
tcp Provider
Who is connecting to what:
dtrace -n 'tcp:::accept-established { @[args[3]->tcps_raddr, args[3]->tcps_lport] = count(); }'
Who isn't connecting to what:
dtrace -n 'tcp:::accept-refused { @[args[2]->ip_daddr, args[4]->tcp_sport] = count(); }'
What am I connecting to?
dtrace -n 'tcp:::connect-established { @[args[3]->tcps_raddr , args[3]->tcps_rport] = count(); }'
IP payload bytes for TCP send, size distribution by destination address:
dtrace -n 'tcp:::send { @[args[2]->ip_daddr] = quantize(args[2]->ip_plength); }'
Scripts
- soconnect.d
- soaccept.d
- soclose.d
- socketio.d
- socketiosort.d
- so1stbyte.d
- sotop.d
- soerror.d
- ipstat.d
- ipio.d
- ipproto.d
- ipfbtsnoop.d
- tcpstat.d
- tcpaccept.d
- tcpacceptx.d
- tcpconnect.d
- tcpioshort.d
- tcpio.d
- tcpbytes.d
- tcpsize.d
- tcpnmap.d
- tcpconnlat.d
- tcpstate.d updated
- tcp1stbyte.d
- tcp_rwndclosed.d
- tcpfbtwatch.d
- tcpsnoop.d
- udpstat.d
- udpio.d
- icmpstat.d
- icmpsnoop.d
- superping.d
- xdrshow.d
- macops.d
- ngesnoop.d
- ngelink.d