scale-out testcase template 93/37993/16
authorRoss Brattain <ross.b.brattain@intel.com>
Mon, 24 Jul 2017 09:55:00 +0000 (02:55 -0700)
committerRoss Brattain <ross.b.brattain@intel.com>
Wed, 18 Oct 2017 03:16:25 +0000 (20:16 -0700)
use anonymous flavors
force num_vnfs to int

added provider network examples

we have to disable port security for provider networks

removed vld_id, not needed

adjust num_vfs to allocate two physnets per VNF.

fix for multiports

Change-Id: Ic4c8314dc07f6295b9559188989d81058bb48eb0
Signed-off-by: Ross Brattain <ross.b.brattain@intel.com>
30 files changed:
ansible/gen_scale_out_test.yml [new file with mode: 0644]
ansible/scale_out_test_templates.yml [new file with mode: 0644]
samples/vnf_samples/nsut/acl/acl-tg-topology-3node-10.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/acl/acl-tg-topology-3node-2.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/acl/acl-tg-topology-3node-4.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/acl/acl-tg-topology-3node-scale-out.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_10.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_2.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_4.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_out.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-10.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-2.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-4.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-scale-out.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_10.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_2.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_4.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_out.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_2.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml [new file with mode: 0644]
samples/vnf_samples/traffic_profiles/ipv4_throughput-10.yaml [new file with mode: 0644]
samples/vnf_samples/traffic_profiles/ipv4_throughput-2.yaml [new file with mode: 0644]
samples/vnf_samples/traffic_profiles/ipv4_throughput-4.yaml [new file with mode: 0644]
samples/vnf_samples/traffic_profiles/ipv4_throughput-scale-out.yaml
samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-10.yaml [new file with mode: 0644]
samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-2.yaml [new file with mode: 0644]
samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-4.yaml [new file with mode: 0644]
samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-scale-out.yaml [new file with mode: 0644]

diff --git a/ansible/gen_scale_out_test.yml b/ansible/gen_scale_out_test.yml
new file mode 100644 (file)
index 0000000..a76ea0a
--- /dev/null
@@ -0,0 +1,26 @@
+# Copyright (c) 2017 Intel Corporation. #
+# 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.
+---
+- hosts: localhost
+  connection: local
+  vars:
+    vnf_range:
+      - 2
+      - 4
+      - 10
+
+
+  tasks:
+    - include: scale_out_test_templates.yml
+      with_items: "{{ vnf_range }}"
+
diff --git a/ansible/scale_out_test_templates.yml b/ansible/scale_out_test_templates.yml
new file mode 100644 (file)
index 0000000..4213816
--- /dev/null
@@ -0,0 +1,48 @@
+# Copyright (c) 2017 Intel Corporation. #
+# 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.
+---
+
+- set_fact:
+    num_vnfs: "{{ item }}"
+
+- debug:
+    var: num_vnfs
+    verbosity: 2
+
+- template:
+    src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-scale-out.yaml
+    dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-{{ num_vnfs }}.yaml
+
+- template:
+    src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-scale-out.yaml
+    dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-{{ num_vnfs }}.yaml
+
+- template:
+    src: ../samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_out.yaml
+    dest: ../samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_{{ num_vnfs }}.yaml
+
+- template:
+    src: ../samples/vnf_samples/nsut/acl/acl-tg-topology-3node-scale-out.yaml
+    dest: ../samples/vnf_samples/nsut/acl/acl-tg-topology-3node-{{ num_vnfs }}.yaml
+
+- template:
+    src: ../samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml
+    dest: ../samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_{{ num_vnfs }}.yaml
+
+- template:
+    src: ../samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_out.yaml
+    dest: ../samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_{{ num_vnfs }}.yaml
+
+- template:
+    src: ../samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-scale-out.yaml
+    dest: ../samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-{{ num_vnfs }}.yaml
diff --git a/samples/vnf_samples/nsut/acl/acl-tg-topology-3node-10.yaml b/samples/vnf_samples/nsut/acl/acl-tg-topology-3node-10.yaml
new file mode 100644 (file)
index 0000000..5c7a614
--- /dev/null
@@ -0,0 +1,260 @@
+# Copyright (c) 2016 Intel Corporation
+#
+# 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.
+---
+nsd:nsd-catalog:
+  nsd:
+    - id: 10-vnf-correlated
+      name: 10-vnf-correlated
+      short-name: 10-vnf-correlated
+      description: 10-vnf-correlated
+      constituent-vnfd:
+        - member-vnf-index: '0'
+          vnfd-id-ref: tg__0
+          VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml      #VNF type
+        - member-vnf-index: '1'
+          vnfd-id-ref: tg__1
+          VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml      #VNF type
+        - member-vnf-index: '2'
+          vnfd-id-ref: vnf__0
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+        - member-vnf-index: '3'
+          vnfd-id-ref: vnf__1
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+        - member-vnf-index: '4'
+          vnfd-id-ref: vnf__2
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+        - member-vnf-index: '5'
+          vnfd-id-ref: vnf__3
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+        - member-vnf-index: '6'
+          vnfd-id-ref: vnf__4
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+        - member-vnf-index: '7'
+          vnfd-id-ref: vnf__5
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+        - member-vnf-index: '8'
+          vnfd-id-ref: vnf__6
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+        - member-vnf-index: '9'
+          vnfd-id-ref: vnf__7
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+        - member-vnf-index: '10'
+          vnfd-id-ref: vnf__8
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+        - member-vnf-index: '11'
+          vnfd-id-ref: vnf__9
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+
+      vld:
+        - id: uplink_0
+          name: "tg__0 to vnf__0 link 0"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '2'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__0
+        - id: downlink_0
+          name: "vnf__0 to tg__1 link 0"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '2'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__0
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: tg__1
+        - id: uplink_1
+          name: "tg__0 to vnf__1 link 1"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '3'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__1
+        - id: downlink_1
+          name: "vnf__1 to tg__1 link 1"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '3'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__1
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: tg__1
+        - id: uplink_2
+          name: "tg__0 to vnf__2 link 2"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe2
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '4'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__2
+        - id: downlink_2
+          name: "vnf__2 to tg__1 link 2"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '4'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__2
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe2
+              vnfd-id-ref: tg__1
+        - id: uplink_3
+          name: "tg__0 to vnf__3 link 3"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe3
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '5'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__3
+        - id: downlink_3
+          name: "vnf__3 to tg__1 link 3"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '5'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__3
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe3
+              vnfd-id-ref: tg__1
+        - id: uplink_4
+          name: "tg__0 to vnf__4 link 4"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe4
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '6'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__4
+        - id: downlink_4
+          name: "vnf__4 to tg__1 link 4"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '6'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__4
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe4
+              vnfd-id-ref: tg__1
+        - id: uplink_5
+          name: "tg__0 to vnf__5 link 5"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe5
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '7'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__5
+        - id: downlink_5
+          name: "vnf__5 to tg__1 link 5"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '7'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__5
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe5
+              vnfd-id-ref: tg__1
+        - id: uplink_6
+          name: "tg__0 to vnf__6 link 6"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe6
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '8'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__6
+        - id: downlink_6
+          name: "vnf__6 to tg__1 link 6"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '8'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__6
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe6
+              vnfd-id-ref: tg__1
+        - id: uplink_7
+          name: "tg__0 to vnf__7 link 7"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe7
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '9'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__7
+        - id: downlink_7
+          name: "vnf__7 to tg__1 link 7"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '9'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__7
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe7
+              vnfd-id-ref: tg__1
+        - id: uplink_8
+          name: "tg__0 to vnf__8 link 8"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe8
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '10'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__8
+        - id: downlink_8
+          name: "vnf__8 to tg__1 link 8"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '10'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__8
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe8
+              vnfd-id-ref: tg__1
+        - id: uplink_9
+          name: "tg__0 to vnf__9 link 9"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe9
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '11'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__9
+        - id: downlink_9
+          name: "vnf__9 to tg__1 link 9"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '11'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__9
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe9
+              vnfd-id-ref: tg__1
+
diff --git a/samples/vnf_samples/nsut/acl/acl-tg-topology-3node-2.yaml b/samples/vnf_samples/nsut/acl/acl-tg-topology-3node-2.yaml
new file mode 100644 (file)
index 0000000..a9870dc
--- /dev/null
@@ -0,0 +1,76 @@
+# Copyright (c) 2016 Intel Corporation
+#
+# 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.
+---
+nsd:nsd-catalog:
+  nsd:
+    - id: 2-vnf-correlated
+      name: 2-vnf-correlated
+      short-name: 2-vnf-correlated
+      description: 2-vnf-correlated
+      constituent-vnfd:
+        - member-vnf-index: '0'
+          vnfd-id-ref: tg__0
+          VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml      #VNF type
+        - member-vnf-index: '1'
+          vnfd-id-ref: tg__1
+          VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml      #VNF type
+        - member-vnf-index: '2'
+          vnfd-id-ref: vnf__0
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+        - member-vnf-index: '3'
+          vnfd-id-ref: vnf__1
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+
+      vld:
+        - id: uplink_0
+          name: "tg__0 to vnf__0 link 0"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '2'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__0
+        - id: downlink_0
+          name: "vnf__0 to tg__1 link 0"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '2'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__0
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: tg__1
+        - id: uplink_1
+          name: "tg__0 to vnf__1 link 1"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '3'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__1
+        - id: downlink_1
+          name: "vnf__1 to tg__1 link 1"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '3'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__1
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: tg__1
+
diff --git a/samples/vnf_samples/nsut/acl/acl-tg-topology-3node-4.yaml b/samples/vnf_samples/nsut/acl/acl-tg-topology-3node-4.yaml
new file mode 100644 (file)
index 0000000..89a067a
--- /dev/null
@@ -0,0 +1,122 @@
+# Copyright (c) 2016 Intel Corporation
+#
+# 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.
+---
+nsd:nsd-catalog:
+  nsd:
+    - id: 4-vnf-correlated
+      name: 4-vnf-correlated
+      short-name: 4-vnf-correlated
+      description: 4-vnf-correlated
+      constituent-vnfd:
+        - member-vnf-index: '0'
+          vnfd-id-ref: tg__0
+          VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml      #VNF type
+        - member-vnf-index: '1'
+          vnfd-id-ref: tg__1
+          VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml      #VNF type
+        - member-vnf-index: '2'
+          vnfd-id-ref: vnf__0
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+        - member-vnf-index: '3'
+          vnfd-id-ref: vnf__1
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+        - member-vnf-index: '4'
+          vnfd-id-ref: vnf__2
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+        - member-vnf-index: '5'
+          vnfd-id-ref: vnf__3
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+
+      vld:
+        - id: uplink_0
+          name: "tg__0 to vnf__0 link 0"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '2'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__0
+        - id: downlink_0
+          name: "vnf__0 to tg__1 link 0"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '2'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__0
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: tg__1
+        - id: uplink_1
+          name: "tg__0 to vnf__1 link 1"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '3'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__1
+        - id: downlink_1
+          name: "vnf__1 to tg__1 link 1"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '3'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__1
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: tg__1
+        - id: uplink_2
+          name: "tg__0 to vnf__2 link 2"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe2
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '4'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__2
+        - id: downlink_2
+          name: "vnf__2 to tg__1 link 2"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '4'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__2
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe2
+              vnfd-id-ref: tg__1
+        - id: uplink_3
+          name: "tg__0 to vnf__3 link 3"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe3
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '5'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__3
+        - id: downlink_3
+          name: "vnf__3 to tg__1 link 3"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '5'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__3
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe3
+              vnfd-id-ref: tg__1
+
diff --git a/samples/vnf_samples/nsut/acl/acl-tg-topology-3node-scale-out.yaml b/samples/vnf_samples/nsut/acl/acl-tg-topology-3node-scale-out.yaml
new file mode 100644 (file)
index 0000000..c067779
--- /dev/null
@@ -0,0 +1,57 @@
+# Copyright (c) 2016 Intel Corporation
+#
+# 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.
+---
+nsd:nsd-catalog:
+  nsd:
+    - id: {{ num_vnfs }}-vnf-correlated
+      name: {{ num_vnfs }}-vnf-correlated
+      short-name: {{ num_vnfs }}-vnf-correlated
+      description: {{ num_vnfs }}-vnf-correlated
+      constituent-vnfd:
+        - member-vnf-index: '0'
+          vnfd-id-ref: tg__0
+          VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml      #VNF type
+        - member-vnf-index: '1'
+          vnfd-id-ref: tg__1
+          VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml      #VNF type
+{% for vnf_num in range(num_vnfs|int) %}
+        - member-vnf-index: '{{ vnf_num + 2 }}'
+          vnfd-id-ref: vnf__{{ vnf_num }}
+          VNF model: ../../vnf_descriptors/acl_vnf.yaml      #VNF type
+{% endfor %}
+
+      vld:
+{% for vnf_num in range(num_vnfs|int) %}
+        - id: uplink_{{ vnf_num }}
+          name: "tg__0 to vnf__{{ vnf_num }} link {{ vnf_num }}"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe{{ vnf_num }}
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '{{ vnf_num + 2 }}'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__{{ vnf_num }}
+        - id: downlink_{{ vnf_num }}
+          name: "vnf__{{ vnf_num }} to tg__1 link {{ vnf_num }}"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '{{ vnf_num + 2}}'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__{{ vnf_num }}
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe{{ vnf_num }}
+              vnfd-id-ref: tg__1
+{% endfor %}
+
diff --git a/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_10.yaml b/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_10.yaml
new file mode 100644 (file)
index 0000000..5b28d56
--- /dev/null
@@ -0,0 +1,370 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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.
+
+---
+schema: yardstick:task:0.1
+scenarios:
+  - type: NSPerf
+    traffic_profile: ../../traffic_profiles/ipv4_throughput-10.yaml
+    topology: acl-tg-topology-3node-10.yaml
+    nodes:
+      tg__0: tg_0.yardstick
+      tg__1: tg_1.yardstick
+      vnf__0: vnf_0.yardstick
+      vnf__1: vnf_1.yardstick
+      vnf__2: vnf_2.yardstick
+      vnf__3: vnf_3.yardstick
+      vnf__4: vnf_4.yardstick
+      vnf__5: vnf_5.yardstick
+      vnf__6: vnf_6.yardstick
+      vnf__7: vnf_7.yardstick
+      vnf__8: vnf_8.yardstick
+      vnf__9: vnf_9.yardstick
+    options:
+      framesize:
+        uplink: {64B: 100}
+        downlink: {64B: 100}
+      flow:
+        src_ip:
+          - {'tg__0': 'xe0'}
+          - {'tg__0': 'xe1'}
+          - {'tg__0': 'xe2'}
+          - {'tg__0': 'xe3'}
+          - {'tg__0': 'xe4'}
+          - {'tg__0': 'xe5'}
+          - {'tg__0': 'xe6'}
+          - {'tg__0': 'xe7'}
+          - {'tg__0': 'xe8'}
+          - {'tg__0': 'xe9'}
+        dst_ip:
+          - {'tg__1': 'xe0'}
+          - {'tg__1': 'xe1'}
+          - {'tg__1': 'xe2'}
+          - {'tg__1': 'xe3'}
+          - {'tg__1': 'xe4'}
+          - {'tg__1': 'xe5'}
+          - {'tg__1': 'xe6'}
+          - {'tg__1': 'xe7'}
+          - {'tg__1': 'xe8'}
+          - {'tg__1': 'xe9'}
+        count: 1
+      traffic_type: 4
+      rfc2544:
+        allowed_drop_rate: 0.0001 - 0.0001
+        correlated_traffic: true
+      vnf__0:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__1:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__2:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__3:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__4:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__5:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__6:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__7:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__8:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__9:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+    runner:
+      type: Iteration
+      iterations: 10
+      interval: 35
+context:
+  name: yardstick
+  image: yardstick-samplevnfs
+  flavor:
+    vcpus: 10
+    ram: 10240
+    disk: 6
+    extra_specs:
+      hw:cpu_sockets: 1
+      hw:cpu_cores: 10
+      hw:cpu_threads: 1
+  user: ubuntu
+  placement_groups:
+    pgrp1:
+      policy: "availability"
+  servers:
+    tg_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        uplink_1:
+          - xe1
+        uplink_2:
+          - xe2
+        uplink_3:
+          - xe3
+        uplink_4:
+          - xe4
+        uplink_5:
+          - xe5
+        uplink_6:
+          - xe6
+        uplink_7:
+          - xe7
+        uplink_8:
+          - xe8
+        uplink_9:
+          - xe9
+    tg_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        downlink_0:
+          - xe0
+        downlink_1:
+          - xe1
+        downlink_2:
+          - xe2
+        downlink_3:
+          - xe3
+        downlink_4:
+          - xe4
+        downlink_5:
+          - xe5
+        downlink_6:
+          - xe6
+        downlink_7:
+          - xe7
+        downlink_8:
+          - xe8
+        downlink_9:
+          - xe9
+    vnf_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        downlink_0:
+          - xe1
+    vnf_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_1:
+          - xe0
+        downlink_1:
+          - xe1
+    vnf_2:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_2:
+          - xe0
+        downlink_2:
+          - xe1
+    vnf_3:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_3:
+          - xe0
+        downlink_3:
+          - xe1
+    vnf_4:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_4:
+          - xe0
+        downlink_4:
+          - xe1
+    vnf_5:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_5:
+          - xe0
+        downlink_5:
+          - xe1
+    vnf_6:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_6:
+          - xe0
+        downlink_6:
+          - xe1
+    vnf_7:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_7:
+          - xe0
+        downlink_7:
+          - xe1
+    vnf_8:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_8:
+          - xe0
+        downlink_8:
+          - xe1
+    vnf_9:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_9:
+          - xe0
+        downlink_9:
+          - xe1
+  networks:
+    mgmt:
+      cidr: '10.0.1.0/24'
+    uplink_0:
+      cidr: '10.1.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_0:
+      cidr: '10.1.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_1:
+      cidr: '10.2.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_1:
+      cidr: '10.2.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_2:
+      cidr: '10.3.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_2:
+      cidr: '10.3.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_3:
+      cidr: '10.4.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_3:
+      cidr: '10.4.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_4:
+      cidr: '10.5.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_4:
+      cidr: '10.5.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_5:
+      cidr: '10.6.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_5:
+      cidr: '10.6.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_6:
+      cidr: '10.7.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_6:
+      cidr: '10.7.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_7:
+      cidr: '10.8.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_7:
+      cidr: '10.8.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_8:
+      cidr: '10.9.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_8:
+      cidr: '10.9.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_9:
+      cidr: '10.10.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_9:
+      cidr: '10.10.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
diff --git a/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_2.yaml b/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_2.yaml
new file mode 100644 (file)
index 0000000..ef76405
--- /dev/null
@@ -0,0 +1,130 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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.
+
+---
+schema: yardstick:task:0.1
+scenarios:
+  - type: NSPerf
+    traffic_profile: ../../traffic_profiles/ipv4_throughput-2.yaml
+    topology: acl-tg-topology-3node-2.yaml
+    nodes:
+      tg__0: tg_0.yardstick
+      tg__1: tg_1.yardstick
+      vnf__0: vnf_0.yardstick
+      vnf__1: vnf_1.yardstick
+    options:
+      framesize:
+        uplink: {64B: 100}
+        downlink: {64B: 100}
+      flow:
+        src_ip:
+          - {'tg__0': 'xe0'}
+          - {'tg__0': 'xe1'}
+        dst_ip:
+          - {'tg__1': 'xe0'}
+          - {'tg__1': 'xe1'}
+        count: 1
+      traffic_type: 4
+      rfc2544:
+        allowed_drop_rate: 0.0001 - 0.0001
+        correlated_traffic: true
+      vnf__0:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__1:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+    runner:
+      type: Iteration
+      iterations: 10
+      interval: 35
+context:
+  name: yardstick
+  image: yardstick-samplevnfs
+  flavor:
+    vcpus: 10
+    ram: 10240
+    disk: 6
+    extra_specs:
+      hw:cpu_sockets: 1
+      hw:cpu_cores: 10
+      hw:cpu_threads: 1
+  user: ubuntu
+  placement_groups:
+    pgrp1:
+      policy: "availability"
+  servers:
+    tg_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        uplink_1:
+          - xe1
+    tg_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        downlink_0:
+          - xe0
+        downlink_1:
+          - xe1
+    vnf_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        downlink_0:
+          - xe1
+    vnf_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_1:
+          - xe0
+        downlink_1:
+          - xe1
+  networks:
+    mgmt:
+      cidr: '10.0.1.0/24'
+    uplink_0:
+      cidr: '10.1.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_0:
+      cidr: '10.1.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_1:
+      cidr: '10.2.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_1:
+      cidr: '10.2.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
diff --git a/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_4.yaml b/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_4.yaml
new file mode 100644 (file)
index 0000000..edf9611
--- /dev/null
@@ -0,0 +1,190 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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.
+
+---
+schema: yardstick:task:0.1
+scenarios:
+  - type: NSPerf
+    traffic_profile: ../../traffic_profiles/ipv4_throughput-4.yaml
+    topology: acl-tg-topology-3node-4.yaml
+    nodes:
+      tg__0: tg_0.yardstick
+      tg__1: tg_1.yardstick
+      vnf__0: vnf_0.yardstick
+      vnf__1: vnf_1.yardstick
+      vnf__2: vnf_2.yardstick
+      vnf__3: vnf_3.yardstick
+    options:
+      framesize:
+        uplink: {64B: 100}
+        downlink: {64B: 100}
+      flow:
+        src_ip:
+          - {'tg__0': 'xe0'}
+          - {'tg__0': 'xe1'}
+          - {'tg__0': 'xe2'}
+          - {'tg__0': 'xe3'}
+        dst_ip:
+          - {'tg__1': 'xe0'}
+          - {'tg__1': 'xe1'}
+          - {'tg__1': 'xe2'}
+          - {'tg__1': 'xe3'}
+        count: 1
+      traffic_type: 4
+      rfc2544:
+        allowed_drop_rate: 0.0001 - 0.0001
+        correlated_traffic: true
+      vnf__0:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__1:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__2:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__3:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+    runner:
+      type: Iteration
+      iterations: 10
+      interval: 35
+context:
+  name: yardstick
+  image: yardstick-samplevnfs
+  flavor:
+    vcpus: 10
+    ram: 10240
+    disk: 6
+    extra_specs:
+      hw:cpu_sockets: 1
+      hw:cpu_cores: 10
+      hw:cpu_threads: 1
+  user: ubuntu
+  placement_groups:
+    pgrp1:
+      policy: "availability"
+  servers:
+    tg_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        uplink_1:
+          - xe1
+        uplink_2:
+          - xe2
+        uplink_3:
+          - xe3
+    tg_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        downlink_0:
+          - xe0
+        downlink_1:
+          - xe1
+        downlink_2:
+          - xe2
+        downlink_3:
+          - xe3
+    vnf_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        downlink_0:
+          - xe1
+    vnf_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_1:
+          - xe0
+        downlink_1:
+          - xe1
+    vnf_2:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_2:
+          - xe0
+        downlink_2:
+          - xe1
+    vnf_3:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_3:
+          - xe0
+        downlink_3:
+          - xe1
+  networks:
+    mgmt:
+      cidr: '10.0.1.0/24'
+    uplink_0:
+      cidr: '10.1.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_0:
+      cidr: '10.1.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_1:
+      cidr: '10.2.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_1:
+      cidr: '10.2.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_2:
+      cidr: '10.3.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_2:
+      cidr: '10.3.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_3:
+      cidr: '10.4.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_3:
+      cidr: '10.4.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
diff --git a/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_out.yaml b/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_out.yaml
new file mode 100644 (file)
index 0000000..4da95a1
--- /dev/null
@@ -0,0 +1,116 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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.
+
+---
+schema: yardstick:task:0.1
+scenarios:
+  - type: NSPerf
+    traffic_profile: ../../traffic_profiles/ipv4_throughput-{{ num_vnfs }}.yaml
+    topology: acl-tg-topology-3node-{{ num_vnfs }}.yaml
+    nodes:
+      tg__0: tg_0.yardstick
+      tg__1: tg_1.yardstick
+{% for vnf_num in range(num_vnfs|int) %}
+      vnf__{{ vnf_num }}: vnf_{{ vnf_num }}.yardstick
+{% endfor %}
+    options:
+      framesize:
+        uplink: {64B: 100}
+        downlink: {64B: 100}
+      flow:
+        src_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+          - {'tg__0': 'xe{{ vnf_num }}'}
+{% endfor %}
+        dst_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+          - {'tg__1': 'xe{{ vnf_num }}'}
+{% endfor %}
+        count: 1
+      traffic_type: 4
+      rfc2544:
+        allowed_drop_rate: 0.0001 - 0.0001
+        correlated_traffic: true
+{% for vnf_num in range(num_vnfs|int) %}
+      vnf__{{ vnf_num }}:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+{% endfor %}
+    runner:
+      type: Iteration
+      iterations: 10
+      interval: 35
+context:
+  name: yardstick
+  image: yardstick-samplevnfs
+  flavor:
+    vcpus: 10
+    ram: 10240
+    disk: 6
+    extra_specs:
+      hw:cpu_sockets: 1
+      hw:cpu_cores: 10
+      hw:cpu_threads: 1
+  user: ubuntu
+  placement_groups:
+    pgrp1:
+      policy: "availability"
+  servers:
+    tg_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+{% for vnf_num in range(num_vnfs|int) %}
+        uplink_{{ vnf_num }}:
+          - xe{{ vnf_num }}
+{% endfor %}
+    tg_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+{% for vnf_num in range(num_vnfs|int) %}
+        downlink_{{ vnf_num }}:
+          - xe{{ vnf_num }}
+{% endfor %}
+{% for vnf_num in range(num_vnfs|int) %}
+    vnf_{{ vnf_num }}:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_{{ vnf_num }}:
+          - xe0
+        downlink_{{ vnf_num }}:
+          - xe1
+{% endfor %}
+  networks:
+    mgmt:
+      cidr: '10.0.1.0/24'
+{% for vnf_num in range(num_vnfs|int) %}
+    uplink_{{ vnf_num }}:
+      cidr: '10.{{ vnf_num + 1 }}.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_{{ vnf_num }}:
+      cidr: '10.{{ vnf_num + 1 }}.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+{% endfor %}
diff --git a/samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-10.yaml b/samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-10.yaml
new file mode 100644 (file)
index 0000000..3b45d4d
--- /dev/null
@@ -0,0 +1,260 @@
+# Copyright (c) 2016 Intel Corporation
+#
+# 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.
+---
+nsd:nsd-catalog:
+  nsd:
+    - id: 10-vnf-correlated
+      name: 10-vnf-correlated
+      short-name: 10-vnf-correlated
+      description: 10-vnf-correlated
+      constituent-vnfd:
+        - member-vnf-index: '0'
+          vnfd-id-ref: tg__0
+          VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml      #VNF type
+        - member-vnf-index: '1'
+          vnfd-id-ref: tg__1
+          VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml      #VNF type
+        - member-vnf-index: '2'
+          vnfd-id-ref: vnf__0
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+        - member-vnf-index: '3'
+          vnfd-id-ref: vnf__1
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+        - member-vnf-index: '4'
+          vnfd-id-ref: vnf__2
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+        - member-vnf-index: '5'
+          vnfd-id-ref: vnf__3
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+        - member-vnf-index: '6'
+          vnfd-id-ref: vnf__4
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+        - member-vnf-index: '7'
+          vnfd-id-ref: vnf__5
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+        - member-vnf-index: '8'
+          vnfd-id-ref: vnf__6
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+        - member-vnf-index: '9'
+          vnfd-id-ref: vnf__7
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+        - member-vnf-index: '10'
+          vnfd-id-ref: vnf__8
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+        - member-vnf-index: '11'
+          vnfd-id-ref: vnf__9
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+
+      vld:
+        - id: uplink_0
+          name: "tg__0 to vnf__0 link 0"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '2'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__0
+        - id: downlink_0
+          name: "vnf__0 to tg__1 link 0"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '2'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__0
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: tg__1
+        - id: uplink_1
+          name: "tg__0 to vnf__1 link 1"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '3'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__1
+        - id: downlink_1
+          name: "vnf__1 to tg__1 link 1"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '3'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__1
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: tg__1
+        - id: uplink_2
+          name: "tg__0 to vnf__2 link 2"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe2
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '4'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__2
+        - id: downlink_2
+          name: "vnf__2 to tg__1 link 2"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '4'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__2
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe2
+              vnfd-id-ref: tg__1
+        - id: uplink_3
+          name: "tg__0 to vnf__3 link 3"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe3
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '5'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__3
+        - id: downlink_3
+          name: "vnf__3 to tg__1 link 3"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '5'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__3
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe3
+              vnfd-id-ref: tg__1
+        - id: uplink_4
+          name: "tg__0 to vnf__4 link 4"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe4
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '6'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__4
+        - id: downlink_4
+          name: "vnf__4 to tg__1 link 4"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '6'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__4
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe4
+              vnfd-id-ref: tg__1
+        - id: uplink_5
+          name: "tg__0 to vnf__5 link 5"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe5
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '7'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__5
+        - id: downlink_5
+          name: "vnf__5 to tg__1 link 5"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '7'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__5
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe5
+              vnfd-id-ref: tg__1
+        - id: uplink_6
+          name: "tg__0 to vnf__6 link 6"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe6
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '8'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__6
+        - id: downlink_6
+          name: "vnf__6 to tg__1 link 6"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '8'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__6
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe6
+              vnfd-id-ref: tg__1
+        - id: uplink_7
+          name: "tg__0 to vnf__7 link 7"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe7
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '9'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__7
+        - id: downlink_7
+          name: "vnf__7 to tg__1 link 7"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '9'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__7
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe7
+              vnfd-id-ref: tg__1
+        - id: uplink_8
+          name: "tg__0 to vnf__8 link 8"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe8
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '10'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__8
+        - id: downlink_8
+          name: "vnf__8 to tg__1 link 8"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '10'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__8
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe8
+              vnfd-id-ref: tg__1
+        - id: uplink_9
+          name: "tg__0 to vnf__9 link 9"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe9
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '11'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__9
+        - id: downlink_9
+          name: "vnf__9 to tg__1 link 9"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '11'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__9
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe9
+              vnfd-id-ref: tg__1
+
diff --git a/samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-2.yaml b/samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-2.yaml
new file mode 100644 (file)
index 0000000..a289e98
--- /dev/null
@@ -0,0 +1,76 @@
+# Copyright (c) 2016 Intel Corporation
+#
+# 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.
+---
+nsd:nsd-catalog:
+  nsd:
+    - id: 2-vnf-correlated
+      name: 2-vnf-correlated
+      short-name: 2-vnf-correlated
+      description: 2-vnf-correlated
+      constituent-vnfd:
+        - member-vnf-index: '0'
+          vnfd-id-ref: tg__0
+          VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml      #VNF type
+        - member-vnf-index: '1'
+          vnfd-id-ref: tg__1
+          VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml      #VNF type
+        - member-vnf-index: '2'
+          vnfd-id-ref: vnf__0
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+        - member-vnf-index: '3'
+          vnfd-id-ref: vnf__1
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+
+      vld:
+        - id: uplink_0
+          name: "tg__0 to vnf__0 link 0"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '2'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__0
+        - id: downlink_0
+          name: "vnf__0 to tg__1 link 0"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '2'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__0
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: tg__1
+        - id: uplink_1
+          name: "tg__0 to vnf__1 link 1"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '3'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__1
+        - id: downlink_1
+          name: "vnf__1 to tg__1 link 1"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '3'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__1
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: tg__1
+
diff --git a/samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-4.yaml b/samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-4.yaml
new file mode 100644 (file)
index 0000000..bf6431f
--- /dev/null
@@ -0,0 +1,122 @@
+# Copyright (c) 2016 Intel Corporation
+#
+# 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.
+---
+nsd:nsd-catalog:
+  nsd:
+    - id: 4-vnf-correlated
+      name: 4-vnf-correlated
+      short-name: 4-vnf-correlated
+      description: 4-vnf-correlated
+      constituent-vnfd:
+        - member-vnf-index: '0'
+          vnfd-id-ref: tg__0
+          VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml      #VNF type
+        - member-vnf-index: '1'
+          vnfd-id-ref: tg__1
+          VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml      #VNF type
+        - member-vnf-index: '2'
+          vnfd-id-ref: vnf__0
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+        - member-vnf-index: '3'
+          vnfd-id-ref: vnf__1
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+        - member-vnf-index: '4'
+          vnfd-id-ref: vnf__2
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+        - member-vnf-index: '5'
+          vnfd-id-ref: vnf__3
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+
+      vld:
+        - id: uplink_0
+          name: "tg__0 to vnf__0 link 0"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '2'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__0
+        - id: downlink_0
+          name: "vnf__0 to tg__1 link 0"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '2'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__0
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: tg__1
+        - id: uplink_1
+          name: "tg__0 to vnf__1 link 1"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '3'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__1
+        - id: downlink_1
+          name: "vnf__1 to tg__1 link 1"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '3'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__1
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: tg__1
+        - id: uplink_2
+          name: "tg__0 to vnf__2 link 2"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe2
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '4'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__2
+        - id: downlink_2
+          name: "vnf__2 to tg__1 link 2"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '4'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__2
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe2
+              vnfd-id-ref: tg__1
+        - id: uplink_3
+          name: "tg__0 to vnf__3 link 3"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe3
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '5'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__3
+        - id: downlink_3
+          name: "vnf__3 to tg__1 link 3"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '5'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__3
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe3
+              vnfd-id-ref: tg__1
+
diff --git a/samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-scale-out.yaml b/samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-scale-out.yaml
new file mode 100644 (file)
index 0000000..6a99e4e
--- /dev/null
@@ -0,0 +1,57 @@
+# Copyright (c) 2016 Intel Corporation
+#
+# 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.
+---
+nsd:nsd-catalog:
+  nsd:
+    - id: {{ num_vnfs }}-vnf-correlated
+      name: {{ num_vnfs }}-vnf-correlated
+      short-name: {{ num_vnfs }}-vnf-correlated
+      description: {{ num_vnfs }}-vnf-correlated
+      constituent-vnfd:
+        - member-vnf-index: '0'
+          vnfd-id-ref: tg__0
+          VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml      #VNF type
+        - member-vnf-index: '1'
+          vnfd-id-ref: tg__1
+          VNF model: ../../vnf_descriptors/udp_replay_vnf.yaml      #VNF type
+{% for vnf_num in range(num_vnfs|int) %}
+        - member-vnf-index: '{{ vnf_num + 2 }}'
+          vnfd-id-ref: vnf__{{ vnf_num }}
+          VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml      #VNF type
+{% endfor %}
+
+      vld:
+{% for vnf_num in range(num_vnfs|int) %}
+        - id: uplink_{{ vnf_num }}
+          name: "tg__0 to vnf__{{ vnf_num }} link {{ vnf_num }}"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '0'
+              vnfd-connection-point-ref: xe{{ vnf_num }}
+              vnfd-id-ref: tg__0
+            - member-vnf-index-ref: '{{ vnf_num + 2 }}'
+              vnfd-connection-point-ref: xe0
+              vnfd-id-ref: vnf__{{ vnf_num }}
+        - id: downlink_{{ vnf_num }}
+          name: "vnf__{{ vnf_num }} to tg__1 link {{ vnf_num }}"
+          type: ELAN
+          vnfd-connection-point-ref:
+            - member-vnf-index-ref: '{{ vnf_num + 2}}'
+              vnfd-connection-point-ref: xe1
+              vnfd-id-ref: vnf__{{ vnf_num }}
+            - member-vnf-index-ref: '1'
+              vnfd-connection-point-ref: xe{{ vnf_num }}
+              vnfd-id-ref: tg__1
+{% endfor %}
+
diff --git a/samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_10.yaml b/samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_10.yaml
new file mode 100644 (file)
index 0000000..ac0a83b
--- /dev/null
@@ -0,0 +1,370 @@
+# Copyright (c) 2016-2017 Intel Corporation
+#
+# 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.
+
+---
+schema: yardstick:task:0.1
+scenarios:
+  - type: NSPerf
+    traffic_profile: ../../traffic_profiles/ipv4_throughput_cgnapt-10.yaml
+    topology: cgnapt-vnf-topology-3node-10.yaml
+    nodes:
+      tg__0: tg_0.yardstick
+      tg__1: tg_1.yardstick
+      vnf__0: vnf_0.yardstick
+      vnf__1: vnf_1.yardstick
+      vnf__2: vnf_2.yardstick
+      vnf__3: vnf_3.yardstick
+      vnf__4: vnf_4.yardstick
+      vnf__5: vnf_5.yardstick
+      vnf__6: vnf_6.yardstick
+      vnf__7: vnf_7.yardstick
+      vnf__8: vnf_8.yardstick
+      vnf__9: vnf_9.yardstick
+    options:
+      framesize:
+        uplink: {64B: 100}
+        downlink: {64B: 100}
+      flow:
+        src_ip:
+          - {'tg__0': 'xe0'}
+          - {'tg__0': 'xe1'}
+          - {'tg__0': 'xe2'}
+          - {'tg__0': 'xe3'}
+          - {'tg__0': 'xe4'}
+          - {'tg__0': 'xe5'}
+          - {'tg__0': 'xe6'}
+          - {'tg__0': 'xe7'}
+          - {'tg__0': 'xe8'}
+          - {'tg__0': 'xe9'}
+        dst_ip:
+          - {'tg__1': 'xe0'}
+          - {'tg__1': 'xe1'}
+          - {'tg__1': 'xe2'}
+          - {'tg__1': 'xe3'}
+          - {'tg__1': 'xe4'}
+          - {'tg__1': 'xe5'}
+          - {'tg__1': 'xe6'}
+          - {'tg__1': 'xe7'}
+          - {'tg__1': 'xe8'}
+          - {'tg__1': 'xe9'}
+        count: 1
+      traffic_type: 4
+      rfc2544:
+        allowed_drop_rate: 0.0001 - 0.0001
+        correlated_traffic: true
+      vnf__0:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+      vnf__1:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+      vnf__2:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+      vnf__3:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+      vnf__4:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+      vnf__5:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+      vnf__6:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+      vnf__7:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+      vnf__8:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+      vnf__9:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+    runner:
+      type: Iteration
+      iterations: 10
+      interval: 35
+context:
+  name: yardstick
+  image: yardstick-samplevnfs
+  flavor:
+    vcpus: 10
+    ram: 10240
+    disk: 6
+    extra_specs:
+      hw:cpu_sockets: 1
+      hw:cpu_cores: 10
+      hw:cpu_threads: 1
+  user: ubuntu
+  placement_groups:
+    pgrp1:
+      policy: "availability"
+  servers:
+    tg_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        uplink_1:
+          - xe1
+        uplink_2:
+          - xe2
+        uplink_3:
+          - xe3
+        uplink_4:
+          - xe4
+        uplink_5:
+          - xe5
+        uplink_6:
+          - xe6
+        uplink_7:
+          - xe7
+        uplink_8:
+          - xe8
+        uplink_9:
+          - xe9
+    tg_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        downlink_0:
+          - xe0
+        downlink_1:
+          - xe1
+        downlink_2:
+          - xe2
+        downlink_3:
+          - xe3
+        downlink_4:
+          - xe4
+        downlink_5:
+          - xe5
+        downlink_6:
+          - xe6
+        downlink_7:
+          - xe7
+        downlink_8:
+          - xe8
+        downlink_9:
+          - xe9
+    vnf_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        downlink_0:
+          - xe1
+    vnf_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_1:
+          - xe0
+        downlink_1:
+          - xe1
+    vnf_2:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_2:
+          - xe0
+        downlink_2:
+          - xe1
+    vnf_3:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_3:
+          - xe0
+        downlink_3:
+          - xe1
+    vnf_4:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_4:
+          - xe0
+        downlink_4:
+          - xe1
+    vnf_5:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_5:
+          - xe0
+        downlink_5:
+          - xe1
+    vnf_6:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_6:
+          - xe0
+        downlink_6:
+          - xe1
+    vnf_7:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_7:
+          - xe0
+        downlink_7:
+          - xe1
+    vnf_8:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_8:
+          - xe0
+        downlink_8:
+          - xe1
+    vnf_9:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_9:
+          - xe0
+        downlink_9:
+          - xe1
+  networks:
+    mgmt:
+      cidr: '10.0.1.0/24'
+    uplink_0:
+      cidr: '10.1.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_0:
+      cidr: '10.1.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_1:
+      cidr: '10.2.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_1:
+      cidr: '10.2.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_2:
+      cidr: '10.3.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_2:
+      cidr: '10.3.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_3:
+      cidr: '10.4.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_3:
+      cidr: '10.4.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_4:
+      cidr: '10.5.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_4:
+      cidr: '10.5.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_5:
+      cidr: '10.6.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_5:
+      cidr: '10.6.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_6:
+      cidr: '10.7.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_6:
+      cidr: '10.7.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_7:
+      cidr: '10.8.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_7:
+      cidr: '10.8.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_8:
+      cidr: '10.9.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_8:
+      cidr: '10.9.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_9:
+      cidr: '10.10.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_9:
+      cidr: '10.10.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
diff --git a/samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_2.yaml b/samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_2.yaml
new file mode 100644 (file)
index 0000000..894fcce
--- /dev/null
@@ -0,0 +1,130 @@
+# Copyright (c) 2016-2017 Intel Corporation
+#
+# 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.
+
+---
+schema: yardstick:task:0.1
+scenarios:
+  - type: NSPerf
+    traffic_profile: ../../traffic_profiles/ipv4_throughput_cgnapt-2.yaml
+    topology: cgnapt-vnf-topology-3node-2.yaml
+    nodes:
+      tg__0: tg_0.yardstick
+      tg__1: tg_1.yardstick
+      vnf__0: vnf_0.yardstick
+      vnf__1: vnf_1.yardstick
+    options:
+      framesize:
+        uplink: {64B: 100}
+        downlink: {64B: 100}
+      flow:
+        src_ip:
+          - {'tg__0': 'xe0'}
+          - {'tg__0': 'xe1'}
+        dst_ip:
+          - {'tg__1': 'xe0'}
+          - {'tg__1': 'xe1'}
+        count: 1
+      traffic_type: 4
+      rfc2544:
+        allowed_drop_rate: 0.0001 - 0.0001
+        correlated_traffic: true
+      vnf__0:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+      vnf__1:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+    runner:
+      type: Iteration
+      iterations: 10
+      interval: 35
+context:
+  name: yardstick
+  image: yardstick-samplevnfs
+  flavor:
+    vcpus: 10
+    ram: 10240
+    disk: 6
+    extra_specs:
+      hw:cpu_sockets: 1
+      hw:cpu_cores: 10
+      hw:cpu_threads: 1
+  user: ubuntu
+  placement_groups:
+    pgrp1:
+      policy: "availability"
+  servers:
+    tg_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        uplink_1:
+          - xe1
+    tg_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        downlink_0:
+          - xe0
+        downlink_1:
+          - xe1
+    vnf_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        downlink_0:
+          - xe1
+    vnf_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_1:
+          - xe0
+        downlink_1:
+          - xe1
+  networks:
+    mgmt:
+      cidr: '10.0.1.0/24'
+    uplink_0:
+      cidr: '10.1.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_0:
+      cidr: '10.1.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_1:
+      cidr: '10.2.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_1:
+      cidr: '10.2.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
diff --git a/samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_4.yaml b/samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_4.yaml
new file mode 100644 (file)
index 0000000..ffdec99
--- /dev/null
@@ -0,0 +1,190 @@
+# Copyright (c) 2016-2017 Intel Corporation
+#
+# 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.
+
+---
+schema: yardstick:task:0.1
+scenarios:
+  - type: NSPerf
+    traffic_profile: ../../traffic_profiles/ipv4_throughput_cgnapt-4.yaml
+    topology: cgnapt-vnf-topology-3node-4.yaml
+    nodes:
+      tg__0: tg_0.yardstick
+      tg__1: tg_1.yardstick
+      vnf__0: vnf_0.yardstick
+      vnf__1: vnf_1.yardstick
+      vnf__2: vnf_2.yardstick
+      vnf__3: vnf_3.yardstick
+    options:
+      framesize:
+        uplink: {64B: 100}
+        downlink: {64B: 100}
+      flow:
+        src_ip:
+          - {'tg__0': 'xe0'}
+          - {'tg__0': 'xe1'}
+          - {'tg__0': 'xe2'}
+          - {'tg__0': 'xe3'}
+        dst_ip:
+          - {'tg__1': 'xe0'}
+          - {'tg__1': 'xe1'}
+          - {'tg__1': 'xe2'}
+          - {'tg__1': 'xe3'}
+        count: 1
+      traffic_type: 4
+      rfc2544:
+        allowed_drop_rate: 0.0001 - 0.0001
+        correlated_traffic: true
+      vnf__0:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+      vnf__1:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+      vnf__2:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+      vnf__3:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+    runner:
+      type: Iteration
+      iterations: 10
+      interval: 35
+context:
+  name: yardstick
+  image: yardstick-samplevnfs
+  flavor:
+    vcpus: 10
+    ram: 10240
+    disk: 6
+    extra_specs:
+      hw:cpu_sockets: 1
+      hw:cpu_cores: 10
+      hw:cpu_threads: 1
+  user: ubuntu
+  placement_groups:
+    pgrp1:
+      policy: "availability"
+  servers:
+    tg_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        uplink_1:
+          - xe1
+        uplink_2:
+          - xe2
+        uplink_3:
+          - xe3
+    tg_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        downlink_0:
+          - xe0
+        downlink_1:
+          - xe1
+        downlink_2:
+          - xe2
+        downlink_3:
+          - xe3
+    vnf_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        downlink_0:
+          - xe1
+    vnf_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_1:
+          - xe0
+        downlink_1:
+          - xe1
+    vnf_2:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_2:
+          - xe0
+        downlink_2:
+          - xe1
+    vnf_3:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_3:
+          - xe0
+        downlink_3:
+          - xe1
+  networks:
+    mgmt:
+      cidr: '10.0.1.0/24'
+    uplink_0:
+      cidr: '10.1.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_0:
+      cidr: '10.1.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_1:
+      cidr: '10.2.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_1:
+      cidr: '10.2.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_2:
+      cidr: '10.3.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_2:
+      cidr: '10.3.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_3:
+      cidr: '10.4.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_3:
+      cidr: '10.4.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
diff --git a/samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_out.yaml b/samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_out.yaml
new file mode 100644 (file)
index 0000000..5c884f2
--- /dev/null
@@ -0,0 +1,116 @@
+# Copyright (c) 2016-2017 Intel Corporation
+#
+# 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.
+
+---
+schema: yardstick:task:0.1
+scenarios:
+  - type: NSPerf
+    traffic_profile: ../../traffic_profiles/ipv4_throughput_cgnapt-{{ num_vnfs }}.yaml
+    topology: cgnapt-vnf-topology-3node-{{ num_vnfs }}.yaml
+    nodes:
+      tg__0: tg_0.yardstick
+      tg__1: tg_1.yardstick
+{% for vnf_num in range(num_vnfs|int) %}
+      vnf__{{ vnf_num }}: vnf_{{ vnf_num }}.yardstick
+{% endfor %}
+    options:
+      framesize:
+        uplink: {64B: 100}
+        downlink: {64B: 100}
+      flow:
+        src_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+          - {'tg__0': 'xe{{ vnf_num }}'}
+{% endfor %}
+        dst_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+          - {'tg__1': 'xe{{ vnf_num }}'}
+{% endfor %}
+        count: 1
+      traffic_type: 4
+      rfc2544:
+        allowed_drop_rate: 0.0001 - 0.0001
+        correlated_traffic: true
+{% for vnf_num in range(num_vnfs|int) %}
+      vnf__{{ vnf_num }}:
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+        napt: 'dynamic'
+{% endfor %}
+    runner:
+      type: Iteration
+      iterations: 10
+      interval: 35
+context:
+  name: yardstick
+  image: yardstick-samplevnfs
+  flavor:
+    vcpus: 10
+    ram: 10240
+    disk: 6
+    extra_specs:
+      hw:cpu_sockets: 1
+      hw:cpu_cores: 10
+      hw:cpu_threads: 1
+  user: ubuntu
+  placement_groups:
+    pgrp1:
+      policy: "availability"
+  servers:
+    tg_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+{% for vnf_num in range(num_vnfs|int) %}
+        uplink_{{ vnf_num }}:
+          - xe{{ vnf_num }}
+{% endfor %}
+    tg_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+{% for vnf_num in range(num_vnfs|int) %}
+        downlink_{{ vnf_num }}:
+          - xe{{ vnf_num }}
+{% endfor %}
+{% for vnf_num in range(num_vnfs|int) %}
+    vnf_{{ vnf_num }}:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_{{ vnf_num }}:
+          - xe0
+        downlink_{{ vnf_num }}:
+          - xe1
+{% endfor %}
+  networks:
+    mgmt:
+      cidr: '10.0.1.0/24'
+{% for vnf_num in range(num_vnfs|int) %}
+    uplink_{{ vnf_num }}:
+      cidr: '10.{{ vnf_num + 1 }}.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_{{ vnf_num }}:
+      cidr: '10.{{ vnf_num + 1 }}.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+{% endfor %}
diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml
new file mode 100644 (file)
index 0000000..cf60ba1
--- /dev/null
@@ -0,0 +1,371 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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.
+
+---
+schema: yardstick:task:0.1
+scenarios:
+- type: NSPerf
+  traffic_profile: ../../traffic_profiles/ipv4_throughput-10.yaml
+  topology: vfw-tg-topology-3node-10.yaml
+  nodes:
+    tg__0: tg_0.yardstick
+    tg__1: tg_1.yardstick
+    vnf__0: vnf_0.yardstick
+    vnf__1: vnf_1.yardstick
+    vnf__2: vnf_2.yardstick
+    vnf__3: vnf_3.yardstick
+    vnf__4: vnf_4.yardstick
+    vnf__5: vnf_5.yardstick
+    vnf__6: vnf_6.yardstick
+    vnf__7: vnf_7.yardstick
+    vnf__8: vnf_8.yardstick
+    vnf__9: vnf_9.yardstick
+    options:
+      framesize:
+        uplink: {64B: 100}
+        downlink: {64B: 100}
+      flow:
+        src_ip:
+          - {'tg__0': 'xe0'}
+          - {'tg__0': 'xe1'}
+          - {'tg__0': 'xe2'}
+          - {'tg__0': 'xe3'}
+          - {'tg__0': 'xe4'}
+          - {'tg__0': 'xe5'}
+          - {'tg__0': 'xe6'}
+          - {'tg__0': 'xe7'}
+          - {'tg__0': 'xe8'}
+          - {'tg__0': 'xe9'}
+        dst_ip:
+          - {'tg__1': 'xe0'}
+          - {'tg__1': 'xe1'}
+          - {'tg__1': 'xe2'}
+          - {'tg__1': 'xe3'}
+          - {'tg__1': 'xe4'}
+          - {'tg__1': 'xe5'}
+          - {'tg__1': 'xe6'}
+          - {'tg__1': 'xe7'}
+          - {'tg__1': 'xe8'}
+          - {'tg__1': 'xe9'}
+        count: 1
+      traffic_type: 4
+      rfc2544:
+        allowed_drop_rate: 0.0001 - 0.0001
+        correlated_traffic: true
+      vnf__0:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__1:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__2:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__3:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__4:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__5:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__6:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__7:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__8:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__9:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+    runner:
+      type: Iteration
+      iterations: 10
+      interval: 35
+context:
+  # put node context first, so we don't HEAT deploy if node has errors
+  name: yardstick
+  image: yardstick-samplevnfs
+  flavor:
+    vcpus: 10
+    ram: 20480
+    disk: 6
+    extra_specs:
+      hw:cpu_sockets: 1
+      hw:cpu_cores: 10
+      hw:cpu_threads: 1
+  user: ubuntu
+  placement_groups:
+    pgrp1:
+      policy: "availability"
+  servers:
+    tg_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        uplink_1:
+          - xe1
+        uplink_2:
+          - xe2
+        uplink_3:
+          - xe3
+        uplink_4:
+          - xe4
+        uplink_5:
+          - xe5
+        uplink_6:
+          - xe6
+        uplink_7:
+          - xe7
+        uplink_8:
+          - xe8
+        uplink_9:
+          - xe9
+    tg_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        downlink_0:
+          - xe0
+        downlink_1:
+          - xe1
+        downlink_2:
+          - xe2
+        downlink_3:
+          - xe3
+        downlink_4:
+          - xe4
+        downlink_5:
+          - xe5
+        downlink_6:
+          - xe6
+        downlink_7:
+          - xe7
+        downlink_8:
+          - xe8
+        downlink_9:
+          - xe9
+    vnf_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        downlink_0:
+          - xe1
+    vnf_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_1:
+          - xe0
+        downlink_1:
+          - xe1
+    vnf_2:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_2:
+          - xe0
+        downlink_2:
+          - xe1
+    vnf_3:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_3:
+          - xe0
+        downlink_3:
+          - xe1
+    vnf_4:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_4:
+          - xe0
+        downlink_4:
+          - xe1
+    vnf_5:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_5:
+          - xe0
+        downlink_5:
+          - xe1
+    vnf_6:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_6:
+          - xe0
+        downlink_6:
+          - xe1
+    vnf_7:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_7:
+          - xe0
+        downlink_7:
+          - xe1
+    vnf_8:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_8:
+          - xe0
+        downlink_8:
+          - xe1
+    vnf_9:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_9:
+          - xe0
+        downlink_9:
+          - xe1
+  networks:
+    mgmt:
+      cidr: '10.0.1.0/24'
+    uplink_0:
+      cidr: '10.1.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_0:
+      cidr: '10.1.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_1:
+      cidr: '10.2.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_1:
+      cidr: '10.2.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_2:
+      cidr: '10.3.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_2:
+      cidr: '10.3.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_3:
+      cidr: '10.4.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_3:
+      cidr: '10.4.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_4:
+      cidr: '10.5.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_4:
+      cidr: '10.5.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_5:
+      cidr: '10.6.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_5:
+      cidr: '10.6.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_6:
+      cidr: '10.7.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_6:
+      cidr: '10.7.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_7:
+      cidr: '10.8.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_7:
+      cidr: '10.8.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_8:
+      cidr: '10.9.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_8:
+      cidr: '10.9.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_9:
+      cidr: '10.10.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_9:
+      cidr: '10.10.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_2.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_2.yaml
new file mode 100644 (file)
index 0000000..b12a62a
--- /dev/null
@@ -0,0 +1,131 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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.
+
+---
+schema: yardstick:task:0.1
+scenarios:
+- type: NSPerf
+  traffic_profile: ../../traffic_profiles/ipv4_throughput-2.yaml
+  topology: vfw-tg-topology-3node-2.yaml
+  nodes:
+    tg__0: tg_0.yardstick
+    tg__1: tg_1.yardstick
+    vnf__0: vnf_0.yardstick
+    vnf__1: vnf_1.yardstick
+    options:
+      framesize:
+        uplink: {64B: 100}
+        downlink: {64B: 100}
+      flow:
+        src_ip:
+          - {'tg__0': 'xe0'}
+          - {'tg__0': 'xe1'}
+        dst_ip:
+          - {'tg__1': 'xe0'}
+          - {'tg__1': 'xe1'}
+        count: 1
+      traffic_type: 4
+      rfc2544:
+        allowed_drop_rate: 0.0001 - 0.0001
+        correlated_traffic: true
+      vnf__0:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__1:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+    runner:
+      type: Iteration
+      iterations: 10
+      interval: 35
+context:
+  # put node context first, so we don't HEAT deploy if node has errors
+  name: yardstick
+  image: yardstick-samplevnfs
+  flavor:
+    vcpus: 10
+    ram: 20480
+    disk: 6
+    extra_specs:
+      hw:cpu_sockets: 1
+      hw:cpu_cores: 10
+      hw:cpu_threads: 1
+  user: ubuntu
+  placement_groups:
+    pgrp1:
+      policy: "availability"
+  servers:
+    tg_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        uplink_1:
+          - xe1
+    tg_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        downlink_0:
+          - xe0
+        downlink_1:
+          - xe1
+    vnf_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        downlink_0:
+          - xe1
+    vnf_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_1:
+          - xe0
+        downlink_1:
+          - xe1
+  networks:
+    mgmt:
+      cidr: '10.0.1.0/24'
+    uplink_0:
+      cidr: '10.1.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_0:
+      cidr: '10.1.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_1:
+      cidr: '10.2.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_1:
+      cidr: '10.2.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml
new file mode 100644 (file)
index 0000000..64633eb
--- /dev/null
@@ -0,0 +1,191 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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.
+
+---
+schema: yardstick:task:0.1
+scenarios:
+- type: NSPerf
+  traffic_profile: ../../traffic_profiles/ipv4_throughput-4.yaml
+  topology: vfw-tg-topology-3node-4.yaml
+  nodes:
+    tg__0: tg_0.yardstick
+    tg__1: tg_1.yardstick
+    vnf__0: vnf_0.yardstick
+    vnf__1: vnf_1.yardstick
+    vnf__2: vnf_2.yardstick
+    vnf__3: vnf_3.yardstick
+    options:
+      framesize:
+        uplink: {64B: 100}
+        downlink: {64B: 100}
+      flow:
+        src_ip:
+          - {'tg__0': 'xe0'}
+          - {'tg__0': 'xe1'}
+          - {'tg__0': 'xe2'}
+          - {'tg__0': 'xe3'}
+        dst_ip:
+          - {'tg__1': 'xe0'}
+          - {'tg__1': 'xe1'}
+          - {'tg__1': 'xe2'}
+          - {'tg__1': 'xe3'}
+        count: 1
+      traffic_type: 4
+      rfc2544:
+        allowed_drop_rate: 0.0001 - 0.0001
+        correlated_traffic: true
+      vnf__0:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__1:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__2:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+      vnf__3:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+    runner:
+      type: Iteration
+      iterations: 10
+      interval: 35
+context:
+  # put node context first, so we don't HEAT deploy if node has errors
+  name: yardstick
+  image: yardstick-samplevnfs
+  flavor:
+    vcpus: 10
+    ram: 20480
+    disk: 6
+    extra_specs:
+      hw:cpu_sockets: 1
+      hw:cpu_cores: 10
+      hw:cpu_threads: 1
+  user: ubuntu
+  placement_groups:
+    pgrp1:
+      policy: "availability"
+  servers:
+    tg_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        uplink_1:
+          - xe1
+        uplink_2:
+          - xe2
+        uplink_3:
+          - xe3
+    tg_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        downlink_0:
+          - xe0
+        downlink_1:
+          - xe1
+        downlink_2:
+          - xe2
+        downlink_3:
+          - xe3
+    vnf_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_0:
+          - xe0
+        downlink_0:
+          - xe1
+    vnf_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_1:
+          - xe0
+        downlink_1:
+          - xe1
+    vnf_2:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_2:
+          - xe0
+        downlink_2:
+          - xe1
+    vnf_3:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_3:
+          - xe0
+        downlink_3:
+          - xe1
+  networks:
+    mgmt:
+      cidr: '10.0.1.0/24'
+    uplink_0:
+      cidr: '10.1.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_0:
+      cidr: '10.1.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_1:
+      cidr: '10.2.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_1:
+      cidr: '10.2.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_2:
+      cidr: '10.3.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_2:
+      cidr: '10.3.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    uplink_3:
+      cidr: '10.4.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_3:
+      cidr: '10.4.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
diff --git a/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml
new file mode 100644 (file)
index 0000000..767ecbc
--- /dev/null
@@ -0,0 +1,117 @@
+# Copyright (c) 2017 Intel Corporation
+#
+# 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.
+
+---
+schema: yardstick:task:0.1
+scenarios:
+- type: NSPerf
+  traffic_profile: ../../traffic_profiles/ipv4_throughput-{{ num_vnfs }}.yaml
+  topology: vfw-tg-topology-3node-{{ num_vnfs }}.yaml
+  nodes:
+    tg__0: tg_0.yardstick
+    tg__1: tg_1.yardstick
+{% for vnf_num in range(num_vnfs|int) %}
+    vnf__{{ vnf_num }}: vnf_{{ vnf_num }}.yardstick
+{% endfor %}
+    options:
+      framesize:
+        uplink: {64B: 100}
+        downlink: {64B: 100}
+      flow:
+        src_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+          - {'tg__0': 'xe{{ vnf_num }}'}
+{% endfor %}
+        dst_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+          - {'tg__1': 'xe{{ vnf_num }}'}
+{% endfor %}
+        count: 1
+      traffic_type: 4
+      rfc2544:
+        allowed_drop_rate: 0.0001 - 0.0001
+        correlated_traffic: true
+{% for vnf_num in range(num_vnfs|int) %}
+      vnf__{{ vnf_num }}:
+        rules: acl_1rule.yaml
+        vnf_config: {lb_config: 'SW', lb_count: 1, worker_config: '1C/1T', worker_threads: 1}
+{% endfor %}
+    runner:
+      type: Iteration
+      iterations: 10
+      interval: 35
+context:
+  # put node context first, so we don't HEAT deploy if node has errors
+  name: yardstick
+  image: yardstick-samplevnfs
+  flavor:
+    vcpus: 10
+    ram: 20480
+    disk: 6
+    extra_specs:
+      hw:cpu_sockets: 1
+      hw:cpu_cores: 10
+      hw:cpu_threads: 1
+  user: ubuntu
+  placement_groups:
+    pgrp1:
+      policy: "availability"
+  servers:
+    tg_0:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+{% for vnf_num in range(num_vnfs|int) %}
+        uplink_{{ vnf_num }}:
+          - xe{{ vnf_num }}
+{% endfor %}
+    tg_1:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+{% for vnf_num in range(num_vnfs|int) %}
+        downlink_{{ vnf_num }}:
+          - xe{{ vnf_num }}
+{% endfor %}
+{% for vnf_num in range(num_vnfs|int) %}
+    vnf_{{ vnf_num }}:
+      floating_ip: true
+      placement: "pgrp1"
+      network_ports:
+        mgmt:
+          - mgmt
+        uplink_{{ vnf_num }}:
+          - xe0
+        downlink_{{ vnf_num }}:
+          - xe1
+{% endfor %}
+  networks:
+    mgmt:
+      cidr: '10.0.1.0/24'
+{% for vnf_num in range(num_vnfs|int) %}
+    uplink_{{ vnf_num }}:
+      cidr: '10.{{ vnf_num + 1 }}.0.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+    downlink_{{ vnf_num }}:
+      cidr: '10.{{ vnf_num + 1 }}.1.0/24'
+      gateway_ip: 'null'
+      port_security_enabled: False
+      enable_dhcp: 'false'
+{% endfor %}
diff --git a/samples/vnf_samples/traffic_profiles/ipv4_throughput-10.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput-10.yaml
new file mode 100644 (file)
index 0000000..f862abd
--- /dev/null
@@ -0,0 +1,558 @@
+# Copyright (c) 2016-2017 Intel Corporation
+#
+# 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.
+
+# flow definition for ACL tests - 1K flows - ipv4 only
+#
+# the number of flows defines the widest range of parameters
+# for example if srcip_range=1.0.0.1-1.0.0.255 and dst_ip_range=10.0.0.1-10.0.1.255
+# and it should define only 16 flows
+#
+# there is assumption that packets generated will have a random sequences of following addresses pairs
+# in the packets
+# 1. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+# 2. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+# ...
+# 512. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+#
+# not all combination should be filled
+# Any other field with random range will be added to flow definition
+#
+# the example.yaml provides all possibilities for traffic generation
+#
+# the profile defines a public and private side to make limited traffic correlation
+# between private and public side same way as it is made by IXIA solution.
+#
+---
+schema: "nsb:traffic_profile:0.1"
+
+# This file is a template, it will be filled with values from tc.yaml before passing to the traffic generator
+
+name: rfc2544
+description: Traffic profile to run RFC2544 latency
+traffic_profile:
+  traffic_type: RFC2544Profile # defines traffic behavior - constant or look for highest possible throughput
+  frame_rate: 100  # pc of linerate
+  # that specifies a range (e.g. ipv4 address, port)
+
+
+uplink_0:
+  ipv4:
+    id: 1
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_0', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_0', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_0', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_0', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_0:
+  ipv4:
+    id: 2
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_0', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_0', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_0', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_0', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_1:
+  ipv4:
+    id: 3
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_1', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_1', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_1', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_1', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_1:
+  ipv4:
+    id: 4
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_1', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_1', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_1', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_1', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_2:
+  ipv4:
+    id: 5
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_2', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_2', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_2', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_2', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_2:
+  ipv4:
+    id: 6
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_2', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_2', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_2', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_2', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_3:
+  ipv4:
+    id: 7
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_3', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_3', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_3', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_3', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_3:
+  ipv4:
+    id: 8
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_3', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_3', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_3', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_3', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_4:
+  ipv4:
+    id: 9
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_4', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_4', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_4', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_4', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_4:
+  ipv4:
+    id: 10
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_4', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_4', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_4', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_4', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_5:
+  ipv4:
+    id: 11
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_5', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_5', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_5', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_5', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_5:
+  ipv4:
+    id: 12
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_5', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_5', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_5', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_5', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_6:
+  ipv4:
+    id: 13
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_6', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_6', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_6', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_6', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_6:
+  ipv4:
+    id: 14
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_6', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_6', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_6', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_6', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_7:
+  ipv4:
+    id: 15
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_7', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_7', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_7', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_7', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_7:
+  ipv4:
+    id: 16
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_7', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_7', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_7', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_7', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_8:
+  ipv4:
+    id: 17
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_8', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_8', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_8', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_8', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_8:
+  ipv4:
+    id: 18
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_8', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_8', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_8', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_8', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_9:
+  ipv4:
+    id: 19
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_9', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_9', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_9', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_9', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_9:
+  ipv4:
+    id: 20
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_9', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_9', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_9', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_9', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
diff --git a/samples/vnf_samples/traffic_profiles/ipv4_throughput-2.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput-2.yaml
new file mode 100644 (file)
index 0000000..328e76f
--- /dev/null
@@ -0,0 +1,150 @@
+# Copyright (c) 2016-2017 Intel Corporation
+#
+# 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.
+
+# flow definition for ACL tests - 1K flows - ipv4 only
+#
+# the number of flows defines the widest range of parameters
+# for example if srcip_range=1.0.0.1-1.0.0.255 and dst_ip_range=10.0.0.1-10.0.1.255
+# and it should define only 16 flows
+#
+# there is assumption that packets generated will have a random sequences of following addresses pairs
+# in the packets
+# 1. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+# 2. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+# ...
+# 512. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+#
+# not all combination should be filled
+# Any other field with random range will be added to flow definition
+#
+# the example.yaml provides all possibilities for traffic generation
+#
+# the profile defines a public and private side to make limited traffic correlation
+# between private and public side same way as it is made by IXIA solution.
+#
+---
+schema: "nsb:traffic_profile:0.1"
+
+# This file is a template, it will be filled with values from tc.yaml before passing to the traffic generator
+
+name: rfc2544
+description: Traffic profile to run RFC2544 latency
+traffic_profile:
+  traffic_type: RFC2544Profile # defines traffic behavior - constant or look for highest possible throughput
+  frame_rate: 100  # pc of linerate
+  # that specifies a range (e.g. ipv4 address, port)
+
+
+uplink_0:
+  ipv4:
+    id: 1
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_0', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_0', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_0', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_0', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_0:
+  ipv4:
+    id: 2
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_0', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_0', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_0', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_0', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_1:
+  ipv4:
+    id: 3
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_1', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_1', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_1', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_1', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_1:
+  ipv4:
+    id: 4
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_1', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_1', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_1', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_1', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
diff --git a/samples/vnf_samples/traffic_profiles/ipv4_throughput-4.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput-4.yaml
new file mode 100644 (file)
index 0000000..c03b28d
--- /dev/null
@@ -0,0 +1,252 @@
+# Copyright (c) 2016-2017 Intel Corporation
+#
+# 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.
+
+# flow definition for ACL tests - 1K flows - ipv4 only
+#
+# the number of flows defines the widest range of parameters
+# for example if srcip_range=1.0.0.1-1.0.0.255 and dst_ip_range=10.0.0.1-10.0.1.255
+# and it should define only 16 flows
+#
+# there is assumption that packets generated will have a random sequences of following addresses pairs
+# in the packets
+# 1. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+# 2. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+# ...
+# 512. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+#
+# not all combination should be filled
+# Any other field with random range will be added to flow definition
+#
+# the example.yaml provides all possibilities for traffic generation
+#
+# the profile defines a public and private side to make limited traffic correlation
+# between private and public side same way as it is made by IXIA solution.
+#
+---
+schema: "nsb:traffic_profile:0.1"
+
+# This file is a template, it will be filled with values from tc.yaml before passing to the traffic generator
+
+name: rfc2544
+description: Traffic profile to run RFC2544 latency
+traffic_profile:
+  traffic_type: RFC2544Profile # defines traffic behavior - constant or look for highest possible throughput
+  frame_rate: 100  # pc of linerate
+  # that specifies a range (e.g. ipv4 address, port)
+
+
+uplink_0:
+  ipv4:
+    id: 1
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_0', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_0', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_0', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_0', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_0:
+  ipv4:
+    id: 2
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_0', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_0', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_0', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_0', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_1:
+  ipv4:
+    id: 3
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_1', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_1', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_1', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_1', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_1:
+  ipv4:
+    id: 4
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_1', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_1', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_1', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_1', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_2:
+  ipv4:
+    id: 5
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_2', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_2', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_2', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_2', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_2:
+  ipv4:
+    id: 6
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_2', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_2', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_2', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_2', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_3:
+  ipv4:
+    id: 7
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_3', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_3', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_3', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_3', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_3:
+  ipv4:
+    id: 8
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_3', '90.90.1.1-90.90.255.255') }}"
+      dstip4: "{{get(flow, 'flow.src_ip_3', '1.1.1.1-1.1.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_3', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_3', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
index dbf366f..73c4109 100644 (file)
@@ -87,6 +87,7 @@ downlink_[[ vnf_num ]]:
         1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
         1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
         1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
     outer_l3v4:
       proto: "udp"
       srcip4: "{{get(flow, 'flow.dst_ip_[[ vnf_num ]]', '90.90.1.1-90.90.255.255') }}"
diff --git a/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-10.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-10.yaml
new file mode 100644 (file)
index 0000000..80d0872
--- /dev/null
@@ -0,0 +1,538 @@
+# Copyright (c) 2016-2017 Intel Corporation
+#
+# 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.
+
+# flow definition for ACL tests - 1K flows - ipv4 only
+#
+# the number of flows defines the widest range of parameters
+# for example if srcip_range=1.0.0.1-1.0.0.255 and dst_ip_range=10.0.0.1-10.0.1.255
+# and it should define only 16 flows
+#
+# there is assumption that packets generated will have a random sequences of following addresses pairs
+# in the packets
+# 1. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+# 2. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+# ...
+# 512. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+#
+# not all combination should be filled
+# Any other field with random range will be added to flow definition
+#
+# the example.yaml provides all possibilities for traffic generation
+#
+# the profile defines a public and private side to make limited traffic correlation
+# between private and public side same way as it is made by IXIA solution.
+#
+---
+schema: "nsb:traffic_profile:0.1"
+
+# This file is a template, it will be filled with values from tc.yaml before passing to the traffic generator
+
+name: rfc2544
+description: Traffic profile to run RFC2544 latency
+traffic_profile:
+  traffic_type: RFC2544Profile # defines traffic behavior - constant or look for highest possible throughput
+  frame_rate: 100  # pc of linerate
+  # that specifies a range (e.g. ipv4 address, port)
+
+
+uplink_0:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_0', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_0', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_0', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_0', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_0:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_0', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_0', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_0', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_0', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_1:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_1', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_1', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_1', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_1', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_1:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_1', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_1', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_1', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_1', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_2:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_2', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_2', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_2', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_2', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_2:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_2', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_2', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_2', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_2', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_3:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_3', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_3', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_3', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_3', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_3:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_3', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_3', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_3', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_3', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_4:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_4', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_4', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_4', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_4', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_4:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_4', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_4', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_4', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_4', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_5:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_5', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_5', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_5', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_5', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_5:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_5', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_5', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_5', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_5', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_6:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_6', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_6', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_6', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_6', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_6:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_6', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_6', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_6', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_6', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_7:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_7', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_7', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_7', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_7', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_7:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_7', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_7', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_7', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_7', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_8:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_8', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_8', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_8', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_8', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_8:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_8', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_8', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_8', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_8', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_9:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_9', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_9', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_9', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_9', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_9:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_9', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_9', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_9', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_9', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
diff --git a/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-2.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-2.yaml
new file mode 100644 (file)
index 0000000..d6c9164
--- /dev/null
@@ -0,0 +1,146 @@
+# Copyright (c) 2016-2017 Intel Corporation
+#
+# 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.
+
+# flow definition for ACL tests - 1K flows - ipv4 only
+#
+# the number of flows defines the widest range of parameters
+# for example if srcip_range=1.0.0.1-1.0.0.255 and dst_ip_range=10.0.0.1-10.0.1.255
+# and it should define only 16 flows
+#
+# there is assumption that packets generated will have a random sequences of following addresses pairs
+# in the packets
+# 1. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+# 2. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+# ...
+# 512. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+#
+# not all combination should be filled
+# Any other field with random range will be added to flow definition
+#
+# the example.yaml provides all possibilities for traffic generation
+#
+# the profile defines a public and private side to make limited traffic correlation
+# between private and public side same way as it is made by IXIA solution.
+#
+---
+schema: "nsb:traffic_profile:0.1"
+
+# This file is a template, it will be filled with values from tc.yaml before passing to the traffic generator
+
+name: rfc2544
+description: Traffic profile to run RFC2544 latency
+traffic_profile:
+  traffic_type: RFC2544Profile # defines traffic behavior - constant or look for highest possible throughput
+  frame_rate: 100  # pc of linerate
+  # that specifies a range (e.g. ipv4 address, port)
+
+
+uplink_0:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_0', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_0', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_0', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_0', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_0:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_0', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_0', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_0', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_0', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_1:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_1', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_1', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_1', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_1', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_1:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_1', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_1', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_1', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_1', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
diff --git a/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-4.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-4.yaml
new file mode 100644 (file)
index 0000000..55610b0
--- /dev/null
@@ -0,0 +1,244 @@
+# Copyright (c) 2016-2017 Intel Corporation
+#
+# 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.
+
+# flow definition for ACL tests - 1K flows - ipv4 only
+#
+# the number of flows defines the widest range of parameters
+# for example if srcip_range=1.0.0.1-1.0.0.255 and dst_ip_range=10.0.0.1-10.0.1.255
+# and it should define only 16 flows
+#
+# there is assumption that packets generated will have a random sequences of following addresses pairs
+# in the packets
+# 1. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+# 2. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+# ...
+# 512. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+#
+# not all combination should be filled
+# Any other field with random range will be added to flow definition
+#
+# the example.yaml provides all possibilities for traffic generation
+#
+# the profile defines a public and private side to make limited traffic correlation
+# between private and public side same way as it is made by IXIA solution.
+#
+---
+schema: "nsb:traffic_profile:0.1"
+
+# This file is a template, it will be filled with values from tc.yaml before passing to the traffic generator
+
+name: rfc2544
+description: Traffic profile to run RFC2544 latency
+traffic_profile:
+  traffic_type: RFC2544Profile # defines traffic behavior - constant or look for highest possible throughput
+  frame_rate: 100  # pc of linerate
+  # that specifies a range (e.g. ipv4 address, port)
+
+
+uplink_0:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_0', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_0', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_0', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_0', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_0:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_0', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_0', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_0', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_0', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_1:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_1', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_1', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_1', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_1', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_1:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_1', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_1', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_1', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_1', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_2:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_2', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_2', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_2', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_2', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_2:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_2', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_2', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_2', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_2', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+uplink_3:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_3', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_3', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_3', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_3', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_3:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_3', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_3', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_3', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_3', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
diff --git a/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-scale-out.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-scale-out.yaml
new file mode 100644 (file)
index 0000000..d455bcc
--- /dev/null
@@ -0,0 +1,100 @@
+#jinja2:variable_start_string:'[[', variable_end_string:']]', block_start_string:'[%', block_end_string:'%]'
+# Copyright (c) 2016-2017 Intel Corporation
+#
+# 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.
+
+# flow definition for ACL tests - 1K flows - ipv4 only
+#
+# the number of flows defines the widest range of parameters
+# for example if srcip_range=1.0.0.1-1.0.0.255 and dst_ip_range=10.0.0.1-10.0.1.255
+# and it should define only 16 flows
+#
+# there is assumption that packets generated will have a random sequences of following addresses pairs
+# in the packets
+# 1. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+# 2. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+# ...
+# 512. src=1.x.x.x(x.x.x =random from 1..255) dst=10.x.x.x (random from 1..512)
+#
+# not all combination should be filled
+# Any other field with random range will be added to flow definition
+#
+# the example.yaml provides all possibilities for traffic generation
+#
+# the profile defines a public and private side to make limited traffic correlation
+# between private and public side same way as it is made by IXIA solution.
+#
+---
+schema: "nsb:traffic_profile:0.1"
+
+# This file is a template, it will be filled with values from tc.yaml before passing to the traffic generator
+
+name: rfc2544
+description: Traffic profile to run RFC2544 latency
+traffic_profile:
+  traffic_type: RFC2544Profile # defines traffic behavior - constant or look for highest possible throughput
+  frame_rate: 100  # pc of linerate
+  # that specifies a range (e.g. ipv4 address, port)
+
+
+[% for vnf_num in range(num_vnfs|int) %]
+uplink_[[ vnf_num ]]:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.uplink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.uplink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.uplink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.uplink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.uplink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}"
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.src_ip_[[ vnf_num ]]', '1.1.1.1-1.1.255.255') }}"
+      dstip4: "{{get(flow, 'flow.dst_ip_[[ vnf_num ]]', '90.90.1.1-90.90.255.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.src_port_[[ vnf_num ]]', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.dst_port_[[ vnf_num ]]', '2001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+downlink_[[ vnf_num ]]:
+  ipv4:
+    outer_l2:
+      framesize:
+        64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
+        128B: "{{ get(imix, 'imix.downlink.128B', '0') }}"
+        256B: "{{ get(imix, 'imix.downlink.256B', '0') }}"
+        373b: "{{ get(imix, 'imix.downlink.373B', '0') }}"
+        512B: "{{ get(imix, 'imix.downlink.512B', '0') }}"
+        570B: "{{get(imix, 'imix.downlink.570B', '0') }}"
+        1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}"
+        1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}"
+        1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}"
+
+    outer_l3v4:
+      proto: "udp"
+      srcip4: "{{get(flow, 'flow.dst_ip_[[ vnf_num ]]', '10.0.3.1-10.0.3.255') }}"
+      dstip4: "{{get(flow, 'flow.downlink_[[ vnf_num ]]', '10.0.2.1-10.0.2.255') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+      ttl: 32
+      dscp: 0
+    outer_l4:
+      srcport: "{{get(flow, 'flow.dst_port_[[ vnf_num ]]', '1234-4321') }}"
+      dstport: "{{get(flow, 'flow.src_port_[[ vnf_num ]]', '2001-4001') }}"
+      count: "{{get(flow, 'flow.count', '1') }}"
+[% endfor %]