2012-03-24 118 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

現在,消息平齊快。