From d5e7718b186ff98d0d1011bded653e86db263c50 Mon Sep 17 00:00:00 2001 From: Peter Mikus Date: Sun, 9 Jun 2019 06:44:04 +0000 Subject: vpp_device: TAP Change-Id: Ife31921daaa5a87f64e61d2eebb98bfdded1dc76 Signed-off-by: Peter Mikus --- .../eth2p-eth-l2bdbasemaclrn-eth-2tap-dev.robot | 90 +++++++++++++++ .../eth2p-ethip4-ip4base-eth-1tap-dev.robot | 125 +++++++++++++++++++++ 2 files changed, 215 insertions(+) create mode 100644 tests/vpp/device/interfaces/eth2p-eth-l2bdbasemaclrn-eth-2tap-dev.robot create mode 100644 tests/vpp/device/interfaces/eth2p-ethip4-ip4base-eth-1tap-dev.robot (limited to 'tests/vpp/device/interfaces') diff --git a/tests/vpp/device/interfaces/eth2p-eth-l2bdbasemaclrn-eth-2tap-dev.robot b/tests/vpp/device/interfaces/eth2p-eth-l2bdbasemaclrn-eth-2tap-dev.robot new file mode 100644 index 0000000000..f7a0fbe153 --- /dev/null +++ b/tests/vpp/device/interfaces/eth2p-eth-l2bdbasemaclrn-eth-2tap-dev.robot @@ -0,0 +1,90 @@ +# 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 +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.Tap +| Library | resources.libraries.python.Namespaces +| Library | resources.libraries.python.IPUtil +| ... +| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV +| ... | FUNCTEST | L2BD | BASE | ETH | TAP +| ... +| Test Setup | Run Keywords | Set up VPP device test +| ... | AND | Clean Up Namespaces | ${nodes['DUT1']} +| ... +| Test Teardown | Run Keywords | Tear down VPP device test +| ... | AND | Clean Up Namespaces | ${nodes['DUT1']} +| ... | AND | Linux Del Bridge | ${nodes['DUT1']} | ${bid_TAP} +| ... +| Documentation | *Tap Interface Traffic Tests* +| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links +| ... | between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of +| ... | IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) MAC learning enabled; Split Horizon Groups (SHG) +| ... | are set depending on test case; Namespaces (NM) +| ... | are set on DUT1 with attached linux-TAP. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets +| ... | are sent by TG on link to DUT1; On receipt TG verifies packets +| ... | for correctness and their IPv4 src-addr, dst-addr, and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${bid_from_TG}= | 19 +| ${bid_to_TG}= | 20 +| ${bid_TAP}= | tapBr + +| ${tap_int1}= | tap0 +| ${tap_int2}= | tap1 + +*** Test Cases *** +| tc01-eth2p-ethicmpv4-l2bdbasemaclrn-eth-2tap-device_tap-simple-bd +| | [Documentation] +| | ... | [Cfg] On DUT1 configure two L2BD with two if's for each L2BD with MAC\ +| | ... | learning and one L2BD joining two linux-TAP interfaces created by VPP\ +| | ... | located in namespace. +| | ... | [Ver] Packet sent from TG is passed through all L2BD and received\ +| | ... | back on TG. Then src_ip, dst_ip and MAC are checked. +| | ... +| | Given Configure path in 2-node circular topology | ${nodes['TG']} +| | ... | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} +| | ${int2}= | And Add Tap Interface | ${dut_node} | ${tap_int2} +| | And Set Interface State | ${dut_node} | ${int1} | up +| | And Set Interface State | ${dut_node} | ${int2} | up +| | And Create bridge domain | ${dut_node} +| | ... | ${bid_from_TG} | learn=${TRUE} +| | And Create bridge domain | ${dut_node} +| | ... | ${bid_to_TG} | learn=${TRUE} +| | And Linux Add Bridge | ${dut_node} +| | ... | ${bid_TAP} | ${tap_int1} | ${tap_int2} +| | And Add interface to bridge domain | ${dut_node} +| | ... | ${int1} | ${bid_to_TG} | 0 +| | And Add interface to bridge domain | ${dut_node} +| | ... | ${dut_to_tg_if1} | ${bid_to_TG} | 0 +| | And Add interface to bridge domain | ${dut_node} +| | ... | ${int2} | ${bid_from_TG} | 0 +| | And Add interface to bridge domain | ${dut_node} +| | ... | ${dut_to_tg_if2} | ${bid_from_TG} | 0 +| | Then Send ICMP packet and verify received packet | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if2} \ No newline at end of file diff --git a/tests/vpp/device/interfaces/eth2p-ethip4-ip4base-eth-1tap-dev.robot b/tests/vpp/device/interfaces/eth2p-ethip4-ip4base-eth-1tap-dev.robot new file mode 100644 index 0000000000..e97ccaf1fb --- /dev/null +++ b/tests/vpp/device/interfaces/eth2p-ethip4-ip4base-eth-1tap-dev.robot @@ -0,0 +1,125 @@ +# 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 +| Resource | resources/libraries/robot/ip/ip4.robot +| Resource | resources/libraries/robot/ip/ip6.robot +| Resource | resources/libraries/robot/shared/interfaces.robot +| Resource | resources/libraries/robot/l2/l2_bridge_domain.robot +| Resource | resources/libraries/robot/shared/testing_path.robot +| Resource | resources/libraries/robot/shared/traffic.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.Tap +| Library | resources.libraries.python.Namespaces +| Library | resources.libraries.python.IPUtil +| ... +| Force Tags | 2_NODE_SINGLE_LINK_TOPO | DEVICETEST | HW_ENV | DCR_ENV +| ... | FUNCTEST | IP4FWD | BASE | ETH | IP4BASE | TAP +| ... +| Test Setup | Run Keywords | Set up VPP device test +| ... | AND | Clean Up Namespaces | ${nodes['DUT1']} +| ... +| Test Teardown | Run Keywords | Tear down VPP device test +| ... | AND | Clean Up Namespaces | ${nodes['DUT1']} +| ... +| Documentation | *Tap Interface Traffic Tests* +| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two links +| ... | between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-ICMPv4 for L2 switching of +| ... | IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 +| ... | bridge-domain (L2BD) MAC learning enabled; Split Horizon Groups (SHG) +| ... | are set depending on test case; Namespaces (NM) +| ... | are set on DUT1 with attached linux-TAP. +| ... | *[Ver] TG verification:* Test ICMPv4 Echo Request packets +| ... | are sent by TG on link to DUT1; On receipt TG verifies packets +| ... | for correctness and their IPv4 src-addr, dst-addr, and MAC addresses. +| ... | *[Ref] Applicable standard specifications:* + +*** Variables *** +| ${tap1_VPP_ip}= | 16.0.10.1 +| ${tap1_NM_ip}= | 16.0.10.2 +| ${tap1_NM_mac}= | 02:00:00:00:00:02 +| ${tap_int1}= | tap0 + +| ${namespace1}= | nmspace1 + +| ${dut_ip_address}= | 192.168.0.1 +| ${tg_ip_address}= | 192.168.0.2 +| ${tg_ip_address_GW}= | 192.168.0.0 +| ${prefix}= | 24 + +*** Test Cases *** +| tc01-eth2p-ethicmpv4-ip4base-device_tap-no-namespace +| | [Documentation] +| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which\ +| | ... | one is TAP interface (dut_to_tg_if and TAP) and one is linux-TAP. +| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is\ +| | ... | received on TG. +| | ... +| | Given Configure path in 2-node circular topology | ${nodes['TG']} +| | ... | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} | +| | And Set Interface Address +| | ... | ${dut_node} | ${int1} | ${tap1_VPP_ip} | ${prefix} +| | And Set Interface Address +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip_address} | ${prefix} +| | And Set Interface State | ${dut_node} | ${int1} | up +| | And Set Linux Interface MAC | ${dut_node} | ${tap_int1} | ${tap1_NM_mac} +| | And Set Linux Interface IP | ${dut_node} +| | ... | ${tap_int1} | ${tap1_NM_ip} | ${prefix} +| | And Add Route | ${dut_node} +| | ... | ${tg_ip_address_GW} | ${prefix} | ${tap1_VPP_ip} +| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${tg_ip_address} | ${tg_to_dut_if1_mac} +| | And Add Arp On Dut | ${dut_node} | ${int1} +| | ... | ${tap1_NM_ip} | ${tap1_NM_mac} +| | Then Send ICMP echo request and verify answer | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac} +| | ... | ${tap1_NM_ip} | ${tg_ip_address} + +| tc02-eth2p-ethicmpv4-ip4base-device_tap-namespace +| | [Documentation] +| | ... | [Cfg] On DUT1 configure two interface addresses with IPv4 of which\ +| | ... | one is TAP interface (dut_to_tg_if and TAP) and one is linux-TAP in\ +| | ... | namespace. +| | ... | [Ver] Packet sent from TG gets to the destination and ICMP-reply is\ +| | ... | received on TG. +| | ... +| | Given Configure path in 2-node circular topology | ${nodes['TG']} +| | ... | ${nodes['DUT1']} | ${nodes['TG']} +| | And Set interfaces in 2-node circular topology up +| | ${int1}= | And Add Tap Interface | ${dut_node} | ${tap_int1} | +| | And Set Interface Address +| | ... | ${dut_node} | ${int1} | ${tap1_VPP_ip} | ${prefix} +| | And Set Interface Address +| | ... | ${dut_node} | ${dut_to_tg_if1} | ${dut_ip_address} | ${prefix} +| | And Set Interface State | ${dut_node} | ${int1} | up +| | When Create Namespace | ${dut_node} | ${namespace1} +| | And Attach Interface To Namespace | ${dut_node} +| | ... | ${namespace1} | ${tap_int1} +| | And Set Linux Interface MAC | ${dut_node} +| | ... | ${tap_int1} | ${tap1_NM_mac} | ${namespace1} +| | And Set Linux Interface IP | ${dut_node} +| | ... | ${tap_int1} | ${tap1_NM_ip} | ${prefix} | ${namespace1} +| | And Add Arp On Dut | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${tg_ip_address} | ${tg_to_dut_if1_mac} +| | And Add Arp On Dut | ${dut_node} | ${int1} +| | ... | ${tap1_NM_ip} | ${tap1_NM_mac} +| | And Add Route | ${dut_node} +| | ... | ${tg_ip_address_GW} | ${prefix} | ${tap1_VPP_ip} | ${namespace1} +| | Then Send ICMP echo request and verify answer | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${dut_to_tg_if1_mac} | ${tg_to_dut_if1_mac} +| | ... | ${tap1_NM_ip} | ${tg_ip_address} -- cgit 1.2.3-korg