标签:
1 tcpprobe模块的加载与卸载
1) 用modprobe加载tcpprobe
// 如果是通过修改.config来编译tcpprobe的,可以使用modprobe加载
# modprobe tcp_probe port=5001 // 监听所有本地端口是5001的TCP流,仅在cwnd变化时捕捉信息
# modprobe tcp_probe full=1 port=5001 // full选项表示每次收到数据包都捕捉信息
2) 用insmod加载
// 如果是普通内核模块形式编译的,则使用insmod加载
# insmod tcp_probe.ko full=1 port=5001
3 )卸载tcpprobe
// 卸掉tcpprobe模块的命令也很简单,只要当前没有任务在使用tcpprobe模块即可卸载
# rmmod tcp_probe
2 tcpprobe模块的使用
加载tcpprobe模块后,会新增一个/proc/net/tcpprobe的接口,可以通过这个接口获取tcpprobe捕捉的信息。
# cat /proc/net/tcpprobe > data.out & // tcpprobe捕捉的信息是持续性的,因此读这个接口可以放到后台读
# pid=$! // 保存上一个读命令的pid,用于结束读tcpprobe接口
# iperf -c otherhost // 使用iperf建立一个TCP流
# kill $pid
记录在data.out中的数据大致是这个样子:
11.172120204 193.168.0.2:8089 193.168.0.25:54320 32 0x842ccad 0x84299c5 10 168 14608 143
每行的各列分别为:
timestamp //时间戳
saddr:port // 源IP及端口,我的数据是在发送端捕捉的,所以port是固定的8089
daddr:port // 目的IP及端口
skb->len // 收到的数据包skb大小,收到的都是ACK包,所以len都比较小。
snd_nxt // 下一个待发送数据的序列号
snd_una // 待确认数据的序列号
snd_cwnd // 拥塞窗口大小
ssthresh // 慢启动阈值
snd_wnd // 接收窗口大小
srtt // smoothed RTT
参考:http://perthcharles.github.io/2014/12/19/tcp-probe-intro/
标签:
原文地址:http://www.cnblogs.com/zflibra/p/4184369.html