From 7ac38855defc0cf8140180d3abc1f5afeb467a74 Mon Sep 17 00:00:00 2001 From: Peter Mikus Date: Thu, 25 Jul 2019 08:22:53 +0000 Subject: [PATCH] VPPD: VXLAN Change-Id: Iac518341e6a0fff4a31ad3692ccc5697690db8be Signed-off-by: Peter Mikus --- .../libraries/robot/l2/l2_bridge_domain.robot | 41 ++++++++++ resources/libraries/robot/l2/l2_xconnect.robot | 40 +++++++++- resources/libraries/robot/overlay/vxlan.robot | 91 ---------------------- resources/libraries/robot/shared/traffic.robot | 49 ++++++++++++ .../eth2p-ethip4vxlan-l2bdbasemaclrn-dev.robot | 74 ++++++++++++++++++ .../eth2p-ethip4vxlan-l2xcbase-dev.robot | 73 +++++++++++++++++ .../eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot | 74 ------------------ .../eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot | 77 ------------------ .../vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot | 69 ---------------- .../eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot | 86 -------------------- 10 files changed, 276 insertions(+), 398 deletions(-) create mode 100644 tests/vpp/device/ip4_tunnels/eth2p-ethip4vxlan-l2bdbasemaclrn-dev.robot create mode 100644 tests/vpp/device/ip4_tunnels/eth2p-ethip4vxlan-l2xcbase-dev.robot delete mode 100644 tests/vpp/func/ip4_tunnels/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot delete mode 100644 tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot delete mode 100644 tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot delete mode 100644 tests/vpp/func/ip6_tunnels/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot diff --git a/resources/libraries/robot/l2/l2_bridge_domain.robot b/resources/libraries/robot/l2/l2_bridge_domain.robot index fda211508b..4c3d629b98 100644 --- a/resources/libraries/robot/l2/l2_bridge_domain.robot +++ b/resources/libraries/robot/l2/l2_bridge_domain.robot @@ -32,6 +32,47 @@ | | ... | Vpp Add L2fib Entry | ${dut_node} | ${mac} | ${if2} | ${1} | | Vpp Node Interfaces Ready Wait | ${dut_node} +| Initialize L2 bridge domain on node +| | [Documentation] +| | ... | Setup L2 bridge domain topology by adding two interfaces on DUT into +| | ... | separate bridge domains that are created automatically starting with +| | ... | index 1. Learning is enabled. Interfaces are brought up. +| | ... +| | ... | *Arguments:* +| | ... | - dut - DUT node. Type: string +| | ... | - count - Number of bridge domains interfaces. Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Initialize L2 bridge domain on node \| DUT1 \| 1 \| +| | ... +| | [Arguments] | ${dut} | ${count}=${1} +| | ... +| | :FOR | ${id} | IN RANGE | 1 | ${count} + 1 +| | | ${dut_str}= | Convert To Lowercase | ${dut} +| | | Add interface to bridge domain +| | | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${id}_1} | ${id} +| | | Add interface to bridge domain +| | | ... | ${nodes['${dut}']} | ${${dut_str}_${prev_layer}_${id}_2} | ${id} + +| Initialize L2 bridge domain +| | [Documentation] +| | ... | Setup L2 bridge domain topology by adding two interfaces on each DUT +| | ... | into separate bridge domains that are created automatically starting +| | ... | with index 1. Learning is enabled. Interfaces are brought up. +| | ... +| | ... | *Arguments:* +| | ... | - count - Number of bridge domains. Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Initialize L2 bridge domain \| 1 \| +| | ... +| | [Arguments] | ${count}=${1} +| | ... +| | :FOR | ${dut} | IN | @{duts} +| | | Initialize L2 bridge domain on node | ${dut} | count=${count} + | Configure path for 3-node BD-SHG test | | [Documentation] | Compute path for bridge domain split-horizon group testing | | ... | on three given nodes with following interconnections diff --git a/resources/libraries/robot/l2/l2_xconnect.robot b/resources/libraries/robot/l2/l2_xconnect.robot index 00d33e867a..745827eb3e 100644 --- a/resources/libraries/robot/l2/l2_xconnect.robot +++ b/resources/libraries/robot/l2/l2_xconnect.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: @@ -22,3 +22,41 @@ | | Set Interface State | ${node} | ${if1} | up | | Set Interface State | ${node} | ${if2} | up | | Vpp Setup Bidirectional Cross Connect | ${node} | ${if1} | ${if2} + +| Initialize L2 cross connect on node +| | [Documentation] +| | ... | Setup L2 cross connect topology by connecting RX/TX of two interfaces +| | ... | on each DUT. Interfaces are brought up. +| | ... +| | ... | *Arguments:* +| | ... | - dut - DUT node. Type: string +| | ... | - count - Number of interfaces pairs to connect. Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Initialize L2 cross connect on node \| DUT1 \| 1 \| +| | ... +| | [Arguments] | ${dut} | ${count}=${1} +| | ... +| | :FOR | ${id} | IN RANGE | 1 | ${count} + 1 +| | | ${dut_str}= | Convert To Lowercase | ${dut} +| | | Vpp Setup Bidirectional Cross Connect | ${nodes['${dut}']} +| | | ... | ${${dut_str}_${prev_layer}_${id}_1} +| | | ... | ${${dut_str}_${prev_layer}_${id}_2} + +| Initialize L2 cross connect +| | [Documentation] +| | ... | Setup L2 cross connect topology by connecting RX/TX of two interfaces +| | ... | on each DUT. Interfaces are brought up. +| | ... +| | ... | *Arguments:* +| | ... | - count - Number of interfaces pairs to connect. Type: integer +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Initialize L2 cross connect \| 1 \| +| | ... +| | [Arguments] | ${count}=${1} +| | ... +| | :FOR | ${dut} | IN | @{duts} +| | | Initialize L2 cross connect on node | ${dut} | count=${count} diff --git a/resources/libraries/robot/overlay/vxlan.robot b/resources/libraries/robot/overlay/vxlan.robot index 5e9fa3ddef..06c8e94eb7 100644 --- a/resources/libraries/robot/overlay/vxlan.robot +++ b/resources/libraries/robot/overlay/vxlan.robot @@ -27,48 +27,6 @@ | Documentation | VXLAN keywords *** Keywords *** -| Configure IP addresses and neighbors on interfaces -| | [Documentation] | *Set IPv4 addresses on interfaces on DUTs.* -| | ... | If interface index is None then is determines with Get Interface Sw -| | ... | Index in this case it is required the interface to be present in -| | ... | topology dict. It also executes VPP IP Probe to determine MACs to IPs -| | ... | on DUTs. -| | ... -| | ... | _Set testcase variables with IP addresses and prefix length:_ -| | ... | - ${dut1s_ip_address} -| | ... | - ${dut2s_ip_address} -| | ... | - ${duts_ip_address_prefix} -| | ... -| | [Arguments] | ${DUT1} | ${DUT1_INT_NAME} | ${DUT1_INT_INDEX} -| | ... | ${DUT2} | ${DUT2_INT_NAME} | ${DUT2_INT_INDEX} -| | Set Test Variable | ${dut1s_ip_address} | 172.16.0.1 -| | Set Test Variable | ${dut2s_ip_address} | 172.16.0.2 -| | Set Test Variable | ${duts_ip_address_prefix} | 24 -| | ${DUT1_INT_KEY}= | Run Keyword If | ${DUT1_INT_INDEX} is None -| | ... | Get Interface by name | ${DUT1} | ${DUT1_INT_NAME} -| | ${DUT2_INT_KEY}= | Run Keyword If | ${DUT2_INT_INDEX} is None -| | ... | Get Interface by name | ${DUT2} | ${DUT2_INT_NAME} -| | ${DUT1_INT_INDEX}= | Run Keyword If | ${DUT1_INT_INDEX} is None -| | ... | Get Interface Sw Index | ${DUT1} | ${DUT1_INT_KEY} -| | ... | ELSE | Set Variable | ${DUT1_INT_INDEX} -| | ${DUT2_INT_INDEX}= | Run Keyword If | ${DUT2_INT_INDEX} is None -| | ... | Get Interface Sw Index | ${DUT2} | ${DUT2_INT_KEY} -| | ... | ELSE | Set Variable | ${DUT2_INT_INDEX} -| | ${DUT1_INT_MAC}= | Vpp Get Interface Mac | ${DUT1} | ${DUT1_INT_INDEX} -| | ${DUT2_INT_MAC}= | Vpp Get Interface Mac | ${DUT2} | ${DUT2_INT_INDEX} -| | VPP Interface Set IP Address | ${DUT1} | ${DUT1_INT_INDEX} -| | ... | ${dut1s_ip_address} | ${duts_ip_address_prefix} -| | VPP Interface Set IP Address | ${DUT2} | ${DUT2_INT_INDEX} -| | ... | ${dut2s_ip_address} | ${duts_ip_address_prefix} -| | VPP Add IP Neighbor -| | ... | ${DUT1} | ${DUT1_INT_INDEX} | ${dut2s_ip_address} | ${DUT2_INT_MAC} -| | VPP Add IP Neighbor -| | ... | ${DUT2} | ${DUT2_INT_INDEX} | ${dut1s_ip_address} | ${DUT1_INT_MAC} - -| Add interfaces to L2BD -| | [Arguments] | ${DUT} | ${BID} | ${INTERFACE_1} | ${INTERFACE_2} -| | Vpp Add L2 Bridge Domain | ${DUT} | ${BID} | ${INTERFACE_1} | ${INTERFACE_2} - | Create vlan interfaces for VXLAN | | [Documentation] | *Create VLAN subinterface on interfaces on DUTs with given | | ... | VLAN ID.* @@ -93,55 +51,6 @@ | | Set Test Variable | ${dut2s_vlan_name} | | Set Test Variable | ${dut2s_vlan_index} -| Send VXLAN encapsulated packet and verify received packet -| | [Documentation] | Send VXLAN encapsulated Ethernet frame and check \ -| | ... | received one. -| | ... -| | ... | *Arguments:* -| | ... | - tg_node - Node where to run traffic script. Type: dictionary -| | ... | - tx_if - Interface from where send VXLAN packet. Type: string -| | ... | - rx_if - Interface where receive VXLAN packet. Type: string -| | ... | - tx_src_mac - Source MAC address of sent packet. Type: string -| | ... | - tx_dst_mac - Destination MAC address of sent packet. Type: string -| | ... | - tx_src_ip - Source IP address of sent VXLAN packet. Type: string -| | ... | - tx_dst_ip - Destination IP address of sent VXLAN packet. -| | ... | Type: string -| | ... | - tx_vni - VNI of sent VXLAN packet. Type: string -| | ... | - rx_src_ip - Source IP address of received VXLAN packet. Type: string -| | ... | - rx_dst_ip - Destination IP address of received VXLAN packet. -| | ... | Type: string -| | ... | - rx_vni - VNI of received VXLAN packet. Type: string -| | ... -| | ... | *Return:* -| | ... | - No value returned -| | ... -| | ... | *Example:* -| | ... -| | ... | \| Send VXLAN encapsulated packet and verify received packet \ -| | ... | \| ${tg_node} \| port4 \| port4 \ -| | ... | \| fa:16:3e:6d:f9:c5 \| fa:16:3e:e6:6d:9a \| 192.168.0.1 \ -| | ... | \| 192.168.0.2 \| ${101} \| 192.168.0.2 \| 192.168.0.1 \| ${102} \| -| | ... -| | [Arguments] | ${tg_node} | ${tx_if} | ${rx_if} -| | ... | ${tx_src_mac} | ${tx_dst_mac} -| | ... | ${tx_src_ip} | ${tx_dst_ip} | ${tx_vni} -| | ... | ${rx_src_ip} | ${rx_dst_ip} | ${rx_vni} -| | ${tx_if_name}= | Get interface name | ${tg_node} | ${tx_if} -| | ${rx_if_name}= | Get interface name | ${tg_node} | ${rx_if} -| | ${args}= | Catenate -| | ... | --tx_if ${tx_if_name} -| | ... | --rx_if ${rx_if_name} -| | ... | --tx_src_mac ${tx_src_mac} -| | ... | --tx_dst_mac ${tx_dst_mac} -| | ... | --tx_src_ip ${tx_src_ip} -| | ... | --tx_dst_ip ${tx_dst_ip} -| | ... | --tx_vni ${tx_vni} -| | ... | --rx_src_ip ${rx_src_ip} -| | ... | --rx_dst_ip ${rx_dst_ip} -| | ... | --rx_vni ${rx_vni} -| | Run Traffic Script On Node | send_vxlan_check_vxlan.py | ${tg_node} -| | ... | ${args} - | Get VXLAN dump | | [Documentation] | Get VXLAN dump. | | ... diff --git a/resources/libraries/robot/shared/traffic.robot b/resources/libraries/robot/shared/traffic.robot index c930bcf92e..b29f7af49d 100644 --- a/resources/libraries/robot/shared/traffic.robot +++ b/resources/libraries/robot/shared/traffic.robot @@ -581,3 +581,52 @@ | | ${dscp_num}= | Get DSCP Num Value | ${dscp} | | ${args}= | Set Variable | ${args} --dscp ${dscp_num} | | Run Traffic Script On Node | policer.py | ${node} | ${args} + +| Send VXLAN encapsulated packet and verify received packet +| | [Documentation] | Send VXLAN encapsulated Ethernet frame and check \ +| | ... | received one. +| | ... +| | ... | *Arguments:* +| | ... | - tg_node - Node where to run traffic script. Type: dictionary +| | ... | - tx_if - Interface from where send VXLAN packet. Type: string +| | ... | - rx_if - Interface where receive VXLAN packet. Type: string +| | ... | - tx_src_mac - Source MAC address of sent packet. Type: string +| | ... | - tx_dst_mac - Destination MAC address of sent packet. Type: string +| | ... | - tx_src_ip - Source IP address of sent VXLAN packet. Type: string +| | ... | - tx_dst_ip - Destination IP address of sent VXLAN packet. +| | ... | Type: string +| | ... | - tx_vni - VNI of sent VXLAN packet. Type: string +| | ... | - rx_src_ip - Source IP address of received VXLAN packet. Type: string +| | ... | - rx_dst_ip - Destination IP address of received VXLAN packet. +| | ... | Type: string +| | ... | - rx_vni - VNI of received VXLAN packet. Type: string +| | ... +| | ... | *Return:* +| | ... | - No value returned +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send VXLAN encapsulated packet and verify received packet \ +| | ... | \| ${tg_node} \| port4 \| port4 \ +| | ... | \| fa:16:3e:6d:f9:c5 \| fa:16:3e:e6:6d:9a \| 192.168.0.1 \ +| | ... | \| 192.168.0.2 \| ${101} \| 192.168.0.2 \| 192.168.0.1 \| ${102} \| +| | ... +| | [Arguments] | ${tg_node} | ${tx_if} | ${rx_if} +| | ... | ${tx_src_mac} | ${tx_dst_mac} +| | ... | ${tx_src_ip} | ${tx_dst_ip} | ${tx_vni} +| | ... | ${rx_src_ip} | ${rx_dst_ip} | ${rx_vni} +| | ${tx_if_name}= | Get interface name | ${tg_node} | ${tx_if} +| | ${rx_if_name}= | Get interface name | ${tg_node} | ${rx_if} +| | ${args}= | Catenate +| | ... | --tx_if ${tx_if_name} +| | ... | --rx_if ${rx_if_name} +| | ... | --tx_src_mac ${tx_src_mac} +| | ... | --tx_dst_mac ${tx_dst_mac} +| | ... | --tx_src_ip ${tx_src_ip} +| | ... | --tx_dst_ip ${tx_dst_ip} +| | ... | --tx_vni ${tx_vni} +| | ... | --rx_src_ip ${rx_src_ip} +| | ... | --rx_dst_ip ${rx_dst_ip} +| | ... | --rx_vni ${rx_vni} +| | Run Traffic Script On Node | send_vxlan_check_vxlan.py | ${tg_node} +| | ... | ${args} diff --git a/tests/vpp/device/ip4_tunnels/eth2p-ethip4vxlan-l2bdbasemaclrn-dev.robot b/tests/vpp/device/ip4_tunnels/eth2p-ethip4vxlan-l2bdbasemaclrn-dev.robot new file mode 100644 index 0000000000..2f3fa31eb9 --- /dev/null +++ b/tests/vpp/device/ip4_tunnels/eth2p-ethip4vxlan-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 | L2BDMACLRN | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY +| ... +| Suite Setup | Setup suite single link | scapy +| Test Setup | Setup test +| Test Teardown | Tear down test | packet_trace +| ... +| Test Template | Local Template +| ... +| Documentation | *L2BD with VXLANoIPv4 test cases* +| ... +| ... | *[Top] Network topologies:* TG-DUT1-TG 2-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on\ +| ... | TG-DUT. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-domain\ +| ... | switching combined with MAC learning enable.\ +| ... | VXLAN tunnels are configured on links betwen TG and DUT. +| ... | *[Ver] TG verification:* Test Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 packet is\ +| ... | sent by TG on link to DUT1; on receive TG verifies packets for\ +| ... | correctness and their IPv4 src-addr, dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC7348. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so +| ${nic_name}= | virtual +| ${overhead}= | ${50} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Ver] Make TG send VXLAN encapsulated Ethernet frame; 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 PCI devices to all DUTs +| | And Set Max Rate And Jumbo And Handle Multi Seg +| | And Apply startup configuration on all VPP DUTs | with_trace=${True} +| | When Initialize layer interface +| | And Initialize layer ip4vxlan +| | And Initialize L2 bridge domain +| | Then Send VXLAN encapsulated packet and verify received packet +| | ... | ${tg} | ${tg_if1} | ${tg_if2} | ${tg_if1_mac} | ${dut1_if1_mac} +| | ... | 172.17.0.2 | 172.16.0.1 | ${0} | 172.26.0.1 | 172.27.0.2 | ${0} + +*** Test Cases *** +| tc01-114B-ethip4vxlan-l2bdbasemaclrn-dev +| | [Tags] | 114B +| | frame_size=${114} | phy_cores=${0} diff --git a/tests/vpp/device/ip4_tunnels/eth2p-ethip4vxlan-l2xcbase-dev.robot b/tests/vpp/device/ip4_tunnels/eth2p-ethip4vxlan-l2xcbase-dev.robot new file mode 100644 index 0000000000..250867b827 --- /dev/null +++ b/tests/vpp/device/ip4_tunnels/eth2p-ethip4vxlan-l2xcbase-dev.robot @@ -0,0 +1,73 @@ +# 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 | L2XCBASE | ENCAP | VXLAN | L2OVRLAY | IP4UNRLAY +| ... +| Suite Setup | Setup suite single link | scapy +| Test Setup | Setup test +| Test Teardown | Tear down test | packet_trace +| ... +| Test Template | Local Template +| ... +| Documentation | *L2XC with VXLANoIPv4 test cases* +| ... +| ... | *[Top] Network topologies:* TG-DUT1-TG 2-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on\ +| ... | TG-DUT. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 cross-connect.\ +| ... | VXLAN tunnels are configured on links betwen TG and DUT. +| ... | *[Ver] TG verification:* Test Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 packet is\ +| ... | sent by TG on link to DUT1; on receive TG verifies packets for\ +| ... | correctness and their IPv4 src-addr, dst-addr and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* RFC7348. + +*** Variables *** +| @{plugins_to_enable}= | dpdk_plugin.so +| ${nic_name}= | virtual +| ${overhead}= | ${50} + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Ver] Make TG send VXLAN encapsulated Ethernet frame; 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 PCI devices to all DUTs +| | And Set Max Rate And Jumbo And Handle Multi Seg +| | And Apply startup configuration on all VPP DUTs | with_trace=${True} +| | When Initialize layer interface +| | And Initialize layer ip4vxlan +| | And Initialize L2 cross connect +| | Then Send VXLAN encapsulated packet and verify received packet +| | ... | ${tg} | ${tg_if1} | ${tg_if2} | ${tg_if1_mac} | ${dut1_if1_mac} +| | ... | 172.17.0.2 | 172.16.0.1 | ${0} | 172.26.0.1 | 172.27.0.2 | ${0} + +*** Test Cases *** +| tc01-114B-ethip4vxlan-l2xcbase-dev +| | [Tags] | 114B +| | frame_size=${114} | phy_cores=${0} diff --git a/tests/vpp/func/ip4_tunnels/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot deleted file mode 100644 index e4c8c25f0a..0000000000 --- a/tests/vpp/func/ip4_tunnels/vxlan/eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot +++ /dev/null @@ -1,74 +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/overlay/vxlan.robot -| Resource | resources/libraries/robot/l2/l2_traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *RFC7348 VXLAN: Bridge-domain with VXLAN over VLAN test cases* -| ... -| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology with -| ... | single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-dot1q-IPv4-VXLAN-Eth-IPv4-ICMPv4 on -| ... | DUT1-DUT2, Eth-dot1q-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) switching combined with static MACs, MAC learning -| ... | enabled and Split Horizon Groups (SHG) depending on test case; VXLAN -| ... | tunnels are configured between L2BDs on DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are -| ... | sent in both directions by TG on links to DUT1 and DUT2; on receive TG -| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr and -| ... | MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC7348. - -*** Variables *** -| ${VNI}= | 23 -| ${BID}= | 23 -| ${VLAN}= | 10 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv4oVLAN tunnels switch ICMPv4 between TG links -| | [Tags] | EXPECTED_FAILING -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-dot1q-IPv4-VXLAN-Eth-IPv4-ICMPv4 on\ -| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 and DUT2 -| | ... | configure L2 bridge-domain (MAC learning enabled), each with one -| | ... | interface to TG and one VXLAN tunnel interface towards the other DUT -| | ... | over VLAN sub-interface. [Ver] Make TG send ICMPv4 Echo Req between -| | ... | two of its interfaces, verify all packets are received. [Ref] RFC7348. -| | 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 -| | And Create vlan interfaces for VXLAN | ${VLAN} -| | ... | ${dut1_node} | ${dut1_to_dut2} -| | ... | ${dut2_node} | ${dut2_to_dut1} -| | And Configure IP addresses and neighbors on interfaces -| | ... | ${dut1_node} | ${dut1s_vlan_name} | ${dut1s_vlan_index} -| | ... | ${dut2_node} | ${dut2s_vlan_name} | ${dut2s_vlan_index} -| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${VNI} -| | | ... | ${dut1s_ip_address} | ${dut2s_ip_address} -| | And Set Interface State | ${dut1_node} | ${dut1s_vxlan} | up -| | And Add interfaces to L2BD | ${dut1_node} | ${BID} -| | ... | ${dut1_to_tg} | ${dut1s_vxlan} -| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${VNI} -| | | ... | ${dut2s_ip_address} | ${dut1s_ip_address} -| | And Set Interface State | ${dut2_node} | ${dut2s_vxlan} | up -| | And Add interfaces to L2BD | ${dut2_node} | ${BID} -| | ... | ${dut2_to_tg} | ${dut2s_vxlan} -| | Then Send ICMPv4 bidirectionally and verify received packets -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot deleted file mode 100644 index 2af98e5823..0000000000 --- a/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot +++ /dev/null @@ -1,77 +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/overlay/vxlan.robot -| Resource | resources/libraries/robot/l2/l2_traffic.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV | SKIP_VPP_PATCH -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *Bridge-domain with VXLAN test cases - IPv4* -| ... -| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on -| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) switching combined with MAC learning enabled; -| ... | VXLAN tunnels are configured between L2BDs on DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets are sent -| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG -| ... | verifies packets for correctness and their IPv4 src-addr, dst-addr -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC7348. - -*** Variables *** -| ${vni_1}= | 23 -| ${vni_2}= | 35 - -| ${bd_id1}= | 10 -| ${bd_id2}= | 20 -| ${bd_id3}= | 30 -| ${shg1}= | 1 -| ${shg2}= | 2 - -| ${ip4_addr1}= | 172.16.0.1 -| ${ip4_addr2}= | 172.16.0.2 -| ${ip4_prefix}= | 24 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv4 tunnels switch ICMPv4 between TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \ -| | ... | DUT1-DUT2; Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On DUT1 and DUT2 -| | ... | configure two i/fs into L2BD with MAC learning. [Ver] Make TG -| | ... | verify ICMPv4 Echo Req pkts are switched thru DUT1 and DUT2 in -| | ... | both directions and are correct on receive. [Ref] RFC7348. -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | ${dut1_to_dut2_name}= | Get interface name | ${dut1_node} | ${dut1_to_dut2} -| | ${dut2_to_dut1_name}= | Get interface name | ${dut2_node} | ${dut2_to_dut1} -| | And Configure IP addresses and neighbors on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2_name} | ${NONE} | ${dut2_node} -| | ... | ${dut2_to_dut1_name} | ${NONE} -| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${vni_1} -| | | ... | ${dut1s_ip_address} | ${dut2s_ip_address} -| | And Add interfaces to L2BD -| | ... | ${dut1_node} | ${bd_id1} | ${dut1_to_tg} | ${dut1s_vxlan} -| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${vni_1} -| | | ... | ${dut2s_ip_address} | ${dut1s_ip_address} -| | And Add interfaces to L2BD -| | ... | ${dut2_node} | ${bd_id1} | ${dut2_to_tg} | ${dut2s_vxlan} -| | Then Send ICMPv4 bidirectionally and verify received packets -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} diff --git a/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot b/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot deleted file mode 100644 index f76ff689f5..0000000000 --- a/tests/vpp/func/ip4_tunnels/vxlan/eth2p-ethip4vxlan-l2xcbase-func.robot +++ /dev/null @@ -1,69 +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/overlay/vxlan.robot -| Resource | resources/libraries/robot/l2/l2_traffic.robot -| Resource | resources/libraries/robot/l2/l2_xconnect.robot -| Library | resources.libraries.python.Trace -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV -| Test Setup | Set up functional test -| Test Teardown | Tear down functional test -| Documentation | *RFC7348 VXLAN: L2 cross-connect with VXLAN test cases* -| ... -| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on -| ... | DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn for L2 switching of IPv4. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | cross-connect (L2XC) switching; VXLAN tunnels are configured between -| ... | L2XCs on DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets -| ... | are sent in both directions by TG on links to DUT1 and DUT2; on receive -| ... | TG verifies packets for correctness and their IPv4 src-addr, dst-addr -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC7348. - -*** Variables *** -| ${VNI}= | 24 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2XC and VXLANoIPv4 tunnels switch ICMPv4 between TG links -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Enc] Eth-IPv4-VXLAN-Eth-IPv4-ICMPv4 on \ -| | ... | [Ref] RFC7348.DUT1-DUT2, Eth-IPv4-ICMPv4 on TG-DUTn. [Cfg] On -| | ... | DUT1 and DUT2 configure L2 cross-connect (L2XC), each with one -| | ... | interface to TG and one VXLAN tunnel interface towards the other -| | ... | DUT. [Ver] Make TG send ICMPv4 Echo Req between two of its -| | ... | interfaces; verify all packets are received. [Ref] RFC7348. -| | 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 -| | ${dut1_to_dut2_name}= | Get interface name | ${dut1_node} | ${dut1_to_dut2} -| | ${dut2_to_dut1_name}= | Get interface name | ${dut2_node} | ${dut2_to_dut1} -| | And Configure IP addresses and neighbors on interfaces -| | ... | ${dut1_node} | ${dut1_to_dut2_name} | ${NONE} -| | ... | ${dut2_node} | ${dut2_to_dut1_name} | ${NONE} -| | ${dut1s_vxlan}= | When Create VXLAN interface | ${dut1_node} | ${VNI} -| | | ... | ${dut1s_ip_address} | ${dut2s_ip_address} -| | And Configure L2XC | ${dut1_node} | ${dut1_to_tg} | ${dut1s_vxlan} -| | ${dut2s_vxlan}= | And Create VXLAN interface | ${dut2_node} | ${VNI} -| | | ... | ${dut2s_ip_address} | ${dut1s_ip_address} -| | And Configure L2XC | ${dut2_node} | ${dut2_to_tg} | ${dut2s_vxlan} -| | Then Send ICMPv4 bidirectionally and verify received packets -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} -| | And Get VXLAN dump | ${dut1_node} -| | And Get VXLAN dump | ${dut1_node} | interface=vxlan_tunnel0 -| | And Get VXLAN dump | ${dut2_node} | interface=${dut2s_vxlan} diff --git a/tests/vpp/func/ip6_tunnels/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot b/tests/vpp/func/ip6_tunnels/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot deleted file mode 100644 index 8a5f9dc8f5..0000000000 --- a/tests/vpp/func/ip6_tunnels/vxlan/eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot +++ /dev/null @@ -1,86 +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.IPUtil -| Library | resources.libraries.python.Trace -| ... -| Resource | resources/libraries/robot/l2/l2_traffic.robot -| Resource | resources/libraries/robot/overlay/vxlan.robot -| Resource | resources/libraries/robot/shared/default.robot -| Resource | resources/libraries/robot/shared/testing_path.robot -| ... -| Force Tags | 3_NODE_SINGLE_LINK_TOPO | VM_ENV | HW_ENV -| ... -| Test Setup | Set up functional test -| ... -| Test Teardown | Tear down functional test -| ... -| Documentation | *Bridge-domain with VXLAN test cases - IPv6* -| ... -| ... | *[Top] Network topologies:* TG-DUT1-DUT2-TG 3-node circular topology -| ... | with single links between nodes. -| ... | *[Enc] Packet encapsulations:* Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on -| ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn for L2 switching of IPv6. -| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 -| ... | bridge-domain (L2BD) switching combined with MAC learning enabled; -| ... | VXLAN tunnels are configured between L2BDs on DUT1 and DUT2. -| ... | *[Ver] TG verification:* Test ICMPv6 Echo Request packets are sent -| ... | in both directions by TG on links to DUT1 and DUT2; on receive TG -| ... | verifies packets for correctness and their IPv6 src-addr, dst-addr -| ... | and MAC addresses. -| ... | *[Ref] Applicable standard specifications:* RFC7348. - -*** Variables *** -| ${vni_1}= | 23 - -| ${bd_id1}= | 10 - -| ${ip6_addr1}= | 3ffe:64::1 -| ${ip6_addr2}= | 3ffe:64::2 -| ${ip6_prefix}= | 64 - -*** Test Cases *** -| TC01: DUT1 and DUT2 with L2BD and VXLANoIPv6 tunnels switch ICMPv6 between TG links -| | [Documentation] -| | ... | [Top] TG=DUT1=DUT2=TG.[Enc] Eth-IPv6-VXLAN-Eth-IPv6-ICMPv6 on \ -| | ... | DUT1-DUT2, Eth-IPv6-ICMPv6 on TG-DUTn. [Cfg] On DUT1 and DUT2 -| | ... | configure L2 bridge-domain (MAC learning enabled), each with one -| | ... | interface to TG and one VXLAN tunnel interface towards the other -| | ... | DUT. [Ver] Make TG send ICMPv6 Echo Req between two of its -| | ... | interfaces to be switched by DUT1 and DUT2; verify all packets -| | ... | are received. [Ref] RFC7348. -| | [Tags] | 3_NODE_DOUBLE_LINK_TOPO -| | Given Configure path in 3-node circular topology -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Set interfaces in 3-node circular topology up -| | And VPP Interface Set IP Address -| | ... | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr1} | ${ip6_prefix} -| | And VPP Interface Set IP Address -| | ... | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr2} | ${ip6_prefix} -| | And VPP IP Probe | ${dut1_node} | ${dut1_to_dut2} | ${ip6_addr2} -| | And VPP IP Probe | ${dut2_node} | ${dut2_to_dut1} | ${ip6_addr1} -| | And Vpp All RA Suppress Link Layer | ${nodes} -| | ${dut1s_vxlan}= | When Create VXLAN interface -| | ... | ${dut1_node} | ${vni_1} | ${ip6_addr1} | ${ip6_addr2} -| | And Add interfaces to L2BD -| | ... | ${dut1_node} | ${bd_id1} | ${dut1_to_tg} | ${dut1s_vxlan} -| | ${dut2s_vxlan}= | And Create VXLAN interface -| | ... | ${dut2_node} | ${vni_1} | ${ip6_addr2} | ${ip6_addr1} -| | And Add interfaces to L2BD -| | ... | ${dut2_node} | ${bd_id1} | ${dut2_to_tg} | ${dut2s_vxlan} -| | Then Send ICMPv6 bidirectionally and verify received packets -| | ... | ${tg_node} | ${tg_to_dut1} | ${tg_to_dut2} -| | And Get VXLAN dump | ${dut1_node} -| | And Get VXLAN dump | ${dut1_node} | interface=vxlan_tunnel0 -| | And Get VXLAN dump | ${dut2_node} | interface=${dut2s_vxlan} -- 2.16.6