diff options
14 files changed, 204 insertions, 1322 deletions
diff --git a/resources/libraries/bash/function/common.sh b/resources/libraries/bash/function/common.sh index 751d994c09..a03e90422c 100644 --- a/resources/libraries/bash/function/common.sh +++ b/resources/libraries/bash/function/common.sh @@ -959,7 +959,7 @@ function select_vpp_device_tags () { set -exuo pipefail case "${TEST_CODE}" in - # Select specific performance tests based on jenkins job type variable. + # Select specific device tests based on jenkins job type variable. * ) if [[ -z "${TEST_TAG_STRING-}" ]]; then # If nothing is specified, we will run pre-selected tests by @@ -973,6 +973,20 @@ function select_vpp_device_tags () { ;; esac + # Blacklisting certain tags per topology. + # + # Reasons for blacklisting: + # - avf - AVF is not possible to run on enic driver of VirtualBox. + # - vhost - VirtualBox does not support nesting virtualization on Intel CPU. + case "${TEST_CODE}" in + *"1n-vbox"*) + test_tag_array+=("!avf") + test_tag_array+=("!vhost") + ;; + *) + ;; + esac + TAGS=() # We will prefix with devicetest to prevent running other tests diff --git a/resources/libraries/bash/function/device.sh b/resources/libraries/bash/function/device.sh index e31ead734a..ce88ec8c46 100644 --- a/resources/libraries/bash/function/device.sh +++ b/resources/libraries/bash/function/device.sh @@ -305,11 +305,13 @@ function get_available_interfaces () { TG_PCIDEVS=() TG_NETMACS=() TG_DRIVERS=() + TG_VLANS=() # DUT1 side of connections. DUT1_NETDEVS=() DUT1_PCIDEVS=() DUT1_NETMACS=() DUT1_DRIVERS=() + DUT1_VLANS=() # Find the first ${device_count} number of available TG Linux network # VF device names. Only allowed VF PCI IDs are filtered. @@ -350,17 +352,21 @@ function get_available_interfaces () { get_pci_addr get_mac_addr get_krn_driver + get_vlan_filter TG_PCIDEVS+=(${PCI_ADDR}) TG_NETMACS+=(${MAC_ADDR}) TG_DRIVERS+=(${KRN_DRIVER}) + TG_VLANS+=(${VLAN_ID}) done for NETDEV in "${DUT1_NETDEVS[@]}"; do get_pci_addr get_mac_addr get_krn_driver + get_vlan_filter DUT1_PCIDEVS+=(${PCI_ADDR}) DUT1_NETMACS+=(${MAC_ADDR}) DUT1_DRIVERS+=(${KRN_DRIVER}) + DUT1_VLANS+=(${VLAN_ID}) done # We need at least two interfaces for TG/DUT1 for building topology. @@ -433,6 +439,24 @@ function get_pci_addr () { } +function get_vlan_filter () { + + # Get VLAN stripping filter from PF searched by mac adress. + # + # Variables read: + # - MAC_ADDR - MAC address of VF. + # Variables set: + # - VLAN_ID - VLAN ids. + + set -exuo pipefail + + # Sed regular expression pattern. + exp="s/^.*vlan ([[:digit:]]+).*$/\1/" + VLAN_ID=$(ip link | grep vlan | grep ${MAC_ADDR} | sed -re "${exp}") || true + VLAN_ID="${VLAN_ID:-0}" +} + + function installed () { # Check if the given utility is installed. Fail if not installed. @@ -481,12 +505,16 @@ function read_env_variables () { DCR_UUIDS+=([dut1]="${CSIT_DUT1_UUID}") TG_PCIDEVS=("${CSIT_TG_INTERFACES_PORT1_PCI}") TG_DRIVERS=("${CSIT_TG_INTERFACES_PORT1_DRV}") + TG_VLANS+=("${CSIT_TG_INTERFACES_PORT1_VLAN}") TG_PCIDEVS+=("${CSIT_TG_INTERFACES_PORT2_PCI}") TG_DRIVERS+=("${CSIT_TG_INTERFACES_PORT2_DRV}") + TG_VLANS+=("${CSIT_TG_INTERFACES_PORT2_VLAN}") DUT1_PCIDEVS=("${CSIT_DUT1_INTERFACES_PORT1_PCI}") DUT1_DRIVERS=("${CSIT_DUT1_INTERFACES_PORT1_DRV}") + DUT1_VLANS+=("${CSIT_DUT1_INTERFACES_PORT1_VLAN}") DUT1_PCIDEVS+=("${CSIT_DUT1_INTERFACES_PORT2_PCI}") DUT1_DRIVERS+=("${CSIT_DUT1_INTERFACES_PORT2_DRV}") + DUT1_VLANS+=("${CSIT_DUT1_INTERFACES_PORT2_VLAN}") } @@ -527,15 +555,19 @@ function set_env_variables () { CSIT_TG_INTERFACES_PORT1_MAC="${TG_NETMACS[0]}" CSIT_TG_INTERFACES_PORT1_PCI="${TG_PCIDEVS[0]}" CSIT_TG_INTERFACES_PORT1_DRV="${TG_DRIVERS[0]}" + CSIT_TG_INTERFACES_PORT1_VLAN="${TG_VLANS[0]}" CSIT_TG_INTERFACES_PORT2_MAC="${TG_NETMACS[1]}" CSIT_TG_INTERFACES_PORT2_PCI="${TG_PCIDEVS[1]}" CSIT_TG_INTERFACES_PORT2_DRV="${TG_DRIVERS[1]}" + CSIT_TG_INTERFACES_PORT2_VLAN="${TG_VLANS[1]}" CSIT_DUT1_INTERFACES_PORT1_MAC="${DUT1_NETMACS[0]}" CSIT_DUT1_INTERFACES_PORT1_PCI="${DUT1_PCIDEVS[0]}" CSIT_DUT1_INTERFACES_PORT1_DRV="${DUT1_DRIVERS[0]}" + CSIT_DUT1_INTERFACES_PORT1_VLAN="${DUT1_VLANS[0]}" CSIT_DUT1_INTERFACES_PORT2_MAC="${DUT1_NETMACS[1]}" CSIT_DUT1_INTERFACES_PORT2_PCI="${DUT1_PCIDEVS[1]}" CSIT_DUT1_INTERFACES_PORT2_DRV="${DUT1_DRIVERS[1]}" + CSIT_DUT1_INTERFACES_PORT2_VLAN="${DUT1_VLANS[1]}" set +a } @@ -577,8 +609,6 @@ function start_topology_containers () { # Mount vfio to be able to bind to see binded interfaces. We cannot use # --device=/dev/vfio as this does not see newly binded interfaces. dcr_stc_params+="--volume /dev/vfio:/dev/vfio " - # Mount nested_vm image to be able to run VM tests. - dcr_stc_params+="--volume /var/lib/vm/vhost-nested.img:/var/lib/vm/vhost-nested.img " # Mount docker.sock to be able to use docker deamon of the host. dcr_stc_params+="--volume /var/run/docker.sock:/var/run/docker.sock " # Mount /opt/boot/ where VM kernel and initrd are located. diff --git a/resources/libraries/python/topology.py b/resources/libraries/python/topology.py index b06cf7dc4e..394dc9df58 100644 --- a/resources/libraries/python/topology.py +++ b/resources/libraries/python/topology.py @@ -198,6 +198,19 @@ class Topology(object): node['interfaces'][iface_key]['pci_address'] = str(pci_address) @staticmethod + def update_interface_vlan(node, iface_key, vlan): + """Update VLAN on the interface from the node. + + :param node: Node to update VLAN on. + :param iface_key: Topology key of the interface. + :param vlan: VLAN ID. + :type node: dict + :type iface_key: str + :type vlan: str + """ + node['interfaces'][iface_key]['vlan'] = int(vlan) + + @staticmethod def update_interface_vhost_socket(node, iface_key, vhost_socket): """Update vhost socket name on the interface from the node. @@ -696,6 +709,21 @@ class Topology(object): return None @staticmethod + def get_interface_vlan(node, iface_key): + """Get interface vlan. + + :param node: Node to get interface driver on. + :param iface_key: Interface key from topology file. + :type node: dict + :type iface_key: str + :returns: Return interface vlan or None if not found. + """ + try: + return node['interfaces'][iface_key].get('vlan') + except KeyError: + return None + + @staticmethod def get_node_interfaces(node): """Get all node interfaces. diff --git a/resources/libraries/robot/performance/performance_configuration.robot b/resources/libraries/robot/performance/performance_configuration.robot index 3f5538d3ad..6e65e26d8e 100644 --- a/resources/libraries/robot/performance/performance_configuration.robot +++ b/resources/libraries/robot/performance/performance_configuration.robot @@ -114,24 +114,6 @@ | | | ... | VPP Set Interface MTU | ${nodes['${dut}']} | ${${dut}_if1_2} | | All VPP Interfaces Ready Wait | ${nodes} -| Initialize AVF interfaces -| | [Documentation] -| | ... | Initialize AVF interfaces on each DUT. Interfaces are brought up. -| | ... -| | ${duts}= | Get Matches | ${nodes} | DUT* -| | :FOR | ${dut} | IN | @{duts} -| | | ${if1_pci}= | Get Interface PCI Addr | ${nodes['${dut}']} -| | | ... | ${${dut}_if1_vf0} -| | | ${if2_pci}= | Get Interface PCI Addr | ${nodes['${dut}']} -| | | ... | ${${dut}_if2_vf0} -| | | ${dut_eth_vf_if1}= | VPP Create AVF Interface | ${nodes['${dut}']} -| | | ... | ${if1_pci} | ${rxq_count_int} -| | | ${dut_eth_vf_if2}= | VPP Create AVF Interface | ${nodes['${dut}']} -| | | ... | ${if2_pci} | ${rxq_count_int} -| | | Set Test Variable | ${${dut}_if1} | ${dut_eth_vf_if1} -| | | Set Test Variable | ${${dut}_if2} | ${dut_eth_vf_if2} -| | Set interfaces in path up - | Initialize IPSec in 3-node circular topology | | [Documentation] | | ... | Set UP state on VPP interfaces in path on nodes in 3-node circular diff --git a/resources/libraries/robot/shared/interfaces.robot b/resources/libraries/robot/shared/interfaces.robot index d24b2fba3c..50dec59442 100644 --- a/resources/libraries/robot/shared/interfaces.robot +++ b/resources/libraries/robot/shared/interfaces.robot @@ -1,4 +1,4 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. +# Copyright (c) 2019 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -82,6 +82,44 @@ | | Set Test Variable | ${prev_layer} | if | | Set interfaces in path up +| Initialize layer avf on node +| | [Documentation] +| | ... | Initialize AVF interfaces on DUT. Interfaces are brought up. +| | ... +| | ... | *Arguments:* +| | ... | - dut - DUT node. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Initialize layer avf on node \| DUT1 \| +| | ... +| | [Arguments] | ${dut} +| | ... +| | ${dut_str}= | Convert To Lowercase | ${dut} +| | ${if1_vlan}= | Get Interface Vlan | ${nodes['${dut}']} | ${${dut}_if1} +| | ${if2_vlan}= | Get Interface Vlan | ${nodes['${dut}']} | ${${dut}_if2} +| | Set Test Variable | ${${dut_str}_vlan1} | ${if1_vlan} +| | Set Test Variable | ${${dut_str}_vlan2} | ${if2_vlan} +| | ${if1_pci}= | Get Interface PCI Addr | ${nodes['${dut}']} +| | ... | ${${dut}_if1_vf0} +| | ${if2_pci}= | Get Interface PCI Addr | ${nodes['${dut}']} +| | ... | ${${dut}_if2_vf0} +| | ${dut_eth_vf_if1}= | VPP Create AVF Interface | ${nodes['${dut}']} +| | ... | ${if1_pci} | ${rxq_count_int} +| | ${dut_eth_vf_if2}= | VPP Create AVF Interface | ${nodes['${dut}']} +| | ... | ${if2_pci} | ${rxq_count_int} +| | Set Test Variable | ${${dut_str}_if1} | ${dut_eth_vf_if1} +| | Set Test Variable | ${${dut_str}_if2} | ${dut_eth_vf_if2} + +| Initialize AVF interfaces +| | [Documentation] +| | ... | Initialize AVF interfaces on each DUT. Interfaces are brought up. +| | ... +| | :FOR | ${dut} | IN | @{duts} +| | | Initialize layer avf on node | ${dut} +| | Set Test Variable | ${prev_layer} | vf +| | Set interfaces in path up + | Initialize layer bonding on node | | [Documentation] | | ... | Bonded interface and variables to be created on across east and @@ -152,8 +190,14 @@ | | ... | | ${dut_str}= | Convert To Lowercase | ${dut} | | :FOR | ${id} | IN RANGE | 1 | ${count} + 1 -| | | ${if1_vlan}= | Evaluate | ${100} + ${id} - ${1} -| | | ${if2_vlan}= | Evaluate | ${200} + ${id} - ${1} +| | | ${if1_vlan}= | Run Keyword If | ${${dut_str}_vlan1} +| | | ... | Set Variable | ${${dut_str}_vlan1} +| | | ... | ELSE +| | | ... | Evaluate | ${100} + ${id} - ${1} +| | | ${if2_vlan}= | Run Keyword If | ${${dut_str}_vlan2} +| | | ... | Set Variable | ${${dut_str}_vlan2} +| | | ... | ELSE +| | | ... | Evaluate | ${200} + ${id} - ${1} | | | ${if1_name} | ${if1_index}= | Run Keyword If | | | ... | ${create} or ${id} == ${1} | | | ... | Create Vlan Subinterface diff --git a/resources/topology_schemas/topology.sch.yaml b/resources/topology_schemas/topology.sch.yaml index 6f7404c0dd..37478058fe 100644 --- a/resources/topology_schemas/topology.sch.yaml +++ b/resources/topology_schemas/topology.sch.yaml @@ -60,7 +60,10 @@ schema;type_interfaces: model: type: str enum: [Cisco-VIC-1227, Cisco-VIC-1385, Intel-X520-DA2, - Intel-X710, Intel-XL710] + Intel-X710, Intel-XL710, Intel-XXV710] + vlan: + type: int + required: no schema;type_interface_tg: &type_interface_tg type: map diff --git a/tests/vpp/device/l2bd/eth2p-avf-dot1qip4-l2bdbasemaclrn-dev.robot b/tests/vpp/device/l2bd/eth2p-avf-dot1qip4-l2bdbasemaclrn-dev.robot new file mode 100644 index 0000000000..b75b89c879 --- /dev/null +++ b/tests/vpp/device/l2bd/eth2p-avf-dot1qip4-l2bdbasemaclrn-dev.robot @@ -0,0 +1,74 @@ +# Copyright (c) 2019 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| ... +| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV | SCAPY +| ... | NIC_Virtual | ETH | IP4FWD | BASE | DOT1Q | IP4BASE | DRV_AVF +| ... +| Suite Setup | Setup suite single link | avf | scapy +| Test Setup | Setup test +| Test Teardown | Tear down test | packet_trace +| ... +| Test Template | Local Template +| ... +| Documentation | *IPv4 routing with IEEE 802.1Q test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology with\ +| ... | single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. IEEE 802.1Q\ +| ... | tagging is applied on links between TG-DUT1. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and\ +| ... | two static IPv4 /30 route entries. DUT1 is tested with ${nic_name}. +| ... | *[Ver] TG verification:* Test IPv4 packets are sent in one direction \ +| ... | by TG on link to DUT1; on receive TG verifies packets for correctness \ +| ... | and drops as applicable. +| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so | avf_plugin.so +| ${nic_name}= | virtual +| ${overhead}= | ${4} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Ver] Make TG send ICMPv4 Echo Reqs in both directions between two\ +| | ... | of its interfaces to be switched by DUT to and from docker; verify\ +| | ... | all packets are received. +| | ... +| | ... | *Arguments:* +| | ... | - frame_size - Framesize in Bytes in integer. Type: integer +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | ... +| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | ... +| | Set Test Variable | \${frame_size} +| | ... +| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq} +| | And Add DPDK no PCI to all DUTs +| | And Set Max Rate And Jumbo +| | And Apply startup configuration on all VPP DUTs | with_trace=${True} +| | When Initialize AVF interfaces +| | And Initialize layer interface +| | And Initialize layer dot1q +| | And Initialize L2 bridge domain +| | Then Send ICMPv4 bidirectionally and verify received packets +| | ... | ${tg} | ${tg_if1} | ${tg_if2} + +*** Test Cases *** +| tc01-68B-avf-dot1qip4-l2bdbasemaclrn-dev +| | [Tags] | 68B +| | frame_size=${68} | phy_cores=${0} diff --git a/tests/vpp/func/ip4/eth2p-dot1q-ip4base-func.robot b/tests/vpp/func/ip4/eth2p-dot1q-ip4base-func.robot deleted file mode 100644 index 123969a867..0000000000 --- a/tests/vpp/func/ip4/eth2p-dot1q-ip4base-func.robot +++ /dev/null @@ -1,106 +0,0 @@ -# Copyright (c) 2019 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Library | resources.libraries.python.IPv6Util -| Library | resources.libraries.python.Trace -| ... -| Resource | resources/libraries/robot/ip/ip4.robot -| Resource | resources/libraries/robot/l2/tagging.robot -| Resource | resources/libraries/robot/shared/default.robot -| Resource | resources/libraries/robot/shared/testing_path.robot -| Resource | resources/libraries/robot/shared/traffic.robot -| ... -| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | VM_ENV | HW_ENV | VPP_VM_ENV -| ... | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *IPv4 with VLAN subinterfaces* -| ... -| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology -| ... | with double links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-IPv4-ICMPv4 on TG-DUT1-IF1, -| ... | Eth-dot1q-IPv4-ICMPv4 on TG-DUT1-IF2. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with 2 Vlan subinterfaces -| ... | on DUT1-IF2. The subinterfaces and DUT1-IF1 have IP addresses set and -| ... | corresponding IP neighbor entries are configured. -| ... | *[Ref] Applicable standard specifications:* IEEE 802.1q. - -*** Variables *** - -| ${ip4_net0_1}= | 192.168.0.1 -| ${ip4_net0_2}= | 192.168.0.2 -| ${ip4_net1_1}= | 192.168.100.1 -| ${ip4_net1_2}= | 192.168.100.2 -| ${ip4_net2_1}= | 192.168.200.1 -| ${ip4_net2_2}= | 192.168.200.2 -| ${ip4_prefix}= | 24 -| ${tag_1}= | ${10} -| ${tag_2}= | ${20} - -*** Test Cases *** -| TC01: Process untagged send tagged -| | Given Vlan Test Setup -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${ip4_net0_2} | ${ip4_net2_2} | ${tg_to_dut_if1} -| | ... | ${tg_to_dut_if1_mac} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} -| | ... | encaps_rx=Dot1q | vlan_rx=${tag_2} - -| TC02: Process tagged send untagged -| | Given Vlan Test Setup -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${ip4_net2_2} | ${ip4_net0_2} | ${tg_to_dut_if2} -| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${tg_to_dut_if1} -| | ... | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac} -| | ... | encaps_tx=Dot1q | vlan_tx=${tag_2} - -| TC03: Process tagged send tagged -| | Given Vlan Test Setup -| | Then Send packet and verify headers -| | ... | ${tg_node} | ${ip4_net1_2} | ${ip4_net2_2} | ${tg_to_dut_if2} -| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} -| | ... | encaps_tx=Dot1q | vlan_tx=${tag_1} -| | ... | encaps_rx=Dot1q | vlan_rx=${tag_2} -| | And Send packet and verify headers -| | ... | ${tg_node} | ${ip4_net2_2} | ${ip4_net1_2} | ${tg_to_dut_if2} -| | ... | ${tg_to_dut_if2_mac} | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2} -| | ... | ${dut_to_tg_if2_mac} | ${tg_to_dut_if2_mac} -| | ... | encaps_tx=Dot1q | vlan_tx=${tag_2} -| | ... | encaps_rx=Dot1q | vlan_rx=${tag_1} - -*** Keywords *** -| Vlan Test Setup -| | Configure path in 2-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['TG']} -| | Set interfaces in 2-node circular topology up -| | -| | ${vlan1_name} | ${vlan1_index}= | Create vlan sub-interface -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${tag_1} -| | ${vlan2_name} | ${vlan2_index}= | Create vlan sub-interface -| | ... | ${dut_node} | ${dut_to_tg_if2} | ${tag_2} -| | -| | VPP Interface Set IP Address | ${dut_node} -| | ... | ${dut_to_tg_if1} | ${ip4_net0_1} | ${ip4_prefix} -| | VPP Interface Set IP Address | ${dut_node} -| | ... | ${vlan1_index} | ${ip4_net1_1} | ${ip4_prefix} -| | VPP Interface Set IP Address | ${dut_node} -| | ... | ${vlan2_index} | ${ip4_net2_1} | ${ip4_prefix} -| | -| | VPP Add IP Neighbor -| | ... | ${dut_node} | ${dut_to_tg_if1} | ${ip4_net0_2} | ${tg_to_dut_if1_mac} -| | VPP Add IP Neighbor -| | ... | ${dut_node} | ${vlan1_index} | ${ip4_net1_2} | ${tg_to_dut_if2_mac} -| | VPP Add IP Neighbor -| | ... | ${dut_node} | ${vlan2_index} | ${ip4_net2_2} | ${tg_to_dut_if2_mac} 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 deleted file mode 100644 index e71e75f563..0000000000 --- a/tests/vpp/func/l2bd/eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot +++ /dev/null @@ -1,394 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/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 deleted file mode 100644 index aba84789b1..0000000000 --- a/tests/vpp/func/l2bd/eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot +++ /dev/null @@ -1,206 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/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/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot b/tests/vpp/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot deleted file mode 100644 index 673a5a7699..0000000000 --- a/tests/vpp/func/l2bd/eth4p-eth-l2bdbasemaclrn-l2shg-func.robot +++ /dev/null @@ -1,85 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/shared/default.robot -| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot -| Resource | resources/libraries/robot/shared/testing_path.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} diff --git a/tests/vpp/func/l2xc/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot b/tests/vpp/func/l2xc/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot deleted file mode 100644 index 6952d368b8..0000000000 --- a/tests/vpp/func/l2xc/eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot +++ /dev/null @@ -1,335 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/shared/default.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 | *L2XC 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 L2 cross-connect -| ... | (L2XC) switching between VLAN sub-interface with VLAN tag rewrite -| ... | translate-1-2 method of interface towards TG and interface towards DUT2. -| ... | DUT2 is configured configured with L2 cross-connect (L2XC) 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 *** -| ${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_ip}= | 3ffe:63::1 -| ${dst_ip}= | 3ffe:63::2 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2XC 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 cross-connect (L2XC) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method; on DUT2 configure L2 cross-connect (L2XC) 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 Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | 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 L2XC 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 cross-connect (L2XC) 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 cross-connect 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 Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | 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 L2XC 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 cross-connect (L2XC) 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 cross-connect 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 Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | 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 L2XC 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 cross-connect (L2XC) 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 -| | ... | cross-connect 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 Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | 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 L2XC 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 cross-connect (L2XC) with one interface to -| | ... | DUT2 and one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | translate-1-2 method; on DUT2 configure L2 cross-connect (L2XC) 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 -| | ... | tagegd 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 Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip} -| | ... | dst_ip=${dst_ip} | encaps=Dot1q | vlan1=${outer_vlan_id1} - -| TC06: DUT1 and DUT2 with L2XC 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 cross-connect (L2XC) 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 cross-connect 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 -| | ... | tagegd 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 Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | 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_ip} | dst_ip=${dst_ip} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} - -| TC07: DUT1 and DUT2 with L2XC 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 cross-connect (L2XC) 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 cross-connect 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 -| | ... | tagegd 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 Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | 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_ip} | dst_ip=${dst_ip} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} - -| TC08: DUT1 and DUT2 with L2XC 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 cross-connect (L2XC) 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 -| | ... | cross-connect 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 tagegd 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 Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | 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_ip} | dst_ip=${dst_ip} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} diff --git a/tests/vpp/func/l2xc/eth2p-dot1q-l2xcbase-vlantrans11-func.robot b/tests/vpp/func/l2xc/eth2p-dot1q-l2xcbase-vlantrans11-func.robot deleted file mode 100644 index 49039e9db9..0000000000 --- a/tests/vpp/func/l2xc/eth2p-dot1q-l2xcbase-vlantrans11-func.robot +++ /dev/null @@ -1,171 +0,0 @@ -# Copyright (c) 2016 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/shared/default.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 | *L2XC 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-IPv4-ICMPv4 on TG-DUT2 for L2 switching of IPv4/IPv6. -| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect -| ... | (L2XC) switching between VLAN sub-interface with VLAN tag rewrite -| ... | translate-1-1 method of interface towards TG and interface towards DUT2. -| ... | DUT2 is configured configured with L2 cross-connect (L2XC) 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 *** -| ${subid}= | 10 - -| ${outer_vlan_id1}= | 110 -| ${outer_vlan_id2}= | 120 -| ${outer_vlan_wrong}= | 150 - -| ${src_ip}= | 3ffe:63::1 -| ${dst_ip}= | 3ffe:63::2 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2XC 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 -| | ... | cross-connect (L2XC) with one interface to DUT2 and one VLAN -| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method; -| | ... | on DUT2 configure L2 cross-connect (L2XC) 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 Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | 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 L2XC 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 -| | ... | cross-connect (L2XC) with one VLAN tagged sub-interface to DUT2 and -| | ... | one VLAN sub-interface towards TG with VLAN tag rewrite -| | ... | (translate-1-1) on sub-interface to DUT2; on DUT2 configure L2XC with -| | ... | one interface to TG and one VLAN sub-interface towards DUT1 with VLAN -| | ... | tag pop-1. [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 Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | 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 L2XC 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 -| | ... | cross-connect (L2XC) with one interface to DUT2 and one VLAN -| | ... | sub-interface towards TG with VLAN tag rewrite translate-1-1 method; -| | ... | on DUT2 configure L2 cross-connect (L2XC) 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 tagegd 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 Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | Then Send ICMP packet and verify received packet -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} | src_ip=${src_ip} -| | ... | dst_ip=${dst_ip} | encaps=Dot1q | vlan1=${outer_vlan_id1} - -| TC04: DUT1 and DUT2 with L2XC 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 -| | ... | cross-connect (L2XC) 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 cross-connect (L2XC) 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 tagegd 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 Connect interfaces and VLAN sub-interfaces using L2XC -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${vlan1_index} -| | ... | ${dut2_node} | ${dut2_to_tg} | ${vlan2_index} -| | 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_ip} | dst_ip=${dst_ip} | encaps=Dot1q -| | ... | vlan1=${outer_vlan_id1} diff --git a/topologies/available/vpp_device.template b/topologies/available/vpp_device.template index 4659575c80..86b0993254 100644 --- a/topologies/available/vpp_device.template +++ b/topologies/available/vpp_device.template @@ -21,12 +21,14 @@ nodes: link: link1 model: virtual driver: "${CSIT_TG_INTERFACES_PORT1_DRV}" + vlan: ${CSIT_TG_INTERFACES_PORT1_VLAN} port2: mac_address: "${CSIT_TG_INTERFACES_PORT2_MAC}" pci_address: "${CSIT_TG_INTERFACES_PORT2_PCI}" link: link2 model: virtual driver: "${CSIT_TG_INTERFACES_PORT2_DRV}" + vlan: ${CSIT_TG_INTERFACES_PORT2_VLAN} DUT1: type: DUT host: "${CSIT_DUT1_HOST}" @@ -41,9 +43,11 @@ nodes: link: link1 model: virtual driver: "${CSIT_DUT1_INTERFACES_PORT1_DRV}" + vlan: ${CSIT_DUT1_INTERFACES_PORT1_VLAN} port2: mac_address: "${CSIT_DUT1_INTERFACES_PORT2_MAC}" pci_address: "${CSIT_DUT1_INTERFACES_PORT2_PCI}" link: link2 model: virtual driver: "${CSIT_DUT1_INTERFACES_PORT2_DRV}" + vlan: ${CSIT_DUT1_INTERFACES_PORT2_VLAN} |