aboutsummaryrefslogtreecommitdiffstats
path: root/tests/func/vxlan
diff options
context:
space:
mode:
authorJan Gelety <jgelety@cisco.com>2017-01-17 14:50:46 +0100
committerJan Gelety <jgelety@cisco.com>2017-01-24 15:35:34 +0000
commit982e81efab69bc007455481b6425fcebc7213906 (patch)
tree27f320b8b2508fbc7716aa682f51cf3cb9449de3 /tests/func/vxlan
parentc232d04e7a5bffb72063240ee7e15967f46c4873 (diff)
csit-func-tc-naming-change - phase 1
- change of ts directories - change of ts file names - splitting of former files to more files when suitable - more details: https://wiki.fd.io/view/CSIT/csit-perf-tc-naming-change Change-Id: Ifda1038f8323735f86c1be7ba7f93e3fda183618 Signed-off-by: Jan Gelety <jgelety@cisco.com>
Diffstat (limited to 'tests/func/vxlan')
-rw-r--r--tests/func/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot (renamed from tests/func/vxlan/vxlan_bd_dot1q.robot)0
-rw-r--r--tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot119
-rw-r--r--tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot78
-rw-r--r--tests/func/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot (renamed from tests/func/vxlan/vxlan_xconnect_untagged.robot)0
-rw-r--r--tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot120
-rw-r--r--tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot78
-rw-r--r--tests/func/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot200
-rw-r--r--tests/func/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot200
-rw-r--r--tests/func/vxlan/vxlan_bd_untagged.robot539
9 files changed, 795 insertions, 539 deletions
diff --git a/tests/func/vxlan/vxlan_bd_dot1q.robot b/tests/func/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot
index 592154845d..592154845d 100644
--- a/tests/func/vxlan/vxlan_bd_dot1q.robot
+++ b/tests/func/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot
diff --git a/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot b/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
new file mode 100644
index 0000000000..357f339a7c
--- /dev/null
+++ b/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
@@ -0,0 +1,119 @@
+# Copyright (c) 2016 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/default.robot
+| Resource | resources/libraries/robot/testing_path.robot
+| Resource | resources/libraries/robot/vxlan.robot
+| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/double_qemu_setup.robot
+| Library | resources.libraries.python.Trace
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV | VPP_VM_ENV
+| Test Setup | Func Test Setup
+| Test Teardown | Func Test Teardown
+| Documentation | *L2BD with VM combined with VXLAN test cases - IPv4*
+| ...
+| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on
+| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2
+| ... | bridge-domain (L2BD) switching combined with MAC learning enabled;
+| ... | VXLAN tunnels are configured between L2BDs on DUT1 and DUT2.
+| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent
+| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG
+| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr
+| ... | and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC7348.
+
+*** Variables ***
+| ${vni_1}= | 23
+
+| ${bd_id1}= | 10
+| ${bd_id2}= | 20
+
+| ${ip4_addr1}= | 172.16.0.1
+| ${ip4_addr2}= | 172.16.0.2
+| ${ip4_prefix}= | 24
+
+| ${sock1}= | /tmp/sock1
+| ${sock2}= | /tmp/sock2
+
+| ${qemu1}= | qemu_instance_1
+| ${qemu2}= | qemu_instance_2
+
+| ${dut1_vhost1}= | dut1_vhost_if1
+| ${dut1_vhost2}= | dut1_vhost_if2
+| ${dut2_vhost1}= | dut2_vhost_if1
+| ${dut2_vhost2}= | dut2_vhost_if2
+
+*** Test Cases ***
+| TC01:DUT1 and DUT2 with two L2BDs and VXLANoIPv4 tunnel switch ICMPv4 between TG links and VM links
+| | [Documentation]
+| | ... | [Top] TG-DUT1-VM-DUT1-DUT2-VM-DUT2-TG.
+| | ... | [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on DUT1-DUT2; Eth-IPv4-ICMPv4
+| | ... | on TG-DUTn and DUTn=VM.
+| | ... | [Cfg] On both DUTs configure two L2BDs (MAC learning enabled); first
+| | ... | L2BD with untagged interface to TG and vhost-user interface to local
+| | ... | VM, second one with vhost-user interface to local VM and VXLAN
+| | ... | interface towards the other DUT. Configure linux bridge on both VMs
+| | ... | to pass traffic between both vhost-user interfaces.
+| | ... | [Ver] Make TG send ICMPv4 Echo Req between two of its interfaces to
+| | ... | be switched by DUT1 and DUT2; verify packets are switched between
+| | ... | these TG interfaces.
+| | ... | [Ref] RFC7348.
+| | Given Path for 3-node testing is set
+| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
+| | And Interfaces in 3-node path are up
+| | When VPP Vhost interfaces for L2BD forwarding are setup | ${dut1_node}
+| | ... | ${sock1}
+| | ... | ${sock2}
+| | ... | ${dut1_vhost1}
+| | ... | ${dut1_vhost2}
+| | And VPP Vhost interfaces for L2BD forwarding are setup | ${dut2_node}
+| | ... | ${sock1}
+| | ... | ${sock2}
+| | ... | ${dut2_vhost1}
+| | ... | ${dut2_vhost2}
+| | And VM for Vhost L2BD forwarding is setup | ${dut1_node} | ${sock1}
+| | ... | ${sock2} | ${qemu1}
+| | And VM for Vhost L2BD forwarding is setup | ${dut2_node} | ${sock1}
+| | ... | ${sock2} | ${qemu2}
+| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr1}
+| | ... | ${ip4_prefix}
+| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr2}
+| | ... | ${ip4_prefix}
+| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr2}
+| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr1}
+| | ${dut1s_vxlan}= | And Create VXLAN interface | ${dut1_node} | ${vni_1}
+| | | ... | ${ip4_addr1} | ${ip4_addr2}
+| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
+| | | ... | ${ip4_addr2} | ${ip4_addr1}
+| | And Interfaces are added to BD | ${dut1_node} | ${bd_id1}
+| | ... | ${dut1_to_tg} | ${${dut1_vhost1}}
+| | And Interfaces are added to BD | ${dut1_node} | ${bd_id2}
+| | ... | ${dut1s_vxlan} | ${${dut1_vhost2}}
+| | And Interfaces are added to BD | ${dut2_node} | ${bd_id1}
+| | ... | ${dut2_to_tg} | ${${dut2_vhost1}}
+| | And Interfaces are added to BD | ${dut2_node} | ${bd_id2}
+| | ... | ${dut2s_vxlan} | ${${dut2_vhost2}}
+| | Then Send and receive ICMPv4 bidirectionally
+| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2}
+| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
+| | ... | AND | Show vpp trace dump on all DUTs
+| | ... | AND | Run keyword | Qemu Teardown | ${dut1_node}
+| | ... | ${${qemu1}} | ${qemu1}
+| | ... | AND | Run keyword | Qemu Teardown | ${dut2_node}
+| | ... | ${${qemu2}} | ${qemu2}
+| | ... | AND | Check VPP PID in Teardown
diff --git a/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot b/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot
new file mode 100644
index 0000000000..543fec22b8
--- /dev/null
+++ b/tests/func/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot
@@ -0,0 +1,78 @@
+# Copyright (c) 2016 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/default.robot
+| Resource | resources/libraries/robot/testing_path.robot
+| Resource | resources/libraries/robot/vxlan.robot
+| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/double_qemu_setup.robot
+| Library | resources.libraries.python.Trace
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV
+| Test Setup | Func Test Setup
+| Test Teardown | Func Test Teardown
+| Documentation | *Bridge-domain with VXLAN test cases - IPv4*
+| ...
+| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on
+| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2
+| ... | bridge-domain (L2BD) switching combined with MAC learning enabled;
+| ... | VXLAN tunnels are configured between L2BDs on DUT1 and DUT2.
+| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent
+| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG
+| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr
+| ... | and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC7348.
+
+*** Variables ***
+| ${vni_1}= | 23
+| ${vni_2}= | 35
+
+| ${bd_id1}= | 10
+| ${bd_id2}= | 20
+| ${bd_id3}= | 30
+| ${shg1}= | 1
+| ${shg2}= | 2
+
+| ${ip4_addr1}= | 172.16.0.1
+| ${ip4_addr2}= | 172.16.0.2
+| ${ip4_prefix}= | 24
+
+*** Test Cases ***
+| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv4 tunnels switch ICMPv4 between TG links
+| | [Documentation]
+| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \
+| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 and DUT2
+| | ... | configure two i/fs into L2BD with MAC learning. [Ver] Make TG
+| | ... | verify ICMPv4 Echo Req pkts are switched thru DUT1 and DUT2 in
+| | ... | both directions and are correct on receive. [Ref] RFC7348.
+| | Given Path for 3-node testing is set
+| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
+| | And Interfaces in 3-node path are up
+| | ${dut1_to_dut2_name}= | Get interface name | ${dut1_node} | ${dut1_to_dut2}
+| | ${dut2_to_dut1_name}= | Get interface name | ${dut2_node} | ${dut2_to_dut1}
+| | And IP addresses are set on interfaces | ${dut1_node} | ${dut1_to_dut2_name} | ${NONE}
+| | ... | ${dut2_node} | ${dut2_to_dut1_name} | ${NONE}
+| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${vni_1}
+| | | ... | ${dut1s_ip_address} | ${dut2s_ip_address}
+| | And Interfaces are added to BD | ${dut1_node} | ${bd_id1}
+| | ... | ${dut1_to_tg} | ${dut1s_vxlan}
+| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
+| | | ... | ${dut2s_ip_address} | ${dut1s_ip_address}
+| | And Interfaces are added to BD | ${dut2_node} | ${bd_id1}
+| | ... | ${dut2_to_tg} | ${dut2s_vxlan}
+| | Then Send and receive ICMPv4 bidirectionally
+| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2}
diff --git a/tests/func/vxlan/vxlan_xconnect_untagged.robot b/tests/func/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot
index de38c56b2d..de38c56b2d 100644
--- a/tests/func/vxlan/vxlan_xconnect_untagged.robot
+++ b/tests/func/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot
diff --git a/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot b/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
new file mode 100644
index 0000000000..19846294a3
--- /dev/null
+++ b/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
@@ -0,0 +1,120 @@
+# Copyright (c) 2016 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/default.robot
+| Resource | resources/libraries/robot/testing_path.robot
+| Resource | resources/libraries/robot/vxlan.robot
+| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/double_qemu_setup.robot
+| Library | resources.libraries.python.Trace
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV
+| Test Setup | Func Test Setup
+| Test Teardown | Func Test Teardown
+| Documentation | *L2BD with VM combined with VXLAN test cases - IPv6*
+| ...
+| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet encapsulations:* Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on
+| ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn for L2 switching of IPv6.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2
+| ... | bridge-domain (L2BD) switching combined with MAC learning enabled;
+| ... | VXLAN tunnels are configured between L2BDs on DUT1 and DUT2.
+| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent
+| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG
+| ... | verifies packets for correctness and their IPv6 src-addr, dst-addr
+| ... | and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC7348.
+
+*** Variables ***
+| ${vni_1}= | 23
+
+| ${bd_id1}= | 10
+| ${bd_id2}= | 20
+
+| ${ip6_addr1}= | 3ffe:64::1
+| ${ip6_addr2}= | 3ffe:64::2
+| ${ip6_prefix}= | 64
+
+| ${sock1}= | /tmp/sock1
+| ${sock2}= | /tmp/sock2
+
+| ${qemu1}= | qemu_instance_1
+| ${qemu2}= | qemu_instance_2
+
+| ${dut1_vhost1}= | dut1_vhost_if1
+| ${dut1_vhost2}= | dut1_vhost_if2
+| ${dut2_vhost1}= | dut2_vhost_if1
+| ${dut2_vhost2}= | dut2_vhost_if2
+
+*** Test Cases ***
+| TC01:DUT1 and DUT2 with two L2BDs and VXLANoIPv6 tunnel switch ICMPv6 between TG links and VM links
+| | [Documentation]
+| | ... | [Top] TG-DUT1-VM-DUT1-DUT2-VM-DUT2-TG.
+| | ... | [Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on DUT1-DUT2; Eth-IPv4-ICMPv4
+| | ... | on TG-DUTn and DUTn=VM.
+| | ... | [Cfg] On both DUTs configure two L2BDs (MAC learning enabled); first
+| | ... | L2BD with untagged interface to TG and vhost-user interface to local
+| | ... | VM, second one with vhost-user interface to local VM and VXLAN
+| | ... | interface towards the other DUT. Configure linux bridge on both VMs
+| | ... | to pass traffic between both vhost-user interfaces.
+| | ... | [Ver] Make TG send ICMPv6 Echo Req between two of its interfaces to
+| | ... | be switched by DUT1 and DUT2; verify packets are switched between
+| | ... | these TG interfaces.
+| | ... | [Ref] RFC7348.
+| | [Tags] | VPP_VM_ENV
+| | Given Path for 3-node testing is set
+| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
+| | And Interfaces in 3-node path are up
+| | When VPP Vhost interfaces for L2BD forwarding are setup | ${dut1_node}
+| | ... | ${sock1}
+| | ... | ${sock2}
+| | ... | ${dut1_vhost1}
+| | ... | ${dut1_vhost2}
+| | And VPP Vhost interfaces for L2BD forwarding are setup | ${dut2_node}
+| | ... | ${sock1}
+| | ... | ${sock2}
+| | ... | ${dut2_vhost1}
+| | ... | ${dut2_vhost2}
+| | And VM for Vhost L2BD forwarding is setup | ${dut1_node} | ${sock1}
+| | ... | ${sock2} | ${qemu1}
+| | And VM for Vhost L2BD forwarding is setup | ${dut2_node} | ${sock1}
+| | ... | ${sock2} | ${qemu2}
+| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1}
+| | ... | ${ip6_prefix}
+| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2}
+| | ... | ${ip6_prefix}
+| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2}
+| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1}
+| | ${dut1s_vxlan}= | And Create VXLAN interface | ${dut1_node} | ${vni_1}
+| | | ... | ${ip6_addr1} | ${ip6_addr2}
+| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
+| | | ... | ${ip6_addr2} | ${ip6_addr1}
+| | And Interfaces are added to BD | ${dut1_node} | ${bd_id1}
+| | ... | ${dut1_to_tg} | ${${dut1_vhost1}}
+| | And Interfaces are added to BD | ${dut1_node} | ${bd_id2}
+| | ... | ${dut1s_vxlan} | ${${dut1_vhost2}}
+| | And Interfaces are added to BD | ${dut2_node} | ${bd_id1}
+| | ... | ${dut2_to_tg} | ${${dut2_vhost1}}
+| | And Interfaces are added to BD | ${dut2_node} | ${bd_id2}
+| | ... | ${dut2s_vxlan} | ${${dut2_vhost2}}
+| | Then Send and receive ICMPv6 bidirectionally
+| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2}
+| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
+| | ... | AND | Show vpp trace dump on all DUTs
+| | ... | AND | Run keyword | Qemu Teardown | ${dut1_node}
+| | ... | ${${qemu1}} | ${qemu1}
+| | ... | AND | Run keyword | Qemu Teardown | ${dut2_node}
+| | ... | ${${qemu2}} | ${qemu2}
+| | ... | AND | Check VPP PID in Teardown
diff --git a/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot b/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot
new file mode 100644
index 0000000000..23b88d45f2
--- /dev/null
+++ b/tests/func/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot
@@ -0,0 +1,78 @@
+# Copyright (c) 2016 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/default.robot
+| Resource | resources/libraries/robot/testing_path.robot
+| Resource | resources/libraries/robot/vxlan.robot
+| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/double_qemu_setup.robot
+| Library | resources.libraries.python.Trace
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV
+| Test Setup | Func Test Setup
+| Test Teardown | Func Test Teardown
+| Documentation | *Bridge-domain with VXLAN test cases - IPv6*
+| ...
+| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet encapsulations:* Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on
+| ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn for L2 switching of IPv6.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2
+| ... | bridge-domain (L2BD) switching combined with MAC learning enabled;
+| ... | VXLAN tunnels are configured between L2BDs on DUT1 and DUT2.
+| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent
+| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG
+| ... | verifies packets for correctness and their IPv6 src-addr, dst-addr
+| ... | and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC7348.
+
+*** Variables ***
+| ${vni_1}= | 23
+
+| ${bd_id1}= | 10
+
+| ${ip6_addr1}= | 3ffe:64::1
+| ${ip6_addr2}= | 3ffe:64::2
+| ${ip6_prefix}= | 64
+
+*** Test Cases ***
+| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv6 tunnels switch ICMPv6 between TG links
+| | [Documentation]
+| | ... | [Top] TG=DUT1=DUT2=TG.[Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on \
+| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] On DUT1 and DUT2
+| | ... | configure L2 bridge-domain (MAC learning enabled), each with one
+| | ... | interface to TG and one VXLAN tunnel interface towards the other
+| | ... | DUT. [Ver] Make TG send ICMPv6 Echo Req between two of its
+| | ... | interfaces to be switched by DUT1 and DUT2; verify all packets
+| | ... | are received. [Ref] RFC7348.
+| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO
+| | Given Path for 3-node testing is set
+| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
+| | And Interfaces in 3-node path are up
+| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1}
+| | ... | ${ip6_prefix}
+| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2}
+| | ... | ${ip6_prefix}
+| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2}
+| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1}
+| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${vni_1}
+| | | ... | ${ip6_addr1} | ${ip6_addr2}
+| | And Interfaces are added to BD | ${dut1_node} | ${bd_id1}
+| | ... | ${dut1_to_tg} | ${dut1s_vxlan}
+| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
+| | | ... | ${ip6_addr2} | ${ip6_addr1}
+| | And Interfaces are added to BD | ${dut2_node} | ${bd_id1}
+| | ... | ${dut2_to_tg} | ${dut2s_vxlan}
+| | Then Send and receive ICMPv6 bidirectionally
+| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2}
diff --git a/tests/func/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot b/tests/func/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot
new file mode 100644
index 0000000000..8afb22a717
--- /dev/null
+++ b/tests/func/vxlan/eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot
@@ -0,0 +1,200 @@
+# Copyright (c) 2016 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/default.robot
+| Resource | resources/libraries/robot/testing_path.robot
+| Resource | resources/libraries/robot/vxlan.robot
+| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/double_qemu_setup.robot
+| Library | resources.libraries.python.Trace
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV
+| Test Setup | Func Test Setup
+| Test Teardown | Func Test Teardown
+| Documentation | *L2BD with SHG combined with VXLAN test cases - IPv4*
+| ...
+| ... | *[Top] Network topologies:* TG=DUT1=DUT2=TG 3-node circular topology
+| ... | with double parallel links.
+| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on
+| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2
+| ... | bridge-domain (L2BD) switching combined with MAC learning enabled
+| ... | and Split Horizon Groups (SHG); VXLAN tunnels are configured
+| ... | between L2BDs on DUT1 and DUT2.
+| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent
+| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG
+| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr
+| ... | and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC7348.
+
+*** Variables ***
+| ${vni_1}= | 23
+| ${vni_2}= | 35
+
+| ${bd_id1}= | 10
+| ${bd_id2}= | 20
+| ${bd_id3}= | 30
+| ${shg1}= | 1
+| ${shg2}= | 2
+
+| ${ip4_addr1}= | 172.16.0.1
+| ${ip4_addr2}= | 172.16.0.2
+| ${ip4_prefix}= | 24
+
+*** Test Cases ***
+| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv4 tunnels in SHG switch ICMPv4 between TG links
+| | [Documentation]
+| | ... | [Top] TG=DUT1=DUT2=TG. [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \
+| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 configure L2
+| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces
+| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN
+| | ... | interfaces into the same Split-Horizon-Group (SHG). On DUT2 configure
+| | ... | two L2 bridge-domain (MAC learning enabled), each with one untagged
+| | ... | interface to TG and one VXLAN interface towards the DUT1. [Ver] Make
+| | ... | TG send ICMPv4 Echo Reqs between all four of its interfaces to be
+| | ... | switched by DUT1 and DUT2; verify packets are not switched between
+| | ... | TG interfaces connected to DUT2 that are isolated by SHG on DUT1.
+| | ... | [Ref] RFC7348.
+| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO
+| | Given Path for 3-node BD-SHG testing is set | ${nodes['TG']}
+| | ... | ${nodes['DUT1']}
+| | ... | ${nodes['DUT2']}
+| | And Interfaces in 3-node BD-SHG testing are up
+| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr1}
+| | ... | ${ip4_prefix}
+| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr2}
+| | ... | ${ip4_prefix}
+| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr2}
+| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr1}
+| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1}
+| | | ... | ${ip4_addr1} | ${ip4_addr2}
+| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2}
+| | | ... | ${ip4_addr1} | ${ip4_addr2}
+| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
+| | | ... | ${ip4_addr2} | ${ip4_addr1}
+| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2}
+| | | ... | ${ip4_addr2} | ${ip4_addr1}
+| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up
+| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up
+| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up
+| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up
+| | And Vpp Node Interfaces Ready Wait | ${dut1_node}
+| | And Vpp Node Interfaces Ready Wait | ${dut2_node}
+| | And Bridge domain on DUT node is created | ${dut1_node} | ${bd_id1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if1}
+| | ... | ${bd_id1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if2}
+| | ... | ${bd_id1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan1}
+| | ... | ${bd_id1} | ${shg1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan2}
+| | ... | ${bd_id1} | ${shg1}
+| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id2}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if1}
+| | ... | ${bd_id2}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan1}
+| | ... | ${bd_id2}
+| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id3}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if2}
+| | ... | ${bd_id3}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan2}
+| | ... | ${bd_id3}
+| | Then Send and receive ICMPv4 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if1}
+| | ... | ${tg_to_dut2_if1}
+| | And Send and receive ICMPv4 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if1}
+| | ... | ${tg_to_dut2_if2}
+| | And Send and receive ICMPv4 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if2}
+| | ... | ${tg_to_dut2_if1}
+| | And Send and receive ICMPv4 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if2}
+| | ... | ${tg_to_dut2_if2}
+| | And Run Keyword And Expect Error | ICMP echo Rx timeout
+| | ... | Send and receive ICMPv4 bidirectionally
+| | | ... | ${tg_node} | ${tg_to_dut2_if1}
+| | | ... | ${tg_to_dut2_if2}
+
+| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv4 tunnels in different SHGs switch ICMPv4 between TG links
+| | [Documentation]
+| | ... | [Top] TG=DUT1=DUT2=TG.[Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \
+| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 configure L2
+| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces
+| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN
+| | ... | interfaces into the different Split-Horizon-Group (SHGs). On DUT2
+| | ... | configure two L2 bridge-domain (MAC learning enabled), each with one
+| | ... | untagged interface to TG and one VXLAN interface towards the DUT1.
+| | ... | [Ver] Make TG send ICMPv4 Echo Req between all four of its interfaces
+| | ... | to be switched by DUT1 and DUT2; verify packets are switched between
+| | ... | all TG interfaces. [Ref] RFC7348.
+| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO
+| | Given Path for 3-node BD-SHG testing is set | ${nodes['TG']}
+| | ... | ${nodes['DUT1']}
+| | ... | ${nodes['DUT2']}
+| | And Interfaces in 3-node BD-SHG testing are up
+| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr1}
+| | ... | ${ip4_prefix}
+| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr2}
+| | ... | ${ip4_prefix}
+| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr2}
+| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr1}
+| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1}
+| | | ... | ${ip4_addr1} | ${ip4_addr2}
+| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2}
+| | | ... | ${ip4_addr1} | ${ip4_addr2}
+| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
+| | | ... | ${ip4_addr2} | ${ip4_addr1}
+| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2}
+| | | ... | ${ip4_addr2} | ${ip4_addr1}
+| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up
+| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up
+| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up
+| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up
+| | And Vpp Node Interfaces Ready Wait | ${dut1_node}
+| | And Vpp Node Interfaces Ready Wait | ${dut2_node}
+| | And Bridge domain on DUT node is created | ${dut1_node} | ${bd_id1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if1}
+| | ... | ${bd_id1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if2}
+| | ... | ${bd_id1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan1}
+| | ... | ${bd_id1} | ${shg1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan2}
+| | ... | ${bd_id1} | ${shg2}
+| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id2}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if1}
+| | ... | ${bd_id2}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan1}
+| | ... | ${bd_id2}
+| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id3}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if2}
+| | ... | ${bd_id3}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan2}
+| | ... | ${bd_id3}
+| | Then Send and receive ICMPv4 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if1}
+| | ... | ${tg_to_dut2_if1}
+| | And Send and receive ICMPv4 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if1}
+| | ... | ${tg_to_dut2_if2}
+| | And Send and receive ICMPv4 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if2}
+| | ... | ${tg_to_dut2_if1}
+| | And Send and receive ICMPv4 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if2}
+| | ... | ${tg_to_dut2_if2}
+| | And Send and receive ICMPv4 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut2_if1}
+| | ... | ${tg_to_dut2_if2}
diff --git a/tests/func/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot b/tests/func/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot
new file mode 100644
index 0000000000..2ed07462cf
--- /dev/null
+++ b/tests/func/vxlan/eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot
@@ -0,0 +1,200 @@
+# Copyright (c) 2016 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/default.robot
+| Resource | resources/libraries/robot/testing_path.robot
+| Resource | resources/libraries/robot/vxlan.robot
+| Resource | resources/libraries/robot/l2_traffic.robot
+| Resource | resources/libraries/robot/qemu.robot
+| Resource | resources/libraries/robot/double_qemu_setup.robot
+| Library | resources.libraries.python.Trace
+| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV
+| Test Setup | Func Test Setup
+| Test Teardown | Func Test Teardown
+| Documentation | *L2BD with SHG combined with VXLAN test cases - IPv6*
+| ...
+| ... | *[Top] Network topologies:* TG=DUT1=DUT2=TG 3-node circular topology
+| ... | with double parallel links.
+| ... | *[Enc] Packet encapsulations:* th-IPv6-VXLAN-Eth-IPv6-ICMPv6 on
+| ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn for L2 switching of IPv6.
+| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2
+| ... | bridge-domain (L2BD) switching combined with MAC learning enabled
+| ... | and Split Horizon Groups (SHG); VXLAN tunnels are configured
+| ... | between L2BDs on DUT1 and DUT2.
+| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent
+| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG
+| ... | verifies packets for correctness and their IPv6 src-addr, dst-addr
+| ... | and MAC addresses.
+| ... | *[Ref] Applicable standard specifications:* RFC7348.
+
+*** Variables ***
+| ${vni_1}= | 23
+| ${vni_2}= | 35
+
+| ${bd_id1}= | 10
+| ${bd_id2}= | 20
+| ${bd_id3}= | 30
+| ${shg1}= | 1
+| ${shg2}= | 2
+
+| ${ip6_addr1}= | 3ffe:64::1
+| ${ip6_addr2}= | 3ffe:64::2
+| ${ip6_prefix}= | 64
+
+*** Test Cases ***
+| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv6 tunnels in SHG switch ICMPv6 between TG links
+| | [Documentation]
+| | ... | [Top] TG=DUT1=DUT2=TG. [Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on \
+| | ... | DUT1-DUT2; Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] On DUT1 configure L2
+| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces
+| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN
+| | ... | interfaces into the same Split-Horizon-Group (SHG). On DUT2 configure
+| | ... | two L2 bridge-domain (MAC learning enabled), each with one untagged
+| | ... | interface to TG and one VXLAN interface towards the DUT1. [Ver] Make
+| | ... | TG send ICMPv6 Echo Reqs between all four of its interfaces to be
+| | ... | switched by DUT1 and DUT2; verify packets are not switched between
+| | ... | TG interfaces connected to DUT2 that are isolated by SHG on DUT1.
+| | ... | [Ref] RFC7348.
+| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO
+| | Given Path for 3-node BD-SHG testing is set | ${nodes['TG']}
+| | ... | ${nodes['DUT1']}
+| | ... | ${nodes['DUT2']}
+| | And Interfaces in 3-node BD-SHG testing are up
+| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1}
+| | ... | ${ip6_prefix}
+| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2}
+| | ... | ${ip6_prefix}
+| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2}
+| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1}
+| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1}
+| | | ... | ${ip6_addr1} | ${ip6_addr2}
+| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2}
+| | | ... | ${ip6_addr1} | ${ip6_addr2}
+| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
+| | | ... | ${ip6_addr2} | ${ip6_addr1}
+| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2}
+| | | ... | ${ip6_addr2} | ${ip6_addr1}
+| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up
+| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up
+| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up
+| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up
+| | And Vpp Node Interfaces Ready Wait | ${dut1_node}
+| | And Vpp Node Interfaces Ready Wait | ${dut2_node}
+| | And Bridge domain on DUT node is created | ${dut1_node} | ${bd_id1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if1}
+| | ... | ${bd_id1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if2}
+| | ... | ${bd_id1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan1}
+| | ... | ${bd_id1} | ${shg1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan2}
+| | ... | ${bd_id1} | ${shg1}
+| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id2}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if1}
+| | ... | ${bd_id2}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan1}
+| | ... | ${bd_id2}
+| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id3}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if2}
+| | ... | ${bd_id3}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan2}
+| | ... | ${bd_id3}
+| | Then Send and receive ICMPv6 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if1}
+| | ... | ${tg_to_dut2_if1}
+| | And Send and receive ICMPv6 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if1}
+| | ... | ${tg_to_dut2_if2}
+| | And Send and receive ICMPv6 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if2}
+| | ... | ${tg_to_dut2_if1}
+| | And Send and receive ICMPv6 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if2}
+| | ... | ${tg_to_dut2_if2}
+| | And Run Keyword And Expect Error | ICMP echo Rx timeout
+| | ... | Send and receive ICMPv6 bidirectionally
+| | | ... | ${tg_node} | ${tg_to_dut2_if1}
+| | | ... | ${tg_to_dut2_if2}
+
+| TC02: DUT1 and DUT2 with L2BD and VXLANoIPv6 tunnels in different SHGs switch ICMPv6 between TG links
+| | [Documentation]
+| | ... | [Top] TG=DUT1=DUT2=TG.[Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on \
+| | ... | DUT1-DUT2; Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] On DUT1 configure L2
+| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces
+| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN
+| | ... | interfaces into the different Split-Horizon-Group (SHGs). On DUT2
+| | ... | configure two L2 bridge-domain (MAC learning enabled), each with one
+| | ... | untagged interface to TG and one VXLAN interface towards the DUT1.
+| | ... | [Ver] Make TG send ICMPv6 Echo Req between all four of its interfaces
+| | ... | to be switched by DUT1 and DUT2; verify packets are switched between
+| | ... | all TG interfaces. [Ref] RFC7348.
+| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO
+| | Given Path for 3-node BD-SHG testing is set | ${nodes['TG']}
+| | ... | ${nodes['DUT1']}
+| | ... | ${nodes['DUT2']}
+| | And Interfaces in 3-node BD-SHG testing are up
+| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1}
+| | ... | ${ip6_prefix}
+| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2}
+| | ... | ${ip6_prefix}
+| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2}
+| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1}
+| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1}
+| | | ... | ${ip6_addr1} | ${ip6_addr2}
+| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2}
+| | | ... | ${ip6_addr1} | ${ip6_addr2}
+| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
+| | | ... | ${ip6_addr2} | ${ip6_addr1}
+| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2}
+| | | ... | ${ip6_addr2} | ${ip6_addr1}
+| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up
+| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up
+| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up
+| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up
+| | And Vpp Node Interfaces Ready Wait | ${dut1_node}
+| | And Vpp Node Interfaces Ready Wait | ${dut2_node}
+| | And Bridge domain on DUT node is created | ${dut1_node} | ${bd_id1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if1}
+| | ... | ${bd_id1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if2}
+| | ... | ${bd_id1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan1}
+| | ... | ${bd_id1} | ${shg1}
+| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan2}
+| | ... | ${bd_id1} | ${shg2}
+| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id2}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if1}
+| | ... | ${bd_id2}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan1}
+| | ... | ${bd_id2}
+| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id3}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if2}
+| | ... | ${bd_id3}
+| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan2}
+| | ... | ${bd_id3}
+| | Then Send and receive ICMPv6 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if1}
+| | ... | ${tg_to_dut2_if1}
+| | And Send and receive ICMPv6 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if1}
+| | ... | ${tg_to_dut2_if2}
+| | And Send and receive ICMPv6 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if2}
+| | ... | ${tg_to_dut2_if1}
+| | And Send and receive ICMPv6 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut1_if2}
+| | ... | ${tg_to_dut2_if2}
+| | And Send and receive ICMPv6 bidirectionally | ${tg_node}
+| | ... | ${tg_to_dut2_if1}
+| | ... | ${tg_to_dut2_if2}
diff --git a/tests/func/vxlan/vxlan_bd_untagged.robot b/tests/func/vxlan/vxlan_bd_untagged.robot
deleted file mode 100644
index b708b6691a..0000000000
--- a/tests/func/vxlan/vxlan_bd_untagged.robot
+++ /dev/null
@@ -1,539 +0,0 @@
-# Copyright (c) 2016 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/default.robot
-| Resource | resources/libraries/robot/testing_path.robot
-| Resource | resources/libraries/robot/vxlan.robot
-| Resource | resources/libraries/robot/l2_traffic.robot
-| Resource | resources/libraries/robot/qemu.robot
-| Resource | resources/libraries/robot/double_qemu_setup.robot
-| Library | resources.libraries.python.Trace
-| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV
-| Test Setup | Func Test Setup
-| Test Teardown | Func Test Teardown
-| Documentation | *RFC7348 VXLAN: Bridge-domain with VXLAN test cases*
-| ...
-| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology
-| ... | with single links between nodes; TG=DUT1=DUT2=TG 3-node circular
-| ... | topology with double parallel links.
-| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on
-| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4;
-| ... | Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on
-| ... | TG-DUTn for L2 switching of IPv6.
-| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2
-| ... | bridge-domain (L2BD) switching combined with static MACs, MAC learning
-| ... | enabled and Split Horizon Groups (SHG) depending on test case; VXLAN
-| ... | tunnels are configured between L2BDs on DUT1 and DUT2.
-| ... | *[Ver] TG verification:* Test ICMPv4 (or ICMPv6) Echo Request packets
-| ... | are sent in both directions by TG on links to DUT1 and DUT2; on receive
-| ... | TG verifies packets for correctness and their IPv4 (IPv6) src-addr,
-| ... | dst-addr and MAC addresses.
-| ... | *[Ref] Applicable standard specifications:* RFC7348.
-
-*** Variables ***
-| ${vni_1}= | 23
-| ${vni_2}= | 35
-
-| ${bd_id1}= | 10
-| ${bd_id2}= | 20
-| ${bd_id3}= | 30
-| ${shg1}= | 1
-| ${shg2}= | 2
-
-| ${ip4_addr1}= | 172.16.0.1
-| ${ip4_addr2}= | 172.16.0.2
-| ${ip4_prefix}= | 24
-
-| ${ip6_addr1}= | 3ffe:64::1
-| ${ip6_addr2}= | 3ffe:64::2
-| ${ip6_prefix}= | 64
-
-| ${sock1}= | /tmp/sock1
-| ${sock2}= | /tmp/sock2
-
-| ${qemu1}= | qemu_instance_1
-| ${qemu2}= | qemu_instance_2
-
-| ${dut1_vhost1}= | dut1_vhost_if1
-| ${dut1_vhost2}= | dut1_vhost_if2
-| ${dut2_vhost1}= | dut2_vhost_if1
-| ${dut2_vhost2}= | dut2_vhost_if2
-
-*** Test Cases ***
-| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv4 tunnels switch ICMPv4 between TG links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \
-| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 and DUT2
-| | ... | configure two i/fs into L2BD with MAC learning. [Ver] Make TG
-| | ... | verify ICMPv4 Echo Req pkts are switched thru DUT1 and DUT2 in
-| | ... | both directions and are correct on receive. [Ref] RFC7348.
-| | Given Path for 3-node testing is set
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Interfaces in 3-node path are up
-| | ${dut1_to_dut2_name}= | Get interface name | ${dut1_node} | ${dut1_to_dut2}
-| | ${dut2_to_dut1_name}= | Get interface name | ${dut2_node} | ${dut2_to_dut1}
-| | And IP addresses are set on interfaces | ${dut1_node} | ${dut1_to_dut2_name} | ${NONE}
-| | ... | ${dut2_node} | ${dut2_to_dut1_name} | ${NONE}
-| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${vni_1}
-| | | ... | ${dut1s_ip_address} | ${dut2s_ip_address}
-| | And Interfaces are added to BD | ${dut1_node} | ${bd_id1}
-| | ... | ${dut1_to_tg} | ${dut1s_vxlan}
-| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
-| | | ... | ${dut2s_ip_address} | ${dut1s_ip_address}
-| | And Interfaces are added to BD | ${dut2_node} | ${bd_id1}
-| | ... | ${dut2_to_tg} | ${dut2s_vxlan}
-| | Then Send and receive ICMPv4 bidirectionally
-| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2}
-
-| TC02: DUT1 and DUT2 with L2BD and VXLANoIPv4 tunnels in SHG switch ICMPv4 between TG links
-| | [Documentation]
-| | ... | [Top] TG=DUT1=DUT2=TG. [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \
-| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 configure L2
-| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces
-| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN
-| | ... | interfaces into the same Split-Horizon-Group (SHG). On DUT2 configure
-| | ... | two L2 bridge-domain (MAC learning enabled), each with one untagged
-| | ... | interface to TG and one VXLAN interface towards the DUT1. [Ver] Make
-| | ... | TG send ICMPv4 Echo Reqs between all four of its interfaces to be
-| | ... | switched by DUT1 and DUT2; verify packets are not switched between
-| | ... | TG interfaces connected to DUT2 that are isolated by SHG on DUT1.
-| | ... | [Ref] RFC7348.
-| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO
-| | Given Path for 3-node BD-SHG testing is set | ${nodes['TG']}
-| | ... | ${nodes['DUT1']}
-| | ... | ${nodes['DUT2']}
-| | And Interfaces in 3-node BD-SHG testing are up
-| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr1}
-| | ... | ${ip4_prefix}
-| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr2}
-| | ... | ${ip4_prefix}
-| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr2}
-| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr1}
-| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1}
-| | | ... | ${ip4_addr1} | ${ip4_addr2}
-| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2}
-| | | ... | ${ip4_addr1} | ${ip4_addr2}
-| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
-| | | ... | ${ip4_addr2} | ${ip4_addr1}
-| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2}
-| | | ... | ${ip4_addr2} | ${ip4_addr1}
-| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up
-| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up
-| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up
-| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up
-| | And Vpp Node Interfaces Ready Wait | ${dut1_node}
-| | And Vpp Node Interfaces Ready Wait | ${dut2_node}
-| | And Bridge domain on DUT node is created | ${dut1_node} | ${bd_id1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if1}
-| | ... | ${bd_id1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if2}
-| | ... | ${bd_id1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan1}
-| | ... | ${bd_id1} | ${shg1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan2}
-| | ... | ${bd_id1} | ${shg1}
-| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id2}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if1}
-| | ... | ${bd_id2}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan1}
-| | ... | ${bd_id2}
-| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id3}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if2}
-| | ... | ${bd_id3}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan2}
-| | ... | ${bd_id3}
-| | Then Send and receive ICMPv4 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if1}
-| | ... | ${tg_to_dut2_if1}
-| | And Send and receive ICMPv4 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if1}
-| | ... | ${tg_to_dut2_if2}
-| | And Send and receive ICMPv4 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if2}
-| | ... | ${tg_to_dut2_if1}
-| | And Send and receive ICMPv4 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if2}
-| | ... | ${tg_to_dut2_if2}
-| | And Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send and receive ICMPv4 bidirectionally
-| | | ... | ${tg_node} | ${tg_to_dut2_if1}
-| | | ... | ${tg_to_dut2_if2}
-
-| TC03: DUT1 and DUT2 with L2BD and VXLANoIPv4 tunnels in different SHGs switch ICMPv4 between TG links
-| | [Documentation]
-| | ... | [Top] TG=DUT1=DUT2=TG.[Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \
-| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 configure L2
-| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces
-| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN
-| | ... | interfaces into the different Split-Horizon-Group (SHGs). On DUT2
-| | ... | configure two L2 bridge-domain (MAC learning enabled), each with one
-| | ... | untagged interface to TG and one VXLAN interface towards the DUT1.
-| | ... | [Ver] Make TG send ICMPv4 Echo Req between all four of its interfaces
-| | ... | to be switched by DUT1 and DUT2; verify packets are switched between
-| | ... | all TG interfaces. [Ref] RFC7348.
-| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO
-| | Given Path for 3-node BD-SHG testing is set | ${nodes['TG']}
-| | ... | ${nodes['DUT1']}
-| | ... | ${nodes['DUT2']}
-| | And Interfaces in 3-node BD-SHG testing are up
-| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr1}
-| | ... | ${ip4_prefix}
-| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr2}
-| | ... | ${ip4_prefix}
-| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr2}
-| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr1}
-| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1}
-| | | ... | ${ip4_addr1} | ${ip4_addr2}
-| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2}
-| | | ... | ${ip4_addr1} | ${ip4_addr2}
-| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
-| | | ... | ${ip4_addr2} | ${ip4_addr1}
-| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2}
-| | | ... | ${ip4_addr2} | ${ip4_addr1}
-| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up
-| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up
-| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up
-| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up
-| | And Vpp Node Interfaces Ready Wait | ${dut1_node}
-| | And Vpp Node Interfaces Ready Wait | ${dut2_node}
-| | And Bridge domain on DUT node is created | ${dut1_node} | ${bd_id1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if1}
-| | ... | ${bd_id1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if2}
-| | ... | ${bd_id1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan1}
-| | ... | ${bd_id1} | ${shg1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan2}
-| | ... | ${bd_id1} | ${shg2}
-| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id2}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if1}
-| | ... | ${bd_id2}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan1}
-| | ... | ${bd_id2}
-| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id3}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if2}
-| | ... | ${bd_id3}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan2}
-| | ... | ${bd_id3}
-| | Then Send and receive ICMPv4 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if1}
-| | ... | ${tg_to_dut2_if1}
-| | And Send and receive ICMPv4 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if1}
-| | ... | ${tg_to_dut2_if2}
-| | And Send and receive ICMPv4 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if2}
-| | ... | ${tg_to_dut2_if1}
-| | And Send and receive ICMPv4 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if2}
-| | ... | ${tg_to_dut2_if2}
-| | And Send and receive ICMPv4 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut2_if1}
-| | ... | ${tg_to_dut2_if2}
-
-| TC04: DUT1 and DUT2 with L2BD and VXLANoIPv6 tunnels switch ICMPv6 between TG links
-| | [Documentation]
-| | ... | [Top] TG=DUT1=DUT2=TG.[Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on \
-| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] On DUT1 and DUT2
-| | ... | configure L2 bridge-domain (MAC learning enabled), each with one
-| | ... | interface to TG and one VXLAN tunnel interface towards the other
-| | ... | DUT. [Ver] Make TG send ICMPv6 Echo Req between two of its
-| | ... | interfaces to be switched by DUT1 and DUT2; verify all packets
-| | ... | are received. [Ref] RFC7348.
-| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO
-| | Given Path for 3-node testing is set
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Interfaces in 3-node path are up
-| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1}
-| | ... | ${ip6_prefix}
-| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2}
-| | ... | ${ip6_prefix}
-| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2}
-| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1}
-| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${vni_1}
-| | | ... | ${ip6_addr1} | ${ip6_addr2}
-| | And Interfaces are added to BD | ${dut1_node} | ${bd_id1}
-| | ... | ${dut1_to_tg} | ${dut1s_vxlan}
-| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
-| | | ... | ${ip6_addr2} | ${ip6_addr1}
-| | And Interfaces are added to BD | ${dut2_node} | ${bd_id1}
-| | ... | ${dut2_to_tg} | ${dut2s_vxlan}
-| | Then Send and receive ICMPv6 bidirectionally
-| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2}
-
-| TC05: DUT1 and DUT2 with L2BD and VXLANoIPv6 tunnels in SHG switch ICMPv6 between TG links
-| | [Documentation]
-| | ... | [Top] TG=DUT1=DUT2=TG. [Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on \
-| | ... | DUT1-DUT2; Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] On DUT1 configure L2
-| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces
-| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN
-| | ... | interfaces into the same Split-Horizon-Group (SHG). On DUT2 configure
-| | ... | two L2 bridge-domain (MAC learning enabled), each with one untagged
-| | ... | interface to TG and one VXLAN interface towards the DUT1. [Ver] Make
-| | ... | TG send ICMPv6 Echo Reqs between all four of its interfaces to be
-| | ... | switched by DUT1 and DUT2; verify packets are not switched between
-| | ... | TG interfaces connected to DUT2 that are isolated by SHG on DUT1.
-| | ... | [Ref] RFC7348.
-| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO
-| | Given Path for 3-node BD-SHG testing is set | ${nodes['TG']}
-| | ... | ${nodes['DUT1']}
-| | ... | ${nodes['DUT2']}
-| | And Interfaces in 3-node BD-SHG testing are up
-| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1}
-| | ... | ${ip6_prefix}
-| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2}
-| | ... | ${ip6_prefix}
-| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2}
-| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1}
-| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1}
-| | | ... | ${ip6_addr1} | ${ip6_addr2}
-| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2}
-| | | ... | ${ip6_addr1} | ${ip6_addr2}
-| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
-| | | ... | ${ip6_addr2} | ${ip6_addr1}
-| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2}
-| | | ... | ${ip6_addr2} | ${ip6_addr1}
-| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up
-| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up
-| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up
-| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up
-| | And Vpp Node Interfaces Ready Wait | ${dut1_node}
-| | And Vpp Node Interfaces Ready Wait | ${dut2_node}
-| | And Bridge domain on DUT node is created | ${dut1_node} | ${bd_id1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if1}
-| | ... | ${bd_id1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if2}
-| | ... | ${bd_id1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan1}
-| | ... | ${bd_id1} | ${shg1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan2}
-| | ... | ${bd_id1} | ${shg1}
-| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id2}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if1}
-| | ... | ${bd_id2}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan1}
-| | ... | ${bd_id2}
-| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id3}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if2}
-| | ... | ${bd_id3}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan2}
-| | ... | ${bd_id3}
-| | Then Send and receive ICMPv6 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if1}
-| | ... | ${tg_to_dut2_if1}
-| | And Send and receive ICMPv6 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if1}
-| | ... | ${tg_to_dut2_if2}
-| | And Send and receive ICMPv6 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if2}
-| | ... | ${tg_to_dut2_if1}
-| | And Send and receive ICMPv6 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if2}
-| | ... | ${tg_to_dut2_if2}
-| | And Run Keyword And Expect Error | ICMP echo Rx timeout
-| | ... | Send and receive ICMPv6 bidirectionally
-| | | ... | ${tg_node} | ${tg_to_dut2_if1}
-| | | ... | ${tg_to_dut2_if2}
-
-| TC06: DUT1 and DUT2 with L2BD and VXLANoIPv6 tunnels in different SHGs switch ICMPv6 between TG links
-| | [Documentation]
-| | ... | [Top] TG=DUT1=DUT2=TG.[Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on \
-| | ... | DUT1-DUT2; Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] On DUT1 configure L2
-| | ... | bridge-domain (MAC learning enabled) with two untagged interfaces
-| | ... | to TG and two VXLAN interfaces towards the DUT2 and put both VXLAN
-| | ... | interfaces into the different Split-Horizon-Group (SHGs). On DUT2
-| | ... | configure two L2 bridge-domain (MAC learning enabled), each with one
-| | ... | untagged interface to TG and one VXLAN interface towards the DUT1.
-| | ... | [Ver] Make TG send ICMPv6 Echo Req between all four of its interfaces
-| | ... | to be switched by DUT1 and DUT2; verify packets are switched between
-| | ... | all TG interfaces. [Ref] RFC7348.
-| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO
-| | Given Path for 3-node BD-SHG testing is set | ${nodes['TG']}
-| | ... | ${nodes['DUT1']}
-| | ... | ${nodes['DUT2']}
-| | And Interfaces in 3-node BD-SHG testing are up
-| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1}
-| | ... | ${ip6_prefix}
-| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2}
-| | ... | ${ip6_prefix}
-| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2}
-| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1}
-| | ${dut1s_vxlan1}= | When Create VXLAN interface | ${dut1_node} | ${vni_1}
-| | | ... | ${ip6_addr1} | ${ip6_addr2}
-| | ${dut1s_vxlan2}= | And Create VXLAN interface | ${dut1_node} | ${vni_2}
-| | | ... | ${ip6_addr1} | ${ip6_addr2}
-| | ${dut2s_vxlan1}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
-| | | ... | ${ip6_addr2} | ${ip6_addr1}
-| | ${dut2s_vxlan2}= | And Create VXLAN interface | ${dut2_node} | ${vni_2}
-| | | ... | ${ip6_addr2} | ${ip6_addr1}
-| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan1} | up
-| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan2} | up
-| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan1} | up
-| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan2} | up
-| | And Vpp Node Interfaces Ready Wait | ${dut1_node}
-| | And Vpp Node Interfaces Ready Wait | ${dut2_node}
-| | And Bridge domain on DUT node is created | ${dut1_node} | ${bd_id1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if1}
-| | ... | ${bd_id1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1_to_tg_if2}
-| | ... | ${bd_id1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan1}
-| | ... | ${bd_id1} | ${shg1}
-| | And Interface is added to bridge domain | ${dut1_node} | ${dut1s_vxlan2}
-| | ... | ${bd_id1} | ${shg2}
-| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id2}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if1}
-| | ... | ${bd_id2}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan1}
-| | ... | ${bd_id2}
-| | And Bridge domain on DUT node is created | ${dut2_node} | ${bd_id3}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2_to_tg_if2}
-| | ... | ${bd_id3}
-| | And Interface is added to bridge domain | ${dut2_node} | ${dut2s_vxlan2}
-| | ... | ${bd_id3}
-| | Then Send and receive ICMPv6 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if1}
-| | ... | ${tg_to_dut2_if1}
-| | And Send and receive ICMPv6 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if1}
-| | ... | ${tg_to_dut2_if2}
-| | And Send and receive ICMPv6 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if2}
-| | ... | ${tg_to_dut2_if1}
-| | And Send and receive ICMPv6 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut1_if2}
-| | ... | ${tg_to_dut2_if2}
-| | And Send and receive ICMPv6 bidirectionally | ${tg_node}
-| | ... | ${tg_to_dut2_if1}
-| | ... | ${tg_to_dut2_if2}
-
-| TC07:DUT1 and DUT2 with two L2BDs and VXLANoIPv4 tunnel switch ICMPv4 between TG links and VM links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-VM-DUT1-DUT2-VM-DUT2-TG.
-| | ... | [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on DUT1-DUT2; Eth-IPv4-ICMPv4
-| | ... | on TG-DUTn and DUTn=VM.
-| | ... | [Cfg] On both DUTs configure two L2BDs (MAC learning enabled); first
-| | ... | L2BD with untagged interface to TG and vhost-user interface to local
-| | ... | VM, second one with vhost-user interface to local VM and VXLAN
-| | ... | interface towards the other DUT. Configure linux bridge on both VMs
-| | ... | to pass traffic between both vhost-user interfaces.
-| | ... | [Ver] Make TG send ICMPv4 Echo Req between two of its interfaces to
-| | ... | be switched by DUT1 and DUT2; verify packets are switched between
-| | ... | these TG interfaces.
-| | ... | [Ref] RFC7348.
-| | [Tags] | VPP_VM_ENV
-| | Given Path for 3-node testing is set
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Interfaces in 3-node path are up
-| | When VPP Vhost interfaces for L2BD forwarding are setup | ${dut1_node}
-| | ... | ${sock1}
-| | ... | ${sock2}
-| | ... | ${dut1_vhost1}
-| | ... | ${dut1_vhost2}
-| | And VPP Vhost interfaces for L2BD forwarding are setup | ${dut2_node}
-| | ... | ${sock1}
-| | ... | ${sock2}
-| | ... | ${dut2_vhost1}
-| | ... | ${dut2_vhost2}
-| | And VM for Vhost L2BD forwarding is setup | ${dut1_node} | ${sock1}
-| | ... | ${sock2} | ${qemu1}
-| | And VM for Vhost L2BD forwarding is setup | ${dut2_node} | ${sock1}
-| | ... | ${sock2} | ${qemu2}
-| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr1}
-| | ... | ${ip4_prefix}
-| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr2}
-| | ... | ${ip4_prefix}
-| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr2}
-| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr1}
-| | ${dut1s_vxlan}= | And Create VXLAN interface | ${dut1_node} | ${vni_1}
-| | | ... | ${ip4_addr1} | ${ip4_addr2}
-| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
-| | | ... | ${ip4_addr2} | ${ip4_addr1}
-| | And Interfaces are added to BD | ${dut1_node} | ${bd_id1}
-| | ... | ${dut1_to_tg} | ${${dut1_vhost1}}
-| | And Interfaces are added to BD | ${dut1_node} | ${bd_id2}
-| | ... | ${dut1s_vxlan} | ${${dut1_vhost2}}
-| | And Interfaces are added to BD | ${dut2_node} | ${bd_id1}
-| | ... | ${dut2_to_tg} | ${${dut2_vhost1}}
-| | And Interfaces are added to BD | ${dut2_node} | ${bd_id2}
-| | ... | ${dut2s_vxlan} | ${${dut2_vhost2}}
-| | Then Send and receive ICMPv4 bidirectionally
-| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2}
-| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| | ... | AND | Show vpp trace dump on all DUTs
-| | ... | AND | Run keyword | Qemu Teardown | ${dut1_node}
-| | ... | ${${qemu1}} | ${qemu1}
-| | ... | AND | Run keyword | Qemu Teardown | ${dut2_node}
-| | ... | ${${qemu2}} | ${qemu2}
-| | ... | AND | Check VPP PID in Teardown
-
-| TC08:DUT1 and DUT2 with two L2BDs and VXLANoIPv6 tunnel switch ICMPv6 between TG links and VM links
-| | [Documentation]
-| | ... | [Top] TG-DUT1-VM-DUT1-DUT2-VM-DUT2-TG.
-| | ... | [Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on DUT1-DUT2; Eth-IPv4-ICMPv4
-| | ... | on TG-DUTn and DUTn=VM.
-| | ... | [Cfg] On both DUTs configure two L2BDs (MAC learning enabled); first
-| | ... | L2BD with untagged interface to TG and vhost-user interface to local
-| | ... | VM, second one with vhost-user interface to local VM and VXLAN
-| | ... | interface towards the other DUT. Configure linux bridge on both VMs
-| | ... | to pass traffic between both vhost-user interfaces.
-| | ... | [Ver] Make TG send ICMPv6 Echo Req between two of its interfaces to
-| | ... | be switched by DUT1 and DUT2; verify packets are switched between
-| | ... | these TG interfaces.
-| | ... | [Ref] RFC7348.
-| | [Tags] | VPP_VM_ENV
-| | Given Path for 3-node testing is set
-| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']}
-| | And Interfaces in 3-node path are up
-| | When VPP Vhost interfaces for L2BD forwarding are setup | ${dut1_node}
-| | ... | ${sock1}
-| | ... | ${sock2}
-| | ... | ${dut1_vhost1}
-| | ... | ${dut1_vhost2}
-| | And VPP Vhost interfaces for L2BD forwarding are setup | ${dut2_node}
-| | ... | ${sock1}
-| | ... | ${sock2}
-| | ... | ${dut2_vhost1}
-| | ... | ${dut2_vhost2}
-| | And VM for Vhost L2BD forwarding is setup | ${dut1_node} | ${sock1}
-| | ... | ${sock2} | ${qemu1}
-| | And VM for Vhost L2BD forwarding is setup | ${dut2_node} | ${sock1}
-| | ... | ${sock2} | ${qemu2}
-| | And Set Interface Address | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1}
-| | ... | ${ip6_prefix}
-| | And Set Interface Address | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2}
-| | ... | ${ip6_prefix}
-| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip4_addr2}
-| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip4_addr1}
-| | ${dut1s_vxlan}= | And Create VXLAN interface | ${dut1_node} | ${vni_1}
-| | | ... | ${ip6_addr1} | ${ip6_addr2}
-| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1}
-| | | ... | ${ip6_addr2} | ${ip6_addr1}
-| | And Interfaces are added to BD | ${dut1_node} | ${bd_id1}
-| | ... | ${dut1_to_tg} | ${${dut1_vhost1}}
-| | And Interfaces are added to BD | ${dut1_node} | ${bd_id2}
-| | ... | ${dut1s_vxlan} | ${${dut1_vhost2}}
-| | And Interfaces are added to BD | ${dut2_node} | ${bd_id1}
-| | ... | ${dut2_to_tg} | ${${dut2_vhost1}}
-| | And Interfaces are added to BD | ${dut2_node} | ${bd_id2}
-| | ... | ${dut2s_vxlan} | ${${dut2_vhost2}}
-| | Then Send and receive ICMPv6 bidirectionally
-| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2}
-| | [Teardown] | Run Keywords | Show Packet Trace on All DUTs | ${nodes}
-| | ... | AND | Show vpp trace dump on all DUTs
-| | ... | AND | Run keyword | Qemu Teardown | ${dut1_node}
-| | ... | ${${qemu1}} | ${qemu1}
-| | ... | AND | Run keyword | Qemu Teardown | ${dut2_node}
-| | ... | ${${qemu2}} | ${qemu2}
-| | ... | AND | Check VPP PID in Teardown