From 89cff3cb43f10355022115396a65f491bf3f8404 Mon Sep 17 00:00:00 2001 From: pmikus Date: Thu, 26 Oct 2023 12:34:10 +0000 Subject: feat(tests): 6p3nic ip4 tests Signed-off-by: Peter Mikus Change-Id: I69ee305b25b9e05d2305cb82aba71ef6418780ab --- .../trex/trex-stl-ethip4-ip4dst-rnd10000-2p.py | 113 ++++++++++++++ .../trex/trex-stl-ethip4-ip4dst-rnd10000-6p.py | 141 +++++++++++++++++ .../trex/trex-stl-ethip4-ip4dst-rnd100000-2p.py | 113 ++++++++++++++ .../trex/trex-stl-ethip4-ip4dst-rnd100000-6p.py | 141 +++++++++++++++++ .../trex/trex-stl-ethip4-ip4dst-rnd1000000-2p.py | 113 ++++++++++++++ .../trex/trex-stl-ethip4-ip4dst-rnd1000000-6p.py | 141 +++++++++++++++++ .../trex/trex-stl-ethip4-ip4dst10000-2p.py | 110 ++++++++++++++ .../trex/trex-stl-ethip4-ip4dst10000-6p.py | 134 +++++++++++++++++ .../trex/trex-stl-ethip4-ip4dst100000-2p.py | 110 ++++++++++++++ .../trex/trex-stl-ethip4-ip4dst100000-6p.py | 134 +++++++++++++++++ .../trex/trex-stl-ethip4-ip4dst1000000-2p.py | 110 ++++++++++++++ .../trex/trex-stl-ethip4-ip4dst1000000-6p.py | 134 +++++++++++++++++ .../trex/trex-stl-ethip4-ip4dst10000p3.py | 135 ----------------- resources/libraries/python/Constants.py | 73 +++++---- resources/libraries/python/IPTopology.py | 8 +- resources/libraries/python/TrafficGenerator.py | 8 +- resources/libraries/python/autogen/Regenerator.py | 28 ++++ resources/libraries/robot/shared/suite_setup.robot | 4 +- .../10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot | 4 +- ...0ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot | 4 +- .../10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot | 4 +- ...10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot | 4 +- .../ip4/10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot | 4 +- .../10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot | 4 +- .../10ge2p1x710-ethip4-ip4scale600k-ndrpdr.robot | 144 ++++++++++++++++++ ...0ge2p1x710-ethip4-ip4scale600k-rnd-ndrpdr.robot | 144 ++++++++++++++++++ .../10ge2p1x710-ethip4-ip4scale60k-ndrpdr.robot | 144 ++++++++++++++++++ ...10ge2p1x710-ethip4-ip4scale60k-rnd-ndrpdr.robot | 144 ++++++++++++++++++ .../ip4/10ge2p1x710-ethip4-ip4scale6m-ndrpdr.robot | 144 ++++++++++++++++++ .../10ge2p1x710-ethip4-ip4scale6m-rnd-ndrpdr.robot | 144 ++++++++++++++++++ ...1l-10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot | 4 +- ...0ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot | 4 +- ...n1l-10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot | 4 +- ...10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot | 4 +- ...2n1l-10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot | 4 +- ...-10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot | 4 +- ...2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot | 166 -------------------- ...aclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot | 167 --------------------- ...ot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot | 163 -------------------- ...cbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot | 164 -------------------- 40 files changed, 2467 insertions(+), 855 deletions(-) create mode 100644 GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd10000-2p.py create mode 100644 GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd10000-6p.py create mode 100644 GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd100000-2p.py create mode 100644 GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd100000-6p.py create mode 100644 GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd1000000-2p.py create mode 100644 GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd1000000-6p.py create mode 100644 GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000-2p.py create mode 100644 GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000-6p.py create mode 100644 GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst100000-2p.py create mode 100644 GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst100000-6p.py create mode 100644 GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst1000000-2p.py create mode 100644 GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst1000000-6p.py delete mode 100644 GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000p3.py create mode 100644 tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale600k-ndrpdr.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale600k-rnd-ndrpdr.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale60k-ndrpdr.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale60k-rnd-ndrpdr.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale6m-ndrpdr.robot create mode 100644 tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale6m-rnd-ndrpdr.robot delete mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot delete mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot delete mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot delete mode 100644 tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot diff --git a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd10000-2p.py b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd10000-2p.py new file mode 100644 index 0000000000..fb96ed89b2 --- /dev/null +++ b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd10000-2p.py @@ -0,0 +1,113 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later +# +# Licensed under the Apache License 2.0 or +# GNU General Public License v2.0 or later; you may not use this file +# except in compliance with one of these Licenses. You +# may obtain a copy of the Licenses at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html +# +# Note: If this file is linked with Scapy, which is GPLv2+, your use of it +# must be under GPLv2+. If at any point in the future it is no longer linked +# with Scapy (or other GPLv2+ licensed software), you are free to choose +# Apache 2. +# +# 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: + - Three parallel bi-directional streams sent as W --> E and E --> W + at the same time. + - Packet: ETH / IP / +""" + +from trex.stl.api import * +from profile_trex_stateless_scale_class import TrafficStreamsScaleClass + + +class TrafficStreams(TrafficStreamsScaleClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsScaleClass, self).__init__() + + self.pkt_data = [ + # Direction W --> E: + { + "src_start_ip": "10.0.0.1", + "dst_start_ip": "20.0.0.0", + "dst_end_ip": "20.0.39.15", + "seed": 1 + }, + # Direction E --> W: + { + "src_start_ip": "20.0.0.1", + "dst_start_ip": "10.0.0.0", + "dst_end_ip": "10.0.39.15", + "seed": 2 + } + ] + self.pkt_base = [] + self.pkt_vm = [] + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Base packets to be sent and transformation function. + :rtype: tuple + """ + for i in range(len(self.pkt_data)): + self.pkt_base.append( + Ether() / + IP( + src=self.pkt_data[i]["src_start_ip"], + dst=self.pkt_data[i]["dst_start_ip"], + proto=61 + ) + ) + self.pkt_vm.append( + STLScVmRaw( + [ + STLVmFlowVar( + name="dst", + min_value=self.pkt_data[i]["dst_start_ip"], + max_value=self.pkt_data[i]["dst_end_ip"], + size=4, + seed=self.pkt_data[i]["seed"], + limit=(2**24 - 1) + ), + STLVmWrFlowVar( + fv_name="dst", + pkt_offset="IP.dst" + ), + STLVmFixIpv4( + offset="IP" + ) + ] + ) + ) + + return self.pkt_base, self.pkt_vm + + +def register(): + """Register this traffic profile to T-Rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd10000-6p.py b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd10000-6p.py new file mode 100644 index 0000000000..91226c5dfc --- /dev/null +++ b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd10000-6p.py @@ -0,0 +1,141 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later +# +# Licensed under the Apache License 2.0 or +# GNU General Public License v2.0 or later; you may not use this file +# except in compliance with one of these Licenses. You +# may obtain a copy of the Licenses at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html +# +# Note: If this file is linked with Scapy, which is GPLv2+, your use of it +# must be under GPLv2+. If at any point in the future it is no longer linked +# with Scapy (or other GPLv2+ licensed software), you are free to choose +# Apache 2. +# +# 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: + - Three parallel bi-directional streams sent as W --> E and E --> W + at the same time. + - Packet: ETH / IP / +""" + +from trex.stl.api import * +from profile_trex_stateless_scale_class import TrafficStreamsScaleClass + + +class TrafficStreams(TrafficStreamsScaleClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsScaleClass, self).__init__() + + self.pkt_data = [ + # Direction W --> E: + { + "src_start_ip": "10.0.0.1", + "dst_start_ip": "20.0.0.0", + "dst_end_ip": "20.0.39.15", + "seed": 1 + }, + # Direction W --> E: + { + "src_start_ip": "30.0.0.1", + "dst_start_ip": "40.0.0.0", + "dst_end_ip": "40.0.39.15", + "seed": 2 + }, + # Direction W --> E: + { + "src_start_ip": "50.0.0.1", + "dst_start_ip": "60.0.0.0", + "dst_end_ip": "60.0.39.15", + "seed": 1 + }, + # Direction E --> W: + { + "src_start_ip": "20.0.0.1", + "dst_start_ip": "10.0.0.0", + "dst_end_ip": "10.0.39.15", + "seed": 2 + }, + # Direction E --> W: + { + "src_start_ip": "40.0.0.1", + "dst_start_ip": "30.0.0.0", + "dst_end_ip": "30.0.39.15", + "seed": 1 + }, + # Direction E --> W: + { + "src_start_ip": "60.0.0.1", + "dst_start_ip": "50.0.0.0", + "dst_end_ip": "50.0.39.15", + "seed": 2 + } + ] + self.pkt_base = [] + self.pkt_vm = [] + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Base packets to be sent and transformation function. + :rtype: tuple + """ + for i in range(len(self.pkt_data)): + self.pkt_base.append( + Ether() / + IP( + src=self.pkt_data[i]["src_start_ip"], + dst=self.pkt_data[i]["dst_start_ip"], + proto=61 + ) + ) + self.pkt_vm.append( + STLScVmRaw( + [ + STLVmFlowVar( + name="dst", + min_value=self.pkt_data[i]["dst_start_ip"], + max_value=self.pkt_data[i]["dst_end_ip"], + size=4, + seed=self.pkt_data[i]["seed"], + limit=(2**24 - 1) + ), + STLVmWrFlowVar( + fv_name="dst", + pkt_offset="IP.dst" + ), + STLVmFixIpv4( + offset="IP" + ) + ] + ) + ) + + return self.pkt_base, self.pkt_vm + + +def register(): + """Register this traffic profile to T-Rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd100000-2p.py b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd100000-2p.py new file mode 100644 index 0000000000..fea98bce6f --- /dev/null +++ b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd100000-2p.py @@ -0,0 +1,113 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later +# +# Licensed under the Apache License 2.0 or +# GNU General Public License v2.0 or later; you may not use this file +# except in compliance with one of these Licenses. You +# may obtain a copy of the Licenses at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html +# +# Note: If this file is linked with Scapy, which is GPLv2+, your use of it +# must be under GPLv2+. If at any point in the future it is no longer linked +# with Scapy (or other GPLv2+ licensed software), you are free to choose +# Apache 2. +# +# 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: + - Three parallel bi-directional streams sent as W --> E and E --> W + at the same time. + - Packet: ETH / IP / +""" + +from trex.stl.api import * +from profile_trex_stateless_scale_class import TrafficStreamsScaleClass + + +class TrafficStreams(TrafficStreamsScaleClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsScaleClass, self).__init__() + + self.pkt_data = [ + # Direction W --> E: + { + "src_start_ip": "10.0.0.1", + "dst_start_ip": "20.0.0.0", + "dst_end_ip": "20.1.134.159", + "seed": 1 + }, + # Direction E --> W: + { + "src_start_ip": "20.0.0.1", + "dst_start_ip": "10.0.0.0", + "dst_end_ip": "10.1.134.159", + "seed": 2 + } + ] + self.pkt_base = [] + self.pkt_vm = [] + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Base packets to be sent and transformation function. + :rtype: tuple + """ + for i in range(len(self.pkt_data)): + self.pkt_base.append( + Ether() / + IP( + src=self.pkt_data[i]["src_start_ip"], + dst=self.pkt_data[i]["dst_start_ip"], + proto=61 + ) + ) + self.pkt_vm.append( + STLScVmRaw( + [ + STLVmFlowVar( + name="dst", + min_value=self.pkt_data[i]["dst_start_ip"], + max_value=self.pkt_data[i]["dst_end_ip"], + size=4, + seed=self.pkt_data[i]["seed"], + limit=(2**24 - 1) + ), + STLVmWrFlowVar( + fv_name="dst", + pkt_offset="IP.dst" + ), + STLVmFixIpv4( + offset="IP" + ) + ] + ) + ) + + return self.pkt_base, self.pkt_vm + + +def register(): + """Register this traffic profile to T-Rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd100000-6p.py b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd100000-6p.py new file mode 100644 index 0000000000..850fb53bc9 --- /dev/null +++ b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd100000-6p.py @@ -0,0 +1,141 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later +# +# Licensed under the Apache License 2.0 or +# GNU General Public License v2.0 or later; you may not use this file +# except in compliance with one of these Licenses. You +# may obtain a copy of the Licenses at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html +# +# Note: If this file is linked with Scapy, which is GPLv2+, your use of it +# must be under GPLv2+. If at any point in the future it is no longer linked +# with Scapy (or other GPLv2+ licensed software), you are free to choose +# Apache 2. +# +# 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: + - Three parallel bi-directional streams sent as W --> E and E --> W + at the same time. + - Packet: ETH / IP / +""" + +from trex.stl.api import * +from profile_trex_stateless_scale_class import TrafficStreamsScaleClass + + +class TrafficStreams(TrafficStreamsScaleClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsScaleClass, self).__init__() + + self.pkt_data = [ + # Direction W --> E: + { + "src_start_ip": "10.0.0.1", + "dst_start_ip": "20.0.0.0", + "dst_end_ip": "20.1.134.159", + "seed": 1 + }, + # Direction W --> E: + { + "src_start_ip": "30.0.0.1", + "dst_start_ip": "40.0.0.0", + "dst_end_ip": "40.1.134.159", + "seed": 2 + }, + # Direction W --> E: + { + "src_start_ip": "50.0.0.1", + "dst_start_ip": "60.0.0.0", + "dst_end_ip": "60.1.134.159", + "seed": 1 + }, + # Direction E --> W: + { + "src_start_ip": "20.0.0.1", + "dst_start_ip": "10.0.0.0", + "dst_end_ip": "10.1.134.159", + "seed": 2 + }, + # Direction E --> W: + { + "src_start_ip": "40.0.0.1", + "dst_start_ip": "30.0.0.0", + "dst_end_ip": "30.1.134.159", + "seed": 1 + }, + # Direction E --> W: + { + "src_start_ip": "60.0.0.1", + "dst_start_ip": "50.0.0.0", + "dst_end_ip": "50.1.134.159", + "seed": 2 + } + ] + self.pkt_base = [] + self.pkt_vm = [] + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Base packets to be sent and transformation function. + :rtype: tuple + """ + for i in range(len(self.pkt_data)): + self.pkt_base.append( + Ether() / + IP( + src=self.pkt_data[i]["src_start_ip"], + dst=self.pkt_data[i]["dst_start_ip"], + proto=61 + ) + ) + self.pkt_vm.append( + STLScVmRaw( + [ + STLVmFlowVar( + name="dst", + min_value=self.pkt_data[i]["dst_start_ip"], + max_value=self.pkt_data[i]["dst_end_ip"], + size=4, + seed=self.pkt_data[i]["seed"], + limit=(2**24 - 1) + ), + STLVmWrFlowVar( + fv_name="dst", + pkt_offset="IP.dst" + ), + STLVmFixIpv4( + offset="IP" + ) + ] + ) + ) + + return self.pkt_base, self.pkt_vm + + +def register(): + """Register this traffic profile to T-Rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd1000000-2p.py b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd1000000-2p.py new file mode 100644 index 0000000000..68fcf63f3d --- /dev/null +++ b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd1000000-2p.py @@ -0,0 +1,113 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later +# +# Licensed under the Apache License 2.0 or +# GNU General Public License v2.0 or later; you may not use this file +# except in compliance with one of these Licenses. You +# may obtain a copy of the Licenses at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html +# +# Note: If this file is linked with Scapy, which is GPLv2+, your use of it +# must be under GPLv2+. If at any point in the future it is no longer linked +# with Scapy (or other GPLv2+ licensed software), you are free to choose +# Apache 2. +# +# 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: + - Three parallel bi-directional streams sent as W --> E and E --> W + at the same time. + - Packet: ETH / IP / +""" + +from trex.stl.api import * +from profile_trex_stateless_scale_class import TrafficStreamsScaleClass + + +class TrafficStreams(TrafficStreamsScaleClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsScaleClass, self).__init__() + + self.pkt_data = [ + # Direction W --> E: + { + "src_start_ip": "10.0.0.1", + "dst_start_ip": "20.0.0.0", + "dst_end_ip": "20.15.66.63", + "seed": 1 + }, + # Direction E --> W: + { + "src_start_ip": "20.0.0.1", + "dst_start_ip": "10.0.0.0", + "dst_end_ip": "10.15.66.63", + "seed": 2 + } + ] + self.pkt_base = [] + self.pkt_vm = [] + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Base packets to be sent and transformation function. + :rtype: tuple + """ + for i in range(len(self.pkt_data)): + self.pkt_base.append( + Ether() / + IP( + src=self.pkt_data[i]["src_start_ip"], + dst=self.pkt_data[i]["dst_start_ip"], + proto=61 + ) + ) + self.pkt_vm.append( + STLScVmRaw( + [ + STLVmFlowVar( + name="dst", + min_value=self.pkt_data[i]["dst_start_ip"], + max_value=self.pkt_data[i]["dst_end_ip"], + size=4, + seed=self.pkt_data[i]["seed"], + limit=(2**24 - 1) + ), + STLVmWrFlowVar( + fv_name="dst", + pkt_offset="IP.dst" + ), + STLVmFixIpv4( + offset="IP" + ) + ] + ) + ) + + return self.pkt_base, self.pkt_vm + + +def register(): + """Register this traffic profile to T-Rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd1000000-6p.py b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd1000000-6p.py new file mode 100644 index 0000000000..2e372a588b --- /dev/null +++ b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst-rnd1000000-6p.py @@ -0,0 +1,141 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later +# +# Licensed under the Apache License 2.0 or +# GNU General Public License v2.0 or later; you may not use this file +# except in compliance with one of these Licenses. You +# may obtain a copy of the Licenses at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html +# +# Note: If this file is linked with Scapy, which is GPLv2+, your use of it +# must be under GPLv2+. If at any point in the future it is no longer linked +# with Scapy (or other GPLv2+ licensed software), you are free to choose +# Apache 2. +# +# 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: + - Three parallel bi-directional streams sent as W --> E and E --> W + at the same time. + - Packet: ETH / IP / +""" + +from trex.stl.api import * +from profile_trex_stateless_scale_class import TrafficStreamsScaleClass + + +class TrafficStreams(TrafficStreamsScaleClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsScaleClass, self).__init__() + + self.pkt_data = [ + # Direction W --> E: + { + "src_start_ip": "10.0.0.1", + "dst_start_ip": "20.0.0.0", + "dst_end_ip": "20.15.66.63", + "seed": 1 + }, + # Direction W --> E: + { + "src_start_ip": "30.0.0.1", + "dst_start_ip": "40.0.0.0", + "dst_end_ip": "40.15.66.63", + "seed": 2 + }, + # Direction W --> E: + { + "src_start_ip": "50.0.0.1", + "dst_start_ip": "60.0.0.0", + "dst_end_ip": "60.15.66.63", + "seed": 1 + }, + # Direction E --> W: + { + "src_start_ip": "20.0.0.1", + "dst_start_ip": "10.0.0.0", + "dst_end_ip": "10.15.66.63", + "seed": 2 + }, + # Direction E --> W: + { + "src_start_ip": "40.0.0.1", + "dst_start_ip": "30.0.0.0", + "dst_end_ip": "30.15.66.63", + "seed": 1 + }, + # Direction E --> W: + { + "src_start_ip": "60.0.0.1", + "dst_start_ip": "50.0.0.0", + "dst_end_ip": "50.15.66.63", + "seed": 2 + } + ] + self.pkt_base = [] + self.pkt_vm = [] + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Base packets to be sent and transformation function. + :rtype: tuple + """ + for i in range(len(self.pkt_data)): + self.pkt_base.append( + Ether() / + IP( + src=self.pkt_data[i]["src_start_ip"], + dst=self.pkt_data[i]["dst_start_ip"], + proto=61 + ) + ) + self.pkt_vm.append( + STLScVmRaw( + [ + STLVmFlowVar( + name="dst", + min_value=self.pkt_data[i]["dst_start_ip"], + max_value=self.pkt_data[i]["dst_end_ip"], + size=4, + seed=self.pkt_data[i]["seed"], + limit=(2**24 - 1) + ), + STLVmWrFlowVar( + fv_name="dst", + pkt_offset="IP.dst" + ), + STLVmFixIpv4( + offset="IP" + ) + ] + ) + ) + + return self.pkt_base, self.pkt_vm + + +def register(): + """Register this traffic profile to T-Rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000-2p.py b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000-2p.py new file mode 100644 index 0000000000..2dda26ddaf --- /dev/null +++ b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000-2p.py @@ -0,0 +1,110 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later +# +# Licensed under the Apache License 2.0 or +# GNU General Public License v2.0 or later; you may not use this file +# except in compliance with one of these Licenses. You +# may obtain a copy of the Licenses at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html +# +# Note: If this file is linked with Scapy, which is GPLv2+, your use of it +# must be under GPLv2+. If at any point in the future it is no longer linked +# with Scapy (or other GPLv2+ licensed software), you are free to choose +# Apache 2. +# +# 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: + - Three parallel bi-directional streams sent as W --> E and E --> W + at the same time. + - Packet: ETH / IP / +""" + +from trex.stl.api import * +from profile_trex_stateless_scale_class import TrafficStreamsScaleClass + + +class TrafficStreams(TrafficStreamsScaleClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsScaleClass, self).__init__() + + self.pkt_data = [ + # Direction W --> E: + { + "src_start_ip": "10.0.0.1", + "dst_start_ip": "20.0.0.0", + "dst_end_ip": "20.0.39.15" + }, + # Direction E --> W: + { + "src_start_ip": "20.0.0.1", + "dst_start_ip": "10.0.0.0", + "dst_end_ip": "10.0.39.15" + } + ] + self.pkt_base = [] + self.pkt_vm = [] + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Base packets to be sent and transformation function. + :rtype: tuple + """ + for i in range(len(self.pkt_data)): + self.pkt_base.append( + Ether() / + IP( + src=self.pkt_data[i]["src_start_ip"], + dst=self.pkt_data[i]["dst_start_ip"], + proto=61 + ) + ) + self.pkt_vm.append( + STLScVmRaw( + [ + STLVmFlowVar( + name="dst", + min_value=self.pkt_data[i]["dst_start_ip"], + max_value=self.pkt_data[i]["dst_end_ip"], + size=4, + op="inc" + ), + STLVmWrFlowVar( + fv_name="dst", + pkt_offset="IP.dst" + ), + STLVmFixIpv4( + offset="IP" + ) + ] + ) + ) + + return self.pkt_base, self.pkt_vm + + +def register(): + """Register this traffic profile to T-Rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000-6p.py b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000-6p.py new file mode 100644 index 0000000000..94a47a8bb6 --- /dev/null +++ b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000-6p.py @@ -0,0 +1,134 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later +# +# Licensed under the Apache License 2.0 or +# GNU General Public License v2.0 or later; you may not use this file +# except in compliance with one of these Licenses. You +# may obtain a copy of the Licenses at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html +# +# Note: If this file is linked with Scapy, which is GPLv2+, your use of it +# must be under GPLv2+. If at any point in the future it is no longer linked +# with Scapy (or other GPLv2+ licensed software), you are free to choose +# Apache 2. +# +# 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: + - Three parallel bi-directional streams sent as W --> E and E --> W + at the same time. + - Packet: ETH / IP / +""" + +from trex.stl.api import * +from profile_trex_stateless_scale_class import TrafficStreamsScaleClass + + +class TrafficStreams(TrafficStreamsScaleClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsScaleClass, self).__init__() + + self.pkt_data = [ + # Direction W --> E: + { + "src_start_ip": "10.0.0.1", + "dst_start_ip": "20.0.0.0", + "dst_end_ip": "20.0.39.15" + }, + # Direction W --> E: + { + "src_start_ip": "30.0.0.1", + "dst_start_ip": "40.0.0.0", + "dst_end_ip": "40.0.39.15" + }, + # Direction W --> E: + { + "src_start_ip": "50.0.0.1", + "dst_start_ip": "60.0.0.0", + "dst_end_ip": "60.0.39.15" + }, + # Direction E --> W: + { + "src_start_ip": "20.0.0.1", + "dst_start_ip": "10.0.0.0", + "dst_end_ip": "10.0.39.15" + }, + # Direction E --> W: + { + "src_start_ip": "40.0.0.1", + "dst_start_ip": "30.0.0.0", + "dst_end_ip": "30.0.39.15" + }, + # Direction E --> W: + { + "src_start_ip": "60.0.0.1", + "dst_start_ip": "50.0.0.0", + "dst_end_ip": "50.0.39.15" + } + ] + self.pkt_base = [] + self.pkt_vm = [] + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Base packets to be sent and transformation function. + :rtype: tuple + """ + for i in range(len(self.pkt_data)): + self.pkt_base.append( + Ether() / + IP( + src=self.pkt_data[i]["src_start_ip"], + dst=self.pkt_data[i]["dst_start_ip"], + proto=61 + ) + ) + self.pkt_vm.append( + STLScVmRaw( + [ + STLVmFlowVar( + name="dst", + min_value=self.pkt_data[i]["dst_start_ip"], + max_value=self.pkt_data[i]["dst_end_ip"], + size=4, + op="inc" + ), + STLVmWrFlowVar( + fv_name="dst", + pkt_offset="IP.dst" + ), + STLVmFixIpv4( + offset="IP" + ) + ] + ) + ) + + return self.pkt_base, self.pkt_vm + + +def register(): + """Register this traffic profile to T-Rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst100000-2p.py b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst100000-2p.py new file mode 100644 index 0000000000..a8d223b854 --- /dev/null +++ b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst100000-2p.py @@ -0,0 +1,110 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later +# +# Licensed under the Apache License 2.0 or +# GNU General Public License v2.0 or later; you may not use this file +# except in compliance with one of these Licenses. You +# may obtain a copy of the Licenses at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html +# +# Note: If this file is linked with Scapy, which is GPLv2+, your use of it +# must be under GPLv2+. If at any point in the future it is no longer linked +# with Scapy (or other GPLv2+ licensed software), you are free to choose +# Apache 2. +# +# 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: + - Three parallel bi-directional streams sent as W --> E and E --> W + at the same time. + - Packet: ETH / IP / +""" + +from trex.stl.api import * +from profile_trex_stateless_scale_class import TrafficStreamsScaleClass + + +class TrafficStreams(TrafficStreamsScaleClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsScaleClass, self).__init__() + + self.pkt_data = [ + # Direction W --> E: + { + "src_start_ip": "10.0.0.1", + "dst_start_ip": "20.0.0.0", + "dst_end_ip": "20.1.134.159" + }, + # Direction E --> W: + { + "src_start_ip": "20.0.0.1", + "dst_start_ip": "10.0.0.0", + "dst_end_ip": "10.1.134.159" + } + ] + self.pkt_base = [] + self.pkt_vm = [] + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Base packets to be sent and transformation function. + :rtype: tuple + """ + for i in range(len(self.pkt_data)): + self.pkt_base.append( + Ether() / + IP( + src=self.pkt_data[i]["src_start_ip"], + dst=self.pkt_data[i]["dst_start_ip"], + proto=61 + ) + ) + self.pkt_vm.append( + STLScVmRaw( + [ + STLVmFlowVar( + name="dst", + min_value=self.pkt_data[i]["dst_start_ip"], + max_value=self.pkt_data[i]["dst_end_ip"], + size=4, + op="inc" + ), + STLVmWrFlowVar( + fv_name="dst", + pkt_offset="IP.dst" + ), + STLVmFixIpv4( + offset="IP" + ) + ] + ) + ) + + return self.pkt_base, self.pkt_vm + + +def register(): + """Register this traffic profile to T-Rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst100000-6p.py b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst100000-6p.py new file mode 100644 index 0000000000..76042447ca --- /dev/null +++ b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst100000-6p.py @@ -0,0 +1,134 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later +# +# Licensed under the Apache License 2.0 or +# GNU General Public License v2.0 or later; you may not use this file +# except in compliance with one of these Licenses. You +# may obtain a copy of the Licenses at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html +# +# Note: If this file is linked with Scapy, which is GPLv2+, your use of it +# must be under GPLv2+. If at any point in the future it is no longer linked +# with Scapy (or other GPLv2+ licensed software), you are free to choose +# Apache 2. +# +# 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: + - Three parallel bi-directional streams sent as W --> E and E --> W + at the same time. + - Packet: ETH / IP / +""" + +from trex.stl.api import * +from profile_trex_stateless_scale_class import TrafficStreamsScaleClass + + +class TrafficStreams(TrafficStreamsScaleClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsScaleClass, self).__init__() + + self.pkt_data = [ + # Direction W --> E: + { + "src_start_ip": "10.0.0.1", + "dst_start_ip": "20.0.0.0", + "dst_end_ip": "20.1.134.159" + }, + # Direction W --> E: + { + "src_start_ip": "30.0.0.1", + "dst_start_ip": "40.0.0.0", + "dst_end_ip": "40.1.134.159" + }, + # Direction W --> E: + { + "src_start_ip": "50.0.0.1", + "dst_start_ip": "60.0.0.0", + "dst_end_ip": "60.1.134.159" + }, + # Direction E --> W: + { + "src_start_ip": "20.0.0.1", + "dst_start_ip": "10.0.0.0", + "dst_end_ip": "10.1.134.159" + }, + # Direction E --> W: + { + "src_start_ip": "40.0.0.1", + "dst_start_ip": "30.0.0.0", + "dst_end_ip": "30.1.134.159" + }, + # Direction E --> W: + { + "src_start_ip": "60.0.0.1", + "dst_start_ip": "50.0.0.0", + "dst_end_ip": "50.1.134.159" + } + ] + self.pkt_base = [] + self.pkt_vm = [] + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Base packets to be sent and transformation function. + :rtype: tuple + """ + for i in range(len(self.pkt_data)): + self.pkt_base.append( + Ether() / + IP( + src=self.pkt_data[i]["src_start_ip"], + dst=self.pkt_data[i]["dst_start_ip"], + proto=61 + ) + ) + self.pkt_vm.append( + STLScVmRaw( + [ + STLVmFlowVar( + name="dst", + min_value=self.pkt_data[i]["dst_start_ip"], + max_value=self.pkt_data[i]["dst_end_ip"], + size=4, + op="inc" + ), + STLVmWrFlowVar( + fv_name="dst", + pkt_offset="IP.dst" + ), + STLVmFixIpv4( + offset="IP" + ) + ] + ) + ) + + return self.pkt_base, self.pkt_vm + + +def register(): + """Register this traffic profile to T-Rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst1000000-2p.py b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst1000000-2p.py new file mode 100644 index 0000000000..f2e7938ff2 --- /dev/null +++ b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst1000000-2p.py @@ -0,0 +1,110 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later +# +# Licensed under the Apache License 2.0 or +# GNU General Public License v2.0 or later; you may not use this file +# except in compliance with one of these Licenses. You +# may obtain a copy of the Licenses at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html +# +# Note: If this file is linked with Scapy, which is GPLv2+, your use of it +# must be under GPLv2+. If at any point in the future it is no longer linked +# with Scapy (or other GPLv2+ licensed software), you are free to choose +# Apache 2. +# +# 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: + - Three parallel bi-directional streams sent as W --> E and E --> W + at the same time. + - Packet: ETH / IP / +""" + +from trex.stl.api import * +from profile_trex_stateless_scale_class import TrafficStreamsScaleClass + + +class TrafficStreams(TrafficStreamsScaleClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsScaleClass, self).__init__() + + self.pkt_data = [ + # Direction W --> E: + { + "src_start_ip": "10.0.0.1", + "dst_start_ip": "20.0.0.0", + "dst_end_ip": "20.15.66.63" + }, + # Direction E --> W: + { + "src_start_ip": "20.0.0.1", + "dst_start_ip": "10.0.0.0", + "dst_end_ip": "10.15.66.63" + } + ] + self.pkt_base = [] + self.pkt_vm = [] + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Base packets to be sent and transformation function. + :rtype: tuple + """ + for i in range(len(self.pkt_data)): + self.pkt_base.append( + Ether() / + IP( + src=self.pkt_data[i]["src_start_ip"], + dst=self.pkt_data[i]["dst_start_ip"], + proto=61 + ) + ) + self.pkt_vm.append( + STLScVmRaw( + [ + STLVmFlowVar( + name="dst", + min_value=self.pkt_data[i]["dst_start_ip"], + max_value=self.pkt_data[i]["dst_end_ip"], + size=4, + op="inc" + ), + STLVmWrFlowVar( + fv_name="dst", + pkt_offset="IP.dst" + ), + STLVmFixIpv4( + offset="IP" + ) + ] + ) + ) + + return self.pkt_base, self.pkt_vm + + +def register(): + """Register this traffic profile to T-Rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst1000000-6p.py b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst1000000-6p.py new file mode 100644 index 0000000000..6474b43470 --- /dev/null +++ b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst1000000-6p.py @@ -0,0 +1,134 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# +# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later +# +# Licensed under the Apache License 2.0 or +# GNU General Public License v2.0 or later; you may not use this file +# except in compliance with one of these Licenses. You +# may obtain a copy of the Licenses at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html +# +# Note: If this file is linked with Scapy, which is GPLv2+, your use of it +# must be under GPLv2+. If at any point in the future it is no longer linked +# with Scapy (or other GPLv2+ licensed software), you are free to choose +# Apache 2. +# +# 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: + - Three parallel bi-directional streams sent as W --> E and E --> W + at the same time. + - Packet: ETH / IP / +""" + +from trex.stl.api import * +from profile_trex_stateless_scale_class import TrafficStreamsScaleClass + + +class TrafficStreams(TrafficStreamsScaleClass): + """Stream profile.""" + + def __init__(self): + """Initialization and setting of streams' parameters.""" + + super(TrafficStreamsScaleClass, self).__init__() + + self.pkt_data = [ + # Direction W --> E: + { + "src_start_ip": "10.0.0.1", + "dst_start_ip": "20.0.0.0", + "dst_end_ip": "20.15.66.63" + }, + # Direction W --> E: + { + "src_start_ip": "30.0.0.1", + "dst_start_ip": "40.0.0.0", + "dst_end_ip": "40.15.66.63" + }, + # Direction W --> E: + { + "src_start_ip": "50.0.0.1", + "dst_start_ip": "60.0.0.0", + "dst_end_ip": "60.15.66.63" + }, + # Direction E --> W: + { + "src_start_ip": "20.0.0.1", + "dst_start_ip": "10.0.0.0", + "dst_end_ip": "10.15.66.63" + }, + # Direction E --> W: + { + "src_start_ip": "40.0.0.1", + "dst_start_ip": "30.0.0.0", + "dst_end_ip": "30.15.66.63" + }, + # Direction E --> W: + { + "src_start_ip": "60.0.0.1", + "dst_start_ip": "50.0.0.0", + "dst_end_ip": "50.15.66.63" + } + ] + self.pkt_base = [] + self.pkt_vm = [] + + def define_packets(self): + """Defines the packets to be sent from the traffic generator. + + Packet definition: | ETH | IP | + + :returns: Base packets to be sent and transformation function. + :rtype: tuple + """ + for i in range(len(self.pkt_data)): + self.pkt_base.append( + Ether() / + IP( + src=self.pkt_data[i]["src_start_ip"], + dst=self.pkt_data[i]["dst_start_ip"], + proto=61 + ) + ) + self.pkt_vm.append( + STLScVmRaw( + [ + STLVmFlowVar( + name="dst", + min_value=self.pkt_data[i]["dst_start_ip"], + max_value=self.pkt_data[i]["dst_end_ip"], + size=4, + op="inc" + ), + STLVmWrFlowVar( + fv_name="dst", + pkt_offset="IP.dst" + ), + STLVmFixIpv4( + offset="IP" + ) + ] + ) + ) + + return self.pkt_base, self.pkt_vm + + +def register(): + """Register this traffic profile to T-Rex. + + Do not change this function. + + :return: Traffic streams. + :rtype: Object + """ + return TrafficStreams() diff --git a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000p3.py b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000p3.py deleted file mode 100644 index 01b6e3c55e..0000000000 --- a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000p3.py +++ /dev/null @@ -1,135 +0,0 @@ -# Copyright (c) 2023 Cisco and/or its affiliates. -# -# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later -# -# Licensed under the Apache License 2.0 or -# GNU General Public License v2.0 or later; you may not use this file -# except in compliance with one of these Licenses. You -# may obtain a copy of the Licenses at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html -# -# Note: If this file is linked with Scapy, which is GPLv2+, your use of it -# must be under GPLv2+. If at any point in the future it is no longer linked -# with Scapy (or other GPLv2+ licensed software), you are free to choose -# Apache 2. -# -# 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: - - Three parallel bi-directional streams sent as W --> E and E --> W - at the same time. - - Packet: ETH / IP / -""" - -from trex.stl.api import * -from profile_trex_stateless_scale_class import TrafficStreamsScaleClass - - -class TrafficStreams(TrafficStreamsScaleClass): - """Stream profile.""" - - def __init__(self): - """Initialization and setting of streams' parameters.""" - - super(TrafficStreamsScaleClass, self).__init__() - - self.pkt_data = [ - # Direction W --> E: - { - "src_start_ip": "10.0.0.1", - "dst_start_ip": "20.0.0.0", - "dst_end_ip": "20.0.39.15" - }, - # Direction W --> E: - { - "src_start_ip": "30.0.0.1", - "dst_start_ip": "40.0.0.0", - "dst_end_ip": "40.0.39.15" - }, - # Direction W --> E: - { - "src_start_ip": "50.0.0.1", - "dst_start_ip": "60.0.0.0", - "dst_end_ip": "60.0.39.15" - }, - # Direction E --> W: - { - "src_start_ip": "20.0.0.1", - "dst_start_ip": "10.0.0.0", - "dst_end_ip": "10.0.39.15" - }, - # Direction E --> W: - { - "src_start_ip": "40.0.0.1", - "dst_start_ip": "30.0.0.0", - "dst_end_ip": "30.0.39.15" - }, - # Direction E --> W: - { - "src_start_ip": "60.0.0.1", - "dst_start_ip": "50.0.0.0", - "dst_end_ip": "50.0.39.15" - } - - ] - self.pkt_base = [] - self.pkt_vm = [] - - def define_packets(self): - """Defines the packets to be sent from the traffic generator. - - Packet definition: | ETH | IP | - - :returns: Base packets to be sent and transformation function. - :rtype: tuple - """ - for i in range(len(self.pkt_data)): - self.pkt_base.append( - Ether() / - IP( - src=self.pkt_data[i]["src_start_ip"], - dst=self.pkt_data[i]["dst_start_ip"], - proto=61 - ) - ) - self.pkt_vm.append( - STLScVmRaw( - [ - STLVmFlowVar( - name="dst", - min_value=self.pkt_data[i]["dst_start_ip"], - max_value=self.pkt_data[i]["dst_end_ip"], - size=4, - op="inc" - ), - STLVmWrFlowVar( - fv_name="dst", - pkt_offset="IP.dst" - ), - STLVmFixIpv4( - offset="IP" - ) - ] - ) - ) - - return self.pkt_base, self.pkt_vm - - -def register(): - """Register this traffic profile to T-Rex. - - Do not change this function. - - :return: Traffic streams. - :rtype: Object - """ - return TrafficStreams() diff --git a/resources/libraries/python/Constants.py b/resources/libraries/python/Constants.py index 3240a0a33e..c7a4a1f5b4 100644 --- a/resources/libraries/python/Constants.py +++ b/resources/libraries/python/Constants.py @@ -352,37 +352,39 @@ class Constants: # Suite file names use codes for NICs. NIC_NAME_TO_CODE = { - u"Intel-X520-DA2": u"10ge2p1x520", - u"Intel-X710": u"10ge2p1x710", - u"Intel-XL710": u"40ge2p1xl710", - u"Intel-XXV710": u"25ge2p1xxv710", - u"Intel-E810XXV": u"25ge2p1e810xxv", - u"Intel-E822CQ": u"25ge2p1e822cq", - u"Intel-E810CQ": u"100ge2p1e810cq", - u"Amazon-Nitro-50G": u"50ge1p1ena", - u"Amazon-Nitro-100G": u"100ge1p1ena", - u"Amazon-Nitro-200G": u"200ge1p1ena", - u"Mellanox-CX556A": u"100ge2p1cx556a", - u"Mellanox-CX6DX": u"100ge2p1cx6dx", - u"Mellanox-CX7VEAT": u"200ge2p1cx7veat", + "Intel-X520-DA2": "10ge2p1x520", + "Intel-X710": "10ge2p1x710", + "Intel-XL710": "40ge2p1xl710", + "Intel-XXV710": "25ge2p1xxv710", + "Intel-E810XXV": "25ge2p1e810xxv", + "Intel-E822CQ": "25ge2p1e822cq", + "Intel-E810CQ": "100ge2p1e810cq", + "Amazon-Nitro-50G": "50ge1p1ena", + "Amazon-Nitro-100G": "100ge1p1ena", + "Amazon-Nitro-200G": "200ge1p1ena", + "Mellanox-CX556A": "100ge2p1cx556a", + "Mellanox-CX6DX": "100ge2p1cx6dx", + "Mellanox-CX7VEAT": "200ge2p1cx7veat", + "Mellanox-CX7VEAT": "200ge6p3cx7veat", "virtual": "1ge1p82540em", } # Shortened lowercase NIC model name, useful for presentation. NIC_CODE_TO_SHORT_NAME = { - u"10ge2p1x520": u"x520", - u"10ge2p1x710": u"x710", - u"40ge2p1xl710": u"xl710", - u"25ge2p1xxv710": u"xxv710", - u"25ge2p1e810xxv": u"e810xxv", - u"25ge2p1e822cq": u"e822cq", - u"100ge2p1e810cq": u"e810cq", - u"50ge1p1ena": u"ena", - u"100ge1p1ena": u"ena100", - u"200ge1p1ena": u"ena200", - u"100ge2p1cx556a": u"cx556a", - u"100ge2p1cx6dx": u"cx6dx", - u"200ge2p1cx7veat": u"cx7veat", + "10ge2p1x520": "x520", + "10ge2p1x710": "x710", + "40ge2p1xl710": "xl710", + "25ge2p1xxv710": "xxv710", + "25ge2p1e810xxv": "e810xxv", + "25ge2p1e822cq": "e822cq", + "100ge2p1e810cq": "e810cq", + "50ge1p1ena": "ena", + "100ge1p1ena": "ena100", + "200ge1p1ena": "ena200", + "100ge2p1cx556a": "cx556a", + "100ge2p1cx6dx": "cx6dx", + "200ge2p1cx7veat": "cx7veat", + "200ge6p3cx7veat": "cx7veat", "1ge1p82540em": "8250em", } @@ -441,6 +443,25 @@ class Constants: u"af_xdp": u"nic_vfs}= | 0", } + # Number of physical interfaces of physical nic. + NIC_CODE_TO_PFS = { + "10ge2p1x520": "nic_pfs}= | 2", + "10ge2p1x710": "nic_pfs}= | 2", + "40ge2p1xl710": "nic_pfs}= | 2", + "25ge2p1xxv710": "nic_pfs}= | 2", + "25ge2p1e810xxv": "nic_pfs}= | 2", + "25ge2p1e822cq": "nic_pfs}= | 2", + "100ge2p1e810cq": "nic_pfs}= | 2", + "50ge1p1ena": "nic_pfs}= | 2", + "100ge1p1ena": "nic_pfs}= | 2", + "200ge1p1ena": "nic_pfs}= | 2", + "100ge2p1cx556a": "nic_pfs}= | 2", + "100ge2p1cx6dx": "nic_pfs}= | 2", + "200ge2p1cx7veat": "nic_pfs}= | 2", + "200ge6p3cx7veat": "nic_pfs}= | 6", + "1ge1p82540em": "nic_pfs}= | 2", + } + # Not each driver is supported by each NIC. DPDK_NIC_NAME_TO_DRIVER = { u"Intel-X520-DA2": [u"vfio-pci"], diff --git a/resources/libraries/python/IPTopology.py b/resources/libraries/python/IPTopology.py index bc2f5f13a7..6255583110 100644 --- a/resources/libraries/python/IPTopology.py +++ b/resources/libraries/python/IPTopology.py @@ -22,21 +22,21 @@ class IPTopology: """IP Topology Library.""" @staticmethod - def initialize_ipv4_forwarding(count=1, parallel_links=1): + def initialize_ipv4_forwarding(count=1, pfs=2): """ Custom setup of IPv4 forwarding with scalability of IP routes on all DUT nodes in 2-node / 3-node circular topology. :param count: Number of routes to configure. - :param parallel_links: Number of parallel links to configure. + :param pfs: Number of physical interfaces to configure. :type count: int - :type parallel_links: int + :type pfs: int """ topology = BuiltIn().get_variable_value("&{topology_info}") dut = topology["duts"][-1] ifl = BuiltIn().get_variable_value("${int}") - for l, i in zip(range(parallel_links), range(1, parallel_links*2, 2)): + for l, i in zip(range(pfs // 2), range(1, pfs, 2)): dut1_int1 = BuiltIn().get_variable_value(f"${{DUT1_{ifl}{i}}}[0]") dut1_int2 = BuiltIn().get_variable_value(f"${{DUT1_{ifl}{i+1}}}[0]") dut_int1 = BuiltIn().get_variable_value(f"${{{dut}_{ifl}{i}}}[0]") diff --git a/resources/libraries/python/TrafficGenerator.py b/resources/libraries/python/TrafficGenerator.py index 7c6c859448..936cb3a06d 100644 --- a/resources/libraries/python/TrafficGenerator.py +++ b/resources/libraries/python/TrafficGenerator.py @@ -281,13 +281,13 @@ class TrafficGenerator(AbstractMeasurer): return stdout.strip() return "none" - def initialize_traffic_generator(self, osi_layer, parallel_links=1): + def initialize_traffic_generator(self, osi_layer, pfs=2): """TG initialization. :param osi_layer: 'L2', 'L3' or 'L7' - OSI Layer testing type. - :param parallel_links: Number of parallel links to configure. + :param pfs: Number of physical interfaces to configure. :type osi_layer: str - :type parallel_links: int + :type pfs: int :raises ValueError: If OSI layer is unknown. """ if osi_layer not in ("L2", "L3", "L7"): @@ -301,7 +301,7 @@ class TrafficGenerator(AbstractMeasurer): trex_topology = list() self._mode = TrexMode.ASTF if osi_layer == "L7" else TrexMode.STL - for link in range(1, parallel_links*2, 2): + for link in range(1, pfs, 2): tg_if1_adj_addr = topology[f"TG_pf{link+1}_mac"][0] tg_if2_adj_addr = topology[f"TG_pf{link}_mac"][0] if osi_layer in ("L3", "L7") and "DUT1" in topology.keys(): diff --git a/resources/libraries/python/autogen/Regenerator.py b/resources/libraries/python/autogen/Regenerator.py index 47e5b9fe86..2e81587c96 100644 --- a/resources/libraries/python/autogen/Regenerator.py +++ b/resources/libraries/python/autogen/Regenerator.py @@ -351,6 +351,7 @@ def write_default_files(in_filename, in_prolog, kwargs_list): ) continue for driver in Constants.NIC_NAME_TO_DRIVER[nic_name]: + nic_code = Constants.NIC_NAME_TO_CODE[nic_name] out_filename = replace_defensively( tmp2_filename, old_suite_id, Constants.NIC_DRIVER_TO_SUITE_PREFIX[driver] + old_suite_id, @@ -375,6 +376,12 @@ def write_default_files(in_filename, in_prolog, kwargs_list): Constants.NIC_DRIVER_TO_VFS[driver], 1, u"NIC VFs argument should appear once.", in_filename ) + out_prolog = replace_defensively( + out_prolog, Constants.NIC_CODE_TO_PFS["10ge2p1x710"], + Constants.NIC_CODE_TO_PFS[nic_code], 1, + "NIC PFs argument should appear once.", in_filename + ) + iface, suite_id, suite_tag = get_iface_and_suite_ids( out_filename ) @@ -435,6 +442,7 @@ def write_reconf_files(in_filename, in_prolog, kwargs_list): tmp_filename ) for driver in Constants.NIC_NAME_TO_DRIVER[nic_name]: + nic_code = Constants.NIC_NAME_TO_CODE[nic_name] out_filename = replace_defensively( tmp_filename, old_suite_id, Constants.NIC_DRIVER_TO_SUITE_PREFIX[driver] + old_suite_id, @@ -459,6 +467,12 @@ def write_reconf_files(in_filename, in_prolog, kwargs_list): Constants.NIC_DRIVER_TO_VFS[driver], 1, u"NIC VFs argument should appear once.", in_filename ) + out_prolog = replace_defensively( + out_prolog, Constants.NIC_CODE_TO_PFS["10ge2p1x710"], + Constants.NIC_CODE_TO_PFS[nic_code], 1, + "NIC PFs argument should appear once.", in_filename + ) + iface, suite_id, suite_tag = get_iface_and_suite_ids(out_filename) out_prolog = replace_defensively( out_prolog, old_suite_tag, suite_tag, 1, @@ -502,6 +516,7 @@ def write_tcp_files(in_filename, in_prolog, kwargs_list): tmp_filename ) for driver in Constants.NIC_NAME_TO_DRIVER[nic_name]: + nic_code = Constants.NIC_NAME_TO_CODE[nic_name] out_filename = replace_defensively( tmp_filename, old_suite_id, Constants.NIC_DRIVER_TO_SUITE_PREFIX[driver] + old_suite_id, @@ -526,6 +541,12 @@ def write_tcp_files(in_filename, in_prolog, kwargs_list): Constants.NIC_DRIVER_TO_VFS[driver], 1, u"NIC VFs argument should appear once.", in_filename ) + out_prolog = replace_defensively( + out_prolog, Constants.NIC_CODE_TO_PFS["10ge2p1x710"], + Constants.NIC_CODE_TO_PFS[nic_code], 1, + "NIC PFs argument should appear once.", in_filename + ) + iface, suite_id, suite_tag = get_iface_and_suite_ids(out_filename) out_prolog = replace_defensively( out_prolog, old_suite_tag, suite_tag, 1, @@ -657,6 +678,7 @@ def write_device_files(in_filename, in_prolog, kwargs_list): tmp2_filename ) for driver in Constants.NIC_NAME_TO_DRIVER[nic_name]: + nic_code = Constants.NIC_NAME_TO_CODE[nic_name] out_filename = replace_defensively( tmp2_filename, old_suite_id, Constants.NIC_DRIVER_TO_SUITE_PREFIX[driver] + old_suite_id, @@ -681,6 +703,12 @@ def write_device_files(in_filename, in_prolog, kwargs_list): Constants.NIC_DRIVER_TO_VFS[driver], 1, u"NIC VFs argument should appear once.", in_filename ) + out_prolog = replace_defensively( + out_prolog, Constants.NIC_CODE_TO_PFS["10ge2p1x710"], + Constants.NIC_CODE_TO_PFS[nic_code], 1, + "NIC PFs argument should appear once.", in_filename + ) + iface, suite_id, suite_tag = get_iface_and_suite_ids( out_filename ) diff --git a/resources/libraries/robot/shared/suite_setup.robot b/resources/libraries/robot/shared/suite_setup.robot index 64dd72e4e2..5c92ad9f52 100644 --- a/resources/libraries/robot/shared/suite_setup.robot +++ b/resources/libraries/robot/shared/suite_setup.robot @@ -241,7 +241,7 @@ | | ${type} = | Get TG Type | ${nodes}[TG] | | ${version} = | Get TG Version | ${nodes}[TG] | | Export TG Type And Version | ${type} | ${version} -| | Initialize traffic generator | ${osi_layer} +| | Initialize traffic generator | ${osi_layer} | ${nic_pfs} | Additional Suite Setup Action For performance_tg_nic | | [Documentation] @@ -252,7 +252,7 @@ | | ${version} = | Get TG Version | ${nodes}[TG] | | Export Dut Type And Version | ${type} | ${version} | | Export TG Type And Version | ${type} | ${version} -| | Initialize traffic generator | ${osi_layer} +| | Initialize traffic generator | ${osi_layer} | ${nic_pfs} | Additional Suite Setup Action For iPerf3 | | [Documentation] diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot index 96cdeabd1e..b7c0c6040d 100644 --- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot @@ -64,7 +64,7 @@ | ${overhead}= | ${0} | ${rts_per_flow}= | ${100000} # Traffic profile -| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow} +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow}-${nic_pfs}p *** Keywords *** | Local Template @@ -91,7 +91,7 @@ | | When Initialize layer driver | ${nic_driver} | | And Initialize layer interface | | And Set interfaces in path up -| | And Initialize IPv4 Forwarding | count=${rts_per_flow} +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} | | Then Find NDR and PDR intervals using optimized search *** Test Cases *** diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot index 887f8cd67d..3ea9a74e1d 100644 --- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot @@ -64,7 +64,7 @@ | ${overhead}= | ${0} | ${rts_per_flow}= | ${100000} # Traffic profile -| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow} +| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow}-${nic_pfs}p *** Keywords *** | Local Template @@ -91,7 +91,7 @@ | | When Initialize layer driver | ${nic_driver} | | And Initialize layer interface | | And Set interfaces in path up -| | And Initialize IPv4 Forwarding | count=${rts_per_flow} +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} | | Then Find NDR and PDR intervals using optimized search *** Test Cases *** diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot index 6bab73c280..a42e23c760 100644 --- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot @@ -64,7 +64,7 @@ | ${overhead}= | ${0} | ${rts_per_flow}= | ${10000} # Traffic profile -| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow} +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow}-${nic_pfs}p *** Keywords *** | Local Template @@ -91,7 +91,7 @@ | | When Initialize layer driver | ${nic_driver} | | And Initialize layer interface | | And Set interfaces in path up -| | And Initialize IPv4 Forwarding | count=${rts_per_flow} +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} | | Then Find NDR and PDR intervals using optimized search *** Test Cases *** diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot index 974c1cc77c..11c3d5a2a0 100644 --- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot @@ -64,7 +64,7 @@ | ${overhead}= | ${0} | ${rts_per_flow}= | ${10000} # Traffic profile -| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow} +| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow}-${nic_pfs}p *** Keywords *** | Local Template @@ -91,7 +91,7 @@ | | When Initialize layer driver | ${nic_driver} | | And Initialize layer interface | | And Set interfaces in path up -| | And Initialize IPv4 Forwarding | count=${rts_per_flow} +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} | | Then Find NDR and PDR intervals using optimized search *** Test Cases *** diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot index 8ac8f54da9..1af8be3dfe 100644 --- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot @@ -64,7 +64,7 @@ | ${overhead}= | ${0} | ${rts_per_flow}= | ${1000000} # Traffic profile -| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow} +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow}-${nic_pfs}p *** Keywords *** | Local Template @@ -91,7 +91,7 @@ | | When Initialize layer driver | ${nic_driver} | | And Initialize layer interface | | And Set interfaces in path up -| | And Initialize IPv4 Forwarding | count=${rts_per_flow} +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} | | Then Find NDR and PDR intervals using optimized search *** Test Cases *** diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot index ddb5b75222..89db882343 100644 --- a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot @@ -64,7 +64,7 @@ | ${overhead}= | ${0} | ${rts_per_flow}= | ${1000000} # Traffic profile -| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow} +| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow}-${nic_pfs}p *** Keywords *** | Local Template @@ -91,7 +91,7 @@ | | When Initialize layer driver | ${nic_driver} | | And Initialize layer interface | | And Set interfaces in path up -| | And Initialize IPv4 Forwarding | count=${rts_per_flow} +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} | | Then Find NDR and PDR intervals using optimized search *** Test Cases *** diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale600k-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale600k-ndrpdr.robot new file mode 100644 index 0000000000..8a798ea260 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale600k-ndrpdr.robot @@ -0,0 +1,144 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR +| ... | NIC_Intel-X710 | ETH | IP4FWD | SCALE | FIB_600K | DRV_VFIO_PCI +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 +| ... | ethip4-ip4scale600k +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | **RFC2544: Pkt throughput 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 6x100k static IPv4 /32 route entries. DUT1 and DUT2 are \ +| ... | tested with ${nic_name}. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and 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, 100k 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 *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${0} +| ${rts_per_flow}= | ${100000} +# Traffic profile +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow}-${nic_pfs}p + +*** Keywords *** +| Local Template +| | +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPv4 routing config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Set interfaces in path up +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4-ip4scale600k-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4-ip4scale600k-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4-ip4scale600k-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4-ip4scale600k-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4-ip4scale600k-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4-ip4scale600k-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4-ip4scale600k-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4-ip4scale600k-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4-ip4scale600k-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4-ip4scale600k-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4-ip4scale600k-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4-ip4scale600k-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale600k-rnd-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale600k-rnd-ndrpdr.robot new file mode 100644 index 0000000000..0cba4c1ffc --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale600k-rnd-ndrpdr.robot @@ -0,0 +1,144 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR +| ... | NIC_Intel-X710 | ETH | IP4FWD | SCALE | FIB_600K | DRV_VFIO_PCI +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 +| ... | ethip4-ip4scale600k-rnd +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | **RFC2544: Pkt throughput 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 6x100k static IPv4 /32 route entries. DUT1 and DUT2 are \ +| ... | tested with ${nic_name}. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and 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 2 randomized L3 flow-groups (flow-group per direction, 100k \ +| ... | 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 *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${0} +| ${rts_per_flow}= | ${100000} +# Traffic profile +| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow}-${nic_pfs}p + +*** Keywords *** +| Local Template +| | +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPv4 routing config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Set interfaces in path up +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4-ip4scale600k-rnd-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4-ip4scale600k-rnd-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4-ip4scale600k-rnd-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4-ip4scale600k-rnd-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4-ip4scale600k-rnd-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4-ip4scale600k-rnd-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4-ip4scale600k-rnd-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4-ip4scale600k-rnd-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4-ip4scale600k-rnd-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4-ip4scale600k-rnd-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4-ip4scale600k-rnd-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4-ip4scale600k-rnd-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale60k-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale60k-ndrpdr.robot new file mode 100644 index 0000000000..69062b9520 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale60k-ndrpdr.robot @@ -0,0 +1,144 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR +| ... | NIC_Intel-X710 | ETH | IP4FWD | SCALE | FIB_60K | DRV_VFIO_PCI +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 +| ... | ethip4-ip4scale60k +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | **RFC2544: Pkt throughput 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 6x10k static IPv4 /32 route entries. DUT1 and DUT2 are \ +| ... | tested with ${nic_name}. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and 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, 10k 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 *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${0} +| ${rts_per_flow}= | ${10000} +# Traffic profile +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow}-${nic_pfs}p + +*** Keywords *** +| Local Template +| | +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPv4 routing config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Set interfaces in path up +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4-ip4scale60k-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4-ip4scale60k-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4-ip4scale60k-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4-ip4scale60k-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4-ip4scale60k-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4-ip4scale60k-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4-ip4scale60k-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4-ip4scale60k-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4-ip4scale60k-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4-ip4scale60k-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4-ip4scale60k-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4-ip4scale60k-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale60k-rnd-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale60k-rnd-ndrpdr.robot new file mode 100644 index 0000000000..ce3ec3c152 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale60k-rnd-ndrpdr.robot @@ -0,0 +1,144 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR +| ... | NIC_Intel-X710 | ETH | IP4FWD | SCALE | FIB_60k | DRV_VFIO_PCI +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | IP4_RND +| ... | ethip4-ip4scale60k-rnd +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | **RFC2544: Pkt throughput 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 2x10k static IPv4 /32 route entries. DUT1 and DUT2 are \ +| ... | tested with ${nic_name}. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and 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 2 randomized L3 flow-groups (flow-group per direction, 10k \ +| ... | 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 *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${0} +| ${rts_per_flow}= | ${10000} +# Traffic profile +| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow}-${nic_pfs}p + +*** Keywords *** +| Local Template +| | +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPv4 routing config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Set interfaces in path up +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4-ip4scale60k-rnd-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4-ip4scale60k-rnd-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4-ip4scale60k-rnd-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4-ip4scale60k-rnd-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4-ip4scale60k-rnd-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4-ip4scale60k-rnd-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4-ip4scale60k-rnd-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4-ip4scale60k-rnd-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4-ip4scale60k-rnd-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4-ip4scale60k-rnd-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4-ip4scale60k-rnd-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4-ip4scale60k-rnd-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale6m-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale6m-ndrpdr.robot new file mode 100644 index 0000000000..0d4bc26e19 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale6m-ndrpdr.robot @@ -0,0 +1,144 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR +| ... | NIC_Intel-X710 | ETH | IP4FWD | SCALE | FIB_6M | DRV_VFIO_PCI +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 +| ... | ethip4-ip4scale6m +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | **RFC2544: Pkt throughput 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 2x1M static IPv4 /32 route entries. DUT1 and DUT2 are \ +| ... | tested with ${nic_name}. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and 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, 1M 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 *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${0} +| ${rts_per_flow}= | ${1000000} +# Traffic profile +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow}-${nic_pfs}p + +*** Keywords *** +| Local Template +| | +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPv4 routing config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Set interfaces in path up +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4-ip4scale6m-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4-ip4scale6m-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4-ip4scale6m-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4-ip4scale6m-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4-ip4scale6m-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4-ip4scale6m-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4-ip4scale6m-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4-ip4scale6m-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4-ip4scale6m-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4-ip4scale6m-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4-ip4scale6m-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4-ip4scale6m-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale6m-rnd-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale6m-rnd-ndrpdr.robot new file mode 100644 index 0000000000..fa51eaa827 --- /dev/null +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale6m-rnd-ndrpdr.robot @@ -0,0 +1,144 @@ +# Copyright (c) 2023 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/shared/default.robot +| +| Force Tags | 3_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR +| ... | NIC_Intel-X710 | ETH | IP4FWD | SCALE | FIB_6M | DRV_VFIO_PCI +| ... | RXQ_SIZE_0 | TXQ_SIZE_0 | IP4_RND +| ... | ethip4-ip4scale6m-rnd +| +| Suite Setup | Setup suite topology interfaces | performance +| Suite Teardown | Tear down suite | performance +| Test Setup | Setup test | performance +| Test Teardown | Tear down test | performance +| +| Test Template | Local Template +| +| Documentation | **RFC2544: Pkt throughput 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 2x1M static IPv4 /32 route entries. DUT1 and DUT2 are \ +| ... | tested with ${nic_name}. +| ... | +| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ +| ... | Drop Rate) with zero packet loss tolerance and 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 2 randomized L3 flow-groups (flow-group per direction, 1M \ +| ... | 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 *** +| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so +| ${crypto_type}= | ${None} +| ${nic_name}= | Intel-X710 +| ${nic_driver}= | vfio-pci +| ${nic_rxq_size}= | 0 +| ${nic_txq_size}= | 0 +| ${nic_pfs}= | 2 +| ${nic_vfs}= | 0 +| ${osi_layer}= | L3 +| ${overhead}= | ${0} +| ${rts_per_flow}= | ${1000000} +# Traffic profile +| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow}-${nic_pfs}p + +*** Keywords *** +| Local Template +| | +| | [Documentation] +| | ... | - **[Cfg]** DUT runs IPv4 routing config. \ +| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. +| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. +| | +| | ... | *Arguments:* +| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None} +| | +| | Set Test Variable | \${frame_size} +| | +| | Given Set Max Rate And Jumbo +| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} +| | And Pre-initialize layer driver | ${nic_driver} +| | And Apply startup configuration on all VPP DUTs +| | When Initialize layer driver | ${nic_driver} +| | And Initialize layer interface +| | And Set interfaces in path up +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} +| | Then Find NDR and PDR intervals using optimized search + +*** Test Cases *** +| 64B-1c-ethip4-ip4scale6m-rnd-ndrpdr +| | [Tags] | 64B | 1C +| | frame_size=${64} | phy_cores=${1} + +| 64B-2c-ethip4-ip4scale6m-rnd-ndrpdr +| | [Tags] | 64B | 2C +| | frame_size=${64} | phy_cores=${2} + +| 64B-4c-ethip4-ip4scale6m-rnd-ndrpdr +| | [Tags] | 64B | 4C +| | frame_size=${64} | phy_cores=${4} + +| 1518B-1c-ethip4-ip4scale6m-rnd-ndrpdr +| | [Tags] | 1518B | 1C +| | frame_size=${1518} | phy_cores=${1} + +| 1518B-2c-ethip4-ip4scale6m-rnd-ndrpdr +| | [Tags] | 1518B | 2C +| | frame_size=${1518} | phy_cores=${2} + +| 1518B-4c-ethip4-ip4scale6m-rnd-ndrpdr +| | [Tags] | 1518B | 4C +| | frame_size=${1518} | phy_cores=${4} + +| 9000B-1c-ethip4-ip4scale6m-rnd-ndrpdr +| | [Tags] | 9000B | 1C +| | frame_size=${9000} | phy_cores=${1} + +| 9000B-2c-ethip4-ip4scale6m-rnd-ndrpdr +| | [Tags] | 9000B | 2C +| | frame_size=${9000} | phy_cores=${2} + +| 9000B-4c-ethip4-ip4scale6m-rnd-ndrpdr +| | [Tags] | 9000B | 4C +| | frame_size=${9000} | phy_cores=${4} + +| IMIX-1c-ethip4-ip4scale6m-rnd-ndrpdr +| | [Tags] | IMIX | 1C +| | frame_size=IMIX_v4_1 | phy_cores=${1} + +| IMIX-2c-ethip4-ip4scale6m-rnd-ndrpdr +| | [Tags] | IMIX | 2C +| | frame_size=IMIX_v4_1 | phy_cores=${2} + +| IMIX-4c-ethip4-ip4scale6m-rnd-ndrpdr +| | [Tags] | IMIX | 4C +| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot index c614b90e3a..5571caed21 100644 --- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot +++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-ndrpdr.robot @@ -64,7 +64,7 @@ | ${overhead}= | ${0} | ${rts_per_flow}= | ${100000} # Traffic profile -| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow} +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow}-${nic_pfs}p *** Keywords *** | Local Template @@ -91,7 +91,7 @@ | | When Initialize layer driver | ${nic_driver} | | And Initialize layer interface | | And Set interfaces in path up -| | And Initialize IPv4 Forwarding | count=${rts_per_flow} +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} | | Then Find NDR and PDR intervals using optimized search *** Test Cases *** diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot index 3de3769cfb..c708ec1626 100644 --- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot +++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale200k-rnd-ndrpdr.robot @@ -65,7 +65,7 @@ | ${overhead}= | ${0} | ${rts_per_flow}= | ${100000} # Traffic profile -| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow} +| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow}-${nic_pfs}p *** Keywords *** | Local Template @@ -92,7 +92,7 @@ | | When Initialize layer driver | ${nic_driver} | | And Initialize layer interface | | And Set interfaces in path up -| | And Initialize IPv4 Forwarding | count=${rts_per_flow} +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} | | Then Find NDR and PDR intervals using optimized search *** Test Cases *** diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot index 0bab0dcaa8..3a3d03d2af 100644 --- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot +++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-ndrpdr.robot @@ -64,7 +64,7 @@ | ${overhead}= | ${0} | ${rts_per_flow}= | ${10000} # Traffic profile -| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow} +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow}-${nic_pfs}p *** Keywords *** | Local Template @@ -91,7 +91,7 @@ | | When Initialize layer driver | ${nic_driver} | | And Initialize layer interface | | And Set interfaces in path up -| | And Initialize IPv4 Forwarding | count=${rts_per_flow} +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} | | Then Find NDR and PDR intervals using optimized search *** Test Cases *** diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot index e1760a6700..f1a5535094 100644 --- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot +++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale20k-rnd-ndrpdr.robot @@ -65,7 +65,7 @@ | ${overhead}= | ${0} | ${rts_per_flow}= | ${10000} # Traffic profile -| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow} +| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow}-${nic_pfs}p *** Keywords *** | Local Template @@ -92,7 +92,7 @@ | | When Initialize layer driver | ${nic_driver} | | And Initialize layer interface | | And Set interfaces in path up -| | And Initialize IPv4 Forwarding | count=${rts_per_flow} +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} | | Then Find NDR and PDR intervals using optimized search *** Test Cases *** diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot index 051f128f67..1c2af5fab3 100644 --- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot +++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-ndrpdr.robot @@ -64,7 +64,7 @@ | ${overhead}= | ${0} | ${rts_per_flow}= | ${1000000} # Traffic profile -| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow} +| ${traffic_profile}= | trex-stl-ethip4-ip4dst${rts_per_flow}-${nic_pfs}p *** Keywords *** | Local Template @@ -91,7 +91,7 @@ | | When Initialize layer driver | ${nic_driver} | | And Initialize layer interface | | And Set interfaces in path up -| | And Initialize IPv4 Forwarding | count=${rts_per_flow} +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} | | Then Find NDR and PDR intervals using optimized search *** Test Cases *** diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot index ddaa85828d..619191608c 100644 --- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot +++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4-ip4scale2m-rnd-ndrpdr.robot @@ -65,7 +65,7 @@ | ${overhead}= | ${0} | ${rts_per_flow}= | ${1000000} # Traffic profile -| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow} +| ${traffic_profile}= | trex-stl-ethip4-ip4dst-rnd${rts_per_flow}-${nic_pfs}p *** Keywords *** | Local Template @@ -92,7 +92,7 @@ | | When Initialize layer driver | ${nic_driver} | | And Initialize layer interface | | And Set interfaces in path up -| | And Initialize IPv4 Forwarding | count=${rts_per_flow} +| | And Initialize IPv4 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs} | | Then Find NDR and PDR intervals using optimized search *** Test Cases *** diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot b/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot deleted file mode 100644 index 4889a6754a..0000000000 --- a/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot +++ /dev/null @@ -1,166 +0,0 @@ -# Copyright (c) 2023 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/shared/default.robot -| -| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR -| ... | NIC_Intel-X710 | DOT1Q | L2BDMACLRN | BASE | VHOST | 1VM -| ... | VHOST_1024 | LBOND | LBOND_VPP | LBOND_MODE_LACP | LBOND_LB_L34 -| ... | LBOND_2L | VM_TESTPMD | DRV_VFIO_PCI -| ... | RXQ_SIZE_0 | TXQ_SIZE_0 -| ... | 2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm -| -| Suite Setup | Setup suite topology interfaces | performance -| Suite Teardown | Tear down suite | performance -| Test Setup | Setup test | performance -| Test Teardown | Tear down test | performance | vhost -| -| Test Template | Local Template -| -| Documentation | **RFC2544: Pkt throughput L2BD test cases with vhost and vpp \ -| ... | link bonding** -| ... | -| ... | - **[Top] Network Topologies:** TG-DUT1=DUT2-TG 3-node circular \ -| ... | topology with single links between TG and DUT nodes and double link \ -| ... | between DUT nodes. -| ... | -| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 switching of IPv4. \ -| ... | 802.1q tagging is applied on link between DUT1 and DUT2. -| ... | -| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with VPP \ -| ... | link bonding (mode LACP, transmit policy l34) on link between DUT1 and \ -| ... | DUT2 and L2 bridge-domain with MAC learning enabled. Qemu VNFs are \ -| ... | connected to VPP via vhost-user interfaces. Guest is running testpmd \ -| ... | interconnecting vhost-user interfaces, rxd/txd=1024. DUT1/DUT2 is \ -| ... | tested with ${nic_name}. -| ... | -| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ -| ... | Drop Rate) with zero packet loss tolerance and 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, 254 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 *** -| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | lacp_plugin.so -| ... | vhost_plugin.so -| ${crypto_type}= | ${None} -| ${nic_name}= | Intel-X710 -| ${nic_driver}= | vfio-pci -| ${nic_rxq_size}= | 0 -| ${nic_txq_size}= | 0 -| ${nic_pfs}= | 4 -| ${nic_vfs}= | 0 -| ${osi_layer}= | L2 -| ${overhead}= | ${4} -| ${subid}= | 10 -| ${tag_rewrite}= | pop-1 -| ${nf_dtcr}= | ${1} -| ${nf_dtc}= | ${1} -| ${nf_chains}= | ${1} -| ${nf_nodes}= | ${1} -# Link bonding config -| ${bond_mode}= | lacp -| ${lb_mode}= | l34 -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 -# Traffic profile: -| ${traffic_profile}= | trex-stl-ethip4-ip4src254 - -*** Keywords *** -| Local Template -| | [Documentation] -| | ... | - **[Cfg]** DUT runs L2BD switching config. \ -| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. -| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. -| | -| | ... | *Arguments:* -| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None} -| | -| | Set Test Variable | \${frame_size} -| | Set Test Variable | ${vlan_strip_off} | ${TRUE} -| | -| | Given Set Max Rate And Jumbo -| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} -| | And Pre-initialize layer driver | ${nic_driver} -| | And Apply startup configuration on all VPP DUTs -| | When Initialize layer driver | ${nic_driver} -| | And Initialize L2 bridge domains with Vhost-User and VLAN with VPP link bonding in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${subid} -| | ... | ${tag_rewrite} | ${bond_mode} | ${lb_mode} -| | And Configure chains of NFs connected via vhost-user -| | ... | nf_chains=${nf_chains} | nf_nodes=${nf_nodes} | jumbo=${jumbo} -| | ... | use_tuned_cfs=${False} | auto_scale=${True} | vnf=testpmd_io -| | Then Find NDR and PDR intervals using optimized search - -*** Test Cases *** -| 64B-1c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 64B | 1C -| | frame_size=${64} | phy_cores=${1} - -| 64B-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 64B | 2C -| | frame_size=${64} | phy_cores=${2} - -| 64B-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 64B | 4C -| | frame_size=${64} | phy_cores=${4} - -| 1518B-1c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 1518B | 1C -| | frame_size=${1518} | phy_cores=${1} - -| 1518B-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 1518B | 2C -| | frame_size=${1518} | phy_cores=${2} - -| 1518B-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 1518B | 4C -| | frame_size=${1518} | phy_cores=${4} - -| 9000B-1c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 9000B | 1C -| | frame_size=${9000} | phy_cores=${1} - -| 9000B-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 9000B | 2C -| | frame_size=${9000} | phy_cores=${2} - -| 9000B-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 9000B | 4C -| | frame_size=${9000} | phy_cores=${4} - -| IMIX-1c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | IMIX | 1C -| | frame_size=IMIX_v4_1 | phy_cores=${1} - -| IMIX-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | IMIX | 2C -| | frame_size=IMIX_v4_1 | phy_cores=${2} - -| IMIX-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | IMIX | 4C -| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot b/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot deleted file mode 100644 index b12c045548..0000000000 --- a/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot +++ /dev/null @@ -1,167 +0,0 @@ -# Copyright (c) 2023 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/shared/default.robot -| -| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR -| ... | NIC_Intel-X710 | DOT1Q | L2BDMACLRN | BASE | VHOST | 1VM -| ... | VHOST_1024 | LBOND | LBOND_VPP | LBOND_MODE_LACP | LBOND_LB_L34 -| ... | LBOND_2L | NF_VPPL2XC | DRV_VFIO_PCI -| ... | RXQ_SIZE_0 | TXQ_SIZE_0 -| ... | 2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc -| -| Suite Setup | Setup suite topology interfaces | performance -| Suite Teardown | Tear down suite | performance -| Test Setup | Setup test | performance -| Test Teardown | Tear down test | performance | vhost -| -| Test Template | Local Template -| -| Documentation | **RFC2544: Pkt throughput L2BD test cases with vhost and vpp \ -| ... | link bonding** -| ... | -| ... | - **[Top] Network Topologies:** TG-DUT1=DUT2-TG 3-node circular \ -| ... | topology with single links between TG and DUT nodes and double link \ -| ... | between DUT nodes. -| ... | -| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 switching of IPv4. \ -| ... | 802.1q tagging is applied on link between DUT1 and DUT2. -| ... | -| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with VPP \ -| ... | link bonding (mode LACP, transmit policy l34) on link between DUT1 and \ -| ... | DUT2 and L2 bridge-domain with MAC learning enabled. Qemu VNFs are \ -| ... | connected to VPP via vhost-user interfaces. Guest is running VPP l2xc \ -| ... | interconnecting vhost-user interfaces, rxd/txd=1024. DUT1/DUT2 is \ -| ... | tested with ${nic_name}. -| ... | -| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ -| ... | Drop Rate) with zero packet loss tolerance and 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, 254 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 *** -| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | lacp_plugin.so -| ... | vhost_plugin.so -| ${crypto_type}= | ${None} -| ${nic_name}= | Intel-X710 -| ${nic_driver}= | vfio-pci -| ${nic_rxq_size}= | 0 -| ${nic_txq_size}= | 0 -| ${nic_pfs}= | 4 -| ${nic_vfs}= | 0 -| ${osi_layer}= | L2 -| ${overhead}= | ${4} -| ${subid}= | 10 -| ${tag_rewrite}= | pop-1 -| ${nf_dtcr}= | ${1} -| ${nf_dtc}= | ${1} -| ${nf_chains}= | ${1} -| ${nf_nodes}= | ${1} -# Link bonding config -| ${bond_mode}= | lacp -| ${lb_mode}= | l34 -| ${bd_id1}= | 1 -| ${bd_id2}= | 2 -# Traffic profile: -| ${traffic_profile}= | trex-stl-ethip4-ip4src254 - -*** Keywords *** -| Local Template -| | [Documentation] -| | ... | - **[Cfg]** DUT runs L2BD switching config. \ -| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. -| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. -| | -| | ... | *Arguments:* -| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None} -| | -| | Set Test Variable | \${frame_size} -| | Set Test Variable | ${vlan_strip_off} | ${TRUE} -| | -| | Given Set Max Rate And Jumbo -| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} -| | And Pre-initialize layer driver | ${nic_driver} -| | And Apply startup configuration on all VPP DUTs -| | When Initialize layer driver | ${nic_driver} -| | And Initialize L2 bridge domains with Vhost-User and VLAN with VPP link bonding in a 3-node circular topology -| | ... | ${bd_id1} | ${bd_id2} | ${subid} -| | ... | ${tag_rewrite} | ${bond_mode} | ${lb_mode} -| | And Configure chains of NFs connected via vhost-user -| | ... | nf_chains=${nf_chains} | nf_nodes=${nf_nodes} | jumbo=${jumbo} -| | ... | use_tuned_cfs=${False} | auto_scale=${True} -| | ... | vnf=vppl2xc_2vhostvr1024 -| | Then Find NDR and PDR intervals using optimized search - -*** Test Cases *** -| 64B-1c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 64B | 1C -| | frame_size=${64} | phy_cores=${1} - -| 64B-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 64B | 2C -| | frame_size=${64} | phy_cores=${2} - -| 64B-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 64B | 4C -| | frame_size=${64} | phy_cores=${4} - -| 1518B-1c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 1518B | 1C -| | frame_size=${1518} | phy_cores=${1} - -| 1518B-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 1518B | 2C -| | frame_size=${1518} | phy_cores=${2} - -| 1518B-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 1518B | 4C -| | frame_size=${1518} | phy_cores=${4} - -| 9000B-1c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 9000B | 1C -| | frame_size=${9000} | phy_cores=${1} - -| 9000B-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 9000B | 2C -| | frame_size=${9000} | phy_cores=${2} - -| 9000B-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 9000B | 4C -| | frame_size=${9000} | phy_cores=${4} - -| IMIX-1c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | IMIX | 1C -| | frame_size=IMIX_v4_1 | phy_cores=${1} - -| IMIX-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | IMIX | 2C -| | frame_size=IMIX_v4_1 | phy_cores=${2} - -| IMIX-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | IMIX | 4C -| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot b/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot deleted file mode 100644 index ee65ca4828..0000000000 --- a/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot +++ /dev/null @@ -1,163 +0,0 @@ -# Copyright (c) 2023 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/shared/default.robot -| -| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR -| ... | NIC_Intel-X710 | DOT1Q | L2XCFWD | BASE | VHOST | 1VM -| ... | VHOST_1024 | LBOND | LBOND_VPP | LBOND_MODE_LACP | LBOND_LB_L34 -| ... | LBOND_2L | NF_TESTPMD | DRV_VFIO_PCI -| ... | RXQ_SIZE_0 | TXQ_SIZE_0 -| ... | 2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm -| -| Suite Setup | Setup suite topology interfaces | performance -| Suite Teardown | Tear down suite | performance -| Test Setup | Setup test | performance -| Test Teardown | Tear down test | performance | vhost -| -| Test Template | Local Template -| -| Documentation | **RFC2544: Pkt throughput L2XC test cases with vhost and vpp \ -| ... | link bonding** -| ... | -| ... | - **[Top] Network Topologies:** TG-DUT1=DUT2-TG 3-node circular \ -| ... | topology with single links between TG and DUT nodes and double link \ -| ... | between DUT nodes. -| ... | -| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 cross connect. \ -| ... | 802.1q tagging is applied on link between DUT1 and DUT2. -| ... | -| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with VPP \ -| ... | link bonding (mode LACP, transmit policy l34) on link between DUT1 and \ -| ... | DUT2 and L2 cross- connect. Qemu VNFs are \ -| ... | connected to VPP via vhost-user interfaces. Guest is running testpmd \ -| ... | interconnecting vhost-user interfaces, rxd/txd=1024. DUT1/DUT2 is \ -| ... | tested with ${nic_name}. -| ... | -| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ -| ... | Drop Rate) with zero packet loss tolerance and 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, 254 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 *** -| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | lacp_plugin.so -| ... | vhost_plugin.so -| ${crypto_type}= | ${None} -| ${nic_name}= | Intel-X710 -| ${nic_driver}= | vfio-pci -| ${nic_rxq_size}= | 0 -| ${nic_txq_size}= | 0 -| ${nic_pfs}= | 4 -| ${nic_vfs}= | 0 -| ${osi_layer}= | L2 -| ${overhead}= | ${4} -| ${subid}= | 10 -| ${tag_rewrite}= | pop-1 -| ${nf_dtcr}= | ${1} -| ${nf_dtc}= | ${1} -| ${nf_chains}= | ${1} -| ${nf_nodes}= | ${1} -# Link bonding config -| ${bond_mode}= | lacp -| ${lb_mode}= | l34 -# Traffic profile: -| ${traffic_profile}= | trex-stl-ethip4-ip4src254 - -*** Keywords *** -| Local Template -| | [Documentation] -| | ... | - **[Cfg]** DUT runs L2XC switching config. \ -| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. -| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. -| | -| | ... | *Arguments:* -| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None} -| | -| | Set Test Variable | \${frame_size} -| | Set Test Variable | ${vlan_strip_off} | ${TRUE} -| | -| | Given Set Max Rate And Jumbo -| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} -| | And Pre-initialize layer driver | ${nic_driver} -| | And Apply startup configuration on all VPP DUTs -| | When Initialize layer driver | ${nic_driver} -| | And Initialize L2 xconnect with Vhost-User and VLAN with VPP link bonding in 3-node circular topology -| | ... | ${subid} | ${tag_rewrite} | ${bond_mode} | ${lb_mode} -| | And Configure chains of NFs connected via vhost-user -| | ... | nf_chains=${nf_chains} | nf_nodes=${nf_nodes} | jumbo=${jumbo} -| | ... | use_tuned_cfs=${False} | auto_scale=${True} | vnf=testpmd_io -| | Then Find NDR and PDR intervals using optimized search - -*** Test Cases *** -| 64B-1c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 64B | 1C -| | frame_size=${64} | phy_cores=${1} - -| 64B-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 64B | 2C -| | frame_size=${64} | phy_cores=${2} - -| 64B-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 64B | 4C -| | frame_size=${64} | phy_cores=${4} - -| 1518B-1c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 1518B | 1C -| | frame_size=${1518} | phy_cores=${1} - -| 1518B-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 1518B | 2C -| | frame_size=${1518} | phy_cores=${2} - -| 1518B-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 1518B | 4C -| | frame_size=${1518} | phy_cores=${4} - -| 9000B-1c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 9000B | 1C -| | frame_size=${9000} | phy_cores=${1} - -| 9000B-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 9000B | 2C -| | frame_size=${9000} | phy_cores=${2} - -| 9000B-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | 9000B | 4C -| | frame_size=${9000} | phy_cores=${4} - -| IMIX-1c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | IMIX | 1C -| | frame_size=IMIX_v4_1 | phy_cores=${1} - -| IMIX-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | IMIX | 2C -| | frame_size=IMIX_v4_1 | phy_cores=${2} - -| IMIX-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr -| | [Tags] | IMIX | 4C -| | frame_size=IMIX_v4_1 | phy_cores=${4} diff --git a/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot b/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot deleted file mode 100644 index a39abf5089..0000000000 --- a/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot +++ /dev/null @@ -1,164 +0,0 @@ -# Copyright (c) 2023 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -*** Settings *** -| Resource | resources/libraries/robot/shared/default.robot -| -| Force Tags | 3_NODE_DOUBLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR -| ... | NIC_Intel-X710 | DOT1Q | L2XCFWD | BASE | VHOST |1VM -| ... | VHOST_1024 | LBOND | LBOND_VPP | LBOND_MODE_LACP | LBOND_LB_L34 -| ... | LBOND_2L | NF_VPPL2XC | DRV_VFIO_PCI -| ... | RXQ_SIZE_0 | TXQ_SIZE_0 -| ... | 2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc -| -| Suite Setup | Setup suite topology interfaces | performance -| Suite Teardown | Tear down suite | performance -| Test Setup | Setup test | performance -| Test Teardown | Tear down test | performance | vhost -| -| Test Template | Local Template -| -| Documentation | **RFC2544: Pkt throughput L2XC test cases with vhost and vpp \ -| ... | link bonding** -| ... | -| ... | - **[Top] Network Topologies:** TG-DUT1=DUT2-TG 3-node circular \ -| ... | topology with single links between TG and DUT nodes and double link \ -| ... | between DUT nodes. -| ... | -| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 cross connect. \ -| ... | 802.1q tagging is applied on link between DUT1 and DUT2. -| ... | -| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with VPP \ -| ... | link bonding (mode LACP, transmit policy l34) on link between DUT1 and \ -| ... | DUT2 and L2 cross- connect. Qemu VNFs are \ -| ... | connected to VPP via vhost-user interfaces. Guest is running VPP l2xc \ -| ... | interconnecting vhost-user interfaces, rxd/txd=1024. DUT1/DUT2 is \ -| ... | tested with ${nic_name}. -| ... | -| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \ -| ... | Drop Rate) with zero packet loss tolerance and 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, 254 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 *** -| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | lacp_plugin.so -| ... | vhost_plugin.so -| ${crypto_type}= | ${None} -| ${nic_name}= | Intel-X710 -| ${nic_driver}= | vfio-pci -| ${nic_rxq_size}= | 0 -| ${nic_txq_size}= | 0 -| ${nic_pfs}= | 4 -| ${nic_vfs}= | 0 -| ${osi_layer}= | L2 -| ${overhead}= | ${4} -| ${subid}= | 10 -| ${tag_rewrite}= | pop-1 -| ${nf_dtcr}= | ${1} -| ${nf_dtc}= | ${1} -| ${nf_chains}= | ${1} -| ${nf_nodes}= | ${1} -# Link bonding config -| ${bond_mode}= | lacp -| ${lb_mode}= | l34 -# Traffic profile: -| ${traffic_profile}= | trex-stl-ethip4-ip4src254 - -*** Keywords *** -| Local Template -| | [Documentation] -| | ... | - **[Cfg]** DUT runs L2XC switching config. \ -| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads. -| | ... | - **[Ver]** Measure NDR and PDR values using MLRsearch algorithm. -| | -| | ... | *Arguments:* -| | ... | - frame_size - 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] | ${frame_size} | ${phy_cores} | ${rxq}=${None} -| | -| | Set Test Variable | \${frame_size} -| | Set Test Variable | ${vlan_strip_off} | ${TRUE} -| | -| | Given Set Max Rate And Jumbo -| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq} -| | And Pre-initialize layer driver | ${nic_driver} -| | And Apply startup configuration on all VPP DUTs -| | When Initialize layer driver | ${nic_driver} -| | And Initialize L2 xconnect with Vhost-User and VLAN with VPP link bonding in 3-node circular topology -| | ... | ${subid} | ${tag_rewrite} | ${bond_mode} | ${lb_mode} -| | And Configure chains of NFs connected via vhost-user -| | ... | nf_chains=${nf_chains} | nf_nodes=${nf_nodes} | jumbo=${jumbo} -| | ... | use_tuned_cfs=${False} | auto_scale=${True} -| | ... | vnf=vppl2xc_2vhostvr1024 -| | Then Find NDR and PDR intervals using optimized search - -*** Test Cases *** -| 64B-1c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 64B | 1C -| | frame_size=${64} | phy_cores=${1} - -| 64B-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 64B | 2C -| | frame_size=${64} | phy_cores=${2} - -| 64B-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 64B | 4C -| | frame_size=${64} | phy_cores=${4} - -| 1518B-1c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 1518B | 1C -| | frame_size=${1518} | phy_cores=${1} - -| 1518B-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 1518B | 2C -| | frame_size=${1518} | phy_cores=${2} - -| 1518B-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 1518B | 4C -| | frame_size=${1518} | phy_cores=${4} - -| 9000B-1c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 9000B | 1C -| | frame_size=${9000} | phy_cores=${1} - -| 9000B-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 9000B | 2C -| | frame_size=${9000} | phy_cores=${2} - -| 9000B-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | 9000B | 4C -| | frame_size=${9000} | phy_cores=${4} - -| IMIX-1c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | IMIX | 1C -| | frame_size=IMIX_v4_1 | phy_cores=${1} - -| IMIX-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | IMIX | 2C -| | frame_size=IMIX_v4_1 | phy_cores=${2} - -| IMIX-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr -| | [Tags] | IMIX | 4C -| | frame_size=IMIX_v4_1 | phy_cores=${4} -- cgit 1.2.3-korg