aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Gelety <jgelety@cisco.com>2020-09-08 12:14:21 +0200
committerJan Gelety <jgelety@cisco.com>2020-09-24 11:28:28 +0000
commit3b408b7ea702dd3817442186035121fe862cbf7f (patch)
treef4f1b8f1da7e8ec7f8010336ecb7b37ef96ec39b
parent2e19aee8db50a90ca11a6d9ca9fb376e84d8897c (diff)
test: nat44det - add session number check
- some tests need to reduce rate for ramp-up phase - some tests need to extend trail duration in ramp-up phase - removed 2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p63-s63 suite as nat out ports are randomly selected from available port range so T-Rex stateless is not able to provide required out2in traffic Change-Id: I1145496610d202f81d911e68aa819844d7600918 Signed-off-by: Jan Gelety <jgelety@cisco.com>
-rw-r--r--GPL/traffic_profiles/trex/trex-stl-ethip4udp-1u63p.py169
-rw-r--r--GPL/traffic_profiles/trex/trex-stl-ethip4udp-238u63p.py169
-rw-r--r--resources/libraries/python/NATUtil.py34
-rw-r--r--resources/libraries/robot/ip/nat.robot17
-rw-r--r--resources/libraries/robot/performance/performance_utils.robot22
-rw-r--r--resources/libraries/robot/shared/default.robot2
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p1-s1-ndrpdr.robot13
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p63-s63-ndrpdr.robot156
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.robot13
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.robot15
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.robot15
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.robot19
-rw-r--r--tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.robot15
13 files changed, 151 insertions, 508 deletions
diff --git a/GPL/traffic_profiles/trex/trex-stl-ethip4udp-1u63p.py b/GPL/traffic_profiles/trex/trex-stl-ethip4udp-1u63p.py
deleted file mode 100644
index ed28e915ca..0000000000
--- a/GPL/traffic_profiles/trex/trex-stl-ethip4udp-1u63p.py
+++ /dev/null
@@ -1,169 +0,0 @@
-# Copyright (c) 2020 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Stream profile for T-rex traffic generator.
-
-Stream profile:
- - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
- - Packet: ETH / IP / UDP
- - Direction 0 --> 1:
- - Source IP address range: 192.168.0.0
- - Destination IP address range: 20.0.0.0
- - Source UDP port range: 1024 - 1086
- - Destination UDP port range: 1024
- - Direction 1 --> 0:
- - Source IP address range: 20.0.0.0
- - Destination IP address range: 68.142.68.0
- - Source UDP port range: 1024
- - Destination UDP port range: 1024 - 16017
-"""
-
-from trex.stl.api import *
-from profile_trex_stateless_base_class import TrafficStreamsBaseClass
-
-
-class TrafficStreams(TrafficStreamsBaseClass):
- """Stream profile."""
-
- def __init__(self):
- """Initialization and setting of streams' parameters."""
-
- super(TrafficStreamsBaseClass, self).__init__()
-
- # IPs used in packet headers.
- self.p1_src_start_ip = u"192.168.0.0"
- self.p1_src_end_ip = u"192.168.0.0"
- self.p1_dst_start_ip = u"20.0.0.0"
- self.p1_dst_end_ip = u"20.0.0.0"
-
- self.p2_src_start_ip = u"20.0.0.0"
- self.p2_src_end_ip = u"20.0.0.0"
- self.p2_dst_start_ip = u"68.142.68.0"
- self.p2_dst_end_ip = u"68.142.68.0"
-
- # UDP ports used in packet headers.
- self.p1_src_start_udp_port = 1024
- self.p1_src_end_udp_port = 1086
- self.p1_dst_start_udp_port = 1024
- self.p1_dst_end_udp_port = 1024
-
- self.p2_src_start_udp_port = 1024
- self.p2_src_end_udp_port = 1024
- self.p2_dst_start_udp_port = 1024
- self.p2_dst_end_udp_port = 16017
-
- def define_packets(self):
- """Defines the packets to be sent from the traffic generator.
-
- Packet definition: | ETH | IP | UDP |
-
- :returns: Packets to be sent from the traffic generator.
- :rtype: tuple
- """
-
- # Direction 0 --> 1
- base_pkt_a = (
- Ether() /
- IP(
- src=self.p1_src_start_ip,
- dst=self.p1_dst_start_ip,
- proto=17
- ) /
- UDP(
- sport=self.p1_src_start_udp_port,
- dport=self.p1_dst_start_udp_port
- )
- )
- # Direction 1 --> 0
- base_pkt_b = (
- Ether() /
- IP(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip,
- proto=17
- ) /
- UDP(
- sport=self.p2_src_start_udp_port,
- dport=self.p2_dst_start_udp_port
- )
- )
-
- # Direction 0 --> 1
- vm1 = STLVM()
- vm1.var(name="sIP",
- min_value=self.p1_src_start_ip,
- max_value=self.p1_src_end_ip,
- size=4,
- op="inc",
- next_var="sport")
- vm1.var(name="sport",
- min_value=self.p1_src_start_udp_port,
- max_value=self.p1_src_end_udp_port,
- size=2,
- op="inc")
- vm1.var(name="dIP",
- min_value=self.p1_dst_start_ip,
- max_value=self.p1_dst_end_ip,
- size=4,
- op="inc")
- vm1.var(name="dport",
- min_value=self.p1_dst_start_udp_port,
- max_value=self.p1_dst_end_udp_port,
- size=2,
- op="inc")
- vm1.write(fv_name="sIP", pkt_offset="IP.src")
- vm1.write(fv_name="sport", pkt_offset="UDP.sport")
- vm1.write(fv_name="dIP", pkt_offset="IP.dst")
- vm1.write(fv_name="dport", pkt_offset="UDP.dport")
- vm1.fix_chksum(offset='IP')
- # Direction 0 --> 1
- vm2 = STLVM()
- vm2.var(name="sIP",
- min_value=self.p2_src_start_ip,
- max_value=self.p2_src_end_ip,
- size=4,
- op="inc",
- next_var="sport")
- vm2.var(name="sport",
- min_value=self.p2_src_start_udp_port,
- max_value=self.p2_src_end_udp_port,
- size=2,
- op="inc")
- vm2.var(name="dIP",
- min_value=self.p2_dst_start_ip,
- max_value=self.p2_dst_end_ip,
- size=4,
- op="inc",
- next_var="dport")
- vm2.var(name="dport",
- min_value=self.p2_dst_start_udp_port,
- max_value=self.p2_dst_end_udp_port,
- size=2,
- op="inc")
- vm2.write(fv_name="sIP", pkt_offset="IP.src")
- vm2.write(fv_name="sport", pkt_offset="UDP.sport")
- vm2.write(fv_name="dIP", pkt_offset="IP.dst")
- vm2.write(fv_name="dport", pkt_offset="UDP.dport")
- vm2.fix_chksum(offset='IP')
-
- return base_pkt_a, base_pkt_b, vm1, vm2
-
-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-ethip4udp-238u63p.py b/GPL/traffic_profiles/trex/trex-stl-ethip4udp-238u63p.py
deleted file mode 100644
index f6b2276351..0000000000
--- a/GPL/traffic_profiles/trex/trex-stl-ethip4udp-238u63p.py
+++ /dev/null
@@ -1,169 +0,0 @@
-# Copyright (c) 2020 Cisco and/or its affiliates.
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-"""Stream profile for T-rex traffic generator.
-
-Stream profile:
- - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
- - Packet: ETH / IP / UDP
- - Direction 0 --> 1:
- - Source IP address range: 192.168.0.0 - 192.168.0.237
- - Destination IP address range: 20.0.0.0
- - Source UDP port range: 1024 - 1086
- - Destination UDP port range: 1024
- - Direction 1 --> 0:
- - Source IP address range: 20.0.0.0
- - Destination IP address range: 68.142.68.0
- - Source UDP port range: 1024
- - Destination UDP port range: 1024 - 16017
-"""
-
-from trex.stl.api import *
-from profile_trex_stateless_base_class import TrafficStreamsBaseClass
-
-
-class TrafficStreams(TrafficStreamsBaseClass):
- """Stream profile."""
-
- def __init__(self):
- """Initialization and setting of streams' parameters."""
-
- super(TrafficStreamsBaseClass, self).__init__()
-
- # IPs used in packet headers.
- self.p1_src_start_ip = u"192.168.0.0"
- self.p1_src_end_ip = u"192.168.0.237"
- self.p1_dst_start_ip = u"20.0.0.0"
- self.p1_dst_end_ip = u"20.0.0.0"
-
- self.p2_src_start_ip = u"20.0.0.0"
- self.p2_src_end_ip = u"20.0.0.0"
- self.p2_dst_start_ip = u"68.142.68.0"
- self.p2_dst_end_ip = u"68.142.68.0"
-
- # UDP ports used in packet headers.
- self.p1_src_start_udp_port = 1024
- self.p1_src_end_udp_port = 1086
- self.p1_dst_start_udp_port = 1024
- self.p1_dst_end_udp_port = 1024
-
- self.p2_src_start_udp_port = 1024
- self.p2_src_end_udp_port = 1024
- self.p2_dst_start_udp_port = 1024
- self.p2_dst_end_udp_port = 16017
-
- def define_packets(self):
- """Defines the packets to be sent from the traffic generator.
-
- Packet definition: | ETH | IP | UDP |
-
- :returns: Packets to be sent from the traffic generator.
- :rtype: tuple
- """
-
- # Direction 0 --> 1
- base_pkt_a = (
- Ether() /
- IP(
- src=self.p1_src_start_ip,
- dst=self.p1_dst_start_ip,
- proto=17
- ) /
- UDP(
- sport=self.p1_src_start_udp_port,
- dport=self.p1_dst_start_udp_port
- )
- )
- # Direction 1 --> 0
- base_pkt_b = (
- Ether() /
- IP(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip,
- proto=17
- ) /
- UDP(
- sport=self.p2_src_start_udp_port,
- dport=self.p2_dst_start_udp_port
- )
- )
-
- # Direction 0 --> 1
- vm1 = STLVM()
- vm1.var(name="sIP",
- min_value=self.p1_src_start_ip,
- max_value=self.p1_src_end_ip,
- size=4,
- op="inc",
- next_var="sport")
- vm1.var(name="sport",
- min_value=self.p1_src_start_udp_port,
- max_value=self.p1_src_end_udp_port,
- size=2,
- op="inc")
- vm1.var(name="dIP",
- min_value=self.p1_dst_start_ip,
- max_value=self.p1_dst_end_ip,
- size=4,
- op="inc")
- vm1.var(name="dport",
- min_value=self.p1_dst_start_udp_port,
- max_value=self.p1_dst_end_udp_port,
- size=2,
- op="inc")
- vm1.write(fv_name="sIP", pkt_offset="IP.src")
- vm1.write(fv_name="sport", pkt_offset="UDP.sport")
- vm1.write(fv_name="dIP", pkt_offset="IP.dst")
- vm1.write(fv_name="dport", pkt_offset="UDP.dport")
- vm1.fix_chksum(offset='IP')
- # Direction 0 --> 1
- vm2 = STLVM()
- vm2.var(name="sIP",
- min_value=self.p2_src_start_ip,
- max_value=self.p2_src_end_ip,
- size=4,
- op="inc",
- next_var="sport")
- vm2.var(name="sport",
- min_value=self.p2_src_start_udp_port,
- max_value=self.p2_src_end_udp_port,
- size=2,
- op="inc")
- vm2.var(name="dIP",
- min_value=self.p2_dst_start_ip,
- max_value=self.p2_dst_end_ip,
- size=4,
- op="inc",
- next_var="dport")
- vm2.var(name="dport",
- min_value=self.p2_dst_start_udp_port,
- max_value=self.p2_dst_end_udp_port,
- size=2,
- op="inc")
- vm2.write(fv_name="sIP", pkt_offset="IP.src")
- vm2.write(fv_name="sport", pkt_offset="UDP.sport")
- vm2.write(fv_name="dIP", pkt_offset="IP.dst")
- vm2.write(fv_name="dport", pkt_offset="UDP.dport")
- vm2.fix_chksum(offset='IP')
-
- return base_pkt_a, base_pkt_b, vm1, vm2
-
-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/NATUtil.py b/resources/libraries/python/NATUtil.py
index 4ce72d84b4..857870393e 100644
--- a/resources/libraries/python/NATUtil.py
+++ b/resources/libraries/python/NATUtil.py
@@ -186,7 +186,7 @@ class NATUtil:
PapiSocketExecutor.dump_and_log(node, cmds)
# DET44 PAPI calls
- # DET44 means deterministic mode of NAT
+ # DET44 means deterministic mode of NAT44
@staticmethod
def enable_det44_plugin(node, inside_vrf=0, outside_vrf=0):
"""Enable DET44 plugin.
@@ -262,6 +262,38 @@ class NATUtil:
papi_exec.add(cmd, **args_in).get_reply(err_msg)
@staticmethod
+ def get_det44_mapping(node):
+ """Get DET44 mapping data.
+
+ :param node: DUT node.
+ :type node: dict
+ :returns: Dictionary of DET44 mapping data.
+ :rtype: dict
+ """
+ cmd = u"det44_map_dump"
+ err_msg = f"Failed to get DET44 mapping data on the host " \
+ f"{node[u'host']}!"
+ args_in = dict()
+ with PapiSocketExecutor(node) as papi_exec:
+ details = papi_exec.add(cmd, **args_in).get_reply(err_msg)
+
+ return details
+
+ @staticmethod
+ def get_det44_sessions_number(node):
+ """Get number of established DET44 sessions from actual DET44 mapping
+ data.
+
+ :param node: DUT node.
+ :type node: dict
+ :returns: Number of established DET44 sessions.
+ :rtype: int
+ """
+ det44_data = NATUtil.get_det44_mapping(node)
+
+ return det44_data.get(u"ses_num", 0)
+
+ @staticmethod
def show_det44(node):
"""Show DET44 data.
diff --git a/resources/libraries/robot/ip/nat.robot b/resources/libraries/robot/ip/nat.robot
index 25218af456..2c88cbb294 100644
--- a/resources/libraries/robot/ip/nat.robot
+++ b/resources/libraries/robot/ip/nat.robot
@@ -190,3 +190,20 @@
| | [Arguments] | ${node}
| |
| | Show DET44 | ${node}
+
+| Verify DET44 sessions number
+| | [Documentation] | Verify that all required DET44 sessions are established.
+| |
+| | ... | *Arguments:*
+| | ... | - node - DUT node. Type: dictionary
+| | ... | - exp_n_sessions - Expected number of DET44 sessions. Type: integer
+| |
+| | ... | *Example:*
+| |
+| | ... | \| Verify DET44 sessions number \| ${nodes['DUT1']} \| ${64512} \|
+| |
+| | [Arguments] | ${node} | ${exp_n_sessions}
+| |
+| | ${det44_sessions}= | Get DET44 Sessions Number | ${node}
+| | Should Be Equal As Integers | ${det44_sessions} | ${exp_n_sessions}
+| | ... | Not all DET44 sessions have been established
diff --git a/resources/libraries/robot/performance/performance_utils.robot b/resources/libraries/robot/performance/performance_utils.robot
index af58da07e0..d820d5c187 100644
--- a/resources/libraries/robot/performance/performance_utils.robot
+++ b/resources/libraries/robot/performance/performance_utils.robot
@@ -30,6 +30,11 @@
| ${trial_duration}= | ${PERF_TRIAL_DURATION}
| ${trial_multiplicity}= | ${PERF_TRIAL_MULTIPLICITY}
| ${extended_debug}= | ${EXTENDED_DEBUG}
+| # Variable holding trial duration extension [s] used in pre_stats action
+| # clear-show-runtime-with-traffic. By default it is set to 0 but some
+| # tests (e.g. NAT) needs this duration extension in ramp up phase (e.g. to
+| # create all required nat sessions).
+| ${pre_stats_duration_ext}= | ${0}
*** Keywords ***
| Find NDR and PDR intervals using optimized search
@@ -681,12 +686,23 @@
| | ... | Additional Statistics Action for clear and show runtime counters with
| | ... | running traffic.
| |
+| | ${trial_duration}= | Evaluate
+| | ... | ${trial_duration} + ${pre_stats_duration_ext}
+| | ${rate}= | Get Variable Value | ${pre_stats_rate} | ${rate}
| | Clear and show runtime counters with running traffic
-| | ... | ${trial_duration} | ${rate} | ${frame_size} | ${traffic_profile}
-| | ... | ${traffic_directions} | ${tx_port} | ${rx_port}
+| | ... | ${trial_duration} | ${rate}
+| | ... | ${frame_size} | ${traffic_profile} | ${traffic_directions}
+| | ... | ${tx_port} | ${rx_port}
+
+| Additional Statistics Action For vpp-det44-verify-sessions
+| | [Documentation]
+| | ... | Additional Statistics Action to verify that all required DET44
+| | ... | sessions are established.
+| |
+| | Verify DET44 sessions number | ${nodes['DUT1']} | ${n_sessions}
| Additional Statistics Action For noop
| | [Documentation]
| | ... | Additional Statistics Action for no operation.
| |
-| | No operation \ No newline at end of file
+| | No operation
diff --git a/resources/libraries/robot/shared/default.robot b/resources/libraries/robot/shared/default.robot
index c9d924edc1..f3d7ed47dd 100644
--- a/resources/libraries/robot/shared/default.robot
+++ b/resources/libraries/robot/shared/default.robot
@@ -151,7 +151,7 @@
| | | Run Keyword | ${dut}.Add Unix Nodaemon
| | | Run Keyword | ${dut}.Add Unix Coredump
| | | Run Keyword | ${dut}.Add Socksvr | ${SOCKSVR_PATH}
-| | | Run Keyword | ${dut}.Add Main Heap Size | 2G
+| | | Run Keyword | ${dut}.Add Main Heap Size | 6G
| | | Run Keyword | ${dut}.Add Main Heap Page Size | 2M
| | | Run Keyword | ${dut}.Add Statseg Size | 2G
| | | Run Keyword | ${dut}.Add Statseg Page Size | 2M
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p1-s1-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p1-s1-ndrpdr.robot
index 052d091c9b..68e9723061 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p1-s1-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p1-s1-ndrpdr.robot
@@ -78,7 +78,11 @@
| ${in_mask}= | ${32}
| ${out_net}= | 200.0.0.0
| ${out_mask}= | ${32}
-# Traffic profile:
+# Scale settings
+| ${n_hosts}= | ${1}
+| ${n_ports}= | ${1}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile
| ${traffic_profile}= | trex-stl-2n-ethip4udp-1u1p
*** Keywords ***
@@ -99,6 +103,13 @@
| |
| | Set Test Variable | \${frame_size}
| |
+| | ${pre_stats}= | Create List
+| | ... | clear-show-runtime-with-traffic | vpp-det44-verify-sessions
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | Set Test Variable | ${pre_stats}
+| | # Reduce the rate for pre_stat action
+| | Set Test Variable | ${pre_stats_rate} | ${500000}
+| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p63-s63-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p63-s63-ndrpdr.robot
deleted file mode 100644
index d6058552fa..0000000000
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p63-s63-ndrpdr.robot
+++ /dev/null
@@ -1,156 +0,0 @@
-# Copyright (c) 2020 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 | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
-| ... | NIC_Intel-X710 | ETH | IP4FWD | FEATURE | NAT44 | NAT44_DETERMINISTIC
-| ... | SRC_USER_1 | BASE | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4udp-nat44det-h1-p63-s63
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | det44
-|
-| Test Template | Local Template
-|
-| Documentation | *RFC2544: Pkt throughput NAT44 performance test cases*
-|
-| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology\
-| ... | with single links between nodes.
-| ... | *[Enc] Packet Encapsulations:* Eth-IPv4-UDP for IPv4 routing.
-| ... | *[Cfg] DUT configuration:* DUT1 is configured with IPv4 routing and\
-| ... | two static IPv4 /22 and IPv4 /24 route entries.\
-| ... | DUT1 is tested with ${nic_name}.
-| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop\
-| ... | Rate) with zero packet loss tolerance and throughput PDR (Partial Drop\
-| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage\
-| ... | of packets transmitted. NDR and PDR are discovered for different\
-| ... | Ethernet L2 frame sizes using MLRsearch library.\
-| ... | Test packets are generated by TG on links to DUT1. TG traffic profile\
-| ... | contains two L3 flow-groups (flow-group per direction, 1 flow per\
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header\
-| ... | with UDP header 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 | det44_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}
-# IP addresing
-| ${tg_if1_ip4}= | 10.0.0.2
-| ${tg_if1_mask}= | ${20}
-| ${tg_if2_ip4}= | 12.0.0.2
-| ${tg_if2_mask}= | ${20}
-| ${dut1_if1_ip4}= | 10.0.0.1
-| ${dut1_if1_mask}= | ${20}
-| ${dut1_if2_ip4}= | 11.0.0.1
-| ${dut1_if2_mask}= | ${20}
-| ${dest_net}= | 20.0.0.0
-| ${dest_mask}= | ${24}
-# NAT settings
-| ${nat_mode}= | deterministic
-| ${in_net}= | 192.168.0.0
-| ${in_mask}= | ${22}
-| ${out_net}= | 68.142.68.0
-| ${out_mask}= | ${32}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4udp-1u63p
-
-*** Keywords ***
-| Local Template
-| |
-| | [Documentation]
-| | ... | [Cfg] DUT runs NAT44 ${nat_mode} configuration.
-| | ... | 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 Initialize IPv4 forwarding for NAT44 in circular topology
-| | And Initialize NAT44 deterministic mode in circular topology
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4udp-nat44det-h1-p63-s63-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4udp-nat44det-h1-p63-s63-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4udp-nat44det-h1-p63-s63-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4udp-nat44det-h1-p63-s63-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4udp-nat44det-h1-p63-s63-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4udp-nat44det-h1-p63-s63-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4udp-nat44det-h1-p63-s63-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4udp-nat44det-h1-p63-s63-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4udp-nat44det-h1-p63-s63-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4udp-nat44det-h1-p63-s63-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4udp-nat44det-h1-p63-s63-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4udp-nat44det-h1-p63-s63-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.robot
index 96a1d64e49..e8daa6484e 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.robot
@@ -75,7 +75,11 @@
| ${in_mask}= | ${22}
| ${out_net}= | 68.142.68.0
| ${out_mask}= | ${32}
-# Traffic profile:
+# Scale settings
+| ${n_hosts}= | ${1024}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile
| ${traffic_profile}= | trex-stl-ethip4udp-1024u63p
*** Keywords ***
@@ -96,6 +100,13 @@
| |
| | Set Test Variable | \${frame_size}
| |
+| | ${pre_stats}= | Create List
+| | ... | clear-show-runtime-with-traffic | vpp-det44-verify-sessions
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | Set Test Variable | ${pre_stats}
+| | # Reduce the rate for pre_stat action
+| | Set Test Variable | ${pre_stats_rate} | ${500000}
+| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.robot
index bf75e3b37b..dd5276a4db 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.robot
@@ -75,7 +75,11 @@
| ${in_mask}= | ${18}
| ${out_net}= | 68.142.68.0
| ${out_mask}= | ${28}
-# Traffic profile:
+# Scale settings
+| ${n_hosts}= | ${16384}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile
| ${traffic_profile}= | trex-stl-ethip4udp-16384u63p
*** Keywords ***
@@ -96,6 +100,15 @@
| |
| | Set Test Variable | \${frame_size}
| |
+| | ${pre_stats}= | Create List
+| | ... | clear-show-runtime-with-traffic | vpp-det44-verify-sessions
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | Set Test Variable | ${pre_stats}
+| | # Trial duration extension for pre_stat action
+| | Set Test Variable | ${pre_stats_duration_ext} | ${2.1}
+| | # Reduce the rate for pre_stat action
+| | Set Test Variable | ${pre_stats_rate} | ${400000}
+| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.robot
index 8c6661ec66..9400336cb3 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.robot
@@ -75,7 +75,11 @@
| ${in_mask}= | ${14}
| ${out_net}= | 68.142.68.0
| ${out_mask}= | ${24}
-# Traffic profile:
+# Scale settings
+| ${n_hosts}= | ${262144}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile
| ${traffic_profile}= | trex-stl-ethip4udp-262144u63p
*** Keywords ***
@@ -96,6 +100,15 @@
| |
| | Set Test Variable | \${frame_size}
| |
+| | ${pre_stats}= | Create List
+| | ... | clear-show-runtime-with-traffic | vpp-det44-verify-sessions
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | Set Test Variable | ${pre_stats}
+| | # Trial duration extension for pre_stat action
+| | Set Test Variable | ${pre_stats_duration_ext} | ${80.1}
+| | # Reduce the rate for pre_stat action
+| | Set Test Variable | ${pre_stats_rate} | ${200000}
+| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.robot
index ad7c1de539..54ab91e7b4 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.robot
@@ -58,7 +58,7 @@
| ${nic_vfs}= | 0
| ${osi_layer}= | L3
| ${overhead}= | ${0}
-# IP addresing
+# IP settings
| ${tg_if1_ip4}= | 10.0.0.2
| ${tg_if1_mask}= | ${20}
| ${tg_if2_ip4}= | 12.0.0.2
@@ -72,10 +72,14 @@
# NAT settings
| ${nat_mode}= | deterministic
| ${in_net}= | 192.168.0.0
-| ${in_mask}= | ${30}
+| ${in_mask}= | ${20}
| ${out_net}= | 68.142.68.0
-| ${out_mask}= | ${32}
-# Traffic profile:
+| ${out_mask}= | ${30}
+# Scale settings
+| ${n_hosts}= | ${4096}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile
| ${traffic_profile}= | trex-stl-ethip4udp-4096u63p
*** Keywords ***
@@ -96,6 +100,13 @@
| |
| | Set Test Variable | \${frame_size}
| |
+| | ${pre_stats}= | Create List
+| | ... | clear-show-runtime-with-traffic | vpp-det44-verify-sessions
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | Set Test Variable | ${pre_stats}
+| | # Reduce the rate for pre_stat action
+| | Set Test Variable | ${pre_stats_rate} | ${500000}
+| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
diff --git a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.robot b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.robot
index 96b74b20e0..983afe96e8 100644
--- a/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.robot
+++ b/tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.robot
@@ -75,7 +75,11 @@
| ${in_mask}= | ${16}
| ${out_net}= | 68.142.68.0
| ${out_mask}= | ${26}
-# Traffic profile:
+# Scale settings
+| ${n_hosts}= | ${65536}
+| ${n_ports}= | ${63}
+| ${n_sessions}= | ${${n_hosts} * ${n_ports}}
+# Traffic profile
| ${traffic_profile}= | trex-stl-ethip4udp-65536u63p
*** Keywords ***
@@ -96,6 +100,15 @@
| |
| | Set Test Variable | \${frame_size}
| |
+| | ${pre_stats}= | Create List
+| | ... | clear-show-runtime-with-traffic | vpp-det44-verify-sessions
+| | ... | vpp-clear-stats | vpp-enable-packettrace | vpp-enable-elog
+| | Set Test Variable | ${pre_stats}
+| | # Trial duration extension for pre_stat action
+| | Set Test Variable | ${pre_stats_duration_ext} | ${22.5}
+| | # Reduce the rate for pre_stat action
+| | Set Test Variable | ${pre_stats_rate} | ${200000}
+| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}