2008-10-08 43 views
10

簡化,我有一個應用程序,其中數據旨在通過互聯網在兩臺服務器之間流動。理想情況下,我想測試軟件在什麼時候停止運行。在什麼樣的下限(帶寬,延遲,丟包)中,測試軟件的可靠性會停止工作。模擬WAN網絡的最佳方法

我想我會做的是以下幾點:

  1. 安裝了3臺機器(VMware的情況下)
  2. 在兩個服務器上安裝了2個應用程序。
  3. 設置了第三服務器做某種路由和遠程訪問魔法Windows上的兩臺機器之間坐2003
  4. 安裝或者Traffic Shaper XPNetLimiter限制帶寬
  5. 運行像TMnetSim Network Simulator模擬信號不良。

這聽起來像一個好主意,或者有更好的方法嗎?我在Linux上並不是那麼舒服,我的隊友更不是這樣。

+0

你能詳細說明你正在嘗試做什麼樣的性能測試嗎? – 2008-10-08 11:13:27

+0

我認爲表現是錯誤的詞。我真正想測試的是哪些下限(帶寬,延遲,丟包)會停止測試軟件的可靠性。 – 2008-10-08 12:05:28

回答

3

FreeBSD的ipfw有規定模擬與給定的帶寬,延遲或錯誤率的鏈接。在上面的設置中,您可以使用該FreeBSD機器作爲您的機器「在中間」。

如果您想減少涉及的服務器數量,您可能還可以在同一臺計算機上至少運行一個端點。

+0

許多年前,我和一位同事一起使用ipfw取得了代理負載測試的巨大成功。它取代了一個昂貴的解決方案(這個解決方案應該是沒有名字的),這個解決方案效果很差,我試圖讓我們的錢回來。 – 2009-05-01 18:40:54

1

大約十年前我們有類似的要求 - 我會看看我能否回想起我們如何管理它。

如果我記得,我們寫了一個套接字代理程序,它由一個UNIX機箱上的inetd控制。該套接字將接受來自客戶端的連接,並通過服務器打開相應的會話。然後它會循環,在兩個方向傳遞消息。

我們實現WAN特性的方式是在連接建立和鏈接完成後數據的傳遞都引入隨機延遲(帶有上限和下限)。

它還具有偶爾丟棄鏈接的功能,因爲WAN鏈接對我們來說不如本地流量可靠。

我記得我們必須讓它通過線程來阻止延遲影響鏈路上的反向流量。

2

有人實際上已經打包了這些設置以及FreeBSD解決方案對於此問題的必要條件,他們稱之爲DUMMYNET

它模擬/實施隊列和帶寬限制,延遲,數據包丟失和多路徑效應。它還實現了稱爲WF2Q +的加權公平隊列變體。它可以在用戶的​​工作站上使用,也可以在充當路由器或橋接器的FreeBSD機器上使用。

它可以準確地模擬你想要什麼,它的自由和將啓動到商品硬件上。他們甚至有一個可以安裝的小軟盤,可以放在軟盤上(!),你可以在那個鏈接下載。

8

WANem完全是這樣。我們已經在桌面上的虛擬機和專用的舊電腦上使用了它,它運行得非常好。它可以模擬各種斷開的連接。

2

也許現在是時候學習一些關於Linux,因爲在每個輸出數據包添加50ms的延遲可以只鍵入一個行完成:

tc qdisc add dev eth0 root netem delay 50ms 

更多看到Linux Traffic Control HOWTO

0

有一個非常好的(免費的)微軟解決方案,我們使用它很長一段時間,它的工作很好,它可以很容易地模擬每一件事情(包丟失,低帶寬,斷開連接,延遲....) 這是我發現Windows環境的最佳解決方案

更多信息和下載鏈接可以在這裏找到:MARCO blog post

這款產品已經有些變化,它現在已集成到Visual Studio作爲自動化測試的一部分,但我發現使用獨立的(即很難找到,所以保留本地副本)工作得更好。請記住,您至少需要兩臺計算機(或VM),因爲您需要通過網絡適配器才能使應用程序發揮其魔力。