87. vhost/virtio loopback with multi-paths and port restart test plan

This test plan includes split virtqueue mergeable, non-mergeable, vectorized_rx, inorder mergeable, inorder non-mergeable path, and packed virtqueue mergeable, non-mergeable,inorder mergeable, inorder non-mergeable, vectorized path test. Also test port restart and only send one packet each time using testpmd.

87.1. Test Case 1: loopback test with packed ring mergeable path

  1. Launch vhost by below command:

    rm -rf vhost-net*
    ./testpmd -n 4 -l 2-4  --no-pci \
    --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1,client=0' -- -i --nb-cores=1 --txd=1024 --rxd=1024
    testpmd>set fwd mac
    
  2. Launch virtio-user by below command:

    ./testpmd -n 4 -l 5-6 \
    --no-pci --file-prefix=virtio \
    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,packed_vq=1,mrg_rxbuf=1,in_order=0 \
    -- -i --tx-offloads=0x0 --enable-hw-vlan-strip --rss-ip --nb-cores=1 --txd=1024 --rxd=1024
    >set fwd mac
    >start
    
  3. Send packets with vhost-testpmd,[frame_size] is the parameter changs in [64, 128, 256, 512, 1024, 1518]:

    testpmd>set txpkts [frame_size]
    testpmd>start tx_first 32
    
  4. Repeat below command to get throughput 10 times,then calculate the average throughput:

    testpmd>show port stats all
    
  5. Stop port at vhost side and re-calculate the average throughput, verify the throughput is zero after port stop:

    testpmd>stop
    testpmd>port stop 0
    testpmd>show port stats all
    
  6. Restart port at vhost side and re-calculate the average throughput, verify the throughput is not zero after port restart:

    testpmd>port start 0
    testpmd>set burst 1
    testpmd>start tx_first 1
    testpmd>show port stats all
    

87.2. Test Case 2: loopback test with packed ring non-mergeable path

  1. Launch vhost by below command:

    rm -rf vhost-net*
    ./testpmd -n 4 -l 2-4  --no-pci \
    --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1,client=0' -- -i --nb-cores=1 --txd=1024 --rxd=1024
    testpmd>set fwd mac
    
  2. Launch virtio-user by below command:

    ./testpmd -n 4 -l 5-6 \
    --no-pci --file-prefix=virtio \
    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,packed_vq=1,mrg_rxbuf=0,in_order=0 \
    -- -i --tx-offloads=0x0 --enable-hw-vlan-strip --rss-ip --nb-cores=1 --txd=1024 --rxd=1024
    >set fwd mac
    >start
    
  3. Send packets with vhost-testpmd, [frame_size] is the parameter changs in [64, 128, 256, 512, 1024, 1518]:

    testpmd>set txpkts [frame_size]
    testpmd>start tx_first 32
    
  4. Get throughput 10 times and calculate the average throughput:

    testpmd>show port stats all
    
  5. Stop port at vhost side and re-calculate the average throughput, verify the throughput is zero after port stop:

    testpmd>stop
    testpmd>port stop 0
    testpmd>show port stats all
    
  6. Restart port at vhost side and re-calculate the average throughput, verify the throughput is not zero after port restart:

    testpmd>port start 0
    testpmd>set burst 1
    testpmd>start tx_first 1
    testpmd>show port stats all
    

87.3. Test Case 3: loopback test with packed ring inorder mergeable path

  1. Launch vhost by below command:

    rm -rf vhost-net*
    ./testpmd -n 4 -l 2-4  --no-pci \
    --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1,client=0' -- -i --nb-cores=1 --txd=1024 --rxd=1024
    testpmd>set fwd mac
    
  2. Launch virtio-user by below command:

    ./testpmd -n 4 -l 5-6 \
    --no-pci --file-prefix=virtio \
    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,packed_vq=1,mrg_rxbuf=1,in_order=1 \
    -- -i --tx-offloads=0x0 --enable-hw-vlan-strip --rss-ip --nb-cores=1 --txd=1024 --rxd=1024
    >set fwd mac
    >start
    
  3. Send packets with vhost-testpmd,[frame_size] is the parameter changs in [64, 128, 256, 512, 1024, 1518]:

    testpmd>set txpkts [frame_size]
    testpmd>start tx_first 32
    
  4. Repeat below command to get throughput 10 times,then calculate the average throughput:

    testpmd>show port stats all
    
  5. Stop port at vhost side and re-calculate the average throughput, verify the throughput is zero after port stop:

    testpmd>stop
    testpmd>port stop 0
    testpmd>show port stats all
    
  6. Restart port at vhost side and re-calculate the average throughput, verify the throughput is not zero after port restart:

    testpmd>port start 0
    testpmd>set burst 1
    testpmd>start tx_first 1
    testpmd>show port stats all
    

87.4. Test Case 4: loopback test with packed ring inorder non-mergeable path

  1. Launch vhost by below command:

    rm -rf vhost-net*
    ./testpmd -n 4 -l 2-4  --no-pci \
    --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1,client=0' -- -i --nb-cores=1 --txd=1024 --rxd=1024
    testpmd>set fwd mac
    
  2. Launch virtio-user by below command:

    ./testpmd -n 4 -l 5-6 \
    --no-pci --file-prefix=virtio \
    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,packed_vq=1,mrg_rxbuf=0,in_order=1,vectorized=1 \
    -- -i --rx-offloads=0x10 --enable-hw-vlan-strip --rss-ip --nb-cores=1 --txd=1024 --rxd=1024
    >set fwd mac
    >start
    
  3. Send packets with vhost-testpmd, [frame_size] is the parameter changs in [64, 128, 256, 512, 1024, 1518]:

    testpmd>set txpkts [frame_size]
    testpmd>start tx_first 32
    
  4. Get throughput 10 times and calculate the average throughput:

    testpmd>show port stats all
    
  5. Stop port at vhost side and re-calculate the average throughput, verify the throughput is zero after port stop:

    testpmd>stop
    testpmd>port stop 0
    testpmd>show port stats all
    
  6. Restart port at vhost side and re-calculate the average throughput, verify the throughput is not zero after port restart:

    testpmd>port start 0
    testpmd>set burst 1
    testpmd>start tx_first 1
    testpmd>show port stats all
    

87.5. Test Case 5: loopback test with split ring inorder mergeable path

  1. Launch vhost by below command:

    rm -rf vhost-net*
    ./testpmd -n 4 -l 2-4  --no-pci \
    --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1,client=0' -- -i --nb-cores=1 --txd=1024 --rxd=1024
    testpmd>set fwd mac
    
  2. Launch virtio-user by below command:

    ./testpmd -n 4 -l 5-6 \
    --no-pci --file-prefix=virtio \
    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,in_order=1,mrg_rxbuf=1 \
    -- -i --tx-offloads=0x0 --enable-hw-vlan-strip --rss-ip --nb-cores=1 --txd=1024 --rxd=1024
    >set fwd mac
    >start
    
  3. Send packets with vhost-testpmd,[frame_size] is the parameter changs in [64, 128, 256, 512, 1024, 1518]:

    testpmd>set txpkts [frame_size]
    testpmd>start tx_first 32
    
  4. Get throughput 10 times and calculate the average throughput:

    testpmd>show port stats all
    
  5. Stop port at vhost side and re-calculate the average throughput, verify the throughput is zero after port stop:

    testpmd>stop
    testpmd>port stop 0
    testpmd>show port stats all
    
  6. Restart port at vhost side and re-calculate the average throughput, verify the throughput is not zero after port restart:

    testpmd>port start 0
    testpmd>set burst 1
    testpmd>start tx_first 1
    testpmd>show port stats all
    

87.6. Test Case 6: loopback test with split ring inorder non-mergeable path

  1. Launch vhost by below command:

    rm -rf vhost-net*
    ./testpmd -n 4 -l 2-4  --no-pci \
    --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1,client=0' -- -i --nb-cores=1 --txd=1024 --rxd=1024
    testpmd>set fwd mac
    
  2. Launch virtio-user by below command:

    ./testpmd -n 4 -l 5-6 \
    --no-pci --file-prefix=virtio \
    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,in_order=1,mrg_rxbuf=0 \
    -- -i --tx-offloads=0x0 --enable-hw-vlan-strip --rss-ip --nb-cores=1 --txd=1024 --rxd=1024
    >set fwd mac
    >start
    
  3. Send packets with vhost-testpmd, [frame_size] is the parameter changs in [64, 128, 256, 512, 1024, 1518]:

    testpmd>set txpkts [frame_size]
    testpmd>start tx_first 32
    
  4. Get throughput 10 times and calculate the average throughput:

    testpmd>show port stats all
    
  5. Stop port at vhost side and re-calculate the average throughput, verify the throughput is zero after port stop:

    testpmd>stop
    testpmd>port stop 0
    testpmd>show port stats all
    
  6. Restart port at vhost side and re-calculate the average throughput, verify the throughput is not zero after port restart:

    testpmd>port start 0
    testpmd>set burst 1
    testpmd>start tx_first 1
    testpmd>show port stats all
    

87.7. Test Case 7: loopback test with split ring mergeable path

  1. Launch vhost by below command:

    rm -rf vhost-net*
    ./testpmd -n 4 -l 2-4  --no-pci \
    --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1,client=0' -- -i --nb-cores=1 --txd=1024 --rxd=1024
    testpmd>set fwd mac
    
  2. Launch virtio-user by below command:

    ./testpmd -n 4 -l 5-6 \
    --no-pci --file-prefix=virtio \
    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,in_order=0,mrg_rxbuf=1 \
    -- -i --tx-offloads=0x0 --enable-hw-vlan-strip --rss-ip --nb-cores=1 --txd=1024 --rxd=1024
    >set fwd mac
    >start
    
  3. Send packets with vhost-testpmd, [frame_size] is the parameter changs in [64, 128, 256, 512, 1024, 1518]:

    testpmd>set txpkts [frame_size]
    testpmd>start tx_first 32
    
  4. Get throughput 10 times and calculate the average throughput:

    testpmd>show port stats all
    
  5. Port restart at vhost side 100 times and re-calculate the average throughput, verify the throughput is not zero after port restart:

    testpmd>stop
    testpmd>port stop 0
    testpmd>port start 0
    ...
    testpmd>stop
    testpmd>port stop 0
    testpmd>port start 0
    testpmd>set burst 1
    testpmd>start tx_first 1
    testpmd>show port stats all
    

87.8. Test Case 8: loopback test with split ring non-mergeable path

  1. Launch vhost by below command:

    rm -rf vhost-net*
    ./testpmd -n 4 -l 2-4  --no-pci \
    --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1,client=0' -- -i --nb-cores=1 --txd=1024 --rxd=1024
    testpmd>set fwd mac
    
  2. Launch virtio-user by below command:

    ./testpmd -n 4 -l 5-6 \
    --no-pci --file-prefix=virtio \
    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,in_order=0,mrg_rxbuf=0,vectorized=1 \
    -- -i --rx-offloads=0x10 --enable-hw-vlan-strip --rss-ip --nb-cores=1 --txd=1024 --rxd=1024
    >set fwd mac
    >start
    
  3. Send packets with vhost-testpmd,[frame_size] is the parameter changs in [64, 128, 256, 512, 1024, 1518]:

    testpmd>set txpkts [frame_size]
    testpmd>start tx_first 32
    
  4. Get throughput 10 times and calculate the average throughput:

    testpmd>show port stats all
    
  5. Stop port at vhost side and re-calculate the average throughput, verify the throughput is zero after port stop:

    testpmd>stop
    testpmd>port stop 0
    testpmd>show port stats all
    
  6. Restart port at vhost side and re-calculate the average throughput, verify the throughput is not zero after port restart:

    testpmd>port start 0
    testpmd>set burst 1
    testpmd>start tx_first 1
    testpmd>show port stats all
    

87.9. Test Case 9: loopback test with split ring vector_rx path

  1. Launch vhost by below command:

    rm -rf vhost-net*
    ./testpmd -n 4 -l 2-4  --no-pci \
    --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1,client=0' -- -i --nb-cores=1 --txd=1024 --rxd=1024
    testpmd>set fwd mac
    
  2. Launch virtio-user by below command:

    ./testpmd -n 4 -l 5-6 \
    --no-pci --file-prefix=virtio \
    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,in_order=0,mrg_rxbuf=0,vectorized=1 \
    -- -i --nb-cores=1 --txd=1024 --rxd=1024
    >set fwd mac
    >start
    
  3. Send packets with vhost-testpmd, [frame_size] is the parameter changs in [64, 128, 256, 512, 1024, 1518]:

    testpmd>set txpkts [frame_size]
    testpmd>start tx_first 32
    
  4. Get throughput 10 times and calculate the average throughput:

    testpmd>show port stats all
    
  5. Stop port at vhost side and re-calculate the average throughput, verify the throughput is zero after port stop:

    testpmd>stop
    testpmd>port stop 0
    testpmd>show port stats all
    
  6. Restart port at vhost side and re-calculate the average throughput, verify the throughput is not zero after port restart:

    testpmd>port start 0
    testpmd>set burst 1
    testpmd>start tx_first 1
    testpmd>show port stats all
    

87.10. Test Case 10: loopback test with packed ring vectorized path

  1. Launch vhost by below command:

    rm -rf vhost-net*
    ./testpmd -n 4 -l 2-4 --no-pci \
    --file-prefix=vhost --vdev 'net_vhost0,iface=vhost-net,queues=1,client=0' -- -i --nb-cores=1 --txd=1024 --rxd=1024
    testpmd>set fwd mac
    
  2. Launch virtio-user by below command:

    ./testpmd -n 4 -l 5-6 --no-pci --file-prefix=virtio \
    --vdev=net_virtio_user0,mac=00:01:02:03:04:05,path=./vhost-net,packed_vq=1,in_order=0,mrg_rxbuf=0,vectorized=1 \
    -- -i --nb-cores=1 --txd=1024 --rxd=1024
    >set fwd mac
    >start
    
  3. Send packets with vhost-testpmd, [frame_size] is the parameter changs in [64, 128, 256, 512, 1024, 1518]:

    testpmd>set txpkts [frame_size]
    testpmd>start tx_first 32
    
  4. Get throughput 10 times and calculate the average throughput:

    testpmd>show port stats all
    
  5. Stop port at vhost side and re-calculate the average throughput, verify the throughput is zero after port stop:

    testpmd>stop
    testpmd>port stop 0
    testpmd>show port stats all
    
  6. Restart port at vhost side and re-calculate the average throughput, verify the throughput is not zero after port restart:

    testpmd>port start 0
    testpmd>set burst 1
    testpmd>start tx_first 1
    testpmd>show port stats all