From 9440d0f9cfca758b48297350bba52d853cc483ef Mon Sep 17 00:00:00 2001 From: Jan Gelety Date: Thu, 13 Sep 2018 15:25:39 +0200 Subject: [PATCH] Add dot1q-ip6base-[ndrpdr|mrr] perf tests for 2-node topology Jira: CSIT-1283 Change-Id: I0f6841bafdb47bdbc3efe29801fe66a0d4c388ca Signed-off-by: Jan Gelety --- .../performance/performance_configuration.robot | 91 +++++++++++++ .../trex/trex-sl-2n-dot1qip6asym-ip6src253.py | 104 +++++++++++++++ .../ip4/10ge2p1x520-dot1q-ip4base-ndrpdr.robot | 2 +- .../ip4/10ge2p1x710-dot1q-ip4base-ndrpdr.robot | 2 +- .../2n1l-10ge2p1x710-dot1q-ip4base-ndrpdr.robot | 2 +- .../2n1l-25ge2p1xxv710-dot1q-ip4base-ndrpdr.robot | 2 +- .../perf/ip6/10ge2p1x520-dot1q-ip6base-mrr.robot | 132 +++++++++++++++++++ .../ip6/10ge2p1x520-dot1q-ip6base-ndrpdr.robot | 138 ++++++++++++++++++++ .../perf/ip6/10ge2p1x710-dot1q-ip6base-mrr.robot | 132 +++++++++++++++++++ .../ip6/10ge2p1x710-dot1q-ip6base-ndrpdr.robot | 138 ++++++++++++++++++++ .../ip6/2n1l-10ge2p1x710-dot1q-ip6base-mrr.robot | 132 +++++++++++++++++++ .../2n1l-10ge2p1x710-dot1q-ip6base-ndrpdr.robot | 138 ++++++++++++++++++++ .../ip6/2n1l-25ge2p1xxv710-dot1q-ip6base-mrr.robot | 135 ++++++++++++++++++++ .../2n1l-25ge2p1xxv710-dot1q-ip6base-ndrpdr.robot | 141 +++++++++++++++++++++ 14 files changed, 1285 insertions(+), 4 deletions(-) create mode 100755 resources/traffic_profiles/trex/trex-sl-2n-dot1qip6asym-ip6src253.py create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-dot1q-ip6base-mrr.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-dot1q-ip6base-ndrpdr.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x710-dot1q-ip6base-mrr.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x710-dot1q-ip6base-ndrpdr.robot create mode 100644 tests/vpp/perf/ip6/2n1l-10ge2p1x710-dot1q-ip6base-mrr.robot create mode 100644 tests/vpp/perf/ip6/2n1l-10ge2p1x710-dot1q-ip6base-ndrpdr.robot create mode 100644 tests/vpp/perf/ip6/2n1l-25ge2p1xxv710-dot1q-ip6base-mrr.robot create mode 100644 tests/vpp/perf/ip6/2n1l-25ge2p1xxv710-dot1q-ip6base-ndrpdr.robot diff --git a/resources/libraries/robot/performance/performance_configuration.robot b/resources/libraries/robot/performance/performance_configuration.robot index fef3fc89f7..dc13707d05 100644 --- a/resources/libraries/robot/performance/performance_configuration.robot +++ b/resources/libraries/robot/performance/performance_configuration.robot @@ -776,6 +776,97 @@ | | Vpp Route Add | ${dut} | 2001:2::0 | ${host_prefix} | 2001:5::2 | | ... | interface=${dut_if2} | count=${count} +| Initialize IPv6 forwarding with VLAN dot1q sub-interfaces in circular topology +| | [Documentation] +| | ... | Set UP state on VPP interfaces in path on nodes in 2-node / 3-node +| | ... | circular topology. In case of 3-node topology create VLAN +| | ... | sub-interfaces between DUTs. In case of 2-node topology create VLAN +| | ... | sub-interface on dut1-if2 interface. Get the interface MAC addresses +| | ... | and setup ARPs. Setup IPv6 addresses with /64 prefix on DUT-TG links +| | ... | and set routing with prefix /64. In case of 3-node set IPv6 adresses +| | ... | with /64 prefix on VLAN and set routing on both DUT nodes with prefix +| | ... | /64. Set next hop of neighbour DUT interface IPv6 address. All +| | ... | interfaces are brought up. +| | ... +| | ... | *Arguments:* +| | ... | - tg_if1_net - TG interface 1 IPv6 subnet used by traffic generator. +| | ... | Type: integer +| | ... | - tg_if2_net - TG interface 2 IPv6 subnet used by traffic generator. +| | ... | Type: integer +| | ... | - subid - ID of the sub-interface to be created. Type: string +| | ... | - tag_rewrite - Method of tag rewrite. Type: string +| | ... +| | ... | _NOTE:_ This KW uses following test case variables: +| | ... | - dut1 - DUT1 node. +| | ... | - dut2 - DUT2 node. +| | ... | - dut1_if2 - DUT1 interface towards DUT2. +| | ... | - dut2_if1 - DUT2 interface towards DUT1. +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Initialize IPv6 forwarding with VLAN dot1q sub-interfaces\ +| | ... | in circular topology \| 2001:1::0 \| 2001:2::0 \| 10 \| pop-1 \| +| | ... +| | [Arguments] | ${tg_if1_net} | ${tg_if2_net} | ${subid} | ${tag_rewrite} +| | ... +| | ${dut2_status} | ${value}= | Run Keyword And Ignore Error +| | ... | Variable Should Exist | ${dut2} +| | ... +| | Set interfaces in path up +| | ... +| | Run Keyword If | '${dut2_status}' == 'PASS' +| | ... | Initialize VLAN dot1q sub-interfaces in circular topology +| | ... | ${dut1} | ${dut1_if2} | ${dut2} | ${dut2_if1} | ${subid} +| | ... | ELSE | Initialize VLAN dot1q sub-interfaces in circular topology +| | ... | ${dut1} | ${dut1_if2} | SUB_ID=${subid} +| | Run Keyword If | '${dut2_status}' == 'PASS' +| | ... | Configure L2 tag rewrite method on interfaces | ${dut1} +| | ... | ${subif_index_1} | ${dut2} | ${subif_index_2} | ${tag_rewrite} +| | ... | ELSE | Configure L2 tag rewrite method on interfaces +| | ... | ${dut1} | ${subif_index_1} | TAG_REWRITE_METHOD=${tag_rewrite} +| | ... +| | ${prefix}= | Set Variable | 64 +| | ${host_prefix}= | Set Variable | 64 +| | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} +| | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} +| | ${dut1_if2_mac}= | Run Keyword If | '${dut2_status}' == 'PASS' +| | ... | Get Interface MAC | ${dut1} | ${dut1_if2} +| | ${dut2_if1_mac}= | Run Keyword If | '${dut2_status}' == 'PASS' +| | ... | Get Interface MAC | ${dut2} | ${dut2_if1} +| | Add Ip Neighbor | ${dut1} | ${dut1_if1} | 2002:1::1 | ${tg1_if1_mac} +| | Run Keyword If | '${dut2_status}' == 'PASS' +| | ... | Add Ip Neighbor | ${dut1} | ${subif_index_1} | 2002:2::2 +| | ... | ${dut2_if1_mac} +| | Run Keyword If | '${dut2_status}' == 'PASS' +| | ... | Add Ip Neighbor | ${dut2} | ${subif_index_2} | 2002:2::1 +| | ... | ${dut1_if2_mac} +| | ${dut}= | Run Keyword If | '${dut2_status}' == 'PASS' +| | ... | Set Variable | ${dut2} +| | ... | ELSE | Set Variable | ${dut1} +| | ${dut_if2}= | Run Keyword If | '${dut2_status}' == 'PASS' +| | ... | Set Variable | ${dut2_if2} +| | ... | ELSE | Set Variable | ${subif_index_1} +| | Add Ip Neighbor | ${dut} | ${dut_if2} | 2002:3::1 | ${tg1_if2_mac} +| | VPP Set If IPv6 Addr | ${dut1} | ${dut1_if1} | 2002:1::2 | ${prefix} +| | Run Keyword If | '${dut2_status}' == 'PASS' +| | ... | VPP Set If IPv6 Addr | ${dut1} | ${subif_index_1} | 2002:2::1 +| | ... | ${prefix} +| | Run Keyword If | '${dut2_status}' == 'PASS' +| | ... | VPP Set If IPv6 Addr | ${dut2} | ${subif_index_2} | 2002:2::2 +| | ... | ${prefix} +| | VPP Set If IPv6 Addr | ${dut} | ${dut_if2} | 2002:3::2 | ${prefix} +| | Suppress ICMPv6 router advertisement message | ${nodes} +| | Vpp Route Add | ${dut1} | ${tg_if1_net} | ${host_prefix} | 2002:1::1 +| | ... | interface=${dut1_if1} +| | Run Keyword If | '${dut2_status}' == 'PASS' +| | ... | Vpp Route Add | ${dut1} | ${tg_if2_net} | ${host_prefix} | 2002:2::2 +| | ... | interface=${subif_index_1} +| | Run Keyword If | '${dut2_status}' == 'PASS' +| | ... | Vpp Route Add | ${dut2} | ${tg_if1_net} | ${host_prefix} | 2002:2::1 +| | ... | interface=${subif_index_2} +| | Vpp Route Add | ${dut} | ${tg_if2_net} | ${host_prefix} | 2002:3::1 +| | ... | interface=${dut_if2} + | Initialize IPv6 iAcl whitelist in 3-node circular topology | | [Documentation] | | ... | Creates classify L3 table on DUTs. IPv6 iAcl security whitelist diff --git a/resources/traffic_profiles/trex/trex-sl-2n-dot1qip6asym-ip6src253.py b/resources/traffic_profiles/trex/trex-sl-2n-dot1qip6asym-ip6src253.py new file mode 100755 index 0000000000..573547fe86 --- /dev/null +++ b/resources/traffic_profiles/trex/trex-sl-2n-dot1qip6asym-ip6src253.py @@ -0,0 +1,104 @@ +# Copyright (c) 2018 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. + +"""Stream profile for T-rex traffic generator. + +Stream profile: + - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time. + - Direction 0 --> 1: + - Packet: ETH / IPv6 / + - Source IP address range: 2001:1::2 - 2001:1::FE + - Destination IP address range: 2001:2::2 + - Direction 1 --> 0: + - Packet: ETH / DOT1Q / IPv6 / + - Source IP address range: 2001:2::2 - 2001:2::FE + - Destination IP address range: 2001:1::2 +""" + +from trex_stl_lib.api import * +from profile_trex_stateless_base_class import TrafficStreamsBaseClass + + +class TrafficStreams(TrafficStreamsBaseClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsBaseClass, self).__init__() + + # VLAN ID + self.vlan_id = 10 + + # IPs used in packet headers. + self.p1_src_start_ip = '2001:1::2' + self.p1_src_end_ip = '2001:1::FE' + self.p1_dst_start_ip = '2001:2::2' + + self.p2_src_start_ip = '2001:2::2' + self.p2_src_end_ip = '2001:2::FE' + self.p2_dst_start_ip = '2001:1::2' + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IPv6 | + + :returns: Packets to be sent from the traffic generator. + :rtype: tuple + """ + + base_p1, count_p1 = self._get_start_end_ipv6(self.p1_src_start_ip, + self.p1_src_end_ip) + base_p2, count_p2 = self._get_start_end_ipv6(self.p2_src_start_ip, + self.p2_src_end_ip) + + # Direction 0 --> 1 + base_pkt_a = (Ether() / + IPv6(src=self.p1_src_start_ip, + dst=self.p1_dst_start_ip)) + # Direction 1 --> 0 + base_pkt_b = (Ether() / + Dot1Q(vlan=self.vlan_id) / + IPv6(src=self.p2_src_start_ip, + dst=self.p2_dst_start_ip)) + + # Direction 0 --> 1 + vm1 = STLScVmRaw([STLVmFlowVar(name="ipv6_src", + min_value=base_p1, + max_value=base_p1 + count_p1, + size=8, op="inc"), + STLVmWrFlowVar(fv_name="ipv6_src", + pkt_offset="IPv6.src", + offset_fixup=8)]) + # Direction 1 --> 0 + vm2 = STLScVmRaw([STLVmFlowVar(name="ipv6_src", + min_value=base_p2, + max_value=base_p2 + count_p2, + size=8, op="inc"), + STLVmWrFlowVar(fv_name="ipv6_src", + pkt_offset="IPv6.src", + offset_fixup=8)]) + + return base_pkt_a, base_pkt_b, vm1, vm2 + + +def register(): + """Register this traffic profile to T-rex. + + Do not change this function. + + :returns: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/tests/vpp/perf/ip4/10ge2p1x520-dot1q-ip4base-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x520-dot1q-ip4base-ndrpdr.robot index 8b2ba6d218..908491a107 100644 --- a/tests/vpp/perf/ip4/10ge2p1x520-dot1q-ip4base-ndrpdr.robot +++ b/tests/vpp/perf/ip4/10ge2p1x520-dot1q-ip4base-ndrpdr.robot @@ -68,7 +68,7 @@ | | [Documentation] | | ... | [Cfg] Each DUT runs IPv4 routing with VLAN and uses ${phy_cores}\ | | ... | physical core(s) for worker threads. -| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\ +| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm. | | ... | | ... | *Arguments:* | | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1). diff --git a/tests/vpp/perf/ip4/10ge2p1x710-dot1q-ip4base-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-dot1q-ip4base-ndrpdr.robot index 76c04dc165..bac908d3b1 100644 --- a/tests/vpp/perf/ip4/10ge2p1x710-dot1q-ip4base-ndrpdr.robot +++ b/tests/vpp/perf/ip4/10ge2p1x710-dot1q-ip4base-ndrpdr.robot @@ -68,7 +68,7 @@ | | [Documentation] | | ... | [Cfg] Each DUT runs IPv4 routing with VLAN and uses ${phy_cores}\ | | ... | physical core(s) for worker threads. -| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\ +| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm. | | ... | | ... | *Arguments:* | | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1). diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-dot1q-ip4base-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-dot1q-ip4base-ndrpdr.robot index 75fb179ca0..64de3644d0 100644 --- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-dot1q-ip4base-ndrpdr.robot +++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-dot1q-ip4base-ndrpdr.robot @@ -68,7 +68,7 @@ | | [Documentation] | | ... | [Cfg] Each DUT runs IPv4 routing with VLAN and uses ${phy_cores}\ | | ... | physical core(s) for worker threads. -| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\ +| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm. | | ... | | ... | *Arguments:* | | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1). diff --git a/tests/vpp/perf/ip4/2n1l-25ge2p1xxv710-dot1q-ip4base-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-25ge2p1xxv710-dot1q-ip4base-ndrpdr.robot index 428efbbcdd..48a11558ae 100644 --- a/tests/vpp/perf/ip4/2n1l-25ge2p1xxv710-dot1q-ip4base-ndrpdr.robot +++ b/tests/vpp/perf/ip4/2n1l-25ge2p1xxv710-dot1q-ip4base-ndrpdr.robot @@ -70,7 +70,7 @@ | | [Documentation] | | ... | [Cfg] Each DUT runs IPv4 routing with VLAN and uses ${phy_cores}\ | | ... | physical core(s) for worker threads. -| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\ +| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm. | | ... | | ... | *Arguments:* | | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1). diff --git a/tests/vpp/perf/ip6/10ge2p1x520-dot1q-ip6base-mrr.robot b/tests/vpp/perf/ip6/10ge2p1x520-dot1q-ip6base-mrr.robot new file mode 100644 index 0000000000..384367366e --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-dot1q-ip6base-mrr.robot @@ -0,0 +1,132 @@ +# Copyright (c) 2018 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/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | BASE | DOT1Q | IP6BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance mrr test +| ... +| Test Template | Local Template +| ... +| Documentation | *Raw results IPv6 routing with IEEE 802.1Q test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. IEEE 802.1Q\ +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and two static IPv6 /64 route entries. DUT1 and DUT2 are tested\ +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic\ +| ... | at line rate and reports total received/sent packets over trial period.\ +| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\ +| ... | contains two L3 flow-groups (flow-group per direction, 253 flows per\ +| ... | flow-group) with all packets containing Ethernet header, IPv6 header\ +| ... | and static payload. MAC addresses are matching MAC addresses of the TG\ +| ... | node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${overhead}= | ${4} +# X520-DA2 bandwidth limit +| ${s_limit}= | ${10000000000} +# TG subnets used by T-Rex +| ${tg_if1_net}= | 2001:1::0 +| ${tg_if2_net}= | 2001:2::0 +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip6-ip6src253 + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] Each DUT runs IPv6 routing with VLAN and uses ${phy_cores}\ +| | ... | physical core(s) for worker threads. +| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\ +| | ... | trial throughput test. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | ... +| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None} +| | ... +| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq} +| | And Add PCI devices to all DUTs +| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg +| | ... | ${s_limit} | ${framesize} | overhead=${overhead} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding with VLAN dot1q sub-interfaces in circular topology +| | ... | ${tg_if1_net} | ${tg_if2_net} | ${subid} | ${tag_rewrite} +| | Then Traffic should pass with maximum rate +| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} + +*** Test Cases *** +| tc01-78B-1c-dot1q-ip6base-mrr +| | [Tags] | 78B | 1C +| | framesize=${78} | phy_cores=${1} + +| tc02-78B-2c-dot1q-ip6base-mrr +| | [Tags] | 78B | 2C +| | framesize=${78} | phy_cores=${2} + +| tc03-78B-4c-dot1q-ip6base-mrr +| | [Tags] | 78B | 4C +| | framesize=${78} | phy_cores=${4} + +| tc04-1518B-1c-dot1q-ip6base-mrr +| | [Tags] | 1518B | 1C +| | framesize=${1518} | phy_cores=${1} + +| tc05-1518B-2c-dot1q-ip6base-mrr +| | [Tags] | 1518B | 2C +| | framesize=${1518} | phy_cores=${2} + +| tc06-1518B-4c-dot1q-ip6base-mrr +| | [Tags] | 1518B | 4C +| | framesize=${1518} | phy_cores=${4} + +| tc07-9000B-1c-dot1q-ip6base-mrr +| | [Tags] | 9000B | 1C +| | framesize=${9000} | phy_cores=${1} + +| tc08-9000B-2c-dot1q-ip6base-mrr +| | [Tags] | 9000B | 2C +| | framesize=${9000} | phy_cores=${2} + +| tc09-9000B-4c-dot1q-ip6base-mrr +| | [Tags] | 9000B | 4C +| | framesize=${9000} | phy_cores=${4} + +| tc10-IMIX-1c-dot1q-ip6base-mrr +| | [Tags] | IMIX | 1C +| | framesize=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-dot1q-ip6base-mrr +| | [Tags] | IMIX | 2C +| | framesize=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-dot1q-ip6base-mrr +| | [Tags] | IMIX | 4C +| | framesize=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/ip6/10ge2p1x520-dot1q-ip6base-ndrpdr.robot b/tests/vpp/perf/ip6/10ge2p1x520-dot1q-ip6base-ndrpdr.robot new file mode 100644 index 0000000000..df54157524 --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-dot1q-ip6base-ndrpdr.robot @@ -0,0 +1,138 @@ +# Copyright (c) 2018 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/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR +| ... | NIC_Intel-X520-DA2 | ETH | IP6FWD | BASE | DOT1Q | IP6BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance mrr test +| ... +| Test Template | Local Template +| ... +| Documentation | *RFC2544: Pkt throughput IPv6 routing with IEEE 802.1Q test +| ... | cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. IEEE 802.1Q\ +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and two static IPv6 /64 route entries. DUT1 and DUT2 are tested\ +| ... | with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using MLRsearch library. Test packets are\ +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ +| ... | all packets containing Ethernet header, IPv6 header with IP\ +| ... | protocol=61 and static payload. MAC addresses are matching MAC\ +| ... | addresses of the TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${overhead}= | ${4} +# X520-DA2 bandwidth limit +| ${s_limit}= | ${10000000000} +# TG subnets used by T-Rex +| ${tg_if1_net}= | 2001:1::0 +| ${tg_if2_net}= | 2001:2::0 +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip6-ip6src253 + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] Each DUT runs IPv6 routing with VLAN and uses ${phy_cores}\ +| | ... | physical core(s) for worker threads. +| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | ... +| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None} +| | ... +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} | ${10000} +| | ... +| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq} +| | And Add PCI devices to all DUTs +| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg +| | ... | ${s_limit} | ${framesize} | overhead=${overhead} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding with VLAN dot1q sub-interfaces in circular topology +| | ... | ${tg_if1_net} | ${tg_if2_net} | ${subid} | ${tag_rewrite} +| | Then Find NDR and PDR intervals using optimized search +| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate} + +*** Test Cases *** +| tc01-78B-1c-dot1q-ip6base-ndrpdr +| | [Tags] | 78B | 1C +| | framesize=${78} | phy_cores=${1} + +| tc02-78B-2c-dot1q-ip6base-ndrpdr +| | [Tags] | 78B | 2C +| | framesize=${78} | phy_cores=${2} + +| tc03-78B-4c-dot1q-ip6base-ndrpdr +| | [Tags] | 78B | 4C +| | framesize=${78} | phy_cores=${4} + +| tc04-1518B-1c-dot1q-ip6base-ndrpdr +| | [Tags] | 1518B | 1C +| | framesize=${1518} | phy_cores=${1} + +| tc05-1518B-2c-dot1q-ip6base-ndrpdr +| | [Tags] | 1518B | 2C +| | framesize=${1518} | phy_cores=${2} + +| tc06-1518B-4c-dot1q-ip6base-ndrpdr +| | [Tags] | 1518B | 4C +| | framesize=${1518} | phy_cores=${4} + +| tc07-9000B-1c-dot1q-ip6base-ndrpdr +| | [Tags] | 9000B | 1C +| | framesize=${9000} | phy_cores=${1} + +| tc08-9000B-2c-dot1q-ip6base-ndrpdr +| | [Tags] | 9000B | 2C +| | framesize=${9000} | phy_cores=${2} + +| tc09-9000B-4c-dot1q-ip6base-ndrpdr +| | [Tags] | 9000B | 4C +| | framesize=${9000} | phy_cores=${4} + +| tc10-IMIX-1c-dot1q-ip6base-ndrpdr +| | [Tags] | IMIX | 1C +| | framesize=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-dot1q-ip6base-ndrpdr +| | [Tags] | IMIX | 2C +| | framesize=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-dot1q-ip6base-ndrpdr +| | [Tags] | IMIX | 4C +| | framesize=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/ip6/10ge2p1x710-dot1q-ip6base-mrr.robot b/tests/vpp/perf/ip6/10ge2p1x710-dot1q-ip6base-mrr.robot new file mode 100644 index 0000000000..6b7a21770a --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x710-dot1q-ip6base-mrr.robot @@ -0,0 +1,132 @@ +# Copyright (c) 2018 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/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR +| ... | NIC_Intel-X710 | ETH | IP6FWD | BASE | DOT1Q | IP6BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X710 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance mrr test +| ... +| Test Template | Local Template +| ... +| Documentation | *Raw results IPv6 routing with IEEE 802.1Q test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. IEEE 802.1Q\ +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and two static IPv6 /64 route entries. DUT1 and DUT2 are tested\ +| ... | with 2p10GE NIC X710 by Intel. +| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic\ +| ... | at line rate and reports total received/sent packets over trial period.\ +| ... | Test packets are generated by TG on links to DUTs. TG traffic profile\ +| ... | contains two L3 flow-groups (flow-group per direction, 253 flows per\ +| ... | flow-group) with all packets containing Ethernet header, IPv6 header\ +| ... | and static payload. MAC addresses are matching MAC addresses of the TG\ +| ... | node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${overhead}= | ${4} +# X710 bandwidth limit +| ${s_limit}= | ${10000000000} +# TG subnets used by T-Rex +| ${tg_if1_net}= | 2001:1::0 +| ${tg_if2_net}= | 2001:2::0 +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip6-ip6src253 + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] Each DUT runs IPv6 routing with VLAN and uses ${phy_cores}\ +| | ... | physical core(s) for worker threads. +| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\ +| | ... | trial throughput test. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | ... +| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None} +| | ... +| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq} +| | And Add PCI devices to all DUTs +| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg +| | ... | ${s_limit} | ${framesize} | overhead=${overhead} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding with VLAN dot1q sub-interfaces in circular topology +| | ... | ${tg_if1_net} | ${tg_if2_net} | ${subid} | ${tag_rewrite} +| | Then Traffic should pass with maximum rate +| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} + +*** Test Cases *** +| tc01-78B-1c-dot1q-ip6base-mrr +| | [Tags] | 78B | 1C +| | framesize=${78} | phy_cores=${1} + +| tc02-78B-2c-dot1q-ip6base-mrr +| | [Tags] | 78B | 2C +| | framesize=${78} | phy_cores=${2} + +| tc03-78B-4c-dot1q-ip6base-mrr +| | [Tags] | 78B | 4C +| | framesize=${78} | phy_cores=${4} + +| tc04-1518B-1c-dot1q-ip6base-mrr +| | [Tags] | 1518B | 1C +| | framesize=${1518} | phy_cores=${1} + +| tc05-1518B-2c-dot1q-ip6base-mrr +| | [Tags] | 1518B | 2C +| | framesize=${1518} | phy_cores=${2} + +| tc06-1518B-4c-dot1q-ip6base-mrr +| | [Tags] | 1518B | 4C +| | framesize=${1518} | phy_cores=${4} + +| tc07-9000B-1c-dot1q-ip6base-mrr +| | [Tags] | 9000B | 1C +| | framesize=${9000} | phy_cores=${1} + +| tc08-9000B-2c-dot1q-ip6base-mrr +| | [Tags] | 9000B | 2C +| | framesize=${9000} | phy_cores=${2} + +| tc09-9000B-4c-dot1q-ip6base-mrr +| | [Tags] | 9000B | 4C +| | framesize=${9000} | phy_cores=${4} + +| tc10-IMIX-1c-dot1q-ip6base-mrr +| | [Tags] | IMIX | 1C +| | framesize=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-dot1q-ip6base-mrr +| | [Tags] | IMIX | 2C +| | framesize=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-dot1q-ip6base-mrr +| | [Tags] | IMIX | 4C +| | framesize=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/ip6/10ge2p1x710-dot1q-ip6base-ndrpdr.robot b/tests/vpp/perf/ip6/10ge2p1x710-dot1q-ip6base-ndrpdr.robot new file mode 100644 index 0000000000..14645f8c1c --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x710-dot1q-ip6base-ndrpdr.robot @@ -0,0 +1,138 @@ +# Copyright (c) 2018 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/performance/performance_setup.robot +| ... +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR +| ... | NIC_Intel-X710 | ETH | IP6FWD | BASE | DOT1Q | IP6BASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L3 | Intel-X710 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance mrr test +| ... +| Test Template | Local Template +| ... +| Documentation | *RFC2544: Pkt throughput IPv6 routing with IEEE 802.1Q test +| ... | cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology\ +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv6 for IPv6 routing. IEEE 802.1Q\ +| ... | tagging is applied on link between DUT1 and DUT2. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6\ +| ... | routing and two static IPv6 /64 route entries. DUT1 and DUT2 are tested\ +| ... | with 2p10GE NIC X710 by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using MLRsearch library. Test packets are\ +| ... | generated by TG on links to DUTs. TG traffic profile contains two L3\ +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ +| ... | all packets containing Ethernet header, IPv6 header with IP\ +| ... | protocol=61 and static payload. MAC addresses are matching MAC\ +| ... | addresses of the TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${overhead}= | ${4} +# X710 bandwidth limit +| ${s_limit}= | ${10000000000} +# TG subnets used by T-Rex +| ${tg_if1_net}= | 2001:1::0 +| ${tg_if2_net}= | 2001:2::0 +# Traffic profile: +| ${traffic_profile}= | trex-sl-3n-ethip6-ip6src253 + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] Each DUT runs IPv6 routing with VLAN and uses ${phy_cores}\ +| | ... | physical core(s) for worker threads. +| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | ... +| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None} +| | ... +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} | ${10000} +| | ... +| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq} +| | And Add PCI devices to all DUTs +| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg +| | ... | ${s_limit} | ${framesize} | overhead=${overhead} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding with VLAN dot1q sub-interfaces in circular topology +| | ... | ${tg_if1_net} | ${tg_if2_net} | ${subid} | ${tag_rewrite} +| | Then Find NDR and PDR intervals using optimized search +| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate} + +*** Test Cases *** +| tc01-78B-1c-dot1q-ip6base-ndrpdr +| | [Tags] | 78B | 1C +| | framesize=${78} | phy_cores=${1} + +| tc02-78B-2c-dot1q-ip6base-ndrpdr +| | [Tags] | 78B | 2C +| | framesize=${78} | phy_cores=${2} + +| tc03-78B-4c-dot1q-ip6base-ndrpdr +| | [Tags] | 78B | 4C +| | framesize=${78} | phy_cores=${4} + +| tc04-1518B-1c-dot1q-ip6base-ndrpdr +| | [Tags] | 1518B | 1C +| | framesize=${1518} | phy_cores=${1} + +| tc05-1518B-2c-dot1q-ip6base-ndrpdr +| | [Tags] | 1518B | 2C +| | framesize=${1518} | phy_cores=${2} + +| tc06-1518B-4c-dot1q-ip6base-ndrpdr +| | [Tags] | 1518B | 4C +| | framesize=${1518} | phy_cores=${4} + +| tc07-9000B-1c-dot1q-ip6base-ndrpdr +| | [Tags] | 9000B | 1C +| | framesize=${9000} | phy_cores=${1} + +| tc08-9000B-2c-dot1q-ip6base-ndrpdr +| | [Tags] | 9000B | 2C +| | framesize=${9000} | phy_cores=${2} + +| tc09-9000B-4c-dot1q-ip6base-ndrpdr +| | [Tags] | 9000B | 4C +| | framesize=${9000} | phy_cores=${4} + +| tc10-IMIX-1c-dot1q-ip6base-ndrpdr +| | [Tags] | IMIX | 1C +| | framesize=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-dot1q-ip6base-ndrpdr +| | [Tags] | IMIX | 2C +| | framesize=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-dot1q-ip6base-ndrpdr +| | [Tags] | IMIX | 4C +| | framesize=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/ip6/2n1l-10ge2p1x710-dot1q-ip6base-mrr.robot b/tests/vpp/perf/ip6/2n1l-10ge2p1x710-dot1q-ip6base-mrr.robot new file mode 100644 index 0000000000..1a581bc904 --- /dev/null +++ b/tests/vpp/perf/ip6/2n1l-10ge2p1x710-dot1q-ip6base-mrr.robot @@ -0,0 +1,132 @@ +# Copyright (c) 2018 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/performance/performance_setup.robot +| ... +| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR +| ... | NIC_Intel-X710 | ETH | IP6FWD | BASE | DOT1Q | IP6BASE +| ... +| Suite Setup | Set up 2-node performance topology with DUT's NIC model +| ... | L3 | Intel-X710 +| Suite Teardown | Tear down 2-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance mrr test +| ... +| Test Template | Local Template +| ... +| Documentation | *Raw results IPv6 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-IPv6 for IPv6 routing. IEEE 802.1Q\ +| ... | tagging is applied on link between DUT1-if2 and TG-if2. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and\ +| ... | two static IPv6 /64 route entries. DUT1 is tested with 2p10GE NIC\ +| ... | X710 by Intel. +| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic\ +| ... | at line rate and reports total received/sent packets over trial period.\ +| ... | Test packets are generated by TG on links to DUT1. TG traffic profile\ +| ... | contains two L3 flow-groups (flow-group per direction, 253 flows per\ +| ... | flow-group) with all packets containing Ethernet header, IPv6 header\ +| ... | and static payload. MAC addresses are matching MAC addresses of the TG\ +| ... | node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${overhead}= | ${4} +# X710 bandwidth limit +| ${s_limit}= | ${10000000000} +# TG subnets used by T-Rex +| ${tg_if1_net}= | 2001:1::0 +| ${tg_if2_net}= | 2001:2::0 +# Traffic profile: +| ${traffic_profile}= | trex-sl-2n-dot1qip6asym-ip6src253 + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] Each DUT runs IPv6 routing with VLAN and uses ${phy_cores}\ +| | ... | physical core(s) for worker threads. +| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\ +| | ... | trial throughput test. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | ... +| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None} +| | ... +| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq} +| | And Add PCI devices to all DUTs +| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg +| | ... | ${s_limit} | ${framesize} | overhead=${overhead} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding with VLAN dot1q sub-interfaces in circular topology +| | ... | ${tg_if1_net} | ${tg_if2_net} | ${subid} | ${tag_rewrite} +| | Then Traffic should pass with maximum rate +| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} + +*** Test Cases *** +| tc01-78B-1c-dot1q-ip6base-mrr +| | [Tags] | 78B | 1C +| | framesize=${78} | phy_cores=${1} + +| tc02-78B-2c-dot1q-ip6base-mrr +| | [Tags] | 78B | 2C +| | framesize=${78} | phy_cores=${2} + +| tc03-78B-4c-dot1q-ip6base-mrr +| | [Tags] | 78B | 4C +| | framesize=${78} | phy_cores=${4} + +| tc04-1518B-1c-dot1q-ip6base-mrr +| | [Tags] | 1518B | 1C +| | framesize=${1518} | phy_cores=${1} + +| tc05-1518B-2c-dot1q-ip6base-mrr +| | [Tags] | 1518B | 2C +| | framesize=${1518} | phy_cores=${2} + +| tc06-1518B-4c-dot1q-ip6base-mrr +| | [Tags] | 1518B | 4C +| | framesize=${1518} | phy_cores=${4} + +| tc07-9000B-1c-dot1q-ip6base-mrr +| | [Tags] | 9000B | 1C +| | framesize=${9000} | phy_cores=${1} + +| tc08-9000B-2c-dot1q-ip6base-mrr +| | [Tags] | 9000B | 2C +| | framesize=${9000} | phy_cores=${2} + +| tc09-9000B-4c-dot1q-ip6base-mrr +| | [Tags] | 9000B | 4C +| | framesize=${9000} | phy_cores=${4} + +| tc10-IMIX-1c-dot1q-ip6base-mrr +| | [Tags] | IMIX | 1C +| | framesize=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-dot1q-ip6base-mrr +| | [Tags] | IMIX | 2C +| | framesize=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-dot1q-ip6base-mrr +| | [Tags] | IMIX | 4C +| | framesize=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/ip6/2n1l-10ge2p1x710-dot1q-ip6base-ndrpdr.robot b/tests/vpp/perf/ip6/2n1l-10ge2p1x710-dot1q-ip6base-ndrpdr.robot new file mode 100644 index 0000000000..a0e1cfc23d --- /dev/null +++ b/tests/vpp/perf/ip6/2n1l-10ge2p1x710-dot1q-ip6base-ndrpdr.robot @@ -0,0 +1,138 @@ +# Copyright (c) 2018 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/performance/performance_setup.robot +| ... +| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR +| ... | NIC_Intel-X710 | ETH | IP6FWD | BASE | DOT1Q | IP6BASE +| ... +| Suite Setup | Set up 2-node performance topology with DUT's NIC model +| ... | L3 | Intel-X710 +| Suite Teardown | Tear down 2-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance mrr test +| ... +| Test Template | Local Template +| ... +| Documentation | *RFC2544: Pkt throughput IPv6 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-IPv6 for IPv6 routing. IEEE 802.1Q\ +| ... | tagging is applied on link between DUT1-if2 and TG-if2. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and\ +| ... | two static IPv6 /64 route entries. DUT1 is tested with 2p10GE NIC\ +| ... | X710 by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using MLRsearch library. Test packets are\ +| ... | generated by TG on links to DUT1. TG traffic profile contains two L3\ +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ +| ... | all packets containing Ethernet header, IPv6 header with IP\ +| ... | protocol=61 and static payload. MAC addresses are matching MAC\ +| ... | addresses of the TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${overhead}= | ${4} +# X710 bandwidth limit +| ${s_limit}= | ${10000000000} +# TG subnets used by T-Rex +| ${tg_if1_net}= | 2001:1::0 +| ${tg_if2_net}= | 2001:2::0 +# Traffic profile: +| ${traffic_profile}= | trex-sl-2n-dot1qip6asym-ip6src253 + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] Each DUT runs IPv6 routing with VLAN and uses ${phy_cores}\ +| | ... | physical core(s) for worker threads. +| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | ... +| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None} +| | ... +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} | ${10000} +| | ... +| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq} +| | And Add PCI devices to all DUTs +| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg +| | ... | ${s_limit} | ${framesize} | overhead=${overhead} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding with VLAN dot1q sub-interfaces in circular topology +| | ... | ${tg_if1_net} | ${tg_if2_net} | ${subid} | ${tag_rewrite} +| | Then Find NDR and PDR intervals using optimized search +| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate} + +*** Test Cases *** +| tc01-78B-1c-dot1q-ip6base-ndrpdr +| | [Tags] | 78B | 1C +| | framesize=${78} | phy_cores=${1} + +| tc02-78B-2c-dot1q-ip6base-ndrpdr +| | [Tags] | 78B | 2C +| | framesize=${78} | phy_cores=${2} + +| tc03-78B-4c-dot1q-ip6base-ndrpdr +| | [Tags] | 78B | 4C +| | framesize=${78} | phy_cores=${4} + +| tc04-1518B-1c-dot1q-ip6base-ndrpdr +| | [Tags] | 1518B | 1C +| | framesize=${1518} | phy_cores=${1} + +| tc05-1518B-2c-dot1q-ip6base-ndrpdr +| | [Tags] | 1518B | 2C +| | framesize=${1518} | phy_cores=${2} + +| tc06-1518B-4c-dot1q-ip6base-ndrpdr +| | [Tags] | 1518B | 4C +| | framesize=${1518} | phy_cores=${4} + +| tc07-9000B-1c-dot1q-ip6base-ndrpdr +| | [Tags] | 9000B | 1C +| | framesize=${9000} | phy_cores=${1} + +| tc08-9000B-2c-dot1q-ip6base-ndrpdr +| | [Tags] | 9000B | 2C +| | framesize=${9000} | phy_cores=${2} + +| tc09-9000B-4c-dot1q-ip6base-ndrpdr +| | [Tags] | 9000B | 4C +| | framesize=${9000} | phy_cores=${4} + +| tc10-IMIX-1c-dot1q-ip6base-ndrpdr +| | [Tags] | IMIX | 1C +| | framesize=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-dot1q-ip6base-ndrpdr +| | [Tags] | IMIX | 2C +| | framesize=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-dot1q-ip6base-ndrpdr +| | [Tags] | IMIX | 4C +| | framesize=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/ip6/2n1l-25ge2p1xxv710-dot1q-ip6base-mrr.robot b/tests/vpp/perf/ip6/2n1l-25ge2p1xxv710-dot1q-ip6base-mrr.robot new file mode 100644 index 0000000000..4c649cb5f6 --- /dev/null +++ b/tests/vpp/perf/ip6/2n1l-25ge2p1xxv710-dot1q-ip6base-mrr.robot @@ -0,0 +1,135 @@ +# Copyright (c) 2018 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/performance/performance_setup.robot +| ... +| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR +| ... | NIC_Intel-XXV710 | ETH | IP6FWD | BASE | DOT1Q | IP6BASE +| ... +| Suite Setup | Set up 2-node performance topology with DUT's NIC model +| ... | L3 | Intel-XXV710 +| Suite Teardown | Tear down 2-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance mrr test +| ... +| Test Template | Local Template +| ... +| Documentation | *Raw results IPv6 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-IPv6 for IPv6 routing. IEEE 802.1Q\ +| ... | tagging is applied on link between DUT1-if2 and TG-if2. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and\ +| ... | two static IPv6 /64 route entries. DUT1 is tested with 2p25GE NIC\ +| ... | XXV710 by Intel. +| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic\ +| ... | at line rate and reports total received/sent packets over trial period.\ +| ... | Test packets are generated by TG on links to DUT1. TG traffic profile\ +| ... | contains two L3 flow-groups (flow-group per direction, 253 flows per\ +| ... | flow-group) with all packets containing Ethernet header, IPv6 header\ +| ... | and static payload. MAC addresses are matching MAC addresses of the TG\ +| ... | node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${overhead}= | ${4} +# XXV710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G}= | ${24500000000} +# XXV710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps}= | ${18750000} +# TG subnets used by T-Rex +| ${tg_if1_net}= | 2001:1::0 +| ${tg_if2_net}= | 2001:2::0 +# Traffic profile: +| ${traffic_profile}= | trex-sl-2n-dot1qip6asym-ip6src253 + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] Each DUT runs IPv6 routing with VLAN and uses ${phy_cores}\ +| | ... | physical core(s) for worker threads. +| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\ +| | ... | trial throughput test. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | ... +| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None} +| | ... +| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq} +| | And Add PCI devices to all DUTs +| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg +| | ... | ${s_24.5G} | ${framesize} | pps_limit=${s_18.75Mpps} +| | ... | overhead=${overhead} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding with VLAN dot1q sub-interfaces in circular topology +| | ... | ${tg_if1_net} | ${tg_if2_net} | ${subid} | ${tag_rewrite} +| | Then Traffic should pass with maximum rate +| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} + +*** Test Cases *** +| tc01-78B-1c-dot1q-ip6base-mrr +| | [Tags] | 78B | 1C +| | framesize=${78} | phy_cores=${1} + +| tc02-78B-2c-dot1q-ip6base-mrr +| | [Tags] | 78B | 2C +| | framesize=${78} | phy_cores=${2} + +| tc03-78B-4c-dot1q-ip6base-mrr +| | [Tags] | 78B | 4C +| | framesize=${78} | phy_cores=${4} + +| tc04-1518B-1c-dot1q-ip6base-mrr +| | [Tags] | 1518B | 1C +| | framesize=${1518} | phy_cores=${1} + +| tc05-1518B-2c-dot1q-ip6base-mrr +| | [Tags] | 1518B | 2C +| | framesize=${1518} | phy_cores=${2} + +| tc06-1518B-4c-dot1q-ip6base-mrr +| | [Tags] | 1518B | 4C +| | framesize=${1518} | phy_cores=${4} + +| tc07-9000B-1c-dot1q-ip6base-mrr +| | [Tags] | 9000B | 1C +| | framesize=${9000} | phy_cores=${1} + +| tc08-9000B-2c-dot1q-ip6base-mrr +| | [Tags] | 9000B | 2C +| | framesize=${9000} | phy_cores=${2} + +| tc09-9000B-4c-dot1q-ip6base-mrr +| | [Tags] | 9000B | 4C +| | framesize=${9000} | phy_cores=${4} + +| tc10-IMIX-1c-dot1q-ip6base-mrr +| | [Tags] | IMIX | 1C +| | framesize=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-dot1q-ip6base-mrr +| | [Tags] | IMIX | 2C +| | framesize=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-dot1q-ip6base-mrr +| | [Tags] | IMIX | 4C +| | framesize=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/ip6/2n1l-25ge2p1xxv710-dot1q-ip6base-ndrpdr.robot b/tests/vpp/perf/ip6/2n1l-25ge2p1xxv710-dot1q-ip6base-ndrpdr.robot new file mode 100644 index 0000000000..6177d602c3 --- /dev/null +++ b/tests/vpp/perf/ip6/2n1l-25ge2p1xxv710-dot1q-ip6base-ndrpdr.robot @@ -0,0 +1,141 @@ +# Copyright (c) 2018 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/performance/performance_setup.robot +| ... +| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR +| ... | NIC_Intel-XXV710 | ETH | IP6FWD | BASE | DOT1Q | IP6BASE +| ... +| Suite Setup | Set up 2-node performance topology with DUT's NIC model +| ... | L3 | Intel-XXV710 +| Suite Teardown | Tear down 2-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance mrr test +| ... +| Test Template | Local Template +| ... +| Documentation | *RFC2544: Pkt throughput IPv6 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-IPv6 for IPv6 routing. IEEE 802.1Q\ +| ... | tagging is applied on link between DUT1-if2 and TG-if2. +| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv6 routing and\ +| ... | two static IPv6 /64 route entries. DUT1 is tested with 2p25GE NIC\ +| ... | XXV710 by Intel. +| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\ +| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop\ +| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\ +| ... | of packets transmitted. NDR and PDR are discovered for different\ +| ... | Ethernet L2 frame sizes using MLRsearch library. Test packets are\ +| ... | generated by TG on links to DUT1. TG traffic profile contains two L3\ +| ... | flow-groups (flow-group per direction, 253 flows per flow-group) with\ +| ... | all packets containing Ethernet header, IPv6 header with IP\ +| ... | protocol=61 and static payload. MAC addresses are matching MAC\ +| ... | addresses of the TG node interfaces. +| ... | *[Ref] Applicable standard specifications:* RFC2544. + +*** Variables *** +| ${subid}= | 10 +| ${tag_rewrite}= | pop-1 +| ${overhead}= | ${4} +# XXV710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps +| ${s_24.5G}= | ${24500000000} +# XXV710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps +| ${s_18.75Mpps}= | ${18750000} +# TG subnets used by T-Rex +| ${tg_if1_net}= | 2001:1::0 +| ${tg_if2_net}= | 2001:2::0 +# Traffic profile: +| ${traffic_profile}= | trex-sl-2n-dot1qip6asym-ip6src253 + +*** Keywords *** +| Local Template +| | [Documentation] +| | ... | [Cfg] Each DUT runs IPv6 routing with VLAN and uses ${phy_cores}\ +| | ... | physical core(s) for worker threads. +| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - Framesize in Bytes in integer or string (IMIX_v4_1). +| | ... | Type: integer, string +| | ... | - phy_cores - Number of physical cores. Type: integer +| | ... | - rxq - Number of RX queues, default value: ${None}. Type: integer +| | ... +| | [Arguments] | ${framesize} | ${phy_cores} | ${rxq}=${None} +| | ... +| | Set Test Variable | ${framesize} +| | Set Test Variable | ${min_rate} | ${10000} +| | ... +| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq} +| | And Add PCI devices to all DUTs +| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg +| | ... | ${s_24.5G} | ${framesize} | pps_limit=${s_18.75Mpps} +| | ... | overhead=${overhead} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize IPv6 forwarding with VLAN dot1q sub-interfaces in circular topology +| | ... | ${tg_if1_net} | ${tg_if2_net} | ${subid} | ${tag_rewrite} +| | Then Find NDR and PDR intervals using optimized search +| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate} + +*** Test Cases *** +| tc01-78B-1c-dot1q-ip6base-ndrpdr +| | [Tags] | 78B | 1C +| | framesize=${78} | phy_cores=${1} + +| tc02-78B-2c-dot1q-ip6base-ndrpdr +| | [Tags] | 78B | 2C +| | framesize=${78} | phy_cores=${2} + +| tc03-78B-4c-dot1q-ip6base-ndrpdr +| | [Tags] | 78B | 4C +| | framesize=${78} | phy_cores=${4} + +| tc04-1518B-1c-dot1q-ip6base-ndrpdr +| | [Tags] | 1518B | 1C +| | framesize=${1518} | phy_cores=${1} + +| tc05-1518B-2c-dot1q-ip6base-ndrpdr +| | [Tags] | 1518B | 2C +| | framesize=${1518} | phy_cores=${2} + +| tc06-1518B-4c-dot1q-ip6base-ndrpdr +| | [Tags] | 1518B | 4C +| | framesize=${1518} | phy_cores=${4} + +| tc07-9000B-1c-dot1q-ip6base-ndrpdr +| | [Tags] | 9000B | 1C +| | framesize=${9000} | phy_cores=${1} + +| tc08-9000B-2c-dot1q-ip6base-ndrpdr +| | [Tags] | 9000B | 2C +| | framesize=${9000} | phy_cores=${2} + +| tc09-9000B-4c-dot1q-ip6base-ndrpdr +| | [Tags] | 9000B | 4C +| | framesize=${9000} | phy_cores=${4} + +| tc10-IMIX-1c-dot1q-ip6base-ndrpdr +| | [Tags] | IMIX | 1C +| | framesize=IMIX_v4_1 | phy_cores=${1} + +| tc11-IMIX-2c-dot1q-ip6base-ndrpdr +| | [Tags] | IMIX | 2C +| | framesize=IMIX_v4_1 | phy_cores=${2} + +| tc12-IMIX-4c-dot1q-ip6base-ndrpdr +| | [Tags] | IMIX | 4C +| | framesize=IMIX_v4_1 | phy_cores=${4} -- 2.16.6