すべてのプロダクト
Search
ドキュメントセンター

:Pktgen を使用した ECS インスタンスのネットワークパフォーマンステスト

最終更新日:Mar 01, 2026

このトピックでは、Pktgen を使用して Elastic Compute Service (ECS) インスタンスのネットワークパフォーマンスをテストする方法について説明します。

次の例では、Pktgen を使用してネットワークパフォーマンスをテストする方法を示します。

ステップ 1:環境の準備

送信者として 1 台、受信者として 1 台、合計 2 台のサーバーを準備します。各サーバーにセカンダリネットワークインターフェースカード (NIC) を追加します。一方の NIC を管理アクセスに、もう一方をテストに使用します。2 つのテスト用 NIC が通信できることを確認します。次に、ifconfig コマンドを実行し、両方のテスト用 NIC の IP アドレスと MAC アドレスを記録します。この情報は、送信者側でトラフィックを設定するために必要です。

ステップ 2:ソフトウェアのインストール

CentOS 6 はサポートが終了 (EOL) しました。Linux コミュニティのルールに従い、CentOS 6 のリポジトリアドレス http://mirror.centos.org/centos-6/ からすべてのコンテンツが削除されました。Alibaba Cloud でデフォルトの CentOS 6 リポジトリを引き続き使用すると、エラーが報告されます。CentOS 6 の特定のインストールパッケージを使用するには、CentOS 6 のリポジトリアドレスを変更する必要があります。詳細については、「CentOS 6 のリポジトリアドレスを変更する方法」をご参照ください。

送信側と受信側の両方のインスタンスで、次の操作を実行します。

  1. Linux ECS インスタンスにログインします。詳細については、「Workbench を使用した Linux インスタンスへの接続」をご参照ください。

  2. 次のコマンドを実行して、pktgen ディレクトリを作成します。

    cd /root/
    mkdir pktgen
  3. 次のコマンドを実行して、pktgen ディレクトリに移動します。

    cd pktgen
  4. 次のコマンドを実行して、Pktgen、Lua、および DPDK のインストールパッケージをダウンロードします。

    wget https://git.dpdk.org/apps/pktgen-dpdk/snapshot/pktgen-dpdk-pktgen-3.6.5.zip https://www.lua.org/ftp/lua-5.4.3.tar.gz https://fast.dpdk.org/rel/dpdk-18.11.11.tar.xz
    説明

    注:コンパイルの問題を防ぐため、Pktgen、Lua、および DPDK のバージョンには互換性が必要です。この記事ではコマンド例のバージョンを使用していますが、他の互換性のあるバージョンも使用できます。

  5. 次のコマンドを順に実行して、インストールパッケージを解凍します。

    tar -Jxvf dpdk-18.11.11.tar.xz
    
    tar -zxvf lua-5.4.3.tar.gz
    
    unzip pktgen-dpdk-pktgen-3.6.5.zip
  6. コンパイル中に依存関係が不足している場合は、次のコマンドを実行して必要なパッケージをインストールします。

    • CentOS 7

      yum -y install kernel-devel.x86_64
       yum -y install numactl-devel.x86_64
       yum -y install elfutils-libelf-devel
       yum -y install libpcap-devel
    • CentOS 8

      説明

      libpcap-devel パッケージは CentOS 8 にはデフォルトでインストールされていないため、手動でインストールする必要があります。

      次のコマンドを実行する前に、「CentOS オペレーティングシステム」の手順に従ってミラーリポジトリを変更してください。次に、Centos-vault-8.5.2111.repo ファイルから [PowerTools] ブロックをコピーし、CentOS-PowerTools.repo という名前の新しいファイルに貼り付けます。image

      dnf config-manager --add-repo /etc/yum.repos.d/CentOS-PowerTools.repo 
      dnf config-manager --set-enabled PowerTools
      dnf -y upgrade libmodulemd
      dnf -y install kernel-devel.x86_64
      dnf -y install elfutils-libelf-devel
      dnf -y install numactl-devel.x86_64
      dnf -y install libpcap-devel
  7. 次のコマンドを順に実行して、DPDK をコンパイルおよびインストールします。

    cd dpdk-stable-18.11.11
    make config T=x86_64-native-linuxapp-gcc 
    make all -j32
    cd ..
  8. 次のコマンドを順に実行して、Lua をコンパイルおよびインストールします。

    cd lua-5.4.3
    make
    make install
    cd ..
  9. 次のコマンドを順に実行して、Pktgen をコンパイルおよびインストールします。

    cd pktgen-dpdk-pktgen-3.6.5/
     export RTE_SDK=/root/pktgen/dpdk-stable-18.11.11/
     export RTE_TARGET=build 
    make -j32

ステップ 3:ドライバーの vfio へのバインド

送信側と受信側の両方のインスタンスで、次の操作を実行します。

  1. 次のコマンドを実行して /proc/cmdline ファイルを確認し、オペレーティングシステムの GRUB 設定に intel_iommu=on が含まれていることを確認します。

    cat /proc/cmdline

    出力は次のようになります。パラメーターがない場合は、次の手順で追加します。

    BOOT_IMAGE=/boot/vmlinuz-3.10.0-XXXX.19.1.el7.x86_64 root=UUID=9f2d3e15-XXXX-XXXX-8385-0165b4b67864 ro crashkernel=auto spectre_v2=retpoline rhgb quiet net.ifnames=0 console=tty0 console=ttyS0,115200n8 noibrs intel_iommu=on
    1. 次のコマンドを実行して、/etc/default/grub ファイルを編集します。

      vim /etc/default/grub
    2. i キーを押して編集モードに入り、GRUB_CMDLINE_LINUX の行に intel_iommu=on を追加します。変更後の内容は次の図のようになります。Dingtalk_20210623145711.jpg

    3. ファイルを保存して閉じるには、Esc キーを押し、:wq と入力して Enter キーを押します。

    4. 次のコマンドを実行して、設定を更新します。

      grub2-mkconfig -o /boot/grub2/grub.cfg
    5. 次のコマンドを実行して、サーバーを再起動します。

      reboot
  2. 次のコマンドを順に実行して、vfio および vfio-pci ドライバーをロードします。

    modprobe vfio
    
    modprobe vfio-pci
  3. 次のコマンドを実行して、noniommu_mode を設定します。

    echo 1 > /sys/module/vfio/parameters/enable_unsafe_noiommu_mode
  4. 次のコマンドを実行して、NIC の bus-info 値を表示し、記録します。

    ethtool -i eth1
    説明

    注:この例では eth1 NIC を使用しています。ご利用の環境に合わせて実際の NIC 名を使用してください。

    システムは次のような出力を表示します。

    driver: virtio_net
    
    version: 1.0.0
    
    firmware-version:
    
    expansion-rom-version:
    
    bus-info: 0000:00:08.0
    
    supports-statistics: no
    
    supports-test: no
    
    supports-eeprom-access: no
    
    supports-register-dump: no
    
    supports-priv-flags: no
  5. 次のコマンドを実行して、eth1 NIC から virtio ドライバーをアンバインドします。

    重要

    この例では、eth1 NIC から virtio ドライバーをアンバインドします。この操作により、NIC のネットワーク接続が中断されます。この操作はオフピーク時間に実行することを推奨します。

    echo "[$Bus-info]" > /sys/bus/pci/drivers/virtio-pci/unbind
    説明

    注:[$Bus-info] をステップ 4 で記録した bus-info の値に置き換えてください。

  6. 次のコマンドを実行して、bus-infovfio-pci ドライバーにバインドします。

    /root/pktgen/dpdk-stable-18.11.11/usertools/dpdk-devbind.py -b vfio-pci [$Bus-info]
    説明

    [$Bus-info] をステップ 4 で記録した bus-info の値に置き換えてください。CentOS 8.3 (Python 3.6.8) 環境では、python3 インタープリターを使用してスクリプトを実行する必要があります。コマンドを次のように変更します:python3 /root/pktgen/dpdk-stable-18.11.11/usertools/dpdk-devbind.py -b vfio-pci [$Bus-info]

ステップ 4:ヒュージページの設定

送信側と受信側の両方のインスタンスで次の操作を実行します。ご利用のシステムの NUMA ノード数を確認し、対応するコマンドを実行してください。

  • デュアルノードシステムの場合

    echo 8000 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
    echo 8000 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
  • シングルノードシステムの場合

    echo 8000 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

ステップ 5:Pktgen の起動

送信側と受信側の両方のインスタンスで、次の操作を実行します。

  1. pktgen-dpdk-pktgen-3.6.5 ディレクトリで、次のコマンドを実行して Pktgen を起動し、Pktgen ターミナルを立ち上げます。

    ./app/build/pktgen -c 0x1ffff -n 4 --socket-mem 16000 -w [$Bus-info] -- -P -m "[1-16:1-16].0"
    説明

    • 0x1ffff:プロセスの CPU コアマスクを指定します。最下位ビットのコアはシェルコントロール用に予約され、他のコアはポートでのパケットの送受信に使用されます。

    • "[1-16:1-16].0":パケット処理用の CPU コアを指定します。この範囲は、CPU コアマスクで定義されたコアのサブセットである必要があります。

      • 1-16 (コロンの前) はパケット受信用です。

      • 1-16 (コロンの後) はパケット送信用です。

      • .0 はポート 0 を指定します。

    • 送信パフォーマンスが不十分な場合は、CPU コアの範囲を調整できます。パケット送信により多くのコアを使用すると、より多くのヒュージページが必要になることに注意してください。ヒュージページが不足していると、Pktgen の起動に失敗します。

    システムは次のような出力を表示します。

    Copyright (c) <2010-2019>, Intel Corporation. All rights reserved. Powered by DPDK
    EAL: Detected 64 lcore(s)
    EAL: Detected 1 NUMA nodes
    EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
    EAL: No free hugepages reported in hugepages-1048576kB
    EAL: Probing VFIO support...
    EAL: VFIO support initialized
    EAL: PCI device 0000:00:08.0 on NUMA socket -1
    EAL:   Invalid NUMA socket, default to 0
    EAL:   probe driver: 1af4:1000 net_virtio
    EAL:   using IOMMU type 8 (No-IOMMU)
    Lua 5.4.3  Copyright (C) 1994-2021 Lua.org, PUC-Rio
    
    *** Copyright (c) <2010-2019>, Intel Corporation. All rights reserved.
    *** Pktgen created by: Keith Wiles -- >>> Powered by DPDK <<<
    
    Initialize Port 0 -- TxQ 16, RxQ 16,  Src MAC 00:16:3e:24:9b:a4
    
    Port  0: Link Up - speed 10000 Mbps - full-duplex <Enable promiscuous mode>
    
      RX/TX processing lcore:   1 rx:  1 tx:  1
      RX/TX processing lcore:   2 rx:  1 tx:  1
      RX/TX processing lcore:   3 rx:  1 tx:  1
      RX/TX processing lcore:   4 rx:  1 tx:  1
    - Ports 0-0 of 1   <Main Page>  Copyright (c) <2010-2019>, Intel Corporation
      Flags:Port        :   P-----R--------:0
    Link State          :       <UP-10000-FD>     ----TotalRate----
    Pkts/s Max/Rx       :                 1/0                   1/0
           Max/Tx       :                 0/0                   0/0
    MBits/s Rx/Tx       :                 0/0                   0/0
    Broadcast           :                   0
    Multicast           :                   0
    Sizes 64            :                   0
          65-127        :                   0
          128-255       :                   0
          256-511       :                   0
          512-1023      :                   0
          1024-1518     :                   0
    Runts/Jumbos        :                 2/0
    ARP/ICMP Pkts       :                 2/0
    Errors Rx/Tx        :                 0/0
    Total Rx Pkts       :                   2
          Tx Pkts       :                   0
          Rx MBs        :                   0
          Tx MBs        :                   0
                        :
    Pattern Type        :             abcd...
    Tx Count/% Rate     :       Forever /100%
    Pkt Size/Tx Burst   :           64 /   64
    Port Src/Dest       :         1234 / 5678
    Pkt Type:VLAN ID    :     IPv4 / UDP:0001
    802.1p CoS/DSCP/IPP :           0/  0/  0
    VxLAN Flg/Grp/vid   :    0000/    0/    0
    IP  Destination     :         192.168.X.X
        Source          :      192.168.X.X/24
    MAC Destination     :   00:00:00:00:00:00
        Source          :   00:XX:XX:24:9b:a4
    PCI Vendor/Addr     :   1af4:1000/00:08.0
    
    -- Pktgen Ver: 3.6.5 (DPDK 18.11.11)  Powered by DPDK  (pid:4873) -------------
    Pktgen:/>
  2. Pktgen ターミナルで、送信側で次のコマンドを順に実行して、トラフィックストリームを設定します。

    set 0 proto udp
    range 0 src mac start [$MAC]
    range 0 src mac min [$MAC]
    range 0 src mac inc 00:00:00:00:00:00
    range 0 dst mac start ee:ff:ff:ff:ff:ff
    range 0 dst mac min ee:ff:ff:ff:ff:ff
    range 0 dst mac inc 00:00:00:00:00:00
    range 0 src port start 10000
    range 0 src port min 10000
    range 0 src port max 10000
    range 0 src port inc 0
    range 0 dst port start 2000
    range 0 dst port min 2000
    range 0 dst port max 2255
    range 0 dst port inc 1
    range 0 proto udp
    range 0 src ip start [$Local_IP]
    range 0 src ip min [$Local_IP]
    range 0 src ip inc 0.0.0.0
    range 0 size start 64
    range 0 size min 64
    range 0 size max 64
    range 0 size inc 0
    range 0 dst ip start [$Receive_IP]
    range 0 dst ip min [$Receive_IP]
    range 0 dst ip inc 0.0.0.0
    enable all range
    説明

    • [$MAC] を送信者の MAC アドレスに置き換えます。

    • [$Local_IP] を送信者の IP アドレスに置き換えます。

    • [$Receive_IP] を受信者の IP アドレスに置き換えます。

  3. Pktgen ターミナルで、送信側で次のコマンドを実行してトラフィックの送信を開始します。

    start 0

    トラフィックデータを確認します。

    • 送信者

      -iPorts 0-0 of 1   <Main Page>  Copyright (c) <2010-2019>, Intel Corporation
        Flags:Port        :   P-----R--------:0                   1/0
      Link State          :       <UP-10000-FD>     ----TotalRate----
      Pkts/s Max/Rx       :                 1/0                   1/0
             Max/Tx       :   14906304/14904704     14906304/14904704
      MBits/s Rx/Tx       :             0/10015               0/10015
      Broadcast           :                   0
      Multicast           :                   0
      Sizes 64            :                   0
            65-127        :                   0
            128-255       :                   0
            256-511       :                   0
            512-1023      :                   0
            1024-1518     :                   0
      Runts/Jumbos        :                16/0
      ARP/ICMP Pkts       :                16/0
      Errors Rx/Tx        :                 0/0
      Total Rx Pkts       :                  16
            Tx Pkts       :          1655962864
    • 受信者

      - Ports 0-0 of 1   <Main Page>  Copyright (c) <2010-2019>, Intel Corporation
        Flags:Port        :   P--------------:0
      Link State          :       <UP-10000-FD>     ----TotalRate----
      Pkts/s Max/Rx       :   14911585/14910795     14911585/14910795
             Max/Tx       :                 0/0                   0/0
      MBits/s Rx/Tx       :             10020/0               10020/0
      Broadcast           :                   0
      Multicast           :                   0
      Sizes 64            :          1862740038
            65-127        :                   0
            128-255       :                   0
            256-511       :                   0
            512-1023      :                   0
            1024-1518     :                   0
      Runts/Jumbos        :                 6/0
      ARP/ICMP Pkts       :                 6/0
      Errors Rx/Tx        :                 0/0
      Total Rx Pkts       :          2298743466
            Tx Pkts       :                   0
            Rx MBs        :             1544755
            Tx MBs        :                   0
                          :
      Pattern Type        :             abcd...
      Tx Count/% Rate     :       Forever /100%
      Pkt Size/Tx Burst   :           64 /   64
      Port Src/Dest       :         1234 / 5678
      Pkt Type:VLAN ID    :     IPv4 / TCP:0001
      802.1p CoS/DSCP/IPP :           0/  0/  0
      VxLAN Flg/Grp/vid   :    0000/    0/    0
      IP  Destination     :         192.168.X.1
          Source          :      192.168.X.X/24
      MAC Destination     :   00:00:00:00:00:00
          Source          :   00:XX:XX:24:2d:55
      PCI Vendor/Addr     :   1af4:1000/00:08.0
      
      -- Pktgen Ver: 3.6.5 (DPDK 18.11.11)  Powered by DPDK  (pid:4072) -------------
  4. 送信側で次のコマンドを実行して、トラフィックを停止します。

    stop 0