Iperf性能測試的問題小結
1. Iperf用文件作為數據源無效的問題
Iperf生成的數據包,默認是0-9這10個數字的循環(十六進制的話就是0x30-0x39的循環),我們可能需要去人工指定數據內容,比如全都置成0來方便的查看物理傳輸過程中的出錯情況,于是我造了一個數據文件之后調用:
iperf -F /root/input_data -c 1.1.1.11 ……
我修改了一下順序,同時修改了部分代碼之后(所以其實也可能是代碼問題,不一定是順序的問題)先設定目標ip,然后指定文件:
iperf -c 1.1.1.11 -F /root/input_data……
就可以了。
2. 在代碼中修改iperf數據,iperf無法收到,但在mac層能拿到數據
如果不使用問題1所述的用源數據文件的方法,而是在發送方的驅動里面強行修改了數據包的內容,會發現在接收方的驅動中是能夠收到數據包的,但是iperf卻不能正常接收到數據包,原因如下:
Iperf在傳輸層之后還有一個36字節長的首部,作為iperf應用層的首部,如果修改了數據,將導致傳傳輸層/應用層校驗失敗(傳輸層使用UDP協議的話,就應該是應用層校驗失敗了),因此包會被丟掉,iperf無法統計到。
3. TCP發不出去包的問題
使用iperf發udp是沒有問題的,但是發tcp就有問題,最后發現是因為我指定了帶寬:
iperf -c xxx.xxx.xxx.xxx -i 1 -b 600M ...
posted on 2014-12-22 23:28 順其自然EVO 閱讀(728) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄