測試任何兩機之間的延遲與頻寬–PsPing 使用手冊及範例
大家好, 今次我們要介紹的是PsPing…
群眾: Ping這個東西我3歲就懂了, 要你教嗎
對的! Ping這個東西真的普通到連我媽都懂, 但其實我要介紹的是比Ping更強大
新近跑進Pstool工具包的PsPing指令, 還有它的用法.
當家中申請了新的互聯網絡, 總要跑一下speedtest.net看看會不會與服務商標榜的速度不相符
speedtest.net 跟世界很多服務供應商合作, 令你可以測試從你家跑到各國家的速度
例如我測試從香港跑到台北某個地方的Ping 有26 ms, 上下載都幾乎有供應商所說的速度
但speedtest.net有個規限, 你不能說我想跟朋友公司的一台機點對點做測試
更不能在公司內部兩台機之間, 或是歐洲那邊的分公司以VPN聯繫的網絡做測試
而如果要做到這個動作, 我們可以利用PStool裡一個新增的工具 – PsPing
下載頁可以到: http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx
你只能把一整套PStool下載, 不能只選一個元件, 不過PStool裡每樣都是寶, 所以先下載也無損失
下載後程式會詢問你想把檔案放在甚麼地方, 由於這套工具是以命令字元方式操作的
所以我就放在C:\Pstool方便存取
再來開啟命令提示字元, 以cd c:\pstool 指令走到目錄, 你可以更改命令到你的安裝目錄
如果你使用任何一個pstool工具都會先要你同意條款
如果你直接打psping 會告訴你它有4大功能, 分別是ICMP Ping, TCP Ping, 延遲與頻寬測試
如果你用 –? 來查詢每個功能的用法, 會給予你更詳細的參數資料及說明
但普通使用者可能會看到頭昏, 所以我會提供每個功能的範例使用方式
首先介紹一下很多人都孰知的Ping功能
Ping這個指令是遠古已有, 它簡單到我想很多家庭主婦也曾經聽過, 也大概想像到它的功能
平常如果我們想知道一個遠端機器有沒有開機, 也會很隨意的Ping一下,看看有沒有回應
這篇我主要用我們一台Web Server來做測試對象, 如果你用windows原生的ping指令可以看到
它會看看對方會不會支援IPv6, 當然你的機器也要懂IPv6
如果你想要強逼它進行IPv4的連接, 可以打ping –4 servername
有關其他參數使用方式請打ping –?查看
ping 原生設定發放4個ICMP PING要求, 你可以用-n 參數更改這個數字
這兩個測試報告我們可以看出, Srvweb01這台機有開機, 而且能回應ping, 回應速度介乎3-10ms (毫秒), 是很快的速度
要注意Windows的ping命令用的是ICMP Protocol, 這不同於TCP或UDP,
我這裡就不討論這3種通訊協議的分別了, 因為這個令這篇文章增加20頁篇幅.
PsPing 也有這個傳統的功能, 但顯示的方式有點不同, 而且命令也有多些變化
例如如果我打ping –n 8 –w b –h 5 srvweb01 , 會有這個報告出來
-w 參數是warm up的意思, 說的是進行正式測試前先進行多少次(例子是3次) 熱身運動,
這個熱身運動有助取得更準確的數據, 大家可以看到熱身的延遲數據往往比較慢, 理由就不詳述了…(會再加10頁篇幅…)
-n 是指運行正式測試的次數, 例子是8次, 就是綠色圈圈的部份, 最後的報告會以這些資料做統計
-h 是指最後輸出的一個統計數據的筆數, 例子是 5, 所以藍色框框有5筆資料
順帶一提, 如果你要強制使用IPv4作連線, 可以用 –4 這個參數, 例如
psping –4 –n 8 –w b –h 5 srvweb01
這個報告告訴我甚麼呢? 基本上是跟Ping說的不相上下, 統計數據也是說延遲值由3~10ms不等
而總合報告指出有4筆資料顯示延遲在6.9ms 附近, 相比Ping的報告, 這個psping就是把資料擺好看一點.
Psping強大於它還可以讓你以TCP連接埠的方法來測試回應
以往如果你要測試埠的連接, 你可能會用telnet這個命令, 但它只能告訴你連的上還是連不上…
而且最大的問題是這個telnet命令從windows vista開始並不是預載的指令, 要後期補裝
使用的方法跟上面ICMP Ping的使用非常相同, 只要在測試目標後補上連接埠數字就可, 例如
psping -n 8 -w 3 -h 5 srvweb01:80
因為我要進行的目標是一台Web server, 所以我向它測試80埠,
事前你需要確認防火牆不會把你對連接埠的封包檔下來, 不然會出現以下訊息…
其他參數的用意是沒有分別的, 但為了方便閱讀我還是把上面的文字重抄一遍…
-w 參數是warm up的意思, 說的是進行正式測試前先進行多少次(例子是3次) 熱身運動,
-n 是指運行正式測試的次數, 例子是8次, 就是綠色圈圈的部份, 最後的報告會以這些資料做統計
-h 是指最後輸出的一個統計數據的筆數, 例子是 5, 所以藍色框框有5筆資料
順帶一提, 如果你要強制使用IPv4作連線, 你也是可以用 –4 這個參數, 例如
之後再看看原生Ping不能做的一些動作
我們來用Psping做封包延遲的測試, 先看看範例指令
psping -l 1500 -n 300 -h 10 srvweb01:80
這個測試一定要使用TCP連接埠才能完成, 所以我繼續使用80埠作測試
圖中看出我們要給予一些特別參數, 分別是:
-l 參數是設定封包大少, TCP連線在Layer 2 Ethernet中的MTU (Maximum Transmission Unit)通常以1500 Bytes為一個單位,
或許你有聽過Jumbo Frame這個名詞, 你可以根據你的網絡環境作出修改, 如果你不清楚這兩行在說甚麼…請用1500做單位
-n 是測試次數, 例子是300, 就是說這個測試會嘗試發送300個封包到對方主機
-h 是最後的統計數據筆數, 例子是10, 所以你回見到黃色框框有10筆資料
這裡我們要怎樣理解呢?
Psping告訴我, 它發送了305個封包, 頭5個是熱身用的, 後面300個每個1500 Bytes
封包發送到對方的80埠成功連線, 而且對方全部都有回應.
總合送出的封包大小是300 x 1500 = 450000 Bytes
很多封包在1ms以內得到回應, 浮遊值在0.86 ~ 11.35 ms,
注意它說的是Roundtrip Latency, 就是說封包是發出去再收到回應這一整段的延遲時間
沒有比較可能會差一點點感覺, 我再以www.dotblogs.com.tw來做測試
由於怕它以為我在攻擊它, 所以我做50次封包測試就好
看到了嗎? 這個報告說明我的電腦跟Dotblogs之間普遍有29毫秒的延遲
是很好的速度, 其實封包到200ms延遲 也不會令人感覺很煩厭
超出這個數字就會感覺網絡好像回應越來越慢…
這關乎每個網絡節點的處理速度, 還有各地區的連接方式
如果在內聯網都會有高延遲, 可能就跟不正常的網絡裝置有關了, 更甚這可能會出現掉封包的狀況
最後看看如何測試兩點間的頻寬
先說明一些關係, 頻寬你可以想像是一條水管的大小
水管越大, 理論上放水到另一端的理論速度也越快
但這也要看放水的一方給不給力.
對比在電腦世界, 頻寬是由你的電腦, 到另一電腦中間的總合串連關係
並不是單單由一方決定的, 比如說你的電腦LAN阜可以跑到1Gbps,
但如果對方的電腦只能跑到100 Mbps, 那麼最終你們最快也只能用100 Mbps來傳資料
如果放大到互聯網世界, 還要看中間的路由器, 交換機的速度.
至於它們之間怎樣協議傳輸速度, 多出來又怎辦, 我希望往後有機會可以用10頁篇幅來說明
作為我這重職業的人, 很常聽到客戶說, 我的網絡明明達到光速了, 怎麼看網頁(或其他東西) 會這麼慢,
我每個月付的錢都白花了!
如果你也聽到相同的說話…可以把這篇文章推薦給你的朋友看看
回到主題. Psping 測試頻寬的指令範例如下
psping -b -l 1500 -n 15000 srvweb01:80
-b 參數決定這是要進行頻寬測試
-l 是封包大小, 我沿用基本的1500 Bytes
-n 是設定幾個封包, 這裡建議設大一點, 因為網絡設備不是一開始就能用全速運作, 放多一點封包會準確一點
同樣你要設定連接埠數字, 我繼續用80來連接
這個報告可以看出, 我的電腦跟Web Server之間能用10 MB/s的速度來傳送資料 (注意Psping所用單位是 MB/s)
如果我把封包大小設成9000, 就是說每個封包有9000 Bytes, 還是能送到對方那邊
但由於封包會被中間的網絡設備剪裁成基本1500 Bytes封包的大小, 所以會有一些效能折減
圖中看出過程曾出現過5.87 MB/s 的低落傳輸速度, 令整體(Average)速度稍為下降.
網絡連線其實很艱深, 如果這篇有任何出錯或理論錯誤出告知
希望大家能簡單認識Psping為我們帶來的用處!