test: nat44det - add session number check 08/28708/43
authorJan Gelety <jgelety@cisco.com>
Tue, 8 Sep 2020 10:14:21 +0000 (12:14 +0200)
committerJan Gelety <jgelety@cisco.com>
Thu, 24 Sep 2020 11:28:28 +0000 (11:28 +0000)
- 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>
13 files changed:
GPL/traffic_profiles/trex/trex-stl-ethip4udp-1u63p.py [deleted file]
GPL/traffic_profiles/trex/trex-stl-ethip4udp-238u63p.py [deleted file]
resources/libraries/python/NATUtil.py
resources/libraries/robot/ip/nat.robot
resources/libraries/robot/performance/performance_utils.robot
resources/libraries/robot/shared/default.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p1-s1-ndrpdr.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1-p63-s63-ndrpdr.robot [deleted file]
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h1024-p63-s64512-ndrpdr.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h16384-p63-s1032192-ndrpdr.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h262144-p63-s16515072-ndrpdr.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h4096-p63-s258048-ndrpdr.robot
tests/vpp/perf/ip4/2n1l-10ge2p1x710-ethip4udp-nat44det-h65536-p63-s4128758-ndrpdr.robot

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 (file)
index ed28e91..0000000
+++ /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 (file)
index f6b2276..0000000
+++ /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()
index 4ce72d8..8578703 100644 (file)
@@ -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.
@@ -261,6 +261,38 @@ class NATUtil:
         with PapiSocketExecutor(node) as papi_exec:
             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.
index 25218af..2c88cbb 100644 (file)
 | | [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
index af58da0..d820d5c 100644 (file)
 | ${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
 | | ... | 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
index c9d924e..f3d7ed4 100644 (file)
 | | | 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
index 052d091..68e9723 100644 (file)
 | ${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 ***
 | |
 | | 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 (file)
index d605855..0000000
+++ /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}
index 96a1d64..e8daa64 100644 (file)
 | ${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 ***
 | |
 | | 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}
index bf75e3b..dd5276a 100644 (file)
 | ${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 ***
 | |
 | | 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}
index 8c6661e..9400336 100644 (file)
 | ${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 ***
 | |
 | | 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}
index ad7c1de..54ab91e 100644 (file)
@@ -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
 # 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 ***
 | |
 | | 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}
index 96b74b2..983afe9 100644 (file)
 | ${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 ***
 | |
 | | 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}