aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/tag_documentation.rst10
-rw-r--r--resources/libraries/python/Constants.py18
-rw-r--r--resources/libraries/python/CpuUtils.py169
-rw-r--r--resources/libraries/python/QemuManager.py62
-rw-r--r--resources/libraries/python/autogen/Regenerator.py2
-rw-r--r--resources/libraries/robot/performance/performance_configuration.robot25
-rw-r--r--resources/libraries/robot/performance/performance_utils.robot53
-rw-r--r--resources/libraries/robot/shared/container.robot14
-rw-r--r--resources/libraries/robot/shared/default.robot8
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-32mif-16dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-32memif-2chain-16dcr-vppip4-ndrpdr.robot)20
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-32mif-16dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-32memif-4chain-16dcr-vppip4-ndrpdr.robot)20
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr.robot)30
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-8ch-32mif-16dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-32memif-8chain-16dcr-vppip4-ndrpdr.robot)20
-rwxr-xr-xtests/vpp/perf/nfv_density/dcr_memif/chain/regenerate_testcases.py18
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-16dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-16dcr-vppip4-ndrpdr.robot)20
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-4pl-8mif-16dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-4pipe-16dcr-vppip4-ndrpdr.robot)20
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr.robot)28
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-8pl-16mif-16dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-8pipe-16dcr-vppip4-ndrpdr.robot)20
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr.robot142
-rw-r--r--tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr.robot)28
-rwxr-xr-xtests/vpp/perf/nfv_density/dcr_memif/pipeline/regenerate_testcases.py18
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr.robot)55
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-32vh-16vm2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-2chain-16vm-vppip4-ndrpdr.robot)45
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-32vh-16vm2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-4chain-16vm-vppip4-ndrpdr.robot)45
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr.robot)53
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr.robot136
-rw-r--r--tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-8ch-32vh-16vm2t-vppip4-ndrpdr.robot (renamed from tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-8chain-16vm-vppip4-ndrpdr.robot)45
-rwxr-xr-xtests/vpp/perf/nfv_density/vm_vhost/chain/regenerate_testcases.py18
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-2chain-16vm-l3fwdip4-ndrpdr.robot118
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-4chain-16vm-l3fwdip4-ndrpdr.robot118
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-8chain-16vm-l3fwdip4-ndrpdr.robot118
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr.robot134
-rw-r--r--tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr.robot134
145 files changed, 9264 insertions, 3632 deletions
diff --git a/docs/tag_documentation.rst b/docs/tag_documentation.rst
index 91b6ff3091..7ddc532e52 100644
--- a/docs/tag_documentation.rst
+++ b/docs/tag_documentation.rst
@@ -357,6 +357,16 @@ NF Service Density Tags
service instances, {c}Column denoting number of NFs per service
instance. {r}=(1,2,4,6,8,10), {c}=(1,2,4,6,8,10).
+.. topic:: {n}VM{t}T
+
+ Service density {n}VM{t}T, {n}Number of NF Qemu VMs, {t}Number of threads
+ per NF.
+
+.. topic:: {n}DCRt}T
+
+ Service density {n}DCR{t}T, {n}Number of NF Docker containers, {t}Number of
+ threads per NF.
+
Forwarding Mode Tags
--------------------
diff --git a/resources/libraries/python/Constants.py b/resources/libraries/python/Constants.py
index 71673aff86..0f0003a763 100644
--- a/resources/libraries/python/Constants.py
+++ b/resources/libraries/python/Constants.py
@@ -34,12 +34,24 @@ class Constants(object):
# vat templates location
RESOURCES_TPL_VAT = 'resources/templates/vat'
+ # Kubernetes templates location
+ RESOURCES_TPL_K8S = 'resources/templates/kubernetes'
+
+ # KernelVM templates location
+ RESOURCES_TPL_VM = 'resources/templates/vm'
+
# OpenVPP VAT binary name
VAT_BIN_NAME = 'vpp_api_test'
# VPP service unit name
VPP_UNIT = 'vpp'
+ # Number of system CPU cores.
+ CPU_CNT_SYSTEM = 1
+
+ # Number of vswitch main thread CPU cores.
+ CPU_CNT_MAIN = 1
+
# QEMU binary path
QEMU_BIN_PATH = '/usr/bin'
@@ -58,12 +70,6 @@ class Constants(object):
# TRex install directory
TREX_INSTALL_DIR = '/opt/trex-core-2.35'
- # Kubernetes templates location
- RESOURCES_TPL_K8S = 'resources/templates/kubernetes'
-
- # KernelVM templates location
- RESOURCES_TPL_VM = 'resources/templates/vm'
-
# Honeycomb directory location at topology nodes:
REMOTE_HC_DIR = '/opt/honeycomb'
diff --git a/resources/libraries/python/CpuUtils.py b/resources/libraries/python/CpuUtils.py
index 57bf7fdb71..67bf312f5d 100644
--- a/resources/libraries/python/CpuUtils.py
+++ b/resources/libraries/python/CpuUtils.py
@@ -13,7 +13,11 @@
"""CPU utilities library."""
-from resources.libraries.python.ssh import SSH
+from robot.libraries.BuiltIn import BuiltIn
+
+from resources.libraries.python.Constants import Constants
+from resources.libraries.python.ssh import exec_cmd_no_error
+from resources.libraries.python.topology import Topology
__all__ = ["CpuUtils"]
@@ -66,19 +70,8 @@ class CpuUtils(object):
:type nodes: dict
:raises RuntimeError: If the ssh command "lscpu -p" fails.
"""
- ssh = SSH()
for node in nodes.values():
- ssh.connect(node)
- cmd = "lscpu -p"
- ret, stdout, stderr = ssh.exec_command(cmd)
-# parsing of "lscpu -p" output:
-# # CPU,Core,Socket,Node,,L1d,L1i,L2,L3
-# 0,0,0,0,,0,0,0,0
-# 1,1,0,0,,1,1,1,0
- if ret != 0:
- raise RuntimeError(
- "Failed to execute ssh command, ret: {} err: {}".format(
- ret, stderr))
+ stdout, _ = exec_cmd_no_error(node, 'lscpu -p')
node['cpuinfo'] = list()
for line in stdout.split("\n"):
if line and line[0] != "#":
@@ -243,58 +236,134 @@ class CpuUtils(object):
return cpu_range
@staticmethod
- def cpu_slice_of_list_for_nf(**kwargs):
- """Return list of node related list of CPU numbers.
+ def cpu_slice_of_list_for_nf(node, cpu_node, nf_chains=1, nf_nodes=1,
+ nf_chain=1, nf_node=1, nf_dtc=1, nf_mtcr=2,
+ nf_dtcr=1, skip_cnt=0):
+ """Return list of DUT node related list of CPU numbers. The main
+ computing unit is physical core count.
- :param kwargs: Key-value pairs used to compute placement.
- :type kwargs: dict
- :returns: Cpu numbers related to numa from argument.
+ :param node: DUT node.
+ :param cpu_node: Numa node number.
+ :param nf_chains: Number of NF chains.
+ :param nf_nodes: Number of NF nodes in chain.
+ :param nf_chain: Chain number indexed from 1.
+ :param nf_node: Node number indexed from 1.
+ :param vs_dtc: Amount of physical cores for vswitch dataplane.
+ :param nf_dtc: Amount of physical cores for NF dataplane.
+ :param nf_mtcr: NF main thread per core ratio.
+ :param nf_dtcr: NF dataplane thread per core ratio.
+ :param skip_cnt: Skip first "skip_cnt" CPUs.
+ :type node: dict
+ :param cpu_node: int.
+ :type nf_chains: int
+ :type nf_nodes: int
+ :type nf_chain: int
+ :type nf_node: int
+ :type vs_dtc: int
+ :type nf_dtc: int or float
+ :type nf_mtcr: int
+ :type nf_dtcr: int
+ :type skip_cnt: int
+ :returns: List of CPUs allocated to NF.
:rtype: list
:raises RuntimeError: If we require more cpus than available or if
placement is not possible due to wrong parameters.
"""
- if kwargs['chain_id'] - 1 >= kwargs['chains']:
+ if nf_chain - 1 >= nf_chains:
raise RuntimeError("ChainID is higher than total number of chains!")
- if kwargs['node_id'] - 1 >= kwargs['nodeness']:
- raise RuntimeError("NodeID is higher than chain nodeness!")
+ if nf_node - 1 >= nf_nodes:
+ raise RuntimeError("NodeID is higher than chain nodes!")
- smt_used = CpuUtils.is_smt_enabled(kwargs['node']['cpuinfo'])
- cpu_list = CpuUtils.cpu_list_per_node(kwargs['node'],
- kwargs['cpu_node'], smt_used)
- cpu_list_len = len(cpu_list)
-
- mt_req = ((kwargs['chains'] * kwargs['nodeness']) + kwargs['mtcr'] - 1)\
- / kwargs['mtcr']
- dt_req = ((kwargs['chains'] * kwargs['nodeness']) + kwargs['dtcr'] - 1)\
- / kwargs['dtcr']
-
- cpu_req = kwargs['skip_cnt'] + mt_req + dt_req
- if smt_used and cpu_req > cpu_list_len / CpuUtils.NR_OF_THREADS:
+ smt_used = CpuUtils.is_smt_enabled(node['cpuinfo'])
+ cpu_list = CpuUtils.cpu_list_per_node(node, cpu_node, smt_used)
+ # CPU thread sibling offset.
+ sib = len(cpu_list) / CpuUtils.NR_OF_THREADS
+
+ if not smt_used and not isinstance(nf_dtc, int):
+ raise RuntimeError("Cannot allocate if SMT is not enabled!")
+ # TODO: Workaround as we are using physical core as main unit, we must
+ # adjust number of physical dataplane cores in case of float for further
+ # array referencing. As rounding method in Py2.7 and Py3.x differs, we
+ # are using static mapping. This can be rewritten using flat arrays and
+ # different logic (from Physical core unit to Logical core unit).
+ dtc = 1 if not isinstance(nf_dtc, int) else nf_dtc
+
+ mt_req = ((nf_chains * nf_nodes) + nf_mtcr - 1) / nf_mtcr
+ dt_req = ((nf_chains * nf_nodes) + nf_dtcr - 1) / nf_dtcr
+ cpu_req = skip_cnt + mt_req + dt_req
+
+ if smt_used and cpu_req > len(cpu_list) / CpuUtils.NR_OF_THREADS:
raise RuntimeError("Not enough CPU cores available for placement!")
- elif not smt_used and cpu_req > cpu_list_len:
+ elif not smt_used and cpu_req > len(cpu_list):
raise RuntimeError("Not enough CPU cores available for placement!")
- offset = (kwargs['node_id'] - 1) + (kwargs['chain_id'] - 1)\
- * kwargs['nodeness']
- dtc = kwargs['dtc']
+ offset = (nf_node - 1) + (nf_chain - 1) * nf_nodes
try:
mt_odd = (offset / mt_req) & 1
- mt_skip = kwargs['skip_cnt'] + (offset % mt_req)
- dt_skip = kwargs['skip_cnt'] + mt_req + (offset % dt_req) * dtc
+ mt_skip = skip_cnt + (offset % mt_req)
+ dt_odd = (offset / dt_req) & 1
+ dt_skip = skip_cnt + mt_req + (offset % dt_req) * dtc
except ZeroDivisionError:
raise RuntimeError("Invalid placement combination!")
-
if smt_used:
- cpu_list_0 = cpu_list[:cpu_list_len / CpuUtils.NR_OF_THREADS]
- cpu_list_1 = cpu_list[cpu_list_len / CpuUtils.NR_OF_THREADS:]
+ mt_list = [cpu for cpu in cpu_list[mt_skip+sib:mt_skip+sib + 1]] \
+ if mt_odd else [cpu for cpu in cpu_list[mt_skip:mt_skip + 1]]
+ dt_list = [cpu for cpu in cpu_list[dt_skip+sib:dt_skip+sib + dtc]] \
+ if dt_odd else [cpu for cpu in cpu_list[dt_skip:dt_skip + dtc]]
+ if isinstance(nf_dtc, int):
+ dt_list = \
+ [cpu for cpu in cpu_list[dt_skip:dt_skip + dtc]]
+ dt_list += \
+ [cpu for cpu in cpu_list[dt_skip+sib:dt_skip+sib + dtc]]
+ else:
+ mt_list = [cpu for cpu in cpu_list[mt_skip:mt_skip + 1]]
+ dt_list = [cpu for cpu in cpu_list[dt_skip:dt_skip + dtc]]
- mt_cpu_list = [cpu for cpu in cpu_list_1[mt_skip:mt_skip + 1]] \
- if mt_odd else [cpu for cpu in cpu_list_0[mt_skip:mt_skip + 1]]
+ return mt_list + dt_list
- dt_cpu_list = [cpu for cpu in cpu_list_0[dt_skip:dt_skip + dtc]]
- dt_cpu_list += [cpu for cpu in cpu_list_1[dt_skip:dt_skip + dtc]]
- else:
- mt_cpu_list = [cpu for cpu in cpu_list[mt_skip:mt_skip + 1]]
- dt_cpu_list = [cpu for cpu in cpu_list[dt_skip:dt_skip + dtc]]
+ @staticmethod
+ def get_affinity_nf(nodes, node, nf_chains=1, nf_nodes=1, nf_chain=1,
+ nf_node=1, vs_dtc=1, nf_dtc=1, nf_mtcr=2, nf_dtcr=1):
+
+ """Get affinity of NF (network function). Result will be used to compute
+ the amount of CPUs and also affinity.
+
+ :param nodes: Physical topology nodes.
+ :param node: SUT node.
+ :param nf_chains: Number of NF chains.
+ :param nf_nodes: Number of NF nodes in chain.
+ :param nf_chain: Chain number indexed from 1.
+ :param nf_node: Node number indexed from 1.
+ :param vs_dtc: Amount of physical cores for vswitch dataplane.
+ :param nf_dtc: Amount of physical cores for NF dataplane.
+ :param nf_mtcr: NF main thread per core ratio.
+ :param nf_dtcr: NF dataplane thread per core ratio.
+ :type nodes: dict
+ :type node: dict
+ :type nf_chains: int
+ :type nf_nodes: int
+ :type nf_chain: int
+ :type nf_node: int
+ :type vs_dtc: int
+ :type nf_dtc: int or float
+ :type nf_mtcr: int
+ :type nf_dtcr: int
+ :returns: List of CPUs allocated to NF.
+ :rtype: list
+ """
+ skip_cnt = Constants.CPU_CNT_SYSTEM + Constants.CPU_CNT_MAIN + vs_dtc
+
+ interface_list = []
+ interface_list.append(
+ BuiltIn().get_variable_value('${{{node}_if1}}'.format(node=node)))
+ interface_list.append(
+ BuiltIn().get_variable_value('${{{node}_if2}}'.format(node=node)))
+
+ cpu_node = Topology.get_interfaces_numa_node(
+ nodes[node], *interface_list)
+
+ return CpuUtils.cpu_slice_of_list_for_nf(
+ node=nodes[node], cpu_node=cpu_node, nf_chains=nf_chains,
+ nf_nodes=nf_nodes, nf_chain=nf_chain, nf_node=nf_node,
+ nf_mtcr=nf_mtcr, nf_dtcr=nf_dtcr, nf_dtc=nf_dtc, skip_cnt=skip_cnt)
- return mt_cpu_list + dt_cpu_list
diff --git a/resources/libraries/python/QemuManager.py b/resources/libraries/python/QemuManager.py
index 0ea6164cb7..6f5db6ecbb 100644
--- a/resources/libraries/python/QemuManager.py
+++ b/resources/libraries/python/QemuManager.py
@@ -15,61 +15,14 @@
from collections import OrderedDict
-from robot.libraries.BuiltIn import BuiltIn
-
from resources.libraries.python.Constants import Constants
from resources.libraries.python.CpuUtils import CpuUtils
from resources.libraries.python.QemuUtils import QemuUtils
-from resources.libraries.python.topology import NodeType, Topology
+from resources.libraries.python.topology import NodeType
__all__ = ["QemuManager"]
-def get_affinity_vm(nodes, node, nf_chains=1, nf_nodes=1, nf_chain=1, nf_node=1,
- cpu_count_int=1, vnf_count_int=1):
- """Get affinity of VM. Result will be used to compute the amount of
- CPUs and also affinity.
-
- :param node: SUT nodes.
- :param node: DUT node.
- :param nf_chains: Number of NF chains.
- :param nf_nodes: Number of NF nodes in chain.
- :param nf_chain: Chain ID.
- :param nf_node: Node ID.
- :param cpu_count_int: Amount of Dataplane threads of vswitch.
- :param vnf_count_int: Amount of Dataplane threads of vnf.
- :type nodes: dict
- :type node: dict
- :type nf_chains: int
- :type nf_nodes: int
- :type nf_chain: int
- :type nf_node: int
- :type cpu_count_int: int
- :type vnf_count_int: int
- :returns: List of CPUs allocated to VM.
- :rtype: list
- """
- sut_sc = 1
- dut_mc = 1
- dut_dc = cpu_count_int
- skip_cnt = sut_sc + dut_mc + dut_dc
- dtc = vnf_count_int
-
- interface_list = []
- interface_list.append(
- BuiltIn().get_variable_value('${{{node}_if1}}'.format(node=node)))
- interface_list.append(
- BuiltIn().get_variable_value('${{{node}_if2}}'.format(node=node)))
-
- cpu_node = Topology.get_interfaces_numa_node(nodes[node], *interface_list)
-
- nf_cpus = CpuUtils.cpu_slice_of_list_for_nf(
- node=nodes[node], cpu_node=cpu_node, chains=nf_chains,
- nodeness=nf_nodes, chain_id=nf_chain, node_id=nf_node, mtcr=2, dtcr=1,
- dtc=dtc, skip_cnt=skip_cnt)
-
- return nf_cpus
-
class QemuManager(object):
"""QEMU lifecycle management class"""
@@ -97,8 +50,9 @@ class QemuManager(object):
nf_chains = int(kwargs['nf_chains'])
nf_nodes = int(kwargs['nf_nodes'])
queues = kwargs['rxq_count_int'] if kwargs['auto_scale'] else 1
- cpu_count_int = kwargs['cpu_count_int']
- vnf_count_int = kwargs['cpu_count_int'] if kwargs['auto_scale'] else 1
+ vs_dtc = kwargs['vs_dtc']
+ nf_dtc = kwargs['vs_dtc'] if kwargs['auto_scale'] else kwargs['nf_dtc']
+ nf_dtcr = kwargs['nf_dtcr'] if isinstance(kwargs['nf_dtcr'], int) else 2
img = Constants.QEMU_VM_KERNEL
@@ -113,10 +67,10 @@ class QemuManager(object):
vif2_mac = kwargs['tg_if2_mac'] if nf_node == nf_nodes \
else '52:54:00:00:{id:02x}:01'.format(id=qemu_id + 1)
- self.machines_affinity[name] = get_affinity_vm(
+ self.machines_affinity[name] = CpuUtils.get_affinity_nf(
nodes=self.nodes, node=node, nf_chains=nf_chains,
nf_nodes=nf_nodes, nf_chain=nf_chain, nf_node=nf_node,
- cpu_count_int=cpu_count_int, vnf_count_int=vnf_count_int)
+ vs_dtc=vs_dtc, nf_dtc=nf_dtc, nf_dtcr=nf_dtcr)
self.machines[name] = QemuUtils(
node=self.nodes[node], qemu_id=qemu_id,
@@ -131,10 +85,10 @@ class QemuManager(object):
jumbo_frames=kwargs['jumbo'])
self.machines[name].qemu_add_vhost_user_if(
sock1, jumbo_frames=kwargs['jumbo'], queues=queues,
- queue_size=1024)
+ queue_size=kwargs['perf_qemu_qsz'])
self.machines[name].qemu_add_vhost_user_if(
sock2, jumbo_frames=kwargs['jumbo'], queues=queues,
- queue_size=1024)
+ queue_size=kwargs['perf_qemu_qsz'])
def construct_vms_on_all_nodes(self, **kwargs):
"""Construct 1..Mx1..N VMs(s) with specified name on all nodes.
diff --git a/resources/libraries/python/autogen/Regenerator.py b/resources/libraries/python/autogen/Regenerator.py
index f47c88b022..85625c4c35 100644
--- a/resources/libraries/python/autogen/Regenerator.py
+++ b/resources/libraries/python/autogen/Regenerator.py
@@ -119,7 +119,7 @@ class Regenerator(object):
# Not supported by AVF driver.
# https://git.fd.io/vpp/tree/src/plugins/avf/README.md
emit = False
- if "-16vm-" in suite_id or "-16dcr-" in suite_id:
+ if "-16vm2t-" in suite_id or "-16dcr2t-" in suite_id:
if kwargs["phy_cores"] > 3:
# CSIT lab only has 28 (physical) core processors,
# so these test would fail when attempting to assign cores.
diff --git a/resources/libraries/robot/performance/performance_configuration.robot b/resources/libraries/robot/performance/performance_configuration.robot
index d9f5e3ab59..8a305e4409 100644
--- a/resources/libraries/robot/performance/performance_configuration.robot
+++ b/resources/libraries/robot/performance/performance_configuration.robot
@@ -64,7 +64,7 @@
| | | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if2_1} | up
| | | Run Keyword Unless | '${if2_status}' == 'PASS'
| | | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if2_2} | up
-| | All VPP Interfaces Ready Wait | ${nodes}
+| | All VPP Interfaces Ready Wait | ${nodes} | timeout=${600}
| | ${duts}= | Get Matches | ${nodes} | DUT*
| | :FOR | ${dut} | IN | @{duts}
| | | ${if1_status} | ${value}= | Run Keyword And Ignore Error
@@ -83,7 +83,7 @@
| | | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if2_1}
| | | Run Keyword Unless | '${if2_status}' == 'PASS'
| | | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if2_2}
-| | All VPP Interfaces Ready Wait | ${nodes}
+| | All VPP Interfaces Ready Wait | ${nodes} | timeout=${600}
| Set single interfaces in path up
| | [Documentation]
@@ -104,7 +104,7 @@
| | | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if1_1} | up
| | | Run Keyword Unless | '${if1_status}' == 'PASS'
| | | ... | Set Interface State | ${nodes['${dut}']} | ${${dut}_if1_2} | up
-| | All VPP Interfaces Ready Wait | ${nodes}
+| | All VPP Interfaces Ready Wait | ${nodes} | timeout=${600}
| | ${duts}= | Get Matches | ${nodes} | DUT*
| | :FOR | ${dut} | IN | @{duts}
| | | ${if1_status} | ${value}= | Run Keyword And Ignore Error
@@ -2301,10 +2301,11 @@
| | ... | perf_qemu_qsz=${perf_qemu_qsz} | use_tuned_cfs=${use_tuned_cfs}
| | ... | auto_scale=${auto_scale} | vnf=${vnf}
| | ... | tg_if1_mac=${tg_if1_mac} | tg_if2_mac=${tg_if2_mac}
-| | ... | cpu_count_int=${cpu_count_int} | rxq_count_int=${rxq_count_int}
+| | ... | vs_dtc=${cpu_count_int} | nf_dtc=${nf_dtc} | nf_dtcr=${nf_dtcr}
+| | ... | rxq_count_int=${rxq_count_int}
| | Run Keyword | vnf_manager.Start All VMs | pinning=${True}
| | Run Keyword If | ${use_tuned_cfs} | vnf_manager.Set Scheduler All VMs
-| | All VPP Interfaces Ready Wait | ${nodes}
+| | All VPP Interfaces Ready Wait | ${nodes} | timeout=${600}
| | VPP round robin RX placement on all DUTs | ${nodes} | prefix=Virtual
| Configure guest VM with dpdk-testpmd connected via vhost-user
@@ -2392,9 +2393,10 @@
| | ... | ${perf_qemu_qsz}=${1024} | ${use_tuned_cfs}=${False}
| | ...
| | :FOR | ${number} | IN RANGE | 1 | ${vm_count}+1
-| | | ${nf_cpus}= | Create network function CPU list | ${dut}
-| | | ... | chains=${1} | nodeness=${vm_count} | chain_id=${1}
-| | | ... | node_id=${number} | auto_scale=${True}
+| | | ${nf_cpus}= | Get Affinity NF | ${nodes} | ${dut}
+| | | ... | nf_chains=${1} | nf_nodes=${vm_count}
+| | | ... | nf_chain=${1} | nf_node=${number}
+| | | ... | vs_dtc=${cpu_count_int} | nf_dtc=${cpu_count_int}
| | | ${sock1}= | Set Variable | /var/run/vpp/sock-${number}-1
| | | ${sock2}= | Set Variable | /var/run/vpp/sock-${number}-2
| | | ${vm}=
@@ -2528,9 +2530,10 @@
| | ... | ${perf_qemu_qsz}=${1024} | ${use_tuned_cfs}=${False}
| | ...
| | :FOR | ${number} | IN RANGE | 1 | ${vm_count}+1
-| | | ${nf_cpus}= | Create network function CPU list | ${dut}
-| | | ... | chains=${1} | nodeness=${vm_count} | chain_id=${1}
-| | | ... | node_id=${number} | auto_scale=${True}
+| | | ${nf_cpus}= | Get Affinity NF | ${nodes} | ${dut}
+| | | ... | nf_chains=${1} | nf_nodes=${vm_count}
+| | | ... | nf_chain=${1} | nf_node=${number}
+| | | ... | vs_dtc=${cpu_count_int} | nf_dtc=${cpu_count_int}
| | | ${sock1}= | Set Variable | /var/run/vpp/sock-${number}-1
| | | ${sock2}= | Set Variable | /var/run/vpp/sock-${number}-2
| | | ${vm}=
diff --git a/resources/libraries/robot/performance/performance_utils.robot b/resources/libraries/robot/performance/performance_utils.robot
index 45d8efe535..9661b522d8 100644
--- a/resources/libraries/robot/performance/performance_utils.robot
+++ b/resources/libraries/robot/performance/performance_utils.robot
@@ -406,56 +406,3 @@
| | Run Keyword If | ${dut_stats}==${True}
| | ... | Show runtime counters on all DUTs | ${nodes}
| | Stop traffic on tg
-
-| Create network function CPU list
-| | # TODO: Is there a better place for this keyword?
-| | # It is not exactly a performance utility.
-| | [Documentation]
-| | ... | Create list of CPUs allocated for network function base on SUT/DUT
-| | ... | placement and other network functions placement.
-| | ...
-| | ... | *Arguments:*
-| | ... | - dut - DUT node. Type: dictionary
-| | ... | - chains: Total number of chains. Type: integer
-| | ... | - nodeness: Total number of nodes per chain. Type: integer
-| | ... | - chain_id - Network function chain ID. Type: integer
-| | ... | - node_id - Network function node ID within chain. Type: integer
-| | ... | - mtcr - Main thread to core ratio. Type: integer
-| | ... | - dtcr - Dataplane thread to core ratio. Type: integer
-| | ... | - auto_scale - If True, use same amount of Dataplane threads for
-| | ... | network function as DUT, otherwise use single physical core for
-| | ... | every network function. Type: boolean
-| | ...
-| | ... | *Note:*
-| | ... | KW uses test variables \${cpu_count_int} set by
-| | ... | "Add worker threads and rxqueues to all DUTs"
-| | ...
-| | ... | *Example:*
-| | ...
-| | ... | \| Create network function CPU list \| ${nodes['DUT1']} \
-| | ... | \| 1 \| 1 \| 1 \| 1 \|
-| | ...
-| | [Arguments] | ${dut} | ${chains}=${1} | ${nodeness}=${1} | ${chain_id}=${1}
-| | ... | ${node_id}=${1} | ${mtcr}=${2} | ${dtcr}=${1} | ${auto_scale}=${False}
-| | ...
-| | ${sut_sc}= | Set Variable | ${1}
-| | ${dut_mc}= | Set Variable | ${1}
-| | ${dut_dc}= | Set Variable | ${cpu_count_int}
-| | ${skip}= | Evaluate | ${sut_sc} + ${dut_mc} + ${dut_dc}
-| | ${dtc}= | Set Variable If | ${auto_scale} | ${cpu_count_int} | ${1}
-| | ${if1_status} | ${value}= | Run Keyword And Ignore Error
-| | ... | Variable Should Exist | ${${dut}_if1}
-| | @{if_list}= | Run Keyword If | '${if1_status}' == 'PASS'
-| | ... | Create List | ${${dut}_if1}
-| | ... | ELSE | Create List | ${${dut}_if1_1} | ${${dut}_if1_2}
-| | ${if2_status} | ${value}= | Run Keyword And Ignore Error
-| | ... | Variable Should Exist | ${${dut}_if2}
-| | Run Keyword If | '${if2_status}' == 'PASS'
-| | ... | Append To List | ${if_list} | ${${dut}_if2}
-| | ... | ELSE | Append To List | ${if_list} | ${${dut}_if2_1} | ${${dut}_if2_2}
-| | ${dut_numa}= | Get interfaces numa node | ${nodes['${dut}']} | @{if_list}
-| | ${nf_cpus}= | Cpu slice of list for NF | node=${nodes['${dut}']}
-| | ... | cpu_node=${dut_numa} | chains=${chains} | nodeness=${nodeness}
-| | ... | chain_id=${chain_id} | node_id=${node_id} | mtcr=${mtcr}
-| | ... | dtcr=${dtcr} | dtc=${dtc} | skip_cnt=${skip}
-| | Return From Keyword | ${nf_cpus}
diff --git a/resources/libraries/robot/shared/container.robot b/resources/libraries/robot/shared/container.robot
index d1ec6d2a03..c1ab1af18d 100644
--- a/resources/libraries/robot/shared/container.robot
+++ b/resources/libraries/robot/shared/container.robot
@@ -41,6 +41,13 @@
| | [Arguments] | ${nf_chains}=${1} | ${nf_nodes}=${1} | ${nf_chain}=${1}
| | ... | ${nf_node}=${1} | ${auto_scale}=${True} | ${nested}=${False}
| | ...
+| | ${nf_dtcr_status} | ${value}= | Run Keyword And Ignore Error
+| | ... | Variable Should Exist | ${nf_dtcr}
+| | ${nf_dtcr}= | Run Keyword If | '${nf_dtcr_status}' == 'PASS'
+| | ... | Set Variable | ${nf_dtcr} | ELSE | Set Variable | ${1}
+| | ${nf_dtc}= | Run Keyword Unless | ${nested}
+| | ... | Set Variable If | ${auto_scale} | ${cpu_count_int}
+| | ... | ${nf_dtc}
| | ${duts}= | Get Matches | ${nodes} | DUT*
| | :FOR | ${dut} | IN | @{duts}
| | | ${nf_id}= | Evaluate | (${nf_chain} - ${1}) * ${nf_nodes} + ${nf_node}
@@ -56,9 +63,10 @@
| | | ... | ${root}/usr/share/vpp/:/usr/share/vpp/
| | | ${nf_cpus}= | Set Variable | ${None}
| | | ${nf_cpus}= | Run Keyword Unless | ${nested}
-| | | ... | Create network function CPU list | ${dut}
-| | | ... | chains=${nf_chains} | nodeness=${nf_nodes} | chain_id=${nf_chain}
-| | | ... | node_id=${nf_node} | auto_scale=${auto_scale}
+| | | ... | Get Affinity NF | ${nodes} | ${dut}
+| | | ... | nf_chains=${nf_chains} | nf_nodes=${nf_nodes}
+| | | ... | nf_chain=${nf_chain} | nf_node=${nf_node}
+| | | ... | vs_dtc=${cpu_count_int} | nf_dtc=${nf_dtc} | nf_dtcr=${nf_dtcr}
| | | &{cont_args}= | Create Dictionary
| | | ... | name=${dut}_${container_group}${nf_id}${uuid}
| | | ... | node=${nodes['${dut}']} | mnt=${mnt} | env=${env}
diff --git a/resources/libraries/robot/shared/default.robot b/resources/libraries/robot/shared/default.robot
index 569ff34812..6e26abc03b 100644
--- a/resources/libraries/robot/shared/default.robot
+++ b/resources/libraries/robot/shared/default.robot
@@ -14,6 +14,7 @@
*** Settings ***
| Variables | resources/libraries/python/topology.py
| Variables | resources/libraries/python/PapiHistory.py
+| Variables | resources/libraries/python/Constants.py
| ...
| Library | Collections
| Library | OperatingSystem
@@ -199,10 +200,13 @@
| | | ... | Append To List | ${if_list} | ${${dut}_if2_1} | ${${dut}_if2_2}
| | | ${numa}= | Get interfaces numa node | ${nodes['${dut}']} | @{if_list}
| | | ${smt_used}= | Is SMT enabled | ${nodes['${dut}']['cpuinfo']}
+| | | ${skip_cnt}= | Set variable | ${CPU_CNT_SYSTEM}
| | | ${cpu_main}= | Cpu list per node str | ${nodes['${dut}']} | ${numa}
-| | | ... | skip_cnt=${1} | cpu_cnt=${1}
+| | | ... | skip_cnt=${skip_cnt} | cpu_cnt=${CPU_CNT_MAIN}
+| | | ${skip_cnt}= | Evaluate | ${CPU_CNT_SYSTEM} + ${CPU_CNT_MAIN}
| | | ${cpu_wt}= | Cpu list per node str | ${nodes['${dut}']} | ${numa}
-| | | ... | skip_cnt=${2} | cpu_cnt=${cpu_count_int} | smt_used=${smt_used}
+| | | ... | skip_cnt=${skip_cnt} | cpu_cnt=${cpu_count_int}
+| | | ... | smt_used=${smt_used}
| | | ${thr_count_int}= | Run keyword if | ${smt_used}
| | | ... | Evaluate | int(${cpu_count_int}*2)
| | | ... | ELSE | Set variable | ${thr_count_int}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..c62ed1da48
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 10R1C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 10DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 10 chains
+| ... | 10 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-10c1n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${10} | nf_nodes=${1} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${10} | nf_nodes=${1} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-10ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr.robot
index 7162606a7d..409dc2352d 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 10R1C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 10DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-10c1n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-20memif-10chain-10dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-10ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..62265e6109
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R6C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 6DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain
+| ... | 6 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c6n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${1} | nf_nodes=${6} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${1} | nf_nodes=${6} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr.robot
index 3707811c42..a75068fc20 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R6C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 6DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c6n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-12memif-1chain-6dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..fcecfccb02
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R8C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 8DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain
+| ... | 8 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c8n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${1} | nf_nodes=${8} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${1} | nf_nodes=${8} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr.robot
index ac36c6c785..5bbea2a7ce 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R8C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 8DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c8n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-16memif-1chain-8dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..bd5ac3248e
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R10C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 10DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain
+| ... | 10 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c10n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${1} | nf_nodes=${10} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${1} | nf_nodes=${10} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1ch-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr.robot
index 0fe7945ba5..7ed3535430 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R10C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 10DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c10n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-20memif-1chain-10dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1ch-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..7b78a43fa5
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R1C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain
+| ... | 1 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c1n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${1} | nf_nodes=${1} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${1} | nf_nodes=${1} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1ch-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr.robot
index ecd89489ff..0882d63d98 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R1C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c1n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-2memif-1chain-1dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1ch-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..043c3296e6
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R2C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 2DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain
+| ... | 2 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c2n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${1} | nf_nodes=${2} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${1} | nf_nodes=${2} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr.robot
index 57f68305f3..353dd59c83 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R2C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 2DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c2n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-4memif-1chain-2dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..00d5bfa384
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R4C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 4DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain
+| ... | 4 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c4n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${1} | nf_nodes=${4} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${1} | nf_nodes=${4} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr.robot
index 9bfd03487d..8e9dbd1e8c 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R4C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 4DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c4n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-8memif-1chain-4dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..18dfe4393f
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R4C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 8DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 2 chains
+| ... | 8 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c4n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${2} | nf_nodes=${4} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${2} | nf_nodes=${4} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr.robot
index df280614c3..8613bb70b6 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R4C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 8DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c4n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-16memif-2chain-8dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-2ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..6daa2319fd
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R6C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 12DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 2 chains
+| ... | 12 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c6n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${2} | nf_nodes=${6} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${2} | nf_nodes=${6} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr.robot
index 080b3598e4..919205a45c 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R6C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 12DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c6n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-24memif-2chain-12dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-2ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..0da06ad980
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R8C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 16DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 2 chains
+| ... | 16 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c8n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${2} | nf_nodes=${8} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${2} | nf_nodes=${8} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-32memif-2chain-16dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-32mif-16dcr2t-vppip4-ndrpdr.robot
index dfcb0955d6..f6322bd43b 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-32memif-2chain-16dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-32mif-16dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R8C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 16DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c8n
# Container
@@ -91,34 +93,34 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-32memif-2chain-16dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-32memif-2chain-16dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc04-1518B-1c-eth-l2bd-32memif-2chain-16dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-32memif-2chain-16dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc07-9000B-1c-eth-l2bd-32memif-2chain-16dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-32memif-2chain-16dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc10-IMIX-1c-eth-l2bd-32memif-2chain-16dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-32memif-2chain-16dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..d97c963a1b
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R1C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 2DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 2 chains
+| ... | 2 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c1n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${2} | nf_nodes=${1} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${2} | nf_nodes=${1} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2ch-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr.robot
index 48e761aae7..574018cc15 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R1C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 2DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c1n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-4memif-2chain-2dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-2ch-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..7a179af1a0
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R2C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 4DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 2 chains
+| ... | 4 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c2n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${2} | nf_nodes=${2} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${2} | nf_nodes=${2} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr.robot
index f8dbac7762..b977a60bff 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R2C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 4DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c2n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-8memif-2chain-4dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-2ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..48c649ad7a
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 4R2C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 8DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 4 chains
+| ... | 8 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c2n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${4} | nf_nodes=${2} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${4} | nf_nodes=${2} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-4ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr.robot
index f916d9805a..067fd37e28 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 4R2C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 8DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c2n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-16memif-4chain-8dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-4ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..3b201e07e0
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 4R4C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 16DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 4 chains
+| ... | 16 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c4n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${4} | nf_nodes=${4} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${4} | nf_nodes=${4} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-4ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-32memif-4chain-16dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-32mif-16dcr2t-vppip4-ndrpdr.robot
index bc04e14394..08256b8832 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-32memif-4chain-16dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-32mif-16dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 4R4C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 16DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c4n
# Container
@@ -91,34 +93,34 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-32memif-4chain-16dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-4ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-32memif-4chain-16dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-4ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc04-1518B-1c-eth-l2bd-32memif-4chain-16dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-4ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-32memif-4chain-16dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-4ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc07-9000B-1c-eth-l2bd-32memif-4chain-16dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-4ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-32memif-4chain-16dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-4ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc10-IMIX-1c-eth-l2bd-32memif-4chain-16dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-4ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-32memif-4chain-16dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-4ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..77814496d8
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 4R1C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 4DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 4 chains
+| ... | 4 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c1n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${4} | nf_nodes=${1} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${4} | nf_nodes=${1} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-4ch-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr.robot
index 1109713681..6f47eed0f9 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 4R1C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 4DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -32,7 +32,7 @@
| Test Template | Local Template
| ...
| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 4 chains
-| ... | 1 docker container*
+| ... | 4 docker container*
| ...
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
| ... | single links between nodes.
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c1n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-8memif-4chain-4dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-4ch-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..f84edae7cb
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 6R1C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 6DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 6 chains
+| ... | 6 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-6c1n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${6} | nf_nodes=${1} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${6} | nf_nodes=${1} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-6ch-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr.robot
index 142e6ea5e4..9d59f4c1be 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 6R1C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 6DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-6c1n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-12memif-6chain-6dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-6ch-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..7d904b727f
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 6R2C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 12DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 6 chains
+| ... | 12 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-6c2n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${6} | nf_nodes=${2} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${6} | nf_nodes=${2} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-6ch-24mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr.robot
index 5daf1ad96e..c866074bc0 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 6R2C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 12DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-6c2n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-24memif-6chain-12dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-6ch-24mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..974a0489e3
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 8R1C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 8DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 8 chains
+| ... | 8 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-8c1n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${8} | nf_nodes=${1} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${8} | nf_nodes=${1} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-8ch-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr.robot
index 486d217029..b10ebe5d3e 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 8R1C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 8DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-8c1n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-16memif-8chain-8dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-8ch-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..0789452c3d
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 8R2C
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 16DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 8 chains
+| ... | 16 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-8c2n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | chain_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${8} | nf_nodes=${2} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple chains with memif pairs
+| | ... | nf_chains=${8} | nf_nodes=${2} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-8ch-32mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-32memif-8chain-16dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-8ch-32mif-16dcr2t-vppip4-ndrpdr.robot
index 382ecc33f1..e63bc8933d 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-32memif-8chain-16dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/2n-10ge2p1x710-eth-l2bd-8ch-32mif-16dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 8R2C
-| ... | NF_DENSITY | CHAIN | NF_VPPIP4
+| ... | NF_DENSITY | CHAIN | NF_VPPIP4 | 16DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-8c2n
# Container
@@ -91,34 +93,34 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-32memif-8chain-16dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-8ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-32memif-8chain-16dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-8ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc04-1518B-1c-eth-l2bd-32memif-8chain-16dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-8ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-32memif-8chain-16dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-8ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc07-9000B-1c-eth-l2bd-32memif-8chain-16dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-8ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-32memif-8chain-16dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-8ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc10-IMIX-1c-eth-l2bd-32memif-8chain-16dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-8ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-32memif-8chain-16dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-8ch-32mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/chain/regenerate_testcases.py b/tests/vpp/perf/nfv_density/dcr_memif/chain/regenerate_testcases.py
new file mode 100755
index 0000000000..2632018a80
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/chain/regenerate_testcases.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from resources.libraries.python.autogen.Regenerator import Regenerator
+
+Regenerator().regenerate_glob("*.robot")
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..69e6a381f9
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 10R1C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 10DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 20memif 10
+| ... | pipelines 1 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-10c1n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${10} | nf_nodes=${1} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${10} | nf_nodes=${1} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-10pl-20mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr.robot
index 13e412b71d..8622f0ba95 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 10R1C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 10DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-10c1n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-20memif-10pipe-10dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-10pl-20mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..03e3fe6d71
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R10C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 10DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 2memif 1
+| ... | pipeline 10 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c10n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${1} | nf_nodes=${10} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${1} | nf_nodes=${10} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1pl-2mif-10dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr.robot
index 5d0f00679f..e76e69892a 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R10C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 10DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c10n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-2memif-1pipe-10dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1pl-2mif-10dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..67738aef6c
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R1C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 1DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 2memif 1
+| ... | pipeline 1 docker container*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c1n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${1} | nf_nodes=${1} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${1} | nf_nodes=${1} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1pl-2mif-1dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr.robot
index e53c612eb2..5fb0d8a32c 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R1C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 1DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c1n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-2memif-1pipe-1dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1pl-2mif-1dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..fcc0be980e
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R2C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 2DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 2memif 1
+| ... | pipeline 2 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c2n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${1} | nf_nodes=${2} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${1} | nf_nodes=${2} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1pl-2mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr.robot
index 0173645c21..05f6dd621b 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R2C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 2DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c2n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-2memif-1pipe-2dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1pl-2mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..17750167fb
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R4C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 4DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 2memif 1
+| ... | pipeline 4 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c4n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${1} | nf_nodes=${4} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${1} | nf_nodes=${4} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1pl-2mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr.robot
index 1addfb35fc..9066c51236 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R4C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 4DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c4n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-2memif-1pipe-4dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1pl-2mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..86f8bf8eea
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R6C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 6DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 2memif 1
+| ... | pipeline 6 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c6n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${1} | nf_nodes=${6} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${1} | nf_nodes=${6} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1pl-2mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr.robot
index cbab163675..f8ba6fd723 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R6C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 6DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c6n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-2memif-1pipe-6dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1pl-2mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..ba4aa235e9
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R8C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 8DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 2memif 1
+| ... | pipeline 8 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c8n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${1} | nf_nodes=${8} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${1} | nf_nodes=${8} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1pl-2mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr.robot
index c2ceadb701..9fab19ecbb 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 1R8C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 8DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c8n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-2memif-1pipe-8dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1pl-2mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..da4487ccb2
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R6C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 12DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 4memif 2
+| ... | pipelines 12 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c6n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${2} | nf_nodes=${6} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${2} | nf_nodes=${6} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2pl-4mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr.robot
index 73fd9ec345..df0e15480f 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R6C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 12DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c6n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-4memif-2pipe-12dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-2pl-4mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..0b58ec9aa1
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R8C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 16DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 4memif 2
+| ... | pipelines 16 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c8n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${2} | nf_nodes=${8} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${2} | nf_nodes=${8} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2pl-4mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-16dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-16dcr2t-vppip4-ndrpdr.robot
index b3952b431d..98f0e875bc 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-16dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-16dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R8C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 16DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c8n
# Container
@@ -91,34 +93,34 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-4memif-2pipe-16dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2pl-4mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-4memif-2pipe-16dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2pl-4mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc04-1518B-1c-eth-l2bd-4memif-2pipe-16dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2pl-4mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-4memif-2pipe-16dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2pl-4mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc07-9000B-1c-eth-l2bd-4memif-2pipe-16dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2pl-4mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-4memif-2pipe-16dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2pl-4mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc10-IMIX-1c-eth-l2bd-4memif-2pipe-16dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2pl-4mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-4memif-2pipe-16dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2pl-4mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..16bcf0a31b
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R1C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 2DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 4memif 2
+| ... | pipelines 2 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c1n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${2} | nf_nodes=${1} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${2} | nf_nodes=${1} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2pl-4mif-2dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr.robot
index 542641b40f..d0a6c35509 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R1C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 2DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c1n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-4memif-2pipe-2dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-2pl-4mif-2dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..6be96b8bb7
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R2C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 4DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 2memif 2
+| ... | pipelines 4 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c2n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${2} | nf_nodes=${2} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${2} | nf_nodes=${2} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2pl-4mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr.robot
index 2751869d82..348340788a 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R2C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 4DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c2n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-4memif-2pipe-4dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-2pl-4mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..eb3fc8e872
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R4C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 8DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 4memif 2
+| ... | pipelines 8 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c4n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${2} | nf_nodes=${4} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${2} | nf_nodes=${4} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2pl-4mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr.robot
index 7acea9f09a..fb60376f30 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 2R4C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 8DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c4n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-4memif-2pipe-8dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-2pl-4mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..86041272c2
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 4R1C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 4DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 8memif 4
+| ... | pipelines 4 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c1n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${4} | nf_nodes=${1} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${4} | nf_nodes=${1} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2pl-8mif-4dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr.robot
index b2f1cce3c0..aa1003e85e 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 4R1C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 4DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c1n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-8memif-4pipe-4dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-2pl-8mif-4dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..771b5ab577
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 4R4C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 16DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 8memif 4
+| ... | pipelines 16 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c4n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${4} | nf_nodes=${4} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${4} | nf_nodes=${4} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-4pl-8mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-4pipe-16dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-4pl-8mif-16dcr2t-vppip4-ndrpdr.robot
index 3fe578fa3a..df9485707a 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-4pipe-16dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-4pl-8mif-16dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 4R4C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 16DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c4n
# Container
@@ -91,34 +93,34 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-8memif-4pipe-16dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-4pl-8mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-8memif-4pipe-16dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-4pl-8mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc04-1518B-1c-eth-l2bd-8memif-4pipe-16dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-4pl-8mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-8memif-4pipe-16dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-4pl-8mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc07-9000B-1c-eth-l2bd-8memif-4pipe-16dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-4pl-8mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-8memif-4pipe-16dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-4pl-8mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc10-IMIX-1c-eth-l2bd-8memif-4pipe-16dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-4pl-8mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-8memif-4pipe-16dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-4pl-8mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..0a96dfb68f
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 4R2C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 8DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 8memif 4
+| ... | pipelines 8 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c2n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${4} | nf_nodes=${2} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${4} | nf_nodes=${2} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-4pl-8mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr.robot
index 27cfe858ee..3d67127e55 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 4R2C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 8DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c2n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-8memif-4pipe-8dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-4pl-8mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..252705e437
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 6R2C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 12DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 12memif 6
+| ... | pipelines 12 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-6c2n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${6} | nf_nodes=${2} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${6} | nf_nodes=${2} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-6pl-12mif-12dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr.robot
index de3164cf50..d0bf36e7da 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 6R2C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 12DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-6c2n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-12memif-6pipe-12dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-6pl-12mif-12dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..aec6c725f2
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 6R1C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 6DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 12memif 6
+| ... | pipelines 1 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-6c1n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${6} | nf_nodes=${1} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${6} | nf_nodes=${1} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-6pl-12mif-6dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr.robot
index eea72f8cd5..f98e355a44 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 6R1C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 6DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-6c1n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-12memif-6pipe-6dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-6pl-12mif-6dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..413b48467d
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 8R2C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 16DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 16memif 8
+| ... | pipelines 16 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-8c2n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${8} | nf_nodes=${2} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${8} | nf_nodes=${2} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-8pl-16mif-16dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-8pipe-16dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-8pl-16mif-16dcr2t-vppip4-ndrpdr.robot
index 1020f16e41..7330ecc688 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-8pipe-16dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-8pl-16mif-16dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 8R2C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 16DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-8c2n
# Container
@@ -91,34 +93,34 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-16memif-8pipe-16dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-8pl-16mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-16memif-8pipe-16dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-8pl-16mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc04-1518B-1c-eth-l2bd-16memif-8pipe-16dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-8pl-16mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-16memif-8pipe-16dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-8pl-16mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc07-9000B-1c-eth-l2bd-16memif-8pipe-16dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-8pl-16mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-16memif-8pipe-16dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-8pl-16mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc10-IMIX-1c-eth-l2bd-16memif-8pipe-16dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-8pl-16mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-16memif-8pipe-16dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-8pl-16mif-16dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..fdc151b4f5
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr.robot
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 8R1C
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 8DCR1T
+| ...
+| Suite Setup | Run Keywords
+| ... | Set up 2-node performance topology with DUT's NIC model | L3
+| ... | ${nic_name}
+| ... | AND | Set up performance test suite with MEMIF
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Run Keywords
+| ... | Tear down performance test
+| ... | AND | Tear down performance test with container
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | **RFC2544: Pkt throughput L2BD test cases with 16memif 8
+| ... | pipelines 8 docker containers*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with
+| ... | single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 bridge domain.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with two L2 bridge domains
+| ... | and MAC learning enabled. DUT1 tested with ${nic_name}.\
+| ... | Container is connected to VPP via Memif interface. Container is running
+| ... | same VPP version as running on DUT. Container is limited via cgroup to
+| ... | use cores allocated from pool of isolated CPUs. There are no memory
+| ... | contraints.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-8c1n
+# Container
+| ${container_engine}= | Docker
+| ${container_chain_topology}= | pipeline_ip4
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | And Set up performance test with containers
+| | ... | nf_chains=${8} | nf_nodes=${1} | auto_scale=${False}
+| | And Initialize L2 Bridge Domain for multiple pipelines with memif pairs
+| | ... | nf_chains=${8} | nf_nodes=${1} | auto_scale=${False}
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-8pl-16mif-8dcr1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr.robot
index 9ca59242d0..a7ac595d28 100644
--- a/tests/vpp/perf/container_memif/2n-10ge2p1x710-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/2n-10ge2p1x710-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | MEMIF | DOCKER | 8R1C
-| ... | NF_DENSITY | PIPELINE | NF_VPPIP4
+| ... | NF_DENSITY | PIPELINE | NF_VPPIP4 | 8DCR2T
| ...
| Suite Setup | Run Keywords
| ... | Set up 2-node performance topology with DUT's NIC model | L3
@@ -57,6 +57,8 @@
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-8c1n
# Container
@@ -91,50 +93,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-16memif-8pipe-8dcr-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-8pl-16mif-8dcr2t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/dcr_memif/pipeline/regenerate_testcases.py b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/regenerate_testcases.py
new file mode 100755
index 0000000000..2632018a80
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/dcr_memif/pipeline/regenerate_testcases.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from resources.libraries.python.autogen.Regenerator import Regenerator
+
+Regenerator().regenerate_glob("*.robot")
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr.robot
index be3d0ebc6f..99c5cda637 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 10R1C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 10R1C | 10VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 20 vhost
-| ... | 10 chains 10 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 20 vhost 10 chains 10 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-10c1n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-20vhost-10chain-10vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-10ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..ec2c0aada8
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 10R1C | 10VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 20 vhost 10 chains 10 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-10c1n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${10} | nf_nodes=${1}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${10} | nf_nodes=${1} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-10ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr.robot
index ab7bf1e84d..ae78f0b1db 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R6C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R6C | 6VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 12 vhost 1 chain
-| ... | 6 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 12 vhost 1 chain 6 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c6n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-12vhost-1chain-6vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..b6cd526a48
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R6C | 6VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 12 vhost 1 chain 6 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c6n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${6}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${6} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr.robot
index 043a7bda8d..1bff538e49 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R8C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R8C | 8VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 16 vhost
-| ... | 1 chain 8 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 16 vhost 1 chain 8 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c8n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-16vhost-1chain-8vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..8cdff1aa72
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R8C | 8VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 16 vhost 1 chain 8 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c8n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${8}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${8} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr.robot
index fe4ab4c1b9..eda55f4130 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R10C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R10C | 10VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 20 vhost
-| ... | 1 chain 10 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 20 vhost 1 chain 10 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
+| ... | *[Ref] Applicable standard specifications:* RFC2544
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c10n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-20vhost-1chain-10vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1ch-20vh-10vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..934082fb53
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R10C | 10VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 20 vhost 1 chain 10 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c10n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${10}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${10} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1ch-20vh-10vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr.robot
index 0d783c21e2..8200434094 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R1C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R1C | 1VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 2 vhost 1 chain
-| ... | 1 VM*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 2 vhost 1 chain 1 VM*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c1n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-2vhost-1chain-1vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1ch-2vh-1vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..01a992c2dd
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R1C | 1VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 2 vhost 1 chain 1 VM*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c1n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${1}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${1} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1ch-2vh-1vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr.robot
index bc1d408e02..e2b5f3de9f 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R2C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R2C | 2VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 4 vhost 1 chain
-| ... | 2 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 4 vhost 1 chain 2 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c2n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-4vhost-1chain-2vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..6e787a23d9
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R2C | 2VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 4 vhost 1 chain 2 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c2n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${2}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${2} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr.robot
index 53422b9386..857989e6bd 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R4C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R4C | 4VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 8 vhost 1 chains
-| ... | 4 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 8 vhost 1 chains 4 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c4n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-8vhost-1chain-4vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-1ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..2e61dc5be5
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 1R4C | 4VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 8 vhost 1 chains 4 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c4n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${4}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${4} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-1ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr.robot
index bf5461ffa1..0aa8e8923b 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R4C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R4C | 8VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 16 vhost
-| ... | 2 chains 8 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 16 vhost 2 chains 8 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c4n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-16vhost-2chain-8vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-2ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..9de7998ec0
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R4C | 8VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 16 vhost 2 chains 8 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c4n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${2} | nf_nodes=${4}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${2} | nf_nodes=${4} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr.robot
index a2fdc7e80e..3915b39100 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R6C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R6C | 12VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 24 vhost
-| ... | 2 chains 12 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 24 vhost 2 chains 12 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c6n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-24vhost-2chain-12vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-2ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..1f76412b18
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R6C | 12VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 24 vhost 2 chains 12 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c6n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${2} | nf_nodes=${6}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${2} | nf_nodes=${6} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..2d80164991
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R8C | 16VM1T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 32 vhost 2 chains 16 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c8n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${2} | nf_nodes=${8}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${2} | nf_nodes=${8} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-2chain-16vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-32vh-16vm2t-vppip4-ndrpdr.robot
index 2957a7b6fc..0fb2ce1603 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-2chain-16vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-32vh-16vm2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R8C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R8C | 16VM2T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 32 vhost
-| ... | 2 chains 16 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 32 vhost 2 chains 16 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c8n
@@ -86,34 +87,34 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-32vhost-2chain-16vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-32vhost-2chain-16vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc04-1518B-1c-eth-l2bd-32vhost-2chain-16vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-32vhost-2chain-16vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc07-9000B-1c-eth-l2bd-32vhost-2chain-16vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-32vhost-2chain-16vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc10-IMIX-1c-eth-l2bd-32vhost-2chain-16vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-32vhost-2chain-16vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr.robot
index 69d2a61173..5257ff08b5 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R1C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R1C | 2VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 4 vhost 2 chains
-| ... | 2 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 4 vhost 2 chains 2 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c1n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-4vhost-2chain-2vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-2ch-4vh-2vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..b9c6dd7537
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R1C | 2VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 4 vhost 2 chains 2 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c1n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${2} | nf_nodes=${1}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${2} | nf_nodes=${1} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2ch-4vh-2vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr.robot
index 16d88fc5f5..9a035a27fc 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R2C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R2C | 4VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 8 vhost 2 chains
-| ... | 2 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 8 vhost 2 chains 4 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c2n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-8vhost-2chain-4vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-2ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..e621e502b9
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 2R2C | 4VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 8 vhost 2 chains 4 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c2n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${2} | nf_nodes=${2}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${2} | nf_nodes=${2} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-2ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr.robot
index 05619e9be7..923af98cf6 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 4R2C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 4R2C | 8VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 16 vhost
-| ... | 4 chains 8 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 16 vhost 4 chains 8 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c2n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-16vhost-4chain-8vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-4ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..c841a90739
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 4R2C | 8VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 16 vhost 4 chains 8 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c2n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${4} | nf_nodes=${2}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${4} | nf_nodes=${2} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-4ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..400bd2274c
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 4R4C | 16VM1T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 32 vhost 4 chains 16 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c4n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${4} | nf_nodes=${4}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${4} | nf_nodes=${4} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-4ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-4chain-16vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-32vh-16vm2t-vppip4-ndrpdr.robot
index 0058e1717e..f6569d5712 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-4chain-16vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-32vh-16vm2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 4R4C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 4R4C | 16VM2T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 32 vhost
-| ... | 4 chains 16 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 32 vhost 4 chains 16 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c4n
@@ -86,34 +87,34 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-32vhost-4chain-16vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-4ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-32vhost-4chain-16vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-4ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc04-1518B-1c-eth-l2bd-32vhost-4chain-16vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-4ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-32vhost-4chain-16vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-4ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc07-9000B-1c-eth-l2bd-32vhost-4chain-16vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-4ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-32vhost-4chain-16vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-4ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc10-IMIX-1c-eth-l2bd-32vhost-4chain-16vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-4ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-32vhost-4chain-16vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-4ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr.robot
index 34460235c5..20d99015ea 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 4R1C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 4R1C | 4VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 8 vhost 4 chains
-| ... | 1 VM*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 8 vhost 4 chains 4 VM*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c1n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-8vhost-4chain-4vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-4ch-8vh-4vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..eb696acc6b
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 4R1C | 4VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 8 vhost 4 chains 4 VM*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c1n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${4} | nf_nodes=${1}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${4} | nf_nodes=${1} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-4ch-8vh-4vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr.robot
index 9fc7c290d7..36e69e6e64 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 6R1C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 6R1C | 6VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 12 vhost
-| ... | 6 chains 6 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 12 vhost 6 chains 6 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-6c1n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-12vhost-6chain-6vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-6ch-12vh-6vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..9e6d7b8cf5
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 6R1C | 6VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 12 vhost 6 chains 6 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-6c1n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${6} | nf_nodes=${1}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${6} | nf_nodes=${1} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-6ch-12vh-6vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr.robot
index 819f5a7a38..00ce5360ff 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 6R2C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 6R2C | 12VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 24 vhost
-| ... | 6 chains 12 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 24 vhost 6 chains 12 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-6c2n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-24vhost-6chain-12vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-6ch-24vh-12vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..2daeae488a
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 6R2C | 12VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 24 vhost 6 chains 12 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-6c2n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${6} | nf_nodes=${2}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${6} | nf_nodes=${2} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-6ch-24vh-12vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr.robot
index 95e0bab017..0459689ea9 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 8R1C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 8R1C | 8VM1T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 16 vhost
-| ... | 8 chains 8 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 16 vhost 8 chains 8 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-8c1n
@@ -86,50 +87,50 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc03-64B-4c-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr
+| tc03-64B-4c-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 64B | 4C
| | frame_size=${64} | phy_cores=${4}
-| tc04-1518B-1c-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc06-1518B-4c-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr
+| tc06-1518B-4c-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 1518B | 4C
| | frame_size=${1518} | phy_cores=${4}
-| tc07-9000B-1c-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc09-9000B-4c-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr
+| tc09-9000B-4c-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | 9000B | 4C
| | frame_size=${9000} | phy_cores=${4}
-| tc10-IMIX-1c-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
-| tc12-IMIX-4c-eth-l2bd-16vhost-8chain-8vm-vppip4-ndrpdr
+| tc12-IMIX-4c-eth-l2bd-8ch-16vh-8vm1t-vppip4-ndrpdr
| | [Tags] | IMIX | 4C
| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..7da25a3ab5
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 8R1C | 8VM2T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 16 vhost 8 chains 8 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-8c1n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${8} | nf_nodes=${1}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${8} | nf_nodes=${1} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-8ch-16vh-8vm2t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr.robot
new file mode 100644
index 0000000000..4bbdacaead
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr.robot
@@ -0,0 +1,136 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+| Resource | resources/libraries/robot/performance/performance_setup.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 8R2C | 16VM1T
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | ${nic_name}
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost
+| ...
+| Test Template | Local Template
+| ...
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 32 vhost 8 chains 16 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
+| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
+| ... | of packets transmitted. NDR and PDR are discovered for different\
+| ... | Ethernet L2 frame sizes using MLRsearch library.\
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+| ${nic_name}= | Intel-X710
+| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${2}
+| ${nf_dtc}= | ${0.5}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-8c2n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
+| | ... | Type: integer, string
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
+| | ...
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${8} | nf_nodes=${2}
+| | And Configure chains of NFs connected via vhost-user
+| | ... | nf_chains=${8} | nf_nodes=${2} | jumbo=${jumbo}
+| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=vpp_chain_ip4
+| | Then Find NDR and PDR intervals using optimized search
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 64B | 4C
+| | frame_size=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 1C
+| | frame_size=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 2C
+| | frame_size=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 1518B | 4C
+| | frame_size=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 1C
+| | frame_size=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 2C
+| | frame_size=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | 9000B | 4C
+| | frame_size=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 1C
+| | frame_size=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 2C
+| | frame_size=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-8ch-32vh-16vm1t-vppip4-ndrpdr
+| | [Tags] | IMIX | 4C
+| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-8chain-16vm-vppip4-ndrpdr.robot b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-8ch-32vh-16vm2t-vppip4-ndrpdr.robot
index ff49c86b33..73fdb5495e 100644
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-8chain-16vm-vppip4-ndrpdr.robot
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/2n-10ge2p1x710-eth-l2bd-8ch-32vh-16vm2t-vppip4-ndrpdr.robot
@@ -16,7 +16,7 @@
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 8R2C
+| ... | VHOST_1024 | NF_DENSITY | NF_VPPIP4 | CHAIN | 8R2C | 16VM2T
| ...
| Suite Setup | Set up 2-node performance topology with DUT's NIC model
| ... | L3 | ${nic_name}
@@ -27,33 +27,34 @@
| ...
| Test Template | Local Template
| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 32 vhost
-| ... | 8 chains 16 VMs*
+| Documentation
+| ... | *RFC2544: Pkt throughput L2BD test cases with 32 vhost 8 chains 16 VMs*
| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running VPP IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-\
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via\
+| ... | vhost-user interfaces. Guest is running VPP IPv4 interconnecting \
+| ... | vhost-user interfaces, rxd/txd=1024. DUT1 is tested with ${nic_name}.
| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
| ... | of packets transmitted. NDR and PDR are discovered for different\
| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on
-| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
-| ... | (flow-group per direction, 254 flows per flow-group) with all packets
-| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static
-| ... | payload. MAC addresses are matching MAC addresses of NFs nodes
+| ... | Test packets are generated by TG on\
+| ... | links to DUTs. TG traffic profile contains two L3 flow-groups\
+| ... | (flow-group per direction, 254 flows per flow-group) with all packets\
+| ... | containing Ethernet header, IPv4 header with IP protocol=61 and static\
+| ... | payload. MAC addresses are matching MAC addresses of NFs nodes\
| ... | interfaces.
| ... | *[Ref] Applicable standard specifications:* RFC2544.
*** Variables ***
| ${nic_name}= | Intel-X710
| ${overhead}= | ${0}
+| ${nf_dtcr}= | ${1}
+| ${nf_dtc}= | ${1}
# Traffic profile:
| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-8c2n
@@ -86,34 +87,34 @@
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-32vhost-8chain-16vm-vppip4-ndrpdr
+| tc01-64B-1c-eth-l2bd-8ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 64B | 1C
| | frame_size=${64} | phy_cores=${1}
-| tc02-64B-2c-eth-l2bd-32vhost-8chain-16vm-vppip4-ndrpdr
+| tc02-64B-2c-eth-l2bd-8ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 64B | 2C
| | frame_size=${64} | phy_cores=${2}
-| tc04-1518B-1c-eth-l2bd-32vhost-8chain-16vm-vppip4-ndrpdr
+| tc04-1518B-1c-eth-l2bd-8ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 1518B | 1C
| | frame_size=${1518} | phy_cores=${1}
-| tc05-1518B-2c-eth-l2bd-32vhost-8chain-16vm-vppip4-ndrpdr
+| tc05-1518B-2c-eth-l2bd-8ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 1518B | 2C
| | frame_size=${1518} | phy_cores=${2}
-| tc07-9000B-1c-eth-l2bd-32vhost-8chain-16vm-vppip4-ndrpdr
+| tc07-9000B-1c-eth-l2bd-8ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 9000B | 1C
| | frame_size=${9000} | phy_cores=${1}
-| tc08-9000B-2c-eth-l2bd-32vhost-8chain-16vm-vppip4-ndrpdr
+| tc08-9000B-2c-eth-l2bd-8ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | 9000B | 2C
| | frame_size=${9000} | phy_cores=${2}
-| tc10-IMIX-1c-eth-l2bd-32vhost-8chain-16vm-vppip4-ndrpdr
+| tc10-IMIX-1c-eth-l2bd-8ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | IMIX | 1C
| | frame_size=IMIX_v4_1 | phy_cores=${1}
-| tc11-IMIX-2c-eth-l2bd-32vhost-8chain-16vm-vppip4-ndrpdr
+| tc11-IMIX-2c-eth-l2bd-8ch-32vh-16vm2t-vppip4-ndrpdr
| | [Tags] | IMIX | 2C
| | frame_size=IMIX_v4_1 | phy_cores=${2}
diff --git a/tests/vpp/perf/nfv_density/vm_vhost/chain/regenerate_testcases.py b/tests/vpp/perf/nfv_density/vm_vhost/chain/regenerate_testcases.py
new file mode 100755
index 0000000000..2632018a80
--- /dev/null
+++ b/tests/vpp/perf/nfv_density/vm_vhost/chain/regenerate_testcases.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from resources.libraries.python.autogen.Regenerator import Regenerator
+
+Regenerator().regenerate_glob("*.robot")
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 141783d863..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 1R6C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 12 vhost 1 chain
-| ... | 6 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c6n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${1} | nf_nodes=${6}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${1} | nf_nodes=${6} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-12vhost-1chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 8b039b1e6a..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 6R1C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 12 vhost
-| ... | 6 chains 6 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-6c1n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${6} | nf_nodes=${1}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${6} | nf_nodes=${1} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-12vhost-6chain-6vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 5d6cf6e767..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 1R8C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 16 vhost 1 chain
-| ... | 8 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c1n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${1} | nf_nodes=${8}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${1} | nf_nodes=${8} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-16vhost-1chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 56ad479f3d..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 2R4C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 16 vhost
-| ... | 2 chains 8 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c4n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${2} | nf_nodes=${4}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${2} | nf_nodes=${4} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-16vhost-2chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index b03de7067b..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 4R2C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 16 vhost
-| ... | 4 chains 2 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c2n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${4} | nf_nodes=${2}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${4} | nf_nodes=${2} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-16vhost-4chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 3d062f4515..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 8R1C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 16 vhost
-| ... | 8 chains 8 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-8c1n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${8} | nf_nodes=${1}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${8} | nf_nodes=${1} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-16vhost-8chain-8vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 0b7592874b..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 10R1C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 20 vhost
-| ... | 10 chains 10 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-10c1n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${10} | nf_nodes=${1}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${10} | nf_nodes=${1} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-20vhost-10chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 95450da7c1..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 1R10C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 20 vhost 1 chain
-| ... | 10 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c10n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${1} | nf_nodes=${10}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${1} | nf_nodes=${10} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-20vhost-1chain-10vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index f6a0b8d67a..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 2R6C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 24 vhost
-| ... | 6 chains 12 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c6n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${2} | nf_nodes=${6}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${2} | nf_nodes=${6} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-24vhost-2chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 61d67ea019..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 6R2C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 24 vhost
-| ... | 6 chains 12 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-6c2n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${6} | nf_nodes=${2}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${6} | nf_nodes=${2} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-24vhost-6chain-12vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 04989d34c4..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 1R1C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 2 vhost 1 chain
-| ... | 1 VM*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c1n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${1} | nf_nodes=${1}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${1} | nf_nodes=${1} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-2vhost-1chain-1vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-2chain-16vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-2chain-16vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 70dacd184f..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-2chain-16vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 2R8C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 32 vhost
-| ... | 2 chains 16 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c8n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${2} | nf_nodes=${8}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${2} | nf_nodes=${8} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-32vhost-2chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-32vhost-2chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc04-1518B-1c-eth-l2bd-32vhost-2chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-32vhost-2chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc07-9000B-1c-eth-l2bd-32vhost-2chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-32vhost-2chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc10-IMIX-1c-eth-l2bd-32vhost-2chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-32vhost-2chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-4chain-16vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-4chain-16vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 7ba1b63950..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-4chain-16vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 4R4C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 32 vhost
-| ... | 4 chains 16 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c4n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${4} | nf_nodes=${4}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${4} | nf_nodes=${4} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-32vhost-4chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-32vhost-4chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc04-1518B-1c-eth-l2bd-32vhost-4chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-32vhost-4chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc07-9000B-1c-eth-l2bd-32vhost-4chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-32vhost-4chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc10-IMIX-1c-eth-l2bd-32vhost-4chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-32vhost-4chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-8chain-16vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-8chain-16vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 5229f22b84..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-32vhost-8chain-16vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 8R2C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 32 vhost
-| ... | 8 chains 16 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-8c2n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${8} | nf_nodes=${2}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${8} | nf_nodes=${2} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-32vhost-8chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-32vhost-8chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc04-1518B-1c-eth-l2bd-32vhost-8chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-32vhost-8chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc07-9000B-1c-eth-l2bd-32vhost-8chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-32vhost-8chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc10-IMIX-1c-eth-l2bd-32vhost-8chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-32vhost-8chain-16vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 36851a3dbf..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 1R2C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 4 vhost 1 chain
-| ... | 2 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c2n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${1} | nf_nodes=${2}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${1} | nf_nodes=${2} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-4vhost-1chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 261ccbe712..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 2R1C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 4 vhost 2 chains
-| ... | 2 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c1n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${2} | nf_nodes=${1}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${2} | nf_nodes=${1} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-4vhost-2chain-2vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 875070281f..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 1R4C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 8 vhost 1 chain
-| ... | 4 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c4n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${1} | nf_nodes=${4}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${1} | nf_nodes=${4} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-8vhost-1chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index dd6c0bac43..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 2R2C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 8 vhost 2 chains
-| ... | 4 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c2n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${2} | nf_nodes=${2}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${2} | nf_nodes=${2} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-8vhost-2chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr.robot
deleted file mode 100644
index 1871530717..0000000000
--- a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr.robot
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2019 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-*** Settings ***
-| Resource | resources/libraries/robot/performance/performance_setup.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM
-| ... | VHOST_1024 | NF_DENSITY | NF_L3FWDIP4 | CHAIN | 4R1C
-| ...
-| Suite Setup | Set up 2-node performance topology with DUT's NIC model
-| ... | L3 | ${nic_name}
-| Suite Teardown | Tear down 2-node performance topology
-| ...
-| Test Setup | Set up performance test
-| Test Teardown | Tear down performance test with vhost
-| ...
-| Test Template | Local Template
-| ...
-| Documentation | *RFC2544: Pkt throughput L2BD test cases with 8 vhost 4 chains
-| ... | 4 VMs*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
-| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
-| ... | vhost-user interfaces. Guest is running DPDK l3fwd IPv4
-| ... | interconnecting vhost-user interfaces, forwarding mode is
-| ... | set to io, rxd/txd=1024. DUT1 is tested with ${nic_name}.\
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
-| ... | addresses of the TG node interfaces.
-| ... | *[Ref] Applicable standard specifications:* RFC2544.
-
-*** Variables ***
-| ${nic_name}= | Intel-X710
-| ${overhead}= | ${0}
-# Traffic profile:
-| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-4c1n
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | [Cfg] DUT runs L2BD switching config.
-| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
-| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
-| | ...
-| | ... | *Arguments:*
-| | ... | - frame_size - Framesize in Bytes in integer or string (IMIX_v4_1).
-| | ... | Type: integer, string
-| | ... | - phy_cores - Number of physical cores. Type: integer
-| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
-| | ...
-| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
-| | ...
-| | Set Test Variable | \${frame_size}
-| | ...
-| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
-| | And Add PCI devices to all DUTs
-| | Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains for multiple chains with Vhost-User
-| | ... | nf_chains=${4} | nf_nodes=${1}
-| | And Configure chains of NFs connected via vhost-user
-| | ... | nf_chains=${4} | nf_nodes=${1} | jumbo=${jumbo}
-| | ... | use_tuned_cfs=${False} | auto_scale=${False} | vnf=testpmd_mac
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| tc01-64B-1c-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| tc02-64B-2c-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| tc03-64B-4c-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| tc04-1518B-1c-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| tc05-1518B-2c-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| tc06-1518B-4c-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| tc07-9000B-1c-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| tc08-9000B-2c-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| tc09-9000B-4c-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| tc10-IMIX-1c-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| tc11-IMIX-2c-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| tc12-IMIX-4c-eth-l2bd-8vhost-4chain-4vm-l3fwdip4-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}