+++ /dev/null
-# 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:
- - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
- - Packet: ETH / IP /
- - Direction 0 --> 1:
- - Source IP address range: 10.0.0.1
- - Destination IP address range: 20.0.0.0 - 20.0.39.15
- - Direction 1 --> 0:
- - Source IP address range: 20.0.0.1
- - Destination IP address range: 10.0.0.0 - 10.0.39.15
-"""
-
-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"10.0.0.1"
- self.p1_dst_start_ip = u"20.0.0.0"
- self.p1_dst_end_ip = u"20.0.39.15"
-
- self.p2_src_start_ip = u"20.0.0.1"
- self.p2_dst_start_ip = u"10.0.0.0"
- self.p2_dst_end_ip = u"10.0.39.15"
-
- def define_packets(self):
- """Defines the packets to be sent from the traffic generator.
-
- Packet definition: | ETH | IP |
-
- :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=61
- )
- )
- # Direction 1 --> 0
- base_pkt_b = (
- Ether() /
- IP(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip,
- proto=61
- )
- )
-
- # Direction 0 --> 1
- vm1 = STLScVmRaw(
- [
- STLVmFlowVarRepeatableRandom(
- name=u"dst",
- min_value=self.p1_dst_start_ip,
- max_value=self.p1_dst_end_ip,
- size=4,
- seed=1,
- # Cycle length. TRex does not allow any higher value.
- limit=(2**24 - 1)
- ),
- STLVmWrFlowVar(
- fv_name=u"dst",
- pkt_offset=u"IP.dst"
- ),
- STLVmFixIpv4(
- offset=u"IP"
- )
- ]
- )
-
- # Direction 1 --> 0
- vm2 = STLScVmRaw(
- [
- STLVmFlowVarRepeatableRandom(
- name=u"dst",
- min_value=self.p2_dst_start_ip,
- max_value=self.p2_dst_end_ip,
- size=4,
- # Using a different seed to be extra sure
- # nothing useful gets cached.
- seed=2,
- limit=(2**24 - 1)
- ),
- STLVmWrFlowVar(
- fv_name=u"dst",
- pkt_offset=u"IP.dst"
- ),
- STLVmFixIpv4(
- offset=u"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()
+++ /dev/null
-# 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:
- - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
- - Packet: ETH / IP /
- - Direction 0 --> 1:
- - Source IP address range: 10.0.0.1
- - Destination IP address range: 20.0.0.0 - 20.1.134.159
- - Direction 1 --> 0:
- - Source IP address range: 20.0.0.1
- - Destination IP address range: 10.0.0.0 - 10.1.134.159
-"""
-
-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"10.0.0.1"
- self.p1_dst_start_ip = u"20.0.0.0"
- self.p1_dst_end_ip = u"20.1.134.159"
-
- self.p2_src_start_ip = u"20.0.0.1"
- self.p2_dst_start_ip = u"10.0.0.0"
- self.p2_dst_end_ip = u"10.1.134.159"
-
- def define_packets(self):
- """Defines the packets to be sent from the traffic generator.
-
- Packet definition: | ETH | IP |
-
- :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=61
- )
- )
- # Direction 1 --> 0
- base_pkt_b = (
- Ether() /
- IP(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip,
- proto=61
- )
- )
-
- # Direction 0 --> 1
- vm1 = STLScVmRaw(
- [
- STLVmFlowVarRepeatableRandom(
- name=u"dst",
- min_value=self.p1_dst_start_ip,
- max_value=self.p1_dst_end_ip,
- size=4,
- seed=1,
- limit=(2**24 - 1)
- ),
- STLVmWrFlowVar(
- fv_name=u"dst",
- pkt_offset=u"IP.dst"
- ),
- STLVmFixIpv4(
- offset=u"IP"
- )
- ]
- )
- # Direction 1 --> 0
- vm2 = STLScVmRaw(
- [
- STLVmFlowVarRepeatableRandom(
- name=u"dst",
- min_value=self.p2_dst_start_ip,
- max_value=self.p2_dst_end_ip,
- size=4,
- seed=2,
- limit=(2**24 - 1)
- ),
- STLVmWrFlowVar(
- fv_name=u"dst",
- pkt_offset=u"IP.dst"
- ),
- STLVmFixIpv4(
- offset=u"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()
+++ /dev/null
-# 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:
- - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
- - Packet: ETH / IP /
- - Direction 0 --> 1:
- - Source IP address range: 10.0.0.1
- - Destination IP address range: 20.0.0.0 - 20.15.66.63
- - Direction 1 --> 0:
- - Source IP address range: 20.0.0.1
- - Destination IP address range: 10.0.0.0 - 10.15.66.63
-"""
-
-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"10.0.0.1"
- self.p1_dst_start_ip = u"20.0.0.0"
- self.p1_dst_end_ip = u"20.15.66.63"
-
- self.p2_src_start_ip = u"20.0.0.1"
- self.p2_dst_start_ip = u"10.0.0.0"
- self.p2_dst_end_ip = u"10.15.66.63"
-
- def define_packets(self):
- """Defines the packets to be sent from the traffic generator.
-
- Packet definition: | ETH | IP |
-
- :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=61
- )
- )
- # Direction 1 --> 0
- base_pkt_b = (
- Ether() /
- IP(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip,
- proto=61
- )
- )
-
- # Direction 0 --> 1
- vm1 = STLScVmRaw(
- [
- STLVmFlowVarRepeatableRandom(
- name=u"dst",
- min_value=self.p1_dst_start_ip,
- max_value=self.p1_dst_end_ip,
- size=4,
- seed=1,
- limit=(2**24 - 1)
- ),
- STLVmWrFlowVar(
- fv_name=u"dst",
- pkt_offset=u"IP.dst"
- ),
- STLVmFixIpv4(
- offset=u"IP"
- )
- ]
- )
- # Direction 1 --> 0
- vm2 = STLScVmRaw(
- [
- STLVmFlowVarRepeatableRandom(
- name=u"dst",
- min_value=self.p2_dst_start_ip,
- max_value=self.p2_dst_end_ip,
- size=4,
- seed=2,
- limit=(2**24 - 1)
- ),
- STLVmWrFlowVar(
- fv_name=u"dst",
- pkt_offset=u"IP.dst"
- ),
- STLVmFixIpv4(
- offset=u"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()
+++ /dev/null
-# Copyright (c) 2024 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:
- - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
- - Packet: ETH / IPv6 /
- - Direction 0 --> 1:
- - Source IP address range: 2001:1::1
- - Destination IP address range: 2001:2::0 - 2001:2::270F
- - Direction 1 --> 0:
- - Source IP address range: 2001:2::1
- - Destination IP address range: 2001:1::0 - 2001:1::270F
-"""
-
-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"2001:1::1"
- self.p1_dst_start_ip = u"2001:2::0"
- self.p1_dst_end_ip = u"2001:2::270F"
-
- self.p2_src_start_ip = u"2001:2::1"
- self.p2_dst_start_ip = u"2001:1::0"
- self.p2_dst_end_ip = u"2001:1::270F"
-
- def define_packets(self):
- """Defines the packets to be sent from the traffic generator.
-
- Packet definition: | ETH | IPv6 |
-
- :returns: Packets to be sent from the traffic generator.
- :rtype: tuple
- """
-
- base_p1, count_p1 = self._get_start_end_ipv6(
- self.p1_dst_start_ip,
- self.p1_dst_end_ip
- )
- base_p2, count_p2 = self._get_start_end_ipv6(
- self.p2_dst_start_ip,
- self.p2_dst_end_ip
- )
-
- # Direction 0 --> 1
- base_pkt_a = (
- Ether() /
- IPv6(
- src=self.p1_src_start_ip,
- dst=self.p1_dst_start_ip
- )
- )
- # Direction 1 --> 0
- base_pkt_b = (
- Ether() /
- IPv6(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip
- )
- )
-
- # Direction 0 --> 1
- vm1 = STLScVmRaw(
- [
- STLVmFlowVarRepeatableRandom(
- name=u"ipv6_dst",
- min_value=base_p1,
- max_value=base_p1 + count_p1,
- size=8,
- seed=1,
- # Cycle length. TRex does not allow any higher value.
- limit=(2**24 - 1)
- ),
- STLVmWrFlowVar(
- fv_name=u"ipv6_dst",
- pkt_offset=u"IPv6.dst",
- offset_fixup=8
- )
- ]
- )
- # Direction 1 --> 0
- vm2 = STLScVmRaw(
- [
- STLVmFlowVarRepeatableRandom(
- name=u"ipv6_dst",
- min_value=base_p2,
- max_value=base_p2 + count_p2,
- size=8,
- seed=2,
- limit=(2**24 - 1)
- ),
- STLVmWrFlowVar(
- fv_name=u"ipv6_dst",
- pkt_offset=u"IPv6.dst",
- offset_fixup=8
- )
- ]
- )
-
- 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()
self.pkt_vm.append(
STLScVmRaw(
[
- STLVmFlowVar(
+ STLVmFlowVarRepeatableRandom(
name="ipv6_dst",
min_value=base,
max_value=base + count,
self.pkt_vm.append(
STLScVmRaw(
[
- STLVmFlowVar(
+ STLVmFlowVarRepeatableRandom(
name="ipv6_dst",
min_value=base,
max_value=base + count,
+++ /dev/null
-# Copyright (c) 2024 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:
- - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
- - Packet: ETH / IPv6 /
- - Direction 0 --> 1:
- - Source IP address range: 2001:1::1
- - Destination IP address range: 2001:2::0 - 2001:2::1:869F
- - Direction 1 --> 0:
- - Source IP address range: 2001:2::1
- - Destination IP address range: 2001:1::0 - 2001:1::1:869F
-"""
-
-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"2001:1::1"
- self.p1_dst_start_ip = u"2001:2::0"
- self.p1_dst_end_ip = u"2001:2::1:869F"
-
- self.p2_src_start_ip = u"2001:2::1"
- self.p2_dst_start_ip = u"2001:1::0"
- self.p2_dst_end_ip = u"2001:1::1:869F"
-
- def define_packets(self):
- """Defines the packets to be sent from the traffic generator.
-
- Packet definition: | ETH | IPv6 |
-
- :returns: Packets to be sent from the traffic generator.
- :rtype: tuple
- """
-
- base_p1, count_p1 = self._get_start_end_ipv6(
- self.p1_dst_start_ip,
- self.p1_dst_end_ip
- )
- base_p2, count_p2 = self._get_start_end_ipv6(
- self.p2_dst_start_ip,
- self.p2_dst_end_ip
- )
-
- # Direction 0 --> 1
- base_pkt_a = (
- Ether() /
- IPv6(
- src=self.p1_src_start_ip,
- dst=self.p1_dst_start_ip
- )
- )
- # Direction 1 --> 0
- base_pkt_b = (
- Ether() /
- IPv6(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip
- )
- )
-
- # Direction 0 --> 1
- vm1 = STLScVmRaw(
- [
- STLVmFlowVarRepeatableRandom(
- name=u"ipv6_dst",
- min_value=base_p1,
- max_value=base_p1 + count_p1,
- size=8,
- seed=1,
- # Cycle length. TRex does not allow any higher value.
- limit=(2**24 - 1)
- ),
- STLVmWrFlowVar(
- fv_name=u"ipv6_dst",
- pkt_offset=u"IPv6.dst",
- offset_fixup=8
- )
- ]
- )
- # Direction 1 --> 0
- vm2 = STLScVmRaw(
- [
- STLVmFlowVarRepeatableRandom(
- name=u"ipv6_dst",
- min_value=base_p2,
- max_value=base_p2 + count_p2,
- size=8,
- seed=2,
- limit=(2**24 - 1)
- ),
- STLVmWrFlowVar(
- fv_name=u"ipv6_dst",
- pkt_offset=u"IPv6.dst",
- offset_fixup=8
- )
- ]
- )
-
- 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()
self.pkt_vm.append(
STLScVmRaw(
[
- STLVmFlowVar(
+ STLVmFlowVarRepeatableRandom(
name="ipv6_dst",
min_value=base,
max_value=base + count,
{
"src_start_ip": "2100::1",
"dst_start_ip": "2200::0",
- "dst_end_ip": "2200::F:423F"
+ "dst_end_ip": "2200::F:423F",
+ "seed": 1
},
# Direction W --> E:
{
"src_start_ip": "2300::1",
"dst_start_ip": "2400::0",
- "dst_end_ip": "2400::F:423F"
+ "dst_end_ip": "2400::F:423F",
+ "seed": 2
},
# Direction W --> E:
{
"src_start_ip": "2500::1",
"dst_start_ip": "2600::0",
- "dst_end_ip": "2600::F:423F"
+ "dst_end_ip": "2600::F:423F",
+ "seed": 1
},
# Direction E --> W:
{
"src_start_ip": "2200::1",
"dst_start_ip": "2100::0",
- "dst_end_ip": "2100::F:423F"
+ "dst_end_ip": "2100::F:423F",
+ "seed": 2
},
# Direction E --> W:
{
"src_start_ip": "2400::1",
"dst_start_ip": "2300::0",
- "dst_end_ip": "2300::F:423F"
+ "dst_end_ip": "2300::F:423F",
+ "seed": 1
},
# Direction E --> W:
{
"src_start_ip": "2600::1",
"dst_start_ip": "2500::0",
- "dst_end_ip": "2500::F:423F"
+ "dst_end_ip": "2500::F:423F",
+ "seed": 2
}
]
self.pkt_base = []
self.pkt_vm.append(
STLScVmRaw(
[
- STLVmFlowVar(
+ STLVmFlowVarRepeatableRandom(
name="ipv6_dst",
min_value=base,
max_value=base + count,
size=8,
- op="inc"
+ seed=self.pkt_data[i]["seed"],
+ limit=(2**24 - 1)
),
STLVmWrFlowVar(
fv_name="ipv6_dst",
+++ /dev/null
-# Copyright (c) 2024 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:
- - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
- - Packet: ETH / IPv6 /
- - Direction 0 --> 1:
- - Source IP address range: 2001:1::1
- - Destination IP address range: 2001:2::0 - 2001:2::F:423F
- - Direction 1 --> 0:
- - Source IP address range: 2001:2::1
- - Destination IP address range: 2001:1::0 - 2001:1::F:423F
-"""
-
-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"2001:1::1"
- self.p1_dst_start_ip = u"2001:2::0"
- self.p1_dst_end_ip = u"2001:2::F:423F"
-
- self.p2_src_start_ip = u"2001:2::1"
- self.p2_dst_start_ip = u"2001:1::0"
- self.p2_dst_end_ip = u"2001:1::F:423F"
-
- def define_packets(self):
- """Defines the packets to be sent from the traffic generator.
-
- Packet definition: | ETH | IPv6 |
-
- :returns: Packets to be sent from the traffic generator.
- :rtype: tuple
- """
-
- base_p1, count_p1 = self._get_start_end_ipv6(
- self.p1_dst_start_ip,
- self.p1_dst_end_ip
- )
- base_p2, count_p2 = self._get_start_end_ipv6(
- self.p2_dst_start_ip,
- self.p2_dst_end_ip
- )
-
- # Direction 0 --> 1
- base_pkt_a = (
- Ether() /
- IPv6(
- src=self.p1_src_start_ip,
- dst=self.p1_dst_start_ip
- )
- )
- # Direction 1 --> 0
- base_pkt_b = (
- Ether() /
- IPv6(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip
- )
- )
-
- # Direction 0 --> 1
- vm1 = STLScVmRaw(
- [
- STLVmFlowVarRepeatableRandom(
- name=u"ipv6_dst",
- min_value=base_p1,
- max_value=base_p1 + count_p1,
- size=8,
- seed=1,
- # Cycle length. TRex does not allow any higher value.
- limit=(2**24 - 1)
- ),
- STLVmWrFlowVar(
- fv_name=u"ipv6_dst",
- pkt_offset=u"IPv6.dst",
- offset_fixup=8
- )
- ]
- )
- # Direction 1 --> 0
- vm2 = STLScVmRaw(
- [
- STLVmFlowVarRepeatableRandom(
- name=u"ipv6_dst",
- min_value=base_p2,
- max_value=base_p2 + count_p2,
- size=8,
- seed=2,
- limit=(2**24 - 1)
- ),
- STLVmWrFlowVar(
- fv_name=u"ipv6_dst",
- pkt_offset=u"IPv6.dst",
- offset_fixup=8
- )
- ]
- )
-
- 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()
+++ /dev/null
-# 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:
- - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
- - Packet: ETH / IPv6 /
- - Direction 0 --> 1:
- - Source IP address range: 2001:1::1
- - Destination IP address range: 2001:2::0 - 2001:2::270F
- - Direction 1 --> 0:
- - Source IP address range: 2001:2::1
- - Destination IP address range: 2001:1::0 - 2001:1::270F
-"""
-
-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"2001:1::1"
- self.p1_dst_start_ip = u"2001:2::0"
- self.p1_dst_end_ip = u"2001:2::270F"
-
- self.p2_src_start_ip = u"2001:2::1"
- self.p2_dst_start_ip = u"2001:1::0"
- self.p2_dst_end_ip = u"2001:1::270F"
-
- def define_packets(self):
- """Defines the packets to be sent from the traffic generator.
-
- Packet definition: | ETH | IPv6 |
-
- :returns: Packets to be sent from the traffic generator.
- :rtype: tuple
- """
-
- base_p1, count_p1 = self._get_start_end_ipv6(
- self.p1_dst_start_ip,
- self.p1_dst_end_ip
- )
- base_p2, count_p2 = self._get_start_end_ipv6(
- self.p2_dst_start_ip,
- self.p2_dst_end_ip
- )
-
- # Direction 0 --> 1
- base_pkt_a = (
- Ether() /
- IPv6(
- src=self.p1_src_start_ip,
- dst=self.p1_dst_start_ip
- )
- )
- # Direction 1 --> 0
- base_pkt_b = (
- Ether() /
- IPv6(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip
- )
- )
-
- # Direction 0 --> 1
- vm1 = STLScVmRaw(
- [
- STLVmFlowVar(
- name=u"ipv6_dst",
- min_value=base_p1,
- max_value=base_p1 + count_p1,
- size=8,
- op=u"inc"
- ),
- STLVmWrFlowVar(
- fv_name=u"ipv6_dst",
- pkt_offset=u"IPv6.dst",
- offset_fixup=8
- )
- ]
- )
- # Direction 1 --> 0
- vm2 = STLScVmRaw(
- [
- STLVmFlowVar(
- name=u"ipv6_dst",
- min_value=base_p2,
- max_value=base_p2 + count_p2,
- size=8,
- op=u"inc"
- ),
- STLVmWrFlowVar(
- fv_name=u"ipv6_dst",
- pkt_offset=u"IPv6.dst",
- offset_fixup=8
- )
- ]
- )
-
- 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()
+++ /dev/null
-# 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:
- - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
- - Packet: ETH / IPv6 /
- - Direction 0 --> 1:
- - Source IP address range: 2001:1::1
- - Destination IP address range: 2001:2::0 - 2001:2::1:869F
- - Direction 1 --> 0:
- - Source IP address range: 2001:2::1
- - Destination IP address range: 2001:1::0 - 2001:1::1:869F
-"""
-
-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"2001:1::1"
- self.p1_dst_start_ip = u"2001:2::0"
- self.p1_dst_end_ip = u"2001:2::1:869F"
-
- self.p2_src_start_ip = u"2001:2::1"
- self.p2_dst_start_ip = u"2001:1::0"
- self.p2_dst_end_ip = u"2001:1::1:869F"
-
- def define_packets(self):
- """Defines the packets to be sent from the traffic generator.
-
- Packet definition: | ETH | IPv6 |
-
- :returns: Packets to be sent from the traffic generator.
- :rtype: tuple
- """
-
- base_p1, count_p1 = self._get_start_end_ipv6(
- self.p1_dst_start_ip,
- self.p1_dst_end_ip
- )
- base_p2, count_p2 = self._get_start_end_ipv6(
- self.p2_dst_start_ip,
- self.p2_dst_end_ip
- )
-
- # Direction 0 --> 1
- base_pkt_a = (
- Ether() /
- IPv6(
- src=self.p1_src_start_ip,
- dst=self.p1_dst_start_ip
- )
- )
- # Direction 1 --> 0
- base_pkt_b = (
- Ether() /
- IPv6(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip
- )
- )
-
- # Direction 0 --> 1
- vm1 = STLScVmRaw(
- [
- STLVmFlowVar(
- name=u"ipv6_dst",
- min_value=base_p1,
- max_value=base_p1 + count_p1,
- size=8,
- op=u"inc"
- ),
- STLVmWrFlowVar(
- fv_name=u"ipv6_dst",
- pkt_offset=u"IPv6.dst",
- offset_fixup=8
- )
- ]
- )
- # Direction 1 --> 0
- vm2 = STLScVmRaw(
- [
- STLVmFlowVar(
- name=u"ipv6_dst",
- min_value=base_p2,
- max_value=base_p2 + count_p2,
- size=8,
- op=u"inc"
- ),
- STLVmWrFlowVar(
- fv_name=u"ipv6_dst",
- pkt_offset=u"IPv6.dst",
- offset_fixup=8
- )
- ]
- )
-
- 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()
+++ /dev/null
-# 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:
- - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
- - Packet: ETH / IPv6 /
- - Direction 0 --> 1:
- - Source IP address range: 2001:1::1
- - Destination IP address range: 2001:2::0 - 2001:2::F:423F
- - Direction 1 --> 0:
- - Source IP address range: 2001:2::1
- - Destination IP address range: 2001:1::0 - 2001:1::F:423F
-"""
-
-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"2001:1::1"
- self.p1_dst_start_ip = u"2001:2::0"
- self.p1_dst_end_ip = u"2001:2::F:423F"
-
- self.p2_src_start_ip = u"2001:2::1"
- self.p2_dst_start_ip = u"2001:1::0"
- self.p2_dst_end_ip = u"2001:1::F:423F"
-
- def define_packets(self):
- """Defines the packets to be sent from the traffic generator.
-
- Packet definition: | ETH | IPv6 |
-
- :returns: Packets to be sent from the traffic generator.
- :rtype: tuple
- """
-
- base_p1, count_p1 = self._get_start_end_ipv6(
- self.p1_dst_start_ip,
- self.p1_dst_end_ip
- )
- base_p2, count_p2 = self._get_start_end_ipv6(
- self.p2_dst_start_ip,
- self.p2_dst_end_ip
- )
-
- # Direction 0 --> 1
- base_pkt_a = (
- Ether() /
- IPv6(
- src=self.p1_src_start_ip,
- dst=self.p1_dst_start_ip
- )
- )
- # Direction 1 --> 0
- base_pkt_b = (
- Ether() /
- IPv6(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip
- )
- )
-
- # Direction 0 --> 1
- vm1 = STLScVmRaw(
- [
- STLVmFlowVar(
- name=u"ipv6_dst",
- min_value=base_p1,
- max_value=base_p1 + count_p1,
- size=8,
- op=u"inc"
- ),
- STLVmWrFlowVar(
- fv_name=u"ipv6_dst",
- pkt_offset=u"IPv6.dst",
- offset_fixup=8
- )
- ]
- )
- # Direction 1 --> 0
- vm2 = STLScVmRaw(
- [
- STLVmFlowVar(
- name=u"ipv6_dst",
- min_value=base_p2,
- max_value=base_p2 + count_p2,
- size=8,
- op=u"inc"
- ),
- STLVmWrFlowVar(
- fv_name=u"ipv6_dst",
- pkt_offset=u"IPv6.dst",
- offset_fixup=8
- )
- ]
- )
-
- 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()
--- /dev/null
+# Copyright (c) 2024 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:
+ - Single parallel bi-directional streams sent as W --> E and E --> W
+ at the same time.
+ - Packet: ETH / IPv6 /
+"""
+
+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": "2100::1",
+ "dst_start_ip": "2200::0",
+ "dst_end_ip": "2200::7:a11f"
+ },
+ # Direction E --> W:
+ {
+ "src_start_ip": "2200::1",
+ "dst_start_ip": "2100::0",
+ "dst_end_ip": "2100::7:a11f"
+ }
+ ]
+ self.pkt_base = []
+ self.pkt_vm = []
+
+ def define_packets(self):
+ """Defines the packets to be sent from the traffic generator.
+
+ Packet definition: | ETH | IPv6 |
+
+ :returns: Packets to be sent from the traffic generator.
+ :rtype: tuple
+ """
+ for i in range(len(self.pkt_data)):
+ base, count = self._get_start_end_ipv6(
+ self.pkt_data[i]["dst_start_ip"],
+ self.pkt_data[i]["dst_end_ip"]
+ )
+
+ self.pkt_base.append(
+ Ether() /
+ IPv6(
+ src=self.pkt_data[i]["src_start_ip"],
+ dst=self.pkt_data[i]["dst_start_ip"]
+ )
+ )
+ self.pkt_vm.append(
+ STLScVmRaw(
+ [
+ STLVmFlowVar(
+ name="ipv6_dst",
+ min_value=base,
+ max_value=base + count,
+ size=8
+ ),
+ STLVmWrFlowVar(
+ fv_name="ipv6_dst",
+ pkt_offset="IPv6.dst",
+ offset_fixup=8
+ )
+ ]
+ )
+ )
+
+ 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()
+++ /dev/null
-# Copyright (c) 2023 Intel and/or its affiliates.
-# 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:
- - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
- - Packet: ETH / IPv6 /
- - Direction 0 --> 1:
- - Source IP address range: 2001:1::1
- - Destination IP address range: 2001:2::0 - 2001:2::7:a11f
- - Direction 1 --> 0:
- - Source IP address range: 2001:2::1
- - Destination IP address range: 2001:1::0 - 2001:1::7:a11f
-"""
-
-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"2001:1::1"
- self.p1_dst_start_ip = u"2001:2::0"
- self.p1_dst_end_ip = u"2001:2::7:a11f"
-
- self.p2_src_start_ip = u"2001:2::1"
- self.p2_dst_start_ip = u"2001:1::0"
- self.p2_dst_end_ip = u"2001:1::7:a11f"
-
- def define_packets(self):
- """Defines the packets to be sent from the traffic generator.
-
- Packet definition: | ETH | IPv6 |
-
- :returns: Packets to be sent from the traffic generator.
- :rtype: tuple
- """
-
- base_p1, count_p1 = self._get_start_end_ipv6(
- self.p1_dst_start_ip,
- self.p1_dst_end_ip
- )
- base_p2, count_p2 = self._get_start_end_ipv6(
- self.p2_dst_start_ip,
- self.p2_dst_end_ip
- )
-
- # Direction 0 --> 1
- base_pkt_a = (
- Ether() /
- IPv6(
- src=self.p1_src_start_ip,
- dst=self.p1_dst_start_ip
- )
- )
- # Direction 1 --> 0
- base_pkt_b = (
- Ether() /
- IPv6(
- src=self.p2_src_start_ip,
- dst=self.p2_dst_start_ip
- )
- )
-
- # Direction 0 --> 1
- vm1 = STLScVmRaw(
- [
- STLVmFlowVar(
- name=u"ipv6_dst",
- min_value=base_p1,
- max_value=base_p1 + count_p1,
- size=8,
- op=u"inc"
- ),
- STLVmWrFlowVar(
- fv_name=u"ipv6_dst",
- pkt_offset=u"IPv6.dst",
- offset_fixup=8
- )
- ]
- )
- # Direction 1 --> 0
- vm2 = STLScVmRaw(
- [
- STLVmFlowVar(
- name=u"ipv6_dst",
- min_value=base_p2,
- max_value=base_p2 + count_p2,
- size=8,
- op=u"inc"
- ),
- STLVmWrFlowVar(
- fv_name=u"ipv6_dst",
- pkt_offset=u"IPv6.dst",
- offset_fixup=8
- )
- ]
- )
-
- 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()
-24.06-rc0~189-ga1d20405b
\ No newline at end of file
+24.06-rc0~228-g83b12bf89
\ No newline at end of file
elif row["test_type"] == "hoststack" and row["tg_type"] == "ab":
if "CPS" not in tbs[dut][dver][infra]["ttype"]:
tbs[dut][dver][infra]["ttype"].extend(("CPS", "RPS", ))
+ elif row["test_type"] == "soak":
+ if "SOAK" not in tbs[dut][dver][infra]["ttype"]:
+ tbs[dut][dver][infra]["ttype"].append("SOAK")
self._tbs = tbs
# Read from files:
- telemetry
- test_id
- version
+- data_type: trending
+ partition: test_type
+ partition_name: soak
+ path: s3://fdio-docs-s3-cloudfront-index/csit/parquet/trending
+ schema: trending_soak
+ columns:
+ - job
+ - build
+ - dut_type
+ - dut_version
+ - hosts
+ - tg_type
+ - result_critical_rate_lower_bandwidth_unit
+ - result_critical_rate_lower_bandwidth_value
+ - result_critical_rate_lower_rate_unit
+ - result_critical_rate_lower_rate_value
+ - start_time
+ - passed
+ - telemetry
+ - test_id
+ - version
- data_type: iterative
partition: test_type
partition_name: mrr
- build
- dut_type
- dut_version
+ # - hosts
- start_time
- passed
- test_id
- build
- dut_type
- dut_version
+ # - hosts
- start_time
- passed
- test_id
- build
- dut_type
- dut_version
+ - hosts
- tg_type
- result_bandwidth_unit
- result_bandwidth_value
_create_test_name(test).replace("-ndrpdr", "-pdr"),
x_axis[_get_rindex(anomalies, "regression")]
))
- else: # mrr
- tst_data = tst_data.dropna(
- subset=["result_receive_rate_rate_avg", ]
- )
+ else: # mrr, hoststack, soak
+ if "soak" in test:
+ val = "result_critical_rate_lower_rate_value"
+ elif "hoststack" in test:
+ val = "result_rate_value"
+ else: # mrr
+ val = "result_receive_rate_rate_avg"
+ tst_data = tst_data.dropna(subset=[val, ])
if tst_data.empty:
continue
x_axis = tst_data["start_time"].tolist()
try:
anomalies, _, _ = classify_anomalies({
- k: v for k, v in zip(
- x_axis,
- tst_data["result_receive_rate_rate_avg"].\
- tolist()
- )
+ k: v for k, v in zip(x_axis, tst_data[val].tolist())
})
except ValueError:
continue
test_type = "ndrpdr"
elif itm["testtype"] == "mrr":
test_type = "mrr"
+ elif itm["testtype"] == "soak":
+ test_type = "soak"
elif itm["area"] == "hoststack":
test_type = "hoststack"
df = data.loc[(
trial_run = "run"
for _, row in itm_data.iterrows():
metadata["csit-ref"] = f"{row['job']}/{row['build']}"
+ try:
+ metadata["hosts"] = ", ".join(row["hosts"])
+ except (KeyError, TypeError):
+ pass
customdata.append({"metadata": deepcopy(metadata)})
tput_kwargs = dict(
y=y_data,
)
tput_traces.append(go.Box(**tput_kwargs))
- if ttype in ("ndr", "pdr", "mrr"):
+ if ttype in C.TESTS_WITH_BANDWIDTH:
y_band, y_band_max = get_y_values(
itm_data,
y_band_max,
x_band.append(idx + 1)
band_traces.append(go.Box(**band_kwargs))
- if ttype == "pdr":
+ if ttype in C.TESTS_WITH_LATENCY:
y_lat, y_lat_max = get_y_values(
itm_data,
y_lat_max,
pl_tput["xaxis"]["ticktext"] = [str(i + 1) for i in range(len(sel))]
pl_tput["yaxis"]["title"] = f"Throughput [{'|'.join(sorted(y_units))}]"
if y_tput_max:
- pl_tput["yaxis"]["range"] = [0, int(y_tput_max) + 2e6]
+ pl_tput["yaxis"]["range"] = [0, int(y_tput_max) * 1.1]
fig_tput = go.Figure(data=tput_traces, layout=pl_tput)
if band_traces:
pl_band["yaxis"]["title"] = \
f"Bandwidth [{'|'.join(sorted(y_band_units))}]"
if y_band_max:
- pl_band["yaxis"]["range"] = [0, int(y_band_max) + 2e9]
+ pl_band["yaxis"]["range"] = [0, int(y_band_max) * 1.1]
fig_band = go.Figure(data=band_traces, layout=pl_band)
if lat_traces:
tst_params["core"].append(core.upper())
if framesize.upper() not in tst_params["frame-size"]:
tst_params["frame-size"].append(framesize.upper())
- if row["test_type"] == "mrr":
- if "MRR" not in tst_params["test-type"]:
- tst_params["test-type"].append("MRR")
- elif row["test_type"] == "ndrpdr":
+ if row["test_type"] == "ndrpdr":
if "NDR" not in tst_params["test-type"]:
tst_params["test-type"].extend(("NDR", "PDR", ))
elif row["test_type"] == "hoststack" and \
elif row["test_type"] == "hoststack" and row["tg_type"] == "ab":
if "CPS" not in tst_params["test-type"]:
tst_params["test-type"].extend(("CPS", "RPS"))
+ else: # MRR, SOAK
+ if row["test_type"].upper() not in tst_params["test-type"]:
+ tst_params["test-type"].append(row["test_type"].upper())
self._spec_tbs = tbs
# Read from files:
dbc.Badge(lst_itm[0]),
html.A(
lst_itm[1],
- href=f"{C.URL_JENKINS}{lst_itm[1]}",
+ href=f"{C.URL_LOGS}{lst_itm[1]}",
target="_blank"
)
])
test_type = "ndrpdr"
elif itm["testtype"] == "mrr":
test_type = "mrr"
+ elif itm["testtype"] == "soak":
+ test_type = "soak"
elif itm["area"] == "hoststack":
test_type = "hoststack"
df = data.loc[(
f"bandwidth [{row['result_bandwidth_unit']}]: "
f"{row['result_bandwidth_value'] * nf:,.0f}<br>"
)
+ elif ttype in ("soak", "soak-bandwidth"):
+ h_tput = (
+ f"tput [{row['result_critical_rate_lower_rate_unit']}]: "
+ f"{row['result_critical_rate_lower_rate_value'] * nf:,.0f}"
+ "<br>"
+ )
+ if pd.notna(row["result_critical_rate_lower_bandwidth_value"]):
+ bv = row['result_critical_rate_lower_bandwidth_value']
+ h_band = (
+ "bandwidth "
+ f"[{row['result_critical_rate_lower_bandwidth_unit']}]:"
+ f" {bv * nf:,.0f}"
+ "<br>"
+ )
+ try:
+ hosts = f"<br>hosts: {', '.join(row['hosts'])}"
+ except (KeyError, TypeError):
+ hosts = str()
hover_itm = (
f"dut: {name_lst[0]}<br>"
f"infra: {'-'.join(name_lst[1:5])}<br>"
f"date: {row['start_time'].strftime('%Y-%m-%d %H:%M:%S')}<br>"
f"{h_tput}{h_band}{h_lat}"
f"{row['dut_type']}-ref: {row['dut_version']}<br>"
- f"csit-ref: {row['job']}/{row['build']}<br>"
- f"hosts: {', '.join(row['hosts'])}"
+ f"csit-ref: {row['job']}/{row['build']}"
+ f"{hosts}"
)
hover.append(hover_itm)
if ttype == "latency":
hover_trend = list()
for avg, stdev, (_, row) in zip(trend_avg, trend_stdev, df.iterrows()):
+ try:
+ hosts = f"<br>hosts: {', '.join(row['hosts'])}"
+ except (KeyError, TypeError):
+ hosts = str()
hover_itm = (
f"dut: {name_lst[0]}<br>"
f"infra: {'-'.join(name_lst[1:5])}<br>"
f"trend [{row[C.UNIT[ttype]]}]: {avg:,.0f}<br>"
f"stdev [{row[C.UNIT[ttype]]}]: {stdev:,.0f}<br>"
f"{row['dut_type']}-ref: {row['dut_version']}<br>"
- f"csit-ref: {row['job']}/{row['build']}<br>"
- f"hosts: {', '.join(row['hosts'])}"
+ f"csit-ref: {row['job']}/{row['build']}"
+ f"{hosts}"
)
if ttype == "latency":
hover_itm = hover_itm.replace("[pps]", "[us]")
fig_tput = go.Figure()
fig_tput.add_traces(traces)
- if ttype in ("ndr", "pdr", "mrr", "hoststack-cps", "hoststack-rps"):
+ if ttype in C.TESTS_WITH_BANDWIDTH:
traces, _ = _generate_trending_traces(
f"{ttype}-bandwidth",
itm["id"],
fig_band = go.Figure()
fig_band.add_traces(traces)
- if ttype in ("pdr", "hoststack-cps", "hoststack-rps"):
+ if ttype in C.TESTS_WITH_LATENCY:
traces, _ = _generate_trending_traces(
"latency" if ttype == "pdr" else "hoststack-latency",
itm["id"],
tst_params["core"].append(core.upper())
if framesize.upper() not in tst_params["frame-size"]:
tst_params["frame-size"].append(framesize.upper())
- if row["test_type"] == "mrr":
- if "MRR" not in tst_params["test-type"]:
- tst_params["test-type"].append("MRR")
- elif row["test_type"] == "ndrpdr":
+ if row["test_type"] == "ndrpdr":
if "NDR" not in tst_params["test-type"]:
tst_params["test-type"].extend(("NDR", "PDR"))
elif row["test_type"] == "hoststack":
elif row["tg_type"] == "ab":
if "CPS" not in tst_params["test-type"]:
tst_params["test-type"].extend(("CPS", "RPS"))
+ else: # MRR, SOAK
+ if row["test_type"].upper() not in tst_params["test-type"]:
+ tst_params["test-type"].append(row["test_type"].upper())
self._spec_tbs = tbs
# Read from files:
# URL to Jenkins
URL_JENKINS = "https://jenkins.fd.io/job/"
+ # URL to logs
+ URL_LOGS = "https://s3-logs.fd.io/vex-yul-rot-jenkins-1/"
+
# URL to the documentation
URL_DOC_TRENDING = "https://csit.fd.io/cdocs/methodology/trending/analysis/"
URL_DOC_REL_NOTES = "https://csit.fd.io/cdocs/release_notes/current/"
"hoststack-cps-bandwidth": "result_bandwidth_value",
"hoststack-rps-bandwidth": "result_bandwidth_value",
"hoststack-bps": "result_bandwidth_value",
- "hoststack-latency": "result_latency_value"
+ "hoststack-latency": "result_latency_value",
+ "soak": "result_critical_rate_lower_rate_value",
+ "soak-bandwidth": "result_critical_rate_lower_bandwidth_value"
}
VALUE_ITER = {
"latency": "result_latency_forward_pdr_50_avg",
"hoststack-cps": "result_rate_value",
"hoststack-rps": "result_rate_value",
+ "hoststack-cps-bandwidth": "result_bandwidth_value",
+ "hoststack-rps-bandwidth": "result_bandwidth_value",
"hoststack-bps": "result_bandwidth_value",
- "hoststack-latency": "result_latency_value"
+ "hoststack-latency": "result_latency_value",
+ "soak": "result_critical_rate_lower_rate_value",
+ "soak-bandwidth": "result_critical_rate_lower_bandwidth_value"
}
UNIT = {
"hoststack-cps-bandwidth": "result_bandwidth_unit",
"hoststack-rps-bandwidth": "result_bandwidth_unit",
"hoststack-bps": "result_bandwidth_unit",
- "hoststack-latency": "result_latency_unit"
+ "hoststack-latency": "result_latency_unit",
+ "soak": "result_critical_rate_lower_rate_unit",
+ "soak-bandwidth": "result_critical_rate_lower_bandwidth_unit"
}
+ TESTS_WITH_BANDWIDTH = (
+ "ndr",
+ "pdr",
+ "mrr",
+ "hoststack-cps",
+ "hoststack-rps",
+ "soak"
+ )
+ TESTS_WITH_LATENCY = (
+ "pdr",
+ "hoststack-cps",
+ "hoststack-rps"
+ )
+
# Latencies.
LAT_HDRH = ( # Do not change the order
"result_latency_forward_pdr_0_hdrh",
dbc.Badge(lst_itm[0]),
html.A(
lst_itm[1],
- href=f"{C.URL_JENKINS}{lst_itm[1]}",
+ href=f"{C.URL_LOGS}{lst_itm[1]}",
target="_blank"
)
])
continue
list_group_item = dbc.ListGroupItem([
dbc.Badge(k),
- html.A(v, href=f"{C.URL_JENKINS}{v}", target="_blank")
+ html.A(v, href=f"{C.URL_LOGS}{v}", target="_blank")
])
else:
list_group_item = dbc.ListGroupItem([dbc.Badge(k), v])
Following throughput test methods are used:
-- MLRsearch - Multiple Loss Ratio search
-- PLRsearch - Probabilistic Loss Ratio search
-- MRR - Maximum Receive Rate
+- MLRsearch - Multiple Loss Ratio search, used in NDRPDR tests.
+- PLRsearch - Probabilistic Loss Ratio search, used in SOAK tests.
+- MRR - Maximum Receive Rate tests, the method based on FRMOL from RFC 2285.
Description of each test method is followed by generic test properties
shared by all methods.
-## MLRsearch Tests
+## NDRPDR Tests
+
+These tests employ MLRsearch to find two conditional throughput values.
+NDR for zero loss ratio goal and PDR for 0.5% loss ratio goal.
+
+### Algorithm Details
+
+See [MLRSearch]({{< ref "mlr_search/#MLRsearch" >}}) section for more detail.
+MLRsearch is being standardized in IETF in
+[draft-ietf-bmwg-mlrsearch](https://datatracker.ietf.org/doc/html/draft-ietf-bmwg-mlrsearch-06).
### Description
-Multiple Loss Ratio search (MLRsearch) tests discover multiple packet
-throughput rates in a single search, reducing the overall test execution
-time compared to a binary search. Each rate is associated with a
-distinct Packet Loss Ratio (PLR) criteria. In FD.io CSIT two throughput
-rates are discovered: Non-Drop Rate (NDR, with zero packet loss, PLR=0)
-and Partial Drop Rate (PDR, with PLR<0.5%). MLRsearch is compliant with
-RFC2544.
+Multiple Loss Ratio search (MLRsearch) algorithm can discover multiple
+conditional throughputs in a single search,
+reducing the overall test execution time compared to a binary search.
+In FD.io CSIT, conditional throughputs are discovered for two search goals:
+Non-Drop Rate (NDR, zero loss ratio goal)
+and Partial Drop Rate (PDR, 0.5% loss ratio goal).
+Other inputs are common for both goals:
+Goal width is 0.5%, trial duration is 1 second, duration sum goal is 21 seconds
+and exceed ratio is 50%.
+
+The main algorithm expresses the conditional throughput based on one-port load.
+The results presented in CSIT show aggregate load,
+(the value from the search is doubled if the tests uses bidirectional traffic).
### Usage
all frame sizes and for all tests are presented in detailed results
tables.
-### Details
+## SOAK Tests
-See [MLRSearch]({{< ref "mlr_search/#MLRsearch" >}}) section for more detail.
-MLRsearch is being standardized in IETF in
-[draft-ietf-bmwg-mlrsearch](https://datatracker.ietf.org/doc/html/draft-ietf-bmwg-mlrsearch-01).
+These tests employ PLRsearch to find a critical load value.
-## PLRsearch Tests
+### Algorithm Details
+
+See [PLRSearch]({{< ref "plr_search/#PLRsearch" >}}) methodology section for
+more detail. PLRsearch is being standardized in IETF in
+[draft-vpolak-bmwg-plrsearch](https://tools.ietf.org/html/draft-vpolak-bmwg-plrsearch).
### Description
Probabilistic Loss Ratio search (PLRsearch) tests discovers a packet
throughput rate associated with configured Packet Loss Ratio (PLR)
-criteria for tests run over an extended period of time a.k.a. soak
+target for tests run over an extended period of time a.k.a. soak
testing. PLRsearch assumes that system under test is probabilistic in
nature, and not deterministic.
### Usage
-PLRsearch are run to discover a sustained throughput for PLR=10^-7^
+PLRsearch are run to discover a critical load for PLR=10^-7^
(close to NDR) for VPP release covered by CSIT report. Results for small
frame sizes (64B/78B) are presented in packet throughput graphs (Box
Plots) for a small subset of baseline tests.
-Each soak test lasts 30 minutes and is executed at least twice. Results are
-compared against NDR and PDR rates discovered with MLRsearch.
+Each soak test lasts 30 minutes and is executed at least twice.
-### Details
+## MRR Tests
-See [PLRSearch]({{< ref "plr_search/#PLRsearch" >}}) methodology section for
-more detail. PLRsearch is being standardized in IETF in
-[draft-vpolak-bmwg-plrsearch](https://tools.ietf.org/html/draft-vpolak-bmwg-plrsearch).
+### Algorithm Details
-## MRR Tests
+See [MRR Throughput]({{< ref "mrr/#MRR" >}})
+section for more detail about MRR tests configuration.
+
+FD.io CSIT performance dashboard includes complete description of
+[daily performance trending tests]({{< ref "../../trending/analysis" >}})
+and [VPP per patch tests]({{< ref "../../per_patch_testing.md" >}}).
### Description
### Usage
-MRR tests are much faster than MLRsearch as they rely on a single trial
-or a small set of trials with very short duration. It is this property
+MRR tests are much faster than MLRsearch as they rely on
+a small set of trials with very short duration. It is this property
that makes them suitable for continuous execution in daily performance
trending jobs enabling detection of performance anomalies (regressions,
progressions) resulting from data plane code changes.
comparisons between releases and test environments. Small frame sizes
only (64B/78B, IMIX).
-### Details
-
-See [MRR Throughput]({{< ref "mrr/#MRR" >}})
-section for more detail about MRR tests configuration.
-
-FD.io CSIT performance dashboard includes complete description of
-[daily performance trending tests]({{< ref "../../trending/analysis" >}})
-and [VPP per patch tests]({{< ref "../../per_patch_testing.md" >}}).
-
## Generic Test Properties
All data plane throughput test methodologies share following generic
it only cares about aggregate counts of packets sent and packets lost),
but debug output from traffic generator lists unidirectional values.
+In CSIT, tests that employ PLRsearch are identified as SOAK tests,
+the search time is set to 30 minuts.
+
### Measurement Delay
In a sample implemenation in FD.io CSIT project, there is roughly 0.5
#### Summary
-The two graphs show the behavior of PLRsearch algorithm applied to soaking test
+The two graphs show the behavior of PLRsearch algorithm applied to soak test
when some of PLRsearch assumptions do not hold:
+ L2 patch measurement results violate the assumption
--- /dev/null
+job "${job_name}" {
+ datacenters = "${datacenters}"
+ type = "${type}"
+ periodic {
+ cron = "${cron}"
+ prohibit_overlap = "${prohibit_overlap}"
+ time_zone = "${time_zone}"
+ }
+ group "${job_name}" {
+ restart {
+ mode = "fail"
+ }
+ constraint {
+ attribute = "$${attr.cpu.arch}"
+ operator = "!="
+ value = "arm64"
+ }
+ constraint {
+ attribute = "$${node.class}"
+ value = "builder"
+ }
+ task "${job_name}" {
+ artifact {
+ source = "git::https://github.com/FDio/csit"
+ destination = "local/csit"
+ }
+ driver = "docker"
+ config {
+ image = "${image}"
+ command = "gluesparksubmit"
+ args = [
+ "--driver-memory", "30g",
+ "--executor-memory", "30g",
+ "--executor-cores", "2",
+ "--master", "local[2]",
+ "trending_soak.py"
+ ]
+ work_dir = "/local/csit/csit.infra.etl"
+ }
+ env {
+ AWS_ACCESS_KEY_ID = "${aws_access_key_id}"
+ AWS_SECRET_ACCESS_KEY = "${aws_secret_access_key}"
+ AWS_DEFAULT_REGION = "${aws_default_region}"
+ OUT_AWS_ACCESS_KEY_ID = "${out_aws_access_key_id}"
+ OUT_AWS_SECRET_ACCESS_KEY = "${out_aws_secret_access_key}"
+ OUT_AWS_DEFAULT_REGION = "${out_aws_default_region}"
+ ${ envs }
+ }
+ resources {
+ cpu = ${cpu}
+ memory = ${memory}
+ }
+ }
+ }
+}
memory = 60000
}
-module "etl-iterative-hoststack-rls2402" {
+module "etl-trending-soak" {
providers = {
nomad = nomad.yul1
}
out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
cron = "0 30 0 * * * *"
datacenters = ["yul1"]
- job_name = "etl-iterative-hoststack-rls2402"
-}
-
-module "etl-iterative-mrr-rls2402" {
- providers = {
- nomad = nomad.yul1
- }
- source = "../"
-
- aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
- aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
- aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
- out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
- out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
- out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
- cron = "0 30 0 * * * *"
- datacenters = ["yul1"]
- job_name = "etl-iterative-mrr-rls2402"
-}
-
-module "etl-iterative-ndrpdr-rls2402" {
- providers = {
- nomad = nomad.yul1
- }
- source = "../"
-
- aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
- aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
- aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
- out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
- out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
- out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
- cron = "0 30 0 * * * *"
- datacenters = ["yul1"]
- job_name = "etl-iterative-ndrpdr-rls2402"
-}
-
-module "etl-iterative-reconf-rls2402" {
- providers = {
- nomad = nomad.yul1
- }
- source = "../"
-
- aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
- aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
- aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
- out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
- out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
- out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
- cron = "0 30 0 * * * *"
- datacenters = ["yul1"]
- job_name = "etl-iterative-reconf-rls2402"
-}
-
-module "etl-iterative-soak-rls2402" {
- providers = {
- nomad = nomad.yul1
- }
- source = "../"
-
- aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
- aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
- aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
- out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
- out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
- out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
- cron = "0 30 0 * * * *"
- datacenters = ["yul1"]
- job_name = "etl-iterative-soak-rls2402"
-}
-
-module "etl-coverage-device-rls2402" {
- providers = {
- nomad = nomad.yul1
- }
- source = "../"
-
- aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
- aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
- aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
- out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
- out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
- out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
- cron = "0 30 0 * * * *"
- datacenters = ["yul1"]
- job_name = "etl-coverage-device-rls2402"
-}
-
-module "etl-coverage-hoststack-rls2402" {
- providers = {
- nomad = nomad.yul1
- }
- source = "../"
-
- aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
- aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
- aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
- out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
- out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
- out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
- cron = "0 30 0 * * * *"
- datacenters = ["yul1"]
- job_name = "etl-coverage-hoststack-rls2402"
-}
-
-module "etl-coverage-mrr-rls2402" {
- providers = {
- nomad = nomad.yul1
- }
- source = "../"
-
- aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
- aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
- aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
- out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
- out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
- out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
- cron = "0 30 0 * * * *"
- datacenters = ["yul1"]
- job_name = "etl-coverage-mrr-rls2402"
-}
-
-module "etl-coverage-ndrpdr-rls2402" {
- providers = {
- nomad = nomad.yul1
- }
- source = "../"
-
- aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
- aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
- aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
- out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
- out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
- out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
- cron = "0 30 0 * * * *"
- datacenters = ["yul1"]
- job_name = "etl-coverage-ndrpdr-rls2402"
-}
-
-module "etl-coverage-reconf-rls2402" {
- providers = {
- nomad = nomad.yul1
- }
- source = "../"
-
- aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
- aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
- aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
- out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
- out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
- out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
- cron = "0 30 0 * * * *"
- datacenters = ["yul1"]
- job_name = "etl-coverage-reconf-rls2402"
+ job_name = "etl-trending-soak"
+ memory = 60000
}
-module "etl-coverage-soak-rls2402" {
- providers = {
- nomad = nomad.yul1
- }
- source = "../"
-
- aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
- aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
- aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
- out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
- out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
- out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
- cron = "0 30 0 * * * *"
- datacenters = ["yul1"]
- job_name = "etl-coverage-soak-rls2402"
-}
+#module "etl-iterative-hoststack-rls2402" {
+# providers = {
+# nomad = nomad.yul1
+# }
+# source = "../"
+#
+# aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
+# aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
+# aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
+# out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
+# out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
+# out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
+# cron = "0 30 0 * * * *"
+# datacenters = ["yul1"]
+# job_name = "etl-iterative-hoststack-rls2402"
+#}
+#
+#module "etl-iterative-mrr-rls2402" {
+# providers = {
+# nomad = nomad.yul1
+# }
+# source = "../"
+#
+# aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
+# aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
+# aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
+# out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
+# out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
+# out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
+# cron = "0 30 0 * * * *"
+# datacenters = ["yul1"]
+# job_name = "etl-iterative-mrr-rls2402"
+#}
+#
+#module "etl-iterative-ndrpdr-rls2402" {
+# providers = {
+# nomad = nomad.yul1
+# }
+# source = "../"
+#
+# aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
+# aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
+# aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
+# out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
+# out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
+# out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
+# cron = "0 30 0 * * * *"
+# datacenters = ["yul1"]
+# job_name = "etl-iterative-ndrpdr-rls2402"
+#}
+#
+#module "etl-iterative-reconf-rls2402" {
+# providers = {
+# nomad = nomad.yul1
+# }
+# source = "../"
+#
+# aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
+# aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
+# aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
+# out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
+# out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
+# out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
+# cron = "0 30 0 * * * *"
+# datacenters = ["yul1"]
+# job_name = "etl-iterative-reconf-rls2402"
+#}
+#
+#module "etl-iterative-soak-rls2402" {
+# providers = {
+# nomad = nomad.yul1
+# }
+# source = "../"
+#
+# aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
+# aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
+# aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
+# out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
+# out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
+# out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
+# cron = "0 30 0 * * * *"
+# datacenters = ["yul1"]
+# job_name = "etl-iterative-soak-rls2402"
+#}
+#
+#module "etl-coverage-device-rls2402" {
+# providers = {
+# nomad = nomad.yul1
+# }
+# source = "../"
+#
+# aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
+# aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
+# aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
+# out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
+# out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
+# out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
+# cron = "0 30 0 * * * *"
+# datacenters = ["yul1"]
+# job_name = "etl-coverage-device-rls2402"
+#}
+#
+#module "etl-coverage-hoststack-rls2402" {
+# providers = {
+# nomad = nomad.yul1
+# }
+# source = "../"
+#
+# aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
+# aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
+# aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
+# out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
+# out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
+# out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
+# cron = "0 30 0 * * * *"
+# datacenters = ["yul1"]
+# job_name = "etl-coverage-hoststack-rls2402"
+#}
+#
+#module "etl-coverage-mrr-rls2402" {
+# providers = {
+# nomad = nomad.yul1
+# }
+# source = "../"
+#
+# aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
+# aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
+# aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
+# out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
+# out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
+# out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
+# cron = "0 30 0 * * * *"
+# datacenters = ["yul1"]
+# job_name = "etl-coverage-mrr-rls2402"
+#}
+#
+#module "etl-coverage-ndrpdr-rls2402" {
+# providers = {
+# nomad = nomad.yul1
+# }
+# source = "../"
+#
+# aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
+# aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
+# aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
+# out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
+# out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
+# out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
+# cron = "0 30 0 * * * *"
+# datacenters = ["yul1"]
+# job_name = "etl-coverage-ndrpdr-rls2402"
+#}
+#
+#module "etl-coverage-reconf-rls2402" {
+# providers = {
+# nomad = nomad.yul1
+# }
+# source = "../"
+#
+# aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
+# aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
+# aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
+# out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
+# out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
+# out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
+# cron = "0 30 0 * * * *"
+# datacenters = ["yul1"]
+# job_name = "etl-coverage-reconf-rls2402"
+#}
+#
+#module "etl-coverage-soak-rls2402" {
+# providers = {
+# nomad = nomad.yul1
+# }
+# source = "../"
+#
+# aws_access_key_id = data.vault_generic_secret.fdio_logs.data["access_key"]
+# aws_secret_access_key = data.vault_generic_secret.fdio_logs.data["secret_key"]
+# aws_default_region = data.vault_generic_secret.fdio_logs.data["region"]
+# out_aws_access_key_id = data.vault_generic_secret.fdio_docs.data["access_key"]
+# out_aws_secret_access_key = data.vault_generic_secret.fdio_docs.data["secret_key"]
+# out_aws_default_region = data.vault_generic_secret.fdio_docs.data["region"]
+# cron = "0 30 0 * * * *"
+# datacenters = ["yul1"]
+# job_name = "etl-coverage-soak-rls2402"
+#}
+#
\ No newline at end of file
#### avf
##### eth-l2bdbasemaclrn-eth-2memif-1dcr
1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
-#### dpdk-vfio-pci
-##### eth-l2bdbasemaclrn-eth-2memif-1dcr
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
## ./ip4
### intel-e810cq
#### avf
##### ethip4-ip4base
1c AND 64b AND soak AND e810cq AND drv_avf AND ethip4-ip4base
-#### dpdk-vfio-pci
-##### ethip4-ip4base
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND ethip4-ip4base
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND soak AND e810cq AND drv_avf AND ethip4-ip4scale20k-rnd
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+1c AND 64b AND soak AND e810cq AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-tput
+1c AND 100b AND soak AND e810cq AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-tput
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+1c AND 64b AND soak AND e810cq AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-tput
+1c AND 100b AND soak AND e810cq AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-tput
## ./ip6
#### avf
##### ethip6-ip6base
1c AND 78b AND soak AND e810cq AND drv_avf AND ethip6-ip6base
-#### dpdk-vfio-pci
-##### ethip6-ip6base
-1c AND 78b AND soak AND e810cq AND drv_vfio_pci AND ethip6-ip6base
+##### ethip6-ip6scale20k-rnd
+1c AND 78b AND soak AND e810cq AND drv_avf AND ethip6-ip6scale20k-rnd
## ./l2
+### mellanox-cx556a
+#### rdma-core
+##### eth-l2bdbasemaclrn
+1c AND 64b AND soak AND cx556a AND drv_rdma_core AND eth-l2bdbasemaclrn
+### intel-e810cq
#### avf
-##### eth-l2xcbase
-1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2xcbase
##### eth-l2bdbasemaclrn
1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn
-#### dpdk-vfio-pci
-##### eth-l2xcbase
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2xcbase
-##### eth-l2bdbasemaclrn
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdscale1mmaclrn
## ./vm_vhost
+### intel-e810cq
#### avf
-##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
-# #### dpdk-vfio-pci
-# ##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-# 1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-# ##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
-# 1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
#### avf
##### eth-l2bdbasemaclrn-eth-2memif-1dcr
1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
-#### dpdk-vfio-pci
-##### eth-l2bdbasemaclrn-eth-2memif-1dcr
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
## ./ip4
### intel-e810cq
#### avf
##### ethip4-ip4base
1c AND 64b AND soak AND e810cq AND drv_avf AND ethip4-ip4base
-#### dpdk-vfio-pci
-##### ethip4-ip4base
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND ethip4-ip4base
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND soak AND e810cq AND drv_avf AND ethip4-ip4scale20k-rnd
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+1c AND 64b AND soak AND e810cq AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-tput
+1c AND 100b AND soak AND e810cq AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-tput
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+1c AND 64b AND soak AND e810cq AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-tput
+1c AND 100b AND soak AND e810cq AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-tput
## ./ip6
#### avf
##### ethip6-ip6base
1c AND 78b AND soak AND e810cq AND drv_avf AND ethip6-ip6base
-#### dpdk-vfio-pci
-##### ethip6-ip6base
-1c AND 78b AND soak AND e810cq AND drv_vfio_pci AND ethip6-ip6base
+##### ethip6-ip6scale20k-rnd
+1c AND 78b AND soak AND e810cq AND drv_avf AND ethip6-ip6scale20k-rnd
## ./l2
+### mellanox-cx7veat
+#### mlx5-core
+##### eth-l2bdbasemaclrn
+1c AND 64b AND soak AND 2p1cx7veat AND drv_mlx5_core AND eth-l2bdbasemaclrn
+### intel-e810cq
#### avf
-##### eth-l2xcbase
-1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2xcbase
##### eth-l2bdbasemaclrn
1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn
-#### dpdk-vfio-pci
-##### eth-l2xcbase
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2xcbase
-##### eth-l2bdbasemaclrn
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdscale1mmaclrn
## ./vm_vhost
+### intel-e810cq
#### avf
-##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
-# #### dpdk-vfio-pci
-# ##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-# 1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-# ##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
-# 1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
\ No newline at end of file
##### eth-ip4tcphttp-ldpreload-nginx-1_21_5
1c AND 0b AND rps AND 2p1cx7veat AND drv_mlx5_core AND eth-ip4tcphttp-ldpreload-nginx-1_21_5
2c AND 0b AND rps AND 2p1cx7veat AND drv_mlx5_core AND eth-ip4tcphttp-ldpreload-nginx-1_21_5
+##### eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5
+1c AND 0b AND cps AND 2p1cx7veat AND drv_mlx5_core AND eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5
+2c AND 0b AND cps AND 2p1cx7veat AND drv_mlx5_core AND eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5
+##### eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5
+1c AND 0b AND rps AND 2p1cx7veat AND drv_mlx5_core AND eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5
+2c AND 0b AND rps AND 2p1cx7veat AND drv_mlx5_core AND eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5
### intel-e810cq
#### dpdk-vfio-pci
##### eth-ip4tcphttp-ldpreload-nginx-1_21_5
2c AND 0b AND cps AND e810cq AND drv_vfio_pci AND eth-ip4tcphttp-ldpreload-nginx-1_21_5
##### eth-ip4tcphttp-ldpreload-nginx-1_21_5
1c AND 0b AND rps AND e810cq AND drv_vfio_pci AND eth-ip4tcphttp-ldpreload-nginx-1_21_5
-2c AND 0b AND rps AND e810cq AND drv_vfio_pci AND eth-ip4tcphttp-ldpreload-nginx-1_21_5
\ No newline at end of file
+2c AND 0b AND rps AND e810cq AND drv_vfio_pci AND eth-ip4tcphttp-ldpreload-nginx-1_21_5
+##### eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5
+1c AND 0b AND cps AND e810cq AND drv_vfio_pci AND eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5
+2c AND 0b AND cps AND e810cq AND drv_vfio_pci AND eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5
+##### eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5
+1c AND 0b AND rps AND e810cq AND drv_vfio_pci AND eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5
+2c AND 0b AND rps AND e810cq AND drv_vfio_pci AND eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5
\ No newline at end of file
#### avf
##### eth-l2bdbasemaclrn-eth-2memif-1dcr
1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
-#### dpdk-vfio-pci
-##### eth-l2bdbasemaclrn-eth-2memif-1dcr
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
## ./ip4
### intel-e810cq
#### avf
##### ethip4-ip4base
1c AND 64b AND soak AND e810cq AND drv_avf AND ethip4-ip4base
-#### dpdk-vfio-pci
-##### ethip4-ip4base
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND ethip4-ip4base
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND soak AND e810cq AND drv_avf AND ethip4-ip4scale20k-rnd
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+1c AND 64b AND soak AND e810cq AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-tput
+1c AND 100b AND soak AND e810cq AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-tput
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+1c AND 64b AND soak AND e810cq AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-cps
+##### ethip4tcp-nat44ed-h65536-p63-s4128768-tput
+1c AND 100b AND soak AND e810cq AND drv_avf AND ethip4tcp-nat44ed-h65536-p63-s4128768-tput
## ./ip6
#### avf
##### ethip6-ip6base
1c AND 78b AND soak AND e810cq AND drv_avf AND ethip6-ip6base
-#### dpdk-vfio-pci
-##### ethip6-ip6base
-1c AND 78b AND soak AND e810cq AND drv_vfio_pci AND ethip6-ip6base
+##### ethip6-ip6scale20k-rnd
+1c AND 78b AND soak AND e810cq AND drv_avf AND ethip6-ip6scale20k-rnd
## ./l2
+### mellanox-cx7veat
+#### mlx5-core
+##### eth-l2bdbasemaclrn
+1c AND 64b AND soak AND 2p1cx7veat AND drv_mlx5_core AND eth-l2bdbasemaclrn
+### intel-e810cq
#### avf
-##### eth-l2xcbase
-1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2xcbase
##### eth-l2bdbasemaclrn
1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn
-#### dpdk-vfio-pci
-##### eth-l2xcbase
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2xcbase
-##### eth-l2bdbasemaclrn
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdscale1mmaclrn
## ./vm_vhost
+### intel-e810cq
#### avf
-##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
-# #### dpdk-vfio-pci
-# ##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-# 1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-# ##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
-# 1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+
+# TODO: Add memif-dma test?
+++ /dev/null
-# 3n-icx
-### intel-e810cq
-#### dpdk-vfio-pci
-##### ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-1c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-2c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-4c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-##### ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-1c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-2c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-4c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-##### ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-1c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-2c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-4c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-##### ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-1c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-2c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-4c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-##### ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-1c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-2c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-4c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-##### ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-1c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-2c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-4c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-##### ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm
-1c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm
-2c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm
-4c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm
-##### ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-1c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-2c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-4c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-##### ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-1c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-2c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-4c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-##### ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-1c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-2c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-4c AND imix AND ndrpdr AND e810cq AND drv_vfio_pci AND ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
\ No newline at end of file
#### avf
##### eth-l2bdbasemaclrn-eth-2memif-1dcr
1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
-#### dpdk-vfio-pci
-##### eth-l2bdbasemaclrn-eth-2memif-1dcr
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+## ./crypto
+### intel-e810cq
+#### avf
+##### ethip4ipsec10000tnlsw-ip4base-int-aes128cbc-hmac512sha
+1c AND 1518b AND soak AND e810cq AND drv_avf AND ethip4ipsec1000tnlsw-ip4base-int-aes128cbc-hmac512sha
+##### ethip4ipsec1000tnlsw-ip4base-int-aes256gcm
+1c AND 1518b AND soak AND e810cq AND drv_avf AND ethip4ipsec1000tnlsw-ip4base-int-aes256gcm
## ./ip4
### intel-e810cq
#### avf
##### ethip4-ip4base
1c AND 64b AND soak AND e810cq AND drv_avf AND ethip4-ip4base
-#### dpdk-vfio-pci
-##### ethip4-ip4base
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND ethip4-ip4base
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND soak AND e810cq AND drv_avf AND ethip4-ip4scale20k-rnd
## ./ip6
#### avf
##### ethip6-ip6base
1c AND 78b AND soak AND e810cq AND drv_avf AND ethip6-ip6base
-#### dpdk-vfio-pci
-##### ethip6-ip6base
-1c AND 78b AND soak AND e810cq AND drv_vfio_pci AND ethip6-ip6base
+##### ethip6-ip6scale20k-rnd
+1c AND 78b AND soak AND e810cq AND drv_avf AND ethip6-ip6scale20k-rnd
## ./l2
+### mellanox-cx6dx
+#### mlx5-core
+##### eth-l2bdbasemaclrn
+1c AND 64b AND soak AND cx6dx AND drv_mlx5_core AND eth-l2bdbasemaclrn
+### intel-e810cq
#### avf
-##### eth-l2xcbase
-1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2xcbase
##### eth-l2bdbasemaclrn
1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn
-#### dpdk-vfio-pci
-##### eth-l2xcbase
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2xcbase
-##### eth-l2bdbasemaclrn
-1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdscale1mmaclrn
## ./vm_vhost
+### intel-e810cq
#### avf
-##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
1c AND 64b AND soak AND e810cq AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
-# #### dpdk-vfio-pci
-# ##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-# 1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-# ##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
-# 1c AND 64b AND soak AND e810cq AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
+
+# TODO: No IPsecHW available, maybe add WireguardSW and GtpuHW?
1c AND 1518b AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec1000tnlsw-ip4base-int-aes256gcm-reassembly
2c AND 1518b AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec1000tnlsw-ip4base-int-aes256gcm-reassembly
4c AND 1518b AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec1000tnlsw-ip4base-int-aes256gcm-reassembly
+##### ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+2c AND 1518b AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+3c AND 1518b AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+4c AND 1518b AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+2c AND imix AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+3c AND imix AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+4c AND imix AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+##### ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+1c AND 1518b AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+2c AND 1518b AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+4c AND 1518b AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+1c AND imix AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+2c AND imix AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+4c AND imix AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+##### ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+1c AND 1518b AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+2c AND 1518b AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+4c AND 1518b AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+1c AND imix AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+2c AND imix AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+4c AND imix AND mrr AND e823c AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
## ./ip4
### intel-e823c
#### dpdk-vfio-pci
1c AND 1518b AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec1000tnlsw-ip4base-int-aes256gcm-reassembly
2c AND 1518b AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec1000tnlsw-ip4base-int-aes256gcm-reassembly
4c AND 1518b AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec1000tnlsw-ip4base-int-aes256gcm-reassembly
+##### ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+2c AND 1518b AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+3c AND 1518b AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+4c AND 1518b AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+2c AND imix AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+3c AND imix AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+4c AND imix AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+##### ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+1c AND 1518b AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+2c AND 1518b AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+4c AND 1518b AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+1c AND imix AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+2c AND imix AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+4c AND imix AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+##### ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+1c AND 1518b AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+2c AND 1518b AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+4c AND 1518b AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+1c AND imix AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+2c AND imix AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+4c AND imix AND ndrpdr AND e823c AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
## ./ip4
### intel-e823c
#### dpdk-vfio-pci
#### avf
##### eth-l2bdbasemaclrn-eth-2memif-1dcr
1c AND 64b AND soak AND e823c AND drv_avf AND eth-l2bdbasemaclrn-eth-2memif-1dcr
-#### dpdk-vfio-pci
-##### eth-l2bdbasemaclrn-eth-2memif-1dcr
-1c AND 64b AND soak AND e823c AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2memif-1dcr
+## ./crypto
+### intel-e823c
+#### avf
+##### ethip4ipsec1000tnlsw-ip4base-int-aes128cbc-hmac512sha
+1c AND 1518b AND soak AND e823c AND drv_avf AND ethip4ipsec1000tnlsw-ip4base-int-aes128cbc-hmac512sha
+##### ethip4ipsec1000tnlsw-ip4base-int-aes256gcm
+1c AND 1518b AND soak AND e823c AND drv_avf AND ethip4ipsec1000tnlsw-ip4base-int-aes256gcm
+##### ethip4ipsec1000tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+1c AND 1518b AND soak AND e823c AND drv_avf AND ethip4ipsec1000tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+##### ethip4ipsec1000tnlhwasync-ip4base-int-aes256gcm
+1c AND 1518b AND soak AND e823c AND drv_avf AND ethip4ipsec1000tnlhwasync-ip4base-int-aes256gcm
## ./ip4
### intel-e823c
#### avf
##### ethip4-ip4base
1c AND 64b AND soak AND e823c AND drv_avf AND ethip4-ip4base
-#### dpdk-vfio-pci
-##### ethip4-ip4base
-1c AND 64b AND soak AND e823c AND drv_vfio_pci AND ethip4-ip4base
+##### ethip4-ip4scale20k-rnd
+1c AND 64b AND soak AND e823c AND drv_avf AND ethip4-ip4scale20k-rnd
## ./ip6
#### avf
##### ethip6-ip6base
1c AND 78b AND soak AND e823c AND drv_avf AND ethip6-ip6base
-#### dpdk-vfio-pci
-##### ethip6-ip6base
-1c AND 78b AND soak AND e823c AND drv_vfio_pci AND ethip6-ip6base
+##### ethip6-ip6scale20k-rnd
+1c AND 78b AND soak AND e823c AND drv_avf AND ethip6-ip6scale20k-rnd
## ./l2
+### mellanox-cx6dx
+#### mlx5-core
+##### eth-l2bdbasemaclrn
+1c AND 64b AND soak AND cx6dx AND drv_mlx5_core AND eth-l2bdbasemaclrn
+### intel-e823c
#### avf
-##### eth-l2xcbase
-1c AND 64b AND soak AND e823c AND drv_avf AND eth-l2xcbase
##### eth-l2bdbasemaclrn
1c AND 64b AND soak AND e823c AND drv_avf AND eth-l2bdbasemaclrn
-#### dpdk-vfio-pci
-##### eth-l2xcbase
-1c AND 64b AND soak AND e823c AND drv_vfio_pci AND eth-l2xcbase
-##### eth-l2bdbasemaclrn
-1c AND 64b AND soak AND e823c AND drv_vfio_pci AND eth-l2bdbasemaclrn
+##### eth-l2bdscale1mmaclrn
+1c AND 64b AND soak AND e823c AND drv_avf AND eth-l2bdscale1mmaclrn
## ./vm_vhost
+### intel-e823c
#### avf
-##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-1c AND 64b AND soak AND e823c AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
1c AND 64b AND soak AND e823c AND drv_avf AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
-# #### dpdk-vfio-pci
-# ##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-# 1c AND 64b AND soak AND e823c AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm
-# ##### eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
-# 1c AND 64b AND soak AND e823c AND drv_vfio_pci AND eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-vppl2xc
1c AND 1518b AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-ip4base-int-aes256gcm-reassembly
2c AND 1518b AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-ip4base-int-aes256gcm-reassembly
4c AND 1518b AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-ip4base-int-aes256gcm-reassembly
+##### ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+2c AND 1518b AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+3c AND 1518b AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+4c AND 1518b AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+2c AND imix AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+3c AND imix AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+4c AND imix AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+##### ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+1c AND 1518b AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+2c AND 1518b AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+4c AND 1518b AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+1c AND imix AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+2c AND imix AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+4c AND imix AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+##### ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+1c AND 1518b AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+2c AND 1518b AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+4c AND 1518b AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+1c AND imix AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+2c AND imix AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+4c AND imix AND mrr AND e822cq AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
## ./ip4
### intel-e822cq
#### dpdk-vfio-pci
1c AND 1518b AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-ip4base-int-aes256gcm-reassembly
2c AND 1518b AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-ip4base-int-aes256gcm-reassembly
4c AND 1518b AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec1000tnlsw-ip4base-int-aes256gcm-reassembly
+##### ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+2c AND 1518b AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+3c AND 1518b AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+4c AND 1518b AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+2c AND imix AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+3c AND imix AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+4c AND imix AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec1tnlhwasync-ip4base-int-aes128cbc-hmac512sha
+##### ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+1c AND 1518b AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+2c AND 1518b AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+4c AND 1518b AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+1c AND imix AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+2c AND imix AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+4c AND imix AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec4tnlhwasync-ip4base-int-aes256gcm
+##### ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+1c AND 1518b AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+2c AND 1518b AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+4c AND 1518b AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+1c AND imix AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+2c AND imix AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
+4c AND imix AND ndrpdr AND e822cq AND drv_vfio_pci AND ethip4ipsec10000tnlhwasync-ip4base-int-aes256gcm
## ./ip4
### intel-e822cq
#### dpdk-vfio-pci
"""IPsec utilities library."""
from enum import Enum, IntEnum
-from io import open
-from ipaddress import ip_network, ip_address
+from io import open, TextIOWrapper
+from ipaddress import ip_network, ip_address, IPv4Address, IPv6Address
from random import choice
from string import ascii_letters
+from typing import Iterable, List, Optional, Sequence, Tuple, Union
from robot.libraries.BuiltIn import BuiltIn
from resources.libraries.python.Constants import Constants
+from resources.libraries.python.enum_util import get_enum_instance
from resources.libraries.python.IncrementUtil import ObjIncrement
from resources.libraries.python.InterfaceUtil import (
InterfaceUtil,
IPSEC_REPLAY_WINDOW_DEFAULT = 64
-def gen_key(length):
+def gen_key(length: int) -> bytes:
"""Generate random string as a key.
:param length: Length of generated payload.
)
-class PolicyAction(Enum):
- """Policy actions."""
+# TODO: Introduce a metaclass that adds .find and .InputType automatically?
+class IpsecSpdAction(Enum):
+ """IPsec SPD actions.
- BYPASS = ("bypass", 0)
+ Mirroring VPP: src/vnet/ipsec/ipsec_types.api enum ipsec_spd_action.
+ """
+
+ BYPASS = NONE = ("bypass", 0)
DISCARD = ("discard", 1)
+ RESOLVE = ("resolve", 2)
PROTECT = ("protect", 3)
- def __init__(self, policy_name, policy_int_repr):
- self.policy_name = policy_name
- self.policy_int_repr = policy_int_repr
+ def __init__(self, action_name: str, action_int_repr: int):
+ self.action_name = action_name
+ self.action_int_repr = action_int_repr
- def __str__(self):
- return self.policy_name
+ def __str__(self) -> str:
+ return self.action_name
- def __int__(self):
- return self.policy_int_repr
+ def __int__(self) -> int:
+ return self.action_int_repr
class CryptoAlg(Enum):
"""Encryption algorithms."""
+ NONE = ("none", 0, "none", 0)
AES_CBC_128 = ("aes-cbc-128", 1, "AES-CBC", 16)
AES_CBC_256 = ("aes-cbc-256", 3, "AES-CBC", 32)
AES_GCM_128 = ("aes-gcm-128", 7, "AES-GCM", 16)
AES_GCM_256 = ("aes-gcm-256", 9, "AES-GCM", 32)
- def __init__(self, alg_name, alg_int_repr, scapy_name, key_len):
+ def __init__(
+ self, alg_name: str, alg_int_repr: int, scapy_name: str, key_len: int
+ ):
self.alg_name = alg_name
self.alg_int_repr = alg_int_repr
self.scapy_name = scapy_name
self.key_len = key_len
+ # TODO: Investigate if __int__ works with PAPI. It was not enough for "if".
+ def __bool__(self):
+ """A shorthand to enable "if crypto_alg:" constructs."""
+ return self.alg_int_repr != 0
+
class IntegAlg(Enum):
"""Integrity algorithm."""
+ NONE = ("none", 0, "none", 0)
SHA_256_128 = ("sha-256-128", 4, "SHA2-256-128", 32)
SHA_512_256 = ("sha-512-256", 6, "SHA2-512-256", 64)
- def __init__(self, alg_name, alg_int_repr, scapy_name, key_len):
+ def __init__(
+ self, alg_name: str, alg_int_repr: int, scapy_name: str, key_len: int
+ ):
self.alg_name = alg_name
self.alg_int_repr = alg_int_repr
self.scapy_name = scapy_name
self.key_len = key_len
+ def __bool__(self):
+ """A shorthand to enable "if integ_alg:" constructs."""
+ return self.alg_int_repr != 0
+
+# TODO: Base on Enum, so str values can be defined as in alg enums?
class IPsecProto(IntEnum):
- """IPsec protocol."""
+ """IPsec protocol.
+
+ Mirroring VPP: src/vnet/ipsec/ipsec_types.api enum ipsec_proto.
+ """
+
+ ESP = 50
+ AH = 51
+ NONE = 255
- IPSEC_API_PROTO_ESP = 50
- IPSEC_API_PROTO_AH = 51
+ def __str__(self) -> str:
+ """Return string suitable for CLI commands.
+ None is not supported.
+ :returns: Lowercase name of the proto.
+ :rtype: str
+ :raises: ValueError if the numeric value is not recognized.
+ """
+ num = int(self)
+ if num == 50:
+ return "esp"
+ if num == 51:
+ return "ah"
+ raise ValueError(f"String form not defined for IPsecProto {num}")
+
+
+# The rest of enums do not appear outside this file, so no no change needed yet.
class IPsecSadFlags(IntEnum):
"""IPsec Security Association Database flags."""
- IPSEC_API_SAD_FLAG_NONE = 0
+ IPSEC_API_SAD_FLAG_NONE = NONE = 0
# Enable extended sequence numbers
IPSEC_API_SAD_FLAG_USE_ESN = 0x01
# Enable Anti - replay
class TunnelEncpaDecapFlags(IntEnum):
"""Flags controlling tunnel behaviour."""
- TUNNEL_API_ENCAP_DECAP_FLAG_NONE = 0
+ TUNNEL_API_ENCAP_DECAP_FLAG_NONE = NONE = 0
# at encap, copy the DF bit of the payload into the tunnel header
TUNNEL_API_ENCAP_DECAP_FLAG_ENCAP_COPY_DF = 1
# at encap, set the DF bit in the tunnel header
"""Tunnel modes."""
# point-to-point
- TUNNEL_API_MODE_P2P = 0
+ TUNNEL_API_MODE_P2P = NONE = 0
# multi-point
TUNNEL_API_MODE_MP = 1
-class IPsecUtil:
- """IPsec utilities."""
-
- @staticmethod
- def policy_action_bypass():
- """Return policy action bypass.
-
- :returns: PolicyAction enum BYPASS object.
- :rtype: PolicyAction
- """
- return PolicyAction.BYPASS
+# Derived types for type hints, based on capabilities of get_enum_instance.
+IpsecSpdAction.InputType = Union[IpsecSpdAction, str, None]
+CryptoAlg.InputType = Union[CryptoAlg, str, None]
+IntegAlg.InputType = Union[IntegAlg, str, None]
+IPsecProto.InputType = Union[IPsecProto, str, int, None]
+# TODO: Introduce a metaclass that adds .find and .InputType automatically?
- @staticmethod
- def policy_action_discard():
- """Return policy action discard.
-
- :returns: PolicyAction enum DISCARD object.
- :rtype: PolicyAction
- """
- return PolicyAction.DISCARD
-
- @staticmethod
- def policy_action_protect():
- """Return policy action protect.
-
- :returns: PolicyAction enum PROTECT object.
- :rtype: PolicyAction
- """
- return PolicyAction.PROTECT
-
- @staticmethod
- def crypto_alg_aes_cbc_128():
- """Return encryption algorithm aes-cbc-128.
-
- :returns: CryptoAlg enum AES_CBC_128 object.
- :rtype: CryptoAlg
- """
- return CryptoAlg.AES_CBC_128
-
- @staticmethod
- def crypto_alg_aes_cbc_256():
- """Return encryption algorithm aes-cbc-256.
-
- :returns: CryptoAlg enum AES_CBC_256 object.
- :rtype: CryptoAlg
- """
- return CryptoAlg.AES_CBC_256
- @staticmethod
- def crypto_alg_aes_gcm_128():
- """Return encryption algorithm aes-gcm-128.
-
- :returns: CryptoAlg enum AES_GCM_128 object.
- :rtype: CryptoAlg
- """
- return CryptoAlg.AES_GCM_128
-
- @staticmethod
- def crypto_alg_aes_gcm_256():
- """Return encryption algorithm aes-gcm-256.
+class IPsecUtil:
+ """IPsec utilities."""
- :returns: CryptoAlg enum AES_GCM_128 object.
- :rtype: CryptoAlg
- """
- return CryptoAlg.AES_GCM_256
+ # The following 4 methods are Python one-liners,
+ # but they are useful when called as a Robot keyword.
@staticmethod
- def get_crypto_alg_key_len(crypto_alg):
+ def get_crypto_alg_key_len(crypto_alg: CryptoAlg.InputType) -> int:
"""Return encryption algorithm key length.
+ This is a Python one-liner, but useful when called as a Robot keyword.
+
:param crypto_alg: Encryption algorithm.
- :type crypto_alg: CryptoAlg
+ :type crypto_alg: CryptoAlg.InputType
:returns: Key length.
:rtype: int
"""
- return crypto_alg.key_len
+ return get_enum_instance(CryptoAlg, crypto_alg).key_len
@staticmethod
- def get_crypto_alg_scapy_name(crypto_alg):
+ def get_crypto_alg_scapy_name(crypto_alg: CryptoAlg.InputType) -> str:
"""Return encryption algorithm scapy name.
+ This is a Python one-liner, but useful when called as a Robot keyword.
+
:param crypto_alg: Encryption algorithm.
- :type crypto_alg: CryptoAlg
+ :type crypto_alg: CryptoAlg.InputType
:returns: Algorithm scapy name.
:rtype: str
"""
- return crypto_alg.scapy_name
-
- @staticmethod
- def integ_alg_sha_256_128():
- """Return integrity algorithm SHA-256-128.
-
- :returns: IntegAlg enum SHA_256_128 object.
- :rtype: IntegAlg
- """
- return IntegAlg.SHA_256_128
+ return get_enum_instance(CryptoAlg, crypto_alg).scapy_name
+ # The below to keywords differ only by enum type conversion from str.
@staticmethod
- def integ_alg_sha_512_256():
- """Return integrity algorithm SHA-512-256.
-
- :returns: IntegAlg enum SHA_512_256 object.
- :rtype: IntegAlg
- """
- return IntegAlg.SHA_512_256
-
- @staticmethod
- def get_integ_alg_key_len(integ_alg):
+ def get_integ_alg_key_len(integ_alg: IntegAlg.InputType) -> int:
"""Return integrity algorithm key length.
- None argument is accepted, returning zero.
-
:param integ_alg: Integrity algorithm.
- :type integ_alg: Optional[IntegAlg]
+ :type integ_alg: IntegAlg.InputType
:returns: Key length.
:rtype: int
"""
- return 0 if integ_alg is None else integ_alg.key_len
+ return get_enum_instance(IntegAlg, integ_alg).key_len
@staticmethod
- def get_integ_alg_scapy_name(integ_alg):
+ def get_integ_alg_scapy_name(integ_alg: IntegAlg.InputType) -> str:
"""Return integrity algorithm scapy name.
:param integ_alg: Integrity algorithm.
- :type integ_alg: IntegAlg
+ :type integ_alg: IntegAlg.InputType
:returns: Algorithm scapy name.
:rtype: str
"""
- return integ_alg.scapy_name
-
- @staticmethod
- def ipsec_proto_esp():
- """Return IPSec protocol ESP.
-
- :returns: IPsecProto enum ESP object.
- :rtype: IPsecProto
- """
- return int(IPsecProto.IPSEC_API_PROTO_ESP)
-
- @staticmethod
- def ipsec_proto_ah():
- """Return IPSec protocol AH.
-
- :returns: IPsecProto enum AH object.
- :rtype: IPsecProto
- """
- return int(IPsecProto.IPSEC_API_PROTO_AH)
+ return get_enum_instance(IntegAlg, integ_alg).scapy_name
@staticmethod
- def vpp_ipsec_select_backend(node, protocol, index=1):
+ def vpp_ipsec_select_backend(
+ node: dict, proto: IPsecProto.InputType, index: int = 1
+ ) -> None:
"""Select IPsec backend.
:param node: VPP node to select IPsec backend on.
- :param protocol: IPsec protocol.
+ :param proto: IPsec protocol.
:param index: Backend index.
:type node: dict
- :type protocol: IPsecProto
+ :type proto: IPsecProto.InputType
:type index: int
:raises RuntimeError: If failed to select IPsec backend or if no API
reply received.
"""
+ proto = get_enum_instance(IPsecProto, proto)
cmd = "ipsec_select_backend"
- err_msg = f"Failed to select IPsec backend on host {node[u'host']}"
- args = dict(protocol=protocol, index=index)
+ err_msg = f"Failed to select IPsec backend on host {node['host']}"
+ args = dict(protocol=proto, index=index)
with PapiSocketExecutor(node) as papi_exec:
papi_exec.add(cmd, **args).get_reply(err_msg)
@staticmethod
- def vpp_ipsec_set_async_mode(node, async_enable=1):
+ def vpp_ipsec_set_async_mode(node: dict, async_enable: int = 1) -> None:
"""Set IPsec async mode on|off.
Unconditionally, attempt to switch crypto dispatch into polling mode.
"""
with PapiSocketExecutor(node) as papi_exec:
cmd = "ipsec_set_async_mode"
- err_msg = f"Failed to set IPsec async mode on host {node[u'host']}"
+ err_msg = f"Failed to set IPsec async mode on host {node['host']}"
args = dict(async_enable=async_enable)
papi_exec.add(cmd, **args).get_reply(err_msg)
cmd = "crypto_set_async_dispatch_v2"
@staticmethod
def vpp_ipsec_crypto_sw_scheduler_set_worker(
- node, workers, crypto_enable=False
- ):
+ node: dict, workers: Iterable[int], crypto_enable: bool = False
+ ) -> None:
"""Enable or disable crypto on specific vpp worker threads.
:param node: VPP node to enable or disable crypto for worker threads.
for worker in workers:
cmd = "crypto_sw_scheduler_set_worker"
err_msg = (
- f"Failed to disable/enable crypto for worker thread "
- f"on host {node[u'host']}"
+ "Failed to disable/enable crypto for worker thread"
+ f" on host {node['host']}"
)
args = dict(worker_index=worker - 1, crypto_enable=crypto_enable)
with PapiSocketExecutor(node) as papi_exec:
@staticmethod
def vpp_ipsec_crypto_sw_scheduler_set_worker_on_all_duts(
- nodes, crypto_enable=False
- ):
+ nodes: dict, crypto_enable: bool = False
+ ) -> None:
"""Enable or disable crypto on specific vpp worker threads.
:param node: VPP node to enable or disable crypto for worker threads.
thread_data = VPPUtil.vpp_show_threads(node)
worker_cnt = len(thread_data) - 1
if not worker_cnt:
- return None
+ return
worker_ids = list()
workers = BuiltIn().get_variable_value(
f"${{{node_name}_cpu_dp}}"
@staticmethod
def vpp_ipsec_add_sad_entry(
- node,
- sad_id,
- spi,
- crypto_alg,
- crypto_key,
- integ_alg=None,
- integ_key="",
- tunnel_src=None,
- tunnel_dst=None,
- ):
+ node: dict,
+ sad_id: int,
+ spi: int,
+ crypto_alg: CryptoAlg.InputType = None,
+ crypto_key: str = "",
+ integ_alg: IntegAlg.InputType = None,
+ integ_key: str = "",
+ tunnel_src: Optional[str] = None,
+ tunnel_dst: Optional[str] = None,
+ ) -> None:
"""Create Security Association Database entry on the VPP node.
:param node: VPP node to add SAD entry on.
:type node: dict
:type sad_id: int
:type spi: int
- :type crypto_alg: CryptoAlg
+ :type crypto_alg: CryptoAlg.InputType
:type crypto_key: str
- :type integ_alg: Optional[IntegAlg]
+ :type integ_alg: IntegAlg.InputType
:type integ_key: str
- :type tunnel_src: str
- :type tunnel_dst: str
+ :type tunnel_src: Optional[str]
+ :type tunnel_dst: Optional[str]
"""
+ crypto_alg = get_enum_instance(CryptoAlg, crypto_alg)
+ integ_alg = get_enum_instance(IntegAlg, integ_alg)
if isinstance(crypto_key, str):
crypto_key = crypto_key.encode(encoding="utf-8")
if isinstance(integ_key, str):
cmd = "ipsec_sad_entry_add_v2"
err_msg = (
- f"Failed to add Security Association Database entry "
- f"on host {node[u'host']}"
+ "Failed to add Security Association Database entry"
+ f" on host {node['host']}"
)
sad_entry = dict(
sad_id=int(sad_id),
spi=int(spi),
crypto_algorithm=crypto_alg.alg_int_repr,
crypto_key=ckey,
- integrity_algorithm=integ_alg.alg_int_repr if integ_alg else 0,
+ integrity_algorithm=integ_alg.alg_int_repr,
integrity_key=ikey,
flags=flags,
tunnel=dict(
),
dscp=int(IpDscp.IP_API_DSCP_CS0),
),
- protocol=int(IPsecProto.IPSEC_API_PROTO_ESP),
+ protocol=IPsecProto.ESP,
udp_src_port=IPSEC_UDP_PORT_DEFAULT,
udp_dst_port=IPSEC_UDP_PORT_DEFAULT,
anti_replay_window_size=IPSEC_REPLAY_WINDOW_DEFAULT,
@staticmethod
def vpp_ipsec_add_sad_entries(
- node,
- n_entries,
- sad_id,
- spi,
- crypto_alg,
- crypto_key,
- integ_alg=None,
- integ_key="",
- tunnel_src=None,
- tunnel_dst=None,
- tunnel_addr_incr=True,
- ):
+ node: dict,
+ n_entries: int,
+ sad_id: int,
+ spi: int,
+ crypto_alg: CryptoAlg.InputType = None,
+ crypto_key: str = "",
+ integ_alg: IntegAlg.InputType = None,
+ integ_key: str = "",
+ tunnel_src: Optional[str] = None,
+ tunnel_dst: Optional[str] = None,
+ tunnel_addr_incr: bool = True,
+ ) -> None:
"""Create multiple Security Association Database entries on VPP node.
:param node: VPP node to add SAD entry on.
:type n_entries: int
:type sad_id: int
:type spi: int
- :type crypto_alg: CryptoAlg
+ :type crypto_alg: CryptoAlg.InputType
:type crypto_key: str
- :type integ_alg: Optional[IntegAlg]
+ :type integ_alg: IntegAlg.InputType
:type integ_key: str
- :type tunnel_src: str
- :type tunnel_dst: str
+ :type tunnel_src: Optional[str]
+ :type tunnel_dst: Optional[str]
:type tunnel_addr_incr: bool
"""
+ crypto_alg = get_enum_instance(CryptoAlg, crypto_alg)
+ integ_alg = get_enum_instance(IntegAlg, integ_alg)
if isinstance(crypto_key, str):
crypto_key = crypto_key.encode(encoding="utf-8")
if isinstance(integ_key, str):
cmd = "ipsec_sad_entry_add_v2"
err_msg = (
- f"Failed to add Security Association Database entry "
- f"on host {node[u'host']}"
+ "Failed to add Security Association Database entry"
+ f" on host {node['host']}"
)
sad_entry = dict(
spi=int(spi),
crypto_algorithm=crypto_alg.alg_int_repr,
crypto_key=ckey,
- integrity_algorithm=integ_alg.alg_int_repr if integ_alg else 0,
+ integrity_algorithm=integ_alg.alg_int_repr,
integrity_key=ikey,
flags=flags,
tunnel=dict(
),
dscp=int(IpDscp.IP_API_DSCP_CS0),
),
- protocol=int(IPsecProto.IPSEC_API_PROTO_ESP),
+ protocol=IPsecProto.ESP,
udp_src_port=IPSEC_UDP_PORT_DEFAULT,
udp_dst_port=IPSEC_UDP_PORT_DEFAULT,
anti_replay_window_size=IPSEC_REPLAY_WINDOW_DEFAULT,
@staticmethod
def vpp_ipsec_set_ip_route(
- node,
- n_tunnels,
- tunnel_src,
- traffic_addr,
- tunnel_dst,
- interface,
- raddr_range,
- dst_mac=None,
- ):
+ node: dict,
+ n_tunnels: int,
+ tunnel_src: str,
+ traffic_addr: str,
+ tunnel_dst: str,
+ interface: str,
+ raddr_range: int,
+ dst_mac: Optional[str] = None,
+ ) -> None:
"""Set IP address and route on interface.
:param node: VPP node to add config on.
:type tunnel_dst: str
:type interface: str
:type raddr_range: int
- :type dst_mac: str
+ :type dst_mac: Optional[str]
"""
tunnel_src = ip_address(tunnel_src)
tunnel_dst = ip_address(tunnel_dst)
),
)
err_msg = (
- f"Failed to configure IP addresses, IP routes and "
- f"IP neighbor on interface {interface} on host {node[u'host']}"
+ "Failed to configure IP addresses, IP routes and"
+ f" IP neighbor on interface {interface} on host {node['host']}"
if dst_mac
- else f"Failed to configure IP addresses and IP routes "
- f"on interface {interface} on host {node[u'host']}"
+ else "Failed to configure IP addresses and IP routes"
+ f" on interface {interface} on host {node['host']}"
)
with PapiSocketExecutor(node, is_async=True) as papi_exec:
papi_exec.get_replies(err_msg)
@staticmethod
- def vpp_ipsec_add_spd(node, spd_id):
+ def vpp_ipsec_add_spd(node: dict, spd_id: int) -> None:
"""Create Security Policy Database on the VPP node.
:param node: VPP node to add SPD on.
"""
cmd = "ipsec_spd_add_del"
err_msg = (
- f"Failed to add Security Policy Database "
- f"on host {node[u'host']}"
+ f"Failed to add Security Policy Database on host {node['host']}"
)
args = dict(is_add=True, spd_id=int(spd_id))
with PapiSocketExecutor(node) as papi_exec:
papi_exec.add(cmd, **args).get_reply(err_msg)
@staticmethod
- def vpp_ipsec_spd_add_if(node, spd_id, interface):
+ def vpp_ipsec_spd_add_if(
+ node: dict, spd_id: int, interface: Union[str, int]
+ ) -> None:
"""Add interface to the Security Policy Database.
:param node: VPP node.
"""
cmd = "ipsec_interface_add_del_spd"
err_msg = (
- f"Failed to add interface {interface} to Security Policy "
- f"Database {spd_id} on host {node[u'host']}"
+ f"Failed to add interface {interface} to Security Policy"
+ f" Database {spd_id} on host {node['host']}"
)
args = dict(
is_add=True,
@staticmethod
def vpp_ipsec_create_spds_match_nth_entry(
- node,
- dir1_interface,
- dir2_interface,
- entry_amount,
- local_addr_range,
- remote_addr_range,
- action=PolicyAction.BYPASS,
- inbound=False,
- bidirectional=True,
- ):
+ node: dict,
+ dir1_interface: Union[str, int],
+ dir2_interface: Union[str, int],
+ entry_amount: int,
+ local_addr_range: Union[str, IPv4Address, IPv6Address],
+ remote_addr_range: Union[str, IPv4Address, IPv6Address],
+ action: IpsecSpdAction.InputType = IpsecSpdAction.BYPASS,
+ inbound: bool = False,
+ bidirectional: bool = True,
+ ) -> None:
"""Create one matching SPD entry for inbound or outbound traffic on
a DUT for each traffic direction and also create entry_amount - 1
non-matching SPD entries. Create a Security Policy Database on each
:param remote_addr_range: Matching remote address range in
direction 1 in format IP/prefix or IP/mask. If no mask is
provided, it's considered to be /32.
- :param action: Policy action.
+ :param action: IPsec SPD action.
:param inbound: If True policy is for inbound traffic, otherwise
outbound.
:param bidirectional: When True, will create SPDs in both directions
of traffic. When False, only in one direction.
:type node: dict
- :type dir1_interface: Union[string, int]
- :type dir2_interface: Union[string, int]
+ :type dir1_interface: Union[str, int]
+ :type dir2_interface: Union[str, int]
:type entry_amount: int
:type local_addr_range:
- Union[string, ipaddress.IPv4Address, ipaddress.IPv6Address]
+ Union[str, IPv4Address, IPv6Address]
:type remote_addr_range:
- Union[string, ipaddress.IPv4Address, ipaddress.IPv6Address]
- :type action: IPsecUtil.PolicyAction
+ Union[str, IPv4Address, IPv6Address]
+ :type action: IpsecSpdAction.InputType
:type inbound: bool
:type bidirectional: bool
- :raises NotImplementedError: When the action is PolicyAction.PROTECT.
+ :raises NotImplementedError: When the action is IpsecSpdAction.PROTECT.
"""
-
- if action == PolicyAction.PROTECT:
- raise NotImplementedError("Policy action PROTECT is not supported.")
+ action = get_enum_instance(IpsecSpdAction, action)
+ if action == IpsecSpdAction.PROTECT:
+ raise NotImplementedError(
+ "IPsec SPD action PROTECT is not supported."
+ )
spd_id_dir1 = 1
spd_id_dir2 = 2
@staticmethod
def _vpp_ipsec_add_spd_entry_internal(
- executor,
- spd_id,
- priority,
- action,
- inbound=True,
- sa_id=None,
- proto=None,
- laddr_range=None,
- raddr_range=None,
- lport_range=None,
- rport_range=None,
- is_ipv6=False,
- ):
+ executor: PapiSocketExecutor,
+ spd_id: int,
+ priority: int,
+ action: IpsecSpdAction.InputType,
+ inbound: bool = True,
+ sa_id: Optional[int] = None,
+ proto: IPsecProto.InputType = None,
+ laddr_range: Optional[str] = None,
+ raddr_range: Optional[str] = None,
+ lport_range: Optional[str] = None,
+ rport_range: Optional[str] = None,
+ is_ipv6: bool = False,
+ ) -> None:
"""Prepare to create Security Policy Database entry on the VPP node.
This just adds one more command to the executor.
:param executor: Open PAPI executor (async handling) to add commands to.
:param spd_id: SPD ID to add entry on.
:param priority: SPD entry priority, higher number = higher priority.
- :param action: Policy action.
+ :param action: IPsec SPD action.
:param inbound: If True policy is for inbound traffic, otherwise
outbound.
- :param sa_id: SAD entry ID for action PolicyAction.PROTECT.
+ :param sa_id: SAD entry ID for action IpsecSpdAction.PROTECT.
:param proto: Policy selector next layer protocol number.
:param laddr_range: Policy selector local IPv4 or IPv6 address range
in format IP/prefix or IP/mask. If no mask is provided,
:type executor: PapiSocketExecutor
:type spd_id: int
:type priority: int
- :type action: IPsecUtil.PolicyAction
+ :type action: IpsecSpdAction.InputType
:type inbound: bool
- :type sa_id: int
- :type proto: int
- :type laddr_range: string
- :type raddr_range: string
- :type lport_range: string
- :type rport_range: string
+ :type sa_id: Optional[int]
+ :type proto: IPsecProto.InputType
+ :type laddr_range: Optional[str]
+ :type raddr_range: Optional[str]
+ :type lport_range: Optional[str]
+ :type rport_range: Optional[str]
:type is_ipv6: bool
"""
+ action = get_enum_instance(IpsecSpdAction, action)
+ proto = get_enum_instance(IPsecProto, proto)
if laddr_range is None:
laddr_range = "::/0" if is_ipv6 else "0.0.0.0/0"
is_outbound=not inbound,
sa_id=int(sa_id) if sa_id else 0,
policy=int(action),
- protocol=255 if proto is None else int(proto),
+ protocol=proto,
remote_address_start=IPAddress.create_ip_address_object(
remote_net.network_address
),
@staticmethod
def vpp_ipsec_add_spd_entry(
- node,
- spd_id,
- priority,
- action,
- inbound=True,
- sa_id=None,
- proto=None,
- laddr_range=None,
- raddr_range=None,
- lport_range=None,
- rport_range=None,
- is_ipv6=False,
- ):
+ node: dict,
+ spd_id: int,
+ priority: int,
+ action: IpsecSpdAction.InputType,
+ inbound: bool = True,
+ sa_id: Optional[int] = None,
+ proto: IPsecProto.InputType = None,
+ laddr_range: Optional[str] = None,
+ raddr_range: Optional[str] = None,
+ lport_range: Optional[str] = None,
+ rport_range: Optional[str] = None,
+ is_ipv6: bool = False,
+ ) -> None:
"""Create Security Policy Database entry on the VPP node.
:param node: VPP node to add SPD entry on.
:param spd_id: SPD ID to add entry on.
:param priority: SPD entry priority, higher number = higher priority.
- :param action: Policy action.
+ :param action: IPsec SPD action.
:param inbound: If True policy is for inbound traffic, otherwise
outbound.
- :param sa_id: SAD entry ID for action PolicyAction.PROTECT.
+ :param sa_id: SAD entry ID for action IpsecSpdAction.PROTECT.
:param proto: Policy selector next layer protocol number.
:param laddr_range: Policy selector local IPv4 or IPv6 address range
in format IP/prefix or IP/mask. If no mask is provided,
:type node: dict
:type spd_id: int
:type priority: int
- :type action: IPsecUtil.PolicyAction
+ :type action: IpsecSpdAction.InputType
:type inbound: bool
- :type sa_id: int
- :type proto: int
- :type laddr_range: string
- :type raddr_range: string
- :type lport_range: string
- :type rport_range: string
+ :type sa_id: Optional[int]
+ :type proto: IPsecProto.InputType
+ :type laddr_range: Optional[str]
+ :type raddr_range: Optional[str]
+ :type lport_range: Optional[str]
+ :type rport_range: Optional[str]
:type is_ipv6: bool
"""
+ action = get_enum_instance(IpsecSpdAction, action)
+ proto = get_enum_instance(IPsecProto, proto)
err_msg = (
- f"Failed to add entry to Security Policy Database "
- f"{spd_id} on host {node[u'host']}"
+ "Failed to add entry to Security Policy Database"
+ f" {spd_id} on host {node['host']}"
)
with PapiSocketExecutor(node, is_async=True) as papi_exec:
IPsecUtil._vpp_ipsec_add_spd_entry_internal(
@staticmethod
def vpp_ipsec_add_spd_entries(
- node,
- n_entries,
- spd_id,
- priority,
- action,
- inbound,
- sa_id=None,
- proto=None,
- laddr_range=None,
- raddr_range=None,
- lport_range=None,
- rport_range=None,
- is_ipv6=False,
- ):
+ node: dict,
+ n_entries: int,
+ spd_id: int,
+ priority: Optional[ObjIncrement],
+ action: IpsecSpdAction.InputType,
+ inbound: bool,
+ sa_id: Optional[ObjIncrement] = None,
+ proto: IPsecProto.InputType = None,
+ laddr_range: Optional[NetworkIncrement] = None,
+ raddr_range: Optional[NetworkIncrement] = None,
+ lport_range: Optional[str] = None,
+ rport_range: Optional[str] = None,
+ is_ipv6: bool = False,
+ ) -> None:
"""Create multiple Security Policy Database entries on the VPP node.
:param node: VPP node to add SPD entries on.
:param n_entries: Number of SPD entries to be added.
:param spd_id: SPD ID to add entries on.
:param priority: SPD entries priority, higher number = higher priority.
- :param action: Policy action.
+ :param action: IPsec SPD action.
:param inbound: If True policy is for inbound traffic, otherwise
outbound.
- :param sa_id: SAD entry ID for action PolicyAction.PROTECT.
+ :param sa_id: SAD entry ID for action IpsecSpdAction.PROTECT.
:param proto: Policy selector next layer protocol number.
:param laddr_range: Policy selector local IPv4 or IPv6 address range
in format IP/prefix or IP/mask. If no mask is provided,
:type node: dict
:type n_entries: int
:type spd_id: int
- :type priority: IPsecUtil.ObjIncrement
- :type action: IPsecUtil.PolicyAction
+ :type priority: Optional[ObjIncrement]
+ :type action: IpsecSpdAction.InputType
:type inbound: bool
- :type sa_id: IPsecUtil.ObjIncrement
- :type proto: int
- :type laddr_range: IPsecUtil.NetworkIncrement
- :type raddr_range: IPsecUtil.NetworkIncrement
- :type lport_range: string
- :type rport_range: string
+ :type sa_id: Optional[ObjIncrement]
+ :type proto: IPsecProto.InputType
+ :type laddr_range: Optional[NetworkIncrement]
+ :type raddr_range: Optional[NetworkIncrement]
+ :type lport_range: Optional[str]
+ :type rport_range: Optional[str]
:type is_ipv6: bool
"""
+ action = get_enum_instance(IpsecSpdAction, action)
+ proto = get_enum_instance(IPsecProto, proto)
if laddr_range is None:
laddr_range = "::/0" if is_ipv6 else "0.0.0.0/0"
laddr_range = NetworkIncrement(ip_network(laddr_range), 0)
raddr_range = "::/0" if is_ipv6 else "0.0.0.0/0"
raddr_range = NetworkIncrement(ip_network(raddr_range), 0)
- lport_range_start = 0
- lport_range_stop = 65535
- if lport_range:
- lport_range_start, lport_range_stop = lport_range.split("-")
-
- rport_range_start = 0
- rport_range_stop = 65535
- if rport_range:
- rport_range_start, rport_range_stop = rport_range.split("-")
-
err_msg = (
- f"Failed to add entry to Security Policy Database "
- f"{spd_id} on host {node[u'host']}"
+ "Failed to add entry to Security Policy Database"
+ f" {spd_id} on host {node['host']}"
)
with PapiSocketExecutor(node, is_async=True) as papi_exec:
for _ in range(n_entries):
papi_exec.get_replies(err_msg)
@staticmethod
- def _ipsec_create_loopback_dut1_papi(nodes, tun_ips, if1_key, if2_key):
+ def _ipsec_create_loopback_dut1_papi(
+ nodes: dict, tun_ips: dict, if1_key: str, if2_key: str
+ ) -> int:
"""Create loopback interface and set IP address on VPP node 1 interface
using PAPI.
:type tun_ips: dict
:type if1_key: str
:type if2_key: str
+ :returns: sw_if_idx Of the created loopback interface.
+ :rtype: int
"""
with PapiSocketExecutor(nodes["DUT1"]) as papi_exec:
# Create loopback interface on DUT1, set it to up state
user_instance=0,
)
err_msg = (
- f"Failed to create loopback interface "
- f"on host {nodes[u'DUT1'][u'host']}"
+ "Failed to create loopback interface"
+ f" on host {nodes['DUT1']['host']}"
)
papi_exec.add(cmd, **args)
loop_sw_if_idx = papi_exec.get_sw_if_index(err_msg)
flags=InterfaceStatusFlags.IF_STATUS_API_FLAG_ADMIN_UP.value,
)
err_msg = (
- f"Failed to set loopback interface state up "
- f"on host {nodes[u'DUT1'][u'host']}"
+ "Failed to set loopback interface state up"
+ f" on host {nodes['DUT1']['host']}"
)
papi_exec.add(cmd, **args).get_reply(err_msg)
# Set IP address on VPP node 1 interface
),
)
err_msg = (
- f"Failed to set IP address on interface {if1_key} "
- f"on host {nodes[u'DUT1'][u'host']}"
+ f"Failed to set IP address on interface {if1_key}"
+ f" on host {nodes['DUT1']['host']}"
)
papi_exec.add(cmd, **args).get_reply(err_msg)
cmd2 = "ip_neighbor_add_del"
@staticmethod
def _ipsec_create_tunnel_interfaces_dut1_papi(
- nodes,
- tun_ips,
- if1_key,
- if2_key,
- n_tunnels,
- crypto_alg,
- integ_alg,
- raddr_ip2,
- addr_incr,
- spi_d,
- existing_tunnels=0,
- ):
+ nodes: dict,
+ tun_ips: dict,
+ if1_key: str,
+ if2_key: str,
+ n_tunnels: int,
+ crypto_alg: CryptoAlg.InputType,
+ integ_alg: IntegAlg.InputType,
+ raddr_ip2: Union[IPv4Address, IPv6Address],
+ addr_incr: int,
+ spi_d: dict,
+ existing_tunnels: int = 0,
+ ) -> Tuple[List[bytes], List[bytes]]:
"""Create multiple IPsec tunnel interfaces on DUT1 node using PAPI.
Generate random keys and return them (so DUT2 or TG can decrypt).
:type if1_key: str
:type if2_key: str
:type n_tunnels: int
- :type crypto_alg: CryptoAlg
- :type integ_alg: Optional[IntegAlg]
- :type raddr_ip2: IPv4Address or IPv6Address
+ :type crypto_alg: CryptoAlg.InputType
+ :type integ_alg: IntegAlg.InputType
+ :type raddr_ip2: Union[IPv4Address, IPv6Address]
:type addr_incr: int
:type spi_d: dict
:type existing_tunnels: int
:returns: Generated ckeys and ikeys.
:rtype: List[bytes], List[bytes]
"""
+ crypto_alg = get_enum_instance(CryptoAlg, crypto_alg)
+ integ_alg = get_enum_instance(IntegAlg, integ_alg)
if not existing_tunnels:
loop_sw_if_idx = IPsecUtil._ipsec_create_loopback_dut1_papi(
nodes, tun_ips, if1_key, if2_key
cmd, history=bool(not 1 < i < n_tunnels - 2), **args
)
err_msg = (
- f"Failed to add IPIP tunnel interfaces on host"
- f" {nodes[u'DUT1'][u'host']}"
+ "Failed to add IPIP tunnel interfaces on host"
+ f" {nodes['DUT1']['host']}"
)
ipip_tunnels.extend(
[
sad_entry = dict(
sad_id=None,
spi=None,
- protocol=int(IPsecProto.IPSEC_API_PROTO_ESP),
+ protocol=IPsecProto.ESP,
crypto_algorithm=crypto_alg.alg_int_repr,
crypto_key=c_key,
- integrity_algorithm=integ_alg.alg_int_repr if integ_alg else 0,
+ integrity_algorithm=integ_alg.alg_int_repr,
integrity_key=i_key,
flags=common_flags,
tunnel=dict(
)
args = dict(entry=sad_entry)
for i in range(existing_tunnels, n_tunnels):
- ckeys.append(
- gen_key(IPsecUtil.get_crypto_alg_key_len(crypto_alg))
- )
- ikeys.append(
- gen_key(IPsecUtil.get_integ_alg_key_len(integ_alg))
- )
+ ckeys.append(gen_key(crypto_alg.key_len))
+ ikeys.append(gen_key(integ_alg.key_len))
# SAD entry for outband / tx path
sad_entry["sad_id"] = i
sad_entry["spi"] = spi_d["spi_1"] + i
cmd, history=bool(not 1 < i < n_tunnels - 2), **args
)
err_msg = (
- f"Failed to add IPsec SAD entries on host"
- f" {nodes[u'DUT1'][u'host']}"
+ "Failed to add IPsec SAD entries on host"
+ f" {nodes['DUT1']['host']}"
)
papi_exec.get_replies(err_msg)
# Add protection for tunnels with IPSEC
cmd, history=bool(not 1 < i < n_tunnels - 2), **args
)
err_msg = (
- f"Failed to add protection for tunnels with IPSEC "
- f"on host {nodes[u'DUT1'][u'host']}"
+ "Failed to add protection for tunnels with IPSEC"
+ f" on host {nodes['DUT1']['host']}"
)
papi_exec.get_replies(err_msg)
papi_exec.add(
cmd, history=bool(not 1 < i < n_tunnels - 2), **args
)
- err_msg = (
- f"Failed to add IP routes on host " f"{nodes[u'DUT1'][u'host']}"
- )
+ err_msg = f"Failed to add IP routes on host {nodes['DUT1']['host']}"
papi_exec.get_replies(err_msg)
return ckeys, ikeys
@staticmethod
def _ipsec_create_tunnel_interfaces_dut2_papi(
- nodes,
- tun_ips,
- if2_key,
- n_tunnels,
- crypto_alg,
- ckeys,
- integ_alg,
- ikeys,
- raddr_ip1,
- addr_incr,
- spi_d,
- existing_tunnels=0,
- ):
+ nodes: dict,
+ tun_ips: dict,
+ if2_key: str,
+ n_tunnels: int,
+ crypto_alg: CryptoAlg.InputType,
+ ckeys: Sequence[bytes],
+ integ_alg: IntegAlg.InputType,
+ ikeys: Sequence[bytes],
+ raddr_ip1: Union[IPv4Address, IPv6Address],
+ addr_incr: int,
+ spi_d: dict,
+ existing_tunnels: int = 0,
+ ) -> None:
"""Create multiple IPsec tunnel interfaces on DUT2 node using PAPI.
This method accesses keys generated by DUT1 method
:param ckeys: List of encryption keys.
:param integ_alg: The integrity algorithm name.
:param ikeys: List of integrity keys.
+ :param raddr_ip1: Policy selector remote IPv4/IPv6 start address for the
+ first tunnel in direction node1->node2.
:param spi_d: Dictionary with SPIs for VPP node 1 and VPP node 2.
:param addr_incr: IP / IPv6 address incremental step.
:param existing_tunnels: Number of tunnel interfaces before creation.
:type tun_ips: dict
:type if2_key: str
:type n_tunnels: int
- :type crypto_alg: CryptoAlg
+ :type crypto_alg: CryptoAlg.InputType
:type ckeys: Sequence[bytes]
- :type integ_alg: Optional[IntegAlg]
+ :type integ_alg: IntegAlg.InputType
:type ikeys: Sequence[bytes]
+ :type raddr_ip1: Union[IPv4Address, IPv6Address]
:type addr_incr: int
:type spi_d: dict
:type existing_tunnels: int
"""
+ crypto_alg = get_enum_instance(CryptoAlg, crypto_alg)
+ integ_alg = get_enum_instance(IntegAlg, integ_alg)
with PapiSocketExecutor(nodes["DUT2"], is_async=True) as papi_exec:
if not existing_tunnels:
# Set IP address on VPP node 2 interface
),
)
err_msg = (
- f"Failed to set IP address on interface {if2_key} "
- f"on host {nodes[u'DUT2'][u'host']}"
+ f"Failed to set IP address on interface {if2_key}"
+ f" on host {nodes['DUT2']['host']}"
)
papi_exec.add(cmd, **args).get_replies(err_msg)
# Configure IPIP tunnel interfaces
cmd, history=bool(not 1 < i < n_tunnels - 2), **args
)
err_msg = (
- f"Failed to add IPIP tunnel interfaces on host"
- f" {nodes[u'DUT2'][u'host']}"
+ "Failed to add IPIP tunnel interfaces on host"
+ f" {nodes['DUT2']['host']}"
)
ipip_tunnels.extend(
[
sad_entry = dict(
sad_id=None,
spi=None,
- protocol=int(IPsecProto.IPSEC_API_PROTO_ESP),
+ protocol=IPsecProto.ESP,
crypto_algorithm=crypto_alg.alg_int_repr,
crypto_key=c_key,
- integrity_algorithm=integ_alg.alg_int_repr if integ_alg else 0,
+ integrity_algorithm=integ_alg.alg_int_repr,
integrity_key=i_key,
flags=common_flags,
tunnel=dict(
)
args = dict(entry=sad_entry)
for i in range(existing_tunnels, n_tunnels):
- ckeys.append(
- gen_key(IPsecUtil.get_crypto_alg_key_len(crypto_alg))
- )
- ikeys.append(
- gen_key(IPsecUtil.get_integ_alg_key_len(integ_alg))
- )
+ ckeys.append(gen_key(crypto_alg.key_len))
+ ikeys.append(gen_key(integ_alg.key_len))
# SAD entry for outband / tx path
sad_entry["sad_id"] = 100000 + i
sad_entry["spi"] = spi_d["spi_2"] + i
)
err_msg = (
f"Failed to add IPsec SAD entries on host"
- f" {nodes[u'DUT2'][u'host']}"
+ f" {nodes['DUT2']['host']}"
)
papi_exec.get_replies(err_msg)
# Add protection for tunnels with IPSEC
cmd, history=bool(not 1 < i < n_tunnels - 2), **args
)
err_msg = (
- f"Failed to add protection for tunnels with IPSEC "
- f"on host {nodes[u'DUT2'][u'host']}"
+ "Failed to add protection for tunnels with IPSEC"
+ f" on host {nodes['DUT2']['host']}"
)
papi_exec.get_replies(err_msg)
papi_exec.add(
cmd, history=bool(not 1 < i < n_tunnels - 2), **args
)
- err_msg = (
- f"Failed to add IP routes " f"on host {nodes[u'DUT2'][u'host']}"
- )
+ err_msg = f"Failed to add IP routes on host {nodes['DUT2']['host']}"
papi_exec.get_replies(err_msg)
@staticmethod
def vpp_ipsec_create_tunnel_interfaces(
- nodes,
- tun_if1_ip_addr,
- tun_if2_ip_addr,
- if1_key,
- if2_key,
- n_tunnels,
- crypto_alg,
- integ_alg,
- raddr_ip1,
- raddr_ip2,
- raddr_range,
- existing_tunnels=0,
- return_keys=False,
- ):
+ nodes: dict,
+ tun_if1_ip_addr: str,
+ tun_if2_ip_addr: str,
+ if1_key: str,
+ if2_key: str,
+ n_tunnels: int,
+ crypto_alg: CryptoAlg.InputType,
+ integ_alg: IntegAlg.InputType,
+ raddr_ip1: str,
+ raddr_ip2: str,
+ raddr_range: int,
+ existing_tunnels: int = 0,
+ return_keys: bool = False,
+ ) -> Optional[Tuple[List[bytes], List[bytes], int, int]]:
"""Create multiple IPsec tunnel interfaces between two VPP nodes.
Some deployments (e.g. devicetest) need to know the generated keys.
:type if1_key: str
:type if2_key: str
:type n_tunnels: int
- :type crypto_alg: CryptoAlg
- :type integ_alg: Optonal[IntegAlg]
- :type raddr_ip1: string
- :type raddr_ip2: string
+ :type crypto_alg: CryptoAlg.InputType
+ :type integ_alg: IntegAlg.InputType
+ :type raddr_ip1: str
+ :type raddr_ip2: str
:type raddr_range: int
:type existing_tunnels: int
:type return_keys: bool
:returns: Ckeys, ikeys, spi_1, spi_2.
- :rtype: Optional[List[bytes], List[bytes], int, int]
+ :rtype: Optional[Tuple[List[bytes], List[bytes], int, int]]
"""
+ crypto_alg = get_enum_instance(CryptoAlg, crypto_alg)
+ integ_alg = get_enum_instance(IntegAlg, integ_alg)
n_tunnels = int(n_tunnels)
existing_tunnels = int(existing_tunnels)
spi_d = dict(spi_1=100000, spi_2=200000)
return None
@staticmethod
- def _create_ipsec_script_files(dut, instances):
+ def _create_ipsec_script_files(
+ dut: str, instances: int
+ ) -> List[TextIOWrapper]:
"""Create script files for configuring IPsec in containers
:param dut: DUT node on which to create the script files
:param instances: number of containers on DUT node
- :type dut: string
+ :type dut: str
:type instances: int
+ :returns: Created opened file handles.
+ :rtype: List[TextIOWrapper]
"""
scripts = []
for cnf in range(0, instances):
script_filename = (
f"/tmp/ipsec_create_tunnel_cnf_{dut}_{cnf + 1}.config"
)
- scripts.append(open(script_filename, "w"))
+ scripts.append(open(script_filename, "w", encoding="utf-8"))
return scripts
@staticmethod
- def _close_and_copy_ipsec_script_files(dut, nodes, instances, scripts):
+ def _close_and_copy_ipsec_script_files(
+ dut: str, nodes: dict, instances: int, scripts: Sequence[TextIOWrapper]
+ ) -> None:
"""Close created scripts and copy them to containers
:param dut: DUT node on which to create the script files
:param nodes: VPP nodes
:param instances: number of containers on DUT node
:param scripts: dictionary holding the script files
- :type dut: string
+ :type dut: str
:type nodes: dict
:type instances: int
:type scripts: dict
)
scp_node(nodes[dut], script_filename, script_filename)
- @staticmethod
- def vpp_ipsec_create_tunnel_interfaces_in_containers(
- nodes,
- if1_ip_addr,
- if2_ip_addr,
- n_tunnels,
- crypto_alg,
- integ_alg,
- raddr_ip1,
- raddr_ip2,
- raddr_range,
- n_instances,
- ):
- """Create multiple IPsec tunnel interfaces between two VPP nodes.
-
- :param nodes: VPP nodes to create tunnel interfaces.
- :param if1_ip_addr: VPP node 1 interface IP4 address.
- :param if2_ip_addr: VPP node 2 interface IP4 address.
- :param n_tunnels: Number of tunnell interfaces to create.
- :param crypto_alg: The encryption algorithm name.
- :param integ_alg: The integrity algorithm name.
- :param raddr_ip1: Policy selector remote IPv4 start address for the
- first tunnel in direction node1->node2.
- :param raddr_ip2: Policy selector remote IPv4 start address for the
- first tunnel in direction node2->node1.
- :param raddr_range: Mask specifying range of Policy selector Remote
- IPv4 addresses. Valid values are from 1 to 32.
- :param n_instances: Number of containers.
- :type nodes: dict
- :type if1_ip_addr: str
- :type if2_ip_addr: str
- :type n_tunnels: int
- :type crypto_alg: CryptoAlg
- :type integ_alg: Optional[IntegAlg]
- :type raddr_ip1: string
- :type raddr_ip2: string
- :type raddr_range: int
- :type n_instances: int
- """
- spi_1 = 100000
- spi_2 = 200000
- addr_incr = 1 << (32 - raddr_range)
-
- dut1_scripts = IPsecUtil._create_ipsec_script_files("DUT1", n_instances)
- dut2_scripts = IPsecUtil._create_ipsec_script_files("DUT2", n_instances)
-
- for cnf in range(0, n_instances):
- dut1_scripts[cnf].write(
- "create loopback interface\n" "set interface state loop0 up\n\n"
- )
- dut2_scripts[cnf].write(
- f"ip route add {if1_ip_addr}/8 via "
- f"{ip_address(if2_ip_addr) + cnf + 100} memif1/{cnf + 1}\n\n"
- )
-
- for tnl in range(0, n_tunnels):
- cnf = tnl % n_instances
- ckey = getattr(
- gen_key(IPsecUtil.get_crypto_alg_key_len(crypto_alg)), "hex"
- )
- integ = ""
- ikey = getattr(
- gen_key(IPsecUtil.get_integ_alg_key_len(integ_alg)), "hex"
- )
- if integ_alg:
- integ = (
- f"integ-alg {integ_alg.alg_name} "
- f"local-integ-key {ikey} "
- f"remote-integ-key {ikey} "
- )
- # Configure tunnel end point(s) on left side
- dut1_scripts[cnf].write(
- "set interface ip address loop0 "
- f"{ip_address(if1_ip_addr) + tnl * addr_incr}/32\n"
- f"create ipsec tunnel "
- f"local-ip {ip_address(if1_ip_addr) + tnl * addr_incr} "
- f"local-spi {spi_1 + tnl} "
- f"remote-ip {ip_address(if2_ip_addr) + cnf} "
- f"remote-spi {spi_2 + tnl} "
- f"crypto-alg {crypto_alg.alg_name} "
- f"local-crypto-key {ckey} "
- f"remote-crypto-key {ckey} "
- f"instance {tnl // n_instances} "
- f"salt 0x0 "
- f"{integ} \n"
- f"set interface unnumbered ipip{tnl // n_instances} use loop0\n"
- f"set interface state ipip{tnl // n_instances} up\n"
- f"ip route add {ip_address(raddr_ip2)+tnl}/32 "
- f"via ipip{tnl // n_instances}\n\n"
- )
- # Configure tunnel end point(s) on right side
- dut2_scripts[cnf].write(
- f"set ip neighbor memif1/{cnf + 1} "
- f"{ip_address(if1_ip_addr) + tnl * addr_incr} "
- f"02:02:00:00:{17:02X}:{cnf:02X} static\n"
- f"create ipsec tunnel local-ip {ip_address(if2_ip_addr) + cnf} "
- f"local-spi {spi_2 + tnl} "
- f"remote-ip {ip_address(if1_ip_addr) + tnl * addr_incr} "
- f"remote-spi {spi_1 + tnl} "
- f"crypto-alg {crypto_alg.alg_name} "
- f"local-crypto-key {ckey} "
- f"remote-crypto-key {ckey} "
- f"instance {tnl // n_instances} "
- f"salt 0x0 "
- f"{integ}\n"
- f"set interface unnumbered ipip{tnl // n_instances} "
- f"use memif1/{cnf + 1}\n"
- f"set interface state ipip{tnl // n_instances} up\n"
- f"ip route add {ip_address(raddr_ip1) + tnl}/32 "
- f"via ipip{tnl // n_instances}\n\n"
- )
-
- IPsecUtil._close_and_copy_ipsec_script_files(
- "DUT1", nodes, n_instances, dut1_scripts
- )
- IPsecUtil._close_and_copy_ipsec_script_files(
- "DUT2", nodes, n_instances, dut2_scripts
- )
-
@staticmethod
def vpp_ipsec_add_multiple_tunnels(
- nodes,
- interface1,
- interface2,
- n_tunnels,
- crypto_alg,
- integ_alg,
- tunnel_ip1,
- tunnel_ip2,
- raddr_ip1,
- raddr_ip2,
- raddr_range,
- tunnel_addr_incr=True,
- ):
+ nodes: dict,
+ interface1: Union[str, int],
+ interface2: Union[str, int],
+ n_tunnels: int,
+ crypto_alg: CryptoAlg.InputType,
+ integ_alg: IntegAlg.InputType,
+ tunnel_ip1: str,
+ tunnel_ip2: str,
+ raddr_ip1: str,
+ raddr_ip2: str,
+ raddr_range: int,
+ tunnel_addr_incr: bool = True,
+ ) -> None:
"""Create multiple IPsec tunnels between two VPP nodes.
:param nodes: VPP nodes to create tunnels.
:param tunnel_addr_incr: Enable or disable tunnel IP address
incremental step.
:type nodes: dict
- :type interface1: str or int
- :type interface2: str or int
+ :type interface1: Union[str, int]
+ :type interface2: Union[str, int]
:type n_tunnels: int
- :type crypto_alg: CryptoAlg
- :type integ_alg: Optional[IntegAlg]
+ :type crypto_alg: CryptoAlg.InputType
+ :type integ_alg: IntegAlg.InputType
:type tunnel_ip1: str
:type tunnel_ip2: str
- :type raddr_ip1: string
- :type raddr_ip2: string
+ :type raddr_ip1: str
+ :type raddr_ip2: str
:type raddr_range: int
:type tunnel_addr_incr: bool
"""
+ crypto_alg = get_enum_instance(CryptoAlg, crypto_alg)
+ integ_alg = get_enum_instance(IntegAlg, integ_alg)
+
spd_id = 1
p_hi = 100
p_lo = 10
spi_1 = 300000
spi_2 = 400000
- crypto_key = gen_key(
- IPsecUtil.get_crypto_alg_key_len(crypto_alg)
- ).decode()
- integ_key = (
- gen_key(IPsecUtil.get_integ_alg_key_len(integ_alg)).decode()
- if integ_alg
- else ""
- )
-
+ crypto_key = gen_key(crypto_alg.key_len).decode()
+ integ_key = gen_key(integ_alg.key_len).decode()
rmac = (
Topology.get_interface_mac(nodes["DUT2"], interface2)
if "DUT2" in nodes.keys()
nodes["DUT1"],
spd_id,
p_hi,
- PolicyAction.BYPASS,
+ IpsecSpdAction.BYPASS,
inbound=False,
- proto=50,
+ proto=IPsecProto.ESP,
laddr_range=dut1_local_outbound_range,
raddr_range=dut1_remote_outbound_range,
)
nodes["DUT1"],
spd_id,
p_hi,
- PolicyAction.BYPASS,
+ IpsecSpdAction.BYPASS,
inbound=True,
- proto=50,
+ proto=IPsecProto.ESP,
laddr_range=dut1_remote_outbound_range,
raddr_range=dut1_local_outbound_range,
)
n_tunnels,
spd_id,
priority=ObjIncrement(p_lo, 0),
- action=PolicyAction.PROTECT,
+ action=IpsecSpdAction.PROTECT,
inbound=False,
sa_id=ObjIncrement(sa_id_1, 1),
raddr_range=NetworkIncrement(ip_network(raddr_ip2)),
n_tunnels,
spd_id,
priority=ObjIncrement(p_lo, 0),
- action=PolicyAction.PROTECT,
+ action=IpsecSpdAction.PROTECT,
inbound=True,
sa_id=ObjIncrement(sa_id_2, 1),
raddr_range=NetworkIncrement(ip_network(raddr_ip1)),
nodes["DUT2"],
spd_id,
p_hi,
- PolicyAction.BYPASS,
+ IpsecSpdAction.BYPASS,
inbound=False,
- proto=50,
+ proto=IPsecProto.ESP,
laddr_range=dut2_remote_outbound_range,
raddr_range=dut2_local_outbound_range,
)
nodes["DUT2"],
spd_id,
p_hi,
- PolicyAction.BYPASS,
+ IpsecSpdAction.BYPASS,
inbound=True,
- proto=50,
+ proto=IPsecProto.ESP,
laddr_range=dut2_local_outbound_range,
raddr_range=dut2_remote_outbound_range,
)
n_tunnels,
spd_id,
priority=ObjIncrement(p_lo, 0),
- action=PolicyAction.PROTECT,
+ action=IpsecSpdAction.PROTECT,
inbound=True,
sa_id=ObjIncrement(sa_id_1, 1),
raddr_range=NetworkIncrement(ip_network(raddr_ip2)),
n_tunnels,
spd_id,
priority=ObjIncrement(p_lo, 0),
- action=PolicyAction.PROTECT,
+ action=IpsecSpdAction.PROTECT,
inbound=False,
sa_id=ObjIncrement(sa_id_2, 1),
raddr_range=NetworkIncrement(ip_network(raddr_ip1)),
)
@staticmethod
- def vpp_ipsec_show_all(node):
+ def vpp_ipsec_show_all(node: dict) -> None:
"""Run "show ipsec all" debug CLI command.
:param node: Node to run command on.
PapiSocketExecutor.run_cli_cmd(node, "show ipsec all")
@staticmethod
- def show_ipsec_security_association(node):
+ def show_ipsec_security_association(node: dict) -> None:
"""Show IPSec security association.
:param node: DUT node.
PapiSocketExecutor.dump_and_log(node, [cmd])
@staticmethod
- def vpp_ipsec_flow_enale_rss(node, proto, type, function="default"):
+ def vpp_ipsec_flow_enable_rss(
+ node: dict,
+ proto: str = "IPSEC_ESP",
+ rss_type: str = "esp",
+ function: str = "default",
+ ) -> int:
"""Ipsec flow enable rss action.
:param node: DUT node.
:param proto: The flow protocol.
- :param type: RSS type.
+ :param rss_type: RSS type.
:param function: RSS function.
-
:type node: dict
- :type proto: str
- :type type: str
+ :type proto: IPsecProto.InputType
+ :type rss_type: str
:type function: str
:returns: flow_index.
+ :rtype: int
"""
+ # The proto argument does not correspond to IPsecProto.
+ # The allowed values come from src/vnet/ip/protocols.def
+ # and we do not have a good enum for that yet.
+ # FlowUti. and FlowUtil. are close but not exactly the same.
+
# TODO: to be fixed to use full PAPI when it is ready in VPP
cmd = (
- f"test flow add src-ip any proto {proto} rss function "
- f"{function} rss types {type}"
+ f"test flow add src-ip any proto {proto} rss function"
+ f" {function} rss types {rss_type}"
)
stdout = PapiSocketExecutor.run_cli_cmd(node, cmd)
flow_index = stdout.split()[1]
@staticmethod
def vpp_create_ipsec_flows_on_dut(
- node, n_flows, rx_queues, spi_start, interface
- ):
+ node: dict, n_flows: int, rx_queues: int, spi_start: int, interface: str
+ ) -> None:
"""Create mutiple ipsec flows and enable flows onto interface.
:param node: DUT node.
:type rx_queues: int
:type spi_start: int
:type interface: str
- :returns: flow_index.
"""
for i in range(0, n_flows):
path = ["dpdk", "dev default", "num-tx-desc"]
self.add_config_item(self._nodeconfig, value, path)
+ def add_dpdk_dev_default_tso(self):
+ """Add DPDK dev default tso configuration."""
+ path = [u"dpdk", u"dev default", u"tso"]
+ self.add_config_item(self._nodeconfig, "on", path)
+
def add_dpdk_log_level(self, value):
"""Add DPDK log-level configuration.
path = ["dpdk", "max-simd-bitwidth"]
self.add_config_item(self._nodeconfig, value, path)
+ def add_dpdk_enable_tcp_udp_checksum(self):
+ """Add DPDK enable-tcp-udp-checksum configuration."""
+ path = [u"dpdk", u"enable-tcp-udp-checksum"]
+ self.add_config_item(self._nodeconfig, u"", path)
+
def add_cpu_main_core(self, value):
"""Add CPU main core configuration.
path = ["tcp", "preallocated-half-open-connections"]
self.add_config_item(self._nodeconfig, value, path)
+ def add_tcp_tso(self):
+ """Add TCP tso configuration."""
+ path = [u"tcp", u"tso"]
+ self.add_config_item(self._nodeconfig, u"", path)
+
def add_session_enable(self):
"""Add session enable."""
path = ["session", "enable"]
path = ["session", "local-endpoints-table-memory"]
self.add_config_item(self._nodeconfig, value, path)
+ def add_session_use_dma(self):
+ """Add session use-dma configuration."""
+ path = [u"session", u"use-dma"]
+ self.add_config_item(self._nodeconfig, u"", path)
+
def add_dma_dev(self, devices):
"""Add DMA devices configuration.
--- /dev/null
+# Copyright (c) 2024 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.
+
+"""Utility functions for handling VPP API enum values from Robot."""
+
+
+from enum import Enum, IntEnum
+from typing import Type, Union
+
+
+# The return type is enum_class, but it is hard to explain that to pylint.
+def get_enum_instance(
+ enum_class: Type[Enum], value: Union[Enum, str, int, None]
+) -> Enum:
+ """Return an enum instance matching the string name.
+
+ In Robot, it is not convenient to construct Enum instances,
+ most values defined in Robot are strings.
+
+ This helper function can be used in Python L1 keywords
+ to convert string into the corresponding Enum instance.
+ Aliases are also recognized.
+
+ As an added benefit, support various Robot-like niceties,
+ like lower case, or dash or space instead of underscore.
+
+ As a common shortcut, value is returned it it already is an instance.
+
+ Another convenience: None or empty string is processed as "NONE".
+
+ If the class is a subclass of IntEnum, int values
+ and (string) values convertable to int are also accepted as input.
+
+ :param enum_class: Class object instance of which should be returned.
+ :param value: String or any other recognized form of an enum instance.
+ :type enum_class: Type[Enum]
+ :type value: Union[enum_class, str, int, None]
+ :returns: The matching instance, if found.
+ :rtype: enum_class
+ :raises: ValueError if no matching instance is found.
+ """
+ if issubclass(enum_class, IntEnum):
+ try:
+ int_value = int(value)
+ return enum_class(int_value)
+ except (TypeError, ValueError):
+ pass
+ if isinstance(value, enum_class):
+ return value
+ if not value:
+ value = "NONE"
+ normalized_name = str(value).upper().replace("-", "_").replace(" ", "_")
+ members = enum_class.__members__ # Includes aliases, useful for NONE.
+ if normalized_name not in members:
+ msg = f"Enum class {enum_class} does not have value {normalized_name!r}"
+ raise ValueError(msg)
+ return members[normalized_name]
-# Copyright (c) 2023 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
| | ... | ${r_tunnel} | ${l_tunnel}
| | VPP IPsec Add SPD | ${node} | ${spd_id}
| | VPP IPsec SPD Add If | ${node} | ${spd_id} | ${interface}
-| | ${action}= | Policy Action Bypass
-| | VPP IPsec Add SPD Entry | ${node} | ${spd_id} | ${p_hi} | ${action}
-| | ... | inbound=${TRUE} | proto=${ESP_PROTO} | is_ipv6=${is_ipv6}
+| | VPP IPsec Add SPD Entry | ${node} | ${spd_id} | ${p_hi} | BYPASS
+| | ... | inbound=${TRUE} | proto=ESP | is_ipv6=${is_ipv6}
| | ... | laddr_range=${tg_tun_ip} | raddr_range=${dut_tun_ip}
-| | VPP IPsec Add SPD Entry | ${node} | ${spd_id} | ${p_hi} | ${action}
-| | ... | inbound=${FALSE} | proto=${ESP_PROTO} | is_ipv6=${is_ipv6}
+| | VPP IPsec Add SPD Entry | ${node} | ${spd_id} | ${p_hi} | BYPASS
+| | ... | inbound=${FALSE} | proto=ESP | is_ipv6=${is_ipv6}
| | ... | laddr_range=${dut_tun_ip} | raddr_range=${tg_tun_ip}
-| | ${action}= | Policy Action Protect
-| | VPP IPsec Add SPD Entry | ${node} | ${spd_id} | ${p_lo} | ${action}
+| | VPP IPsec Add SPD Entry | ${node} | ${spd_id} | ${p_lo} | PROTECT
| | ... | sa_id=${r_sa_id} | laddr_range=${l_ip}
| | ... | raddr_range=${r_ip} | inbound=${TRUE}
-| | VPP IPsec Add SPD Entry | ${node} | ${spd_id} | ${p_lo} | ${action}
+| | VPP IPsec Add SPD Entry | ${node} | ${spd_id} | ${p_lo} | PROTECT
| | ... | sa_id=${l_sa_id} | laddr_range=${l_ip}
| | ... | raddr_range=${r_ip} | inbound=${FALSE}
-# Copyright (c) 2023 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
| Library | resources.libraries.python.HoststackUtil
| Library | resources.libraries.python.NginxUtil
| Library | resources.libraries.python.NsimUtil
+| Library | resources.libraries.python.DMAUtil
| Library | resources.tools.ab.ABTools
| Variables | resources/libraries/python/Constants.py
+| Resource | resources/libraries/robot/features/dma.robot
| Resource | resources/libraries/robot/ip/ip4.robot
| Resource | resources/libraries/robot/nsim/nsim.robot
| Resource | resources/libraries/robot/nginx/default.robot
| ... | transparent_tls=${False}
| ... | json=${True}
| ... | ip_version=${4}
+| &{nginx_server_with_dma_attr}=
+| ... | role=server
+| ... | cpu_cnt=${1}
+| ... | cfg_vpp_feature=${Empty}
+| ... | namespace=default
+| ... | vcl_config=vcl_dma.conf
+| ... | ld_preload=${True}
+| ... | transparent_tls=${False}
+| ... | json=${True}
+| ... | ip_version=${4}
*** Keywords ***
| Set VPP Hoststack Attributes
| | ... | and similar values like \${DUT1_cpu_alloc_str} are already defined.
| |
| | ... | *Arguments:*
-| | ... | - mode - VCL Nginx or LDP Nginx.
-| | ... | Type: string
-| | ... | - rps_cps - Test request or connect.
-| | ... | Type: string
-| | ... | - core_num - Nginx work processes number.
-| | ... | Type: int
-| | ... | - qat - Whether to use the qat engine.
-| | ... | Type: string
-| | ... | - tls_tcp - TLS or TCP.
+| | ... | - mode - VCL Nginx or LDP Nginx. Type: string
+| | ... | - rps_cps - Test rps or cps. Type: string
+| | ... | - core_num - Nginx work processes number. Type: int
+| | ... | - qat - Whether to use the qat engine. Type: string
+| | ... | - tls_tcp - TLS or TCP. Type: string
+| | ... | - use_dma - Whether to use DMA, Default: False. Type: bool
| |
| | ... | *Example:*
| |
| | ... | \| ${rps_cps} \| ${phy_cores} \| ${qat} \| ${tls_tcp} \|
| |
| | [Arguments] | ${mode} | ${rps_cps} | ${phy_cores} | ${qat} | ${tls_tcp}
+| | | ... | ${use_dma}=${False}
| |
| | Set Interface State | ${DUT1} | ${DUT1_${int}1}[0] | up
| | VPP Interface Set IP Address | ${DUT1} | ${DUT1_${int}1}[0]
| | ... | ${CPU_CNT_SYSTEM} + ${CPU_CNT_MAIN} + ${vpp_hoststack_attr}[phy_cores]
| | ${numa}= | Get interfaces numa node | ${DUT1} | ${DUT1_${int}1}[0]
| | Apply Nginx configuration on DUT | ${DUT1} | ${phy_cores}
-| | Set To Dictionary | ${nginx_server_attr} | ip_address
+| | ${attr}= | Run Keyword If | ${use_dma} == ${True}
+| | ... | Set Variable | ${nginx_server_with_dma_attr}
+| | ... | ELSE | Set Variable | ${nginx_server_attr}
+| | Set To Dictionary | ${attr} | ip_address
| | ... | ${dut_ip_addrs}[0]
| | ${core_list}= | Cpu list per node str | ${DUT1} | ${numa}
-| | ... | skip_cnt=${skip_cnt} | cpu_cnt=${nginx_server_attr}[cpu_cnt]
-| | ${cpu_idle_list}= | Get cpu idle list | ${DUT1} | ${numa}
-| | ... | ${smt_used} | ${DUT1_cpu_alloc_str}
-| | ${nginx_server}= | Get Nginx Command | ${nginx_server_attr}
+| | ... | skip_cnt=${skip_cnt} | cpu_cnt=${attr}[cpu_cnt]
+| | ... | smt_used=${smt_used}
+| | ${cpu_idle}= | Cpu List per node | ${DUT1} | ${numa}
+| | ${cpu_idle_list}= | Get Slice From List | ${cpu_idle}
+| | ... | ${${skip_cnt} + ${attr}[cpu_cnt]}
+| | ${nginx_server}= | Get Nginx Command | ${attr}
| | ... | ${nginx_version} | ${packages_dir}
-| | ${server_pid}= | Start Hoststack Test Program
-| | ... | ${DUT1} | ${nginx_server_attr}[namespace] | ${core_list}
+| | Start Hoststack Test Program
+| | ... | ${DUT1} | ${attr}[namespace] | ${core_list}
| | ... | ${nginx_server}
+| | Get Hoststack Test Program Logs | ${DUT1} | ${nginx_server}
| | Taskset Nginx PID to idle cores | ${DUT1} | ${cpu_idle_list}
| Measure TLS requests or connections per second
| |
| | [Arguments] | ${ciphers} | ${files} | ${tls_tcp} | ${mode}
| |
-| | ${output}= | Run ab | ${tg} | ${dut_ip_addrs}[0] | ${ab_ip_addrs}[0]
+| | ${dut_ip_addrs_str} | Evaluate | ','.join(${dut_ip_addrs})
+| | ${ad_ip_addrs_str} | Evaluate | ','.join(${ab_ip_addrs})
+| | ${output}= | Run ab | ${tg} | ${dut_ip_addrs_str} | ${ad_ip_addrs_str}
| | ... | ${tls_tcp} | ${ciphers} | ${files} | ${mode} | ${r_total} | ${c_total}
| | ... | ${listen_port}
| | Set test message | ${output}
| | | Run keyword | ${dut}.Add tcp preallocated half open connections
| | | ... | ${tcp_prealloc_ho_conns}
| | END
+
+| Add Additional Startup Configuration For DMA On All DUTs
+| | [Documentation]
+| | ... | Add additional startup configuration for DMA on all DUTs
+| |
+| | [Arguments] | ${use_dma}=${True}
+| |
+| | FOR | ${dut} | IN | @{duts}
+| | | Import Library | resources.libraries.python.VppConfigGenerator
+| | | ... | WITH NAME | ${dut}
+| | | Run keyword | ${dut}.Add Session Event Queues Memfd Segment
+| | | Run keyword | ${dut}.Add TCP Congestion Control Algorithm
+| | | Run keyword | ${dut}.Add TCP Tso
+| | | Run keyword | ${dut}.Add Session Enable
+| | | Run keyword If | ${use_dma} == ${True}
+| | | ... | ${dut}.Add Session Use Dma
+| | | Run keyword If | ${use_dma} == ${True}
+| | | ... | Enable DMA WQs on all DUTs
+| | | Run keyword If | ${use_dma} == ${True}
+| | | ... | ${dut}.Add DMA Dev | ${${dut}_dma_wqs}
+| | | Run keyword If | '${nic_driver}' == 'vfio-pci'
+| | | ... | ${dut}.Add DPDK Dev Default Tso
+| | | Run keyword If | '${nic_driver}' == 'vfio-pci'
+| | | ... | ${dut}.Add DPDK Enable Tcp Udp Checksum
+| | END
--- /dev/null
+vcl {
+ segment-size 4000000000
+ add-segment-size 4000000000
+ rx-fifo-size 4000000
+ tx-fifo-size 4000000
+ use-mq-eventfd
+ event-queue-size 500000
+ api-socket-name /run/vpp/api.sock
+}
-# Copyright (c) 2022 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES CBC 128
-| | ${auth_alg} = | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
-# Copyright (c) 2022 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES CBC 128
-| | ${auth_alg} = | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
-# Copyright (c) 2022 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${overhead}= | ${54}
| ${tg_spi}= | ${1000}
| ${dut_spi}= | ${1001}
-| ${ESP_PROTO}= | ${50}
| ${tg_if1_ip4}= | 192.168.100.2
| ${tg_if2_ip4}= | 192.168.4.4
| ${dut_if1_ip4}= | 192.168.100.3
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
-# Copyright (c) 2022 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${overhead}= | ${54}
| ${tg_spi}= | ${1000}
| ${dut_spi}= | ${1001}
-| ${ESP_PROTO}= | ${50}
| ${tg_if1_ip4}= | 192.168.100.2
| ${tg_if2_ip4}= | 192.168.4.4
| ${dut_if1_ip4}= | 192.168.100.3
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
-# Copyright (c) 2022 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${overhead}= | ${54}
| ${tg_spi}= | ${1000}
| ${dut_spi}= | ${1001}
-| ${ESP_PROTO}= | ${50}
| ${tg_if1_ip6}= | 3ffe:5f::1
| ${tg_if2_ip6}= | 3ffe:60::4
| ${dut_if1_ip6}= | 3ffe:5f::2
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
-# Copyright (c) 2022 Cisco and/or its affiliates.
+# Copyright (c) 2024 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:
| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${overhead}= | ${58}
| ${tg_spi}= | ${1000}
| ${dut_spi}= | ${1001}
-| ${ESP_PROTO}= | ${50}
| ${tg_if1_ip6}= | 3ffe:5f::1
| ${tg_if2_ip6}= | 3ffe:60::4
| ${dut_if1_ip6}= | 3ffe:5f::2
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${10000}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${10000}
+| ${rxq_ratio}= | ${2}
# Main heap size multiplicator
| ${heap_size_mult}= | ${2}
# Traffic profile:
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${10000}
+| ${rxq_ratio}= | ${2}
# Main heap size multiplicator
| ${heap_size_mult}= | ${2}
# Traffic profile:
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1000}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1000}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1000}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1000}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| | When Initialize layer driver | ${nic_driver}
| | And Initialize layer interface
| | And Initialize IPSec in 3-node circular topology
-| | ${flow_index} = | And VPP Ipsec Flow Enale Rss
-| | ... | ${dut1} | IPSEC_ESP | esp | default
+| | ${flow_index} = | And VPP Ipsec Flow Enable Rss | ${dut1}
| | And VPP Flow Enable | ${dut1} | ${DUT1_${int}2}[0] | ${flow_index}
-| | ${flow_index} = | And VPP Ipsec Flow Enale Rss
-| | ... | ${dut2} | IPSEC_ESP | esp | default
+| | ${flow_index} = | And VPP Ipsec Flow Enable Rss | ${dut2}
| | And VPP Flow Enable | ${dut2} | ${DUT2_${int}1}[0] | ${flow_index}
| | And VPP IPsec Add Multiple Tunnels
| | ... | ${nodes} | ${DUT1_${int}2}[0] | ${DUT2_${int}1}[0] | ${n_tunnels}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 128
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 256
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 256
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels}
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels}
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels}
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${4}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${4}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${4}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${4}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 128
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 256
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1000}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-udir
| ${traffic_directions}= | ${1}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1000}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-udir
| ${traffic_directions}= | ${1}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1000}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-udir
| ${traffic_directions}= | ${1}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1000}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-udir
| ${traffic_directions}= | ${1}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 128
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 256
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 256
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-udir
| ${traffic_directions}= | ${1}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-udir
| ${traffic_directions}= | ${1}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${1}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-udir
| ${traffic_directions}= | ${1}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 128
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 256
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 256
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 128
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 256
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels}
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels}
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | ${n_total_tunnels} = | Evaluate | ${n_tunnels} + ${n_added_tunnels}
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 128
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 256
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 256
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${4}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-udir
| ${traffic_directions}= | ${1}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${4}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-udir
| ${traffic_directions}= | ${1}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | HW_DH895xcc
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| ${laddr_ip4}= | 10.0.0.0
| ${addr_range}= | ${24}
| ${n_tunnels}= | ${4}
+| ${rxq_ratio}= | ${2}
# Traffic profile:
| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-udir
| ${traffic_directions}= | ${1}
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| | ${ipsec_proto}= | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 128
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 256
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_native_plugin.so
| ... | crypto_ipsecmb_plugin.so | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg} = | Crypto Alg AES GCM 256
-| | ${auth_alg} = | Set Variable | ${NONE}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES CBC 128
+| ${auth_alg}= | SHA 512 256
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES CBC 128
-| | ${auth_alg}= | Integ Alg SHA 512 256
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 128
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 128
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
| ... | crypto_ipsecmb_plugin.so | crypto_sw_scheduler_plugin.so
| ... | crypto_openssl_plugin.so
| ${crypto_type}= | ${None}
+| ${encr_alg}= | AES GCM 256
+| ${auth_alg}= | NONE
| ${nic_name}= | Intel-X710
| ${nic_driver}= | vfio-pci
| ${nic_rxq_size}= | 0
| |
| | Set Test Variable | \${frame_size}
| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${NONE}
-| |
| | Given Set Max Rate And Jumbo
| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
| | And Pre-initialize layer driver | ${nic_driver}
--- /dev/null
+# Copyright (c) 2024 Intel 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
+| Resource | resources/libraries/robot/hoststack/hoststack.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV
+| ... | HOSTSTACK | LDP_NGINX | TCP | NIC_Intel-X710 | DRV_VFIO_PCI
+| ... | TCP_CPS | DMA
+| ... | eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5
+|
+| Suite Setup | Setup suite topology interfaces | ab | nginx
+| Suite Teardown | Tear down suite | ab
+| Test Setup | Setup test
+| Test Teardown | Tear down test | nginx
+|
+| Test Template | Local Template
+|
+| Documentation | **TCP requests per second.**
+| ... |
+| ... | - **[Top] Network Topologies:** TG-DUT-TG 2-node topology \
+| ... | with single link between nodes.
+| ... |
+| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4-TCP-HTTP for TCP
+| ... |
+| ... | - **[Cfg] DUT configuration:**
+| ... |
+| ... | - **[Ver] TG verification:**
+| ... |
+| ... | - **[Ref] Applicable standard specifications:**
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so
+| ... | dma_intel_plugin.so | ping_plugin.so
+| ${nic_name}= | Intel-X710
+| ${crypto_type}= | ${None}
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${overhead}= | ${0}
+#| ${page_size}= | 1G
+| ${ciphers}= | 0
+| ${rps_cps}= | cps
+| ${qat}= | ${0}
+| ${r_total}= | ${1000000}
+| ${c_total}= | ${2000}
+| ${listen_port}= | ${80}
+| ${mode}= | ldp
+| ${tls_tcp}= | tcp
+| ${keep_time}= | 0
+| ${ab_ip_prefix}= | 24
+| @{ab_ip_addrs}= | 192.168.10.2
+| ${dut_ip_prefix}= | 24
+| @{dut_ip_addrs}= | 192.168.10.1
+| ${nginx_version}= | 1.21.5
+| ${use_dma}= | ${True}
+
+*** Keywords ***
+| Local template
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | Set Test Variable | ${dpdk_no_tx_checksum_offload} | ${False}
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Add Additional Startup Configuration For DMA On All DUTs
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Set up LDP or VCL Nginx on DUT1 node | ${mode}
+| | ... | ${rps_cps} | ${phy_cores} | ${qat} | ${tls_tcp}
+| | ... | ${True}
+| | And Additional Suite Setup Action For ab
+| | Then Measure TLS requests or connections per second
+| | ... | ${ciphers} | ${frame_size} | ${tls_tcp} | ${rps_cps}
+
+*** Test Cases ***
+| 0B-1c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-cps
+| | [Tags] | 0B | 1C
+| | frame_size=${0} | phy_cores=${1}
+
+| 0B-2c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-cps
+| | [Tags] | 0B | 2C
+| | frame_size=${0} | phy_cores=${2}
+
+| 64B-1c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-cps
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-cps
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 1024B-1c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-cps
+| | [Tags] | 1024B | 1C
+| | frame_size=${1024} | phy_cores=${1}
+
+| 1024B-2c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-cps
+| | [Tags] | 1024B | 2C
+| | frame_size=${1024} | phy_cores=${2}
+
+| 2048B-1c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-cps
+| | [Tags] | 2048B | 1C
+| | frame_size=${2048} | phy_cores=${1}
+
+| 2048B-2c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-cps
+| | [Tags] | 2048B | 2C
+| | frame_size=${2048} | phy_cores=${2}
--- /dev/null
+# Copyright (c) 2024 Intel 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
+| Resource | resources/libraries/robot/hoststack/hoststack.robot
+|
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV
+| ... | HOSTSTACK | LDP_NGINX | TCP | NIC_Intel-X710 | DRV_VFIO_PCI
+| ... | TCP_RPS | DMA
+| ... | eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5
+|
+| Suite Setup | Setup suite topology interfaces | ab | nginx
+| Suite Teardown | Tear down suite | ab
+| Test Setup | Setup test
+| Test Teardown | Tear down test | nginx
+|
+| Test Template | Local Template
+|
+| Documentation | **TCP requests per seconds.**
+| ... |
+| ... | - **[Top] Network Topologies:** TG-DUT-TG 2-node topology \
+| ... | with single link between nodes.
+| ... |
+| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4-TCP-HTTP for TCP
+| ... |
+| ... | - **[Cfg] DUT configuration:**
+| ... |
+| ... | - **[Ver] TG verification:**
+| ... |
+| ... | - **[Ref] Applicable standard specifications:**
+
+*** Variables ***
+| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so
+| ... | dma_intel_plugin.so | ping_plugin.so
+| ${nic_name}= | Intel-X710
+| ${crypto_type}= | ${None}
+| ${nic_driver}= | vfio-pci
+| ${nic_rxq_size}= | 0
+| ${nic_txq_size}= | 0
+| ${nic_pfs}= | 2
+| ${nic_vfs}= | 0
+| ${overhead}= | ${0}
+#| ${page_size}= | 1G
+| ${ciphers}= | 0
+| ${rps_cps}= | rps
+| ${qat}= | ${0}
+| ${r_total}= | ${1000000}
+| ${c_total}= | ${2000}
+| ${listen_port}= | ${80}
+| ${mode}= | ldp
+| ${tls_tcp}= | tcp
+| ${keep_time}= | 300
+| ${ab_ip_prefix}= | 24
+| @{ab_ip_addrs}= | 192.168.10.2
+| ${dut_ip_prefix}= | 24
+| @{dut_ip_addrs}= | 192.168.10.1
+| ${nginx_version}= | 1.21.5
+| ${use_dma}= | ${True}
+
+*** Keywords ***
+| Local template
+| | [Arguments] | ${frame_size} | ${phy_cores} | ${rxq}=${None}
+| |
+| | Set Test Variable | \${frame_size}
+| | Set Test Variable | ${dpdk_no_tx_checksum_offload} | ${False}
+| | Given Set Max Rate And Jumbo
+| | And Add worker threads to all DUTs | ${phy_cores} | ${rxq}
+| | And Pre-initialize layer driver | ${nic_driver}
+| | And Add Additional Startup Configuration For DMA On All DUTs
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize layer driver | ${nic_driver}
+| | And Initialize layer interface
+| | And Set up LDP or VCL Nginx on DUT1 node | ${mode}
+| | ... | ${rps_cps} | ${phy_cores} | ${qat} | ${tls_tcp}
+| | ... | ${True}
+| | And Additional Suite Setup Action For ab
+| | Then Measure TLS requests or connections per second
+| | ... | ${ciphers} | ${frame_size} | ${tls_tcp} | ${rps_cps}
+
+*** Test Cases ***
+| 0B-1c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-rps
+| | [Tags] | 0B | 1C
+| | frame_size=${0} | phy_cores=${1}
+
+| 0B-2c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-rps
+| | [Tags] | 0B | 2C
+| | frame_size=${0} | phy_cores=${2}
+
+| 64B-1c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-rps
+| | [Tags] | 64B | 1C
+| | frame_size=${64} | phy_cores=${1}
+
+| 64B-2c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-rps
+| | [Tags] | 64B | 2C
+| | frame_size=${64} | phy_cores=${2}
+
+| 1024B-1c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-rps
+| | [Tags] | 1024B | 1C
+| | frame_size=${1024} | phy_cores=${1}
+
+| 1024B-2c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-rps
+| | [Tags] | 1024B | 2C
+| | frame_size=${1024} | phy_cores=${2}
+
+| 2048B-1c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-rps
+| | [Tags] | 2048B | 1C
+| | frame_size=${2048} | phy_cores=${1}
+
+| 2048B-2c-eth-ip4tcphttp-dma-ldpreload-nginx-1_21_5-rps
+| | [Tags] | 2048B | 2C
+| | frame_size=${2048} | phy_cores=${2}
-# Copyright (c) 2023 Intel and/or its affiliates.
-# Copyright (c) 2023 Cisco and/or its affiliates.
+# Copyright (c) 2024 Intel and/or its affiliates.
+# Copyright (c) 2024 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:
| ... | - **[Enc] Packet Encapsulations:** Eth-IPv6 for IPv6 routing.
| ... |
| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with IPv6 \
-| ... | routing and 2x500k static IPv6 /64 route entries. DUT1 and DUT2 tested \
+| ... | routing and 2x500k static IPv6 /128 route entries. DUT1 and DUT2 tested \
| ... | with ${nic_name}.
| ... |
| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
| ${overhead}= | ${0}
| ${rts_per_flow}= | ${500000}
# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip6-ip6dst${rts_per_flow}
+| ${traffic_profile}= | trex-stl-ethip6-ip6dst${rts_per_flow}-${nic_pfs}p
*** Keywords ***
| Local Template
| | And Apply startup configuration on all VPP DUTs
| | When Initialize layer driver | ${nic_driver}
| | And Initialize layer interface
-| | And Initialize IPv6 forwarding with scaling in circular topology
-| | ... | ${rts_per_flow}
+| | And Set interfaces in path up
+| | And Initialize IPv6 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs}
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
| ... | - **[Enc] Packet Encapsulations:** Eth-IPv6 for IPv6 routing.
| ... |
| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with IPv6 \
-| ... | routing and 2x100k static IPv6 /64 route entries. DUT1 and DUT2 tested \
+| ... | routing and 2x100k static IPv6 /128 route entries. DUT1 and DUT2 tested \
| ... | with ${nic_name}.
| ... |
| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
| ... | - **[Enc] Packet Encapsulations:** Eth-IPv6 for IPv6 routing.
| ... |
| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with IPv6 \
-| ... | routing and 2x100k static IPv6 /64 route entries. DUT1 and DUT2 tested \
+| ... | routing and 2x100k static IPv6 /128 route entries. DUT1 and DUT2 tested \
| ... | with ${nic_name}.
| ... |
| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
| ... | - **[Enc] Packet Encapsulations:** Eth-IPv6 for IPv6 routing.
| ... |
| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with IPv6 \
-| ... | routing and 2x10k static IPv6 /64 route entries. DUT1 and DUT2 tested \
+| ... | routing and 2x10k static IPv6 /128 route entries. DUT1 and DUT2 tested \
| ... | with ${nic_name}.
| ... |
| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
| ... | - **[Enc] Packet Encapsulations:** Eth-IPv6 for IPv6 routing.
| ... |
| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with IPv6 \
-| ... | routing and 2x10k static IPv6 /64 route entries. DUT1 and DUT2 tested \
+| ... | routing and 2x10k static IPv6 /128 route entries. DUT1 and DUT2 tested \
| ... | with ${nic_name}.
| ... |
| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
| ... | - **[Enc] Packet Encapsulations:** Eth-IPv6 for IPv6 routing.
| ... |
| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with IPv6 \
-| ... | routing and 2x1M static IPv6 /64 route entries. DUT1 and DUT2 tested \
+| ... | routing and 2x1M static IPv6 /128 route entries. DUT1 and DUT2 tested \
| ... | with ${nic_name}.
| ... |
| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
| ... | - **[Enc] Packet Encapsulations:** Eth-IPv6 for IPv6 routing.
| ... |
| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with IPv6 \
-| ... | routing and 2x1M static IPv6 /64 route entries. DUT1 and DUT2 tested \
+| ... | routing and 2x1M static IPv6 /128 route entries. DUT1 and DUT2 tested \
| ... | with ${nic_name}.
| ... |
| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
| ... | - **[Enc] Packet Encapsulations:** Eth-IPv6 for IPv6 routing.
| ... |
| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with IPv6 \
-| ... | routing and 6x100k static IPv6 /64 route entries. DUT1 and DUT2 tested \
+| ... | routing and 6x100k static IPv6 /128 route entries. DUT1 and DUT2 tested \
| ... | with ${nic_name}.
| ... |
| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
| ... | - **[Enc] Packet Encapsulations:** Eth-IPv6 for IPv6 routing.
| ... |
| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with IPv6 \
-| ... | routing and 6x10k static IPv6 /64 route entries. DUT1 and DUT2 tested \
+| ... | routing and 6x10k static IPv6 /128 route entries. DUT1 and DUT2 tested \
| ... | with ${nic_name}.
| ... |
| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
| ... | - **[Enc] Packet Encapsulations:** Eth-IPv6 for IPv6 routing.
| ... |
| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with IPv6 \
-| ... | routing and 6x10k static IPv6 /64 route entries. DUT1 and DUT2 tested \
+| ... | routing and 6x10k static IPv6 /128 route entries. DUT1 and DUT2 tested \
| ... | with ${nic_name}.
| ... |
| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
| ... | - **[Enc] Packet Encapsulations:** Eth-IPv6 for IPv6 routing.
| ... |
| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with IPv6 \
-| ... | routing and 6x10k static IPv6 /64 route entries. DUT1 and DUT2 tested \
+| ... | routing and 6x10k static IPv6 /128 route entries. DUT1 and DUT2 tested \
| ... | with ${nic_name}.
| ... |
| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
| ... | - **[Enc] Packet Encapsulations:** Eth-IPv6 for IPv6 routing.
| ... |
| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with IPv6 \
-| ... | routing and 6x100k static IPv6 /64 route entries. DUT1 and DUT2 tested \
+| ... | routing and 6x100k static IPv6 /128 route entries. DUT1 and DUT2 tested \
| ... | with ${nic_name}.
| ... |
| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
| ... | - **[Enc] Packet Encapsulations:** Eth-IPv6 for IPv6 routing.
| ... |
| ... | - **[Cfg] DUT configuration:** DUT1 and DUT2 are configured with IPv6 \
-| ... | routing and 6x10k static IPv6 /64 route entries. DUT1 and DUT2 tested \
+| ... | routing and 6x10k static IPv6 /128 route entries. DUT1 and DUT2 tested \
| ... | with ${nic_name}.
| ... |
| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-# Copyright (c) 2023 Intel and/or its affiliates.
-# Copyright (c) 2023 Cisco and/or its affiliates.
+# Copyright (c) 2024 Intel and/or its affiliates.
+# Copyright (c) 2024 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:
| ... | - **[Enc] Packet Encapsulations:** Eth-IPv6 for IPv6 routing.
| ... |
| ... | - **[Cfg] DUT configuration:** DUT1 is configured with IPv6 routing \
-| ... | 2x500k static IPv6 /64 route entries. DUT1 is tested with ${nic_name}.
+| ... | 2x500k static IPv6 /128 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 \
| ${overhead}= | ${0}
| ${rts_per_flow}= | ${500000}
# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip6-ip6dst${rts_per_flow}
+| ${traffic_profile}= | trex-stl-ethip6-ip6dst${rts_per_flow}-${nic_pfs}p
*** Keywords ***
| Local Template
| | And Apply startup configuration on all VPP DUTs
| | When Initialize layer driver | ${nic_driver}
| | And Initialize layer interface
-| | And Initialize IPv6 forwarding with scaling in circular topology
-| | ... | ${rts_per_flow}
+| | And Set interfaces in path up
+| | And Initialize IPv6 Forwarding | count=${rts_per_flow} | pfs=${nic_pfs}
| | Then Find NDR and PDR intervals using optimized search
*** Test Cases ***
+++ /dev/null
-# 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 | TNL_10000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 8DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec10000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 8 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${8}
-| ${n_tunnels}= | ${10000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec10000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec10000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec10000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec10000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec10000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec10000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec10000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec10000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec10000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec10000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec10000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec10000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_10000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 1DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 1 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${1}
-| ${n_tunnels}= | ${10000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec10000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_10000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 2DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 2 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${2}
-| ${n_tunnels}= | ${10000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec10000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_10000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 4DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 4 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${4}
-| ${n_tunnels}= | ${10000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec10000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_1000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 8DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 8 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${8}
-| ${n_tunnels}= | ${1000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec1000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_1000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 1DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 1 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${1}
-| ${n_tunnels}= | ${1000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec1000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_1000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 2DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 2 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${2}
-| ${n_tunnels}= | ${1000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec1000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_1000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 4DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 4 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${4}
-| ${n_tunnels}= | ${1000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec1000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_20000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 8DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec20000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 8 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${8}
-| ${n_tunnels}= | ${20000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec20000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec20000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec20000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec20000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec20000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec20000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec20000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec20000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec20000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec20000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec20000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec20000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_20000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 1DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec20000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 1 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${1}
-| ${n_tunnels}= | ${20000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec20000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec20000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec20000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec20000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec20000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec20000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec20000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec20000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec20000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec20000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec20000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec20000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_20000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 2DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec20000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 2 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${2}
-| ${n_tunnels}= | ${20000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec20000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec20000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec20000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec20000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec20000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec20000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec20000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec20000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec20000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec20000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec20000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec20000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_20000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 4DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec20000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 4 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${4}
-| ${n_tunnels}= | ${20000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec20000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec20000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec20000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec20000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec20000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec20000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec20000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec20000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec20000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec20000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec20000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec20000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_40000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 8DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec40000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 8 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${8}
-| ${n_tunnels}= | ${40000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec40000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec40000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec40000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec40000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec40000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec40000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec40000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec40000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec40000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec40000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec40000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec40000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_40000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 1DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec40000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 1 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${1}
-| ${n_tunnels}= | ${40000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec40000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec40000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec40000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec40000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec40000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec40000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec40000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec40000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec40000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec40000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec40000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec40000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_40000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 2DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec40000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 2 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${2}
-| ${n_tunnels}= | ${40000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec40000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec40000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec40000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec40000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec40000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec40000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec40000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec40000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec40000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec40000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec40000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec40000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_40000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 4DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec40000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 4 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${4}
-| ${n_tunnels}= | ${40000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec40000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec40000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec40000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec40000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec40000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec40000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec40000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec40000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec40000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec40000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec40000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec40000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_400
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 8DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec400tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 8 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${8}
-| ${n_tunnels}= | ${400}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec400tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec400tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec400tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec400tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec400tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec400tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec400tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec400tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec400tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec400tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec400tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec400tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_400
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 1DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec400tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 1 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${1}
-| ${n_tunnels}= | ${400}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec400tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec400tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec400tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec400tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec400tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec400tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec400tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec400tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec400tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec400tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec400tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec400tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_400
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 2DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec400tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 2 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${2}
-| ${n_tunnels}= | ${400}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec400tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec400tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec400tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec400tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec400tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec400tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec400tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec400tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec400tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec400tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec400tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec400tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_400
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 4DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec400tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 4 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${4}
-| ${n_tunnels}= | ${400}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec400tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec400tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec400tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec400tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec400tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec400tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec400tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec400tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec400tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec400tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec400tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec400tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_40
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 8DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec40tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 8 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${8}
-| ${n_tunnels}= | ${40}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec40tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec40tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec40tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec40tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec40tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec40tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec40tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec40tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec40tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec40tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec40tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec40tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_40
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 1DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec40tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 1 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${1}
-| ${n_tunnels}= | ${40}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec40tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec40tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec40tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec40tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec40tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec40tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec40tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec40tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec40tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec40tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec40tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec40tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_40
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 2DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec40tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 2 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${2}
-| ${n_tunnels}= | ${40}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec40tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec40tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec40tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec40tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec40tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec40tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec40tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec40tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec40tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec40tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec40tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec40tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_40
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 4DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec40tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 4 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${4}
-| ${n_tunnels}= | ${40}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec40tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec40tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec40tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec40tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec40tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec40tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec40tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec40tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec40tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec40tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec40tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec40tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_4
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 1DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 1 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${1}
-| ${n_tunnels}= | ${4}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec4tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_4
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 2DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 2 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${2}
-| ${n_tunnels}= | ${4}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec4tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_4
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 4DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 4 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${4}
-| ${n_tunnels}= | ${4}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec4tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_5000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 8DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec5000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 8 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${8}
-| ${n_tunnels}= | ${5000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec5000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec5000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec5000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec5000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec5000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec5000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec5000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec5000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec5000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec5000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec5000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec5000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_5000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 1DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec5000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 1 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${1}
-| ${n_tunnels}= | ${5000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec5000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec5000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec5000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec5000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec5000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec5000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec5000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec5000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec5000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec5000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec5000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec5000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_5000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 2DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec5000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 2 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${2}
-| ${n_tunnels}= | ${5000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec5000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec5000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec5000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec5000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec5000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec5000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec5000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec5000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec5000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec5000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec5000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec5000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_5000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 4DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec5000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 4 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${4}
-| ${n_tunnels}= | ${5000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec5000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec5000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec5000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec5000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec5000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec5000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec5000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec5000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec5000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec5000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec5000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec5000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_60000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 8DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec60000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 8 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${8}
-| ${n_tunnels}= | ${60000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec60000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec60000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec60000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec60000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec60000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec60000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec60000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec60000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec60000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec60000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec60000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec60000tnlsw-l2bd-1ch-16mif-8dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_60000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 1DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec60000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 1 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${1}
-| ${n_tunnels}= | ${60000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec60000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec60000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec60000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec60000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec60000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec60000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec60000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec60000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec60000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec60000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec60000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec60000tnlsw-l2bd-1ch-2mif-1dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_60000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 2DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec60000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 2 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${2}
-| ${n_tunnels}= | ${60000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec60000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec60000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec60000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec60000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec60000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec60000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec60000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec60000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec60000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec60000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec60000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec60000tnlsw-l2bd-1ch-4mif-2dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-# 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 | TNL_60000
-| ... | IPSEC | IPSECSW | IPSECINT | NIC_Intel-X710 | SCALE | 4DCR
-| ... | DOCKER | 2R1C | NF_DENSITY | CHAIN | NF_VPPIP4 | 1DCR1T
-| ... | AES_256_GCM | AES | DRV_VFIO_PCI
-| ... | RXQ_SIZE_0 | TXQ_SIZE_0
-| ... | ethip4ipsec60000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm
-|
-| Suite Setup | Setup suite topology interfaces | performance
-| Suite Teardown | Tear down suite | performance
-| Test Setup | Setup test | performance
-| Test Teardown | Tear down test | performance | container
-|
-| Test Template | Local Template
-|
-| Documentation | **RFC2544: Pkt throughput L2BD test cases with memif 1 chain \
-| ... | 4 docker container**
-| ... |
-| ... | - **[Top] Network Topologies:** TG-DUT1-DUT2-TG 3-node circular \
-| ... | topology with single links between nodes.
-| ... |
-| ... | - **[Enc] Packet Encapsulations:** Eth-IPv4 for L2 bridge domain.
-| ... |
-| ... | - **[Ver] TG verification:** TG finds and reports throughput NDR (Non \
-| ... | Drop Rate) with zero packet loss tolerance and throughput PDR \
-| ... | (Partial Drop Rate) with non-zero packet loss tolerance (LT) \
-| ... | expressed in percentage of packets transmitted. NDR and PDR are \
-| ... | discovered for different Ethernet L2 frame sizes using MLRsearch \
-| ... | library.
-| ... | Test packets are generated by TG on links to DUTs. TG traffic profile \
-| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per \
-| ... | flow-group) with all packets containing Ethernet header, IPv4 header \
-| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC \
-| ... | addresses of the TG node interfaces.
-| ... |
-| ... | - **[Ref] Applicable standard specifications:** RFC4303 and RFC2544.
-
-*** Variables ***
-| @{plugins_to_enable}= | dpdk_plugin.so | perfmon_plugin.so | memif_plugin.so
-| ... | crypto_native_plugin.so | crypto_ipsecmb_plugin.so
-| ... | crypto_openssl_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}= | L2
-| ${overhead}= | ${54}
-| ${tg_if1_ip4}= | 192.168.10.254
-| ${dut1_if1_ip4}= | 192.168.10.11
-| ${dut1_if2_ip4}= | 100.0.0.254
-| ${dut2_if1_ip4}= | 200.0.0.101
-| ${dut2_if2_ip4}= | 192.168.20.11
-| ${tg_if2_ip4}= | 192.168.20.254
-| ${raddr_ip4}= | 20.0.0.0
-| ${laddr_ip4}= | 10.0.0.0
-| ${addr_range}= | ${24}
-| ${n_instances}= | ${4}
-| ${n_tunnels}= | ${60000}
-| ${nf_dtcr}= | ${1}
-| ${nf_dtc}= | ${1}
-# Traffic profile:
-| ${traffic_profile}= | trex-stl-ethip4-ip4dst${n_tunnels}-${n_instances}cnf
-# Container
-| ${container_engine}= | Docker
-| ${container_chain_topology}= | chain_ipsec
-
-*** Keywords ***
-| Local Template
-| | [Documentation]
-| | ... | - **[Cfg]** DUT1 runs IPSec tunneling AES_256_GCM config to \
-| | ... | ${n_instances} containers. \
-| | ... | 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}
-| |
-| | # These are enums (not strings) so they cannot be in Variables table.
-| | ${encr_alg}= | Crypto Alg AES GCM 256
-| | ${auth_alg}= | Set Variable | ${None}
-| | ${ipsec_proto} = | IPsec Proto ESP
-| |
-| | 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 IPSec in 3-node circular topology
-| | And Stop VPP service on all DUTs | ${nodes}
-| | And VPP IPsec Create Tunnel Interfaces in Containers
-| | ... | ${nodes} | ${dut1_if2_ip4} | ${dut2_if1_ip4} | ${n_tunnels}
-| | ... | ${encr_alg} | ${auth_alg} | ${laddr_ip4} | ${raddr_ip4}
-| | ... | ${addr_range} | ${n_instances}
-| | And Start containers for test
-| | ... | nf_chains=${1} | nf_nodes=${n_instances} | auto_scale=${False}
-| | ... | pinning=${False}
-| | And Start vswitch in container | phy_cores=${phy_cores} | rx_queues=${rxq}
-| | Then Find NDR and PDR intervals using optimized search
-
-*** Test Cases ***
-| 64B-1c-ethip4ipsec60000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 1C
-| | frame_size=${64} | phy_cores=${1}
-
-| 64B-2c-ethip4ipsec60000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 2C
-| | frame_size=${64} | phy_cores=${2}
-
-| 64B-4c-ethip4ipsec60000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 64B | 4C
-| | frame_size=${64} | phy_cores=${4}
-
-| 1518B-1c-ethip4ipsec60000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 1C
-| | frame_size=${1518} | phy_cores=${1}
-
-| 1518B-2c-ethip4ipsec60000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 2C
-| | frame_size=${1518} | phy_cores=${2}
-
-| 1518B-4c-ethip4ipsec60000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 1518B | 4C
-| | frame_size=${1518} | phy_cores=${4}
-
-| 9000B-1c-ethip4ipsec60000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 1C
-| | frame_size=${9000} | phy_cores=${1}
-
-| 9000B-2c-ethip4ipsec60000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 2C
-| | frame_size=${9000} | phy_cores=${2}
-
-| 9000B-4c-ethip4ipsec60000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | 9000B | 4C
-| | frame_size=${9000} | phy_cores=${4}
-
-| IMIX-1c-ethip4ipsec60000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 1C
-| | frame_size=IMIX_v4_1 | phy_cores=${1}
-
-| IMIX-2c-ethip4ipsec60000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 2C
-| | frame_size=IMIX_v4_1 | phy_cores=${2}
-
-| IMIX-4c-ethip4ipsec60000tnlsw-l2bd-1ch-8mif-4dcr1c-vppip4-aes256gcm-ndrpdr
-| | [Tags] | IMIX | 4C
-| | frame_size=IMIX_v4_1 | phy_cores=${4}
+++ /dev/null
-#!/usr/bin/env python3
-
-# 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.
-
-from resources.libraries.python.autogen.Regenerator import Regenerator
-
-Regenerator().regenerate_glob(u"*.robot")