tcp_probe模块没有输出

时间:2012-03-24 12:00:30

标签: networking ubuntu tcp

我正在尝试使用iperf和tcp_probe模块绘制TCP拥塞窗口和慢启动阈值。我完全按照这里所说的做法:

获取数据:

modprobe tcp_probe port=5001

chmod 444 /proc/net/tcpprobe

cat /proc/net/tcpprobe >/tmp/tcpprobe.out &

TCPCAP=$!

iperf -i 10 -t 100 -c receiver

kill $TCPCAP

糟糕!

/tmp/tcpprobe.out为空:(

这是Ubuntu 11.04 x86

并且已经在Ubuntu 11.04 x64上尝试过相同的内容

有什么建议吗?

6 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。对我有用的是:

modprobe -r tcp_probe

sudo modprobe tcp_probe port=5002 full=1

sudo chmod 444 /proc/net/tcpprobe

cat /proc/net/tcpprobe > /tmp/tcpprobe.out &

TCPCAP=$!

iperf -c <servers IP address here> -p 5002 -t 100 -i 1

sudo kill $TCPCAP

通过输入以下内容,查看iperf参数以检查是否符合您的要求(-t 100 -i 1):

man iperf

答案 1 :(得分:3)

C标准库中的I / O函数默认使用缓冲区,通常为4k,因此fread()仅在缓冲区满或EOF时返回。您可以使用128字节的小缓冲区,请参阅:

  

dd if = / proc / net / tcpprobe ibs = 128 obs = 128

现在,消息快速刷新。

答案 2 :(得分:2)

默认情况下,tcp_probe仅在cnwd更改时记录,请尝试modprobe tcp_probe ... full=1

Linux源代码参考:http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/net/ipv4/tcp_probe.c#L47

答案 3 :(得分:1)

我有类似的问题,tcp_probe模块仅在非明显的时间间隔内输出。我已经创建了它的修改版本,可以在每个收到的tcp段上刷新。这会降低系统速度,但可以更好地监控HTTP等短期连接。

查找the source code to the module here

答案 4 :(得分:0)

导致无输出的另一个问题是输出文件tcpprobe.out

的文件权限

直接cat tcpprobe,它能够看到输出,但如果重定向输出文件,输出文件大小为0,这提醒我它是权限问题...... < / p>

答案 5 :(得分:-1)

答案非常晚,但我自己一直在努力解决这个问题。我正在尝试Dyna提供的版本,但仍然没有输出,无论使用哪些参数。最后,我发现订单是问题。

我使用tcp_probe的方式是:安装/激活模块,运行一些tcp应用程序(我正在运行一些tcp单元测试),然后启动/ proc / net / tcpprobe的复制过程(如其他答案所示) )然后删除/停止模块。正确的方法是在执行tcp密集型活动之前启动复制过程(禁止终止进程)。执行tcp活动时保持cat进程正常运行,之后只能将其终止。

对我来说这是一个非常谦卑的经历,因为需要花费数小时来解决这个问题。希望人们觉得这很有用。