VSPerf RFC 2544 スループット

アプリケーションノート

ネットワーク機能仮想化(NFV)は、ネットワークの設計、構築、運用方法に劇的な変化をもたらしており、容量の弾力的な拡張、設備投資(CapEx)の予測可能性、アプリケーションやサービスの迅速かつ柔軟な展開を目的として、業界内で大きな注目を集めています。NFVの主要コンポーネントの一つである仮想スイッチ(vSwitch)は、アプリケーションが実行されている仮想マシンを接続する役割を担っており、そのパフォーマンスはNFV導入の成否を左右する重要な要素となっています。Xena 、汎用的かつアーキテクチャに依存しないvSwitchパフォーマンスベンチマークおよびテストフレームワークの構築を目指し、Open Platform for NFV(OPNFV)コミュニティと緊密に連携してvSwitch Performance(VSPerf)プロジェクトに取り組んでいます。これは、通信事業者のNFV導入環境において、さまざまなvSwitch実装の適合性を検証するための基盤となるものです。

本アプリケーションノートでは、Xena2544 を使用した VSPerf[1]プロジェクトにおいて、通信ネットワーク機能仮想化(NFV)のユースケースを対象とした仮想スイッチのスループット性能のベンチマークおよび特性評価を行う方法について説明します。

仮想スイッチのパフォーマンスベンチマーク

Xena2544は、RFC 2544に準拠したテスト構成を簡単に作成、編集、実行できる無料のPCアプリケーションです。Xena2544はXenaManagerと併せて自動的にインストールされ、1台またはXena シャーシで使用できます。既存のRFCを採用する目的は、仮想スイッチと物理スイッチのパフォーマンスを公平に比較することにあります。

RFC 2544は、VSPerfテストフレームワークで参照されている重要な標準テストスイートです。これは、ネットワーク相互接続デバイス向けのベンチマーク手法を規定しています。この手法により、スループット、レイテンシ、フレーム損失率などのパフォーマンス指標が得られます。

OPNFVの「VSPerf:通信事業者向けNFVユースケースにおけるvSwitchの性能評価」プロジェクト(https://wiki.opnfv.org/display/vsperf/VSperf+Home)では、3つのテストシナリオが定義されています:

  • 物理から物理(Phy2Phy)
  • VMループバック(PVP)
  • 2つのVMループバック(PVVP)

物理から物理(Phy2Phy)シナリオ

接続構成は、「物理ポート → vSwitch → 物理ポート」となっています。vSwitchはホスト上で動作します。この構成は、以下の図1に示されています。

Xena VSPerfをXena

VMループバック(PVP)シナリオ

接続構成は、物理ポート → vSwitch → VNF → vSwitch → 物理ポートとなっています。vSwitchはホスト上で動作します。VMは、トラフィックを転送するためにDPDKのtestpmd/L2fwd/Linux Bridgeを実行しています。トラフィックは均一なUDPパケットで構成されています。この構成を図2に示します。

図2. PVPシナリオ

2つのVMループバック(PVVP)シナリオ

接続構成は、物理ポート → vSwitch → VNF → vSwitch → VNF → vSwitch → 物理ポートとなっています。VMでは、トラフィックを転送するためにDPDKのtestpmd/L2fwd/Linux Bridgeが実行されています。トラフィックは均一なUDPパケットで構成されています。この構成を図3に示します。

図3. PVVPシナリオ

物理実験のセットアップ

テスターの観点から見ると、3つのテストシナリオ(Phy2Phy、PVP、PVVP)は内部的な違いしかありません。したがって、これらはいずれも、下図4に示すテスト構成を使用して設定することができます。Teledyne LeCroy Xena 2つのポートを使用して、被試験デバイス(DUT)のテストを行います。このテストにおけるDUTは、vSwitchを実行するホストです。

ゼナ2544
図4. 物理実験のセットアップ

DUTに仮想スイッチをインストールしていない場合は、http://openvswitch.org/download/にアクセスし、指示に従ってインストールを行ってください。仮想スイッチのインストールおよび設定方法については、本アプリケーションノートの範囲外となります。 また、Phy2Phy、PVP、およびPVVPの導入方法に関する詳細情報は、https://wiki.opnfv.org/display/vsperf/VSperf+Home でご確認いただけます。

Teledyne LeCroy Xenaを使用して VSPerf RFC2544 をテストする 3 つの方法

仮想スイッチにおけるベンチマーク手法は、物理スイッチの場合と大きな違いがあってはならない。トラフィックジェネレータの観点からは、RFC 2544を使用する場合、テストシナリオは同一であるべきであり、それによって仮想スイッチでのテスト結果と物理スイッチでの結果を比較可能にする必要がある。

Xena2544 を使用してテストを行うには、次の 3 つの方法があります:

  • VSPerf フレームワークの XenaDriver および XenaTrafficGenerator を使用するか、
  • Xena2544 GUI を使用してテストの設定や実行を行うことができます。あるいは、
  • Xena2544 コマンドを使用して、あらかじめ設定されたテストを実行できます。

これらは図5に詳しく示されています。以下のセクションでは、Teledyne LeCroy Xena を使用した VSPerf RFC 2544 スループットテストの手順について解説します。

図5.Teledyne LeCroy Xenaを使用した VSPerf RFC2544 テストの 3 つの方法

VSPerf Script FrameworkXena Teledyne LeCroy Xena の使用

RedTeledyne LeCroy Xena OPNVF向けのVSPerfプロジェクトTeledyne LeCroy Xena Xena 。オープンソースプロジェクト「Teledyne LeCroy Xena」は、以下のURLからアクセスできます:

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

XenaDriverは、Teledyne LeCroy Xena と通信するための一連のAPIを提供するために開発されました。Teledyne LeCroy Xena トラフィックジェネレータ)は、トラフィック生成のためのAPIを提供するために開発されました。どちらもPythonで記述されています。VSPerfの設計文書は、以下のURLから入手できます:

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

ステップ1:プロジェクトをダウンロードする

Xenaにアクセスして、プロジェクトをダウンロードしてください。また、必要な依存関係もダウンロードし、お使いのPCにインストールしてください。

以下のディレクトリには、VSPerf テストに必要な重要なファイルが 4 つあります:

  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ファイルは、Xena2544テストの詳細な設定(対象ポート、トポロジー、トラフィックパターン、パケットヘッダー、実行すべきテスト、出力レポートの形式など)を記述したJSON形式のファイルです。

GUI を通じてテストを保存すると、Xena2544 によって v2544 ファイルが自動的に生成されます。「テスト手順 – Xena2544 GUI の使用」のセクションでは、Xena2544 GUI を使用してテストを設定し、独自の v2544 ファイルを生成する方法について説明しています。なお、独自の .v2544 ファイルを使用する場合は、それに応じてxena.py を修正する必要がある点にご注意ください。

ステップ2:設定

テスターの設定ファイル(*.conf)は、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 GUI の使用

以下のセクションでは、Xena2544を使用してVSPerfテストを実行する手順を、設定例を交えて説明します。Teledyne LeCroy Xena RFC 2544スループットXena 設定する前に、テスト用の仮想スイッチがインストールされ、正しく設定されていることを確認してください。

手順 1:モジュールとポートを選択します。

DUTに接続されている2つのポートを選択してください。ここでポートを予約することもできますが、テスト開始時にアプリケーションが他のユーザーから選択したポートを解放し、自動的に予約することも可能です。図6は、テスト用に2つのポートが選択されている例を示しています。DUT(vSwitch)に接続する2つのポートが緑色で表示されていることを確認しておくことをお勧めします。そうでない場合は、接続の問題を確認する必要があります。

Xena2544
図6. テストモジュールカードとポートを選択します。

ステップ2:テストトポロジーとフレーム内容の定義

下の図7に示すように、ウィンドウの右側でいくつかのパネルを選択できます。「Test Configuration」パネルに移動してください。

[テスト構成] パネルには、テストの実行を制御するプロパティが含まれています。これらのプロパティは、以下のサブパネルに分かれています:

  • トポロジーとフレーム内容」パネルでは、テストトラフィックのトポロジーと方向、および生成されるテストフレームの内容を制御します。
  • テスト実行コントロール」パネルでは、テストの種類にかかわらず、テスト全体のプロパティを制御します。
  • テストの種類設定パネルでは、実行するテストを選択し、各テストのさまざまなプロパティを設定することができます。

トポロジーとフレーム内容」パネルを選択します。「全体的なテストトポロジー」セクションで、双方向のトラフィックフローテストを行う場合は、「トポロジー」をペア」に、「方向」を 「双方向」に設定します。双方向のフローのみをテストしても問題が検出されない場合があるため、一方向のトラフィックフローについてもテストを行う必要があります。また、パケットサイズはパフォーマンスに大きな影響を与えるため、トラフィックの方向に加え、異なるパケットサイズでもvSwitchをテストする必要があります。 vSwitchのパフォーマンスを小容量および大容量のパケットサイズで検証するため、フレームサイズを64バイトと1500バイトに設定します。Xena2544は、各パケットサイズごとに1回ずつ、計2回のテストを実行します。

図7. テストトポロジーとフレームの内容を定義する。

ステップ3:テスト実行の制御を定義する

テスト実行制御は、下図8に示す「Test Execution Control」パネルで設定できます。この例では、すべてのトライアルでMAC学習モードを有効にしたデフォルト設定を使用しています。ストリームベースのフロー作成では、1つの物理ポートから複数のストリームを生成できますが、修飾子ベースの場合は1つしか生成できません。ポート同期を有効にすると、ポートはvSwitchに対して同時にトラフィックを送信できます。そうでない場合、ポートはそれぞれ独自のペースで個別にトラフィックを送信します。

図8. テスト実行制御の定義

ステップ4:テストの種類を設定する

RFC 2544 テストスイートには、スループット、レイテンシおよびジッター、フレーム損失率、バック・トゥ・バックの 4 つのテストが含まれています。テストとして スループットテスト」 を選択してください。スループットテストは、DUT によって送信されたフレームが一切ドロップされない最大レートを測定するものです。ステップ 2 では、さまざまなフレームサイズを使用してこのテストを実行できます。

図9. テストタイプをスループットテストに設定する

ステップ 5: ポートグループとポートピアの割り当て

図10に示すように、「Selected Ports」パネルに移動します。最初のポートを「East」グループに、もう一方のポートを「West」グループに割り当てます。次に、各ポートにピアポートを割り当てます。下の図10に示す例では、ポート0は「West」グループに、そのピアであるポート1は「East」グループに属しています。その後、「Protocol Segment Profile」を選択します。この例では、Ethernetヘッダープロファイルが使用されています。

図10. ポートグループとポートピアの割り当て

ステップ 6: セグメントヘッダープロファイルの編集

図11に示すように、「Protocol Segment Profiles 」パネルに移動し、手順5で選択したプロトコルセグメントプロファイルを確認してください 。「User count」の表示から、そのプロファイルを使用しているポートが2つあることがわかります。また、セグメントヘッダープロファイルの編集や作成も可能です。

図11. セグメントヘッダープロファイルの編集/作成

ステップ7:マルチストリームの設定

図12に示すように、「Multi-Stream Configuration」パネルに移動します。「Multi-Stream」オプションを有効にします。ポートごとに32ストリームを作成します。例を図12に示します。32ストリームすべてが、同じ物理ポートから異なる送信元および宛先MACアドレスで生成され、もう一方のポートへ送信されます。その逆も同様です。トラフィックは双方向であるため、ストリームの総数は64となります。

図12. マルチストリームの設定

ステップ8:テストを実行し、レポートを作成する

設定を保存してください。Xena2544の設定ファイルの拡張子は「v2544」です。この設定ファイルは、テストを自動実行する場合に非常に重要となります。その方法については、次のセクションで説明します。

図13に示すように、Xena2544を選択して、PDF、XML、CSVといったさまざまな形式のレポートを生成することができます。テスト結果に対する後処理を自動化したい場合には、XMLまたはCSV形式を選択すると非常に便利です。

スタート」ボタンをクリックすると、テストが実行されます。前述の通り、ポートを予約していない場合、Xena2544がテスト用にポートを予約します。

図13. レポート形式の選択

Xena2544 コマンドの使用

Xena2544 GUI を使用してテストの設定や実行を行うほか、Teledyne LeCroy Xena 、あらかじめ設定されたテストを実行するための優れたコマンドラインインターフェースXena 。この機能を利用すれば、独自のスクリプトを用いてテストプロセスを自動化することができます。

手順 1: V2544 設定ファイルの場所を確認する

先ほど保存した v2544 ファイルを探してください。下の図 14 に示すように、「 Teledyne LeCroy Xena を参照」をクリックすると、そのファイルを見つけることができます。

この例のファイルパスは次のとおりです:

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

また、以下の各節では、これを指して言及される。

図14. v2544の設定ファイルを探す

ステップ 2: コマンドラインからテストを実行する

図15に示すように、コマンドディレクトリ C:\Program Files (x86)\Xena \L2-3\L23Tools に移動します。このディレクトリにある Xena2544.exe は、v2544 ファイルで設定されたテストを実行するために使用するコマンドです。図15に示すように、いくつかのオプションが利用可能です。

図15. Xena2544のコマンドディレクトリを確認する

図16に示すように、現在のディレクトリでコマンドを実行してテストを行ってください。

Xena2544.exe -c -e または

Xena2544.exe –config –execute

図16.Valkyrie2544 によるテストの実行

Teledyne LeCroy Xenaを使用した Red Hat による VSPerf の結果

OPNFVのメンバーの一社であるRed Hatは、Xena Teledyne LeCroy Xena を採用しています。以下は、PHY2PHY_TPUTのテストレポートです。VSPerfで使用される各種テストIDについて理解を深めるには、Teledyne LeCroy Xenaホワイトペーパー『Virtual Switch Performance Benchmarking』をご参照ください。

テストID: PHY2PHY_TPUT

————————–

テスト環境

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

以下は、テストが実施された環境です:

* OS: Red Hat 7.3 Maipo

* カーネルバージョン: 3.10.0-470.el7.x86_64

* NIC:

* Intel Corporation イーサネット 10G 2ポート X520 アダプタ (rev 01)

* Intel Corporation イーサネット 10G 2ポート X520 アダプタ (rev 01)

* マザーボード:Dell Inc. 0599V5 [2ソケット]

* CPU: Intel(R) Xeon(R) CPU E5-2637 v3 @ 3.50GHz

* CPUコア数:16

* メモリ:65759124 kB

* 仮想スイッチの設定:P2P

* vswitchperf: GITタグ: 07bab38905cf10cad6987bb9c5b302bbff2c6013

* トラフィックジェネレーター:Xena、バージョン: Xena2544 v2.43、GITタグ: なし

* vSwitch: OvsDpdkVhost、バージョン: なし、GITタグ: なし

* DPDK バージョン: 2.2.0、GIT タグ: なし

以下にテストの詳細を示します:

* テストID: phy2phy_tput

* 説明: LTD.Throughput.RFC2544.PacketLossRatio

* 展開:P2P

* トラフィック種別: rfc2544

* 双方向:True

パケットサイズに関するテスト結果:64

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

主な結果の詳細な概要を以下に示す。

収集された結果/指標

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

今回のテストで得られた測定結果は以下の通りです:

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

測定項目 結果

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

受信スループット(fps) 23115618.5733333

受信スループット(Mbps) 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

平均レイテンシ(ns) 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/秒 0.00

kB/s 0.00

kB・ccwr/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/秒 0.00

kB/s 0.00

kB・ccwr/s 0.00

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

パケットサイズに関するテスト結果:1500

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

主な結果の詳細な概要を以下に示す。

収集された結果/指標

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

今回のテストで得られた測定結果は以下の通りです:

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

測定項目 結果

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

受信スループット(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

平均レイテンシ(ns) 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/秒 0.00

kB/s 0.00

kB・ccwr/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/秒 0.00

kB/s 0.00

kB・ccwr/s 0.00

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

異常

~~~~~~~~~~

本試験の実施中に異常は検出されませんでした。

試験活動・イベント

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

pidstat はプロセスの統計情報を収集するために使用されます。そのため、%CPU や %USER などの値は、複数のコアにわたって合計されるため、100% を超える場合があります。pidstat の詳細については、http://linux.die.net/man/1/pidstat をご覧ください。

既知の問題:一部のレポートされたメトリクスに「unknown」という値が表示されることがあります。これらの値は、外部テスター(トラフィックジェネレータ)から取得された値ではないため、「unknown」とマークされています。これらはパケットサイズについて仮定を置いて誤って算出されたものであり、そのためvsperfでは非推奨となり、「unknown」とマークされています。次回のリリースで修正される予定です。

.. 正しい書式を維持するために、周囲に空白行が必要です。

 

 

 

Live Demoをお試しください

今すぐ「Xena 」Xena を実際に試してみることができるのをご存知ですか?必要なのはPC(Windows XP以上)だけです。まずは、https://xenanetworks.com/try-demo/にアクセスしてください

詳細については、当社のウェブサイトをご覧ください

このアプリケーションノートで取り上げている製品について詳しくは、当社のウェブサイトの以下のページをご覧ください:

価格情報

価格の詳細については、xenaまでお問い合わせくださいxena

ディスカバリーコールを予約する

Xena エキスパートと簡単な電話相談を予約し、Xena Test Platformがお客様のニーズに最適なソリューションかどうかをご確認ください:https://xenanetworks.com/discovery-call-booking/

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