aboutsummaryrefslogtreecommitdiffstats
path: root/PyPI/jumpavg
AgeCommit message (Collapse)AuthorFilesLines
2024-01-24feat(PyPI): update metadata for jumpavg 0.4.2Vratko Polak5-50/+86
+ Convert readme to .rst + Add Usage including a basic example. - Detailed description points to C-DASH methodology. + That page is updated for new defaults and better description. + Unify readme layout and origins with MLRsearch metadata. - Not releasing new MLRsearch version just for readme improvements. + Update the TODO file. Change-Id: I76ac22b7f283f01349bf9a50459dc841e13b21ad Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2023-10-26feat(PyPI): update metadata for MLRsearch 1.2.1Vratko Polak1-0/+1
Change-Id: Ib7d31bcd9bab350a3b2443a15b4d9a533d774cca Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2023-07-14fix(jumpavg): penalize stdev also for size=2Vratko Polak2-1/+3
This fix is mainly needed for bisection using PDR values. The impact on trending is smaller but still beneficial, as this fix should reduce the amount of false anomalies for two-band and other unstable tests. + Update metadata for 0.4.1 release into PyPI. Change-Id: Iabab4df50f4c4ad034362820904a237c507fa710 Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2023-06-07feat(PyPI): use toml and build for jumpavgVratko Polak8-121/+70
This is the setup just used to upload: https://pypi.org/project/jumpavg/0.4.0/ Change-Id: Ia48b053c578f1ac769613727dafcdd7851f912bd Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2023-06-07feat(PyPI): release next jumpavg versionVratko Polak2-27/+31
Change-Id: I9dc5b70d983471c8b2ba5788c52e81dcfc728f49 Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2022-08-15feat(jumpavg): speed up, use Python 3.8 featuresVratko Polak2-3/+8
+ The main speedup comes from abandoning copy.deepcopy(), doing shallow list copies (at most) and introcuding copy_fast(). + Turn into dataclasses whenever possible, use type hints. + Simplify the partition search code, + It is now clearer the time complexity is O(N*(N+n)), where N is number of samples, and n is the average size of the last group of the current record glist. + Used black for formatting, so no u"" anymore. + Update metadata for 0.3.0 release. Change-Id: I302203b4d42aeb22be1128e2fe72353a44eae5d0 Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2021-01-11jumpavg: fix setup.pyPaul Vinciguerra1-1/+1
Fix typo introduced in https://gerrit.fd.io/r/c/csit/+/23465 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com> Change-Id: Ie581fd612e7849500e061ac6f56f56b6eb322553
2019-12-02Refactor jumpavg to be more readable and usableVratko Polak15-776/+31
This is the python3 change, the python2 is still used for testing bisect. + New version is 0.2.0 due to amount o API changes. + Jumpavg is now part of CSIT resource package tree. + Perpatch migrated to new jumpavg. - PAL NOT updated (the update moved to a different Change). Change-Id: I7d7a8bf8a411196c20c2a40a8c64478d6709bc07 Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2018-06-28Jumpavg: Post 0.1.3 release editsVratko Polak2-1/+10
+ PyPI/jumpavg version bumped to 0.1.4. + presentation requirements bumped to 0.1.3. + Added stub for change log in readme. Change-Id: I21a606ed7d9aa2b9cc761ed20f94bda41963a1a8 Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2018-06-28Fix jumpavg: No negative variance from roundingVratko Polak1-16/+19
The algorithm for computing stdev has been changed to a more stable one, based on Welford's algorithm. Change-Id: I51e02d9c5c26cda0d4e998381d5011aa793e6483 Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2018-06-18CSIT-1110: Update code after jumpavg 0.1.2 releaseTibor Frank1-1/+1
+ Use the released version in PAL. + Bump the jumpavg source to 0.1.3 for next release. + Add PyPI/owners.txt to track python package owner group. Change-Id: I29284a258b24f9991379719313f30cce0349c2bd Signed-off-by: Tibor Frank <tifrank@cisco.com>
2018-06-15Revert "CSIT-1110: Update code after jumpavg 0.1.2 release"Tibor Frank1-1/+1
This reverts commit f7c46f067a8fb594d2460aaadbe1ca9282b657a8. Change-Id: I409335daac8f9e02bea4e12f2141ab9ceb338964 Signed-off-by: Tibor Frank <tifrank@cisco.com>
2018-06-15CSIT-1110: Update code after jumpavg 0.1.2 releaseVratko Polak1-1/+1
+ Use the released version in PAL. + Bump the jumpavg source to 0.1.3 for next release. + Add PyPI/owners.txt to track python package owner group. Change-Id: I0146efcc7c0b7eefc068464739afa605eda2b2d8 Signed-off-by: Vratko Polak <vrpolak@cisco.com>
2018-06-15CSIT-1110: Use jumpavg library from pipVratko Polak19-0/+1151
+ Move the jumpavg library code to separate directory. - Bump to 0.1.2 has to be done later. Change-Id: I9722ede48f00e99eeb68ca3f91e0bdeee2937973 Signed-off-by: Vratko Polak <vrpolak@cisco.com>
*/ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
# Copyright (c) 2017 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_setup.robot
| Resource | resources/libraries/robot/ipsec.robot
| ...
| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | SCALE | NDRPDRDISC
| ... | IP4FWD | IPSEC | IPSECHW | IPSECTUN | NIC_Intel-XL710 | TNL_1000
| ...
| Suite Setup | Set up IPSec performance test suite | L3 | Intel-XL710
| ...
| Suite Teardown | Tear down 3-node performance topology
| ...
| Test Setup | Set up performance test
| ...
| Test Teardown | Tear down performance discovery test | ${min_rate}pps
| ... | ${framesize} | ${traffic_profile}
| ...
| Documentation | *IPv4 IPsec tunnel mode performance test suite.*
| ...
| ... | *[Top] Network Topologies:* TG-DUT1-DUT2-TG 3-node circular topology
| ... | with single links between nodes.
| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 on TG-DUTn,
| ... | Eth-IPv4-IPSec on DUT1-DUT2
| ... | *[Cfg] DUT configuration:* DUT1 and DUT2 are configured with multiple
| ... | IPsec tunnels between them. DUTs get IPv4 traffic from TG, encrypt it
| ... | and send to another DUT, where packets are decrypted and sent back to TG
| ... | *[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 number
| ... | of packets transmitted. NDR is discovered for different
| ... | number of IPsec tunnels using binary search algorithms with configured
| ... | starting rate and final step that determines throughput measurement
| ... | resolution. Test packets are generated by TG on
| ... | links to DUTs. TG traffic profile contains two L3 flow-groups
| ... | (flow-group per direction, number of flows per flow-group equals to
| ... | number of IPSec tunnels) 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. Incrementing of IP.dst (IPv4 destination address) field
| ... | is applied to both streams.
| ... | *[Ref] Applicable standard specifications:* RFC4303 and RFC2544.

*** Variables ***
# XL710-DA2 bandwidth limit ~49Gbps/2=24.5Gbps
| ${s_24.5G} | ${24500000000}
# XL710-DA2 Mpps limit 37.5Mpps/2=18.75Mpps
| ${s_18.75Mpps} | ${18750000}
| ${tg_if1_ip4}= | 192.168.10.2
| ${dut1_if1_ip4}= | 192.168.10.1
| ${dut1_if2_ip4}= | 172.168.1.1
| ${dut2_if1_ip4}= | 172.168.1.2
| ${dut2_if2_ip4}= | 192.168.20.1
| ${tg_if2_ip4}= | 192.168.20.2
| ${raddr_ip4}= | 20.0.0.0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${32}
| ${ipsec_overhead}= | ${58}
| ${n_tunnels}= | ${1000}
# Traffic profile:
| ${traffic_profile} | trex-sl-3n-ethip4-ip4dst${n_tunnels}

*** Test Cases ***
| tc01-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrdisc
| | [Documentation]
| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\
| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port.
| | ... | [Ver] Find NDR for 64 Byte frames\
| | ... | using binary search start at 40GE linerate, step 100kpps.
| | ...
| | [Tags] | 64B | 1T1C | STHREAD | NDRDISC
| | ...
| | ${framesize}= | Set Variable | ${64}
| | ${min_rate}= | Set Variable | ${10000}
| | ${max_rate}= | Set Variable | ${s_18.75Mpps}
| | ${binary_min}= | Set Variable | ${min_rate}
| | ${binary_max}= | Set Variable | ${max_rate}
| | ${threshold}= | Set Variable | ${min_rate}
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA1 96
| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Add PCI devices to DUTs in 3-node single link topology
| | And Add no multi seg to all DUTs
| | And Add cryptodev to all DUTs | ${1}
| | And Apply startup configuration on all VPP DUTs
| | And Initialize IPSec in 3-node circular topology
| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2}
| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1}
| | And VPP IPsec Add Multiple Tunnels
| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
| | ... | ${addr_range}
| | Then Find NDR using binary search and pps | ${framesize}
| | ... | ${binary_min} | ${binary_max} | ${traffic_profile}
| | ... | ${min_rate} | ${max_rate} | ${threshold}

| tc02-64B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-pdrdisc
| | [Documentation]
| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\
| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port.
| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\
| | ... | linerate, step 100kpps and loss tolerance of 0.5%.
| | ...
| | [Tags] | 64B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
| | ...
| | ${framesize}= | Set Variable | ${64}
| | ${min_rate}= | Set Variable | ${10000}
| | ${max_rate}= | Set Variable | ${s_18.75Mpps}
| | ${binary_min}= | Set Variable | ${min_rate}
| | ${binary_max}= | Set Variable | ${max_rate}
| | ${threshold}= | Set Variable | ${min_rate}
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA1 96
| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Add PCI devices to DUTs in 3-node single link topology
| | And Add no multi seg to all DUTs
| | And Add cryptodev to all DUTs | ${1}
| | And Apply startup configuration on all VPP DUTs
| | And Initialize IPSec in 3-node circular topology
| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2}
| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1}
| | And VPP IPsec Add Multiple Tunnels
| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
| | ... | ${addr_range}
| | Then Find PDR using binary search and pps | ${framesize}
| | ... | ${binary_min} | ${binary_max} | ${traffic_profile}
| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
| | ... | ${perf_pdr_loss_acceptance_type}

| tc03-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrdisc
| | [Documentation]
| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\
| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port.
| | ... | [Ver] Find NDR for 1518 Byte frames\
| | ... | using binary search start at 40GE linerate, step 100kpps.
| | ...
| | [Tags] | 1518B | 1T1C | STHREAD | NDRDISC
| | ...
| | ${framesize}= | Set Variable | ${1518}
| | ${min_rate}= | Set Variable | ${10000}
| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}}
| | ${binary_min}= | Set Variable | ${min_rate}
| | ${binary_max}= | Set Variable | ${max_rate}
| | ${threshold}= | Set Variable | ${min_rate}
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA1 96
| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Add PCI devices to DUTs in 3-node single link topology
| | And Add cryptodev to all DUTs | ${1}
| | And Apply startup configuration on all VPP DUTs
| | And Initialize IPSec in 3-node circular topology
| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2}
| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1}
| | And VPP IPsec Add Multiple Tunnels
| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
| | ... | ${addr_range}
| | Then Find NDR using binary search and pps | ${framesize}
| | ... | ${binary_min} | ${binary_max} | ${traffic_profile}
| | ... | ${min_rate} | ${max_rate} | ${threshold}

| tc04-1518B-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-pdrdisc
| | [Documentation]
| | ... | [Cfg] DUTs run 1000 IPsec tunnel CBC-SHA1 in each direction,\
| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port.
| | ... | [Ver] Find PDR for 1518 Byte frames using binary search start at 40GE\
| | ... | linerate, step 100kpps and loss tolerance of 0.5%.
| | ...
| | [Tags] | 1518B | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
| | ...
| | ${framesize}= | Set Variable | ${1518}
| | ${min_rate}= | Set Variable | ${10000}
| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${framesize + ${ipsec_overhead}}
| | ${binary_min}= | Set Variable | ${min_rate}
| | ${binary_max}= | Set Variable | ${max_rate}
| | ${threshold}= | Set Variable | ${min_rate}
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA1 96
| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Add PCI devices to DUTs in 3-node single link topology
| | And Add cryptodev to all DUTs | ${1}
| | And Apply startup configuration on all VPP DUTs
| | And Initialize IPSec in 3-node circular topology
| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2}
| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1}
| | And VPP IPsec Add Multiple Tunnels
| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
| | ... | ${addr_range}
| | Then Find PDR using binary search and pps | ${framesize}
| | ... | ${binary_min} | ${binary_max} | ${traffic_profile}
| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
| | ... | ${perf_pdr_loss_acceptance_type}

| tc05-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrdisc
| | [Documentation]
| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\
| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port.
| | ... | [Ver] Find NDR for IMIX_v4_1 frames\
| | ... | using binary search start at 40GE linerate, step 100kpps.
| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B)
| | ...
| | [Tags] | IMIX | 1T1C | STHREAD | NDRDISC
| | ...
| | ${framesize}= | Set Variable | IMIX_v4_1
| | ${imix_size}= | Get Frame Size | ${framesize}
| | ${min_rate}= | Set Variable | ${10000}
| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead}
| | ${binary_min}= | Set Variable | ${min_rate}
| | ${binary_max}= | Set Variable | ${max_rate}
| | ${threshold}= | Set Variable | ${min_rate}
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA1 96
| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Add PCI devices to DUTs in 3-node single link topology
| | And Add cryptodev to all DUTs | ${1}
| | And Apply startup configuration on all VPP DUTs
| | And Initialize IPSec in 3-node circular topology
| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2}
| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1}
| | And VPP IPsec Add Multiple Tunnels
| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
| | ... | ${addr_range}
| | Then Find NDR using binary search and pps | ${framesize}
| | ... | ${binary_min} | ${binary_max} | ${traffic_profile}
| | ... | ${min_rate} | ${max_rate} | ${threshold}

| tc06-IMIX-1t1c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-pdrdisc
| | [Documentation]
| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\
| | ... | configured with 1 thread, 1 phy core, 1 receive queue per NIC port.
| | ... | [Ver] Find PDR for IMIX_v4_1 frames using binary search start at 40GE\
| | ... | linerate, step 100kpps and loss tolerance of 0.5%.
| | ... | IMIX_v4_1 = (28x64B; 16x570B; 4x1518B)
| | ...
| | [Tags] | IMIX | 1T1C | STHREAD | PDRDISC | SKIP_PATCH
| | ...
| | ${framesize}= | Set Variable | IMIX_v4_1
| | ${imix_size}= | Get Frame Size | ${framesize}
| | ${min_rate}= | Set Variable | ${10000}
| | ${max_rate}= | Calculate pps | ${s_24.5G} | ${imix_size} + ${ipsec_overhead}
| | ${binary_min}= | Set Variable | ${min_rate}
| | ${binary_max}= | Set Variable | ${max_rate}
| | ${threshold}= | Set Variable | ${min_rate}
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA1 96
| | Given Add '1' worker threads and '1' rxqueues in 3-node single-link circular topology
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Add PCI devices to DUTs in 3-node single link topology
| | And Add cryptodev to all DUTs | ${1}
| | And Apply startup configuration on all VPP DUTs
| | And Initialize IPSec in 3-node circular topology
| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2}
| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1}
| | And VPP IPsec Add Multiple Tunnels
| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
| | ... | ${addr_range}
| | Then Find PDR using binary search and pps | ${framesize}
| | ... | ${binary_min} | ${binary_max} | ${traffic_profile}
| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
| | ... | ${perf_pdr_loss_acceptance_type}

| tc07-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrdisc
| | [Documentation]
| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\
| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port.
| | ... | [Ver] Find NDR for 64 Byte frames\
| | ... | using binary search start at 40GE linerate, step 100kpps.
| | ...
| | [Tags] | 64B | 2T2C | MTHREAD | NDRDISC
| | ...
| | ${framesize}= | Set Variable | ${64}
| | ${min_rate}= | Set Variable | ${10000}
| | ${max_rate}= | Set Variable | ${s_18.75Mpps}
| | ${binary_min}= | Set Variable | ${min_rate}
| | ${binary_max}= | Set Variable | ${max_rate}
| | ${threshold}= | Set Variable | ${min_rate}
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA1 96
| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Add PCI devices to DUTs in 3-node single link topology
| | And Add no multi seg to all DUTs
| | And Add cryptodev to all DUTs | ${2}
| | And Apply startup configuration on all VPP DUTs
| | And Initialize IPSec in 3-node circular topology
| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2}
| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1}
| | And VPP IPsec Add Multiple Tunnels
| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
| | ... | ${addr_range}
| | Then Find NDR using binary search and pps | ${framesize}
| | ... | ${binary_min} | ${binary_max} | ${traffic_profile}
| | ... | ${min_rate} | ${max_rate} | ${threshold}

| tc08-64B-2t2c-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-pdrdisc
| | [Documentation]
| | ... | [Cfg] DUTs run 1000 IPsec tunnels CBC-SHA1 in each direction,\
| | ... | configured with 2 thread, 2 phy core, 1 receive queue per NIC port.
| | ... | [Ver] Find PDR for 64 Byte frames using binary search start at 40GE\
| | ... | linerate, step 100kpps and loss tolerance of 0.5%.
| | ...
| | [Tags] | 64B | 2T2C | MTHREAD | PDRDISC | SKIP_PATCH
| | ...
| | ${framesize}= | Set Variable | ${64}
| | ${min_rate}= | Set Variable | ${10000}
| | ${max_rate}= | Set Variable | ${s_18.75Mpps}
| | ${binary_min}= | Set Variable | ${min_rate}
| | ${binary_max}= | Set Variable | ${max_rate}
| | ${threshold}= | Set Variable | ${min_rate}
| | ${encr_alg}= | Crypto Alg AES CBC 128
| | ${auth_alg}= | Integ Alg SHA1 96
| | Given Add '2' worker threads and '1' rxqueues in 3-node single-link circular topology
| | And Generate keys for IPSec | ${encr_alg} | ${auth_alg}
| | And Add PCI devices to DUTs in 3-node single link topology
| | And Add no multi seg to all DUTs
| | And Add cryptodev to all DUTs | ${2}
| | And Apply startup configuration on all VPP DUTs
| | And Initialize IPSec in 3-node circular topology
| | Vpp Route Add | ${dut1} | ${raddr_ip4} | 8 | ${dut2_if1_ip4} | ${dut1_if2}
| | Vpp Route Add | ${dut2} | ${laddr_ip4} | 8 | ${dut1_if2_ip4} | ${dut2_if1}
| | And VPP IPsec Add Multiple Tunnels
| | ... | ${dut1} | ${dut2} | ${dut1_if2} | ${dut2_if1} | ${n_tunnels}
| | ... | ${encr_alg} | ${encr_key} | ${auth_alg} | ${auth_key}
| | ... | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${laddr_ip4} | ${raddr_ip4}
| | ... | ${addr_range}
| | Then Find PDR using binary search and pps | ${framesize}
| | ... | ${binary_min} | ${binary_max} | ${traffic_profile}
| | ... | ${min_rate} | ${max_rate} | ${threshold} | ${perf_pdr_loss_acceptance}
| | ... | ${perf_pdr_loss_acceptance_type}