您可以使用測試TCP實用程式(TTCP)來測量通過IP路徑的TCP吞吐量。要使用它,請在路徑的一側啟動接收器,然後在另一側啟動發射器。傳送方向接收方傳送指定數量的TCP資料包。在測試結束時,兩端顯示傳輸的位元組數以及資料包從一端傳輸到另一端所經過的時間。然後,您可以使用這些數字來計算鏈路的實際吞吐量。有關TTCP的一般資訊,請參閱使用TTCP的網路效能測試 。
TTCP實用程式可有效確定特定WAN或數據機連線的實際位元率。但是,您還可以使用此功能測試任何兩台具有IP連線的裝置之間的連線速度。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
本文檔的讀者應瞭解以下內容:
TTCP要求使用Cisco IOS®軟體版本11.2或更高版本以及功能集IP Plus(is-images)或服務提供商(p-images)。
注意:ttcp命令是隱藏、不受支援的特權模式命令。因此,其可用性可能因不同Cisco IOS軟體版本而異,因此在某些版本中可能不存在。例如,某些平台需要Cisco IOS企業功能集才能執行本練習。
本文件所述內容不限於特定軟體和硬體版本。
確保測試中涉及的兩台裝置之間存在IP連線。
如有必要,請下載並安裝用於非IOS客戶端的TTCP軟體。
在下面的示例中,我們嘗試確定Microsoft Windows PC和AS5300訪問伺服器之間的數據機連線的連線速度。儘管此處包含的許多主題和解釋都是數據機連線所特有的,但TTCP實用程式可以在任何兩台裝置之間使用。
使用show modem operational-status命令(對於數據機鏈路)檢查連線引數。對於其他LAN或WAN方案,無需執行此步驟。
customer-dialin-sj> show modem operational-status 1/51 Parameter #1 Connect Protocol: LAP-M Parameter #2 Compression: None ... !--- Output omitted ... Parameter #8 Connected Standard: V.90 Parameter #9 TX,RX Bit Rate: 45333,24000
此編輯後的輸出顯示,客戶端以45333 bps下行鏈路速率和24000 BPS上行鏈路速率在V.90中連線。客戶端數據機上禁用了資料壓縮。由於TTCP測試模式是高度可壓縮的,因此任何資料壓縮都會使我們對真實數據機鏈路吞吐量的測量產生偏差。
在PC(在DOS視窗中)啟動ttcpw程式,作為接收器運行。有關相應語法,請參閱Windows TTCP軟體隨附的自述檔案。
C:\PROGRA~1\TTCPW> ttcpw -r -s ttcp-r: buflen=8192, nbuf=2048, align=16384/0, port=5001 tcp ttcp-r: socket
啟動AS5300上的TTCP傳送器(傳送器)。將大多數設定保留為預設值,但要傳輸的緩衝區數量除外。緩衝區預設數量為2048,要完成該測試,需要花費很長時間。通過減少緩衝區數量,我們能夠在合理的時間範圍內完成測試。
在下面的示例中,我們嘗試確定Microsoft Windows PC和AS5300訪問伺服器之間的數據機連線的連線速度。儘管此處包含的許多主題和解釋都是數據機連線所特有的,但TTCP實用程式可以在任何兩台裝置之間使用。
注意:在開始TTCP測試之前,嘗試獲取數據機(埠)運行狀態的快照,如上所述。
customer-dialin-sj>ttcp transmit or receive [receive]: transmit !--- The AS5300 is the ttcp transmitter Target IP address: 10.1.1.52 ! -- Remote device (the Windows PC) IP address perform tcp half close [n]: use tcp driver [n]: send buflen [8192]: send nbuf [2048]: 50 !--- Number of buffers to transmit is now set to 50 (default is 2048 buffers) bufalign [16384]: bufoffset [0]: port [5001]: sinkmode [y]: buffering on writes [y]: show tcp information at end [n]: ttcp-t: buflen=8192, nbuf=50, align=16384/0, port=5001 tcp ->10.1.1.52 ttcp-t: connect (mss 1460, sndwnd 4096, rcvwnd 4128)
這會導致Cisco IOS TTCP建立到TTCPW的TCP連線(在Windows電腦上)。
當PC收到TTCP會話的請求時,TTCPW顯示一條消息,表明PC已接受來自路由器IP地址的TTCP會話:
ttcp-r: accept from 10.1.1.1
當TTCP傳送方傳送完所有資料後,兩端都會列印吞吐量統計資訊並終止。在這種情況下,IOS TTCP傳送者顯示:
ttcp-t: buflen=8192, nbuf=50, align=16384/0, port=5001 tcp -> 10.1.1.52 ttcp-t: connect (mss 1460, sndwnd 4096, rcvwnd 4128) ttcp-t: 409600 bytes in 84544 ms (84.544 real seconds) (~3 kB/s) +++ ttcp-t: 50 I/O calls ttcp-t: 0 sleeps (0 ms total) (0 ms average)
PC TTCPW接收器則顯示:
ttcp-r: 409600 bytes in 8 4.94 seconds = 4.71 KB/sec +++ ttcp-r: 79 I/O calls, msec/call = 1101.02, calls/sec =0.93
此時,您可能希望獲取數據機或埠運行狀態的另一個快照。此資訊在分析期間非常有用,可以檢查例如數據機連線是否經歷過任何重列或快速班次。
由於通常以kbps(千位每秒,或1000位每秒)而不是以KBps(千位每秒,或1024位元組)為單位來評估連線速度,因此我們必須使用TTCP中的資訊來計算位速率(以kbps為單位)。 使用接收的位元組數和傳輸時間計算連線的實際位元率。
通過將位元組數轉換為位來計算位元率,然後將其除以傳輸時間。在本示例中,Windows PC在84.94秒內接收了409600個位元組。我們可以將位元率(409600位元組*每位元組8位)除以84.94秒=38577 BPS或38.577 kbps。
注意:接收端的結果會稍微更準確,因為發射器可能會認為它是在執行最後一次寫入(即資料實際經過鏈路之前)之後完成的。
相對於標稱鏈路速度45333 BPS(由show modem operational-status命令確定),效率為85%。考慮到數據機(LAPM)、PPP、IP和TCP報頭開銷的鏈路訪問過程,這種效率是正常的。如果結果與您的預期有顯著差異,請分析運行狀態、數據機日誌,並在必要時分析客戶端數據機統計資訊,以檢視可能影響效能的情況(如EC重新傳輸、快速班次、重新訓練等)。
接下來,執行上行鏈路吞吐量測試。這與下行鏈路測試相同,不同之處在於Cisco IOS TTCP充當接收器,而Windows TTCP充當發射器。首先,使用預設引數將路由器設定為接收器:
customer-dialin-sj>ttcp transmit or receive [receive]: perform tcp half close [n]: use tcp driver [n]: receive buflen [8192]: bufalign [16384]: bufoffset [0]: port [5001]: sinkmode [y]: rcvwndsize [4128]: delayed ACK [y]: show tcp information at end [n]: ttcp-r: buflen=8192, align=16384/0, port=5001 rcvwndsize=4128, delayedack=yes tcp
啟用PC作為TTCP發射器,並指定路由器的IP地址。有關相應語法,請參閱Windows TTCP軟體隨附的自述檔案:
C:\PROGRA~1\ TTCPW>ttcpw -t -s -n 50 10.1.1.1 ttcp-t: buflen=8192, nbuf=50, align=16384/0, port=5001 tcp -> 10.1.1.1 ttcp-t: socket ttcp-t: connect
IOS接收器報告以下結果:
ttcp-r: accept from 10.1.1.52 (mss 1460, sndwnd 4096, rcvwnd 4128) ttcp-r: 409600 bytes in 23216 ms (23.216 real seconds) (~16kb/s) +++ ttcp-r: 280 I/O calls ttcp-r: 0 sleeps (0 ms total) (0 ms average)
這表現為上行鏈路吞吐量為141144 BPS — 或與24 kbps的標稱上行鏈路速率相比接近6:1的壓縮比。考慮到硬體壓縮已停用(這是我們在show modem operational-status中確定的),這是一個有趣的結果。 但是,請使用IOS命令show compress檢查是否正在使用任何軟體壓縮。
以下是使用TTCP測量IP路徑吞吐量的一些一般准則:
為了獲得有意義的結果,運行TTCP的主機應該具有相對於鏈路速度的大量CPU功率。當鏈路為45 kbps並且主機是空閒AS5300和700MHz PC時,情況即如此。如果鏈路為100baseT,並且其中一台主機是Cisco 2600路由器,則情況並非如此
Cisco IOS處理源自路由器的資料與通過路由器路由的資料不同。在上方範例中,雖然已在受試連結上交涉Microsoft點對點壓縮(MPPC)壓縮,但路由器傳輸的資料並未使用軟體壓縮,而PC傳輸的資料則使用軟體壓縮。這就是上行鏈路吞吐量顯著大於下行鏈路吞吐量的原因。為了測試高頻寬鏈路的效能,您應該始終通過路由器進行測試。
對於具有大頻寬*延遲產品的IP路徑,必須使用足以保持管道完整狀態的TCP視窗大小。對於數據機鏈路,預設的4 KB視窗大小通常足夠。您可以使用ip tcp window-size指令增加IOS TCP視窗大小。請參閱適用於非IOS系統的文檔。
測試通過數據機鏈路的吞吐量的另一種簡單方法是使用開源工具Through-Putter 。在Access伺服器後面的Web伺服器上安裝此工具,並讓Windows PC客戶端使用瀏覽器來呼叫Java工具。然後,它可用於快速確定數據機連線的資料速率。此數據機吞吐量小程式是開源工具,思科技術支援中心不支援該小程式。請參閱工具附帶的自述檔案,瞭解進一步的安裝和操作說明。
修訂 | 發佈日期 | 意見 |
---|---|---|
1.0 |
09-Sep-2005 |
初始版本 |