From 3b5e5e14a10c3cac63a526b5d9ac495822fd663f Mon Sep 17 00:00:00 2001 From: Peter Mikus Date: Tue, 20 Feb 2018 14:57:59 +0100 Subject: [PATCH] Raw results chk keywords and initial TC - Implementation of Display raw results - Implementation of Traffic should pass with maximum rate - Code optimizations - L2BD, L2XC, IP4, IP6 TC Change-Id: I0b50e995a853ed3c8f88323ccc650e47b8ed2496 Signed-off-by: Peter Mikus --- bootstrap-verify-perf.sh | 36 ++--- docs/tag_documentation.rst | 10 ++ .../performance/performance_configuration.robot | 69 +++++---- .../robot/performance/performance_setup.robot | 7 + .../robot/performance/performance_utils.robot | 99 +++++++++--- .../perf/ip4/10ge2p1x520-ethip4-ip4base-mrr.robot | 172 +++++++++++++++++++++ .../perf/ip6/10ge2p1x520-ethip6-ip6base-mrr.robot | 172 +++++++++++++++++++++ .../l2/10ge2p1x520-eth-l2bdbasemaclrn-mrr.robot | 172 +++++++++++++++++++++ .../vpp/perf/l2/10ge2p1x520-eth-l2xcbase-mrr.robot | 171 ++++++++++++++++++++ 9 files changed, 831 insertions(+), 77 deletions(-) create mode 100644 tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-mrr.robot create mode 100644 tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-mrr.robot create mode 100644 tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-mrr.robot create mode 100644 tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-mrr.robot diff --git a/bootstrap-verify-perf.sh b/bootstrap-verify-perf.sh index c051b58bb7..8dedb530ab 100755 --- a/bootstrap-verify-perf.sh +++ b/bootstrap-verify-perf.sh @@ -165,19 +165,19 @@ case "$TEST_TAG" in tests/ RETURN_STATUS=$(echo $?) ;; - VERIFY-PERF-NDRCHK ) + VERIFY-PERF-MRR ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ -s "tests.vpp.perf" \ - --include ndrchkAND1t1cORndrchkAND2t2c \ + --include mrrAND1t1cORmrrAND2t2c \ tests/ RETURN_STATUS=$(echo $?) ;; - PERFTEST_NDRCHK_DAILY ) + PERFTEST_MRR_DAILY ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ -s "tests.vpp.perf" \ - --include ndrchkAND1t1cORndrchkAND2t2c \ + --include mrrAND1t1cORmrrAND2t2c \ tests/ RETURN_STATUS=$(echo $?) ;; @@ -241,15 +241,15 @@ case "$TEST_TAG" in pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ -s "tests.vpp.perf.crypto" \ - --include pdrdiscANDnic_intel-xl710AND1t1cANDipsechw \ - --include pdrdiscANDnic_intel-xl710AND2t2cANDipsechw \ + --include ndrdiscANDnic_intel-xl710AND1t1cANDipsechw \ + --include ndrdiscANDnic_intel-xl710AND2t2cANDipsechw \ tests/ ;; VPP-VERIFY-PERF-IP4 ) pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ -s "tests.vpp.perf" \ - --include pdrchkANDnic_intel-x520-da2AND1t1cANDip4baseORpdrchkANDnic_intel-x520-da2AND1t1cANDip4fwdANDfib_2m \ + --include mrrANDnic_intel-x520-da2AND1t1cANDip4baseORmrrANDnic_intel-x520-da2AND1t1cANDip4fwdANDfib_2m \ tests/ RETURN_STATUS=$(echo $?) ;; @@ -257,7 +257,7 @@ case "$TEST_TAG" in pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ -s "tests.vpp.perf" \ - --include pdrchkANDnic_intel-x520-da2AND1t1cANDip6baseORpdrchkANDnic_intel-x520-da2AND1t1cANDip6fwdANDfib_2m \ + --include mrrANDnic_intel-x520-da2AND1t1cANDip6baseORmrrANDnic_intel-x520-da2AND1t1cANDip6fwdANDfib_2m \ tests/ RETURN_STATUS=$(echo $?) ;; @@ -265,7 +265,7 @@ case "$TEST_TAG" in pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ -s "tests.vpp.perf" \ - --include pdrchkANDnic_intel-x520-da2AND1t1cANDl2xcbaseORpdrchkANDnic_intel-x520-da2AND1t1cANDl2bdbase \ + --include mrrANDnic_intel-x520-da2AND1t1cANDl2xcbaseORmrrANDnic_intel-x520-da2AND1t1cANDl2bdbase \ tests/ RETURN_STATUS=$(echo $?) ;; @@ -333,15 +333,7 @@ case "$TEST_TAG" in pybot ${PYBOT_ARGS} \ -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ -s "tests.vpp.perf" \ - -i NDRCHK \ - tests/ - RETURN_STATUS=$(echo $?) - ;; - PERFTEST_NIGHTLY ) - #run all available tests - pybot ${PYBOT_ARGS} \ - -v TOPOLOGY_PATH:${WORKING_TOPOLOGY} \ - -s "tests.vpp.perf" \ + -i MRR \ tests/ RETURN_STATUS=$(echo $?) ;; @@ -365,14 +357,6 @@ if [ ! $? -eq 0 ]; then echo "Parsing ${SCRIPT_DIR}/output.xml failed" fi -python ${SCRIPT_DIR}/resources/tools/report_gen/run_robot_json_data.py \ - --input ${SCRIPT_DIR}/output.xml \ - --output ${SCRIPT_DIR}/output_perf_data.json \ - --vdevice ${VPP_STABLE_VER} -if [ ! $? -eq 0 ]; then - echo "Generating JSON data for report from ${SCRIPT_DIR}/output.xml failed" -fi - # Archive artifacts mkdir -p archive for i in ${ARCHIVE_ARTIFACTS[@]}; do diff --git a/docs/tag_documentation.rst b/docs/tag_documentation.rst index e54fdc8e92..e33bd6fa6b 100644 --- a/docs/tag_documentation.rst +++ b/docs/tag_documentation.rst @@ -152,6 +152,16 @@ Performance testing tags Performance tests where TG verifies DUTs' throughput at ref-NDR (reference Non Drop Rate) with zero packet loss tolerance. +.. topic:: PDRCHK + + Performance tests where TG verifies DUTs' throughput at ref-PDR (reference + Partial Drop Rate) with 0.5% loss tolerance. + +.. topic:: MRR + + Performance tests where TG sends the traffic at maximum rate (line rate) + and reports total sent/received packets over performance trial duration. + .. topic:: NDRPDRDISC Find performance of DUT based on :rfc:`2544` with linear / binary / combined diff --git a/resources/libraries/robot/performance/performance_configuration.robot b/resources/libraries/robot/performance/performance_configuration.robot index 641b808173..8c94fc78fb 100644 --- a/resources/libraries/robot/performance/performance_configuration.robot +++ b/resources/libraries/robot/performance/performance_configuration.robot @@ -117,16 +117,20 @@ | | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} | | ${dut1_if2_mac}= | Get Interface MAC | ${dut1} | ${dut1_if2} | | ${dut2_if1_mac}= | Get Interface MAC | ${dut2} | ${dut2_if1} -| | dut1_v4.set_arp | ${dut1_if1} | 10.10.10.2 | ${tg1_if1_mac} -| | dut1_v4.set_arp | ${dut1_if2} | 1.1.1.2 | ${dut2_if1_mac} -| | dut2_v4.set_arp | ${dut2_if1} | 1.1.1.1 | ${dut1_if2_mac} -| | dut2_v4.set_arp | ${dut2_if2} | 20.20.20.2 | ${tg1_if2_mac} -| | dut1_v4.set_ip | ${dut1_if1} | 10.10.10.1 | 24 -| | dut1_v4.set_ip | ${dut1_if2} | 1.1.1.1 | 30 -| | dut2_v4.set_ip | ${dut2_if1} | 1.1.1.2 | 30 -| | dut2_v4.set_ip | ${dut2_if2} | 20.20.20.1 | 24 -| | dut1_v4.set_route | 20.20.20.0 | 24 | 1.1.1.2 | ${dut1_if2} -| | dut2_v4.set_route | 10.10.10.0 | 24 | 1.1.1.1 | ${dut2_if1} +| | Add arp on dut | ${dut1} | ${dut1_if1} | 10.10.10.2 | ${tg1_if1_mac} +| | Add arp on dut | ${dut1} | ${dut1_if2} | 1.1.1.2 | ${dut2_if1_mac} +| | Add arp on dut | ${dut2} | ${dut2_if1} | 1.1.1.1 | ${dut1_if2_mac} +| | Add arp on dut | ${dut2} | ${dut2_if2} | 20.20.20.2 | ${tg1_if2_mac} +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} +| | ... | 10.10.10.1 | 24 +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} +| | ... | 1.1.1.1 | 30 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if1} +| | ... | 1.1.1.2 | 30 +| | Configure IP addresses on interfaces | ${dut2} | ${dut2_if2} +| | ... | 20.20.20.1 | 24 +| | Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | 1.1.1.2 | ${dut1_if2} +| | Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | 1.1.1.1 | ${dut2_if1} | | All Vpp Interfaces Ready Wait | ${nodes} | Initialize IPv4 forwarding in 2-node circular topology @@ -141,10 +145,12 @@ | | Set Interface State | ${dut1} | ${dut1_if2} | up | | ${tg1_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1} | | ${tg1_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2} -| | dut1_v4.set_arp | ${dut1_if1} | 10.10.10.3 | ${tg1_if1_mac} -| | dut1_v4.set_arp | ${dut1_if2} | 20.20.20.3 | ${tg1_if2_mac} -| | dut1_v4.set_ip | ${dut1_if1} | 10.10.10.2 | 24 -| | dut1_v4.set_ip | ${dut1_if2} | 20.20.20.2 | 24 +| | Add arp on dut | ${dut1} | ${dut1_if1} | 10.10.10.3 | ${tg1_if1_mac} +| | Add arp on dut | ${dut1} | ${dut1_if2} | 20.20.20.3 | ${tg1_if2_mac} +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if1} +| | ... | 10.10.10.2 | 24 +| | Configure IP addresses on interfaces | ${dut1} | ${dut1_if2} +| | ... | 20.20.20.2 | 24 | | All Vpp Interfaces Ready Wait | ${nodes} | Initialize IPv4 forwarding with scaling in 3-node circular topology @@ -238,29 +244,29 @@ | | Set Interface State | ${dut2} | ${dut2_vif1} | up | | Set Interface State | ${dut2} | ${dut2_vif2} | up | | Add Fib Table | ${dut1} | ${fib_table_1} -| | And Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | vrf=${fib_table_1} -| | ... | gateway=4.4.4.2 | interface=${dut1_vif1} | multipath=${TRUE} +| | And Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | vrf=${fib_table_1} +| | ... | gateway=4.4.4.2 | interface=${dut1_vif1} | multipath=${TRUE} | | Add Fib Table | ${dut1} | ${fib_table_1} | | And Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | vrf=${fib_table_1} -| | ... | gateway=1.1.1.2 | interface=${dut1_if1} | multipath=${TRUE} +| | ... | gateway=1.1.1.2 | interface=${dut1_if1} | multipath=${TRUE} | | Add Fib Table | ${dut1} | ${fib_table_2} | | And Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | vrf=${fib_table_2} -| | ... | gateway=2.2.2.2 | interface=${dut1_if2} | multipath=${TRUE} +| | ... | gateway=2.2.2.2 | interface=${dut1_if2} | multipath=${TRUE} | | Add Fib Table | ${dut1} | ${fib_table_2} | | And Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | vrf=${fib_table_2} -| | ... | gateway=5.5.5.2 | interface=${dut1_vif2} | multipath=${TRUE} +| | ... | gateway=5.5.5.2 | interface=${dut1_vif2} | multipath=${TRUE} | | Add Fib Table | ${dut2} | ${fib_table_1} | | And Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | vrf=${fib_table_1} -| | ... | gateway=2.2.2.1 | interface=${dut2_if1} | multipath=${TRUE} +| | ... | gateway=2.2.2.1 | interface=${dut2_if1} | multipath=${TRUE} | | Add Fib Table | ${dut2} | ${fib_table_1} | | And Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | vrf=${fib_table_1} -| | ... | gateway=4.4.4.1 | interface=${dut2_vif1} | multipath=${TRUE} +| | ... | gateway=4.4.4.1 | interface=${dut2_vif1} | multipath=${TRUE} | | Add Fib Table | ${dut2} | ${fib_table_2} | | And Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | vrf=${fib_table_2} -| | ... | gateway=5.5.5.2 | interface=${dut2_vif2} | multipath=${TRUE} +| | ... | gateway=5.5.5.2 | interface=${dut2_vif2} | multipath=${TRUE} | | Add Fib Table | ${dut2} | ${fib_table_2} | | And Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | vrf=${fib_table_2} -| | ... | gateway=3.3.3.2 | interface=${dut2_if2} | multipath=${TRUE} +| | ... | gateway=3.3.3.2 | interface=${dut2_if2} | multipath=${TRUE} | | Assign Interface To Fib Table | ${dut1} | ${dut1_if1} | ${fib_table_1} | | Assign Interface To Fib Table | ${dut1} | ${dut1_vif1} | ${fib_table_1} | | Assign Interface To Fib Table | ${dut1} | ${dut1_if2} | ${fib_table_2} @@ -354,16 +360,16 @@ | | ${fib_table_2}= | Evaluate | ${fib_table_1}+${nr} | | Add Fib Table | ${dut1} | ${fib_table_1} | | And Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | vrf=${fib_table_1} -| | ... | gateway=1.1.1.2 | interface=${dut1_if1} | multipath=${TRUE} +| | ... | gateway=1.1.1.2 | interface=${dut1_if1} | multipath=${TRUE} | | Add Fib Table | ${dut1} | ${fib_table_2} | | And Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | vrf=${fib_table_2} -| | ... | gateway=2.2.2.2 | interface=${dut1_if2} | multipath=${TRUE} +| | ... | gateway=2.2.2.2 | interface=${dut1_if2} | multipath=${TRUE} | | Add Fib Table | ${dut2} | ${fib_table_1} | | And Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | vrf=${fib_table_1} -| | ... | gateway=2.2.2.1 | interface=${dut2_if1} | multipath=${TRUE} +| | ... | gateway=2.2.2.1 | interface=${dut2_if1} | multipath=${TRUE} | | Add Fib Table | ${dut2} | ${fib_table_2} | | And Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | vrf=${fib_table_2} -| | ... | gateway=3.3.3.2 | interface=${dut2_if2} | multipath=${TRUE} +| | ... | gateway=3.3.3.2 | interface=${dut2_if2} | multipath=${TRUE} | | Assign Interface To Fib Table | ${dut1} | ${dut1_if1} | ${fib_table_1} | | Assign Interface To Fib Table | ${dut1} | ${dut1_if2} | ${fib_table_2} | | Assign Interface To Fib Table | ${dut2} | ${dut2_if1} | ${fib_table_1} @@ -412,19 +418,19 @@ | | | Set Interface State | ${dut2} | ${dut2-vhost-${number}-if2} | up | | | Add Fib Table | ${dut1} | ${fib_table_1} | | | And Vpp Route Add | ${dut1} | 20.20.20.0 | 24 | vrf=${fib_table_1} -| | | ... | gateway=${ip_net_vif1}.1 | interface=${dut1-vhost-${number}-if1} +| | | ... | gateway=${ip_net_vif1}.1 | interface=${dut1-vhost-${number}-if1} | | | ... | multipath=${TRUE} | | | Add Fib Table | ${dut1} | ${fib_table_2} | | | And Vpp Route Add | ${dut1} | 10.10.10.0 | 24 | vrf=${fib_table_2} -| | | ... | gateway=${ip_net_vif2}.2 | interface=${dut1-vhost-${number}-if2} +| | | ... | gateway=${ip_net_vif2}.2 | interface=${dut1-vhost-${number}-if2} | | | ... | multipath=${TRUE} | | | Add Fib Table | ${dut2} | ${fib_table_1} | | | And Vpp Route Add | ${dut2} | 20.20.20.0 | 24 | vrf=${fib_table_1} -| | | ... | gateway=${ip_net_vif1}.1 | interface=${dut2-vhost-${number}-if1} +| | | ... | gateway=${ip_net_vif1}.1 | interface=${dut2-vhost-${number}-if1} | | | ... | multipath=${TRUE} | | | Add Fib Table | ${dut2} | ${fib_table_2} | | | And Vpp Route Add | ${dut2} | 10.10.10.0 | 24 | vrf=${fib_table_2} -| | | ... | gateway=${ip_net_vif2}.2 | interface=${dut2-vhost-${number}-if2} +| | | ... | gateway=${ip_net_vif2}.2 | interface=${dut2-vhost-${number}-if2} | | | ... | multipath=${TRUE} | | | Assign Interface To Fib Table | ${dut1} | ${dut1-vhost-${number}-if1} | | | ... | ${fib_table_1} @@ -2166,3 +2172,4 @@ | | | ... | ${dut2-memif-${number}-if1} | ${number} | | | Add interface to bridge domain | ${dut2} | | | ... | ${dut2-memif-${number}-if2} | ${bd_id2} + diff --git a/resources/libraries/robot/performance/performance_setup.robot b/resources/libraries/robot/performance/performance_setup.robot index 0cc6388391..51e117ba9e 100644 --- a/resources/libraries/robot/performance/performance_setup.robot +++ b/resources/libraries/robot/performance/performance_setup.robot @@ -550,6 +550,13 @@ | | Show VAT History On All DUTs | ${nodes} | | Show statistics on all DUTs | ${nodes} +| Tear down performance mrr test +| | [Documentation] | Common test teardown for max-received-rate performance +| | ... | tests. +| | ... +| | Remove All Added Ports On All DUTs From Topology | ${nodes} +| | Show VAT History On All DUTs | ${nodes} + | Tear down performance test with wrk | | [Documentation] | Common test teardown for ndrdisc and pdrdisc performance \ | | ... | tests. diff --git a/resources/libraries/robot/performance/performance_utils.robot b/resources/libraries/robot/performance/performance_utils.robot index 88826a7c9b..fa3174983e 100644 --- a/resources/libraries/robot/performance/performance_utils.robot +++ b/resources/libraries/robot/performance/performance_utils.robot @@ -370,7 +370,7 @@ | | ... | Througput is calculated as: | | ... | Measured rate per stream * Total number of streams | | ... | Bandwidth is calculated as: -| | ... | (Througput * (L2 Frame Size + IPG) * 8) / Max bitrate of NIC +| | ... | (Throughput * (L2 Frame Size + IPG) * 8) / Max bitrate of NIC | | ... | | ... | *Arguments:* | | ... | - rate_per_stream - Measured rate per stream [pps]. Type: string @@ -403,7 +403,7 @@ | | ... | Througput is calculated as: | | ... | Measured rate per stream * Total number of streams | | ... | Bandwidth is calculated as: -| | ... | (Througput * (L2 Frame Size + IPG) * 8) / Max bitrate of NIC +| | ... | (Throughput * (L2 Frame Size + IPG) * 8) / Max bitrate of NIC | | ... | | ... | *Arguments:* | | ... | - rate_per_stream - Measured rate per stream [pps]. Type: string @@ -435,6 +435,30 @@ | | ... | ${\n}LOSS_ACCEPTANCE: ${loss_acceptance} ${loss_acceptance_type} | | ... | append=yes +| Display raw results +| | [Documentation] +| | ... | Display raw results from TG in total received/send packets over trial +| | ... | duration in seconds. +| | ... +| | ... | *Arguments:* +| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - results - Measured results. Type: string +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Display raw results \| 64 \| results \| +| | ... +| | [Arguments] | ${framesize} | ${results} +| | ... +| | ${framesize}= | Get Frame Size | ${framesize} +| | @{tokens}= | Split String | ${results} | , +| | @{received}= | Split String | @{tokens}[1] | = +| | @{sent}= | Split String | @{tokens}[2] | = +| | ${total_received} = | Set Variable | @{received}[1] +| | ${total_sent} = | Set Variable | @{sent}[1] +| | Set Test Message | MaxReceivedRate_Results [pkts/${perf_trial_duration}sec]: +| | Set Test Message | tx ${total_sent}, rx ${total_received} | append=yes + | Measure latency pps | | [Documentation] | | ... | Send traffic at specified rate. Measure min/avg/max latency @@ -442,7 +466,7 @@ | | ... | *Arguments:* | | ... | - duration - Duration of traffic run [s]. Type: integer | | ... | - rate - Rate for sending packets. Type: integer -| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - framesize - L2 Frame Size [B] or IMIX_v4_1. Type: integer/string | | ... | - topology_type - Topology type. Type: string | | ... | | ... | *Example:* @@ -467,7 +491,7 @@ | | ... | *Arguments:* | | ... | - duration - Duration of traffic run [s]. Type: integer | | ... | - rate - Rate for sending packets. Type: string -| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - framesize - L2 Frame Size [B] or IMIX_v4_1. Type: integer/string | | ... | - topology_type - Topology type. Type: string | | ... | - fail_on_loss - If True, the keyword fails if loss occurred. | | ... | Type: boolean @@ -480,17 +504,8 @@ | | [Arguments] | ${duration} | ${rate} | ${framesize} | ${topology_type} | | ... | ${fail_on_loss}=${True} | | ... -| | Clear and show runtime counters with running traffic | ${duration} -| | ... | ${rate} | ${framesize} | ${topology_type} -| | ${ret}= | Is DPDK performance test -| | Run Keyword If | ${ret}==${False} | Clear all counters on all DUTs -| | Run Keyword If | ${ret}==${False} and ${pkt_trace}==${True} -| | ... | VPP Enable Traces On All DUTs | ${nodes} -| | Send traffic on tg | ${duration} | ${rate} | ${framesize} -| | ... | ${topology_type} | warmup_time=0 -| | Run Keyword If | ${ret}==${False} | Show statistics on all DUTs | ${nodes} -| | Run Keyword If | ${ret}==${False} and ${pkt_trace}==${True} -| | ... | Show Packet Trace On All Duts | ${nodes} +| | Send traffic at specified rate | ${duration} | ${rate} | ${framesize} +| | ... | ${topology_type} | | Run Keyword If | ${fail_on_loss} | No traffic loss occurred | Traffic should pass with partial loss @@ -501,7 +516,7 @@ | | ... | *Arguments:* | | ... | - duration - Duration of traffic run [s]. Type: integer | | ... | - rate - Rate for sending packets. Type: string -| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - framesize - L2 Frame Size [B] or IMIX_v4_1. Type: integer/string | | ... | - topology_type - Topology type. Type: string | | ... | - loss_acceptance - Accepted loss during search. Type: float | | ... | - loss_acceptance_type - Percentage or frames. Type: string @@ -515,19 +530,63 @@ | | ... | ${loss_acceptance} | ${loss_acceptance_type} | | ... | ${fail_on_loss}=${True} | | ... +| | Send traffic at specified rate | ${duration} | ${rate} | ${framesize} +| | ... | ${topology_type} +| | Run Keyword If | ${fail_on_loss} | Partial traffic loss accepted +| | ... | ${loss_acceptance} | ${loss_acceptance_type} + +| Traffic should pass with maximum rate +| | [Documentation] +| | ... | Send traffic at maximum rate. +| | ... +| | ... | *Arguments:* +| | ... | - duration - Duration of traffic run [s]. Type: integer +| | ... | - rate - Rate for sending packets. Type: string +| | ... | - framesize - L2 Frame Size [B] or IMIX_v4_1. Type: integer/string +| | ... | - topology_type - Topology type. Type: string +| | ... | Type: boolean +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Traffic should pass with no loss \| 10 \| 4.0mpps \| 64 \ +| | ... | \| 3-node-IPv4 \| +| | ... +| | [Arguments] | ${duration} | ${rate} | ${framesize} | ${topology_type} +| | ... +| | ${results}= | Send traffic at specified rate | ${duration} | ${rate} +| | ... | ${framesize} | ${topology_type} +| | Display raw results | ${framesize} | ${results} + +| Send traffic at specified rate +| | [Documentation] +| | ... | Send traffic at specified rate. +| | ... +| | ... | *Arguments:* +| | ... | - duration - Duration of traffic run [s]. Type: integer +| | ... | - rate - Rate for sending packets. Type: string +| | ... | - framesize - L2 Frame Size [B]. Type: integer/string +| | ... | - topology_type - Topology type. Type: string +| | ... | Type: boolean +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Send traffic at specific rate \| 10 \| 4.0mpps \| 64 \ +| | ... | \| 3-node-IPv4 \| +| | ... +| | [Arguments] | ${duration} | ${rate} | ${framesize} | ${topology_type} +| | ... | | Clear and show runtime counters with running traffic | ${duration} | | ... | ${rate} | ${framesize} | ${topology_type} | | ${ret}= | Is DPDK performance test | | Run Keyword If | ${ret}==${False} | Clear all counters on all DUTs | | Run Keyword If | ${ret}==${False} and ${pkt_trace}==${True} | | ... | VPP Enable Traces On All DUTs | ${nodes} -| | Send traffic on tg | ${duration} | ${rate} | ${framesize} +| | ${results} = | Send traffic on tg | ${duration} | ${rate} | ${framesize} | | ... | ${topology_type} | warmup_time=0 | | Run Keyword If | ${ret}==${False} | Show statistics on all DUTs | ${nodes} | | Run Keyword If | ${ret}==${False} and ${pkt_trace}==${True} | | ... | Show Packet Trace On All Duts | ${nodes} -| | Run Keyword If | ${fail_on_loss} | Partial traffic loss accepted -| | ... | ${loss_acceptance} | ${loss_acceptance_type} +| | Return From Keyword | ${results} | Clear and show runtime counters with running traffic | | [Documentation] @@ -538,7 +597,7 @@ | | ... | *Arguments:* | | ... | - duration - Duration of traffic run [s]. Type: integer | | ... | - rate - Rate for sending packets. Type: string -| | ... | - framesize - L2 Frame Size [B]. Type: integer +| | ... | - framesize - L2 Frame Size [B] or IMIX_v4_1. Type: integer/string | | ... | - topology_type - Topology type. Type: string | | ... | | ... | *Example:* diff --git a/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-mrr.robot b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-mrr.robot new file mode 100644 index 0000000000..59216416eb --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x520-ethip4-ip4base-mrr.robot @@ -0,0 +1,172 @@ +# 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 | IP4FWD | BASE | IP4BASE +| ... +| 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 +| ... +| Documentation | *Raw results IPv4 routing test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for IPv4 routing. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv4 +| ... | routing and two static IPv4 /24 route entries. DUT1 and DUT2 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, IPv4 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 *** +# X520-DA2 bandwidth limit +| ${s_limit}= | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src253 + +*** Keywords *** +| Check RR for ethip4-ip4base +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with ${wt} thread(s), ${wt}\ +| | ... | phy core(s), ${rxq} receive queue(s) per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for ${framesize} frames using single\ +| | ... | trial throughput test. +| | ... +| | [Arguments] | ${framesize} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test teardown +| | Set Test Variable | ${framesize} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv4 forwarding in 3-node circular topology +| | Then Traffic should pass with maximum rate | ${perf_trial_duration} +| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} + +*** Test Cases *** +| tc01-64B-1t1c-ethip4-ip4base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single trial\ +| | ... | throughput test. +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for ethip4-ip4base +| | framesize=${64} | wt=1 | rxq=1 + +| tc02-1518B-1t1c-ethip4-ip4base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for ethip4-ip4base +| | framesize=${1518} | wt=1 | rxq=1 + +| tc03-9000B-1t1c-ethip4-ip4base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for ethip4-ip4base +| | framesize=${9000} | wt=1 | rxq=1 + +| tc04-64B-2t2c-ethip4-ip4base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single trial\ +| | ... | throughput test. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for ethip4-ip4base +| | framesize=${64} | wt=2 | rxq=1 + +| tc05-1518B-2t2c-ethip4-ip4base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for ethip4-ip4base +| | framesize=${1518} | wt=2 | rxq=1 + +| tc06-9000B-2t2c-ethip4-ip4base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for ethip4-ip4base +| | framesize=${9000} | wt=2 | rxq=1 + +| tc07-64B-4t4c-ethip4-ip4base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single trial\ +| | ... | throughput test. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for ethip4-ip4base +| | framesize=${64} | wt=4 | rxq=2 + +| tc08-1518B-4t4c-ethip4-ip4base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for ethip4-ip4base +| | framesize=${1518} | wt=4 | rxq=2 + +| tc09-9000B-4t4c-ethip4-ip4base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv4 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for ethip4-ip4base +| | framesize=${9000} | wt=4 | rxq=2 diff --git a/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-mrr.robot b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-mrr.robot new file mode 100644 index 0000000000..22c14ad4db --- /dev/null +++ b/tests/vpp/perf/ip6/10ge2p1x520-ethip6-ip6base-mrr.robot @@ -0,0 +1,172 @@ +# 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 | 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 +| ... +| Documentation | *Raw results IPv6 routing 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. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with IPv6 +| ... | routing and two static IPv6 /64 route entries. DUT1 and DUT2 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 *** +# X520-DA2 bandwidth limit +| ${s_limit}= | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip6-ip6src253 + +*** Keywords *** +| Check RR for ethip6-ip6base +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with ${wt} thread(s), ${wt}\ +| | ... | phy core(s), ${rxq} receive queue(s) per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for ${framesize} frames using single\ +| | ... | trial throughput test. +| | ... +| | [Arguments] | ${framesize} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test teardown +| | Set Test Variable | ${framesize} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize IPv6 forwarding in 3-node circular topology +| | Then Traffic should pass with maximum rate | ${perf_trial_duration} +| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} + +*** Test Cases *** +| tc01-78B-1t1c-ethip6-ip6base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single trial\ +| | ... | throughput test. +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for ethip6-ip6base +| | framesize=${78} | wt=1 | rxq=1 + +| tc02-1518B-1t1c-ethip6-ip6base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for ethip6-ip6base +| | framesize=${1518} | wt=1 | rxq=1 + +| tc03-9000B-1t1c-ethip6-ip6base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for ethip6-ip6base +| | framesize=${9000} | wt=1 | rxq=1 + +| tc04-78B-2t2c-ethip6-ip6base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single trial\ +| | ... | throughput test. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for ethip6-ip6base +| | framesize=${78} | wt=2 | rxq=1 + +| tc05-1518B-2t2c-ethip6-ip6base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for ethip6-ip6base +| | framesize=${1518} | wt=2 | rxq=1 + +| tc06-9000B-2t2c-ethip6-ip6base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for ethip6-ip6base +| | framesize=${9000} | wt=2 | rxq=1 + +| tc07-78B-4t4c-ethip6-ip6base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single trial\ +| | ... | throughput test. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for ethip6-ip6base +| | framesize=${78} | wt=4 | rxq=2 + +| tc08-1518B-4t4c-ethip6-ip6base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for ethip6-ip6base +| | framesize=${1518} | wt=4 | rxq=2 + +| tc09-9000B-4t4c-ethip6-ip6base-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs IPv6 routing config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for ethip6-ip6base +| | framesize=${9000} | wt=4 | rxq=2 diff --git a/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-mrr.robot b/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-mrr.robot new file mode 100644 index 0000000000..e834475dc9 --- /dev/null +++ b/tests/vpp/perf/l2/10ge2p1x520-eth-l2bdbasemaclrn-mrr.robot @@ -0,0 +1,172 @@ +# 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 | L2BDMACLRN | BASE | L2BDBASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance mrr test +| ... +| Documentation | *Raw results L2BD test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 bridge- +| ... | domain and MAC learning enabled. DUT1 and DUT2 tested with 2p10GE NIC +| ... | X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In MaxReceivedRate tests 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, IPv4 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 *** +# X520-DA2 bandwidth limit +| ${s_limit}= | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Check RR for l2bdbasemaclrn +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with ${wt} thread(s), ${wt}\ +| | ... | phy core(s), ${rxq} receive queue(s) per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for ${framesize} frames using single\ +| | ... | trial throughput test. +| | ... +| | [Arguments] | ${framesize} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test teardown +| | Set Test Variable | ${framesize} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 bridge domain in 3-node circular topology +| | Then Traffic should pass with maximum rate | ${perf_trial_duration} +| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2bdbasemaclrn-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single trial\ +| | ... | throughput test. +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for l2bdbasemaclrn +| | framesize=${64} | wt=1 | rxq=1 + +| tc02-1518B-1t1c-eth-l2bdbasemaclrn-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for l2bdbasemaclrn +| | framesize=${1518} | wt=1 | rxq=1 + +| tc03-9000B-1t1c-eth-l2bdbasemaclrn-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for l2bdbasemaclrn +| | framesize=${9000} | wt=1 | rxq=1 + +| tc04-64B-2t2c-eth-l2bdbasemaclrn-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single trial\ +| | ... | throughput test. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for l2bdbasemaclrn +| | framesize=${64} | wt=2 | rxq=1 + +| tc05-1518B-2t2c-eth-l2bdbasemaclrn-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for l2bdbasemaclrn +| | framesize=${1518} | wt=2 | rxq=1 + +| tc06-9000B-2t2c-eth-l2bdbasemaclrn-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for l2bdbasemaclrn +| | framesize=${9000} | wt=2 | rxq=1 + +| tc07-64B-4t4c-eth-l2bdbasemaclrn-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single trial\ +| | ... | throughput test. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for l2bdbasemaclrn +| | framesize=${64} | wt=4 | rxq=2 + +| tc08-1518B-4t4c-eth-l2bdbasemaclrn-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for l2bdbasemaclrn +| | framesize=${1518} | wt=4 | rxq=2 + +| tc09-9000B-4t4c-eth-l2bdbasemaclrn-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2BD config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for l2bdbasemaclrn +| | framesize=${9000} | wt=4 | rxq=2 diff --git a/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-mrr.robot b/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-mrr.robot new file mode 100644 index 0000000000..02c65ebb8b --- /dev/null +++ b/tests/vpp/perf/l2/10ge2p1x520-eth-l2xcbase-mrr.robot @@ -0,0 +1,171 @@ +# 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 | L2XCFWD | BASE | L2XCBASE +| ... +| Suite Setup | Set up 3-node performance topology with DUT's NIC model +| ... | L2 | Intel-X520-DA2 +| Suite Teardown | Tear down 3-node performance topology +| ... +| Test Setup | Set up performance test +| Test Teardown | Tear down performance mrr test +| ... +| Documentation | *Raw results L2XC test cases* +| ... +| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology +| ... | with single links between nodes. +| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 cross connect. +| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with L2 cross- +| ... | connect. DUT1 and DUT2 tested with 2p10GE NIC X520 Niantic by Intel. +| ... | *[Ver] TG verification:* In MaxReceivedRate tests 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, IPv4 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 *** +# X520-DA2 bandwidth limit +| ${s_limit}= | ${10000000000} +# Traffic profile: +| ${traffic_profile} | trex-sl-3n-ethip4-ip4src254 + +*** Keywords *** +| Check RR for l2xcbase +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with ${wt} thread(s), ${wt}\ +| | ... | phy core(s), ${rxq} receive queue(s) per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for ${framesize} frames using single\ +| | ... | trial throughput test. +| | ... +| | [Arguments] | ${framesize} | ${wt} | ${rxq} +| | ... +| | # Test Variables required for test teardown +| | Set Test Variable | ${framesize} +| | ${get_framesize}= | Get Frame Size | ${framesize} +| | ${max_rate}= | Calculate pps | ${s_limit} | ${framesize} +| | ... +| | Given Add '${wt}' worker threads and '${rxq}' rxqueues in 3-node single-link circular topology +| | And Add PCI devices to DUTs in 3-node single link topology +| | And Run Keyword If | ${get_framesize} < ${1522} +| | ... | Add no multi seg to all DUTs +| | And Apply startup configuration on all VPP DUTs +| | And Initialize L2 xconnect in 3-node circular topology +| | Then Traffic should pass with maximum rate | ${perf_trial_duration} +| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile} + +*** Test Cases *** +| tc01-64B-1t1c-eth-l2xcbase-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single trial\ +| | ... | throughput test. +| | [Tags] | 64B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for l2xcbase +| | framesize=${64} | wt=1 | rxq=1 + +| tc02-1518B-1t1c-eth-l2xcbase-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 1518B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for l2xcbase +| | framesize=${1518} | wt=1 | rxq=1 + +| tc03-9000B-1t1c-eth-l2xcbase-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 1 thread, 1 phy core,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 9000B | 1T1C | STHREAD +| | ... +| | [Template] | Check RR for l2xcbase +| | framesize=${9000} | wt=1 | rxq=1 + +| tc04-64B-2t2c-eth-l2xcbase-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single trial\ +| | ... | throughput test. +| | [Tags] | 64B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for l2xcbase +| | framesize=${64} | wt=2 | rxq=1 + +| tc05-1518B-2t2c-eth-l2xcbase-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 1518B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for l2xcbase +| | framesize=${1518} | wt=2 | rxq=1 + +| tc06-9000B-2t2c-eth-l2xcbase-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 2 threads, 2 phy cores,\ +| | ... | 1 receive queue per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 9000B | 2T2C | MTHREAD +| | ... +| | [Template] | Check RR for l2xcbase +| | framesize=${9000} | wt=2 | rxq=1 + +| tc07-64B-4t4c-eth-l2xcbase-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 64B frames using single trial\ +| | ... | throughput test. +| | [Tags] | 64B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for l2xcbase +| | framesize=${64} | wt=4 | rxq=2 + +| tc08-1518B-4t4c-eth-l2xcbase-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 1518B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 1518B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for l2xcbase +| | framesize=${1518} | wt=4 | rxq=2 + +| tc09-9000B-4t4c-eth-l2xcbase-mrr +| | [Documentation] +| | ... | [Cfg] DUT runs L2XC config with 4 threads, 4 phy cores,\ +| | ... | 2 receive queues per NIC port. +| | ... | [Ver] Measure MaxReceivedRate for 9000B frames using single\ +| | ... | trial throughput test. +| | [Tags] | 9000B | 4T4C | MTHREAD +| | ... +| | [Template] | Check RR for l2xcbase +| | framesize=${9000} | wt=4 | rxq=2 -- 2.16.6