diff options
Diffstat (limited to 'tests/func/telemetry')
-rw-r--r-- | tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot (renamed from tests/func/telemetry/ipfix_ipv4.robot) | 69 | ||||
-rw-r--r-- | tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot | 110 | ||||
-rw-r--r-- | tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot (renamed from tests/func/telemetry/ipfix_ipv6.robot) | 77 | ||||
-rw-r--r-- | tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot | 126 | ||||
-rw-r--r-- | tests/func/telemetry/span/eth2p-ethip4-ip4base-spanrx-func.robot (renamed from tests/func/telemetry/span.robot) | 23 | ||||
-rw-r--r-- | tests/func/telemetry/span/eth2p-ethip6-ip6base-spanrx-func.robot | 61 |
6 files changed, 298 insertions, 168 deletions
diff --git a/tests/func/telemetry/ipfix_ipv4.robot b/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot index 1c85d1f8a4..f3b02722cc 100644 --- a/tests/func/telemetry/ipfix_ipv4.robot +++ b/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixbase-func.robot @@ -21,8 +21,7 @@ | Library | resources.libraries.python.telemetry.IPFIXSetup | Library | resources.libraries.python.Trace -| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | EXPECTED_FAILING -# TODO: Remove EXPECTED_FAILING tag once functionality is implemented (VPP-204) +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | Test Setup | Func Test Setup | Test Teardown | Func Test Teardown | Documentation | *IPFIX ipv4 test cases* @@ -41,7 +40,6 @@ | ${prefix_length}= | 24 | ${ip_version}= | ip4 | ${port}= | 80 -| ${sessions}= | 80 *** Test Cases *** | TC01: DUT sends IPFIX template and data packets @@ -199,69 +197,4 @@ | | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} | | ... | port=${port} -| TC06: DUT reports packet flow with a large number of packets -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add classify session with TG source address. -| | ... | [Ver] Make TG send packets to DUT1, then listen for IPFIX template -| | ... | and data packets, verify that IPFIX reported the received packets. -| | ... | [Ref] RFC 7011 -| | Given Path for 3-node testing is set -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Interfaces in 3-node path are up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | src -| | And VPP configures classify session L3 | ${dut1_node} | permit -| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | src -| | ... | ${tg_to_dut1_ip} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} -| | ... | ${dut1_to_tg_ip} | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} -| | ... | count=20000 | timeout=10 - -| TC07: DUT reports packet flow when multiple sessions are configured -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add several classify sessions with different -| | ... | ports. -| | ... | [Ver] Make TG send packets to DUT1 using a range of ports matching -| | ... | configured sessions, then listen for IPFIX template and data packets, -| | ... | verify that IPFIX reported the received packets for each session. -| | ... | [Ref] RFC 7011 -| | Given Path for 3-node testing is set -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Interfaces in 3-node path are up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} -| | ... | src proto l4 src_port dst_port -| | :FOR | ${index} | IN RANGE | ${sessions} -| | | VPP configures classify session generic | ${dut1_node} -| | | ... | acl-hit-next permit | ${table_index} | ${skip_n} | ${match_n} -| | | ... | l3 ${ip_version} src ${tg_to_dut1_ip} -| | | ... | proto 6 l4 src_port ${index} dst_port ${index} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} -| | ... | ${dut1_to_tg_ip} -| | ... | mtu=1450 | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send session sweep and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} -| | ... | ${sessions} | timeout=10 | count=3 # TODO: DUT reports packet flow when ACL is configured with wildcards diff --git a/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot b/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot new file mode 100644 index 0000000000..1331f1c883 --- /dev/null +++ b/tests/func/telemetry/ipfix/eth2p-ethip4-ip4base-ip4ipfixscale-func.robot @@ -0,0 +1,110 @@ +# 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/default.robot +| Resource | resources/libraries/robot/interfaces.robot +| Resource | resources/libraries/robot/testing_path.robot +| Resource | resources/libraries/robot/ipv4.robot +| Resource | resources/libraries/robot/telemetry/ipfix.robot +| Library | resources.libraries.python.Classify.Classify +| Library | resources.libraries.python.telemetry.IPFIXSetup +| Library | resources.libraries.python.Trace + +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO +| Test Setup | Func Test Setup +| Test Teardown | Func Test Teardown +| Documentation | *IPFIX ipv4 test cases* +| ... +| ... | IPFIX tests use 3-node topology TG - DUT1 - DUT2 - TG with +| ... | one link between the nodes. DUT1 is configured with IPv4 +| ... | routing and static routes. IPFIX is configured on DUT1 with +| ... | DUT1->TG interface as collector. Test packets are +| ... | sent from TG to DUT1. TG listens for flow report packets +| ... | and verifies that they contains flow record of test packets sent. + +*** Variables *** +| ${dut1_to_tg_ip}= | 192.168.1.1 +| ${tg_to_dut1_ip}= | 192.168.1.2 +| ${prefix_length}= | 24 +| ${ip_version}= | ip4 +| ${sessions}= | 80 + +*** Test Cases *** +| TC01: DUT reports packet flow with a large number of packets +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add classify session with TG source address. +| | ... | [Ver] Make TG send packets to DUT1, then listen for IPFIX template +| | ... | and data packets, verify that IPFIX reported the received packets. +| | ... | [Ref] RFC 7011 +| | Given Path for 3-node testing is set +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Interfaces in 3-node path are up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | src +| | And VPP configures classify session L3 | ${dut1_node} | permit +| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | src +| | ... | ${tg_to_dut1_ip} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} +| | ... | ${dut1_to_tg_ip} | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} +| | ... | count=20000 | timeout=10 + +| TC02: DUT reports packet flow when multiple sessions are configured +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add several classify sessions with different +| | ... | ports. +| | ... | [Ver] Make TG send packets to DUT1 using a range of ports matching +| | ... | configured sessions, then listen for IPFIX template and data packets, +| | ... | verify that IPFIX reported the received packets for each session. +| | ... | [Ref] RFC 7011 +| | Given Path for 3-node testing is set +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Interfaces in 3-node path are up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} +| | ... | src proto l4 src_port dst_port +| | :FOR | ${index} | IN RANGE | ${sessions} +| | | VPP configures classify session generic | ${dut1_node} +| | | ... | acl-hit-next permit | ${table_index} | ${skip_n} | ${match_n} +| | | ... | l3 ${ip_version} src ${tg_to_dut1_ip} +| | | ... | proto 6 l4 src_port ${index} dst_port ${index} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip} +| | ... | ${dut1_to_tg_ip} +| | ... | mtu=1450 | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send session sweep and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} +| | ... | ${sessions} | timeout=10 | count=3 + +# TODO: DUT reports packet flow when ACL is configured with wildcards diff --git a/tests/func/telemetry/ipfix_ipv6.robot b/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot index b8310b2a13..8451eb6940 100644 --- a/tests/func/telemetry/ipfix_ipv6.robot +++ b/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixbase-func.robot @@ -42,7 +42,6 @@ | ${prefix_length}= | 64 | ${ip_version}= | ip6 | ${port}= | 80 -| ${sessions}= | 45 # IPv4 addresses used for IPFIX exporter. Export over IPv6 not (yet?) supported. | ${dut1_to_tg_ip4}= | 192.168.1.1 @@ -195,80 +194,4 @@ | | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} | | ... | port=${port} -| TC05: DUT reports packet flow with a large number of packets -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add classify session with TG source address. -| | ... | [Ver] Make TG send packets to DUT1, then listen for IPFIX template -| | ... | and data packets, verify that IPFIX reported the received packets. -| | ... | [Ref] RFC 7011 -| | Given Path for 3-node testing is set -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Interfaces in 3-node path are up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} -| | ... | ${tg_to_dut1_mac} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | src -| | And VPP configures classify session L3 | ${dut1_node} | permit -| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | src -| | ... | ${tg_to_dut1_ip} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} -| | ... | ${dut1_to_tg_ip4} | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} -| | ... | count=20000 | timeout=10 - -| TC06: DUT reports packet flow when multiple sessions are configured -| | [Documentation] -| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface -| | ... | address as collector and add several classify sessions with different -| | ... | ports. -| | ... | [Ver] Make TG send packets to DUT1 using a range of ports matching -| | ... | configured sessions, then listen for IPFIX template and data packets, -| | ... | verify that IPFIX reported the received packets for each session. -| | ... | [Ref] RFC 7011 -| | Given Path for 3-node testing is set -| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} -| | And Interfaces in 3-node path are up -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} -| | And Set Interface Address | ${dut1_node} -| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} -| | ... | ${tg_to_dut1_mac} -| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} -| | ... | ${tg_to_dut1_mac} -| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} -| | ${table_index} | ${skip_n} | ${match_n}= -| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} -| | ... | src proto l4 src_port dst_port -| | :FOR | ${index} | IN RANGE | ${sessions} -| | | VPP configures classify session generic | ${dut1_node} -| | | ... | acl-hit-next permit | ${table_index} | ${skip_n} | ${match_n} -| | | ... | l3 ${ip_version} src ${tg_to_dut1_ip} -| | | ... | proto 6 l4 src_port ${index} dst_port ${index} -| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} -| | ... | ${table_index} | ip_version=${ip_version} -| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} -| | ... | ${dut1_to_tg_ip4} | interval=5 -| | ... | mtu=1450 | interval=5 -| | And Set IPFIX stream | ${dut1_node} | ${1} -| | And Assign classify table to exporter | ${dut1_node} | ${table_index} -| | ... | ${ip_version} -| | Then Send session sweep and verify IPFIX | ${tg_node} | ${dut1_node} -| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} -| | ... | ${sessions} | timeout=10 | count=3 - # TODO: DUT reports packet flow when ACL is configured with wildcards diff --git a/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot b/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot new file mode 100644 index 0000000000..125e8b92af --- /dev/null +++ b/tests/func/telemetry/ipfix/eth2p-ethip6-ip6base-ip6ipfixscale-func.robot @@ -0,0 +1,126 @@ +# 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/default.robot +| Resource | resources/libraries/robot/interfaces.robot +| Resource | resources/libraries/robot/testing_path.robot +| Resource | resources/libraries/robot/ipv4.robot +| Resource | resources/libraries/robot/telemetry/ipfix.robot +| Library | resources.libraries.python.Classify.Classify +| Library | resources.libraries.python.telemetry.IPFIXSetup +| Library | resources.libraries.python.IPv6Setup +| Library | resources.libraries.python.Trace + +| Force Tags | HW_ENV | VM_ENV | 3_NODE_SINGLE_LINK_TOPO | EXPECTED_FAILING +# TODO: Remove EXPECTED_FAILING tag once functionality is implemented (VPP-204) +| Test Setup | Func Test Setup +| Test Teardown | Func Test Teardown +| Documentation | *IPFIX ipv6 test cases* +| ... +| ... | IPFIX tests use 3-node topology TG - DUT1 - DUT2 - TG with +| ... | one link between the nodes. DUT1 is configured with IPv4 and IPV6 +| ... | routing and static routes. IPFIX is configured on DUT1 with +| ... | DUT1->TG interface as collector.Test packets are +| ... | sent from TG to or through DUT1. TG listens for flow report packets +| ... | and verifies that they contains flow records of test packets sent. + +*** Variables *** +| ${dut1_to_tg_ip}= | 10::10 +| ${tg_to_dut1_ip}= | 12::10 +| ${prefix_length}= | 64 +| ${ip_version}= | ip6 +| ${sessions}= | 45 + +# IPv4 addresses used for IPFIX exporter. Export over IPv6 not (yet?) supported. +| ${dut1_to_tg_ip4}= | 192.168.1.1 +| ${tg_to_dut1_ip4}= | 192.168.1.2 + +*** Test Cases *** +| TC01: DUT reports packet flow with a large number of packets +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add classify session with TG source address. +| | ... | [Ver] Make TG send packets to DUT1, then listen for IPFIX template +| | ... | and data packets, verify that IPFIX reported the received packets. +| | ... | [Ref] RFC 7011 +| | Given Path for 3-node testing is set +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Interfaces in 3-node path are up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} +| | ... | ${tg_to_dut1_mac} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} | src +| | And VPP configures classify session L3 | ${dut1_node} | permit +| | ... | ${table_index} | ${skip_n} | ${match_n} | ${ip_version} | src +| | ... | ${tg_to_dut1_ip} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} +| | ... | ${dut1_to_tg_ip4} | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send packets and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} +| | ... | count=20000 | timeout=10 + +| TC02: DUT reports packet flow when multiple sessions are configured +| | [Documentation] +| | ... | [Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPFIX with TG interface +| | ... | address as collector and add several classify sessions with different +| | ... | ports. +| | ... | [Ver] Make TG send packets to DUT1 using a range of ports matching +| | ... | configured sessions, then listen for IPFIX template and data packets, +| | ... | verify that IPFIX reported the received packets for each session. +| | ... | [Ref] RFC 7011 +| | Given Path for 3-node testing is set +| | ... | ${nodes['TG']} | ${nodes['DUT1']} | ${nodes['DUT2']} | ${nodes['TG']} +| | And Interfaces in 3-node path are up +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip} | ${prefix_length} +| | And Set Interface Address | ${dut1_node} +| | ... | ${dut1_to_tg} | ${dut1_to_tg_ip4} | ${24} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip4} +| | ... | ${tg_to_dut1_mac} +| | And Add ARP on DUT | ${dut1_node} | ${dut1_to_tg} | ${tg_to_dut1_ip} +| | ... | ${tg_to_dut1_mac} +| | And VPP RA suppress link layer | ${dut1_node} | ${dut1_to_tg} +| | ${table_index} | ${skip_n} | ${match_n}= +| | ... | And VPP creates classify table L3 | ${dut1_node} | ${ip_version} +| | ... | src proto l4 src_port dst_port +| | :FOR | ${index} | IN RANGE | ${sessions} +| | | VPP configures classify session generic | ${dut1_node} +| | | ... | acl-hit-next permit | ${table_index} | ${skip_n} | ${match_n} +| | | ... | l3 ${ip_version} src ${tg_to_dut1_ip} +| | | ... | proto 6 l4 src_port ${index} dst_port ${index} +| | When Assign interface to flow table | ${dut1_node} | ${dut1_to_tg} +| | ... | ${table_index} | ip_version=${ip_version} +| | And setup IPFIX exporter | ${dut1_node} | ${tg_to_dut1_ip4} +| | ... | ${dut1_to_tg_ip4} | interval=5 +| | ... | mtu=1450 | interval=5 +| | And Set IPFIX stream | ${dut1_node} | ${1} +| | And Assign classify table to exporter | ${dut1_node} | ${table_index} +| | ... | ${ip_version} +| | Then Send session sweep and verify IPFIX | ${tg_node} | ${dut1_node} +| | ... | ${tg_to_dut1} | ${dut1_to_tg} | ${tg_to_dut1_ip} | ${dut1_to_tg_ip} +| | ... | ${sessions} | timeout=10 | count=3 + +# TODO: DUT reports packet flow when ACL is configured with wildcards diff --git a/tests/func/telemetry/span.robot b/tests/func/telemetry/span/eth2p-ethip4-ip4base-spanrx-func.robot index 8a7af5f0d1..62f76d847d 100644 --- a/tests/func/telemetry/span.robot +++ b/tests/func/telemetry/span/eth2p-ethip4-ip4base-spanrx-func.robot @@ -36,8 +36,6 @@ *** Variables *** | ${tg_to_dut_if1_ip4}= | 192.168.1.1 | ${dut_to_tg_if1_ip4}= | 192.168.1.2 -| ${tg_to_dut_if1_ip6}= | 11::1 -| ${dut_to_tg_if1_ip6}= | 10::1 | ${prefix}= | 24 *** Test Cases *** @@ -80,24 +78,3 @@ | | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} | | ... | ${dut_to_tg__if1_mac} | ${tg_to_dut_if2} | | ... | ${tg_to_dut_if1_ip4} | ${dut_to_tg_if1_ip4} | ICMP - -| TC03: DUT mirrors IPv6 packets from one interface to another -| | [Documentation] -| | ... | [Top] TG=DUT1 -| | ... | [Cfg] On DUT1 configure IPv6 address, add ARP entry for one TG \ -| | ... | interface and set SPAN mirroring from one DUT interface to the other. -| | ... | [Ver] Make TG send an ICMP packet to DUT through one interface,\ -| | ... | then receive a copy of sent packet and of DUT's ICMP reply\ -| | ... | on the other interface. -| | Given Path For 2-node Testing Is Set | ${nodes['TG']} | ${nodes['DUT1']} -| | ... | ${nodes['TG']} -| | And Interfaces In 2-node Path Are Up -| | And Set interface Address | ${dut_node} | ${dut_to_tg_if1} -| | ... | ${dut_to_tg_if1_ip6} | ${prefix} -| | And Add ARP on DUT | ${dut_node} | ${dut_to_tg_if1} | ${tg_to_dut_if1_ip6} -| | ... | ${tg_to_dut_if1_mac} -| | And Set SPAN Mirroring | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} -| | Then Send Packet And Check Received Copies | ${tg_node} -| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} -| | ... | ${dut_to_tg__if1_mac} | ${tg_to_dut_if2} -| | ... | ${tg_to_dut_if1_ip6} | ${dut_to_tg_if1_ip6} | ICMP diff --git a/tests/func/telemetry/span/eth2p-ethip6-ip6base-spanrx-func.robot b/tests/func/telemetry/span/eth2p-ethip6-ip6base-spanrx-func.robot new file mode 100644 index 0000000000..5fa7d0c5e4 --- /dev/null +++ b/tests/func/telemetry/span/eth2p-ethip6-ip6base-spanrx-func.robot @@ -0,0 +1,61 @@ +# 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/default.robot +| Resource | resources/libraries/robot/testing_path.robot +| Resource | resources/libraries/robot/telemetry/span.robot +| Library | resources.libraries.python.Trace +| Library | resources.libraries.python.IPv4Util +| Library | resources.libraries.python.IPv4Setup +| Library | resources.libraries.python.telemetry.SPAN +| Force Tags | HW_ENV | VM_ENV | 3_NODE_DOUBLE_LINK_TOPO | EXPECTED_FAILING +# TODO: Remove EXPECTED_FAILING tag once functionality is implemented (VPP-185) +| Test Setup | Func Test Setup +| Test Teardown | Func Test Teardown +| Documentation | *SPAN test suite* +| ... | *[Top] Network Topologies:* TG=DUT1 2-node topology with two +| ... | links between nodes. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with SPAN mirroring from +| ... | the first DUT1-TG interface to the second one. +| ... | *[Ver] TG verification:* Test ARP or ICMP packets are sent by TG +| ... | on first link to DUT1; On receipt through second link TG verifies +| ... | the copy of packet sent and the copy of DUT's reply packet. +| ... | *[Ref] Applicable standard specifications: None?* + +*** Variables *** +| ${tg_to_dut_if1_ip6}= | 11::1 +| ${dut_to_tg_if1_ip6}= | 10::1 +| ${prefix}= | 24 + +*** Test Cases *** +| TC01: DUT mirrors IPv6 packets from one interface to another +| | [Documentation] +| | ... | [Top] TG=DUT1 +| | ... | [Cfg] On DUT1 configure IPv6 address, add ARP entry for one TG \ +| | ... | interface and set SPAN mirroring from one DUT interface to the other. +| | ... | [Ver] Make TG send an ICMP packet to DUT through one interface,\ +| | ... | then receive a copy of sent packet and of DUT's ICMP reply\ +| | ... | on the other interface. +| | Given Path For 2-node Testing Is Set | ${nodes['TG']} | ${nodes['DUT1']} +| | ... | ${nodes['TG']} +| | And Interfaces In 2-node Path Are Up +| | And Set interface Address | ${dut_node} | ${dut_to_tg_if1} +| | ... | ${dut_to_tg_if1_ip6} | ${prefix} +| | And Add ARP on DUT | ${dut_node} | ${dut_to_tg_if1} | ${tg_to_dut_if1_ip6} +| | ... | ${tg_to_dut_if1_mac} +| | And Set SPAN Mirroring | ${dut_node} | ${dut_to_tg_if1} | ${dut_to_tg_if2} +| | Then Send Packet And Check Received Copies | ${tg_node} +| | ... | ${tg_to_dut_if1} | ${tg_to_dut_if1_mac} +| | ... | ${dut_to_tg__if1_mac} | ${tg_to_dut_if2} +| | ... | ${tg_to_dut_if1_ip6} | ${dut_to_tg_if1_ip6} | ICMP |