CSIT-1390 Implement multichain configuration for l2bd with vhost/l3fwd. 12/16812/15
authorPeter Mikus <pmikus@cisco.com>
Mon, 14 Jan 2019 15:39:15 +0000 (15:39 +0000)
committerPeter Mikus <pmikus@cisco.com>
Mon, 21 Jan 2019 06:49:10 +0000 (06:49 +0000)
Change-Id: I36ab0bc7c9eada4c3f7bb5cb8f53de7d267ff910
Signed-off-by: Peter Mikus <pmikus@cisco.com>
138 files changed:
docs/tag_documentation.rst
resources/libraries/robot/performance/performance_configuration.robot
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-10c1n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c10n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c1n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c2n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c4n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c6n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c8n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c1n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c2n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c4n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c6n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c8n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-4c1n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-4c2n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-4c4n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-6c1n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-6c2n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-8c1n.py [new file with mode: 0644]
resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-8c2n.py [new file with mode: 0644]
tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-1lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-1lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-1lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-1lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-cfsrr1-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-cfsrr1-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhostvr256-1vm-cfsrr1-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhostvr256-1vm-cfsrr1-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhostvr256-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhostvr256-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhostvr1024-2vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhostvr1024-2vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdscale100kmaclrn-eth-2vhostvr1024-1vm-cfsrr1-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdscale100kmaclrn-eth-2vhostvr1024-1vm-cfsrr1-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdscale10kmaclrn-eth-2vhostvr1024-1vm-cfsrr1-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdscale10kmaclrn-eth-2vhostvr1024-1vm-cfsrr1-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-eth-l2bdscale1mmaclrn-eth-2vhostvr1024-1vm-cfsrr1-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-1lbdpdk-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-1lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-1lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-1lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-1lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-2lbvpplacp-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-dot1q-l2xcbase-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-dot1q-l2xcbase-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhostvr256-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhostvr256-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-eth-l2bdbasemaclrn-eth-4vhostvr1024-2vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-eth-l2bdbasemaclrn-eth-4vhostvr1024-2vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-ethip4vxlan-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/10ge2p1x710-ethip4vxlan-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-10chain-10vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-2vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-4vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-4vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-8vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-8vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-4chain-16vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-4chain-16vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-4chain-4vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-4chain-4vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-4chain-8vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-4chain-8vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-6chain-12vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-6chain-12vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-6chain-6vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-6chain-6vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-8chain-16vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-8chain-16vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-8chain-8vm-l3fwd-mrr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-8chain-8vm-l3fwd-ndrpdr.robot [new file with mode: 0644]
tests/vpp/perf/vm_vhost/2n1l-10ge2p1x710-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/2n1l-10ge2p1x710-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/2n1l-10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/2n1l-10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/2n1l-10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhostvr256-1vm-mrr.robot
tests/vpp/perf/vm_vhost/2n1l-10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhostvr256-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/2n1l-10ge2p1x710-eth-l2bdbasemaclrn-eth-4vhostvr1024-2vm-mrr.robot
tests/vpp/perf/vm_vhost/2n1l-10ge2p1x710-eth-l2bdbasemaclrn-eth-4vhostvr1024-2vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/2n1l-25ge2p1xxv710-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/2n1l-25ge2p1xxv710-dot1q-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/2n1l-25ge2p1xxv710-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/2n1l-25ge2p1xxv710-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/2n1l-25ge2p1xxv710-eth-l2bdbasemaclrn-eth-2vhostvr256-1vm-mrr.robot
tests/vpp/perf/vm_vhost/2n1l-25ge2p1xxv710-eth-l2bdbasemaclrn-eth-2vhostvr256-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/2n1l-25ge2p1xxv710-eth-l2bdbasemaclrn-eth-4vhostvr1024-2vm-mrr.robot
tests/vpp/perf/vm_vhost/2n1l-25ge2p1xxv710-eth-l2bdbasemaclrn-eth-4vhostvr1024-2vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhostvr1024-2vm-mrr.robot
tests/vpp/perf/vm_vhost/40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhostvr1024-2vm-ndrpdr.robot
tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermit-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-aclpermitreflect-2vhostvr1024-1vm-ndrpdr.robot
tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-mrr.robot
tests/vpp/perf/vts/10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-iacldstbase-noacl-2vhostvr1024-1vm-ndrpdr.robot

index 6247fc5..7cb71f1 100644 (file)
@@ -185,6 +185,22 @@ Scaling TAGs
     Traffic stream with 100 000 unique flows (100 IPs/users x 1000 UDP ports) in
     one direction.
 
+.. topic:: 1C1N
+
+    1 service chain with 1 network function per chain.
+
+.. topic:: 2C1N
+
+    2 service chains with 1 network function per chain.
+
+.. topic:: 1C2N
+
+    1 service chain with 2 network functions per chain.
+
+.. topic:: 2C2N
+
+    2 service chains with 2 network functions per chain.
+
 Tags marking functional vs. performance of tests
 ------------------------------------------------
 
@@ -319,6 +335,11 @@ Test type tags
 
     Tests which use HTTP.
 
+.. topic:: SERVICE_DENSITY
+
+    Performance tests which measures performance of service density by creating
+    topology of multiple sevice chains of network functions.
+
 Forwarding mode tags
 --------------------
 
index f8628d0..53bb436 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (c) 2018 Cisco and/or its affiliates.
+# Copyright (c) 2019 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:
 | | ...
 | | ... | *Arguments:*
 | | ... | - dut - DUT node. Type: string
-| | ... | - vm_count - VM count. Type: integer
+| | ... | - nf_chain - NF chain. Type: integer
+| | ... | - nf_nodes - Number of NFs nodes per chain. Type: integer
 | | ...
 | | ... | *Note:*
 | | ... | Socket paths for VM are defined in following format:
 | | ... | *Example:*
 | | ...
 | | ... | \| Initialize L2 bridge domains with Vhost-User on node \| DUT1 \
-| | ... | \| 1 \|
+| | ... | \| 1 \| 1 \|
 | | ...
-| | [Arguments] | ${dut} | ${vm_count}=${1}
+| | [Arguments] | ${dut} | ${nf_chain}=${1} | ${nf_nodes}=${1}
 | | ...
-| | ${bd_id2}= | Evaluate | ${vm_count}+1
+| | ${bd_id2}= | Evaluate | ${nf_nodes}+1
 | | Add interface to bridge domain | ${nodes['${dut}']}
 | | ... | ${${dut}_if1} | ${1}
 | | Add interface to bridge domain | ${nodes['${dut}']}
 | | ... | ${${dut}_if2} | ${bd_id2}
-| | :FOR | ${number} | IN RANGE | 1 | ${vm_count}+1
-| | | ${sock1}= | Set Variable | /tmp/sock-${number}-1
-| | | ${sock2}= | Set Variable | /tmp/sock-${number}-2
+| | :FOR | ${nf_node} | IN RANGE | 1 | ${nf_nodes}+1
+| | | ${qemu_id}= | Evaluate | (${nf_chain} - ${1}) * ${nf_nodes} + ${nf_node}
+| | | ${sock1}= | Set Variable | /tmp/sock-${qemu_id}-1
+| | | ${sock2}= | Set Variable | /tmp/sock-${qemu_id}-2
 | | | Configure vhost interfaces for L2BD forwarding | ${nodes['${dut}']}
-| | | ... | ${sock1} | ${sock2} | ${dut}-vhost-${number}-if1
-| | | ... | ${dut}-vhost-${number}-if2
-| | | ${bd_id2}= | Evaluate | ${number}+1
+| | | ... | ${sock1} | ${sock2}
+| | | ... | ${dut}-vhost-${qemu_id}-if1
+| | | ... | ${dut}-vhost-${qemu_id}-if2
+| | | ${bd_id2}= | Evaluate | ${nf_node}+1
 | | | Add interface to bridge domain | ${nodes['${dut}']}
-| | | ... | ${${dut}-vhost-${number}-if1} | ${number}
+| | | ... | ${${dut}-vhost-${qemu_id}-if1} | ${nf_node}
 | | | Add interface to bridge domain | ${nodes['${dut}']}
-| | | ... | ${${dut}-vhost-${number}-if2} | ${bd_id2}
+| | | ... | ${${dut}-vhost-${qemu_id}-if2} | ${bd_id2}
 
 | Initialize L2 bridge domains with Vhost-User
 | | [Documentation]
-| | ... | Create pairs of Vhost-User interfaces for defined number of VMs on all
-| | ... | defined VPP nodes. Add each Vhost-User interface into L2 bridge
+| | ... | Create pairs of Vhost-User interfaces for defined number of VNF nodes
+| | ... | on all defined VPP nodes. Add each Vhost-User interface into L2 bridge
 | | ... | domains with learning enabled with physical inteface or Vhost-User
 | | ... | interface of another VM.
 | | ...
 | | ... | *Arguments:*
-| | ... | - vm_count - VM count. Type: integer
+| | ... | - nf_chain - NF chain. Type: integer
+| | ... | - nf_nodes - Number of NFs nodes per chain. Type: integer
 | | ...
 | | ... | *Example:*
 | | ...
-| | ... | \| Initialize L2 bridge domains with Vhost-User \| 1 \|
+| | ... | \| Initialize L2 bridge domains with Vhost-User \| 1 \| 1 \|
 | | ...
-| | [Arguments] | ${vm_count}=${1}
+| | [Arguments] | ${nf_chain}=${1} | ${nf_nodes}=${1}
 | | ...
 | | ${duts}= | Get Matches | ${nodes} | DUT*
 | | :FOR | ${dut} | IN | @{duts}
 | | | Initialize L2 bridge domains with Vhost-User on node | ${dut}
-| | | ... | vm_count=${vm_count}
+| | | ... | nf_chain=${nf_chain} | nf_nodes=${nf_nodes}
+
+| Initialize L2 bridge domains for multiple chains with Vhost-User
+| | [Documentation]
+| | ... | Create pairs of Vhost-User interfaces for defined number of NF chains
+| | ... | with defined number of VNF nodes on all defined VPP nodes. Add each
+| | ... | Vhost-User interface into L2 bridge domains with learning enabled
+| | ... | with physical inteface or Vhost-User interface of another VM.
+| | ...
+| | ... | *Arguments:*
+| | ... | - nf_chains - Number of chains of NFs. Type: integer
+| | ... | - nf_nodes - Number of NFs nodes per chain. Type: integer
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Initialize L2 bridge domains for multiple chains with Vhost-User \
+| | ... | \| 1 \| 1 \|
+| | ...
+| | [Arguments] | ${nf_chains}=${1} | ${nf_nodes}=${1}
+| | ...
+| | :FOR | ${nf_chain} | IN RANGE | 1 | ${nf_chains}+1
+| | | Initialize L2 bridge domains with Vhost-User | nf_chain=${nf_chain}
+| | | ... | nf_nodes=${nf_nodes}
 
 | Initialize L2 bridge domain with VXLANoIPv4 in 3-node circular topology
 | | [Documentation]
 | | ... | - sock2 - Socket path for second Vhost-User interface.
 | | ... | Type: string
 | | ... | - vm_name - QemuUtil instance name. Type: string
-| | ... | - chains: Total number of chains. Type: integer
-| | ... | - nodeness: Total number of nodes per chain. Type: integer
+| | ... | - nf_cpus: List of allocated CPUs. Type: list
 | | ... | - qemu_id - Qemu Id when starting more then one guest VM on DUT
 | | ... | node. Type: integer
 | | ... | - jumbo - Set True if jumbo frames are used in the test.
 | | ... | *Example:*
 | | ...
 | | ... | \| Configure guest VM with dpdk-testpmd connected via vhost-user \
-| | ... | \| ${nodes['DUT1']} \| /tmp/sock-2-1 \| /tmp/sock-2-2 \| DUT1_VM2 \
-| | ... | \| qemu_id=${2} \|
+| | ... | \| ${nodes['DUT1']} \| /tmp/sock-1-1 \| /tmp/sock-1-2 \
+| | ... | \| DUT1_VM2 \| qemu_id=${2} \|
 | | ...
-| | [Arguments] | ${dut} | ${sock1} | ${sock2} | ${vm_name} | ${chains}=${1}
-| | ... | ${nodeness}=${1} | ${qemu_id}=${1} | ${jumbo}=${False}
-| | ... | ${perf_qemu_qsz}=${256} | ${use_tuned_cfs}=${False}
+| | [Arguments] | ${dut} | ${sock1} | ${sock2} | ${vm_name} | ${nf_cpus}
+| | ... | ${qemu_id}=${1} | ${jumbo}=${False} | ${perf_qemu_qsz}=${256}
+| | ... | ${use_tuned_cfs}=${False}
 | | ...
-| | ${nf_cpus}= | Create network function CPU list | ${dut}
-| | ... | chains=${chains} | nodeness=${nodeness} | chain_id=${1}
-| | ... | node_id=${qemu_id} | auto_scale=${True}
 | | ${nf_cpus_count}= | Get Length | ${nf_cpus}
 | | Import Library | resources.libraries.python.QemuUtils | qemu_id=${qemu_id}
 | | ... | WITH NAME | ${vm_name}
 | | Run keyword | ${vm_name}.Qemu Set Affinity | @{nf_cpus}
 | | Run keyword If | ${use_tuned_cfs} | ${vm_name}.Qemu Set Scheduler Policy
 | | ${max_pkt_len}= | Set Variable If | ${jumbo} | 9200 | ${EMPTY}
-| | ${testpmd_cpus}= | Evaluate | ${thr_count_int} + ${1}
 | | ${testpmd_cpus}= | Cpu list per node str | ${nodes['${dut}']} | ${0}
-| | ... | cpu_cnt=${testpmd_cpus}
+| | ... | cpu_cnt=${nf_cpus_count}
 | | Dpdk Testpmd Start | ${vm} | eal_corelist=${testpmd_cpus}
 | | ... | eal_mem_channels=4 | pmd_fwd_mode=io | pmd_disable_hw_vlan=${TRUE}
 | | ... | pmd_rxd=${perf_qemu_qsz} | pmd_txd=${perf_qemu_qsz}
 | | ... | ${perf_qemu_qsz}=${256} | ${use_tuned_cfs}=${False}
 | | ...
 | | :FOR | ${number} | IN RANGE | 1 | ${vm_count}+1
+| | | ${nf_cpus}= | Create network function CPU list | ${dut}
+| | | ... | chains=${1} | nodeness=${vm_count} | chain_id=${1}
+| | | ... | node_id=${number} | auto_scale=${True}
 | | | ${sock1}= | Set Variable | /tmp/sock-${number}-1
 | | | ${sock2}= | Set Variable | /tmp/sock-${number}-2
 | | | ${vm}=
 | | | ... | Configure guest VM with dpdk-testpmd connected via vhost-user
 | | | ... | ${dut} | ${sock1} | ${sock2} | ${dut}_VM${number}
-| | | ... | nodeness=${vm_count} | qemu_id=${number} | jumbo=${jumbo}
+| | | ... | ${nf_cpus} | qemu_id=${number} | jumbo=${jumbo}
 | | | ... | perf_qemu_qsz=${perf_qemu_qsz} | use_tuned_cfs=${use_tuned_cfs}
 | | | Set To Dictionary | ${${dut}_vm_refs} | ${dut}_VM${number} | ${vm}
 
 | | ... | - vm_name - QemuUtil instance name. Type: string
 | | ... | - eth0_mac - MAC address of first Vhost interface. Type: string
 | | ... | - eth1_mac - MAC address of second Vhost interface. Type: string
-| | ... | - chains: Total number of chains. Type: integer
-| | ... | - nodeness: Total number of nodes per chain. Type: integer
+| | ... | - nf_cpus: List of allocated CPUs. Type: list
 | | ... | - qemu_id - Qemu Id when starting more then one guest VM on DUT
 | | ... | node. Type: integer
 | | ... | - jumbo - Set True if jumbo frames are used in the test.
 | | ... | \| 00:00:00:00:00:01 \| 00:00:00:00:00:02 \|
 | | ...
 | | [Arguments] | ${dut} | ${sock1} | ${sock2} | ${vm_name}
-| | ... | ${eth0_mac} | ${eth1_mac} | ${chains}=${1} | ${nodeness}=${1}
-| | ... | ${qemu_id}=${1} | ${jumbo}=${False} | ${perf_qemu_qsz}=${256}
+| | ... | ${eth0_mac} | ${eth1_mac} | ${nf_cpus} | ${qemu_id}=${1}
+| | ... | ${jumbo}=${False} | ${perf_qemu_qsz}=${256}
 | | ... | ${use_tuned_cfs}=${False}
 | | ...
-| | ${nf_cpus}= | Create network function CPU list | ${dut}
-| | ... | chains=${chains} | nodeness=${nodeness} | chain_id=${1}
-| | ... | node_id=${qemu_id} | auto_scale=${True}
 | | ${nf_cpus_count}= | Get Length | ${nf_cpus}
 | | Import Library | resources.libraries.python.QemuUtils | qemu_id=${qemu_id}
 | | ... | WITH NAME | ${vm_name}
 | | Run keyword | ${vm_name}.Qemu Set Affinity | @{nf_cpus}
 | | Run keyword If | ${use_tuned_cfs} | ${vm_name}.Qemu Set Scheduler Policy
 | | ${max_pkt_len}= | Set Variable If | ${jumbo} | 9200 | ${EMPTY}
-| | ${testpmd_cpus}= | Evaluate | ${thr_count_int} + ${1}
 | | ${testpmd_cpus}= | Cpu list per node str | ${nodes['${dut}']} | ${0}
-| | ... | cpu_cnt=${testpmd_cpus}
+| | ... | cpu_cnt=${nf_cpus_count}
 | | Dpdk Testpmd Start | ${vm} | eal_corelist=${testpmd_cpus}
 | | ... | eal_mem_channels=4 | pmd_fwd_mode=mac | pmd_eth_peer_0=0,${eth0_mac}
 | | ... | pmd_eth_peer_1=1,${eth1_mac} | pmd_disable_hw_vlan=${TRUE}
 | | ...
 | | ... | *Arguments:*
 | | ... | - dut - DUT node to start guest VM on. Type: dictionary
-| | ... | - vm_count} - Number of guest VMs. Type: int
+| | ... | - vm_count - Number of guest VMs. Type: int
 | | ... | - jumbo - Jumbo frames are used (True) or are not used (False)
 | | ... | in the test. Type: boolean
 | | ... | - perf_qemu_qsz - Virtio Queue Size. Type: int
 | | ... | ${perf_qemu_qsz}=${256} | ${use_tuned_cfs}=${False}
 | | ...
 | | :FOR | ${number} | IN RANGE | 1 | ${vm_count}+1
+| | | ${nf_cpus}= | Create network function CPU list | ${dut}
+| | | ... | chains=${1} | nodeness=${vm_count} | chain_id=${1}
+| | | ... | node_id=${number} | auto_scale=${True}
 | | | ${sock1}= | Set Variable | /tmp/sock-${number}-1
 | | | ${sock2}= | Set Variable | /tmp/sock-${number}-2
 | | | ${vm}=
 | | | ... | Configure guest VM with dpdk-testpmd-mac connected via vhost-user
 | | | ... | ${dut} | ${sock1} | ${sock2} | ${dut}_VM${number}
 | | | ... | ${${dut}-vhost-${number}-if1_mac}
-| | | ... | ${${dut}-vhost-${number}-if2_mac} | nodeness=${vm_count}
+| | | ... | ${${dut}-vhost-${number}-if2_mac} | nf_cpus=${nf_cpus}
 | | | ... | qemu_id=${number} | jumbo=${jumbo} | perf_qemu_qsz=${perf_qemu_qsz}
 | | | ... | use_tuned_cfs=${use_tuned_cfs}
 | | | Set To Dictionary | ${${dut}_vm_refs} | ${dut}_VM${number} | ${vm}
 | | | ... | perf_qemu_qsz=${perf_qemu_qsz} | use_tuned_cfs=${False}
 | | All VPP Interfaces Ready Wait | ${nodes}
 
+| Configure chain of NFs with dpdk-testpmd-mac connected via vhost-user on node
+| | [Documentation]
+| | ... | Start 1 chain of 1..N QEMU guests (VNFs) with two vhost-user\
+| | ... | interfaces and interconnecting DPDK testpmd with fwd mode set to mac\
+| | ... | rewrite on VPP node.
+| | ...
+| | ... | *Arguments:*
+| | ... | - dut - DUT node to start guest VM on. Type: dictionary
+| | ... | - nf_chains - Number of chains of NFs. Type: integer
+| | ... | - nf_chain - NF chain ID. Type: integer
+| | ... | - nf_nodes - Number of guest VMs. Type: integer
+| | ... | - jumbo - Jumbo frames are used (True) or are not used (False)
+| | ... | in the test. Type: boolean
+| | ... | - perf_qemu_qsz - Virtio Queue Size. Type: integer
+| | ... | - use_tuned_cfs - Set True if CFS RR should be used for Qemu SMP.
+| | ... | Type: boolean
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Configure chain of NFs with dpdk-testpmd-mac connected via \
+| | ... | vhost-user on node \| DUT1 \| 1 \| 1 \| 1 \| False \| 256 \|
+| | ...
+| | [Arguments] | ${dut} | ${nf_chains}=${1} | ${nf_chain}=${1}
+| | ... | ${nf_nodes}=${1} | ${jumbo}=${False} | ${perf_qemu_qsz}=${256}
+| | ... | ${use_tuned_cfs}=${False}
+| | ...
+| | ${tg_if1_mac}= | Get Interface MAC | ${tg} | ${tg_if1}
+| | ${tg_if2_mac}= | Get Interface MAC | ${tg} | ${tg_if2}
+| | :FOR | ${nf_node} | IN RANGE | 1 | ${nf_nodes} + ${1}
+| | | ${nf_cpus}= | Create network function CPU list | ${dut}
+| | | ... | chains=${nf_chains} | nodeness=${nf_nodes} | chain_id=${nf_chain}
+| | | ... | node_id=${nf_node} | auto_scale=${False}
+| | | ${qemu_id}= | Evaluate | (${nf_chain} - ${1}) * ${nf_nodes} + ${nf_node}
+| | | ${sock1}= | Set Variable | /tmp/sock-${qemu_id}-1
+| | | ${sock2}= | Set Variable | /tmp/sock-${qemu_id}-2
+| | | ${nf_name}= | Set Variable | ${dut}_VM${qemu_id}
+| | | ${prev_qemu_id}= | Evaluate | ${qemu_id} - ${1}
+| | | ${next_qemu_id}= | Evaluate | ${qemu_id} + ${1}
+| | | ${prev_qemu_id_hex}= | Convert To Hex | ${prev_qemu_id} | length=2
+| | | ... | lowercase=yes
+| | | ${next_qemu_id_hex}= | Convert To Hex | ${next_qemu_id} | length=2
+| | | ... | lowercase=yes
+| | | ${vif1_mac}= | Set Variable If | ${nf_node} == ${1}
+| | | ... | ${tg_if1_mac}
+| | | ... | 52:54:00:00:${prev_qemu_id_hex}:02
+| | | ${vif2_mac}= | Set Variable If | ${nf_node} == ${nf_nodes}
+| | | ... | ${tg_if2_mac}
+| | | ... | 52:54:00:00:${next_qemu_id_hex}:01
+| | | ${vm}=
+| | | ... | Configure guest VM with dpdk-testpmd-mac connected via vhost-user
+| | | ... | ${dut} | ${sock1} | ${sock2} | ${nf_name} | ${vif1_mac}
+| | | ... | ${vif2_mac} | ${nf_cpus} | qemu_id=${qemu_id} | jumbo=${jumbo}
+| | | ... | perf_qemu_qsz=${perf_qemu_qsz} | use_tuned_cfs=${use_tuned_cfs}
+| | | Set To Dictionary | ${${dut}_vm_refs} | ${nf_name} | ${vm}
+
+| Configure chain of NFs with dpdk-testpmd-mac connected via vhost-user
+| | [Documentation]
+| | ... | Start 1 chain of 1..N QEMU guests (VNFs) with two vhost-user\
+| | ... | interfaces and interconnecting DPDK testpmd with fwd mode set to mac\
+| | ... | rewrite on all defined VPP nodes.
+| | ...
+| | ... | *Arguments:*
+| | ... | - nf_chains - Number of chains of NFs. Type: integer
+| | ... | - nf_chain - NF chain ID. Type: integer
+| | ... | - nf_nodes - Number of NFs nodes per chain. Type: integer
+| | ... | - jumbo - Jumbo frames are used (True) or are not used (False)
+| | ... | in the test. Type: boolean
+| | ... | - perf_qemu_qsz - Virtio Queue Size. Type: integer
+| | ... | - use_tuned_cfs - Set True if CFS RR should be used for Qemu SMP.
+| | ... | Type: boolean
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Configure chain of NFs with dpdk-testpmd-mac connected via\
+| | ... | vhost-user \| 1 \| 1 \| 1 \| False \| 256 \|
+| | ...
+| | [Arguments] | ${nf_chains}=${1} | ${nf_chain}=${1} | ${nf_nodes}=${1}
+| | ... | ${jumbo}=${False} | ${perf_qemu_qsz}=${256}
+| | ... | ${use_tuned_cfs}=${False}
+| | ...
+| | ${duts}= | Get Matches | ${nodes} | DUT*
+| | :FOR | ${dut} | IN | @{duts}
+| | | Configure chain of NFs with dpdk-testpmd-mac connected via vhost-user on node
+| | | ... | ${dut} | nf_chains=${nf_chains} | nf_chain=${nf_chain}
+| | | ... | nf_nodes=${nf_nodes} | jumbo=${jumbo}
+| | | ... | perf_qemu_qsz=${perf_qemu_qsz} | use_tuned_cfs=${False}
+
+| Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | [Documentation]
+| | ... | Start 1..N chains of 1..N QEMU guests (VNFs) with two vhost-user\
+| | ... | interfaces and interconnecting DPDK testpmd with fwd mode set to mac\
+| | ... | rewrite on all defined VPP nodes.
+| | ...
+| | ... | *Arguments:*
+| | ... | - nf_chains - Number of chains of NFs. Type: integer
+| | ... | - nf_nodes - Number of NFs nodes per chain. Type: integer
+| | ... | - jumbo - Jumbo frames are used (True) or are not used (False)
+| | ... | in the test. Type: boolean
+| | ... | - perf_qemu_qsz - Virtio Queue Size. Type: integer
+| | ... | - use_tuned_cfs - Set True if CFS RR should be used for Qemu SMP.
+| | ... | Type: boolean
+| | ...
+| | ... | *Example:*
+| | ...
+| | ... | \| Configure chains of VMs with dpdk-testpmd-mac connected via \
+| | ... | vhost-user \| 1 \| 1 \| False \| 256 \|
+| | ...
+| | [Arguments] | ${nf_chains}=${1} | ${nf_nodes}=${1} | ${jumbo}=${False}
+| | ... | ${perf_qemu_qsz}=${256} | ${use_tuned_cfs}=${False}
+| | ...
+| | :FOR | ${nf_chain} | IN RANGE | 1 | ${nf_chains}+1
+| | | Configure chain of NFs with dpdk-testpmd-mac connected via vhost-user
+| | | ... | nf_chains=${nf_chains} | nf_chain=${nf_chain} | nf_nodes=${nf_nodes}
+| | | ... | jumbo=${jumbo} | perf_qemu_qsz=${perf_qemu_qsz}
+| | | ... | use_tuned_cfs=${False}
+| | All VPP Interfaces Ready Wait | ${nodes}
+
 | Initialize LISP IPv4 forwarding in 3-node circular topology
 | | [Documentation] | Custom setup of IPv4 addresses on all DUT nodes and TG \
 | | ... | Don`t set route.
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-10c1n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-10c1n.py
new file mode 100644 (file)
index 0000000..33a472c
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 10
+        self.nf_nodes = 1
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c10n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c10n.py
new file mode 100644 (file)
index 0000000..6ced7d7
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 1
+        self.nf_nodes = 10
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c1n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c1n.py
new file mode 100644 (file)
index 0000000..760b60e
--- /dev/null
@@ -0,0 +1,116 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from re import finditer
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 1
+        self.nf_nodes = 1
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c2n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c2n.py
new file mode 100644 (file)
index 0000000..3de8b6c
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 1
+        self.nf_nodes = 2
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c4n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c4n.py
new file mode 100644 (file)
index 0000000..7439223
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 1
+        self.nf_nodes = 4
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c6n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c6n.py
new file mode 100644 (file)
index 0000000..c7493eb
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 1
+        self.nf_nodes = 6
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c8n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-1c8n.py
new file mode 100644 (file)
index 0000000..3c0b164
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 1
+        self.nf_nodes = 8
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c1n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c1n.py
new file mode 100644 (file)
index 0000000..70c263f
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 2
+        self.nf_nodes = 1
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c2n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c2n.py
new file mode 100644 (file)
index 0000000..1f4a442
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 2
+        self.nf_nodes = 2
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c4n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c4n.py
new file mode 100644 (file)
index 0000000..3108345
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 2
+        self.nf_nodes = 4
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c6n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c6n.py
new file mode 100644 (file)
index 0000000..3c85a67
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 2
+        self.nf_nodes = 6
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c8n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-2c8n.py
new file mode 100644 (file)
index 0000000..b0e7a8e
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 2
+        self.nf_nodes = 8
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-4c1n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-4c1n.py
new file mode 100644 (file)
index 0000000..b0ccff8
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 4
+        self.nf_nodes = 1
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-4c2n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-4c2n.py
new file mode 100644 (file)
index 0000000..249e57c
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 4
+        self.nf_nodes = 2
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-4c4n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-4c4n.py
new file mode 100644 (file)
index 0000000..1f2c258
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 4
+        self.nf_nodes = 4
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-6c1n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-6c1n.py
new file mode 100644 (file)
index 0000000..319d4b8
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 6
+        self.nf_nodes = 1
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-6c2n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-6c2n.py
new file mode 100644 (file)
index 0000000..cea3f08
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 6
+        self.nf_nodes = 2
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-8c1n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-8c1n.py
new file mode 100644 (file)
index 0000000..20d654d
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 8
+        self.nf_nodes = 1
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
diff --git a/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-8c2n.py b/resources/traffic_profiles/trex/trex-sl-2n3n-ethip4-ip4src254-8c2n.py
new file mode 100644 (file)
index 0000000..36d618f
--- /dev/null
@@ -0,0 +1,114 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Stream profile for T-rex traffic generator.
+
+Stream profile:
+ - Two streams sent in directions 0 --> 1 and 1 --> 0 at the same time.
+ - Packet: ETH / IP /
+ - Direction 0 --> 1:
+   - Destination MAC address: 52:54:00:00:nf_id:01
+   - Source IP address range:      10.10.10.1 - 10.10.10.254
+   - Destination IP address range: 20.20.20.1
+ - Direction 1 --> 0:
+    - Destination MAC address: 52:54:00:00:nf_id:02
+   - Source IP address range:      20.20.20.1 - 20.20.20.254
+   - Destination IP address range: 10.10.10.1
+"""
+
+from trex_stl_lib.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__()
+
+        # Service density parameters.
+        self.nf_chains = 8
+        self.nf_nodes = 2
+
+        # MACs used in packet headers.
+        self.p1_dst_start_mac = '52:54:00:00:00:01'
+        self.p2_dst_start_mac = '52:54:00:00:00:02'
+
+        # IPs used in packet headers.
+        self.p1_src_start_ip = '10.10.10.1'
+        self.p1_src_end_ip = '10.10.10.254'
+        self.p1_dst_start_ip = '20.20.20.1'
+
+        self.p2_src_start_ip = '20.20.20.1'
+        self.p2_src_end_ip = '20.20.20.254'
+        self.p2_dst_start_ip = '10.10.10.1'
+
+    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(dst=self.p1_dst_start_mac) /
+                      IP(src=self.p1_src_start_ip,
+                         dst=self.p1_dst_start_ip,
+                         proto=61))
+        # Direction 1 --> 0
+        base_pkt_b = (Ether(dst=self.p2_dst_start_mac) /
+                      IP(src=self.p2_src_start_ip,
+                         dst=self.p2_dst_start_ip,
+                         proto=61))
+
+        # Direction 0 --> 1
+        vm1 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=1,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p1_src_start_ip,
+                                       max_value=self.p1_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+        # Direction 1 --> 0
+        vm2 = STLScVmRaw([STLVmFlowVar(name="mac_dst",
+                                       min_value=self.nf_nodes,
+                                       max_value=self.nf_chains*self.nf_nodes,
+                                       size=1, step=self.nf_nodes, op="inc"),
+                          STLVmWrFlowVar(fv_name="mac_dst", pkt_offset=4),
+                          STLVmFlowVar(name="src",
+                                       min_value=self.p2_src_start_ip,
+                                       max_value=self.p2_src_end_ip,
+                                       size=4, op="inc"),
+                          STLVmWrFlowVar(fv_name="src", pkt_offset="IP.src"),
+                          STLVmFixIpv4(offset="IP")])
+
+        return base_pkt_a, base_pkt_b, vm1, vm2
+
+
+def register():
+    """Register this traffic profile to T-rex.
+
+    Do not change this function.
+
+    :return: Traffic streams.
+    :rtype: Object
+    """
+    return TrafficStreams()
index 9651268..fccaaaa 100644 (file)
 | | When Initialize L2 bridge domains with Vhost-User and VLAN with DPDK link bonding in a 3-node circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
 
index 918bac1..2073255 100644 (file)
 | | When Initialize L2 bridge domains with Vhost-User and VLAN with DPDK link bonding in a 3-node circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
 
index 7a6b2c8..e59609f 100644 (file)
@@ -62,8 +62,8 @@
 | ${tag_rewrite}= | pop-1
 | ${overhead}= | ${4}
 # Socket names
-| ${sock1}= | /tmp/sock-1
-| ${sock2}= | /tmp/sock-2
+| ${sock1}= | /tmp/sock-1-1
+| ${sock2}= | /tmp/sock-1-2
 # X520-DA2 bandwidth limit
 | ${s_limit}= | ${10000000000}
 # Traffic profile:
 | | And Apply startup configuration on all VPP DUTs
 | | When Initialize L2 xconnect with Vhost-User and VLAN with DPDK link bonding in 3-node circular topology
 | | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
 
index da953d6..8e7c696 100644 (file)
@@ -66,8 +66,8 @@
 | ${tag_rewrite}= | pop-1
 | ${overhead}= | ${4}
 # Socket names
-| ${sock1}= | /tmp/sock-1
-| ${sock2}= | /tmp/sock-2
+| ${sock1}= | /tmp/sock-1-1
+| ${sock2}= | /tmp/sock-1-2
 # X520-DA2 bandwidth limit
 | ${s_limit}= | ${10000000000}
 # Traffic profile:
 | | And Apply startup configuration on all VPP DUTs
 | | When Initialize L2 xconnect with Vhost-User and VLAN with DPDK link bonding in 3-node circular topology
 | | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
 
index 9c44952..0ef9216 100644 (file)
 | | When Initialize L2 bridge domains with Vhost-User and VLAN with VPP link bonding in a 3-node circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite} | ${bond_mode} | ${lb_mode}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | And All Vpp Interfaces Ready Wait | ${nodes}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
index e65e215..f2b1112 100644 (file)
 | | When Initialize L2 bridge domains with Vhost-User and VLAN with VPP link bonding in a 3-node circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite} | ${bond_mode} | ${lb_mode}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | And All Vpp Interfaces Ready Wait | ${nodes}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
index fa1172c..7b50b97 100644 (file)
@@ -64,8 +64,8 @@
 | ${bond_mode}= | lacp
 | ${lb_mode}= | l34
 # Socket names
-| ${sock1}= | /tmp/sock-1
-| ${sock2}= | /tmp/sock-2
+| ${sock1}= | /tmp/sock-1-1
+| ${sock2}= | /tmp/sock-1-2
 # X520-DA2 bandwidth limit
 | ${s_limit}= | ${10000000000}
 # Traffic profile:
 | | When Initialize L2 xconnect with Vhost-User and VLAN with VPP link bonding in 3-node circular topology
 | | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} | ${bond_mode}
 | | ... | ${lb_mode}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | And All Vpp Interfaces Ready Wait | ${nodes}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
index b7b3d4b..8fb21bc 100644 (file)
@@ -68,8 +68,8 @@
 | ${bond_mode}= | lacp
 | ${lb_mode}= | l34
 # Socket names
-| ${sock1}= | /tmp/sock-1
-| ${sock2}= | /tmp/sock-2
+| ${sock1}= | /tmp/sock-1-1
+| ${sock2}= | /tmp/sock-1-2
 # X520-DA2 bandwidth limit
 | ${s_limit}= | ${10000000000}
 # Traffic profile:
 | | When Initialize L2 xconnect with Vhost-User and VLAN with VPP link bonding in 3-node circular topology
 | | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} | ${bond_mode}
 | | ... | ${lb_mode}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | And All Vpp Interfaces Ready Wait | ${nodes}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
index 4618f5d..c621496 100644 (file)
 | | When Initialize L2 bridge domains with Vhost-User and VLAN in circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
 
index cefde14..2169fa8 100644 (file)
 | | When Initialize L2 bridge domains with Vhost-User and VLAN in circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
 
index c0ff7d9..d06d7fc 100644 (file)
@@ -56,8 +56,8 @@
 | ${tag_rewrite}= | pop-1
 | ${overhead}= | ${4}
 # Socket names
-| ${sock1}= | /tmp/sock-1
-| ${sock2}= | /tmp/sock-2
+| ${sock1}= | /tmp/sock-1-1
+| ${sock2}= | /tmp/sock-1-2
 # X520-DA2 bandwidth limit
 | ${s_limit}= | ${10000000000}
 # Traffic profile:
 | | And Apply startup configuration on all VPP DUTs
 | | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology
 | | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
 
index b882d0f..76c73fe 100644 (file)
@@ -60,8 +60,8 @@
 | ${tag_rewrite}= | pop-1
 | ${overhead}= | ${4}
 # Socket names
-| ${sock1}= | /tmp/sock-1
-| ${sock2}= | /tmp/sock-2
+| ${sock1}= | /tmp/sock-1-1
+| ${sock2}= | /tmp/sock-1-2
 # X520-DA2 bandwidth limit
 | ${s_limit}= | ${10000000000}
 # Traffic profile:
 | | And Apply startup configuration on all VPP DUTs
 | | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology
 | | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
 
index 46db16b..84b7072 100644 (file)
@@ -87,7 +87,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${True}
index 78051f8..9d40165 100644 (file)
@@ -92,7 +92,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${True}
index bff6ba9..8bbc636 100644 (file)
@@ -83,7 +83,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${False}
index f993dec..b13404b 100644 (file)
@@ -88,7 +88,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${False}
index 3ee7bed..21d5c1d 100644 (file)
@@ -87,7 +87,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${256}
 | | ... | use_tuned_cfs=${True}
index 519fd50..0088e28 100644 (file)
@@ -92,7 +92,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${256}
 | | ... | use_tuned_cfs=${True}
index a469193..e56d568 100644 (file)
@@ -83,7 +83,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${256}
 | | ... | use_tuned_cfs=${False}
index 46c46cb..52b9aa2 100644 (file)
@@ -88,7 +88,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${256}
 | | ... | use_tuned_cfs=${False}
index 0a26c2c..a476663 100644 (file)
@@ -82,7 +82,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${2}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${2}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${2} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${False}
index ecab5eb..e12ebce 100644 (file)
@@ -87,7 +87,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${2}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${2}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${2} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${False}
index d03a04d..891a3b8 100644 (file)
@@ -90,7 +90,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${True}
index 7d5f87b..020f986 100644 (file)
@@ -95,7 +95,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${True}
index ea76ed2..d0f2e08 100644 (file)
@@ -90,7 +90,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${True}
index f253544..94ee818 100644 (file)
@@ -95,7 +95,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${True}
index e5909ee..a1e0704 100644 (file)
@@ -90,7 +90,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${True}
index a544d06..dee0721 100644 (file)
 | | And Apply startup configuration on all VPP DUTs
 | | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
 
index 90fd5b9..751c29a 100644 (file)
 | | And Apply startup configuration on all VPP DUTs
 | | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
 
index bae5123..48ee9fc 100644 (file)
 | | When Initialize L2 bridge domains with Vhost-User and VLAN with DPDK link bonding in a 3-node circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
 
index e2f32e0..303cacc 100644 (file)
 | | When Initialize L2 bridge domains with Vhost-User and VLAN with DPDK link bonding in a 3-node circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
 
index 1f1a540..6ce1668 100644 (file)
@@ -63,8 +63,8 @@
 | ${tag_rewrite}= | pop-1
 | ${overhead}= | ${4}
 # Socket names
-| ${sock1}= | /tmp/sock-1
-| ${sock2}= | /tmp/sock-2
+| ${sock1}= | /tmp/sock-1-1
+| ${sock2}= | /tmp/sock-1-2
 # X710 bandwidth limit
 | ${s_limit}= | ${10000000000}
 # Traffic profile:
 | | And Apply startup configuration on all VPP DUTs
 | | When Initialize L2 xconnect with Vhost-User and VLAN with DPDK link bonding in 3-node circular topology
 | | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
 
index 3c7095d..10594c6 100644 (file)
@@ -67,8 +67,8 @@
 | ${tag_rewrite}= | pop-1
 | ${overhead}= | ${4}
 # Socket names
-| ${sock1}= | /tmp/sock-1
-| ${sock2}= | /tmp/sock-2
+| ${sock1}= | /tmp/sock-1-1
+| ${sock2}= | /tmp/sock-1-2
 # X710 bandwidth limit
 | ${s_limit}= | ${10000000000}
 # Traffic profile:
 | | And Apply startup configuration on all VPP DUTs
 | | When Initialize L2 xconnect with Vhost-User and VLAN with DPDK link bonding in 3-node circular topology
 | | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
 
index 148831f..4af1d81 100644 (file)
 | | When Initialize L2 bridge domains with Vhost-User and VLAN with VPP link bonding in a 3-node circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite} | ${bond_mode} | ${lb_mode}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | And All Vpp Interfaces Ready Wait | ${nodes}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
index 451baa5..d877783 100644 (file)
 | | When Initialize L2 bridge domains with Vhost-User and VLAN with VPP link bonding in a 3-node circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite} | ${bond_mode} | ${lb_mode}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | And All Vpp Interfaces Ready Wait | ${nodes}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
index 5851449..ffb6452 100644 (file)
@@ -65,8 +65,8 @@
 | ${bond_mode}= | lacp
 | ${lb_mode}= | l34
 # Socket names
-| ${sock1}= | /tmp/sock-1
-| ${sock2}= | /tmp/sock-2
+| ${sock1}= | /tmp/sock-1-1
+| ${sock2}= | /tmp/sock-1-2
 # X710 bandwidth limit
 | ${s_limit}= | ${10000000000}
 # Traffic profile:
 | | When Initialize L2 xconnect with Vhost-User and VLAN with VPP link bonding in 3-node circular topology
 | | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} | ${bond_mode}
 | | ... | ${lb_mode}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | And All Vpp Interfaces Ready Wait | ${nodes}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
index 4f00a97..f21808f 100644 (file)
@@ -69,8 +69,8 @@
 | ${bond_mode}= | lacp
 | ${lb_mode}= | l34
 # Socket names
-| ${sock1}= | /tmp/sock-1
-| ${sock2}= | /tmp/sock-2
+| ${sock1}= | /tmp/sock-1-1
+| ${sock2}= | /tmp/sock-1-2
 # X710 bandwidth limit
 | ${s_limit}= | ${10000000000}
 # Traffic profile:
 | | When Initialize L2 xconnect with Vhost-User and VLAN with VPP link bonding in 3-node circular topology
 | | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} | ${bond_mode}
 | | ... | ${lb_mode}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | And All Vpp Interfaces Ready Wait | ${nodes}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
index 09fc886..8be849c 100644 (file)
 | | When Initialize L2 bridge domains with Vhost-User and VLAN with VPP link bonding in a 3-node circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite} | ${bond_mode} | ${lb_mode}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | And All Vpp Interfaces Ready Wait | ${nodes}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
index d4f3f62..58beb36 100644 (file)
 | | When Initialize L2 bridge domains with Vhost-User and VLAN with VPP link bonding in a 3-node circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite} | ${bond_mode} | ${lb_mode}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | And All Vpp Interfaces Ready Wait | ${nodes}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
index a6084d2..f717f4f 100644 (file)
@@ -66,8 +66,8 @@
 | ${bond_mode}= | lacp
 | ${lb_mode}= | l34
 # Socket names
-| ${sock1}= | /tmp/sock-1
-| ${sock2}= | /tmp/sock-2
+| ${sock1}= | /tmp/sock-1-1
+| ${sock2}= | /tmp/sock-1-2
 # X710 bandwidth limit
 | ${s_limit}= | ${10000000000}
 # Traffic profile:
 | | When Initialize L2 xconnect with Vhost-User and VLAN with VPP link bonding in 3-node circular topology
 | | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} | ${bond_mode}
 | | ... | ${lb_mode}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | And All Vpp Interfaces Ready Wait | ${nodes}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
index b535f95..33a21ff 100644 (file)
@@ -70,8 +70,8 @@
 | ${bond_mode}= | lacp
 | ${lb_mode}= | l34
 # Socket names
-| ${sock1}= | /tmp/sock-1
-| ${sock2}= | /tmp/sock-2
+| ${sock1}= | /tmp/sock-1-1
+| ${sock2}= | /tmp/sock-1-2
 # X710 bandwidth limit
 | ${s_limit}= | ${10000000000}
 # Traffic profile:
 | | When Initialize L2 xconnect with Vhost-User and VLAN with VPP link bonding in 3-node circular topology
 | | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite} | ${bond_mode}
 | | ... | ${lb_mode}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | And Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | And All Vpp Interfaces Ready Wait | ${nodes}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
index 5b7faee..bcc2c70 100644 (file)
 | | When Initialize L2 bridge domains with Vhost-User and VLAN in circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
 
index 42b5472..33508b7 100644 (file)
 | | When Initialize L2 bridge domains with Vhost-User and VLAN in circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2} | ${subid}
 | | ... | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
 
index 82406fb..1f4b362 100644 (file)
@@ -55,8 +55,8 @@
 | ${subid}= | 10
 | ${tag_rewrite}= | pop-1
 # Socket names
-| ${sock1}= | /tmp/sock-1
-| ${sock2}= | /tmp/sock-2
+| ${sock1}= | /tmp/sock-1-1
+| ${sock2}= | /tmp/sock-1-2
 # X710 bandwidth limit
 | ${s_limit}= | ${10000000000}
 # Traffic profile:
 | | And Apply startup configuration on all VPP DUTs
 | | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology
 | | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
 
index eb504a1..4d21c11 100644 (file)
@@ -59,8 +59,8 @@
 | ${subid}= | 10
 | ${tag_rewrite}= | pop-1
 # Socket names
-| ${sock1}= | /tmp/sock-1
-| ${sock2}= | /tmp/sock-2
+| ${sock1}= | /tmp/sock-1-1
+| ${sock2}= | /tmp/sock-1-2
 # X710 bandwidth limit
 | ${s_limit}= | ${10000000000}
 # Traffic profile:
 | | And Apply startup configuration on all VPP DUTs
 | | When Initialize L2 xconnect with Vhost-User and VLAN in 3-node circular topology
 | | ... | ${sock1} | ${sock2} | ${subid} | ${tag_rewrite}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
 
index b91716d..d84e276 100644 (file)
@@ -84,7 +84,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${False}
index 9092094..d298c44 100644 (file)
@@ -89,7 +89,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${False}
index d01df8c..a49f46b 100644 (file)
@@ -83,7 +83,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${256}
 | | ... | use_tuned_cfs=${False}
index 92416a9..871751e 100644 (file)
@@ -88,7 +88,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${1}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${1}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${256}
 | | ... | use_tuned_cfs=${False}
index a0f3059..021dff0 100644 (file)
@@ -82,7 +82,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${2}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${2}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${2} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${False}
index 3c459e8..99c8503 100644 (file)
@@ -87,7 +87,7 @@
 | | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
 | | ... | ${s_limit} | ${framesize}
 | | And Apply startup configuration on all VPP DUTs
-| | When Initialize L2 bridge domains with Vhost-User | vm_count=${2}
+| | When Initialize L2 bridge domains with Vhost-User | nf_nodes=${2}
 | | And Configure guest VMs with dpdk-testpmd connected via vhost-user
 | | ... | vm_count=${2} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
 | | ... | use_tuned_cfs=${False}
index ea37bc9..2aedd4c 100644 (file)
 | | And Apply startup configuration on all VPP DUTs
 | | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Traffic should pass with maximum rate
 | | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
 
index b7611f4..d0922da 100644 (file)
 | | And Apply startup configuration on all VPP DUTs
 | | When Initialize L2 bridge domains with Vhost-User and VXLANoIPv4 in 3-node circular topology
 | | ... | ${bd_id1} | ${bd_id2} | ${sock1} | ${sock2}
-| | ${vm1}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT1 | ${sock1} | ${sock2} | DUT1_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut1_vm_refs} | DUT1_VM1 | ${vm1}
-| | ${vm2}= | And Configure guest VM with dpdk-testpmd connected via vhost-user
-| | ... | DUT2 | ${sock1} | ${sock2} | DUT2_VM1 | jumbo=${jumbo}
-| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
-| | Set To Dictionary | ${dut2_vm_refs} | DUT2_VM1 | ${vm2}
+| | And Configure guest VMs with dpdk-testpmd connected via vhost-user
+| | ... | vm_count=${1} | jumbo=${jumbo} | perf_qemu_qsz=${1024}
+| | ... | use_tuned_cfs=${False}
 | | Then Find NDR and PDR intervals using optimized search
 | | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
 
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr.robot
new file mode 100644 (file)
index 0000000..24b09b8
--- /dev/null
@@ -0,0 +1,137 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 10C1N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance mrr test with vhost and VM with dpdk-testpmd
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD test cases with vhost 10 chains 1 VM*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | 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 NFs nodes
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-10c1n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${10} | nf_nodes=${1}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${10} | nf_nodes=${1} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-10chain-10vm-l3fwd-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-10chain-10vm-l3fwd-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-10chain-10vm-l3fwd-ndrpdr.robot
new file mode 100644 (file)
index 0000000..4768091
--- /dev/null
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 10C1N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost 10 chains
+| ... | 1 VM*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-10c1n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${10} | nf_nodes=${1}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${10} | nf_nodes=${1} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-10chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-10chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-10chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-10chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-10chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-10chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-10chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-10chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-10chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-10chain-1vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-10chain-1vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-10chain-1vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr.robot
new file mode 100644 (file)
index 0000000..2f58da4
--- /dev/null
@@ -0,0 +1,137 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 1C10N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance mrr test with vhost and VM with dpdk-testpmd
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD test cases with vhost 1 chain 10 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | 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 NFs nodes
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c10n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${10}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${10} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-1chain-10vm-l3fwd-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr.robot
new file mode 100644 (file)
index 0000000..9b7130b
--- /dev/null
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 1C10N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost 1 chain
+| ... | 10 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c10n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${10}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${10} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-1chain-10vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr.robot
new file mode 100644 (file)
index 0000000..8d36b70
--- /dev/null
@@ -0,0 +1,137 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 1C1N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance mrr test with vhost and VM with dpdk-testpmd
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD test cases with vhost 1 chain 1 VM*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | 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 NFs nodes
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c1n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${1}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${1} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-1chain-1vm-l3fwd-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr.robot
new file mode 100644 (file)
index 0000000..7da1b40
--- /dev/null
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 1C1N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost 1 chain
+| ... | 1 VM*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c1n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${1}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${1} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-1chain-1vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr.robot
new file mode 100644 (file)
index 0000000..932234a
--- /dev/null
@@ -0,0 +1,137 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 1C2N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance mrr test with vhost and VM with dpdk-testpmd
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD test cases with vhost 1 chain 2 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | 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 NFs nodes
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c2n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${2}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${2} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-1chain-2vm-l3fwd-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr.robot
new file mode 100644 (file)
index 0000000..b89fb46
--- /dev/null
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 1C2N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost 1 chain
+| ... | 2 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c2n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${2}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${2} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-1chain-2vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr.robot
new file mode 100644 (file)
index 0000000..4706e55
--- /dev/null
@@ -0,0 +1,137 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 1C4N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance mrr test with vhost and VM with dpdk-testpmd
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD test cases with vhost 1 chain 4 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | 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 NFs nodes
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c4n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${4}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${4} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-1chain-4vm-l3fwd-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr.robot
new file mode 100644 (file)
index 0000000..c65e43c
--- /dev/null
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 1C4N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost 1 chain
+| ... | 4 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c4n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${4}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${4} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-1chain-4vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr.robot
new file mode 100644 (file)
index 0000000..a3a7e6b
--- /dev/null
@@ -0,0 +1,137 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 1C6N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance mrr test with vhost and VM with dpdk-testpmd
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD test cases with vhost 1 chain 6 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | 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 NFs nodes
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c6n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${6}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${6} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-1chain-6vm-l3fwd-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr.robot
new file mode 100644 (file)
index 0000000..46b40b2
--- /dev/null
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 1C6N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost 1 chain
+| ... | 6 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c6n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${6}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${6} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-1chain-6vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr.robot
new file mode 100644 (file)
index 0000000..e6030ae
--- /dev/null
@@ -0,0 +1,137 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 1C8N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance mrr test with vhost and VM with dpdk-testpmd
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD test cases with vhost 1 chain 8 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | 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 NFs nodes
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c8n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${8}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${8} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-1chain-8vm-l3fwd-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr.robot
new file mode 100644 (file)
index 0000000..caa2b24
--- /dev/null
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 1C8N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost 1 chain
+| ... | 8 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-1c1n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${1} | nf_nodes=${8}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${1} | nf_nodes=${8} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-1chain-8vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr.robot
new file mode 100644 (file)
index 0000000..0d16e12
--- /dev/null
@@ -0,0 +1,137 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 2C6N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance mrr test with vhost and VM with dpdk-testpmd
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD test cases with vhost 2 chains 12 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | 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 NFs nodes
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c6n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${2} | nf_nodes=${6}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${2} | nf_nodes=${6} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-2chain-12vm-l3fwd-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr.robot
new file mode 100644 (file)
index 0000000..135982a
--- /dev/null
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 2C6N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost 6 chains
+| ... | 12 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c6n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${2} | nf_nodes=${6}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${2} | nf_nodes=${6} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-2chain-12vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr.robot
new file mode 100644 (file)
index 0000000..7111fe7
--- /dev/null
@@ -0,0 +1,137 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 2C8N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance mrr test with vhost and VM with dpdk-testpmd
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD test cases with vhost 2 chains 16 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | 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 NFs nodes
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c8n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${2} | nf_nodes=${8}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${2} | nf_nodes=${8} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-2chain-16vm-l3fwd-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr.robot
new file mode 100644 (file)
index 0000000..efb1c3a
--- /dev/null
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 2C8N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost 2 chains
+| ... | 16 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c8n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${2} | nf_nodes=${8}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${2} | nf_nodes=${8} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-2chain-16vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr.robot
new file mode 100644 (file)
index 0000000..e1100f7
--- /dev/null
@@ -0,0 +1,137 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | MRR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 2C1N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance mrr test with vhost and VM with dpdk-testpmd
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *Raw results L2BD test cases with vhost 2 chains 2 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* In MaxReceivedRate test TG sends traffic
+| ... | at line rate and reports total received/sent packets over trial period.
+| ... | 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 NFs nodes
+| ... | interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c1n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure MaxReceivedRate for ${framesize}B frames using single\
+| | ... | trial throughput test.
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${2} | nf_nodes=${1}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${2} | nf_nodes=${1} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Traffic should pass with maximum rate
+| | ... | ${max_rate}pps | ${framesize} | ${traffic_profile}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr
+| | [Tags] | IMIX | 2C
+| | framesize=IMIX_v4_1 | phy_cores=${2}
+
+| tc12-IMIX-4c-eth-l2bd-vhost-2chain-2vm-l3fwd-mrr
+| | [Tags] | IMIX | 4C
+| | framesize=IMIX_v4_1 | phy_cores=${4}
diff --git a/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-2vm-l3fwd-ndrpdr.robot b/tests/vpp/perf/vm_vhost/2n-10ge2p1x710-eth-l2bd-vhost-2chain-2vm-l3fwd-ndrpdr.robot
new file mode 100644 (file)
index 0000000..2d758d9
--- /dev/null
@@ -0,0 +1,142 @@
+# Copyright (c) 2019 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/performance/performance_setup.robot
+| Library | resources.libraries.python.QemuUtils
+| ...
+| Force Tags | 2_NODE_SINGLE_LINK_TOPO | PERFTEST | HW_ENV | NDRPDR
+| ... | NIC_Intel-X710 | ETH | L2BDMACLRN | BASE | VHOST | VM | 2C1N
+| ... | VHOST_1024 | SERVICE_DENSITY
+| ...
+| Suite Setup | Set up 2-node performance topology with DUT's NIC model
+| ... | L3 | Intel-X710
+| Suite Teardown | Tear down 2-node performance topology
+| ...
+| Test Setup | Set up performance test
+| Test Teardown | Tear down performance test with vhost and VM with dpdk-testpmd
+| ... | ${min_rate}pps | ${framesize} | ${traffic_profile}
+| ... | dut1_node=${dut1} | dut1_vm_refs=${dut1_vm_refs}
+| ...
+| Test Template | Local Template
+| ...
+| Documentation | *RFC2544: Pkt throughput L2BD test cases with vhost 2 chains
+| ... | 2 VMs*
+| ...
+| ... | *[Top] Network Topologies:* TG-DUT1-TG 2-node circular topology
+| ... | with single links between nodes.
+| ... | *[Enc] Packet Encapsulations:* Eth-IPv4 for L2 switching of IPv4.
+| ... | *[Cfg] DUT configuration:* DUT1 is configured with L2 bridge-
+| ... | domain and MAC learning enabled. Qemu VNFs are connected to VPP via
+| ... | vhost-user interfaces. Guest is running DPDK testpmd
+| ... | interconnecting vhost-user interfaces, forwarding mode is
+| ... | set to io, rxd/txd=1024. DUT1 is tested with 2p10GE NIC X710 by Intel.
+| ... | *[Ver] TG verification:* TG finds and reports throughput NDR (Non Drop
+| ... | Rate) with zero packet loss tolerance or throughput PDR (Partial Drop
+| ... | Rate) with non-zero packet loss tolerance (LT) expressed in percentage
+| ... | of packets transmitted. NDR and PDR are discovered for different
+| ... | Ethernet L2 frame sizes using MLRsearch library.
+| ... | Test packets are generated by TG on links to DUTs. TG traffic profile
+| ... | contains two L3 flow-groups (flow-group per direction, 254 flows per
+| ... | flow-group) with all packets containing Ethernet header, IPv4 header
+| ... | with IP protocol=61 and static payload. MAC addresses are matching MAC
+| ... | addresses of the TG node interfaces.
+| ... | *[Ref] Applicable standard specifications:* RFC2544.
+
+*** Variables ***
+# X710 bandwidth limit
+| ${s_limit}= | ${10000000000}
+# Traffic profile:
+| ${traffic_profile}= | trex-sl-2n3n-ethip4-ip4src254-2c1n
+
+*** Keywords ***
+| Local Template
+| | [Documentation]
+| | ... | [Cfg] DUT runs L2BD switching config.
+| | ... | Each DUT uses ${phy_cores} physical core(s) for worker threads.
+| | ... | [Ver] Measure NDR and PDR values using MLRsearch algorithm.\
+| | ...
+| | ... | *Arguments:*
+| | ... | - framesize - 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] | ${framesize} | ${phy_cores} | ${rxq}=${None}
+| | ...
+| | Set Test Variable | ${framesize}
+| | Set Test Variable | ${min_rate} | ${10000}
+| | ${dut1_vm_refs}= | Create Dictionary
+| | Set Test Variable | ${dut1_vm_refs}
+| | ...
+| | Given Add worker threads and rxqueues to all DUTs | ${phy_cores} | ${rxq}
+| | And Add PCI devices to all DUTs
+| | ${max_rate} | ${jumbo} = | Get Max Rate And Jumbo And Handle Multi Seg
+| | ... | ${s_limit} | ${framesize}
+| | And Apply startup configuration on all VPP DUTs
+| | When Initialize L2 bridge domains for multiple chains with Vhost-User
+| | ... | nf_chains=${2} | nf_nodes=${1}
+| | And Configure chains of NFs with dpdk-testpmd-mac connected via vhost-user
+| | ... | nf_chains=${2} | nf_nodes=${1} | jumbo=${jumbo}
+| | ... | perf_qemu_qsz=${1024} | use_tuned_cfs=${False}
+| | Then Find NDR and PDR intervals using optimized search
+| | ... | ${framesize} | ${traffic_profile} | ${min_rate} | ${max_rate}
+
+*** Test Cases ***
+| tc01-64B-1c-eth-l2bd-vhost-2chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 1C
+| | framesize=${64} | phy_cores=${1}
+
+| tc02-64B-2c-eth-l2bd-vhost-2chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 2C
+| | framesize=${64} | phy_cores=${2}
+
+| tc03-64B-4c-eth-l2bd-vhost-2chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 64B | 4C
+| | framesize=${64} | phy_cores=${4}
+
+| tc04-1518B-1c-eth-l2bd-vhost-2chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 1C
+| | framesize=${1518} | phy_cores=${1}
+
+| tc05-1518B-2c-eth-l2bd-vhost-2chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 2C
+| | framesize=${1518} | phy_cores=${2}
+
+| tc06-1518B-4c-eth-l2bd-vhost-2chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 1518B | 4C
+| | framesize=${1518} | phy_cores=${4}
+
+| tc07-9000B-1c-eth-l2bd-vhost-2chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 1C
+| | framesize=${9000} | phy_cores=${1}
+
+| tc08-9000B-2c-eth-l2bd-vhost-2chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 2C
+| | framesize=${9000} | phy_cores=${2}
+
+| tc09-9000B-4c-eth-l2bd-vhost-2chain-2vm-l3fwd-ndrpdr
+| | [Tags] | 9000B | 4C
+| | framesize=${9000} | phy_cores=${4}
+
+| tc10-IMIX-1c-eth-l2bd-vhost-2chain-2vm-l3fwd-ndrpdr
+| | [Tags] | IMIX | 1C
+| | framesize=IMIX_v4_1 | phy_cores=${1}
+
+| tc11-IMIX-2c-eth-l2bd-vhost-2chain-2vm-l3fwd-ndrpdr
+| | [Tags] |&nbs