From 89cff3cb43f10355022115396a65f491bf3f8404 Mon Sep 17 00:00:00 2001 From: pmikus Date: Thu, 26 Oct 2023 12:34:10 +0000 Subject: [PATCH] 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 ++++++++++++++++ ...0000p3.py => trex-stl-ethip4-ip4dst10000-6p.py} | 1 - .../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 +++++++++++++++++++ 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} | 90 +++++-------- ...ge2p1x710-ethip4-ip4scale600k-rnd-ndrpdr.robot} | 99 ++++++-------- .../10ge2p1x710-ethip4-ip4scale60k-ndrpdr.robot} | 89 +++++-------- ...10ge2p1x710-ethip4-ip4scale60k-rnd-ndrpdr.robot | 144 +++++++++++++++++++++ .../10ge2p1x710-ethip4-ip4scale6m-ndrpdr.robot} | 92 +++++-------- .../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 +- 35 files changed, 1900 insertions(+), 288 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 rename GPL/traffic_profiles/trex/{trex-stl-ethip4-ip4dst10000p3.py => trex-stl-ethip4-ip4dst10000-6p.py} (99%) 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 rename tests/vpp/perf/{vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot => ip4/10ge2p1x710-ethip4-ip4scale600k-ndrpdr.robot} (55%) rename tests/vpp/perf/{vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot => ip4/10ge2p1x710-ethip4-ip4scale600k-rnd-ndrpdr.robot} (50%) rename tests/vpp/perf/{vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot => ip4/10ge2p1x710-ethip4-ip4scale60k-ndrpdr.robot} (56%) create mode 100644 tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale60k-rnd-ndrpdr.robot rename tests/vpp/perf/{vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot => ip4/10ge2p1x710-ethip4-ip4scale6m-ndrpdr.robot} (54%) create mode 100644 tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale6m-rnd-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-ip4dst10000p3.py b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000-6p.py similarity index 99% rename from GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000p3.py rename to GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000-6p.py index 01b6e3c55e..94a47a8bb6 100644 --- a/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000p3.py +++ b/GPL/traffic_profiles/trex/trex-stl-ethip4-ip4dst10000-6p.py @@ -78,7 +78,6 @@ class TrafficStreams(TrafficStreamsScaleClass): "dst_start_ip": "50.0.0.0", "dst_end_ip": "50.0.39.15" } - ] self.pkt_base = [] self.pkt_vm = [] 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/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/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale600k-ndrpdr.robot similarity index 55% rename from tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot rename to tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale600k-ndrpdr.robot index a39abf5089..8a798ea260 100644 --- a/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale600k-ndrpdr.robot @@ -14,35 +14,27 @@ *** 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 +| 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 -| ... | 2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc +| ... | 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 | vhost +| Test Teardown | Tear down test | performance | | Test Template | Local Template | -| Documentation | **RFC2544: Pkt throughput L2XC test cases with vhost and vpp \ -| ... | link bonding** +| Documentation | **RFC2544: Pkt throughput IPv4 routing test cases** | ... | -| ... | - **[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. +| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \ +| ... | topology with single links between nodes. | ... | -| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 cross connect. \ -| ... | 802.1q tagging is applied on link between DUT1 and DUT2. +| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for IPv4 routing. | ... | -| ... | - **[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 \ +| ... | - **[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 \ @@ -52,7 +44,7 @@ | ... | 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 \ +| ... | 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. @@ -60,33 +52,25 @@ | ... | - **[Ref] Applicable standard specifications:** RFC2544. *** Variables *** -| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | lacp_plugin.so -| ... | vhost_plugin.so +| @{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}= | 4 +| ${nic_pfs}= | 2 | ${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 +| ${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 L2XC switching config. \ +| | ... | - **[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. | | @@ -99,66 +83,62 @@ | | [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 +| | 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-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 64B-1c-ethip4-ip4scale600k-ndrpdr | | [Tags] | 64B | 1C | | frame_size=${64} | phy_cores=${1} -| 64B-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 64B-2c-ethip4-ip4scale600k-ndrpdr | | [Tags] | 64B | 2C | | frame_size=${64} | phy_cores=${2} -| 64B-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 64B-4c-ethip4-ip4scale600k-ndrpdr | | [Tags] | 64B | 4C | | frame_size=${64} | phy_cores=${4} -| 1518B-1c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 1518B-1c-ethip4-ip4scale600k-ndrpdr | | [Tags] | 1518B | 1C | | frame_size=${1518} | phy_cores=${1} -| 1518B-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 1518B-2c-ethip4-ip4scale600k-ndrpdr | | [Tags] | 1518B | 2C | | frame_size=${1518} | phy_cores=${2} -| 1518B-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 1518B-4c-ethip4-ip4scale600k-ndrpdr | | [Tags] | 1518B | 4C | | frame_size=${1518} | phy_cores=${4} -| 9000B-1c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 9000B-1c-ethip4-ip4scale600k-ndrpdr | | [Tags] | 9000B | 1C | | frame_size=${9000} | phy_cores=${1} -| 9000B-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 9000B-2c-ethip4-ip4scale600k-ndrpdr | | [Tags] | 9000B | 2C | | frame_size=${9000} | phy_cores=${2} -| 9000B-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 9000B-4c-ethip4-ip4scale600k-ndrpdr | | [Tags] | 9000B | 4C | | frame_size=${9000} | phy_cores=${4} -| IMIX-1c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| IMIX-1c-ethip4-ip4scale600k-ndrpdr | | [Tags] | IMIX | 1C | | frame_size=IMIX_v4_1 | phy_cores=${1} -| IMIX-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| IMIX-2c-ethip4-ip4scale600k-ndrpdr | | [Tags] | IMIX | 2C | | frame_size=IMIX_v4_1 | phy_cores=${2} -| IMIX-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| IMIX-4c-ethip4-ip4scale600k-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/ip4/10ge2p1x710-ethip4-ip4scale600k-rnd-ndrpdr.robot similarity index 50% rename from tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot rename to tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale600k-rnd-ndrpdr.robot index b12c045548..0cba4c1ffc 100644 --- a/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr.robot +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale600k-rnd-ndrpdr.robot @@ -14,35 +14,27 @@ *** 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 +| 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 -| ... | 2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc +| ... | 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 | vhost +| Test Teardown | Tear down test | performance | | Test Template | Local Template | -| Documentation | **RFC2544: Pkt throughput L2BD test cases with vhost and vpp \ -| ... | link bonding** +| Documentation | **RFC2544: Pkt throughput IPv4 routing test cases** | ... | -| ... | - **[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. +| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \ +| ... | topology with single links between nodes. | ... | -| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 switching of IPv4. \ -| ... | 802.1q tagging is applied on link between DUT1 and DUT2. +| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for IPv4 routing. | ... | -| ... | - **[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 \ +| ... | - **[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 \ @@ -52,43 +44,33 @@ | ... | 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. +| ... | 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 | lacp_plugin.so -| ... | vhost_plugin.so +| @{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}= | 4 +| ${nic_pfs}= | 2 | ${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 +| ${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 L2BD switching config. \ +| | ... | - **[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. | | @@ -101,67 +83,62 @@ | | [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 +| | 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-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 64B-1c-ethip4-ip4scale600k-rnd-ndrpdr | | [Tags] | 64B | 1C | | frame_size=${64} | phy_cores=${1} -| 64B-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 64B-2c-ethip4-ip4scale600k-rnd-ndrpdr | | [Tags] | 64B | 2C | | frame_size=${64} | phy_cores=${2} -| 64B-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 64B-4c-ethip4-ip4scale600k-rnd-ndrpdr | | [Tags] | 64B | 4C | | frame_size=${64} | phy_cores=${4} -| 1518B-1c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 1518B-1c-ethip4-ip4scale600k-rnd-ndrpdr | | [Tags] | 1518B | 1C | | frame_size=${1518} | phy_cores=${1} -| 1518B-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 1518B-2c-ethip4-ip4scale600k-rnd-ndrpdr | | [Tags] | 1518B | 2C | | frame_size=${1518} | phy_cores=${2} -| 1518B-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 1518B-4c-ethip4-ip4scale600k-rnd-ndrpdr | | [Tags] | 1518B | 4C | | frame_size=${1518} | phy_cores=${4} -| 9000B-1c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 9000B-1c-ethip4-ip4scale600k-rnd-ndrpdr | | [Tags] | 9000B | 1C | | frame_size=${9000} | phy_cores=${1} -| 9000B-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 9000B-2c-ethip4-ip4scale600k-rnd-ndrpdr | | [Tags] | 9000B | 2C | | frame_size=${9000} | phy_cores=${2} -| 9000B-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| 9000B-4c-ethip4-ip4scale600k-rnd-ndrpdr | | [Tags] | 9000B | 4C | | frame_size=${9000} | phy_cores=${4} -| IMIX-1c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| IMIX-1c-ethip4-ip4scale600k-rnd-ndrpdr | | [Tags] | IMIX | 1C | | frame_size=IMIX_v4_1 | phy_cores=${1} -| IMIX-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| IMIX-2c-ethip4-ip4scale600k-rnd-ndrpdr | | [Tags] | IMIX | 2C | | frame_size=IMIX_v4_1 | phy_cores=${2} -| IMIX-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc-ndrpdr +| IMIX-4c-ethip4-ip4scale600k-rnd-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/ip4/10ge2p1x710-ethip4-ip4scale60k-ndrpdr.robot similarity index 56% rename from tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot rename to tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale60k-ndrpdr.robot index ee65ca4828..69062b9520 100644 --- a/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale60k-ndrpdr.robot @@ -14,35 +14,27 @@ *** 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 +| 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 -| ... | 2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm +| ... | 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 | vhost +| Test Teardown | Tear down test | performance | | Test Template | Local Template | -| Documentation | **RFC2544: Pkt throughput L2XC test cases with vhost and vpp \ -| ... | link bonding** +| Documentation | **RFC2544: Pkt throughput IPv4 routing test cases** | ... | -| ... | - **[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. +| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \ +| ... | topology with single links between nodes. | ... | -| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 cross connect. \ -| ... | 802.1q tagging is applied on link between DUT1 and DUT2. +| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for IPv4 routing. | ... | -| ... | - **[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 \ +| ... | - **[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 \ @@ -52,7 +44,7 @@ | ... | 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 \ +| ... | 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. @@ -60,33 +52,25 @@ | ... | - **[Ref] Applicable standard specifications:** RFC2544. *** Variables *** -| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | lacp_plugin.so -| ... | vhost_plugin.so +| @{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}= | 4 +| ${nic_pfs}= | 2 | ${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 +| ${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 L2XC switching config. \ +| | ... | - **[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. | | @@ -99,65 +83,62 @@ | | [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 +| | 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-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr +| 64B-1c-ethip4-ip4scale60k-ndrpdr | | [Tags] | 64B | 1C | | frame_size=${64} | phy_cores=${1} -| 64B-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr +| 64B-2c-ethip4-ip4scale60k-ndrpdr | | [Tags] | 64B | 2C | | frame_size=${64} | phy_cores=${2} -| 64B-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr +| 64B-4c-ethip4-ip4scale60k-ndrpdr | | [Tags] | 64B | 4C | | frame_size=${64} | phy_cores=${4} -| 1518B-1c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr +| 1518B-1c-ethip4-ip4scale60k-ndrpdr | | [Tags] | 1518B | 1C | | frame_size=${1518} | phy_cores=${1} -| 1518B-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr +| 1518B-2c-ethip4-ip4scale60k-ndrpdr | | [Tags] | 1518B | 2C | | frame_size=${1518} | phy_cores=${2} -| 1518B-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr +| 1518B-4c-ethip4-ip4scale60k-ndrpdr | | [Tags] | 1518B | 4C | | frame_size=${1518} | phy_cores=${4} -| 9000B-1c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr +| 9000B-1c-ethip4-ip4scale60k-ndrpdr | | [Tags] | 9000B | 1C | | frame_size=${9000} | phy_cores=${1} -| 9000B-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr +| 9000B-2c-ethip4-ip4scale60k-ndrpdr | | [Tags] | 9000B | 2C | | frame_size=${9000} | phy_cores=${2} -| 9000B-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr +| 9000B-4c-ethip4-ip4scale60k-ndrpdr | | [Tags] | 9000B | 4C | | frame_size=${9000} | phy_cores=${4} -| IMIX-1c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr +| IMIX-1c-ethip4-ip4scale60k-ndrpdr | | [Tags] | IMIX | 1C | | frame_size=IMIX_v4_1 | phy_cores=${1} -| IMIX-2c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr +| IMIX-2c-ethip4-ip4scale60k-ndrpdr | | [Tags] | IMIX | 2C | | frame_size=IMIX_v4_1 | phy_cores=${2} -| IMIX-4c-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr +| 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/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale6m-ndrpdr.robot similarity index 54% rename from tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot rename to tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale6m-ndrpdr.robot index 4889a6754a..0d4bc26e19 100644 --- a/tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot +++ b/tests/vpp/perf/ip4/10ge2p1x710-ethip4-ip4scale6m-ndrpdr.robot @@ -14,35 +14,27 @@ *** 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 +| 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 -| ... | 2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm +| ... | 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 | vhost +| Test Teardown | Tear down test | performance | | Test Template | Local Template | -| Documentation | **RFC2544: Pkt throughput L2BD test cases with vhost and vpp \ -| ... | link bonding** +| Documentation | **RFC2544: Pkt throughput IPv4 routing test cases** | ... | -| ... | - **[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. +| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \ +| ... | topology with single links between nodes. | ... | -| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 switching of IPv4. \ -| ... | 802.1q tagging is applied on link between DUT1 and DUT2. +| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for IPv4 routing. | ... | -| ... | - **[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 \ +| ... | - **[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 \ @@ -52,7 +44,7 @@ | ... | 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 \ +| ... | 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. @@ -60,35 +52,25 @@ | ... | - **[Ref] Applicable standard specifications:** RFC2544. *** Variables *** -| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | lacp_plugin.so -| ... | vhost_plugin.so +| @{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}= | 4 +| ${nic_pfs}= | 2 | ${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 +| ${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 L2BD switching config. \ +| | ... | - **[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. | | @@ -101,66 +83,62 @@ | | [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 +| | 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-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr +| 64B-1c-ethip4-ip4scale6m-ndrpdr | | [Tags] | 64B | 1C | | frame_size=${64} | phy_cores=${1} -| 64B-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr +| 64B-2c-ethip4-ip4scale6m-ndrpdr | | [Tags] | 64B | 2C | | frame_size=${64} | phy_cores=${2} -| 64B-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr +| 64B-4c-ethip4-ip4scale6m-ndrpdr | | [Tags] | 64B | 4C | | frame_size=${64} | phy_cores=${4} -| 1518B-1c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr +| 1518B-1c-ethip4-ip4scale6m-ndrpdr | | [Tags] | 1518B | 1C | | frame_size=${1518} | phy_cores=${1} -| 1518B-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr +| 1518B-2c-ethip4-ip4scale6m-ndrpdr | | [Tags] | 1518B | 2C | | frame_size=${1518} | phy_cores=${2} -| 1518B-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr +| 1518B-4c-ethip4-ip4scale6m-ndrpdr | | [Tags] | 1518B | 4C | | frame_size=${1518} | phy_cores=${4} -| 9000B-1c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr +| 9000B-1c-ethip4-ip4scale6m-ndrpdr | | [Tags] | 9000B | 1C | | frame_size=${9000} | phy_cores=${1} -| 9000B-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr +| 9000B-2c-ethip4-ip4scale6m-ndrpdr | | [Tags] | 9000B | 2C | | frame_size=${9000} | phy_cores=${2} -| 9000B-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr +| 9000B-4c-ethip4-ip4scale6m-ndrpdr | | [Tags] | 9000B | 4C | | frame_size=${9000} | phy_cores=${4} -| IMIX-1c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr +| IMIX-1c-ethip4-ip4scale6m-ndrpdr | | [Tags] | IMIX | 1C | | frame_size=IMIX_v4_1 | phy_cores=${1} -| IMIX-2c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr +| IMIX-2c-ethip4-ip4scale6m-ndrpdr | | [Tags] | IMIX | 2C | | frame_size=IMIX_v4_1 | phy_cores=${2} -| IMIX-4c-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr +| 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 *** -- 2.16.6