2013-02-08 185 views
0

我想用tcpreplay來重放由TCP和UPD數據包組成的數據包跟蹤。tcpreplay和時間戳

有沒有辦法附上時間戳每個傳出包,這樣我就能夠計算出往返時間一旦所有回覆已收到(後棄)?

否則,我應該使用哪個其他工具?

回答

1

如果您使用tcpdump或Wireshark同時嗅探流量,它將在出路和回覆時爲每個數據包添加時間戳。

雖然只是一個警告,但tcpreplay通常不支持將TCP流重放到服務器,因爲它不跟蹤TCP流的狀態。通常你會得到的是重置數據包的回覆。 UDP通常應該可以。 ICMP經常起作用。如果您想了解更多信息,請務必檢查出Tcpreplay FAQ:

http://tcpreplay.synfin.net/wiki/FAQ#Doestcpreplaysupportsendingtraffictoaserver

+0

謝謝。我所要做的就是用小的ttl值發送數據包跟蹤。我不需要在兩個方向重新創建任何TCP流。對於這個「預覽」就夠了嗎?我的目標是測量每個發送數據包的往返時間。到目前爲止,我一直在使用'scapy',但它在尊重輸入數據包速率(速度較慢)和跟蹤請求/響應數據包對的時間戳方面不太可靠(延遲有時很大,每一次在一段時間甚至負面!!) – 2013-02-11 09:47:28

+0

好吧,我不太清楚。我將每個數據包的TTL值僞造成一個小值,以便它觸發一個ICMP數據包,並用它來計算RTT。這就是爲什麼我不需要保持/維護任何TCP連接。 – 2013-02-11 14:29:58

+1

老實說,我不確定爲什麼你只是不使用ping,如果你想要做的就是衡量RTT。 tprep的問題在於,它不會從網絡上「讀取」,因此它永遠不會看到回覆。你需要做其他事情,所以我建議使用tcpdump/Wireshark。但是,如果您想要編寫代碼,則可以使用libpcap觀察兩個方向發送的數據包,以計算RTT。 – 2013-02-11 18:59:01