263. Benchmark the performance of single core forwarding with FVL25G/NNT10G

263.1. Prerequisites

  1. Hardware:

    1.1) nic_single_core_perf test for FVL25G: two dual port FVL25G nics,

    all installed on the same socket, pick one port per nic

    1.2) nic_single_core_perf test for NNT10G: four 82599 nics,

    all installed on the same socket, pick one port per nic

  2. Software:

    dpdk: git clone http://dpdk.org/git/dpdk
    scapy: http://www.secdev.org/projects/scapy/
    dts (next branch): git clone http://dpdk.org/git/tools/dts,
                       then "git checkout next"
    Trex code: http://trex-tgn.cisco.com/trex/release/v2.26.tar.gz
               (to be run in stateless Layer 2 mode, see section in
                Getting Started Guide for more details)
    python-prettytable:
        apt install python-prettytable (for ubuntu os)
        or dnf install python-prettytable (for fedora os).
    
  3. Connect all the selected nic ports to traffic generator(IXIA,TREX, PKTGEN) ports(TG ports):

    2 TG 25g ports for FVL25G ports
    4 TG 10g ports for 4 NNT10G ports
    
  4. Case config::

    For FVL40g, if test 16 Byte Descriptor, need to set the “CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=y” in ./config/common_base and re-build DPDK.

    For CVL25G, if test 16 Byte Descriptor, need to set the “CONFIG_RTE_LIBRTE_ICE_16BYTE_RX_DESC=y” in ./config/common_base and re-build DPDK.

263.2. Test Case : Single Core Performance Measurement

  1. Bind tested ports to igb_uio

  2. Start testpmd:

    ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x6 -n 4 -- -i \
        --portmask=0xf  --txd=128 --rxd=128
       testpmd> start
    
  3. Configure traffic generator to send traffic
    configure one below stream for each TG port

    dst mac: peer nic port mac src ip : random dst ip : random packet length : 64 byte

  4. check throughput and compare it with the expected value.

  5. for NNT10G, repeat above step 1-4 for txd=rxd=512,2048 separately. for FVL25G nic, just test txd=rxd=512,2048 following above steps 1-4.

  6. Result tables for different NICs:

    FVL25G:

    Frame Size TXD/RXD Throughput Rate Expected Throughput
    64 512 xxxxxx Mpps xxx % xxx Mpps
    64 2048 xxxxxx Mpps xxx % xxx Mpps

    NNT10G:

    Frame Size TXD/RXD Throughput Rate Expected Throughput
    64 128 xxxxxx Mpps xxx % xxx Mpps
    64 512 xxxxxx Mpps xxx % xxx Mpps
    64 2048 xxxxxx Mpps xxx % xxx Mpps
Note
: The values for the expected throughput may vary due to different
platform and OS, and traffic generator, please correct threshold values accordingly. (the above expected values for FVL 25G and NNT10G were got from the combination of Purly,Ubuntu 16.04, and traffic generator IXIA)

Case will raise failure if actual throughputs have more than 1Mpps gap from expected ones.