aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Gelety <jgelety@cisco.com>2016-05-19 16:36:48 +0200
committerJan Gelety <jgelety@cisco.com>2016-05-31 11:05:07 +0200
commitca55b7289dab93e87bf2a6dff183c3478f085565 (patch)
treefdaad7f90aefc8aa3faced59952a87125e8db5b9
parent3b4ed04d3bd70f306680aa368c02c5eab078b0df (diff)
CSIT-98: MAC split-horizon group, part II
- test cases to test MAC split-horizon group functionality together with VXLAN tunnel over IPv4 and over IPv6 - two IPv6 tests tagged EXPECTED_FAILING until VPP-98 is closed - added update of bootstrap.sh - vpp build updated to version 16.09-rc0~33-g4b46c84~b200_amd64 Change-Id: I1da6a98b11f5c39cd114abb35bb8f398cbbebf63 Signed-off-by: Jan Gelety <jgelety@cisco.com>
-rwxr-xr-xbootstrap.sh4
-rw-r--r--resources/libraries/robot/bridge_domain.robot4
-rw-r--r--tests/suites/vxlan/vxlan_bd_untagged.robot346
3 files changed, 336 insertions, 18 deletions
diff --git a/bootstrap.sh b/bootstrap.sh
index d1ca2f4606..9c7db03b01 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -110,8 +110,8 @@ if [ "${#}" -ne "0" ]; then
echo ${arr[0]}
else
rm -f *.deb
- VPP_STABLE_VER="1.0.0-451~g686a5a5_amd64"
- VPP_REPO_URL="https://nexus.fd.io/service/local/repositories/fd.io.dev/content/io/fd/vpp"
+ VPP_STABLE_VER="16.09-rc0~33-g4b46c84~b200_amd64"
+ VPP_REPO_URL="https://nexus.fd.io/service/local/repositories/fd.io.master.ubuntu.trusty.main/content/io/fd/vpp"
wget -q "${VPP_REPO_URL}/vpp/${VPP_STABLE_VER}/vpp-${VPP_STABLE_VER}.deb" || exit
wget -q "${VPP_REPO_URL}/vpp-dbg/${VPP_STABLE_VER}/vpp-dbg-${VPP_STABLE_VER}.deb" || exit
wget -q "${VPP_REPO_URL}/vpp-dev/${VPP_STABLE_VER}/vpp-dev-${VPP_STABLE_VER}.deb" || exit
diff --git a/resources/libraries/robot/bridge_domain.robot b/resources/libraries/robot/bridge_domain.robot
index f1458a0023..96af11d2da 100644
--- a/resources/libraries/robot/bridge_domain.robot
+++ b/resources/libraries/robot/bridge_domain.robot
@@ -216,7 +216,7 @@
| | ... | *Example:*
| | ...
| | ... | \| VM for Vhost L2BD forwarding is setup \| ${nodes['DUT1']} \
-| | ... | \| /tmp/sock1 \| /tmp/sock2
+| | ... | \| /tmp/sock1 \| /tmp/sock2 \|
| | [Arguments] | ${node} | ${sock1} | ${sock2}
| | Set Test Variable | ${vm_node} | ${None}
| | Qemu Set Node | ${node}
@@ -247,7 +247,7 @@
| | ... | *Example:*
| | ...
| | ... | \| VPP Vhost interfaces for L2BD forwarding are setup \
-| | ... | \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2
+| | ... | \| ${nodes['DUT1']} \| /tmp/sock1 \| /tmp/sock2 \|
| | [Arguments] | ${node} | ${sock1} | ${sock2}
| | ${vhost_if1}= | Vpp Create Vhost User Interface | ${node} | ${sock1}
| | ${vhost_if2}= | Vpp Create Vhost User Interface | ${node} | ${sock2}
diff --git a/tests/suites/vxlan/vxlan_bd_untagged.robot b/tests/suites/vxlan/vxlan_bd_untagged.robot
index ecf2c55e33..5ce93e04b6 100644
--- a/tests/suites/vxlan/vxlan_bd_untagged.robot
+++ b/tests/suites/vxlan/vxlan_bd_untagged.robot
@@ -24,23 +24,341 @@
| Test Teardown | Show Packet Trace on All DUTs | ${nodes}
*** Variables ***
-| ${VNI}= | 23
-| ${BID}= | 23
+| ${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
*** Test Cases ***
-| VPP can pass IPv4 bidirectionally through VXLAN
+| VPP can pass IPv4 bidirectionally through VXLAN using bridge domain
+| | [Documentation] | Create VXLAN interface on both VPP nodes. Create one
+| | ... | bridge domain (learning enabled) on both VPP nodes, add
+| | ... | VXLAN interface and interface toward TG to bridge domains
+| | ... | and check traffic bidirectionally.
| | 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 IP addresses are set on interfaces | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
-| | ... | ${dut2_node} | ${dut2_to_dut1} | ${NONE}
-| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${VNI}
-| | | ... | ${dut1s_ip_address} | ${dut2s_ip_address}
-| | And Interfaces are added to BD | ${dut1_node} | ${BID}
-| | ... | ${dut1_to_tg} | ${dut1s_vxlan}
-| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${VNI}
-| | | ... | ${dut2s_ip_address} | ${dut1s_ip_address}
-| | And Interfaces are added to BD | ${dut2_node} | ${BID}
-| | ... | ${dut2_to_tg} | ${dut2s_vxlan}
+| | And Interfaces in 3-node path are up
+| | And IP addresses are set on interfaces | ${dut1_node} | ${dut1_to_dut2} | ${NONE}
+| | ... | ${dut2_node} | ${dut2_to_dut1} | ${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}
+
+| Vpp forwards ICMPv4 packets through VXLAN tunnels in the same split-horizon group of one L2 bridge domain
+| | [Documentation] | Create two VXLAN interfaces on both VPP nodes. Create one
+| | ... | bridge domain (learning enabled) on the first VPP node,
+| | ... | add VXLAN interfaces to the same split-horizon group of
+| | ... | the bridge domain where interfaces toward TG are added to.
+| | ... | Create two bridge domains (learning enabled) on the second
+| | ... | VPP node and add one VXLAN interface and one interface
+| | ... | toward TG to each of them. Check traffic bidirectionally.
+| | [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}
+
+| Vpp forwards ICMPv4 packets through VXLAN tunnels in different split-horizon groups of one L2 bridge domain
+| | [Documentation] | Create two VXLAN interfaces on both VPP nodes. Create one
+| | ... | bridge domain (learning enabled) on the first VPP node,
+| | ... | add VXLAN interfaces to different split-horizon groups of
+| | ... | the bridge domain where interfaces toward TG are added to.
+| | ... | Create two bridge domains (learning enabled) on the second
+| | ... | VPP node and add one VXLAN interface and one interface
+| | ... | toward TG to each of them. Check traffic bidirectionally.
+| | [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}
+
+| VPP can pass IPv6 bidirectionally through VXLAN using bridge domain
+| | [Documentation] | Create VXLAN interface on both VPP nodes. Create one
+| | ... | bridge domain (learning enabled) on both VPP nodes, add
+| | ... | VXLAN interface and interface toward TG to bridge domains
+| | ... | and check traffic bidirectionally.
+| | [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}
+
+| Vpp forwards ICMPv6 packets through VXLAN tunnels in the same split-horizon group of one L2 bridge domain
+| | [Documentation] | Create two VXLAN interfaces on both VPP nodes. Create one
+| | ... | bridge domain (learning enabled) on the first VPP node,
+| | ... | add VXLAN interfaces to the same split-horizon group of
+| | ... | the bridge domain where interfaces toward TG are added to.
+| | ... | Create two bridge domains (learning enabled) on the second
+| | ... | VPP node and add one VXLAN interface and one interface
+| | ... | toward TG to each of them. Check traffic bidirectionally.
+| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | EXPECTED_FAILING
+| | 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}
+
+| Vpp forwards ICMPv6 packets through VXLAN tunnels in different split-horizon groups of one L2 bridge domain
+| | [Documentation] | Create two VXLAN interfaces on both VPP nodes. Create one
+| | ... | bridge domain (learning enabled) on the first VPP node,
+| | ... | add VXLAN interfaces to different split-horizon groups of
+| | ... | the bridge domain where interfaces toward TG are added to.
+| | ... | Create two bridge domains (learning enabled) on the second
+| | ... | VPP node and add one VXLAN interface and one interface
+| | ... | toward TG to each of them. Check traffic bidirectionally.
+| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | EXPECTED_FAILING
+| | 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}