NTTTCP を使用して VM ネットワーク スループットをテストする

注意

この記事では、間もなくサポート終了 (EOL) 状態になる Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。

この記事では、Microsoft が提供する無料の NTTTCP ツールを使用して、Azure Windows または Linux 仮想マシン (VM) のネットワーク帯域幅とスループット パフォーマンスをテストする方法について説明します。 NTTTCP のようなツールは、ネットワークをテストの対象にしており、パフォーマンスに影響を与える可能性のある他のリソースの使用を最小限に抑えます。

前提条件

  • アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます
  • Azure 内の 2 つの Windows または Linux 仮想マシン。 Windows VM を作成するか Linux VM を作成します。
    • スループットをテストするには、"送信側" と "受信側" として機能する、同じサイズの 2 つの VM が必要です。 2 つの VM は、同じ近接配置グループまたは可用性セットに属している必要があります。これにより、それらの内部 IP アドレスを使用して、ロード バランサーをテストから除外できます。
    • コマンドで使用する VM コアの数と受信側 VM の IP アドレスに注意してください。 送信側と受信側の両方のコマンドで、受信側の IP アドレスが使用されます。

注意

仮想 IP (VIP) を使用したテストは可能ですが、この記事では扱いません。

この記事で使用されている例

設定
受信側 VM の IP アドレス 10.0.0.5
VM コアの数 2

Windows VM または Linux VM でスループットをテストする

Windows VM から NTTTCP を使用して、または Linux VM から NTTTCP-for-Linux を使用してスループットをテストできます。

VM を準備して NTTTCP-for-Windows をインストールする

  1. 送信側と受信側の両方の VM で、最新バージョンの NTTTCPc:\tools などの別フォルダーにダウンロードします。

  2. Windows コマンド ラインを開き、ntttcp.exe をダウンロードしたフォルダーに移動します。

  3. 受信側 VM で、NTTTCP トラフィックの到着を許可する Windows ファイアウォール allow 規則を作成します。 特定の受信 TCP ポートを許可するよりも、名前で ntttcp.exe を許可する方が簡単です。 次のコマンドを実行します。その際、c:\tools は実際の ntttcp.exe のダウンロード パスに置き換えてください (異なる場合)。

    netsh advfirewall firewall add rule program=c:\tools\ntttcp.exe name="ntttcp" protocol=any dir=in action=allow enable=yes profile=ANY
    
  4. 構成を確認するには、次のコマンドを使用して、受信側と送信側の仮想マシンで 1 つの転送制御プロトコル (TCP) ストリームを 10 秒間テストします。

    受信側 VM

    ntttcp -r -m [<number of VM cores> x 2],*,<receiver IP address> -t 10 -P 1

    ntttcp -r -m 4,*,10.0.0.5 -t 10 -P 1
    

    送信側 VM

    ntttcp -s -m [<number of VM cores> x 2],*,<receiver IP address> -t 10 -P 1

    ntttcp -s -m 4,*,10.0.0.5 -t 10 -P 1
    

    Note

    上記のコマンドは、構成をテストする場合にのみ使用します。

    ヒント

    初めてテストを実行して設定を確認する場合は、すぐにフィードバックを得られるように短いテスト時間を使用してください。 ツールが正常に動作していることを確認したら、最大限正確な結果を得るために、テスト時間を 300 秒に延長します。

スループット テストを実行する

送信側と受信側の両方の VM で、300 秒間 (5 分間) テストを実行します。 送信側と受信側で、-t パラメーターに同じテスト時間を指定する必要があります。

  1. 受信側 VM で次のコマンドを実行します。その際、<number of VM cores> および <receiver IP address> プレースホルダーは実際の値に置き換えてください。

    ntttcp -r -m [<number of VM cores> x 2],*,<receiver IP address> -t 300

    ntttcp -r -m 4,*,10.0.0.5 -t 300
    
  2. 送信側 VM で次のコマンドを実行します。 送信側と受信側のコマンドの違いは、送信側または受信側の VM を指定する -s または -r パラメーターのみです。

    ntttcp -s -m [<number of VM cores> x 2],*,<receiver IP address> -t 300

    ntttcp -s -m 4,*,10.0.0.5 -t 300
    
  3. 結果を待ちます。

テストが完了すると、出力は次の例のようになります。

C:\tools>ntttcp -s -m 4,*,10.0.0.5 -t 300
Copyright Version 5.39
Network activity progressing...


Thread  Time(s) Throughput(KB/s) Avg B / Compl
======  ======= ================ =============
     0  300.006        29617.328     65536.000
     1  300.006        29267.468     65536.000
     2  300.006        28978.834     65536.000
     3  300.006        29016.806     65536.000


#####  Totals:  #####


   Bytes(MEG)    realtime(s) Avg Frame Size Throughput(MB/s)
================ =========== ============== ================
    34243.000000     300.005       1417.829          114.141


Throughput(Buffers/s) Cycles/Byte       Buffers
===================== =========== =============
             1826.262       7.036    547888.000


DPCs(count/s) Pkts(num/DPC)   Intr(count/s) Pkts(num/intr)
============= ============= =============== ==============
     4218.744         1.708        6055.769          1.190


Packets Sent Packets Received Retransmits Errors Avg. CPU %
============ ================ =========== ====== ==========
    25324915          2161992       60412      0     15.075

Windows VM と Linux VM の間のスループットをテストする

Windows VM と Linux VM の間で NTTTCP スループット テストを実行するには、Windows の -ns フラグまたは Linux の -N フラグを使用して同期なしモードを有効にします。

受信側として Windows VM でテストするには、次のコマンドを実行します。

ntttcp -r -m [<number of VM cores> x 2],*,<Linux VM IP address> -t 300

送信側として Windows VM でテストするには、次のコマンドを実行します。

ntttcp -s -m [<number of VM cores> x 2],*,<Linux VM IP address> -ns -t 300

次のステップ