aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--resources/libraries/robot/shared/default.robot22
-rw-r--r--tests/vpp/device/__init__.robot2
-rw-r--r--tests/vpp/device/container_memif/eth2p-ethicmpv4-ip4base-eth-2memif-1dcr-dev.robot (renamed from tests/vpp/device/container_memif/eth2p-ethip4-ip4base-eth-2memif-1dcr-dev.robot)27
-rw-r--r--tests/vpp/device/container_memif/eth2p-ethicmpv4-l2bdbasemaclrn-eth-2memif-1dcr-dev.robot (renamed from tests/vpp/device/container_memif/eth2p-eth-l2bdbasemaclrn-eth-2memif-1dcr-dev.robot)50
-rw-r--r--tests/vpp/device/container_memif/eth2p-ethicmpv4-l2xcbase-eth-2memif-1dcr-dev.robot (renamed from tests/vpp/device/container_memif/eth2p-eth-l2xcbase-eth-2memif-1dcr-dev.robot)50
-rw-r--r--tests/vpp/device/container_memif/eth2p-ethicmpv6-ip6base-eth-2memif-1dcr-dev.robot (renamed from tests/vpp/device/container_memif/eth2p-ethip6-ip6base-eth-2memif-1dcr-dev.robot)27
-rw-r--r--tests/vpp/device/crypto/eth2p-ethip4ipsec1tnlsw-ip4base-policy-aes-128-cbc-sha-512-256-dev.robot (renamed from tests/vpp/device/crypto/eth2p-ethip4ipsectnl-ip4base-dev.robot)63
-rw-r--r--tests/vpp/device/crypto/eth2p-ethip4ipsec1tptsw-ip4base-policy-aes-128-cbc-sha-512-256-dev.robot (renamed from tests/vpp/device/crypto/eth2p-ethip4ipsectpt-ip4base-dev.robot)61
-rw-r--r--tests/vpp/device/crypto/eth2p-ethip6ipsec1tnlsw-ip6base-policy-aes-128-cbc-sha-512-256-dev.robot (renamed from tests/vpp/device/crypto/eth2p-ethip6ipsectnl-ip6base-dev.robot)63
-rw-r--r--tests/vpp/device/crypto/eth2p-ethip6ipsec1tptsw-ip6base-policy-aes-128-cbc-sha-512-256-dev.robot (renamed from tests/vpp/device/crypto/eth2p-ethip6ipsectpt-ip6base-dev.robot)60
-rw-r--r--tests/vpp/device/interfaces/eth2p-ethicmpv4-ip4base-eth-1tap-dev.robot95
-rw-r--r--tests/vpp/device/interfaces/eth2p-ethicmpv4-ip4base-eth-1tap-namespace-dev.robot (renamed from tests/vpp/device/interfaces/eth2p-ethip4-ip4base-eth-1tap-dev.robot)62
-rw-r--r--tests/vpp/device/interfaces/eth2p-ethicmpv4-l2bdbasemaclrn-eth-2tap-dev.robot (renamed from tests/vpp/device/interfaces/eth2p-eth-l2bdbasemaclrn-eth-2tap-dev.robot)29
-rw-r--r--tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-dut-egress-dev.robot71
-rw-r--r--tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-dut-ingress-dev.robot71
-rw-r--r--tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-tg-ingress-dev.robot72
-rw-r--r--tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-tg-ingress-for-remote-host-dev.robot73
-rw-r--r--tests/vpp/device/ip4/eth2p-ethip4-ip4base-dev.robot112
-rw-r--r--tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-dut-egress-dev.robot71
-rw-r--r--tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-dut-ingress-dev.robot71
-rw-r--r--tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-tg-ingress-dev.robot72
-rw-r--r--tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-tg-ingress-remote-host-dev.robot73
-rw-r--r--tests/vpp/device/ip6/eth2p-ethip6-ip6base-dev.robot112
-rw-r--r--tests/vpp/device/l2bd/eth2p-ethicmpv4-l2bdbasemaclrn-dev.robot (renamed from tests/vpp/device/l2bd/eth2p-eth-l2bdbasemaclrn-dev.robot)48
-rw-r--r--tests/vpp/device/l2xc/eth2p-ethicmpv4-l2xcbase-dev.robot (renamed from tests/vpp/device/l2xc/eth2p-ethicmp-l2xcbase-dev.robot)49
25 files changed, 961 insertions, 545 deletions
diff --git a/resources/libraries/robot/shared/default.robot b/resources/libraries/robot/shared/default.robot
index 86e124ad62..57ee1797af 100644
--- a/resources/libraries/robot/shared/default.robot
+++ b/resources/libraries/robot/shared/default.robot
@@ -160,7 +160,8 @@
| | | ${cpu_main}= | Cpu list per node str | ${nodes['${dut}']} | ${numa}
| | | ... | 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}
+| | | ${cpu_wt}= | Run keyword if | ${cpu_count_int} > 0 |
+| | | ... | Cpu list per node str | ${nodes['${dut}']} | ${numa}
| | | ... | skip_cnt=${skip_cnt} | cpu_cnt=${cpu_count_int}
| | | ... | smt_used=${smt_used}
| | | ${thr_count_int}= | Run keyword if | ${smt_used}
@@ -172,9 +173,12 @@
| | | ${rxq_count_int}= | Run keyword if | ${rxq_count_int} == 0
| | | ... | Set variable | ${1}
| | | ... | ELSE | Set variable | ${rxq_count_int}
-| | | Run keyword | ${dut}.Add CPU Main Core | ${cpu_main}
-| | | Run keyword | ${dut}.Add CPU Corelist Workers | ${cpu_wt}
-| | | Run keyword | ${dut}.Add DPDK Dev Default RXQ | ${rxq_count_int}
+| | | Run keyword if | ${cpu_count_int} > 0
+| | | ... | ${dut}.Add CPU Main Core | ${cpu_main}
+| | | Run keyword if | ${cpu_count_int} > 0
+| | | ... | ${dut}.Add CPU Corelist Workers | ${cpu_wt}
+| | | Run keyword
+| | | ... | ${dut}.Add DPDK Dev Default RXQ | ${rxq_count_int}
# For now there is no way to easily predict the number of buffers. Statically
# doing maximum amount of buffers allowed by DPDK.
| | | Run keyword if | ${smt_used}
@@ -431,11 +435,21 @@
| | [Documentation] | Write VPP startup configuration and restart VPP on all
| | ... | DUTs.
| | ...
+| | ... | *Arguments:*
+| | ... | - with_trace - Enable packet trace after VPP restart Type: boolean
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Apply startup configuration on all VPP DUTs \| False \|
+| | ...
+| | [Arguments] | ${with_trace}=${False}
+| | ...
| | :FOR | ${dut} | IN | @{duts}
| | | Run keyword | ${dut}.Apply Config
| | Save VPP PIDs
| | Enable Coredump Limit VPP on All DUTs | ${nodes}
| | Update All Interface Data On All Nodes | ${nodes} | skip_tg=${True}
+| | Run keyword If | ${with_trace} | VPP Enable Traces On All Duts | ${nodes}
| Save VPP PIDs
| | [Documentation] | Get PIDs of VPP processes from all DUTs in topology and\
diff --git a/tests/vpp/device/__init__.robot b/tests/vpp/device/__init__.robot
index 595f27097e..69883ea469 100644
--- a/tests/vpp/device/__init__.robot
+++ b/tests/vpp/device/__init__.robot
@@ -25,7 +25,7 @@
| ... | AND | Verify Vpp On All Duts | ${nodes}
| ... | AND | Get CPU Layout from all nodes | ${nodes}
| ... | AND | Update All Interface Data On All Nodes | ${nodes}
-| ... | skip_tg_udev=${True}
+| ... | skip_tg_udev=${True} | numa_node=${True}
| ...
| Suite Teardown | Cleanup Framework | ${nodes}
diff --git a/tests/vpp/device/container_memif/eth2p-ethip4-ip4base-eth-2memif-1dcr-dev.robot b/tests/vpp/device/container_memif/eth2p-ethicmpv4-ip4base-eth-2memif-1dcr-dev.robot
index 7f67fca434..a90f1efad6 100644
--- a/tests/vpp/device/container_memif/eth2p-ethip4-ip4base-eth-2memif-1dcr-dev.robot
+++ b/tests/vpp/device/container_memif/eth2p-ethicmpv4-ip4base-eth-2memif-1dcr-dev.robot
@@ -21,6 +21,8 @@
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | container
| ...
+| Test Template | Local Template
+| ...
| Documentation | *IPv4 routing test cases with memif interface*
| ...
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
@@ -45,23 +47,34 @@
| ${container_engine}= | Docker
| ${container_chain_topology}= | chain_functional
-*** Test Cases ***
-| tc01-eth2p-ethip4-ip4base-eth-2memif-1dcr-dev
+*** Keywords ***
+| Local Template
| | [Documentation]
| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
| | ... | of its interfaces to be routed by DUT to and from docker; verify\
| | ... | all packets are received.
| | ...
-| | Set Test Variable | ${frame_size} | ${42}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - 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}
| | ...
-| | Given Add PCI devices to all DUTs
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
| | When Start containers for test | auto_scale=${False} | pinning=${False}
| | And Initialize IPv4 routing with memif pairs
| | Then Send packet and verify headers
| | ... | ${tg} | 10.10.10.1 | 20.20.20.1
| | ... | ${tg_if1} | ${tg_if1_mac} | ${dut1_if1_mac}
| | ... | ${tg_if2} | ${dut1_if2_mac} | ${tg_if2_mac}
+
+*** Test Cases ***
+| tc01-64B-eth2p-ethicmpv4-ip4base-eth-2memif-1dcr-dev
+| | [Tags] | 64B
+| | frame_size=${64} | phy_cores=${0}
diff --git a/tests/vpp/device/container_memif/eth2p-eth-l2bdbasemaclrn-eth-2memif-1dcr-dev.robot b/tests/vpp/device/container_memif/eth2p-ethicmpv4-l2bdbasemaclrn-eth-2memif-1dcr-dev.robot
index 62ca150935..ea60fee6d2 100644
--- a/tests/vpp/device/container_memif/eth2p-eth-l2bdbasemaclrn-eth-2memif-1dcr-dev.robot
+++ b/tests/vpp/device/container_memif/eth2p-ethicmpv4-l2bdbasemaclrn-eth-2memif-1dcr-dev.robot
@@ -21,19 +21,20 @@
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | container
| ...
+| Test Template | Local Template
+| ...
| Documentation | *L2 bridge-domain test cases with memif interface*
| ...
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of \
-| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply to all \
-| ... | links.
+| ... | IPv4. Both apply to all links.
| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-domain \
| ... | switching. Container is connected to VPP via Memif interface. \
| ... | Container is running same VPP version as running on DUT.
-| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets \
+| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets \
| ... | are sent in both directions by TG on links to DUT1 and via container; \
-| ... | on receive TG verifies packets for correctness and their IPv4 (IPv6) \
+| ... | on receive TG verifies packets for correctness and their IPv4 \
| ... | src-addr, dst-addr and MAC addresses.
| ... | *[Ref] Applicable standard specifications:* RFC792
@@ -45,39 +46,32 @@
| ${container_engine}= | Docker
| ${container_chain_topology}= | chain_functional
-*** Test Cases ***
-| tc01-eth2p-ethip4-l2bdbase-eth-2memif-1dcr-dev
+*** Keywords ***
+| Local Template
| | [Documentation]
| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
| | ... | of its interfaces to be switched by DUT to and from docker; verify\
| | ... | all packets are received.
| | ...
-| | Set Test Variable | ${frame_size} | ${42}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Start containers for test | auto_scale=${False} | pinning=${False}
-| | And Initialize L2 Bridge Domain with memif pairs | auto_scale=${False}
-| | Then Send ICMPv4 bidirectionally and verify received packets
-| | ... | ${tg} | ${tg_if1} | ${tg_if2}
-
-| tc02-eth2p-ethip6-l2bdbase-eth-2memif-1dcr-dev
-| | [Documentation]
-| | ... | [Ver] Make TG send ICMPv6 Echo Reqs in both directions between two\
-| | ... | of its interfaces to be switched by DUT to and from docker; verify\
-| | ... | all packets are received.
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| | ...
-| | Set Test Variable | ${frame_size} | ${62}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | Set Test Variable | \${frame_size}
| | ...
-| | Given Add PCI devices to all DUTs
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
| | When Start containers for test | auto_scale=${False} | pinning=${False}
| | And Initialize L2 Bridge Domain with memif pairs | auto_scale=${False}
-| | Then Send ICMPv6 bidirectionally and verify received packets
+| | Then Send ICMPv4 bidirectionally and verify received packets
| | ... | ${tg} | ${tg_if1} | ${tg_if2}
+
+*** Test Cases ***
+| tc01-64B-eth2p-ethicmpv4-l2bdbasemaclrn-eth-2memif-1dcr-dev
+| | [Tags] | 64B
+| | frame_size=${64} | phy_cores=${0}
diff --git a/tests/vpp/device/container_memif/eth2p-eth-l2xcbase-eth-2memif-1dcr-dev.robot b/tests/vpp/device/container_memif/eth2p-ethicmpv4-l2xcbase-eth-2memif-1dcr-dev.robot
index 7596f96ff2..1f33992afa 100644
--- a/tests/vpp/device/container_memif/eth2p-eth-l2xcbase-eth-2memif-1dcr-dev.robot
+++ b/tests/vpp/device/container_memif/eth2p-ethicmpv4-l2xcbase-eth-2memif-1dcr-dev.robot
@@ -21,18 +21,19 @@
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | container
| ...
+| Test Template | Local Template
+| ...
| Documentation | *L2 cross-connect test cases with memif interface*
| ...
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
| ... | single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of \
-| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of IPv4.
| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect \
| ... | (L2XC) switching. Container is connected to VPP via Memif interface. \
| ... | Container is running same VPP version as running on DUT.
-| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets \
+| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets \
| ... | are sent in both directions by TG on links to DUT1 and via container; \
-| ... | on receive TG verifies packets for correctness and their IPv4 (IPv6) \
+| ... | on receive TG verifies packets for correctness and their IPv4 \
| ... | src-addr, dst-addr and MAC addresses.
| ... | *[Ref] Applicable standard specifications:* RFC792
@@ -44,39 +45,32 @@
| ${container_engine}= | Docker
| ${container_chain_topology}= | chain_functional
-*** Test Cases ***
-| tc01-eth2p-ethip4-l2xcbase-eth-2memif-1dcr-dev
+*** Keywords ***
+| Local Template
| | [Documentation]
| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
| | ... | of its interfaces to be switched by DUT to and from docker; verify\
| | ... | all packets are received.
| | ...
-| | Set Test Variable | ${frame_size} | ${42}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Start containers for test | auto_scale=${False} | pinning=${False}
-| | And Initialize L2 xconnect with memif pairs
-| | Then Send ICMPv4 bidirectionally and verify received packets
-| | ... | ${tg} | ${tg_if1} | ${tg_if2}
-
-| tc02-eth2p-ethip6-l2xcbase-eth-2memif-1dcr-dev
-| | [Documentation]
-| | ... | [Ver] Make TG send ICMPv6 Echo Reqs in both directions between two\
-| | ... | of its interfaces to be switched by DUT to and from docker; verify\
-| | ... | all packets are received.
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| | ...
-| | Set Test Variable | ${frame_size} | ${62}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | Set Test Variable | \${frame_size}
| | ...
-| | Given Add PCI devices to all DUTs
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
| | When Start containers for test | auto_scale=${False} | pinning=${False}
| | And Initialize L2 xconnect with memif pairs
-| | Then Send ICMPv6 bidirectionally and verify received packets
+| | Then Send ICMPv4 bidirectionally and verify received packets
| | ... | ${tg} | ${tg_if1} | ${tg_if2}
+
+*** Test Cases ***
+| tc01-64B-eth2p-ethicmpv4-l2xcbase-eth-2memif-1dcr-dev
+| | [Tags] | 64B
+| | frame_size=${64} | phy_cores=${0}
diff --git a/tests/vpp/device/container_memif/eth2p-ethip6-ip6base-eth-2memif-1dcr-dev.robot b/tests/vpp/device/container_memif/eth2p-ethicmpv6-ip6base-eth-2memif-1dcr-dev.robot
index a645a58792..69b8ee0db6 100644
--- a/tests/vpp/device/container_memif/eth2p-ethip6-ip6base-eth-2memif-1dcr-dev.robot
+++ b/tests/vpp/device/container_memif/eth2p-ethicmpv6-ip6base-eth-2memif-1dcr-dev.robot
@@ -21,6 +21,8 @@
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace | container
| ...
+| Test Template | Local Template
+| ...
| Documentation | *IPv4 routing test cases with memif interface*
| ...
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with \
@@ -45,20 +47,26 @@
| ${container_engine}= | Docker
| ${container_chain_topology}= | chain_functional
-*** Test Cases ***
-| tc01-eth2p-ethip6-ip6base-eth-2memif-1dcr-dev
+*** Keywords ***
+| Local Template
| | [Documentation]
| | ... | [Ver] Make TG send ICMPv6 Echo Reqs in both directions between two\
| | ... | of its interfaces to be routed by DUT to and from docker; verify\
| | ... | all packets are received.
| | ...
-| | Set Test Variable | ${frame_size} | ${62}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - 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}
| | ...
-| | Given Add PCI devices to all DUTs
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
| | When Start containers for test | auto_scale=${False} | pinning=${False}
| | And Set interfaces in path up
| | And Set up memif interfaces on DUT node
@@ -94,3 +102,8 @@
| | ... | ${tg} | 2001:1::1 | 2001:3::2
| | ... | ${tg_if1} | ${tg_if1_mac} | ${dut1_if1_mac}
| | ... | ${tg_if2} | ${dut1_if2_mac} | ${tg_if2_mac}
+
+*** Test Cases ***
+| tc01-78B-eth2p-ethicmpv6-ip6base-eth-2memif-1dcr-dev
+| | [Tags] | 78B
+| | frame_size=${78} | phy_cores=${0}
diff --git a/tests/vpp/device/crypto/eth2p-ethip4ipsectnl-ip4base-dev.robot b/tests/vpp/device/crypto/eth2p-ethip4ipsec1tnlsw-ip4base-policy-aes-128-cbc-sha-512-256-dev.robot
index bf5db490b4..b06b3c507a 100644
--- a/tests/vpp/device/crypto/eth2p-ethip4ipsectnl-ip4base-dev.robot
+++ b/tests/vpp/device/crypto/eth2p-ethip4ipsec1tnlsw-ip4base-policy-aes-128-cbc-sha-512-256-dev.robot
@@ -15,12 +15,15 @@
| Resource | resources/libraries/robot/shared/default.robot
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
-| ... | NIC_Virtual | IP4FWD | IPSEC | IPSEC_TNL | IP4BASE
+| ... | NIC_Virtual | IP4FWD | IPSEC | IPSECSW | IPSECTUN | IP4BASE
+| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES
| ...
| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace
| ...
+| Test Template | Local Template
+| ...
| Documentation | *IPv4 IPsec tunnel mode test suite.*
| ...
| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\
@@ -36,7 +39,7 @@
| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${nic_name}= | virtual
-| ${overhead}= | ${58}
+| ${overhead}= | ${54}
| ${tg_spi}= | ${1000}
| ${dut_spi}= | ${1001}
| ${ESP_PROTO}= | ${50}
@@ -46,50 +49,31 @@
| ${dut_lo_ip4}= | 192.168.4.4
| ${ip4_plen}= | ${24}
-*** Test Cases ***
-| tc01-eth2p-ethip4ipsectnl-ip4base-dev-aes-128-cbc-sha-256-128
+*** Keywords ***
+| Local Template
| | [Documentation]
| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
-| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in tunnel\
+| | ... | algorithm AES_128_CBC and integrity algorithm HMAC_SHA_512 in tunnel\
| | ... | mode.
| | ...
-| | Set Test Variable | ${frame_size} | ${106}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure topology for IPv4 IPsec testing
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 256 128
-| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
-| | And Configure manual keyed connection for IPSec
-| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
-| | ... | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
-| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
-| | ... | ${dut_tun_ip}
-
-| tc02-eth2p-ethip4ipsectnl-ip4base-dev-aes-128-cbc-sha-512-256
-| | [Documentation]
-| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
-| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in tunnel\
-| | ... | mode.
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| | ...
-| | Set Test Variable | ${frame_size} | ${106}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | Set Test Variable | \${frame_size}
| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure topology for IPv4 IPsec testing
+| | # These are enums (not strings) so they cannot be in Variables table.
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA 512 256
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
+| | When Configure topology for IPv4 IPsec testing
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Configure manual keyed connection for IPSec
| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
@@ -100,3 +84,8 @@
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
| | ... | ${dut_tun_ip}
+
+*** Test Cases ***
+| tc01-110B-eth2p-ethip4ipsec1tnlsw-ip4base-policy-aes-128-cbc-sha-512-256-dev
+| | [Tags] | 110B
+| | frame_size=${110} | phy_cores=${0}
diff --git a/tests/vpp/device/crypto/eth2p-ethip4ipsectpt-ip4base-dev.robot b/tests/vpp/device/crypto/eth2p-ethip4ipsec1tptsw-ip4base-policy-aes-128-cbc-sha-512-256-dev.robot
index 5cf0df6355..5097437069 100644
--- a/tests/vpp/device/crypto/eth2p-ethip4ipsectpt-ip4base-dev.robot
+++ b/tests/vpp/device/crypto/eth2p-ethip4ipsec1tptsw-ip4base-policy-aes-128-cbc-sha-512-256-dev.robot
@@ -15,12 +15,15 @@
| Resource | resources/libraries/robot/shared/default.robot
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
-| ... | NIC_Virtual | IP4FWD | IPSEC | IPSEC_TPT | IP4BASE
+| ... | NIC_Virtual | IP4FWD | IPSEC | IPSECSW | IPSECTPT | IP4BASE
+| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES
| ...
| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace
| ...
+| Test Template | Local Template
+| ...
| Documentation | *IPv4 IPsec transport mode test suite.*
| ...
| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\
@@ -36,7 +39,7 @@
| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${nic_name}= | virtual
-| ${overhead}= | ${58}
+| ${overhead}= | ${54}
| ${tg_spi}= | ${1000}
| ${dut_spi}= | ${1001}
| ${ESP_PROTO}= | ${50}
@@ -46,48 +49,31 @@
| ${dut_lo_ip4}= | 192.168.4.4
| ${ip4_plen}= | ${24}
-*** Test Cases ***
-| tc01-eth2p-ethip4ipsectpt-ip4base-dev-aes-128-cbc-sha-256-128
+*** Keywords ***
+| Local Template
| | [Documentation]
| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
-| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in\
+| | ... | algorithm AES_128_CBC and integrity algorithm HMAC_SHA_512 in\
| | ... | transport mode.
| | ...
-| | Set Test Variable | ${frame_size} | ${90}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure topology for IPv4 IPsec testing
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 256 128
-| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
-| | And Configure manual keyed connection for IPSec
-| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
-| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
-
-| tc02-eth2p-ethip4ipsectpt-ip4base-dev-aes-128-cbc-sha-512-256
-| | [Documentation]
-| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
-| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in\
-| | ... | transport mode.
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| | ...
-| | Set Test Variable | ${frame_size} | ${90}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | Set Test Variable | \${frame_size}
| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure topology for IPv4 IPsec testing
+| | # These are enums (not strings) so they cannot be in Variables table.
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA 512 256
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
+| | When Configure topology for IPv4 IPsec testing
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Configure manual keyed connection for IPSec
| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
@@ -96,3 +82,8 @@
| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
+
+*** Test Cases ***
+| tc01-110B-eth2p-ethip4ipsec1tptsw-ip4base-policy-aes-128-cbc-sha-512-256-dev
+| | [Tags] | 110B
+| | frame_size=${110} | phy_cores=${0}
diff --git a/tests/vpp/device/crypto/eth2p-ethip6ipsectnl-ip6base-dev.robot b/tests/vpp/device/crypto/eth2p-ethip6ipsec1tnlsw-ip6base-policy-aes-128-cbc-sha-512-256-dev.robot
index b8c5ed5bb5..cb96f52923 100644
--- a/tests/vpp/device/crypto/eth2p-ethip6ipsectnl-ip6base-dev.robot
+++ b/tests/vpp/device/crypto/eth2p-ethip6ipsec1tnlsw-ip6base-policy-aes-128-cbc-sha-512-256-dev.robot
@@ -15,12 +15,15 @@
| Resource | resources/libraries/robot/shared/default.robot
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
-| ... | NIC_Virtual | IP6FWD | IPSEC | IPSEC_TNL | IP6BASE
+| ... | NIC_Virtual | IP6FWD | IPSEC | IPSECSW | IPSECTUN | IP6BASE
+| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES
| ...
| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace
| ...
+| Test Template | Local Template
+| ...
| Documentation | *IPv6 IPsec tunnel mode test suite.*
| ...
| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\
@@ -36,7 +39,7 @@
| @{plugins_to_enable}= | dpdk_plugin.so | crypto_ia32_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${nic_name}= | virtual
-| ${overhead}= | ${58}
+| ${overhead}= | ${54}
| ${tg_spi}= | ${1000}
| ${dut_spi}= | ${1001}
| ${ESP_PROTO}= | ${50}
@@ -47,50 +50,31 @@
| ${ip6_plen}= | ${64}
| ${ip6_plen_rt}= | ${128}
-*** Test Cases ***
-| tc01-eth2p-ethip6ipsectnl-ip6base-dev-aes-128-cbc-sha-256-128
+*** Keywords ***
+| Local Template
| | [Documentation]
| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
-| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in tunnel\
+| | ... | algorithm AES_128_CBC and integrity algorithm HMAC_SHA_512 in tunnel\
| | ... | mode.
| | ...
-| | Set Test Variable | ${frame_size} | ${158}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure topology for IPv6 IPsec testing
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 256 128
-| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
-| | And Configure manual keyed connection for IPSec
-| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_src_ip} | ${tg_src_ip}
-| | ... | ${dut_tun_ip} | ${tg_tun_ip} | is_ipv6=${TRUE}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
-| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
-| | ... | ${dut_tun_ip}
-
-| tc02-eth2p-ethip6ipsectnl-ip6base-dev-aes-128-cbc-sha-512-256
-| | [Documentation]
-| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
-| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in tunnel\
-| | ... | mode.
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| | ...
-| | Set Test Variable | ${frame_size} | ${158}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | Set Test Variable | \${frame_size}
| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure topology for IPv6 IPsec testing
+| | # These are enums (not strings) so they cannot be in Variables table.
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA 512 256
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
+| | When Configure topology for IPv6 IPsec testing
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Configure manual keyed connection for IPSec
| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
@@ -101,3 +85,8 @@
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
| | ... | ${dut_spi} | ${tg_src_ip} | ${dut_src_ip} | ${tg_tun_ip}
| | ... | ${dut_tun_ip}
+
+*** Test Cases ***
+| tc01-124B-eth2p-ethip6ipsec1tnlsw-ip6base-policy-aes-128-cbc-sha-512-256-dev
+| | [Tags] | 124B
+| | frame_size=${124} | phy_cores=${0}
diff --git a/tests/vpp/device/crypto/eth2p-ethip6ipsectpt-ip6base-dev.robot b/tests/vpp/device/crypto/eth2p-ethip6ipsec1tptsw-ip6base-policy-aes-128-cbc-sha-512-256-dev.robot
index dd5537016a..11a7b0bc5d 100644
--- a/tests/vpp/device/crypto/eth2p-ethip6ipsectpt-ip6base-dev.robot
+++ b/tests/vpp/device/crypto/eth2p-ethip6ipsec1tptsw-ip6base-policy-aes-128-cbc-sha-512-256-dev.robot
@@ -15,12 +15,15 @@
| Resource | resources/libraries/robot/shared/default.robot
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
-| ... | NIC_Virtual | IP6FWD | IPSEC | IPSEC_TPT | IP6BASE
+| ... | NIC_Virtual | IP6FWD | IPSEC | IPSECSW | IPSECTPT | IP6BASE
+| ... | AES_128_CBC | HMAC_SHA_512 | HMAC | AES
| ...
| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace
| ...
+| Test Template | Local Template
+| ...
| Documentation | *IPv6 IPsec transport mode test suite.*
| ...
| ... | *[Top] Network topologies:* TG-DUT1 2-node topology with one link\
@@ -47,49 +50,31 @@
| ${ip6_plen}= | ${64}
| ${ip6_plen_rt}= | ${128}
-*** Test Cases ***
-| tc01-eth2p-ethip6ipsectpt-ip6base-dev-aes-128-cbc-sha-256-128
+*** Keywords ***
+| Local Template
| | [Documentation]
| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
-| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-256-128 in\
+| | ... | algorithm AES_128_CBC and integrity algorithm HMAC_SHA_512 in\
| | ... | transport mode.
| | ...
-| | Set Test Variable | ${frame_size} | ${174}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure topology for IPv6 IPsec testing
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 256 128
-| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
-| | And Configure manual keyed connection for IPSec
-| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
-| | ... | ${auth_key} | ${dut_spi} | ${tg_spi} | ${dut_tun_ip} | ${tg_tun_ip}
-| | ... | is_ipv6=${TRUE}
-| | Then Send IPsec Packet and verify ESP encapsulation in received packet
-| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
-| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
-| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
-
-| tc02-eth2p-ethip6ipsectpt-ip6base-dev-aes-128-cbc-sha-512-256
-| | [Documentation]
-| | ... | [Cfg] On DUT1 configure IPsec manual keyed connection with encryption\
-| | ... | algorithm AES-CBC-128 and integrity algorithm SHA-512-256 in\
-| | ... | transport mode.
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| | ...
-| | Set Test Variable | ${frame_size} | ${174}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | Set Test Variable | \${frame_size}
| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Configure topology for IPv6 IPsec testing
+| | # These are enums (not strings) so they cannot be in Variables table.
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA 512 256
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | And Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
+| | When Configure topology for IPv6 IPsec testing
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Configure manual keyed connection for IPSec
| | ... | ${dut1} | ${dut1_if1} | ${encr_alg} | ${encr_key} | ${auth_alg}
@@ -99,3 +84,8 @@
| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key} | ${tg_spi}
| | ... | ${dut_spi} | ${tg_tun_ip} | ${dut_tun_ip}
+
+*** Test Cases ***
+| tc01-124B-eth2p-ethip6ipsectpt-ip6base-policy-aes-128-cbc-sha-512-256-dev
+| | [Tags] | 124B
+| | frame_size=${124} | phy_cores=${0}
diff --git a/tests/vpp/device/interfaces/eth2p-ethicmpv4-ip4base-eth-1tap-dev.robot b/tests/vpp/device/interfaces/eth2p-ethicmpv4-ip4base-eth-1tap-dev.robot
new file mode 100644
index 0000000000..066821c276
--- /dev/null
+++ b/tests/vpp/device/interfaces/eth2p-ethicmpv4-ip4base-eth-1tap-dev.robot
@@ -0,0 +1,95 @@
+# 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/shared/default.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | IP4FWD | BASE | IP4BASE | 1TAP
+| ...
+| Suite Setup | Setup suite single link | scapy
+| Test Setup | Setup test | namespace
+| Test Teardown | Tear down test | packet_trace | namespace
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Tap Interface Traffic Tests*
+| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links
+| ... | between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of
+| ... | IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2
+| ... | bridge-domain (L2BD) MAC learning enabled; Split Horizon Groups (SHG)
+| ... | are set depending on test case; Namespaces (NM)
+| ... | are set on DUT1 with attached linux-TAP.
+| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets
+| ... | are sent by TG on link to DUT1; On receipt TG verifies packets
+| ... | for correctness and their IPv4 src-addr, dst-addr, and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:*
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${nic_name}= | virtual
+| ${overhead}= | ${0}
+| ${tap1_VPP_ip}= | 16.0.10.1
+| ${tap1_NM_ip}= | 16.0.10.2
+| ${tap1_NM_mac}= | 02:00:00:00:00:02
+| ${dut_ip_address}= | 192.168.0.1
+| ${tg_ip_address}= | 192.168.0.2
+| ${tg_ip_address_GW}= | 192.168.0.0
+| ${prefix}= | 24
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which\
+| | ... | one is TAP interface (dut_to_tg_if and TAP) and one is linux-TAP.
+| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is\
+| | ... | received on TG.
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - 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
+| | And Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
+| | When Set interfaces in path up
+| | ${int1}= | And Add Tap Interface | ${dut1} | tap0
+| | And VPP Interface Set IP Address
+| | ... | ${dut1} | ${int1} | ${tap1_VPP_ip} | ${prefix}
+| | And VPP Interface Set IP Address
+| | ... | ${dut1} | ${dut1_if1} | ${dut_ip_address} | ${prefix}
+| | And Set Interface State | ${dut1} | ${int1} | up
+| | And Set Linux Interface MAC | ${dut1} | tap0 | ${tap1_NM_mac}
+| | And Set Linux Interface IP | ${dut1} | tap0 | ${tap1_NM_ip} | ${prefix}
+| | And Add Linux Route
+| | ... | ${dut1} | ${tg_ip_address_GW} | ${prefix} | ${tap1_VPP_ip}
+| | And VPP Add IP Neighbor
+| | ... | ${dut1} | ${dut1_if1} | ${tg_ip_address} | ${tg_if1_mac}
+| | And VPP Add IP Neighbor
+| | ... | ${dut1} | ${int1} | ${tap1_NM_ip} | ${tap1_NM_mac}
+| | Then Send ICMP echo request and verify answer
+| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac} | ${tg_if1_mac}
+| | ... | ${tap1_NM_ip} | ${tg_ip_address}
+
+*** Test Cases ***
+| tc01-64B-eth2p-ethicmpv4-ip4base-eth-1tap-dev
+| | [Tags] | 64B
+| | frame_size=${64} | phy_cores=${0}
diff --git a/tests/vpp/device/interfaces/eth2p-ethip4-ip4base-eth-1tap-dev.robot b/tests/vpp/device/interfaces/eth2p-ethicmpv4-ip4base-eth-1tap-namespace-dev.robot
index 4d7f189da4..b0cacd1f24 100644
--- a/tests/vpp/device/interfaces/eth2p-ethip4-ip4base-eth-1tap-dev.robot
+++ b/tests/vpp/device/interfaces/eth2p-ethicmpv4-ip4base-eth-1tap-namespace-dev.robot
@@ -15,12 +15,14 @@
| Resource | resources/libraries/robot/shared/default.robot
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
-| ... | NIC_Virtual | ETH | IP4FWD | BASE | IP4BASE | TAP
+| ... | NIC_Virtual | ETH | IP4FWD | BASE | IP4BASE | 1TAP | NAMESPACE
| ...
| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test | namespace
| Test Teardown | Tear down test | packet_trace | namespace
| ...
+| Test Template | Local Template
+| ...
| Documentation | *Tap Interface Traffic Tests*
| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links
| ... | between nodes.
@@ -47,41 +49,8 @@
| ${tg_ip_address_GW}= | 192.168.0.0
| ${prefix}= | 24
-*** Test Cases ***
-| tc01-eth2p-ethicmpv4-ip4base-dev_tap-no-namespace
-| | [Documentation]
-| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which\
-| | ... | one is TAP interface (dut_to_tg_if and TAP) and one is linux-TAP.
-| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is\
-| | ... | received on TG.
-| | ...
-| | Set Test Variable | ${frame_size} | ${42}
-| | Set Test Variable | ${rxq_count_int} | ${1}
-| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Set interfaces in path up
-| | ${int1}= | And Add Tap Interface | ${dut1} | tap0
-| | And VPP Interface Set IP Address
-| | ... | ${dut1} | ${int1} | ${tap1_VPP_ip} | ${prefix}
-| | And VPP Interface Set IP Address
-| | ... | ${dut1} | ${dut1_if1} | ${dut_ip_address} | ${prefix}
-| | And Set Interface State | ${dut1} | ${int1} | up
-| | And Set Linux Interface MAC | ${dut1} | tap0 | ${tap1_NM_mac}
-| | And Set Linux Interface IP | ${dut1} | tap0 | ${tap1_NM_ip} | ${prefix}
-| | And Add Linux Route
-| | ... | ${dut1} | ${tg_ip_address_GW} | ${prefix} | ${tap1_VPP_ip}
-| | And VPP Add IP Neighbor
-| | ... | ${dut1} | ${dut1_if1} | ${tg_ip_address} | ${tg_if1_mac}
-| | And VPP Add IP Neighbor
-| | ... | ${dut1} | ${int1} | ${tap1_NM_ip} | ${tap1_NM_mac}
-| | Then Send ICMP echo request and verify answer
-| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac} | ${tg_if1_mac}
-| | ... | ${tap1_NM_ip} | ${tg_ip_address}
-
-| tc02-eth2p-ethicmpv4-ip4base-dev_tap-namespace
+*** Keywords ***
+| Local Template
| | [Documentation]
| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which\
| | ... | one is TAP interface (dut_to_tg_if and TAP) and one is linux-TAP in\
@@ -89,13 +58,19 @@
| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is\
| | ... | received on TG.
| | ...
-| | Set Test Variable | ${frame_size} | ${42}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - 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}
| | ...
-| | Given Add PCI devices to all DUTs
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
| | When Set interfaces in path up
| | ${int1}= | And Add Tap Interface | ${dut1} | tap0
| | And VPP Interface Set IP Address
@@ -118,3 +93,8 @@
| | Then Send ICMP echo request and verify answer
| | ... | ${tg} | ${tg_if1} | ${dut1_if1_mac} | ${tg_if1_mac}
| | ... | ${tap1_NM_ip} | ${tg_ip_address}
+
+*** Test Cases ***
+| tc01-64B-eth2p-ethicmpv4-ip4base-eth-1tap-namespace-dev
+| | [Tags] | 64B
+| | frame_size=${64} | phy_cores=${0}
diff --git a/tests/vpp/device/interfaces/eth2p-eth-l2bdbasemaclrn-eth-2tap-dev.robot b/tests/vpp/device/interfaces/eth2p-ethicmpv4-l2bdbasemaclrn-eth-2tap-dev.robot
index 3e7fd03e89..0c97d983bc 100644
--- a/tests/vpp/device/interfaces/eth2p-eth-l2bdbasemaclrn-eth-2tap-dev.robot
+++ b/tests/vpp/device/interfaces/eth2p-ethicmpv4-l2bdbasemaclrn-eth-2tap-dev.robot
@@ -15,12 +15,14 @@
| Resource | resources/libraries/robot/shared/default.robot
| ...
| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
-| ... | NIC_Virtual | ETH | L2BD | BASE | TAP
+| ... | NIC_Virtual | ETH | L2BD | BASE | 2TAP
| ...
| Suite Setup | Setup suite single link | scapy
| Test Setup | Setup test | namespace
| Test Teardown | Tear down test | packet_trace | namespace | linux_bridge
| ...
+| Test Template | Local Template
+| ...
| Documentation | *Tap Interface Traffic Tests*
| ...
| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links
@@ -42,19 +44,25 @@
| ${overhead}= | ${0}
| ${bid_TAP}= | tapBr
-*** Test Cases ***
-| tc01-eth2p-ethicmpv4-l2bdbasemaclrn-eth-2tap-dev_tap-simple-bd
+*** Keywords ***
+| Local Template
| | [Documentation]
| | ... | [Ver] Packet sent from TG is passed through all L2BD and received\
| | ... | back on TG. Then src_ip, dst_ip and MAC are checked.
| | ...
-| | Set Test Variable | ${frame_size} | ${42}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - 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}
| | ...
-| | Given Add PCI devices to all DUTs
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
| | When Set interfaces in path up
| | ${int1}= | And Add Tap Interface | ${dut1} | tap0
| | ${int2}= | And Add Tap Interface | ${dut1} | tap1
@@ -69,3 +77,8 @@
| | And Add interface to bridge domain | ${dut1} | ${dut1_if2} | 19 | 0
| | Then Send ICMP packet and verify received packet
| | ... | ${tg} | ${tg_if1} | ${tg_if2}
+
+*** Test Cases ***
+| tc01-eth2p-ethicmpv4-l2bdbasemaclrn-eth-2tap-dev
+| | [Tags] | 64B
+| | frame_size=${64} | phy_cores=${0}
diff --git a/tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-dut-egress-dev.robot b/tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-dut-egress-dev.robot
new file mode 100644
index 0000000000..4f2484c93e
--- /dev/null
+++ b/tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-dut-egress-dev.robot
@@ -0,0 +1,71 @@
+# 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/shared/default.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | IP4FWD | BASE | IP4BASE
+| ...
+| Suite Setup | Setup suite single link | scapy
+| Test Setup | Setup test
+| Test Teardown | Tear down test | packet_trace
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for IPv4 routing on \
+| ... | both links.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and \
+| ... | two static IPv4 /24 route entries.
+| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in \
+| ... | one direction by TG on links to DUT1; on receive TG verifies packets \
+| ... | for correctness and their IPv4 src-addr, dst-addr and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC791, RFC826, RFC792
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${nic_name}= | virtual
+| ${overhead}= | ${0}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Ver] Make TG send ICMPv4 Echo Req towards DUT1 egress interface.\
+| | ... | Make TG verify ICMP Echo Reply is correct.
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - 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
+| | And Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
+| | When Initialize IPv4 forwarding in circular topology
+| | Then Send IPv4 ping packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if2}
+| | ... | 10.10.10.2 | 20.20.20.1 | ${dut1_if1_mac} | ${0}
+
+*** Test Cases ***
+| tc01-64B-eth2p-ethicmpv4-ip4base-dut-egress-dev
+| | [Tags] | 64B
+| | frame_size=${64} | phy_cores=${0}
diff --git a/tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-dut-ingress-dev.robot b/tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-dut-ingress-dev.robot
new file mode 100644
index 0000000000..8bccc20372
--- /dev/null
+++ b/tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-dut-ingress-dev.robot
@@ -0,0 +1,71 @@
+# 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/shared/default.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | IP4FWD | BASE | IP4BASE
+| ...
+| Suite Setup | Setup suite single link | scapy
+| Test Setup | Setup test
+| Test Teardown | Tear down test | packet_trace
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for IPv4 routing on \
+| ... | both links.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and \
+| ... | two static IPv4 /24 route entries.
+| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in \
+| ... | one direction by TG on links to DUT1; on receive TG verifies packets \
+| ... | for correctness and their IPv4 src-addr, dst-addr and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC791, RFC826, RFC792
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${nic_name}= | virtual
+| ${overhead}= | ${0}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Ver] Make TG send ICMPv4 Echo Req to DUT1 ingress interface.\
+| | ... | Make TG verify ICMP Echo Reply is correct.
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - 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
+| | And Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
+| | When Initialize IPv4 forwarding in circular topology
+| | Then Send IPv4 ping packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if1}
+| | ... | 10.10.10.2 | 10.10.10.1 | ${dut1_if1_mac} | ${0}
+
+*** Test Cases ***
+| tc01-64B-eth2p-ethicmpv4-ip4base-dut-ingress-dev
+| | [Tags] | 64B
+| | frame_size=${64} | phy_cores=${0}
diff --git a/tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-tg-ingress-dev.robot b/tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-tg-ingress-dev.robot
new file mode 100644
index 0000000000..cc7ce61075
--- /dev/null
+++ b/tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-tg-ingress-dev.robot
@@ -0,0 +1,72 @@
+# 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/shared/default.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | IP4FWD | BASE | IP4BASE
+| ...
+| Suite Setup | Setup suite single link | scapy
+| Test Setup | Setup test
+| Test Teardown | Tear down test | packet_trace
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for IPv4 routing on \
+| ... | both links.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and \
+| ... | two static IPv4 /24 route entries.
+| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in \
+| ... | one direction by TG on links to DUT1; on receive TG verifies packets \
+| ... | for correctness and their IPv4 src-addr, dst-addr and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC791, RFC826, RFC792
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${nic_name}= | virtual
+| ${overhead}= | ${0}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Ver] Make TG send ICMPv4 Echo Req between its interfaces across DUT1\
+| | ... | for locally connected IPv4 addresses. Make TG verify ICMPv4 Echo\
+| | ... | Replies are correct.
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - 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
+| | And Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
+| | When Initialize IPv4 forwarding in circular topology
+| | Then Send IPv4 ping packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
+| | ... | 10.10.10.2 | 20.20.20.2 | ${dut1_if1_mac} | ${1}
+
+*** Test Cases ***
+| tc01-64B-eth2p-ethicmpv4-ip4base-tg-ingress-dev
+| | [Tags] | 64B
+| | frame_size=${64} | phy_cores=${0}
diff --git a/tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-tg-ingress-for-remote-host-dev.robot b/tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-tg-ingress-for-remote-host-dev.robot
new file mode 100644
index 0000000000..334db8359a
--- /dev/null
+++ b/tests/vpp/device/ip4/eth2p-ethicmpv4-ip4base-tg-ingress-for-remote-host-dev.robot
@@ -0,0 +1,73 @@
+# 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/shared/default.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | IP4FWD | BASE | IP4BASE
+| ...
+| Suite Setup | Setup suite single link | scapy
+| Test Setup | Setup test
+| Test Teardown | Tear down test | packet_trace
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv4 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for IPv4 routing on \
+| ... | both links.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and \
+| ... | two static IPv4 /24 route entries.
+| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in \
+| ... | one direction by TG on links to DUT1; on receive TG verifies packets \
+| ... | for correctness and their IPv4 src-addr, dst-addr and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC791, RFC826, RFC792
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${nic_name}= | virtual
+| ${overhead}= | ${0}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Ver] Make TG send ICMPv4 Echo Req between its interfaces across DUT1\
+| | ... | for remote host IPv4 addresses. Make TG verify ICMPv4 Echo Replies\
+| | ... | are correct.
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - 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
+| | And Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
+| | When Initialize IPv4 forwarding in circular topology
+| | ... | remote_host1_ip=192.168.0.1 | remote_host2_ip=192.168.0.2
+| | Then Send IPv4 ping packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
+| | ... | 192.168.0.1 | 192.168.0.2 | ${dut1_if1_mac} | ${1}
+
+*** Test Cases ***
+| tc01-64B-eth2p-ethicmpv4-ip4base-tg-ingress-for-remote-host-dev
+| | [Tags] | 64B
+| | frame_size=${64} | phy_cores=${0}
diff --git a/tests/vpp/device/ip4/eth2p-ethip4-ip4base-dev.robot b/tests/vpp/device/ip4/eth2p-ethip4-ip4base-dev.robot
deleted file mode 100644
index f9b6ebf314..0000000000
--- a/tests/vpp/device/ip4/eth2p-ethip4-ip4base-dev.robot
+++ /dev/null
@@ -1,112 +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/shared/default.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
-| ... | NIC_Virtual | ETH | IP4FWD | BASE | IP4BASE
-| ...
-| Suite Setup | Setup suite single link | scapy
-| Test Setup | Setup test
-| Test Teardown | Tear down test | packet_trace
-| ...
-| Documentation | *IPv4 routing test cases*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for IPv4 routing on \
-| ... | both links.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and \
-| ... | two static IPv4 /24 route entries.
-| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent in \
-| ... | one direction by TG on links to DUT1; on receive TG verifies packets \
-| ... | for correctness and their IPv4 src-addr, dst-addr and MAC addresses.
-| ... | *[Ref] Applicable standard specifications:* RFC791, RFC826, RFC792
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so
-| ${nic_name}= | virtual
-| ${overhead}= | ${0}
-
-*** Test Cases ***
-| tc01-eth2p-ethicmpv4-ip4base-dev_echo-req-to-dut-ingress-interface
-| | [Documentation]
-| | ... | [Ver] Make TG send ICMPv4 Echo Req to DUT1 ingress interface.\
-| | ... | Make TG verify ICMP Echo Reply is correct.
-| | ...
-| | Set Test Variable | ${frame_size} | ${42}
-| | Set Test Variable | ${rxq_count_int} | ${1}
-| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Initialize IPv4 forwarding in circular topology
-| | Then Send IPv4 ping packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if1}
-| | ... | 10.10.10.2 | 10.10.10.1 | ${dut1_if1_mac} | ${0}
-
-| tc02-eth2p-ethicmpv4-ip4base-dev_echo-req-to-dut-egress-interface
-| | [Documentation]
-| | ... | [Ver] Make TG send ICMPv4 Echo Req towards DUT1 egress interface.\
-| | ... | Make TG verify ICMP Echo Reply is correct.
-| | ...
-| | Set Test Variable | ${frame_size} | ${42}
-| | Set Test Variable | ${rxq_count_int} | ${1}
-| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Initialize IPv4 forwarding in circular topology
-| | Then Send IPv4 ping packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if2}
-| | ... | 10.10.10.2 | 20.20.20.1 | ${dut1_if1_mac} | ${0}
-
-| tc03-eth2p-ethicmpv4-ip4base-dev_echo-req-to-tg-interface-for-local-ipv4-address
-| | [Documentation]
-| | ... | [Ver] Make TG send ICMPv4 Echo Req between its interfaces across DUT1\
-| | ... | for locally connected IPv4 addresses. Make TG verify ICMPv4 Echo\
-| | ... | Replies are correct.
-| | ...
-| | Set Test Variable | ${frame_size} | ${42}
-| | Set Test Variable | ${rxq_count_int} | ${1}
-| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Initialize IPv4 forwarding in circular topology
-| | Then Send IPv4 ping packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
-| | ... | 10.10.10.2 | 20.20.20.2 | ${dut1_if1_mac} | ${1}
-
-| tc04-eth2p-ethicmpv4-ip4base-dev_echo-req-to-tg-interface-for-remote-host-ipv4-address
-| | [Documentation]
-| | ... | [Ver] Make TG send ICMPv4 Echo Req between its interfaces across DUT1\
-| | ... | for remote host IPv4 addresses. Make TG verify ICMPv4 Echo Replies\
-| | ... | are correct.
-| | ...
-| | Set Test Variable | ${frame_size} | ${42}
-| | Set Test Variable | ${rxq_count_int} | ${1}
-| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Initialize IPv4 forwarding in circular topology
-| | ... | remote_host1_ip=192.168.0.1 | remote_host2_ip=192.168.0.2
-| | Then Send IPv4 ping packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
-| | ... | 192.168.0.1 | 192.168.0.2 | ${dut1_if1_mac} | ${1}
diff --git a/tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-dut-egress-dev.robot b/tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-dut-egress-dev.robot
new file mode 100644
index 0000000000..a82005e22b
--- /dev/null
+++ b/tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-dut-egress-dev.robot
@@ -0,0 +1,71 @@
+# 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/shared/default.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | IP6FWD | BASE | IP6BASE
+| ...
+| Suite Setup | Setup suite single link | scapy
+| Test Setup | Setup test
+| Test Teardown | Tear down test | packet_trace
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv6 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-ICMPv6 for IPv6 routing on \
+| ... | both links.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and \
+| ... | two static IPv6 /64 route entries.
+| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in \
+| ... | one direction by TG on links to DUT1; on receive TG verifies packets \
+| ... | for correctness and their IPv6 src-addr, dst-addr and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC2460, RFC4443, RFC4861
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${nic_name}= | virtual
+| ${overhead}= | ${0}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Ver] Make TG send ICMPv6 Echo Req towards DUT1 egress interface.\
+| | ... | Make TG verify ICMPv6 Echo Reply is correct.
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - 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
+| | And Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
+| | When Initialize IPv6 forwarding in circular topology
+| | Then Send IPv6 echo request packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if2}
+| | ... | 2001:1::2 | 2001:2::1 | ${dut1_if1_mac} | ${0}
+
+*** Test Cases ***
+| tc01-78B-eth2p-ethicmpv6-ip6base-dut-egress-dev
+| | [Tags] | 78B
+| | frame_size=${78} | phy_cores=${0}
diff --git a/tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-dut-ingress-dev.robot b/tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-dut-ingress-dev.robot
new file mode 100644
index 0000000000..ab1fefca80
--- /dev/null
+++ b/tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-dut-ingress-dev.robot
@@ -0,0 +1,71 @@
+# 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/shared/default.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | IP6FWD | BASE | IP6BASE
+| ...
+| Suite Setup | Setup suite single link | scapy
+| Test Setup | Setup test
+| Test Teardown | Tear down test | packet_trace
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv6 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-ICMPv6 for IPv6 routing on \
+| ... | both links.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and \
+| ... | two static IPv6 /64 route entries.
+| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in \
+| ... | one direction by TG on links to DUT1; on receive TG verifies packets \
+| ... | for correctness and their IPv6 src-addr, dst-addr and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC2460, RFC4443, RFC4861
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${nic_name}= | virtual
+| ${overhead}= | ${0}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Ver ]Make TG send ICMPv6 Echo Req to DUT1 ingress interface.\
+| | ... | Make TG verify ICMPv6 Echo Reply is correct.
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - 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
+| | And Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
+| | When Initialize IPv6 forwarding in circular topology
+| | Then Send IPv6 echo request packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if1}
+| | ... | 2001:1::2 | 2001:1::1 | ${dut1_if1_mac} | ${0}
+
+*** Test Cases ***
+| tc01-78B-eth2p-ethicmpv6-ip6base-dut-ingress-dev
+| | [Tags] | 78B
+| | frame_size=${78} | phy_cores=${0}
diff --git a/tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-tg-ingress-dev.robot b/tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-tg-ingress-dev.robot
new file mode 100644
index 0000000000..4c3180289f
--- /dev/null
+++ b/tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-tg-ingress-dev.robot
@@ -0,0 +1,72 @@
+# 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/shared/default.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | IP6FWD | BASE | IP6BASE
+| ...
+| Suite Setup | Setup suite single link | scapy
+| Test Setup | Setup test
+| Test Teardown | Tear down test | packet_trace
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv6 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-ICMPv6 for IPv6 routing on \
+| ... | both links.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and \
+| ... | two static IPv6 /64 route entries.
+| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in \
+| ... | one direction by TG on links to DUT1; on receive TG verifies packets \
+| ... | for correctness and their IPv6 src-addr, dst-addr and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC2460, RFC4443, RFC4861
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${nic_name}= | virtual
+| ${overhead}= | ${0}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across DUT1\
+| | ... | for locally connected IPv6 addresses. Make TG verify ICMPv6 Echo\
+| | ... | Replies are correct.
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - 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
+| | And Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
+| | When Initialize IPv6 forwarding in circular topology
+| | Then Send IPv6 echo request packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
+| | ... | 2001:1::2 | 2001:2::2 | ${dut1_if1_mac} | ${1} | ${dut1_if2_mac}
+
+*** Test Cases ***
+| tc01-78B-eth2p-ethicmpv6-ip6base-tg-ingress-dev
+| | [Tags] | 78B
+| | frame_size=${78} | phy_cores=${0}
diff --git a/tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-tg-ingress-remote-host-dev.robot b/tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-tg-ingress-remote-host-dev.robot
new file mode 100644
index 0000000000..33c1191475
--- /dev/null
+++ b/tests/vpp/device/ip6/eth2p-ethicmpv6-ip6base-tg-ingress-remote-host-dev.robot
@@ -0,0 +1,73 @@
+# 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/shared/default.robot
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
+| ... | NIC_Virtual | ETH | IP6FWD | BASE | IP6BASE
+| ...
+| Suite Setup | Setup suite single link | scapy
+| Test Setup | Setup test
+| Test Teardown | Tear down test | packet_trace
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *IPv6 routing test cases*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-ICMPv6 for IPv6 routing on \
+| ... | both links.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and \
+| ... | two static IPv6 /64 route entries.
+| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in \
+| ... | one direction by TG on links to DUT1; on receive TG verifies packets \
+| ... | for correctness and their IPv6 src-addr, dst-addr and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC2460, RFC4443, RFC4861
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so
+| ${nic_name}= | virtual
+| ${overhead}= | ${0}
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across DUT1\
+| | ... | for remote host IPv6 addresses. Make TG verify ICMPv6 Echo Replies\
+| | ... | are correct.
+| | ...
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - 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
+| | And Set Max Rate And Jumbo And Handle Multi Seg
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
+| | When Initialize IPv6 forwarding in circular topology
+| | ... | remote_host1_ip=3ffe:5f::1 | remote_host2_ip=3ffe:5f::2
+| | Then Send IPv6 echo request packet and verify headers
+| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
+| | ... | 3ffe:5f::1 | 3ffe:5f::2 | ${dut1_if1_mac} | ${1} | ${dut1_if2_mac}
+
+*** Test Cases ***
+| tc01-78B-eth2p-ethicmpv6-ip6base-tg-ingress-remote-host-dev
+| | [Tags] | 78B
+| | frame_size=${78} | phy_cores=${0}
diff --git a/tests/vpp/device/ip6/eth2p-ethip6-ip6base-dev.robot b/tests/vpp/device/ip6/eth2p-ethip6-ip6base-dev.robot
deleted file mode 100644
index 2dda6e054c..0000000000
--- a/tests/vpp/device/ip6/eth2p-ethip6-ip6base-dev.robot
+++ /dev/null
@@ -1,112 +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/shared/default.robot
-| ...
-| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY
-| ... | NIC_Virtual | ETH | IP6FWD | BASE | IP6BASE
-| ...
-| Suite Setup | Setup suite single link | scapy
-| Test Setup | Setup test
-| Test Teardown | Tear down test | packet_trace
-| ...
-| Documentation | *IPv6 routing test cases*
-| ...
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv6-ICMPv6 for IPv6 routing on \
-| ... | both links.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and \
-| ... | two static IPv6 /64 route entries.
-| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent in \
-| ... | one direction by TG on links to DUT1; on receive TG verifies packets \
-| ... | for correctness and their IPv6 src-addr, dst-addr and MAC addresses.
-| ... | *[Ref] Applicable standard specifications:* RFC2460, RFC4443, RFC4861
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so
-| ${nic_name}= | virtual
-| ${overhead}= | ${0}
-
-*** Test Cases ***
-| tc01-eth2p-ethicmpv6-ip6base-dev_echo-req-to-dut-ingress-interface
-| | [Documentation]
-| | ... | [Ver ]Make TG send ICMPv6 Echo Req to DUT1 ingress interface.\
-| | ... | Make TG verify ICMPv6 Echo Reply is correct.
-| | ...
-| | Set Test Variable | ${frame_size} | ${62}
-| | Set Test Variable | ${rxq_count_int} | ${1}
-| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Initialize IPv6 forwarding in circular topology
-| | Then Send IPv6 echo request packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if1}
-| | ... | 2001:1::2 | 2001:1::1 | ${dut1_if1_mac} | ${0}
-
-| tc02-eth2p-ethicmpv6-ip6base-dev_echo-req-to-dut-egress-interface
-| | [Documentation]
-| | ... | [Ver] Make TG send ICMPv6 Echo Req towards DUT1 egress interface.\
-| | ... | Make TG verify ICMPv6 Echo Reply is correct.
-| | ...
-| | Set Test Variable | ${frame_size} | ${62}
-| | Set Test Variable | ${rxq_count_int} | ${1}
-| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Initialize IPv6 forwarding in circular topology
-| | Then Send IPv6 echo request packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${dut1} | ${dut1_if2}
-| | ... | 2001:1::2 | 2001:2::1 | ${dut1_if1_mac} | ${0}
-
-| tc03-eth2p-ethicmpv6-ip6base-dev_echo-req-to-tg-interface-for-local-ipv4-address
-| | [Documentation]
-| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across DUT1\
-| | ... | for locally connected IPv6 addresses. Make TG verify ICMPv6 Echo\
-| | ... | Replies are correct.
-| | ...
-| | Set Test Variable | ${frame_size} | ${62}
-| | Set Test Variable | ${rxq_count_int} | ${1}
-| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Initialize IPv6 forwarding in circular topology
-| | Then Send IPv6 echo request packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
-| | ... | 2001:1::2 | 2001:2::2 | ${dut1_if1_mac} | ${1} | ${dut1_if2_mac}
-
-| tc04-eth2p-ethicmpv6-ip6base-dev_echo-req-to-tg-interface-for-remote-host-ipv4-address
-| | [Documentation]
-| | ... | [Ver] Make TG send ICMPv6 Echo Req between its interfaces across DUT1\
-| | ... | for remote host IPv6 addresses. Make TG verify ICMPv6 Echo Replies\
-| | ... | are correct.
-| | ...
-| | Set Test Variable | ${frame_size} | ${62}
-| | Set Test Variable | ${rxq_count_int} | ${1}
-| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Initialize IPv6 forwarding in circular topology
-| | ... | remote_host1_ip=3ffe:5f::1 | remote_host2_ip=3ffe:5f::2
-| | Then Send IPv6 echo request packet and verify headers
-| | ... | ${tg} | ${tg_if1} | ${tg} | ${tg_if2}
-| | ... | 3ffe:5f::1 | 3ffe:5f::2 | ${dut1_if1_mac} | ${1} | ${dut1_if2_mac}
diff --git a/tests/vpp/device/l2bd/eth2p-eth-l2bdbasemaclrn-dev.robot b/tests/vpp/device/l2bd/eth2p-ethicmpv4-l2bdbasemaclrn-dev.robot
index 3e1cee067f..1a39881077 100644
--- a/tests/vpp/device/l2bd/eth2p-eth-l2bdbasemaclrn-dev.robot
+++ b/tests/vpp/device/l2bd/eth2p-ethicmpv4-l2bdbasemaclrn-dev.robot
@@ -21,18 +21,19 @@
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace
| ...
+| Test Template | Local Template
+| ...
| Documentation | *L2 bridge-domain test cases*
| ...
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of \
-| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply to all \
-| ... | links.
+| ... | IPv4. Both apply to all links.
| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-domain \
| ... | switching.
-| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets \
+| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets \
| ... | are sent in both directions by TG on links to DUT1; on receive TG \
-| ... | verifies packets for correctness and their IPv4 (IPv6) src-addr, \
+| ... | verifies packets for correctness and their IPv4 src-addr, \
| ... | dst-addr and MAC addresses.
| ... | *[Ref] Applicable standard specifications:* RFC792
@@ -41,36 +42,31 @@
| ${nic_name}= | virtual
| ${overhead}= | ${0}
-*** Test Cases ***
-| tc01-eth2p-ethicmpv4-l2bdbase-dev
+*** Keywords ***
+| Local Template
| | [Documentation]
| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
| | ... | of its interfaces to be switched by DUT to and from docker; verify\
| | ... | all packets are received.
| | ...
-| | Set Test Variable | ${frame_size} | ${42}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - 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}
| | ...
-| | Given Add PCI devices to all DUTs
+| | Set Test Variable | \${frame_size}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
| | When Initialize L2 bridge domain in circular topology
| | Then Send ICMPv4 bidirectionally and verify received packets
| | ... | ${tg} | ${tg_if1} | ${tg_if2}
-| tc02-eth2p-ethicmpv6-l2bdbase-dev
-| | [Documentation]
-| | ... | [Ver] Make TG send ICMPv6 Echo Reqs in both directions between two\
-| | ... | of its interfaces to be switched by DUT to and from docker; verify\
-| | ... | all packets are received.
-| | ...
-| | Set Test Variable | ${frame_size} | ${62}
-| | Set Test Variable | ${rxq_count_int} | ${1}
-| | ...
-| | Given Add PCI devices to all DUTs
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Initialize L2 bridge domain in circular topology
-| | Then Send ICMPv6 bidirectionally and verify received packets
-| | ... | ${tg} | ${tg_if1} | ${tg_if2}
+*** Test Cases ***
+| tc01-eth2p-ethicmpv4-l2bdbasemaclrn-dev
+| | [Tags] | 64B
+| | frame_size=${64} | phy_cores=${0}
diff --git a/tests/vpp/device/l2xc/eth2p-ethicmp-l2xcbase-dev.robot b/tests/vpp/device/l2xc/eth2p-ethicmpv4-l2xcbase-dev.robot
index 31407d2ce2..24aaee8065 100644
--- a/tests/vpp/device/l2xc/eth2p-ethicmp-l2xcbase-dev.robot
+++ b/tests/vpp/device/l2xc/eth2p-ethicmpv4-l2xcbase-dev.robot
@@ -21,18 +21,19 @@
| Test Setup | Setup test
| Test Teardown | Tear down test | packet_trace
| ...
+| Test Template | Local Template
+| ...
| Documentation | *L2 cross-connect test cases*
| ...
| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology \
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of \
-| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply to all \
-| ... | links.
+| ... | IPv4. Both apply to all links.
| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect \
| ... | switching.
-| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets \
+| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets \
| ... | are sent in both directions by TG on links to DUT1; on receive TG \
-| ... | verifies packets for correctness and their IPv4 (IPv6) src-addr, \
+| ... | verifies packets for correctness and their IPv4 src-addr, \
| ... | dst-addr and MAC addresses.
| ... | *[Ref] Applicable standard specifications:* RFC792
@@ -41,37 +42,31 @@
| ${nic_name}= | virtual
| ${overhead}= | ${0}
-*** Test Cases ***
-| tc01-eth2p-ethicmpv4-l2xcbase-dev
+*** Keywords ***
+| Local Template
| | [Documentation]
| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\
| | ... | of its interfaces to be switched by DUT to and from docker; verify\
| | ... | all packets are received.
| | ...
-| | Set Test Variable | ${frame_size} | ${42}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | ... | *Arguments:*
+| | ... | - frame_size - Framesize in Bytes in integer. Type: integer
+| | ... | - phy_cores - Number of physical cores. Type: integer
+| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer
| | ...
-| | Given Add PCI devices to all DUTs
-| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
-| | When Initialize L2 xconnect in 2-node circular topology
-| | Then Send ICMPv4 bidirectionally and verify received packets
-| | ... | ${tg} | ${tg_if1} | ${tg_if2}
-
-| tc02-eth2p-ethicmpv6-l2xcbase-dev
-| | [Documentation]
-| | ... | [Ver] Make TG send ICMPv6 Echo Reqs in both directions between two\
-| | ... | of its interfaces to be switched by DUT to and from docker; verify\
-| | ... | all packets are received.
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
| | ...
-| | Set Test Variable | ${frame_size} | ${62}
-| | Set Test Variable | ${rxq_count_int} | ${1}
+| | Set Test Variable | \${frame_size}
| | ...
-| | Given Add PCI devices to all DUTs
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
| | And Set Max Rate And Jumbo And Handle Multi Seg
-| | And Apply startup configuration on all VPP DUTs
-| | And VPP Enable Traces On All Duts | ${nodes}
+| | And Apply startup configuration on all VPP DUTs | with_trace=${True}
| | When Initialize L2 xconnect in 2-node circular topology
-| | Then Send ICMPv6 bidirectionally and verify received packets
+| | Then Send ICMPv4 bidirectionally and verify received packets
| | ... | ${tg} | ${tg_if1} | ${tg_if2}
+
+*** Test Cases ***
+| tc01-64B-eth2p-ethicmpv4-l2xcbase-dev
+| | [Tags] | 64B
+| | frame_size=${64} | phy_cores=${0}