2012-03-24 97 views
1

我想绘制TCP拥塞窗口和使用iperf和tcp_probe模块的慢启动阈值。我到底该怎么做,这里说:tcp_probe模块没有输出

获取数据:

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 86

,并已经尝试过在Ubuntu 11.04 64相同

有什么建议?

回答

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

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

查找the source code to the module here

-1

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

我使用tcp_probe的方式是:安装/激活模块,运行一些tcp应用程序(我正在运行一些tcp单元测试),然后开始/ proc/net/tcpprobe的复制过程(如其他答案),然后移除/停止模块。正确的方法是在执行tcp密集型活动之前开始复制过程(禁止杀死进程)。在执行tcp活动时让cat进程继续运行,并且只在之后将其kill掉。

对我来说,这是一个非常谦卑的经历,因为花了好几个小时才弄明白这一点。希望人们觉得这很有用。

0

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

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

3

C标准库中的I/O函数默认使用缓冲区,通常为4k,所以fread()只在缓冲区满或EOF时返回。可以使用小的缓冲区,128个字节,见:

DD如果=/PROC /净/ tcpprobe IBS = 128实测值= 128

现在,消息平齐快。