VSPerf RFC 2544 吞吐量

應用說明

網路功能虛擬化(NFV)正大幅改變我們設計、建置及營運網路的方式,並因其旨在實現容量的彈性擴展、資本支出的可預測性,以及快速且靈活的應用程式/服務部署,而在業界獲得極大關注。作為 NFV 的關鍵組件之一,虛擬交換器(vSwitch)負責連接執行應用程式的虛擬機器,其效能已成為 NFV 部署成功的關鍵。Xena 正與 NFV 開放平台(OPNFV)社群緊密合作,共同推動 vSwitch 效能(VSPerf)專案,致力於建立一套通用且不依賴特定架構的 vSwitch 效能基準測試框架。此框架將作為驗證不同 vSwitch 實作方案在電信業者 NFV 部署環境中適用性的基礎。

本應用說明書闡述如何在 VSPerf[1]專案下,利用 Xena2544 對電信網路功能虛擬化(NFV)用例中的虛擬交換機吞吐量效能進行基準測試與特性分析。

虛擬交換機效能基準測試

Xena2544 是一款免費的 PC 應用程式,可協助使用者輕鬆建立、編輯及執行符合 RFC 2544 標準的測試配置。Xena2544 會隨 XenaManager 自動安裝,並可搭配一個或多個Xena 機箱使用。採用現有 RFC 標準的目的是為了在虛擬交換機與實體交換機的效能之間建立公平的比較基準。

RFC 2544 是 VSPerf 測試框架中引用的重要標準測試套件。它概述了一種針對網路互連裝置的基準測試方法。該方法可產生諸如吞吐量、延遲和幀丟失率等效能指標。

OPNFV VSPerf「電信 NFV 應用案例中 vSwitch 效能特性分析」專案(https://wiki.opnfv.org/display/vsperf/VSperf+Home)定義了三種測試情境:

  • 物對物(Phy2Phy)
  • VM 迴路 (PVP)
  • 兩個虛擬機器迴路(PVVP)

物對物(Phy2Phy)情境

此連線的配置為:實體埠 → vSwitch → 實體埠。vSwitch 運行於主機上。部署情況如圖 1 所示:

Xena VSPerf

VM 迴路 (PVP) 情境

此連線的配置為:實體埠 → vSwitch → VNF → vSwitch → 實體埠。vSwitch 運行於主機上。虛擬機器執行 DPDK testpmd/L2fwd/Linux Bridge 來轉發流量。流量由均勻的 UDP 封包組成。部署架構如圖 2 所示。

圖 2. PVP 情境

兩個虛擬機器迴路(PVVP)情境

此連線的配置為:實體埠 → vSwitch → VNF → vSwitch → VNF → vSwitch → 實體埠。虛擬機器執行 DPDK testpmd/L2fwd/Linux Bridge 來轉發流量。流量由均勻的 UDP 封包組成。此部署情況如圖 3 所示。

圖 3. PVVP 情境

物理測試設置

從測試人員的角度來看,這三個測試情境(Phy2Phy、PVP、PVVP)僅在內部架構上有所不同。因此,可使用下圖 4 所示的測試配置來進行設定。此處使用Teledyne LeCroy Xena 兩個連接埠來測試被測裝置(DUT)。在此測試中,被測裝置(DUT)是一台運行 vSwitch 的主機。

Xena2544
圖 4. 物理測試裝置

如果您尚未在受測裝置 (DUT) 上安裝虛擬交換器,請前往http://openvswitch.org/download/並依照指示進行安裝。關於如何安裝及設定虛擬交換器的說明,不在本應用說明的範圍內。 您亦可前往https://wiki.opnfv.org/display/vsperf/VSperf+Home 查閱有關如何部署 Phy2Phy、PVP 及 PVVP 的更多資訊。

使用Teledyne LeCroy Xena測試 VSPerf RFC2544 的三種方法

虛擬交換器的基準測試方法應與實體交換器沒有顯著差異。從流量產生器的角度來看,在使用 RFC 2544 時,測試情境應保持一致,以便虛擬交換器的測試結果能與實體交換器的結果相互比較。

您可以透過以下三種方式使用 Xena2544 進行測試:

  • 您可以使用 VSPerf 框架中的 XenaDriver 和 XenaTrafficGenerator,或者
  • 您可以透過 Xena2544 圖形使用者介面 (GUI) 來設定並執行測試,或者
  • 您可以透過 Xena2544 指令執行預先設定的測試。

圖 5 對此有詳盡的說明。以下各節將引導您使用Teledyne LeCroy Xena 執行 VSPerf RFC 2544 吞吐量測試。

圖 5. 使用Teledyne LeCroy Xena執行 VSPerf RFC2544 測試的三種方法

Xena VSPerf 腳本框架使用Teledyne LeCroy Xena

Red Hat 與Teledyne LeCroy Xena 合作Xena Teledyne LeCroy Xena 與 OPNVF 的 VSPerfXena 。開源專案Teledyne LeCroy Xena 可於以下網址找到:

https://github.com/ctrautma/Xena-VSPerf

XenaDriver 的開發旨在提供一套 API,供使用者與Teledyne LeCroy Xena 進行通訊。Teledyne LeCroy Xena 流量產生器)類別的開發則旨在提供用於產生流量的 API。兩者皆以 Python 編寫。VSPerf 設計文件可於以下位置找到:

http://artifacts.opnfv.org/vswitchperf/docs/design/vswitchperf_design.html

步驟 1:下載專案

請前往Xena下載此專案。同時也請根據需要下載並在您的電腦上安裝相關依賴項。

在下圖所示的目錄中,有四個用於 VSPerf 測試的重要檔案:

  1. exe 提供 RFC 2544 測試框架,
  2. py 提供與Teledyne LeCroy Xena 通訊 API,
  3. py 是一個流量產生器,用於在 XenaDriver.py 和 Xena2544.exe 的基礎上啟動或停止測試流量
  4. py 會將 Xena2544 的設定檔 .v2544 轉換為 JSON 格式。

xena

——–人物專訪/

——–Xena2544.exe

——–XenaDriver.py

——xena.py

——xena.py

在 /profiles 目錄中,存放著 Xena2544 的測試設定檔(.v2544)。您也可以將您的 v2544 檔案存放於此處。

v2544 檔案是一種採用 JSON 格式的檔案,用於描述 Xena2544 測試的詳細設定,例如包含哪些埠、拓撲結構、流量模式、封包標頭、應執行哪些測試、輸出報告格式等。

當您透過圖形化使用者介面 (GUI) 儲存測試時,Xena2544 會自動產生一個 v2544 檔案。在「測試步驟 – 使用 Xena2544 GUI」一節中,您可以了解如何透過 Xena2544 GUI 配置測試,並自行產生 v2544 檔案。請注意,如果您決定使用自訂的 .v2544 檔案,則需相應地修改xena.py 檔案。

步驟 2:設定

測試儀配置檔 (*.conf) 位於Xena 套件中。您可以定義Xena Teledyne LeCroy Xena IP 位址,例如指定要使用的埠和模組,以及封包大小,如下例所示。您還可以在該檔案中啟用或停用其他廠商的測試儀。

#Xena 生成器連線資訊

TRAFFICGEN_XENA_IP = ‘10.19.15.19’

TRAFFICGEN_XENA_PORT1 = ‘0’

TRAFFICGEN_XENA_PORT2 = ‘1’

TRAFFICGEN_XENA_USER = ‘vsperf’

TRAFFICGEN_XENA_PASSWORD =xena

TRAFFICGEN_XENA_MODULE1 = ‘3’

TRAFFICGEN_XENA_MODULE2 = ‘3’

TEST_PARAMS = {‘packet_sizes’:’64’}

該設定檔還提供了一個設定物件,用以公開所有這些設定。設定不會在元件之間傳遞,而是只要元件導入 conf 套件,所有元件便都能在全球範圍內存取這些設定。

from conf import settings

...

log_file = settings.getValue('LOG_FILE_DEFAULT')

步驟 3:將Teledyne LeCroy Xena 匯入您的專案

若要使用Teledyne LeCroy Xena (流量產生器),您需要匯入以下模組:

from tools.pkt_gen.xena.xena Xena

from tools.pkt_gen.trafficgen.trafficgenhelper import TRAFFIC_DEFAULTS

Xena 提供以下 API:

1: [XENA.send_rfc2544_throughput],

2: [XENA.start_rfc2544_throughput,

[XENA.wait_rfc2544_throughput],

3: [XENA.send_burst_traffic],

4: [XENA.send_cont_traffic],

5: [XENA.start_cont_traffic,XENA.stop_cont_traffic],

6: [XENA.send_rfc2544_back2back],

7: [XENA.start_rfc2544_back2back,

[XENA.wait_rfc2544_back2back],

步驟 4:執行測試或自行建置

現在您可以嘗試在根目錄中執行 xenatest.py 來執行測試。您也可以使用 XenaDrive 和Xena 來編寫自己的腳本。

使用 Xena2544 圖形使用者介面

以下各節將透過一個範例配置,說明如何使用 Xena2544 執行 VSPerf 測試。在開始設定Teledyne LeCroy Xena RFC 2544 吞吐量測試之前,請務必確認您已安裝用於測試的虛擬交換器,並已正確完成其設定。

步驟 1:選擇模組和連接埠。

請選取兩個連接至被測裝置 (DUT) 的埠。您可以立即預留這些埠,或者由應用程式在測試開始時,將選取的埠從其他使用者處釋放並為您預留。圖 6 展示了一個選取兩個埠進行測試的範例。建議您始終確認連接至被測裝置 (vSwitch) 的兩個埠是否顯示為綠色。若非如此,您需要檢查連線問題。

Xena2544
圖 6. 選擇測試模組卡及連接埠。

步驟 2:定義測試拓撲與幀內容

如下圖 7 所示,在視窗的右側,您可以選取幾個面板。請前往「測試設定」面板。

「測試設定」面板包含用於控制測試執行的屬性。這些屬性分為以下子面板:

  • 拓撲與幀內容」面板用於控制測試流量的拓撲結構與方向,以及所產生測試幀的內容。
  • 測試執行控制」面板用於控制整體測試屬性,無論測試類型為何。
  • 測試類型設定」面板用於控制您要執行的測試類型,並讓您針對每種測試設定各項屬性。

選取「拓撲與幀內容」面板。在「整體測試拓撲」區段中,將「拓撲」設為「成對」,並將「方向」設為「雙向」,以進行雙向流量測試。也應測試單向流量,因為若僅測試雙向流量,某些問題可能無法顯現。除了流量方向外,還應針對不同封包大小測試 vSwitch,因為封包大小會對效能產生重大影響。 將幀大小設定為 64 及 1500 位元組,以檢視 vSwitch 在小幀與大幀大小下的效能表現。Xena2544 將執行兩項測試,每種幀大小各執行一次。

圖 7. 定義測試拓撲與幀內容。

步驟 3:定義測試執行控制

測試執行控制可在下圖 8 所示的「測試執行控制」面板中進行設定。本範例採用預設設定,並在每次測試中啟用 MAC 學習模式。基於串流的流量建立方式允許從一個實體埠產生多個串流,而基於修飾符的方式則僅允許產生一個串流。啟用埠同步功能後,各埠可同時向 vSwitch 產生流量;否則,各埠將各自以自己的步調產生流量。

圖 8. 定義測試執行控制

步驟 4:設定測試類型

RFC 2544 測試套件包含四項測試:吞吐量、延遲與抖動、幀丟失率,以及背對背測試。請選擇「吞吐量測試」進行 測試。吞吐量測試用於測量被測裝置(DUT)在不丟失任何傳入幀的情況下所能達到的最大傳輸速率。在步驟 2 中,可使用不同大小的幀來執行此測試。

圖 9. 將測試類型設定為「吞吐量測試」

步驟 5:指派埠群組與埠對等體

如圖 10 所示,請前往「已選取的埠」面板。將第一個埠指派至「」群組,其餘埠則指派至「西」群組。接著,為每個埠指派一個對等埠。在下圖 10 所示的範例中,埠 0 位於「西」群組,其對等埠埠 1 則位於「東」群組。之後,請選擇「協定區段設定檔」。此範例中使用的是「乙太網路標頭設定檔」。

圖 10. 指派埠群組與埠對應

第 6 步:編輯區段標頭設定檔

如圖 11 所示,請前往「協定區段設定檔」面板,檢查 您在步驟 5 中選取的協定 區段設定檔。使用者計數顯示有兩個埠正在使用該設定檔。您也可以編輯或建立區段標頭設定檔。

圖 11. 編輯/建立區段標頭輪廓

步驟 7:設定多串流

如圖 12 所示,請前往「多流配置」面板。啟用「多流」選項。每個埠建立 32 個流。示例如圖 12 所示。這 32 個流皆由同一個實體埠產生,其來源與目的地 MAC 位址各不相同,並傳送至另一個埠,反之亦然。由於流量為雙向傳輸,因此流的總數為 64。

圖 12. 設定多串流

第 8 步:執行測試並產生報告

儲存您的設定。Xena2544 的設定檔副檔名為v2544。若您希望以自動化方式執行測試,此設定檔至關重要,相關說明與示範將於下一節中進行介紹。

如圖 13 所示,您可以選擇 Xena2544 來產生不同類型的報告,例如 PDF、XML 或 CSV。若您希望對測試結果進行某些後續處理的自動化,選擇 XML 或 CSV 格式將非常實用。

按下「開始」按鈕,測試便會開始執行。如前所述,若您尚未預留埠號,Xena2544 將會為您的測試預留這些埠號。

圖 13. 選擇報表格式

使用 Xena2544 指令

除了使用 Xena2544 GUI 進行設定和執行Teledyne LeCroy Xena 出色的命令列介面,用於執行預先設定好的測試。透過此功能,您可以使用自訂腳本來自動化測試流程。

步驟 1:找到您的 V2544 設定檔

請找出您先前儲存的 v2544 檔案。您可以透過點擊「探索Teledyne LeCroy Xena 目錄」(如下圖 14 所示)來找到該檔案。

範例中的檔案路徑是:

C:\Users\me\Documents\Xena\Xena2544-2G\VSPerf-RFC2544.v2544

並在以下各節中被稱為。

圖 14. 尋找您的 v2544 設定檔

步驟 2:從命令列執行測試

請前往命令目錄 C:\Program Files (x86)\Xena \L2-3\L23Tools,如圖 15 所示。在此目錄中,Xena2544.exe 即是我們將用來執行 v2544 檔案中設定之測試的命令。如圖 15 所示,此處提供數種選項。

圖 15. 尋找您的 Xena2544 命令目錄

請在當前目錄中執行圖 16 所示的指令,以執行此測試。

Xena2544.exe -c -e 或

Xena2544.exe –config –execute

圖 16. 使用Valkyrie2544 執行測試

Red Hat 採用Teledyne LeCroy Xena進行的 VSPerf 測試結果

作為 OPNFV 的成員之一,Red Hat 正在使用Teledyne LeCroy Xena VSPerfXena 。以下是 PHY2PHY_TPUT 的測試報告。若要了解 VSPerf 所使用的各種測試 ID,請參閱Teledyne LeCroy Xena白皮書《虛擬交換機效能基準測試》。

測試編號:PHY2PHY_TPUT

————————–

測試環境

~~~~~~~~~~~~~~~~

以下是執行測試的環境:

* 作業系統:Red Hat 7.3 Maipo

* 核心版本:3.10.0-470.el7.x86_64

* 網路介面卡 (NIC):

* 英特爾公司 10G 以太網 2 埠 X520 網卡 (rev 01)

* 英特爾公司 10G 以太網 2 埠 X520 網卡 (rev 01)

* 主機板:戴爾公司 0599V5 [2 個插槽]

* CPU:Intel® Xeon® CPU E5-2637 v3 @ 3.50GHz

* CPU 核心數:16

* 記憶體:65759124 kB

* 虛擬交換機設定:點對點 (p2p)

* vswitchperf:GIT 標籤:07bab38905cf10cad6987bb9c5b302bbff2c6013

* 流量生成器:XXena,版本:Xena2544 v2.43,GIT 標籤:無

* vSwitch:OvsDpdkVhost,版本:無,GIT 標籤:無

* DPDK 版本:2.2.0,GIT 標籤:無

以下是測試詳情:

* 測試編號:phy2phy_tput

* 說明:LTD.吞吐量.RFC2544.封包遺失率

* 部署:點對點

* 流量類型:rfc2544

* 雙向:True

封包大小測試結果:64

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以下概述了主要結果的詳細摘要。

收集到的結果/指標

^^^^^^^^^^^^^^^^^^^^^^^^^

以下是本次測試中獲得的指標:

========================== ==================================

指標 結果

========================== ==================================

throughput_rx_fps 23115618.5733333

接收吞吐量 (MB/s) 15533.695681279998

接收吞吐量百分比 77.1484375

tx_rate_fps 23115618.5733333

tx_rate_mbps 15533.69568128

tx_rate_percent 77.1484375

min_latency_ns 4487.0

max_latency_ns 51071.0

平均延遲(奈秒) 8352.0

類型 rfc2544

封包大小 64

流量類型 udp

測試執行時間 01:33:30

========================== ==================================

已收集的統計數據

^^^^^^^^^^^^^^^^^^^^

以下系統統計資料是在測試案例執行期間所收集的:

========================== ==================================

進程:ovs-vswitchd

————————————————————-

統計項目 數值

========================== ==================================

UID 0

PID 6870

%usr 100.00

%system 2.01

%guest 0.00

%CPU 100.00

CPU –

minflt/s 25.24

majflt/s 0.00

VSZ 3292824

RSS 30509

%MEM 0.05

kB/s 0.00

kB/s 0.00

kB·cc·wr/s 0.00

========================== ==================================

========================== ==================================

程序:ovsdb-server

————————————————————-

統計項目 數值

========================== ==================================

UID 0

PID 6863

%usr 0.01

%system 0.00

%guest 0.00

%CPU 0.01

CPU –

minflt/s 0.00

majflt/s 0.00

VSZ 43728

RSS 3260

%MEM 0.00

kB/s 0.00

kB/s 0.00

kB·cc·wr/s 0.00

========================== ==================================

封包大小測試結果:1500

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以下概述了主要結果的詳細摘要。

收集到的結果/指標

^^^^^^^^^^^^^^^^^^^^^^^^^

以下是本次測試中獲得的指標:

========================== ==================================

指標 結果

========================== ==================================

throughput_rx_fps 1644717.9500000002

接收吞吐量 (mbps) 19999.770272

接收吞吐量百分比 99.99890255943811

tx_rate_fps 1644736

tx_rate_mbps 19999.98976

tx_rate_percent 100

min_latency_ns 8135.0

max_latency_ns 2584233.0

平均延遲(奈秒) 2018627.0

類型 rfc2544

封包大小 1500

流量類型 udp

測試執行時間 01:33:30

========================== ==================================

已收集的統計數據

^^^^^^^^^^^^^^^^^^^^

以下系統統計資料是在測試案例執行期間所收集的:

========================== ==================================

進程:ovs-vswitchd

————————————————————-

統計項目 數值

========================== ==================================

UID 0

PID 6870

%usr 100.00

%system 2.01

%guest 0.00

%CPU 100.00

CPU –

minflt/s 25.24

majflt/s 0.00

VSZ 3292824

RSS 30509

%MEM 0.05

kB/s 0.00

kB/s 0.00

kB·cc·wr/s 0.00

========================== ==================================

========================== ==================================

程序:ovsdb-server

————————————————————-

統計項目 數值

========================== ==================================

UID 0

PID 6863

%usr 0.01

%system 0.00

%guest 0.00

%CPU 0.01

CPU –

minflt/s 0.00

majflt/s 0.00

VSZ 43728

RSS 3260

%MEM 0.00

kB/s 0.00

kB/s 0.00

kB·cc·wr/s 0.00

========================== ==================================

異常現象

~~~~~~~~~~

在本次測試過程中,未偵測到任何異常情況。

測試活動/事件

~~~~~~~~~~~~~~~~~~~~~~~~~

pidstat 用於收集進程統計資料,因此某些數值(例如 %CPU 和 %USER)可能會超過 100%,因為這些數值是跨多個核心進行累計的。有關 pidstat 的更多資訊,請參閱:http://linux.die.net/man/1/pidstat

已知問題:部分報告中的指標顯示為「未知」。這些值之所以被標記為未知,是因為它們並非從外部測試器(流量產生器)擷取的數值。這些值是基於對封包大小的假設而錯誤推導出來的,因此已在 vsperf 中被廢棄並標記為未知。此問題將於下個版本中解決。

.. 周圍必須留有空行,以確保格式正確。

 

 

 

試用我們的Live Demo

您知道嗎?現在就可以立即試用Xena !您只需要一台電腦(作業系統至少為 Windows XP)。開始使用前,請前往:https://xenanetworks.com/try-demo/

請瀏覽我們的網站了解更多資訊

請瀏覽我們網站上的以下頁面,以進一步了解本應用說明中提及的產品:

價格資訊

如需了解價格詳情,請聯絡xena

預約探索通話

立即預約與Xena 進行簡短通話,了解Xena 是否符合您的需求:https://xenanetworks.com/discovery-call-booking/

[1]https://wiki.opnfv.org/display/vsperf/VSperf+Home