From 6721e7f09aa95bff6622068332a3f56afad9c87b Mon Sep 17 00:00:00 2001 From: Tibor Frank Date: Tue, 20 Jun 2017 13:57:08 +0200 Subject: CSIT-687: Directory structure reorganization Change-Id: I772c9e214be2461adf58124998d272e7d795220f Signed-off-by: Tibor Frank Signed-off-by: Maciek Konstantynowicz --- ...ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot | 221 +++++++++++ ...2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot | 405 +++++++++++++++++++++ ...q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot | 394 ++++++++++++++++++++ ...h2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot | 206 +++++++++++ .../func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot | 91 +++++ .../func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot | 85 +++++ .../l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot | 86 +++++ 7 files changed, 1488 insertions(+) create mode 100644 tests/vpp/func/l2bd/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot create mode 100644 tests/vpp/func/l2bd/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot create mode 100644 tests/vpp/func/l2bd/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot create mode 100644 tests/vpp/func/l2bd/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot create mode 100644 tests/vpp/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot create mode 100644 tests/vpp/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot create mode 100644 tests/vpp/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot (limited to 'tests/vpp/func/l2bd') diff --git a/tests/vpp/func/l2bd/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot b/tests/vpp/func/l2bd/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot new file mode 100644 index 0000000000..38f370ef34 --- /dev/null +++ b/tests/vpp/func/l2bd/eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot @@ -0,0 +1,221 @@ +# 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/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2BD with VLAN tag rewrite test cases - transalte-2-1* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 or +| ... | Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, Eth-dot1q-IPv4-ICMPv4 or +| ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv4-ICMPv4 or Eth-IPv6-ICMPv6 +| ... | on TG-DUT2 for L2 switching of IPv4/IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with bridge domain (L2BD) +| ... | switching combined with MAC learning enabled and added VLAN +| ... | sub-interface with VLAN tag rewrite translate-2-1 method of interface +| ... | towards TG and interface towards DUT2. DUT2 is configured with L2 +| ... | bridge domain (L2BD) switching between VLAN sub-interface with VLAN tag +| ... | rewrite pop-1 method of interface towards DUT1 and interface towards TG. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are +| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; +| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. + +*** Variables *** +| ${bd_id1}= | 1 + +| ${subid}= | 10 + +| ${outer_vlan_id1}= | 110 +| ${outer_vlan_id2}= | 120 +| ${outer_vlan_wrong}= | 150 + +| ${inner_vlan_id1}= | 210 + +| ${src_ip6}= | 3ffe:63::1 +| ${dst_ip6}= | 3ffe:63::2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD and VLAN translate-2-1 (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1q-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite +| | ... | translate-2-1 method; on DUT2 configure L2 bridge domain (L2BD) with +| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} + +| TC02: DUT1 and DUT2 with L2BD and VLAN translate-2-1 with wrong tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1q-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite +| | ... | translate-2-1 method to set tag different from tag set on VLAN +| | ... | sub-interface of DUT2; on DUT2 configure L2 bridge domain (L2BD) with +| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + + +| TC03: DUT1 and DUT2 with L2BD and VLAN translate-2-1 (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite +| | ... | translate-2-1 method; on DUT2 configure L2 bridge domain (L2BD) with +| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip6} +| | ... | dst_ip=${dst_ip6} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC04: DUT1 and DUT2 with L2BD and VLAN translate-2-1 with wrong tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1q-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one Dot1ad sub-interface towards TG with VLAN tag rewrite +| | ... | translate-2-1 method to set tag different from tag set on VLAN +| | ... | sub-interface of DUT2; on DUT2 configure L2 bridge domain (L2BD) with +| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-1 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-1 | tag1_id=${outer_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} diff --git a/tests/vpp/func/l2bd/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot b/tests/vpp/func/l2bd/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot new file mode 100644 index 0000000000..06a4794086 --- /dev/null +++ b/tests/vpp/func/l2bd/eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot @@ -0,0 +1,405 @@ +# 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/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2BD with VLAN tag rewrite test cases - translate-2-2* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1ad-IPv4-ICMPv4 or +| ... | Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and DUT1-DUT2, Eth-IPv4-ICMPv4 or +| ... | Eth-IPv6-ICMPv6 on TG-DUT2 for L2 switching of IPv4/IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with bridge domain (L2BD) +| ... | switching combined with MAC learning enabled and added VLAN +| ... | sub-interface with VLAN tag rewrite translate-2-2 method of interface +| ... | towards TG and interface towards DUT2. DUT2 is configured with L2 +| ... | bridge domain (L2BD) switching between VLAN sub-interface with VLAN tag +| ... | rewrite pop-2 method of interface towards DUT1 and interface towards TG. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are +| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; +| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. + +*** Variables *** +| ${bd_id1}= | 1 + +| ${subid}= | 10 + +| ${outer_vlan_id1}= | 110 +| ${outer_vlan_id2}= | 120 +| ${outer_vlan_wrong}= | 150 + +| ${inner_vlan_id1}= | 210 +| ${inner_vlan_id2}= | 220 +| ${inner_vlan_wrong}= | 250 + +| ${src_ip6}= | 3ffe:63::1 +| ${dst_ip6}= | 3ffe:63::2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD and VLAN translate-2-2 switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG and +| | ... | one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-2 +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify +| | ... | that packet is received. [Ref] IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} + +| TC02: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong inner tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set inner tag different from inner tag set on Dot1ad sub-interface of +| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to +| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite +| | ... | pop-2 tagged with Dot1ad tags from one of its interfaces to another +| | ... | one method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; +| | ... | verify that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC03: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set outer tag different from outer tag set on Dot1ad sub-interface of +| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to +| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite +| | ... | pop-2 tagged with Dot1ad tags from one of its interfaces to another +| | ... | one method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; +| | ... | verify that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC04: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer and inner tags used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set tags different from tags set on Dot1ad sub-interface of DUT2; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG +| | ... | and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-2 +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | method. [Ver] Make TG send ICMPv4 Echo Req via DUT1 and DUT2; verify +| | ... | that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC05: DUT1 and DUT2 with L2BD and VLAN translate-2-2 switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG and +| | ... | one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify +| | ... | that packet is received. [Ref] IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip6} +| | ... | dst_ip=${dst_ip6} | encaps=Dot1ad | vlan1=${outer_vlan_id1} +| | ... | vlan2=${inner_vlan_id1} + +| TC06: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong inner tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set inner tag different from inner tag set on Dot1ad sub-interface of +| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to +| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite +| | ... | pop-1 tagged with Dot1ad tags from one of its interfaces to another +| | ... | one method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; +| | ... | verify that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} + +| TC07: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set outer tag different from outer tag set on Dot1ad sub-interface of +| | ... | DUT2; on DUT2 configure L2 bridge domain (L2BD) with one interface to +| | ... | TG and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite +| | ... | pop-1 tagged with Dot1ad tags from one of its interfaces to another +| | ... | one method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; +| | ... | verify that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} + +| TC08: DUT1 and DUT2 with L2BD and VLAN translate-2-2 with wrong outer and inner tags used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1ad-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one Dot1ad +| | ... | sub-interface towards TG with VLAN tag rewrite translate-2-2 method to +| | ... | set tags different from tags set on Dot1ad sub-interface of DUT2; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG +| | ... | and one Dot1ad sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | tagged with Dot1ad tags from one of its interfaces to another one +| | ... | method. [Ver] Make TG send ICMPv6 Echo Req via DUT1 and DUT2; verify +| | ... | that packet is not received. [Ref] IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create tagged sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id1} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-2-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1ad +| | ... | vlan1=${outer_vlan_id1} | vlan2=${inner_vlan_id1} diff --git a/tests/vpp/func/l2bd/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot b/tests/vpp/func/l2bd/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot new file mode 100644 index 0000000000..e71e75f563 --- /dev/null +++ b/tests/vpp/func/l2bd/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot @@ -0,0 +1,394 @@ +# 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/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2BD with VLAN tag rewrite test cases - translate-1-2* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-ICMPv4 or +| ... | Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, Eth-dot1ad-IPv4-ICMPv4 or +| ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv4-ICMPv4 or Eth-IPv6-ICMPv6 +| ... | on TG-DUT2 for L2 switching of IPv4/IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with bridge domain (L2BD) +| ... | switching combined with MAC learning enabled and added VLAN +| ... | sub-interface with VLAN tag rewrite translate-1-2 method of interface +| ... | towards TG and interface towards DUT2. DUT2 is configured with L2 +| ... | bridge domain (L2BD) switching between VLAN sub-interface with VLAN tag +| ... | rewrite pop-2 method of interface towards DUT1 and interface towards TG. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are +| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; +| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. + +*** Variables *** +| ${bd_id1}= | 1 + +| ${subid}= | 10 + +| ${outer_vlan_id1}= | 110 +| ${outer_vlan_id2}= | 120 +| ${outer_vlan_wrong}= | 150 + +| ${inner_vlan_id1}= | 210 +| ${inner_vlan_id2}= | 220 +| ${inner_vlan_wrong}= | 250 + +| ${src_ip6}= | 3ffe:63::1 +| ${dst_ip6}= | 3ffe:63::2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD and VLAN translate-1-2 (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method; on DUT2 configure L2 bridge domain (L2BD) with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id1} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} + +| TC02: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong inner tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set inner tag different from inner tag set on +| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 bridge domain with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC03: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong outer tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set outer tag different from outer tag set on +| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 bridge domain with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv4 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id1} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC04: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong outer and inner tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv4-ICMPv4 on DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set outer and inner tags different from tags +| | ... | set on Dot1ad sub-interface of DUT2; on DUT2 configure L2 +| | ... | bridge domain with one interface to TG and one Dot1ad sub-interface +| | ... | towards DUT1 with VLAN tag rewrite pop-2 method. [Ver] Make TG send +| | ... | ICMPv4 Echo Req tagged with one Dot1q tag from one of its interfaces +| | ... | to another one via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id1} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC05: DUT1 and DUT2 with L2BD and VLAN translate-1-2 (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method; on DUT2 configure L2 bridge domain (L2BD) with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip6} +| | ... | dst_ip=${dst_ip6} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC06: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong inner tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set inner tag different from inner tag set on +| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 bridge domain with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_id2} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} + +| TC07: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong outer tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set outer tag different from outer tag set on +| | ... | Dot1ad sub-interface of DUT2; on DUT2 configure L2 bridge domain with +| | ... | one interface to TG and one Dot1ad sub-interface towards DUT1 with +| | ... | VLAN tag rewrite pop-2 method. [Ver] Make TG send ICMPv6 Echo Req +| | ... | tagged with one Dot1q tag from one of its interfaces to another one +| | ... | via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} + +| TC08: DUT1 and DUT2 with L2BD and VLAN translate-1-2 with wrong outer and inner tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1, \ +| | ... | Eth-dot1ad-IPv6-ICMPv6 on DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. +| | ... | [Cfg] On DUT1 configure L2 bridge domain (L2BD) with one interface to +| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite +| | ... | translate-1-2 method to set outer and inner tags different from tags +| | ... | set on Dot1ad sub-interface of DUT2; on DUT2 configure L2 +| | ... | bridge domain with one interface to TG and one Dot1ad sub-interface +| | ... | towards DUT1 with VLAN tag rewrite pop-2 method. [Ver] Make TG send +| | ... | ICMPv6 Echo Req tagged with one Dot1q tag from one of its interfaces +| | ... | to another one via DUT1 and DUT2; verify that packet is not received. +| | ... | [Ref] IEEE 802.1q, IEEE 802.1ad +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create tagged sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${subid} +| | ... | outer_vlan_id=${outer_vlan_id2} | inner_vlan_id=${inner_vlan_id2} +| | ... | type_subif=two_tags dot1ad +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-2 | push_dot1q=${False} +| | ... | tag1_id=${outer_vlan_wrong} | tag2_id=${inner_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-2 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} diff --git a/tests/vpp/func/l2bd/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot b/tests/vpp/func/l2bd/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot new file mode 100644 index 0000000000..aba84789b1 --- /dev/null +++ b/tests/vpp/func/l2bd/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot @@ -0,0 +1,206 @@ +# 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/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/l2/tagging.robot +| Resource | resources/libraries/robot/l2/l2_traffic.robot +| Library | resources.libraries.python.Trace +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2BD with VLAN tag rewrite test cases - translate-1-1* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-ICMPv4 or +| ... | Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and DUT1-DUT2, Eth-IPv4-ICMPv4 or +| ... | Eth-IPv6-ICMPv6 on TG-DUT2 for L2 switching of IPv4/IPv6. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with bridge domain (L2BD) +| ... | switching combined with MAC learning enabled and added VLAN +| ... | sub-interface with VLAN tag rewrite translate-1-1 method of interface +| ... | towards TG and interface towards DUT2. DUT2 is configured with L2 +| ... | bridge domain (L2BD) switching between VLAN sub-interface with VLAN tag +| ... | rewrite pop-1 method of interface towards DUT1 and interface towards TG. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are +| ... | sent from TG on link to DUT1 and received in TG on link form DUT2; +| ... | on receive TG verifies packets for correctness and their IPv4 src-addr, +| ... | dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q, IEEE 802.1ad. + +*** Variables *** +| ${bd_id1}= | 1 + +| ${subid}= | 10 + +| ${outer_vlan_id1}= | 110 +| ${outer_vlan_id2}= | 120 +| ${outer_vlan_wrong}= | 150 + +| ${inner_vlan_id1}= | 210 +| ${inner_vlan_wrong}= | 250 + +| ${src_ip6}= | 3ffe:63::1 +| ${dst_ip6}= | 3ffe:63::2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD and VLAN translate-1-1 (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain with one interface to DUT2 and one VLAN +| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG +| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | method. [Ver] Make TG send ICMPv4 Echo Req tagged with one Dot1q tag +| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify +| | ... | that packet is received. [Ref] IEEE 802.1q +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} + +| TC02: DUT1 and DUT2 with L2BD and VLAN translate-1-1 with wrong tag used (DUT1) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-ICMPv4 on TG-DUT1 and \ +| | ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one VLAN +| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method +| | ... | to set tag different from tag set on VLAN sub-interface of DUT2; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG +| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | method. [Ver] Make TG send ICMPv4 Echo Req tagged with one Dot1q tag +| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify +| | ... | that packet is not received. [Ref] IEEE 802.1q +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC03: DUT1 and DUT2 with L2BD and VLAN translate-1-1 (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one VLAN +| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG +| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | method. [Ver] Make TG send ICMPv6 Echo Req tagged with one Dot1q tag +| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify +| | ... | that packet is received. [Ref] IEEE 802.1q +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Send ICMP packet and verify received packet +| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip6} +| | ... | dst_ip=${dst_ip6} | encaps=Dot1q | vlan1=${outer_vlan_id1} + +| TC04: DUT1 and DUT2 with L2BD and VLAN translate-1-1 with wrong tag used (DUT1) switch ICMPv6 between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv6-ICMPv6 on TG-DUT1 and \ +| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUT2. [Cfg] On DUT1 configure L2 +| | ... | bridge domain (L2BD) with one interface to DUT2 and one VLAN +| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method +| | ... | to set tag different from tag set on VLAN sub-interface of DUT2; +| | ... | on DUT2 configure L2 bridge domain (L2BD) with one interface to TG +| | ... | and one VLAN sub-interface towards DUT1 with VLAN tag rewrite pop-1 +| | ... | method. [Ver] Make TG send ICMPv6 Echo Req tagged with one Dot1q tag +| | ... | from one of its interfaces to another one via DUT1 and DUT2; verify +| | ... | that packet is not received. [Ref] IEEE 802.1q +| | [Tags] | SKIP_PATCH +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | ${vlan1_name} | ${vlan1_index}= | When Create vlan sub-interface +| | ... | ${dut1_node} | ${dut1_to_tg} | ${outer_vlan_id1} +| | ${vlan2_name} | ${vlan2_index}= | And Create vlan sub-interface +| | ... | ${dut2_node} | ${dut2_to_dut1} | ${outer_vlan_id2} +| | And Configure L2 tag rewrite method on interface | ${dut1_node} +| | ... | ${vlan1_index} | translate-1-1 | tag1_id=${outer_vlan_wrong} +| | And Configure L2 tag rewrite method on interface | ${dut2_node} +| | ... | ${vlan2_index} | pop-1 +| | And Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${vlan1_index} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut2_node} | ${vlan2_index} +| | ... | ${bd_id1} +| | Then Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMP packet and verify received packet | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} | src_ip=${src_ip6} | dst_ip=${dst_ip6} | encaps=Dot1q +| | ... | vlan1=${outer_vlan_id1} diff --git a/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot b/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot new file mode 100644 index 0000000000..43e092dae2 --- /dev/null +++ b/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemaclrn-func.robot @@ -0,0 +1,91 @@ +# 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/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2 bridge-domain test cases* +| ... +| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links +| ... | between nodes; TG-DUT1-DUT2-TG 3-node circular topology with +| ... | single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of +| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply +| ... | to all links. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) switching combined with MAC learning enabled. +| ... | *[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:* + +*** Variables *** +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 + +*** Test Cases *** +| TC01: DUT reports active interfaces +| | [Documentation] +| | ... | [Top] TG=DUT1; TG-DUT1-DUT2-TG. [Enc] None. [Cfg] Discovered \ +| | ... | active interfaces. [Ver] Report active interfaces on DUT. [Ref] +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO | 3_NODE_SINGLE_LINK_TOPO +| | VPP reports interfaces through VAT on '${nodes['DUT1']}' + +| TC02: DUT with L2BD (MAC learning) switch ICMPv4 between two TG links +| | [Documentation] +| | ... | [Top] TG=DUT1. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 configure \ +| | ... | two i/fs into L2BD with MAC learning. [Ver] Make TG verify +| | ... | ICMPv4 Echo Req pkts are switched thru DUT1 in both directions +| | ... | and are correct on receive. [Ref] +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path in 2-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | When Create bridge domain | ${dut_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut_node} | ${dut_to_tg_if2} +| | ... | ${bd_id1} +| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} + +| TC03: DUT1 and DUT2 with L2BD (MAC learning) switch between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [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] +| | [Tags] | 3_NODE_SINGLE_LINK_TOPO +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | When Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_dut1} +| | ... | ${bd_id2} +| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot b/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot new file mode 100644 index 0000000000..ce99a35fcb --- /dev/null +++ b/tests/vpp/func/l2bd/eth2p-eth-l2bdbasemacstc-func.robot @@ -0,0 +1,85 @@ +# 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/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV | SKIP_VPP_PATCH +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2 bridge-domain test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of +| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply +| ... | to all links. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) switching combined with static MACs. +| ... | *[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:* + +*** Variables *** +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD (static MACs) switch between two TG links +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 and \ +| | ... | DUT2 configure two i/fs into L2BD with static MACs. [Ver] Make +| | ... | TG verify ICMPv4 Echo Req pkts are switched thru DUT1 and DUT2 +| | ... | in both directions and are correct on receive. [Ref] +| | [Tags] | 3_NODE_SINGLE_LINK_TOPO +| | Given Configure path in 3-node circular topology +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Set interfaces in 3-node circular topology up +| | When Create bridge domain | ${dut1_node} | ${bd_id1} | learn=${FALSE} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg} +| | ... | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut1} +| | ... | ${dut1_node} +| | ... | ${dut1_to_tg} +| | ... | ${bd_id1} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut2} +| | ... | ${dut1_node} +| | ... | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id2} +| | ... | learn=${FALSE} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg} +| | ... | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_dut1} +| | ... | ${bd_id2} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut1} +| | ... | ${dut2_node} +| | ... | ${dut2_to_dut1} +| | ... | ${bd_id2} +| | And Add destination port to L2FIB | ${tg_node} +| | ... | ${tg_to_dut2} +| | ... | ${dut2_node} +| | ... | ${dut2_to_tg} +| | ... | ${bd_id2} +| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} | ${tg_to_dut1} +| | ... | ${tg_to_dut2} diff --git a/tests/vpp/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot b/tests/vpp/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot new file mode 100644 index 0000000000..04cb91376a --- /dev/null +++ b/tests/vpp/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot @@ -0,0 +1,86 @@ +# 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/shared/default.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/vm/qemu.robot +| Library | resources.libraries.python.Trace +| Force Tags | HW_ENV | VM_ENV +| Test Setup | Set up functional test +| Test Teardown | Tear down functional test +| Documentation | *L2 bridge-domain test cases* +| ... +| ... | *[Top] Network Topologies:* TG=DUT1=DUT2=TG 3-node circular topology +| ... | with double parallel links. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of +| ... | IPv4; Eth-IPv6-ICMPv6 for L2 switching of IPv6 use. Both apply +| ... | to all links. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) switching combined with MAC learning enabled +| ... | and Split Horizon Groups (SHG). +| ... | *[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:* + +*** Variables *** +| ${bd_id1}= | 1 +| ${bd_id2}= | 2 + +| ${shg1}= | 3 +| ${shg2}= | 4 + +*** Test Cases *** +| TC01: DUT1 and DUT2 with L2BD (MAC learn) and SHG switch between four TG links +| | [Documentation] +| | ... | [Top] TG=DUT1=DUT2=TG. [Enc] Eth-IPv4-ICMPv4. [Cfg] On DUT1 and \ +| | ... | DUT2 configure four i/fs into L2BD with MAC learning and the +| | ... | same SHG on i/fs towards TG. [Ver] Make TG verify ICMPv4 Echo +| | ... | Req pkts are switched thru DUT1 and DUT2 in both directions and +| | ... | are correct on receive; verify no pkts are switched thru SHG +| | ... | isolated interfaces. [Ref] +| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO +| | Given Configure path for 3-node BD-SHG test | ${nodes['TG']} +| | ... | ${nodes['DUT1']} | ${nodes['DUT2']} +| | And Set interfaces in 3-node BD-SHG test up +| | When Create bridge domain | ${dut1_node} | ${bd_id1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if1} +| | ... | ${bd_id1} | ${shg1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_tg_if2} +| | ... | ${bd_id1} | ${shg1} +| | And Add interface to bridge domain | ${dut1_node} | ${dut1_to_dut2} +| | ... | ${bd_id1} +| | And Create bridge domain | ${dut2_node} | ${bd_id2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if1} +| | ... | ${bd_id2} | ${shg2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_tg_if2} +| | ... | ${bd_id2} | ${shg2} +| | And Add interface to bridge domain | ${dut2_node} | ${dut2_to_dut1} +| | ... | ${bd_id2} +| | Then Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if1} | ${tg_to_dut2_if1} +| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if1} | ${tg_to_dut2_if2} +| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if2} | ${tg_to_dut2_if1} +| | And Send ICMPv4 bidirectionally and verify received packets | ${tg_node} +| | ... | ${tg_to_dut1_if2} | ${tg_to_dut2_if2} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMPv4 bidirectionally and verify received packets +| | | ... | ${tg_node} | ${tg_to_dut1_if1} | ${tg_to_dut1_if2} +| | And Run Keyword And Expect Error | ICMP echo Rx timeout +| | ... | Send ICMPv4 bidirectionally and verify received packets +| | | ... | ${tg_node} | ${tg_to_dut2_if1} | ${tg_to_dut2_if2} -- cgit 1.2.3-korg