+
+| 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}