summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ansible/gen_scale_out_test.yml26
-rw-r--r--ansible/multi_port_baremetal_ixia_correlated_test.yaml133
-rw-r--r--ansible/multi_port_baremetal_ixia_correlated_test_templates.yml56
-rw-r--r--ansible/multi_port_baremetal_ixia_test.yaml104
-rw-r--r--ansible/multi_port_baremetal_ixia_test_templates.yml60
-rw-r--r--ansible/multi_port_baremetal_test.yaml95
-rw-r--r--ansible/multi_port_baremetal_test_templates.yml60
-rw-r--r--ansible/ovs_scale_out_test_ixia_correlated_templates.yml6
-rw-r--r--ansible/ovs_scale_out_test_templates.yml2
-rw-r--r--ansible/scale_out_test_templates.yml48
-rw-r--r--ansible/sriov_scale_out_test_ixia_correlated_templates.yml2
-rw-r--r--ansible/standalone_ovs_scale_out_ixia_correlated_test.yaml4
-rw-r--r--ansible/standalone_ovs_scale_out_ixia_test.yaml4
-rw-r--r--ansible/standalone_ovs_scale_out_test.yaml8
-rw-r--r--ansible/standalone_sriov_scale_out_ixia_correlated_test.yaml4
-rw-r--r--ansible/standalone_sriov_scale_out_ixia_test.yaml4
-rw-r--r--ansible/standalone_sriov_scale_out_test.yaml2
-rw-r--r--dashboard/opnfv_yardstick_tc037.json2
-rw-r--r--dashboard/opnfv_yardstick_tc038.json2
-rw-r--r--dashboard/opnfv_yardstick_tc070.json2
-rw-r--r--dashboard/opnfv_yardstick_tc071.json2
-rw-r--r--dashboard/opnfv_yardstick_tc072.json2
-rw-r--r--etc/yardstick/nodes/standalone/baremetal_trex.yaml18
-rw-r--r--etc/yardstick/nodes/standalone/pod_bm_vnf.yaml37
-rw-r--r--opnfv_os-odl-fdio_dvr-noha_daily.yaml38
-rw-r--r--samples/vnf_samples/nsut/acl/acl-tg-topology-3node-10.yaml260
-rw-r--r--samples/vnf_samples/nsut/acl/acl-tg-topology-3node-2.yaml76
-rw-r--r--samples/vnf_samples/nsut/acl/acl-tg-topology-3node-4.yaml122
-rw-r--r--samples/vnf_samples/nsut/acl/acl-tg-topology-3node-scale-out.yaml57
-rw-r--r--samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-correlated-multi-port.yaml54
-rw-r--r--samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-multi-port.yaml51
-rw-r--r--samples/vnf_samples/nsut/acl/acl-tg-topology-multi-port.yaml51
-rw-r--r--samples/vnf_samples/nsut/acl/acl.cfg2
-rw-r--r--samples/vnf_samples/nsut/acl/acl_config/acl_config61
-rw-r--r--samples/vnf_samples/nsut/acl/acl_config/acl_script53
-rw-r--r--samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_ixia_template.yaml55
-rw-r--r--samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_template.yaml54
-rw-r--r--samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_multi_port_template.yaml57
-rw-r--r--samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_10.yaml370
-rw-r--r--samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_2.yaml130
-rw-r--r--samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_4.yaml190
-rw-r--r--samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_out.yaml116
-rw-r--r--samples/vnf_samples/nsut/acl/tc_ovs_acl_udp_ixia_correlated_scale_out_template.yaml2
-rw-r--r--samples/vnf_samples/nsut/acl/tc_sriov_acl_udp_ixia_correlated_scale_out_template.yaml2
-rw-r--r--samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-correlated-multi-port.yaml54
-rw-r--r--samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-multi-port.yaml51
-rw-r--r--samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-multi-port.yaml51
-rw-r--r--samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-10.yaml260
-rw-r--r--samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-2.yaml76
-rw-r--r--samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-4.yaml122
-rw-r--r--samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-scale-out.yaml57
-rw-r--r--samples/vnf_samples/nsut/cgnapt/cgnat.cfg12
-rw-r--r--samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_ixia_template.yaml55
-rw-r--r--samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_template.yaml54
-rw-r--r--samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_multi_port_template.yaml57
-rw-r--r--samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_10.yaml370
-rw-r--r--samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_2.yaml130
-rw-r--r--samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_4.yaml190
-rw-r--r--samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_out.yaml116
-rw-r--r--samples/vnf_samples/nsut/cgnapt/tc_ovs_cgnapt_udp_ixia_correlated_scale_out_template.yaml4
-rw-r--r--samples/vnf_samples/nsut/cgnapt/tc_sriov_cgnapt_udp_ixia_correlated_scale_out_template.yaml4
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_ixia_template.yaml55
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_template.yaml54
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_multi_port_template.yaml57
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml371
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_2.yaml131
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml191
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml117
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_correlated_scale_out_template.yaml2
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_scale_out_template.yaml1
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_sriov_vfw_udp_ixia_correlated_scale_out_template.yaml2
-rw-r--r--samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-correlated-multi-port.yaml54
-rw-r--r--samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-multi-port.yaml51
-rw-r--r--samples/vnf_samples/nsut/vfw/vfw-tg-topology-multi-port.yaml51
-rw-r--r--samples/vnf_samples/nsut/vfw/vfw.cfg2
-rw-r--r--samples/vnf_samples/traffic_profiles/example.yaml4
-rw-r--r--samples/vnf_samples/traffic_profiles/ipv4_throughput-10.yaml558
-rw-r--r--samples/vnf_samples/traffic_profiles/ipv4_throughput-2.yaml150
-rw-r--r--samples/vnf_samples/traffic_profiles/ipv4_throughput-4.yaml252
-rw-r--r--samples/vnf_samples/traffic_profiles/ipv4_throughput-cgnapt-scale-out.yaml2
-rw-r--r--samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-correlated-scale-out.yaml76
-rw-r--r--samples/vnf_samples/traffic_profiles/ipv4_throughput-scale-out.yaml3
-rw-r--r--samples/vnf_samples/traffic_profiles/ipv4_throughput.yaml54
-rw-r--r--samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-10.yaml538
-rw-r--r--samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-2.yaml146
-rw-r--r--samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-4.yaml244
-rw-r--r--samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-scale-out.yaml100
-rw-r--r--samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt.yaml6
-rw-r--r--samples/vnf_samples/traffic_profiles/ipv4_throughput_vpe.yaml2
-rw-r--r--samples/vnf_samples/traffic_profiles/prox_lb.yaml2
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml7
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml8
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml7
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml7
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml7
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml7
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc049.yaml7
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc050.yaml11
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc051.yaml5
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc052.yaml5
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml7
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc055.yaml4
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc063.yaml4
-rwxr-xr-xtests/opnfv/test_cases/opnfv_yardstick_tc073.yaml8
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc075.yaml4
-rw-r--r--tests/opnfv/test_cases/opnfv_yardstick_tc078.yaml3
-rw-r--r--tests/opnfv/test_suites/opnfv_os-nosdn-openbaton-ha_daily.yaml62
-rw-r--r--tests/unit/network_services/helpers/test_iniparser.py (renamed from tests/unit/network_services/vnf_generic/vnf/test_iniparser.py)14
-rw-r--r--tests/unit/network_services/helpers/test_samplevnf_helper.py8
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py7
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py2
-rw-r--r--tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py10
-rw-r--r--yardstick/benchmark/core/task.py24
-rwxr-xr-xyardstick/benchmark/runners/base.py4
-rw-r--r--yardstick/benchmark/scenarios/compute/qemu_migrate_benchmark.bash25
-rw-r--r--yardstick/benchmark/scenarios/networking/ping.py35
-rw-r--r--yardstick/benchmark/scenarios/networking/vnf_generic.py6
-rwxr-xr-xyardstick/cmd/NSBperf.py20
-rw-r--r--yardstick/common/utils.py2
-rw-r--r--yardstick/dispatcher/influxdb.py4
-rw-r--r--yardstick/network_services/collector/subscriber.py14
-rw-r--r--yardstick/network_services/helpers/iniparser.py (renamed from yardstick/network_services/vnf_generic/vnf/iniparser.py)0
-rw-r--r--yardstick/network_services/helpers/samplevnf_helper.py26
-rw-r--r--yardstick/network_services/nfvi/resource.py12
-rw-r--r--yardstick/network_services/traffic_profile/traffic_profile.py30
-rw-r--r--yardstick/network_services/vnf_generic/vnf/cgnapt_vnf.py54
-rw-r--r--yardstick/network_services/vnf_generic/vnf/prox_helpers.py11
-rw-r--r--yardstick/network_services/vnf_generic/vnf/prox_vnf.py2
-rw-r--r--yardstick/network_services/vnf_generic/vnf/sample_vnf.py10
129 files changed, 7565 insertions, 341 deletions
diff --git a/ansible/gen_scale_out_test.yml b/ansible/gen_scale_out_test.yml
new file mode 100644
index 000000000..a76ea0ac2
--- /dev/null
+++ b/ansible/gen_scale_out_test.yml
@@ -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/multi_port_baremetal_ixia_correlated_test.yaml b/ansible/multi_port_baremetal_ixia_correlated_test.yaml
new file mode 100644
index 000000000..ba92b5cd3
--- /dev/null
+++ b/ansible/multi_port_baremetal_ixia_correlated_test.yaml
@@ -0,0 +1,133 @@
+# 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:
+ scale_out:
+ - 1
+ - 2
+ flow:
+ traffic_type: 4
+ pkt_size:
+ uplink: {64B: 100}
+ downlink: {64B: 100}
+ count: 10
+ rfc2544:
+ allowed_drop_rate: 0.0001 - 0.0001
+ vnf_config:
+ lb_config: 'SW'
+ lb_count: 1
+ worker_config: '1C/1T'
+ worker_threads: 1
+
+ # Environment variables
+ gen:
+ user: ""
+ password: ""
+ key_filename: ~
+ tg_config:
+ ixchassis: "1.1.1.127" #ixia chassis ip
+ tcl_port: "8009" # tcl server port
+ lib_path: "/opt/ixia/ixos-api/8.01.0.2/lib/ixTcl1.0"
+ root_dir: "/opt/ixia/ixos-api/8.01.0.2/"
+ py_bin_path: "/opt/ixia/ixload/8.01.106.3/bin/"
+ py_lib_path: "/opt/ixia/ixnetwork/8.01.1029.14/lib/PythonApi"
+ dut_result_dir: "/mnt/results"
+ version: "8.01.106.3"
+ pcis:
+ uplink:
+ - "2:5" #Card:port
+ - "2:3" #Card:port
+ downlink:
+ - "2:6" #Card:port
+ - "2:5" #Card:port
+ ip:
+ mgmt:
+ - '1.2.1.6/24'
+ uplink:
+ - '152.16.100.20/24'
+ - '172.16.100.20/24'
+ downlink:
+ - '152.16.40.20/24'
+ - '172.16.40.20/24'
+ mac:
+ uplink:
+ - '00:98:10:64:14:00'
+ - '00:ac:10:64:14:0'
+ downlink:
+ - '00:98:10:28:14:00'
+ - '00:ac:10:28:14:00'
+
+ # Environment variables
+ gen_1:
+ user: ""
+ password: ""
+ key_filename: ~
+ pcis:
+ uplink:
+ - "0000:05:00.0"
+ - "0000:05:00.2"
+ downlink:
+ - "0000:05:00.1"
+ - "0000:05:00.3"
+ ip:
+ mgmt:
+ - '1.2.1.6/24'
+ uplink:
+ - '152.16.100.20/24'
+ - '172.16.100.20/24'
+ downlink:
+ - '152.16.40.20/24'
+ - '172.16.40.20/24'
+ mac:
+ uplink:
+ - '00:00:00:9e:00:f8'
+ - '00:00:00:9e:00:fa'
+ downlink:
+ - '00:00:00:9e:00:f9'
+ - '00:00:00:9e:00:fb'
+
+ vnf:
+ ip: "192.168.100.101/24"
+ user: root
+ password: ""
+ key_filename: /root/.ssh/id_rsa
+ pcis:
+ uplink:
+ - "0000:05:00.0"
+ - "0000:05:00.2"
+ downlink:
+ - "0000:05:00.1"
+ - "0000:05:00.3"
+ ip:
+ mgmt:
+ - '1.2.1.6/24'
+ uplink:
+ - '152.16.100.10/24'
+ - '172.16.100.10/24'
+ downlink:
+ - '152.16.40.10/24'
+ - '172.16.40.10/24'
+ mac:
+ uplink:
+ - '00:00:00:9e:00:f8'
+ - '00:00:00:9e:00:fa'
+ downlink:
+ - '00:00:00:9e:00:f9'
+ - '00:00:00:9e:00:fb'
+
+ tasks:
+ - include: multi_port_baremetal_ixia_correlated_test_templates.yml
+ with_items: "{{ scale_out }}"
+
diff --git a/ansible/multi_port_baremetal_ixia_correlated_test_templates.yml b/ansible/multi_port_baremetal_ixia_correlated_test_templates.yml
new file mode 100644
index 000000000..6f73d8c01
--- /dev/null
+++ b/ansible/multi_port_baremetal_ixia_correlated_test_templates.yml
@@ -0,0 +1,56 @@
+# 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-ixia-correlated-scale-out.yaml
+ dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml
+
+- template:
+ src: ../etc/yardstick/nodes/standalone/ixia_template.yaml
+ dest: /etc/yardstick/nodes/ixia_{{ num_vnfs }}.yaml
+
+- template:
+ src: ../etc/yardstick/nodes/standalone/pod_bm_vnf.yaml
+ dest: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_multi_port_template.yaml
+ dest: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_multi_port_{{ num_vnfs }}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-correlated-multi-port.yaml
+ dest: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-correlated-multi-port-{{ num_vnfs }}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_multi_port_template.yaml
+ dest: ../samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_multi_port_{{num_vnfs}}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-correlated-multi-port.yaml
+ dest: ../samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-correlated-multi-port-{{ num_vnfs }}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_multi_port_template.yaml
+ dest: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_multi_port_{{num_vnfs}}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-correlated-multi-port.yaml
+ dest: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-correlated-multi-port-{{ num_vnfs }}.yaml
diff --git a/ansible/multi_port_baremetal_ixia_test.yaml b/ansible/multi_port_baremetal_ixia_test.yaml
new file mode 100644
index 000000000..52bc40b43
--- /dev/null
+++ b/ansible/multi_port_baremetal_ixia_test.yaml
@@ -0,0 +1,104 @@
+# 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:
+ scale_out:
+ - 1
+ - 2
+ flow:
+ traffic_type: 4
+ pkt_size:
+ uplink: {64B: 100}
+ downlink: {64B: 100}
+ count: 10
+ rfc2544:
+ allowed_drop_rate: 0.0001 - 0.0001
+ vnf_config:
+ lb_config: 'SW'
+ lb_count: 1
+ worker_config: '1C/1T'
+ worker_threads: 1
+
+ # Environment variables
+ gen:
+ user: ""
+ password: ""
+ key_filename: ~
+ tg_config:
+ ixchassis: "1.1.1.127" #ixia chassis ip
+ tcl_port: "8009" # tcl server port
+ lib_path: "/opt/ixia/ixos-api/8.01.0.2/lib/ixTcl1.0"
+ root_dir: "/opt/ixia/ixos-api/8.01.0.2/"
+ py_bin_path: "/opt/ixia/ixload/8.01.106.3/bin/"
+ py_lib_path: "/opt/ixia/ixnetwork/8.01.1029.14/lib/PythonApi"
+ dut_result_dir: "/mnt/results"
+ version: "8.01.106.3"
+ pcis:
+ uplink:
+ - "2:5" #Card:port
+ - "2:3" #Card:port
+ downlink:
+ - "2:6" #Card:port
+ - "2:5" #Card:port
+ ip:
+ mgmt:
+ - '1.2.1.6/24'
+ uplink:
+ - '152.16.100.20/24'
+ - '172.16.100.20/24'
+ downlink:
+ - '152.16.40.20/24'
+ - '172.16.40.20/24'
+ mac:
+ uplink:
+ - '00:98:10:64:14:00'
+ - '00:ac:10:64:14:0'
+ downlink:
+ - '00:98:10:28:14:00'
+ - '00:ac:10:28:14:00'
+
+ vnf:
+ ip: "192.168.100.101/24"
+ user: root
+ password: ""
+ key_filename: /root/.ssh/id_rsa
+ pcis:
+ uplink:
+ - "0000:05:00.0"
+ - "0000:05:00.2"
+ downlink:
+ - "0000:05:00.1"
+ - "0000:05:00.3"
+ ip:
+ mgmt:
+ - '1.2.1.6/24'
+ uplink:
+ - '152.16.100.10/24'
+ - '172.16.100.10/24'
+ downlink:
+ - '152.16.40.10/24'
+ - '172.16.40.10/24'
+ mac:
+ uplink:
+ - '00:00:00:9e:00:f8'
+ - '00:00:00:9e:00:fa'
+ downlink:
+ - '00:00:00:9e:00:f9'
+ - '00:00:00:9e:00:fb'
+
+ tasks:
+ - include: multi_port_baremetal_ixia_test_templates.yml
+ with_items: "{{ scale_out }}"
+
diff --git a/ansible/multi_port_baremetal_ixia_test_templates.yml b/ansible/multi_port_baremetal_ixia_test_templates.yml
new file mode 100644
index 000000000..f2e04a2d1
--- /dev/null
+++ b/ansible/multi_port_baremetal_ixia_test_templates.yml
@@ -0,0 +1,60 @@
+# 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: ../etc/yardstick/nodes/standalone/ixia_template.yaml
+ dest: /etc/yardstick/nodes/ixia_{{ num_vnfs }}.yaml
+
+- template:
+ src: ../etc/yardstick/nodes/standalone/pod_bm_vnf.yaml
+ dest: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_template.yaml
+ dest: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_{{ num_vnfs }}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-multi-port.yaml
+ dest: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-multi-port-{{ num_vnfs }}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_ixia_template.yaml
+ dest: ../samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_ixia_{{ num_vnfs }}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-multi-port.yaml
+ dest: ../samples/vnf_samples/nsut/acl/acl-tg-topology-multi-port-ixia-{{ 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/cgnapt/tc_baremetal_cgnapt_rfc2544_ixia_template.yaml
+ dest: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_ixia_{{ num_vnfs }}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-multi-port.yaml
+ dest: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-multi-port-ixia-{{ num_vnfs }}.yaml
diff --git a/ansible/multi_port_baremetal_test.yaml b/ansible/multi_port_baremetal_test.yaml
new file mode 100644
index 000000000..fb12b1c64
--- /dev/null
+++ b/ansible/multi_port_baremetal_test.yaml
@@ -0,0 +1,95 @@
+# 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:
+ scale_out:
+ - 1
+ - 2
+ flow:
+ traffic_type: 4
+ pkt_size:
+ uplink: {64B: 100}
+ downlink: {64B: 100}
+ count: 10
+ rfc2544:
+ allowed_drop_rate: 0.0001 - 0.0001
+ vnf_config:
+ lb_config: 'SW'
+ lb_count: 1
+ worker_config: '1C/1T'
+ worker_threads: 1
+
+ # Environment variables
+ gen:
+ user: root
+ password: ""
+ key_filename: /root/.ssh/id_rsa
+ pcis:
+ uplink:
+ - "0000:05:00.0"
+ - "0000:05:00.2"
+ downlink:
+ - "0000:05:00.1"
+ - "0000:05:00.3"
+ ip:
+ mgmt:
+ - '1.2.1.6/24'
+ uplink:
+ - '152.16.100.20/24'
+ - '172.16.100.20/24'
+ downlink:
+ - '152.16.40.20/24'
+ - '172.16.40.20/24'
+ mac:
+ uplink:
+ - '00:00:00:9e:00:f8'
+ - '00:00:00:9e:00:fa'
+ downlink:
+ - '00:00:00:9e:00:f9'
+ - '00:00:00:9e:00:fb'
+
+ vnf:
+ ip: "192.168.100.101/24"
+ user: root
+ password: ""
+ key_filename: /root/.ssh/id_rsa
+ pcis:
+ uplink:
+ - "0000:05:00.0"
+ - "0000:05:00.2"
+ downlink:
+ - "0000:05:00.1"
+ - "0000:05:00.3"
+ ip:
+ mgmt:
+ - '1.2.1.6/24'
+ uplink:
+ - '152.16.100.10/24'
+ - '172.16.100.10/24'
+ downlink:
+ - '152.16.40.10/24'
+ - '172.16.40.10/24'
+ mac:
+ uplink:
+ - '00:00:00:9e:00:f8'
+ - '00:00:00:9e:00:fa'
+ downlink:
+ - '00:00:00:9e:00:f9'
+ - '00:00:00:9e:00:fb'
+
+ tasks:
+ - include: multi_port_baremetal_test_templates.yml
+ with_items: "{{ scale_out }}"
+
diff --git a/ansible/multi_port_baremetal_test_templates.yml b/ansible/multi_port_baremetal_test_templates.yml
new file mode 100644
index 000000000..4b905f8c7
--- /dev/null
+++ b/ansible/multi_port_baremetal_test_templates.yml
@@ -0,0 +1,60 @@
+# 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: ../etc/yardstick/nodes/standalone/baremetal_trex.yaml
+ dest: /etc/yardstick/nodes/baremetal_trex_{{num_vnfs}}.yaml
+
+- template:
+ src: ../etc/yardstick/nodes/standalone/pod_bm_vnf.yaml
+ dest: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_template.yaml
+ dest: ../samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_{{ num_vnfs }}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-multi-port.yaml
+ dest: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-multi-port-{{ num_vnfs }}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/acl/tc_baremetal_vfw_rfc2544_template.yaml
+ dest: ../samples/vnf_samples/nsut/acl/tc_baremetal_vfw_rfc2544_{{ num_vnfs }}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/acl/acl-tg-topology-multi-port.yaml
+ dest: ../samples/vnf_samples/nsut/acl/acl-tg-topology-multi-port-{{ 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/cgnapt/tc_baremetal_vfw_rfc2544_template.yaml
+ dest: ../samples/vnf_samples/nsut/cgnapt/tc_baremetal_vfw_rfc2544_{{ num_vnfs }}.yaml
+
+- template:
+ src: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-multi-port.yaml
+ dest: ../samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-multi-port-{{ num_vnfs }}.yaml
diff --git a/ansible/ovs_scale_out_test_ixia_correlated_templates.yml b/ansible/ovs_scale_out_test_ixia_correlated_templates.yml
index ca5fe00ef..c26505342 100644
--- a/ansible/ovs_scale_out_test_ixia_correlated_templates.yml
+++ b/ansible/ovs_scale_out_test_ixia_correlated_templates.yml
@@ -21,7 +21,7 @@
- template:
- src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-scale-out.yaml
+ src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-correlated-scale-out.yaml
dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml
- template:
@@ -49,10 +49,6 @@
dest: ../samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-correlated-scale-out-{{ num_vnfs }}.yaml
- template:
- src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-cgnapt-ixia-scale-out.yaml
- dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-cgnapt-{{ num_vnfs }}.yaml
-
-- template:
src: ../samples/vnf_samples/nsut/cgnapt/tc_ovs_cgnapt_udp_ixia_correlated_scale_out_template.yaml
dest: ../samples/vnf_samples/nsut/cgnapt/tc_ovs_cgnapt_udp_ixia_correlated_scale_out_{{num_vnfs}}.yaml
diff --git a/ansible/ovs_scale_out_test_templates.yml b/ansible/ovs_scale_out_test_templates.yml
index aadec6d62..cffa73342 100644
--- a/ansible/ovs_scale_out_test_templates.yml
+++ b/ansible/ovs_scale_out_test_templates.yml
@@ -25,7 +25,7 @@
- template:
src: ../etc/yardstick/nodes/standalone/baremetal_trex.yaml
- dest: /etc/yardstick/nodes/baremetal_trex_{{num_vnfs}}.yaml
+ dest: /etc/yardstick/nodes/baremetal_trex_{{ num_vnfs }}.yaml
- template:
src: ../etc/yardstick/nodes/standalone/pod_sriov.yaml
diff --git a/ansible/scale_out_test_templates.yml b/ansible/scale_out_test_templates.yml
new file mode 100644
index 000000000..4213816fa
--- /dev/null
+++ b/ansible/scale_out_test_templates.yml
@@ -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/ansible/sriov_scale_out_test_ixia_correlated_templates.yml b/ansible/sriov_scale_out_test_ixia_correlated_templates.yml
index 2a6c352b4..626030712 100644
--- a/ansible/sriov_scale_out_test_ixia_correlated_templates.yml
+++ b/ansible/sriov_scale_out_test_ixia_correlated_templates.yml
@@ -21,7 +21,7 @@
- template:
- src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-scale-out.yaml
+ src: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-correlated-scale-out.yaml
dest: ../samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml
- template:
diff --git a/ansible/standalone_ovs_scale_out_ixia_correlated_test.yaml b/ansible/standalone_ovs_scale_out_ixia_correlated_test.yaml
index e3c8c7ca1..516676576 100644
--- a/ansible/standalone_ovs_scale_out_ixia_correlated_test.yaml
+++ b/ansible/standalone_ovs_scale_out_ixia_correlated_test.yaml
@@ -55,7 +55,7 @@
ixchassis: "1.1.1.127" #ixia chassis ip
tcl_port: "8009" # tcl server port
lib_path: "/opt/ixia/ixos-api/8.01.0.2/lib/ixTcl1.0"
- ""_dir: "/opt/ixia/ixos-api/8.01.0.2/"
+ root_dir: "/opt/ixia/ixos-api/8.01.0.2/"
py_bin_path: "/opt/ixia/ixload/8.01.106.3/bin/"
py_lib_path: "/opt/ixia/ixnetwork/8.01.1029.14/lib/PythonApi"
dut_result_dir: "/mnt/results"
@@ -87,7 +87,7 @@
# Environment variables
gen_1:
user: ""
- password: ""!
+ password: ""
key_filename: /""/.ssh/id_rsa
pcis:
uplink:
diff --git a/ansible/standalone_ovs_scale_out_ixia_test.yaml b/ansible/standalone_ovs_scale_out_ixia_test.yaml
index d8ee224ac..ff665377f 100644
--- a/ansible/standalone_ovs_scale_out_ixia_test.yaml
+++ b/ansible/standalone_ovs_scale_out_ixia_test.yaml
@@ -27,6 +27,8 @@
socket_0: 2048
socket_1: 2048
flavor:
+ user: root
+ password: ""
ram: 4096
image: "/var/lib/libvirt/images/ubuntu.qcow2"
extra_specs:
@@ -56,7 +58,7 @@
ixchassis: "1.1.1.127" #ixia chassis ip
tcl_port: "8009" # tcl server port
lib_path: "/opt/ixia/ixos-api/8.01.0.2/lib/ixTcl1.0"
- ""_dir: "/opt/ixia/ixos-api/8.01.0.2/"
+ root_dir: "/opt/ixia/ixos-api/8.01.0.2/"
py_bin_path: "/opt/ixia/ixload/8.01.106.3/bin/"
py_lib_path: "/opt/ixia/ixnetwork/8.01.1029.14/lib/PythonApi"
dut_result_dir: "/mnt/results"
diff --git a/ansible/standalone_ovs_scale_out_test.yaml b/ansible/standalone_ovs_scale_out_test.yaml
index 2a0246c2d..996fc0f50 100644
--- a/ansible/standalone_ovs_scale_out_test.yaml
+++ b/ansible/standalone_ovs_scale_out_test.yaml
@@ -51,9 +51,9 @@
# Environment variables
gen:
- user: root
+ user: ""
password: ""
- key_filename: /root/.ssh/id_rsa
+ key_filename: ~
pcis:
uplink:
- "0000:05:00.0"
@@ -80,9 +80,9 @@
host:
ip: "192.168.100.101/24"
- user: root
+ user: ""
password: ""
- key_filename: /root/.ssh/id_rsa
+ key_filename: ~
vnf:
pcis:
diff --git a/ansible/standalone_sriov_scale_out_ixia_correlated_test.yaml b/ansible/standalone_sriov_scale_out_ixia_correlated_test.yaml
index 084dcbf7e..45a4a498b 100644
--- a/ansible/standalone_sriov_scale_out_ixia_correlated_test.yaml
+++ b/ansible/standalone_sriov_scale_out_ixia_correlated_test.yaml
@@ -47,7 +47,7 @@
ixchassis: "1.1.1.127" #ixia chassis ip
tcl_port: "8009" # tcl server port
lib_path: "/opt/ixia/ixos-api/8.01.0.2/lib/ixTcl1.0"
- ""_dir: "/opt/ixia/ixos-api/8.01.0.2/"
+ root_dir: "/opt/ixia/ixos-api/8.01.0.2/"
py_bin_path: "/opt/ixia/ixload/8.01.106.3/bin/"
py_lib_path: "/opt/ixia/ixnetwork/8.01.1029.14/lib/PythonApi"
dut_result_dir: "/mnt/results"
@@ -80,7 +80,7 @@
gen_1:
user: ""
password: ""
- key_filename: /""/.ssh/id_rsa
+ key_filename: "~"
pcis:
uplink:
- "0000:05:00.0"
diff --git a/ansible/standalone_sriov_scale_out_ixia_test.yaml b/ansible/standalone_sriov_scale_out_ixia_test.yaml
index 79ec0e68e..659dbef07 100644
--- a/ansible/standalone_sriov_scale_out_ixia_test.yaml
+++ b/ansible/standalone_sriov_scale_out_ixia_test.yaml
@@ -47,7 +47,7 @@
ixchassis: "1.1.1.127" #ixia chassis ip
tcl_port: "8009" # tcl server port
lib_path: "/opt/ixia/ixos-api/8.01.0.2/lib/ixTcl1.0"
- ""_dir: "/opt/ixia/ixos-api/8.01.0.2/"
+ root_dir: "/opt/ixia/ixos-api/8.01.0.2/"
py_bin_path: "/opt/ixia/ixload/8.01.106.3/bin/"
py_lib_path: "/opt/ixia/ixnetwork/8.01.1029.14/lib/PythonApi"
dut_result_dir: "/mnt/results"
@@ -80,7 +80,7 @@
ip: "192.168.100.101/24"
user: ""
password: ""
- key_filename: /""/.ssh/id_rsa
+ key_filename: "~"
vnf:
user: ""
diff --git a/ansible/standalone_sriov_scale_out_test.yaml b/ansible/standalone_sriov_scale_out_test.yaml
index e51e5617e..fe6989d54 100644
--- a/ansible/standalone_sriov_scale_out_test.yaml
+++ b/ansible/standalone_sriov_scale_out_test.yaml
@@ -19,7 +19,7 @@
- 2
flavor:
user: root
- password: ""!
+ password: ""
ram: 4096
image: "/var/lib/libvirt/images/ubuntu.qcow2"
extra_specs:
diff --git a/dashboard/opnfv_yardstick_tc037.json b/dashboard/opnfv_yardstick_tc037.json
index 366210503..85f7908b6 100644
--- a/dashboard/opnfv_yardstick_tc037.json
+++ b/dashboard/opnfv_yardstick_tc037.json
@@ -846,7 +846,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/dashboard/opnfv_yardstick_tc038.json b/dashboard/opnfv_yardstick_tc038.json
index bf068d5a9..65b97d626 100644
--- a/dashboard/opnfv_yardstick_tc038.json
+++ b/dashboard/opnfv_yardstick_tc038.json
@@ -566,7 +566,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/dashboard/opnfv_yardstick_tc070.json b/dashboard/opnfv_yardstick_tc070.json
index 152ecca24..c57d4194e 100644
--- a/dashboard/opnfv_yardstick_tc070.json
+++ b/dashboard/opnfv_yardstick_tc070.json
@@ -914,7 +914,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/dashboard/opnfv_yardstick_tc071.json b/dashboard/opnfv_yardstick_tc071.json
index defd6fada..009e0a173 100644
--- a/dashboard/opnfv_yardstick_tc071.json
+++ b/dashboard/opnfv_yardstick_tc071.json
@@ -994,7 +994,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/dashboard/opnfv_yardstick_tc072.json b/dashboard/opnfv_yardstick_tc072.json
index 2d330a05f..b8e9fa356 100644
--- a/dashboard/opnfv_yardstick_tc072.json
+++ b/dashboard/opnfv_yardstick_tc072.json
@@ -723,7 +723,7 @@
],
"timeFrom": null,
"timeShift": null,
- "title": "Latency - Ping",
+ "title": "Latency - Ping, 999999 rtt indicates ping error",
"tooltip": {
"shared": true,
"sort": 0,
diff --git a/etc/yardstick/nodes/standalone/baremetal_trex.yaml b/etc/yardstick/nodes/standalone/baremetal_trex.yaml
index 508fb88d3..d41b8989f 100644
--- a/etc/yardstick/nodes/standalone/baremetal_trex.yaml
+++ b/etc/yardstick/nodes/standalone/baremetal_trex.yaml
@@ -21,17 +21,17 @@ nodes:
password: {{gen.password}}
key_filename: {{gen.key_filename}}
interfaces:
-{% for num in range(item.num_vnfs|int) %}
+{% for num in range(num_vnfs|int) %}
xe{{num * 2}}: # logical name from topology.yaml and vnfd.yaml
- vpci: "{{gen.pcis.private[num]}}"
+ vpci: "{{gen.pcis.uplink[num]}}"
dpdk_port_num: {{num * 2}}
- local_ip: "{{gen.ip.private[num] | ipaddr('address')}}"
- netmask: "{{gen.ip.private[num] | ipaddr('netmask')}}"
- local_mac: "{{gen.mac.private[num]}}"
+ local_ip: "{{gen.ip.uplink[num] | ipaddr('address')}}"
+ netmask: "{{gen.ip.uplink[num] | ipaddr('netmask')}}"
+ local_mac: "{{gen.mac.uplink[num]}}"
xe{{(num * 2) + 1}}: # logical name from topology.yaml and vnfd.yaml
- vpci: "{{gen.pcis.public[num]}}"
+ vpci: "{{gen.pcis.downlink[num]}}"
dpdk_port_num: {{(num * 2) + 1}}
- local_ip: "{{gen.ip.public[num] | ipaddr('address') }}"
- netmask: "{{gen.ip.private[num] | ipaddr('netmask')}}"
- local_mac: "{{gen.mac.public[num]}}"
+ local_ip: "{{gen.ip.downlink[num] | ipaddr('address') }}"
+ netmask: "{{gen.ip.uplink[num] | ipaddr('netmask')}}"
+ local_mac: "{{gen.mac.downlink[num]}}"
{% endfor %}
diff --git a/etc/yardstick/nodes/standalone/pod_bm_vnf.yaml b/etc/yardstick/nodes/standalone/pod_bm_vnf.yaml
new file mode 100644
index 000000000..b724cb09b
--- /dev/null
+++ b/etc/yardstick/nodes/standalone/pod_bm_vnf.yaml
@@ -0,0 +1,37 @@
+# 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.
+
+nodes:
+-
+ name: vnf__0
+ role: vnf__0
+ ip: {{vnf.ip.mgmt[0]| ipaddr('address')}}
+ user: {{vnf.user}}
+ password: {{vnf.password}}
+ key_filename: {{vnf.key_filename}}
+ interfaces:
+{% for num in range(num_vnfs|int) %}
+ xe{{num * 2}}: # logical name from topology.yaml and vnfd.yaml
+ vpci: "{{vnf.pcis.uplink[num]}}"
+ dpdk_port_num: {{num * 2}}
+ local_ip: "{{vnf.ip.uplink[num] | ipaddr('address')}}"
+ netmask: "{{vnf.ip.uplink[num] | ipaddr('netmask')}}"
+ local_mac: "{{vnf.mac.uplink[num]}}"
+ xe{{(num * 2) + 1}}: # logical name from topology.yaml and vnfd.yaml
+ vpci: "{{vnf.pcis.downlink[num]}}"
+ dpdk_port_num: {{(num * 2) + 1}}
+ local_ip: "{{vnf.ip.downlink[num] | ipaddr('address') }}"
+ netmask: "{{vnf.ip.uplink[num] | ipaddr('netmask')}}"
+ local_mac: "{{vnf.mac.downlink[num]}}"
+{% endfor %}
diff --git a/opnfv_os-odl-fdio_dvr-noha_daily.yaml b/opnfv_os-odl-fdio_dvr-noha_daily.yaml
new file mode 100644
index 000000000..cd00b4c0c
--- /dev/null
+++ b/opnfv_os-odl-fdio_dvr-noha_daily.yaml
@@ -0,0 +1,38 @@
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+# os-odl-fdio-dvr-noha daily task suite
+
+schema: "yardstick:suite:0.1"
+
+name: "os-odl-fdio-dvr-noha"
+test_cases_dir: "tests/opnfv/test_cases/"
+test_cases:
+-
+ file_name: opnfv_yardstick_tc002.yaml
+-
+ file_name: opnfv_yardstick_tc005.yaml
+-
+ file_name: opnfv_yardstick_tc010.yaml
+-
+ file_name: opnfv_yardstick_tc011.yaml
+-
+ file_name: opnfv_yardstick_tc012.yaml
+-
+ file_name: opnfv_yardstick_tc014.yaml
+-
+ file_name: opnfv_yardstick_tc037.yaml
+-
+ file_name: opnfv_yardstick_tc069.yaml
+-
+ file_name: opnfv_yardstick_tc070.yaml
+-
+ file_name: opnfv_yardstick_tc071.yaml
+-
+ file_name: opnfv_yardstick_tc072.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
index 000000000..5c7a6141d
--- /dev/null
+++ b/samples/vnf_samples/nsut/acl/acl-tg-topology-3node-10.yaml
@@ -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
index 000000000..a9870dc09
--- /dev/null
+++ b/samples/vnf_samples/nsut/acl/acl-tg-topology-3node-2.yaml
@@ -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
index 000000000..89a067a40
--- /dev/null
+++ b/samples/vnf_samples/nsut/acl/acl-tg-topology-3node-4.yaml
@@ -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
index 000000000..c06777923
--- /dev/null
+++ b/samples/vnf_samples/nsut/acl/acl-tg-topology-3node-scale-out.yaml
@@ -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/acl-tg-topology-ixia-correlated-multi-port.yaml b/samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-correlated-multi-port.yaml
new file mode 100644
index 000000000..667d23e80
--- /dev/null
+++ b/samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-correlated-multi-port.yaml
@@ -0,0 +1,54 @@
+# 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.
+
+nsd:nsd-catalog:
+ nsd:
+ - id: 3-tg_vnf-topology
+ name: 3-tg_vnf-topology
+ short-name: 3-tg_vnf-topology
+ description: 3-tg_vnf-topology
+ constituent-vnfd:
+ - member-vnf-index: '0'
+ vnfd-id-ref: tg__0
+ VNF model: ../../vnf_descriptors/ixia_rfc2544_tpl.yaml
+ - 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
+
+ vld:
+{% for vnf_num in range(num_vnfs|int) %}
+ - id: uplink_{{ vnf_num }}
+ name: "tg__0 to vnf__0 link {{ (vnf_num * 2) }}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2 }}
+ vnfd-id-ref: tg__0
+ - member-vnf-index-ref: 2
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: vnf__0
+ - id: downlink_{{ vnf_num }}
+ name: "vnf__{{ vnf_num }} to tg__1 link {{ (vnf_num * 2) + 1}}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: 2
+ vnfd-connection-point-ref: xe{{vnf_num * 2 + 1}}
+ vnfd-id-ref: vnf__0
+ - 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/acl-tg-topology-ixia-multi-port.yaml b/samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-multi-port.yaml
new file mode 100644
index 000000000..00bf28231
--- /dev/null
+++ b/samples/vnf_samples/nsut/acl/acl-tg-topology-ixia-multi-port.yaml
@@ -0,0 +1,51 @@
+# 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.
+
+nsd:nsd-catalog:
+ nsd:
+ - id: 2tg-topology
+ name: 2tg-topology
+ short-name: 2tg-topology
+ description: 2tg-topology
+ constituent-vnfd:
+ - member-vnf-index: '0'
+ vnfd-id-ref: tg__0
+ VNF model: ../../vnf_descriptors/ixia_rfc2544_tpl.yaml
+ - member-vnf-index: '1'
+ vnfd-id-ref: vnf__0
+ VNF model: ../../vnf_descriptors/acl_vnf.yaml #VNF type
+
+ vld:
+{% for vnf_num in range(num_vnfs|int) %}
+ - id: uplink_{{ vnf_num }}
+ name: "tg__0 to vnf__0 link {{ (vnf_num * 2) }}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: tg__0
+ - member-vnf-index-ref: '1'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: vnf__0
+ - id: downlink_{{ vnf_num }}
+ name: "vnf__0 to tg__0 link {{ (vnf_num * 2) + 1}}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '1'
+ vnfd-connection-point-ref: xe{{ (vnf_num * 2) + 1}}
+ vnfd-id-ref: vnf__0
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ (vnf_num * 2) + 1}}
+ vnfd-id-ref: tg__0
+{% endfor %}
diff --git a/samples/vnf_samples/nsut/acl/acl-tg-topology-multi-port.yaml b/samples/vnf_samples/nsut/acl/acl-tg-topology-multi-port.yaml
new file mode 100644
index 000000000..18ae4aee9
--- /dev/null
+++ b/samples/vnf_samples/nsut/acl/acl-tg-topology-multi-port.yaml
@@ -0,0 +1,51 @@
+# 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.
+
+nsd:nsd-catalog:
+ nsd:
+ - id: 2tg-topology
+ name: 2tg-topology
+ short-name: 2tg-topology
+ description: 2tg-topology
+ 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: vnf__0
+ VNF model: ../../vnf_descriptors/acl_vnf.yaml #VNF type
+
+ vld:
+{% for vnf_num in range(num_vnfs|int) %}
+ - id: uplink_{{ vnf_num }}
+ name: "tg__0 to vnf__0 link {{ (vnf_num * 2) }}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: tg__0
+ - member-vnf-index-ref: '1'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: vnf__0
+ - id: downlink_{{ vnf_num }}
+ name: "vnf__0 to tg__0 link {{ (vnf_num * 2) + 1}}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '1'
+ vnfd-connection-point-ref: xe{{ (vnf_num * 2) + 1}}
+ vnfd-id-ref: vnf__0
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ (vnf_num * 2) + 1}}
+ vnfd-id-ref: tg__0
+{% endfor %}
diff --git a/samples/vnf_samples/nsut/acl/acl.cfg b/samples/vnf_samples/nsut/acl/acl.cfg
index fd3c51ee8..06da405db 100644
--- a/samples/vnf_samples/nsut/acl/acl.cfg
+++ b/samples/vnf_samples/nsut/acl/acl.cfg
@@ -20,8 +20,6 @@ type = ARPICMP
core = 1
pktq_in = SWQ4
pktq_out = TXQ0.0 TXQ1.0 TXQ2.0 TXQ3.0
-arp_route_tbl = (c0102814,fffff000,1,c0102814) (c0106414,fffff000,0,c0106414)
-nd_route_tbl = (0064:ff9b:0:0:0:0:9810:6414,120,0,0064:ff9b:0:0:0:0:9810:6414)
pktq_in_prv = RXQ0.0
prv_to_pub_map = (0,1)
[PIPELINE2]
diff --git a/samples/vnf_samples/nsut/acl/acl_config/acl_config b/samples/vnf_samples/nsut/acl/acl_config/acl_config
deleted file mode 100644
index 52b6a5002..000000000
--- a/samples/vnf_samples/nsut/acl/acl_config/acl_config
+++ /dev/null
@@ -1,61 +0,0 @@
-; 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.
-
-[PIPELINE0]
-type = MASTER
-core = s{socket}c0
-[PIPELINE1]
-type = ARPICMP
-core = s{socket}c1
-pktq_in = SWQ2
-pktq_out = SWQ7
-# debug output
-# ({port1_dst_ip},{port1_netmask},1,{port1_dst_ip}) ({port0_dst_ip},{port0_netmask},0,{port0_dst_ip})
-arp_route_tbl = ({port0_dst_ip_hex},{port0_netmask_hex},0,{port0_dst_ip_hex}) ({port1_dst_ip_hex},{port1_netmask_hex},1,{port1_dst_ip_hex})
-#ports_mac_list = port0_local_mac port1_local_mac
-ports_mac_list = {port0_local_mac} {port1_local_mac}
-pktq_in_prv = RXQ0.0 RXQ1.0
-prv_to_pub_map = (0,1)
-prv_que_handler = (0)
-
-[PIPELINE2]
-type = TXRX
-core = s{socket}c2
-pktq_in = RXQ0.0 RXQ1.0
-pktq_out = SWQ0 SWQ1 SWQ2
-pipeline_txrx_type = RXRX
-dest_if_offset=176
-[PIPELINE3]
-type = LOADB
-core = s{socket}c3
-pktq_in = SWQ0 SWQ1
-pktq_out = SWQ3 SWQ4
-outport_offset = 136
-phyport_offset = 204
-n_vnf_threads = 1
-prv_que_handler = (0)
-[PIPELINE4]
-type = ACL
-core = s{socket}c4
-pktq_in = SWQ3 SWQ4
-pktq_out = SWQ5 SWQ6
-n_flows = 1000000
-pkt_type = ipv4
-traffic_type = 4
-[PIPELINE5]
-type = TXRX
-core = s{socket}c5
-pktq_in = SWQ5 SWQ6 SWQ7
-pktq_out = TXQ0.0 TXQ1.0
-pipeline_txrx_type = TXTX
diff --git a/samples/vnf_samples/nsut/acl/acl_config/acl_script b/samples/vnf_samples/nsut/acl/acl_config/acl_script
deleted file mode 100644
index 4d7553609..000000000
--- a/samples/vnf_samples/nsut/acl/acl_config/acl_script
+++ /dev/null
@@ -1,53 +0,0 @@
-# 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.
-
-link 0 down
-link 0 config {port0_local_ip} {port0_prefixlen}
-link 0 up
-link 1 down
-link 1 config {port1_local_ip} {port1_prefixlen}
-link 1 up
-
-p action add 0 accept
-p action add 0 fwd 0
-p action add 0 count
-
-p action add 1 accept
-p action add 1 fwd 1
-p action add 1 count
-
-#p acl add 1 0.0.0.0 0 0.0.0.0 0 0 65535 0 65535 0 0 0
-#p acl add 1 0.0.0.0 0 0.0.0.0 0 0 65535 0 65535 0 0 1
-
-# action rule matches dest port
-p acl add 1 {port1_local_network} {port1_prefix} 0.0.0.0 0 0 65535 0 65535 0 0 0
-p acl add 1 0.0.0.0 0 {port1_local_network} {port1_prefix} 0 65535 0 65535 0 0 1
-
-p acl add 1 {port0_local_network} {port0_prefix} 0.0.0.0 0 0 65535 0 65535 0 0 1
-p acl add 1 0.0.0.0 0 {port0_local_network} {port0_prefix} 0 65535 0 65535 0 0 0
-
-p acl add 1 {port0_local_network} {port0_prefix} {port1_local_network} {port1_prefix} 0 65535 0 65535 0 0 1
-p acl add 1 {port1_local_network} {port1_prefix} {port0_local_network} {port0_prefix} 0 65535 0 65535 0 0 0
-
-# gateway is the remote port
-p 1 arpadd 0 {port0_gateway} {port0_local_mac}
-p 1 arpadd 0 {port0_local_ip} {port0_local_mac}
-p 1 arpadd 0 {port0_dst_ip} {port0_dst_mac}
-p 1 arpadd 1 {port1_gateway} {port1_local_mac}
-p 1 arpadd 1 {port1_local_ip} {port1_local_mac}
-p 1 arpadd 1 {port1_dst_ip} {port1_dst_mac}
-
-p acl applyruleset
-
-#p acl dbg 1
diff --git a/samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_ixia_template.yaml b/samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_ixia_template.yaml
new file mode 100644
index 000000000..17b918ce0
--- /dev/null
+++ b/samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_ixia_template.yaml
@@ -0,0 +1,55 @@
+# 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-ixia-multi-port-{{ num_vnfs }}.yaml
+ nodes:
+ tg__0: tg__0.yardstick
+ vnf__0: vnf__0.yardstick
+ options:
+ framesize:
+ uplink: {{ flow.pkt_size.uplink }}
+ downlink: {{ flow.pkt_size.downlink }}
+ flow:
+ src_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+ - {'tg__0': 'xe{{ (vnf_num * 2)}}'}
+{% endfor %}
+ dst_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+ - {'tg__0': 'xe{{ (vnf_num * 2) + 1}}'}
+{% endfor %}
+ count: {{ flow.count }}
+ traffic_type: {{ flow.traffic_type }}
+ rfc2544:
+ allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }}
+ vnf__0:
+ rules: acl_1rule.yaml
+ vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}}
+ ixia_profile: ../../traffic_profiles/ixia_ipv4_profile_{{num_vnfs * 2}}_port.ixncfg
+ runner:
+ type: Iteration
+ iterations: 10
+ interval: 35
+contexts:
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/baremetal_trex_{{num_vnfs}}.yaml
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml
diff --git a/samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_template.yaml b/samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_template.yaml
new file mode 100644
index 000000000..1333b2721
--- /dev/null
+++ b/samples/vnf_samples/nsut/acl/tc_baremetal_acl_rfc2544_template.yaml
@@ -0,0 +1,54 @@
+# 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-scale-out-{{ num_vnfs }}.yaml
+ nodes:
+ tg__0: tg__0.yardstick
+ vnf__0: vnf__0.yardstick
+ options:
+ framesize:
+ uplink: {{ flow.pkt_size.uplink }}
+ downlink: {{ flow.pkt_size.downlink }}
+ flow:
+ src_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+ - {'tg__0': 'xe{{ (vnf_num * 2)}}'}
+{% endfor %}
+ dst_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+ - {'tg__0': 'xe{{ (vnf_num * 2) + 1}}'}
+{% endfor %}
+ count: {{ flow.count }}
+ traffic_type: {{ flow.traffic_type }}
+ rfc2544:
+ allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }}
+ vnf__0:
+ rules: acl_1rule.yaml
+ vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}}
+ runner:
+ type: Iteration
+ iterations: 10
+ interval: 35
+contexts:
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/baremetal_trex_{{num_vnfs}}.yaml
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml
diff --git a/samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_multi_port_template.yaml b/samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_multi_port_template.yaml
new file mode 100644
index 000000000..fe7be9aba
--- /dev/null
+++ b/samples/vnf_samples/nsut/acl/tc_baremetal_acl_udp_ixia_correlated_multi_port_template.yaml
@@ -0,0 +1,57 @@
+# 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-ixia-{{ num_vnfs }}.yaml
+ topology: acl-tg-topology-ixia-correlated-multi-port-{{ num_vnfs }}.yaml
+ nodes:
+ tg__0: tg__0.yardstick
+ tg__1: tg__1.yardstick
+ vnf__0: vnf__0.yardstick
+ options:
+ framesize:
+ uplink: {{ flow.pkt_size.uplink }}
+ downlink: {{ flow.pkt_size.downlink }}
+ 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: {{ flow.count }}
+ traffic_type: {{ flow.traffic_type }}
+ rfc2544:
+ allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }}
+ vnf__0:
+ rules: acl_1rule.yaml
+ vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}}
+ ixia_profile: ../../traffic_profiles/ixia/ixia_ipv4_profile_{{ num_vnfs }}_port.ixncfg
+
+ runner:
+ type: Iteration
+ iterations: 10
+ interval: 35
+contexts:
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/ixia_correlated_{{num_vnfs}}.yaml
+ - type: Node
+ file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml
+ name: yardstick
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
index 000000000..5b28d5675
--- /dev/null
+++ b/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_10.yaml
@@ -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
index 000000000..ef76405fe
--- /dev/null
+++ b/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_2.yaml
@@ -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
index 000000000..edf9611c8
--- /dev/null
+++ b/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_4.yaml
@@ -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
index 000000000..4da95a1ca
--- /dev/null
+++ b/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_traffic_scale_out.yaml
@@ -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/acl/tc_ovs_acl_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/acl/tc_ovs_acl_udp_ixia_correlated_scale_out_template.yaml
index 8e1c43f88..5f5d0869d 100644
--- a/samples/vnf_samples/nsut/acl/tc_ovs_acl_udp_ixia_correlated_scale_out_template.yaml
+++ b/samples/vnf_samples/nsut/acl/tc_ovs_acl_udp_ixia_correlated_scale_out_template.yaml
@@ -17,7 +17,7 @@ schema: yardstick:task:0.1
scenarios:
- type: NSPerf
traffic_profile: ../../traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml
- topology: acl-tg-topology-scale-out-{{ num_vnfs }}.yaml
+ topology: acl-tg-topology-ixia-correlated-scale-out-{{ num_vnfs }}.yaml
nodes:
tg__0: tg__0.yardstick
tg__1: tg__1.yardstick
diff --git a/samples/vnf_samples/nsut/acl/tc_sriov_acl_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/acl/tc_sriov_acl_udp_ixia_correlated_scale_out_template.yaml
index d06c2ec96..024507bc6 100644
--- a/samples/vnf_samples/nsut/acl/tc_sriov_acl_udp_ixia_correlated_scale_out_template.yaml
+++ b/samples/vnf_samples/nsut/acl/tc_sriov_acl_udp_ixia_correlated_scale_out_template.yaml
@@ -17,7 +17,7 @@ schema: yardstick:task:0.1
scenarios:
- type: NSPerf
traffic_profile: ../../traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml
- topology: acl-tg-topology-ixia-scale-out-{{ num_vnfs }}.yaml
+ topology: acl-tg-topology-ixia-correlated-scale-out-{{ num_vnfs }}.yaml
nodes:
tg__0: tg__0.yardstick
tg__1: tg__1.yardstick
diff --git a/samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-correlated-multi-port.yaml b/samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-correlated-multi-port.yaml
new file mode 100644
index 000000000..cf64d96ba
--- /dev/null
+++ b/samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-correlated-multi-port.yaml
@@ -0,0 +1,54 @@
+# 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.
+
+nsd:nsd-catalog:
+ nsd:
+ - id: 3-tg_vnf-topology
+ name: 3-tg_vnf-topology
+ short-name: 3-tg_vnf-topology
+ description: 3-tg_vnf-topology
+ constituent-vnfd:
+ - member-vnf-index: '0'
+ vnfd-id-ref: tg__0
+ VNF model: ../../vnf_descriptors/ixia_rfc2544_tpl.yaml
+ - 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
+
+ vld:
+{% for vnf_num in range(num_vnfs|int) %}
+ - id: uplink_{{ vnf_num }}
+ name: "tg__0 to vnf__0 link {{ (vnf_num * 2) }}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2 }}
+ vnfd-id-ref: tg__0
+ - member-vnf-index-ref: 2
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: vnf__0
+ - id: downlink_{{ vnf_num }}
+ name: "vnf__{{ vnf_num }} to tg__1 link {{ (vnf_num * 2) + 1}}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: 2
+ vnfd-connection-point-ref: xe{{vnf_num * 2 + 1}}
+ vnfd-id-ref: vnf__0
+ - 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/cgnapt-tg-topology-ixia-multi-port.yaml b/samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-multi-port.yaml
new file mode 100644
index 000000000..91d257fd4
--- /dev/null
+++ b/samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-ixia-multi-port.yaml
@@ -0,0 +1,51 @@
+# 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.
+
+nsd:nsd-catalog:
+ nsd:
+ - id: 2tg-topology
+ name: 2tg-topology
+ short-name: 2tg-topology
+ description: 2tg-topology
+ constituent-vnfd:
+ - member-vnf-index: '0'
+ vnfd-id-ref: tg__0
+ VNF model: ../../vnf_descriptors/ixia_rfc2544_tpl.yaml
+ - member-vnf-index: '1'
+ vnfd-id-ref: vnf__0
+ VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml #VNF type
+
+ vld:
+{% for vnf_num in range(num_vnfs|int) %}
+ - id: uplink_{{ vnf_num }}
+ name: "tg__0 to vnf__0 link {{ (vnf_num * 2) }}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: tg__0
+ - member-vnf-index-ref: '1'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: vnf__0
+ - id: downlink_{{ vnf_num }}
+ name: "vnf__0 to tg__0 link {{ (vnf_num * 2) + 1}}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '1'
+ vnfd-connection-point-ref: xe{{ (vnf_num * 2) + 1}}
+ vnfd-id-ref: vnf__0
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ (vnf_num * 2) + 1}}
+ vnfd-id-ref: tg__0
+{% endfor %}
diff --git a/samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-multi-port.yaml b/samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-multi-port.yaml
new file mode 100644
index 000000000..b96cd38d4
--- /dev/null
+++ b/samples/vnf_samples/nsut/cgnapt/cgnapt-tg-topology-multi-port.yaml
@@ -0,0 +1,51 @@
+# 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.
+
+nsd:nsd-catalog:
+ nsd:
+ - id: 2tg-topology
+ name: 2tg-topology
+ short-name: 2tg-topology
+ description: 2tg-topology
+ 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: vnf__0
+ VNF model: ../../vnf_descriptors/cgnapt_vnf.yaml #VNF type
+
+ vld:
+{% for vnf_num in range(num_vnfs|int) %}
+ - id: uplink_{{ vnf_num }}
+ name: "tg__0 to vnf__0 link {{ (vnf_num * 2) }}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: tg__0
+ - member-vnf-index-ref: '1'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: vnf__0
+ - id: downlink_{{ vnf_num }}
+ name: "vnf__0 to tg__0 link {{ (vnf_num * 2) + 1}}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '1'
+ vnfd-connection-point-ref: xe{{ (vnf_num * 2) + 1}}
+ vnfd-id-ref: vnf__0
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ (vnf_num * 2) + 1}}
+ vnfd-id-ref: tg__0
+{% 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
index 000000000..3b45d4dad
--- /dev/null
+++ b/samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-10.yaml
@@ -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
index 000000000..a289e9830
--- /dev/null
+++ b/samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-2.yaml
@@ -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
index 000000000..bf6431f8d
--- /dev/null
+++ b/samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-4.yaml
@@ -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
index 000000000..6a99e4ea0
--- /dev/null
+++ b/samples/vnf_samples/nsut/cgnapt/cgnapt-vnf-topology-3node-scale-out.yaml
@@ -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/cgnat.cfg b/samples/vnf_samples/nsut/cgnapt/cgnat.cfg
index 37c5e2731..27169f8dc 100644
--- a/samples/vnf_samples/nsut/cgnapt/cgnat.cfg
+++ b/samples/vnf_samples/nsut/cgnapt/cgnat.cfg
@@ -21,15 +21,7 @@ core = 1
pktq_in = SWQ4
pktq_out = TXQ0.0 TXQ1.0 TXQ2.0 TXQ3.0
-; ARP route table entries (ip, mask, if_port, nh) hex values with no 0x
-arp_route_tbl = (c0102814,fffff000,1,c0102814) (c0106414,fffff000,0,c0106414)
-;arp_route_tbl = (c0122814,fffff000,3,c0122814) (c0126414,fffff000,1,c0126414)
-; Link MAC addresses in order aa:bb:cc:dd:ee:ff separated by space
-nd_route_tbl = (0064:ff9b:0:0:0:0:9810:6414,120,0,0064:ff9b:0:0:0:0:9810:6414)
-;
-; Hex values with no leading 0x, MACs in ascending port order starting @P0
-;ports_mac_list = 00:05:CA:30:21:F0 00:05:CA:30:21:F1 ;00:05:CA:30:21:F2 00:05:CA:30:21:F3
-;
+
; egress (private interface) info
pktq_in_prv = RXQ0.0
;
@@ -72,7 +64,7 @@ key_size = 8
hash_offset = 200;72
;cgnapt_debug = 2
;
-timer_period = 10000
+timer_period = 100
max_clients_per_ip = 65535
max_port_per_client = 100
public_ip_port_range = 04040000:(1, 65535)
diff --git a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_ixia_template.yaml b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_ixia_template.yaml
new file mode 100644
index 000000000..3a1c1cb12
--- /dev/null
+++ b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_ixia_template.yaml
@@ -0,0 +1,55 @@
+# 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: cgnapt-tg-topology-ixia-multi-port-{{ num_vnfs }}.yaml
+ nodes:
+ tg__0: tg__0.yardstick
+ vnf__0: vnf__0.yardstick
+ options:
+ framesize:
+ uplink: {{ flow.pkt_size.uplink }}
+ downlink: {{ flow.pkt_size.downlink }}
+ flow:
+ src_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+ - {'tg__0': 'xe{{ (vnf_num * 2)}}'}
+{% endfor %}
+ dst_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+ - {'tg__0': 'xe{{ (vnf_num * 2) + 1}}'}
+{% endfor %}
+ count: {{ flow.count }}
+ traffic_type: {{ flow.traffic_type }}
+ rfc2544:
+ allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }}
+ vnf__0:
+ rules: acl_1rule.yaml
+ vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}}
+ ixia_profile: ../../traffic_profiles/ixia_ipv4_profile_{{num_vnfs * 2}}_port.ixncfg
+ runner:
+ type: Iteration
+ iterations: 10
+ interval: 35
+contexts:
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/baremetal_trex_{{num_vnfs}}.yaml
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml
diff --git a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_template.yaml b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_template.yaml
new file mode 100644
index 000000000..81000a7a5
--- /dev/null
+++ b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_rfc2544_template.yaml
@@ -0,0 +1,54 @@
+# 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: cgnapt-tg-topology-multi-port-{{ num_vnfs }}.yaml
+ nodes:
+ tg__0: tg__0.yardstick
+ vnf__0: vnf__0.yardstick
+ options:
+ framesize:
+ uplink: {{ flow.pkt_size.uplink }}
+ downlink: {{ flow.pkt_size.downlink }}
+ flow:
+ src_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+ - {'tg__0': 'xe{{ (vnf_num * 2)}}'}
+{% endfor %}
+ dst_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+ - {'tg__0': 'xe{{ (vnf_num * 2) + 1}}'}
+{% endfor %}
+ count: {{ flow.count }}
+ traffic_type: {{ flow.traffic_type }}
+ rfc2544:
+ allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }}
+ vnf__0:
+ rules: acl_1rule.yaml
+ vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}}
+ runner:
+ type: Iteration
+ iterations: 10
+ interval: 35
+contexts:
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/baremetal_trex_{{num_vnfs}}.yaml
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml
diff --git a/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_multi_port_template.yaml b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_multi_port_template.yaml
new file mode 100644
index 000000000..879911f62
--- /dev/null
+++ b/samples/vnf_samples/nsut/cgnapt/tc_baremetal_cgnapt_udp_ixia_correlated_multi_port_template.yaml
@@ -0,0 +1,57 @@
+# 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-ixia-{{ num_vnfs }}.yaml
+ topology: cgnapt-tg-topology-ixia-correlated-multi-port-{{ num_vnfs }}.yaml
+ nodes:
+ tg__0: tg__0.yardstick
+ tg__1: tg__1.yardstick
+ vnf__0: vnf__0.yardstick
+ options:
+ framesize:
+ uplink: {{ flow.pkt_size.uplink }}
+ downlink: {{ flow.pkt_size.downlink }}
+ 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: {{ flow.count }}
+ traffic_type: {{ flow.traffic_type }}
+ rfc2544:
+ allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }}
+ vnf__0:
+ rules: acl_1rule.yaml
+ vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}}
+ ixia_profile: ../../traffic_profiles/ixia/ixia_ipv4_profile_{{ num_vnfs }}_port.ixncfg
+
+ runner:
+ type: Iteration
+ iterations: 10
+ interval: 35
+contexts:
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/ixia_correlated_{{num_vnfs}}.yaml
+ - type: Node
+ file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml
+ name: yardstick
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
index 000000000..ac0a83b34
--- /dev/null
+++ b/samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_10.yaml
@@ -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
index 000000000..894fcceef
--- /dev/null
+++ b/samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_2.yaml
@@ -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
index 000000000..ffdec998e
--- /dev/null
+++ b/samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_4.yaml
@@ -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
index 000000000..5c884f2e0
--- /dev/null
+++ b/samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_out.yaml
@@ -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/cgnapt/tc_ovs_cgnapt_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/cgnapt/tc_ovs_cgnapt_udp_ixia_correlated_scale_out_template.yaml
index 5f575d709..e2002abc0 100644
--- a/samples/vnf_samples/nsut/cgnapt/tc_ovs_cgnapt_udp_ixia_correlated_scale_out_template.yaml
+++ b/samples/vnf_samples/nsut/cgnapt/tc_ovs_cgnapt_udp_ixia_correlated_scale_out_template.yaml
@@ -16,8 +16,8 @@
schema: yardstick:task:0.1
scenarios:
- type: NSPerf
- traffic_profile: ../../traffic_profiles/ipv4_throughput-cgnapt-ixia-{{ num_vnfs }}.yaml
- topology: cgnapt-tg-topology-scale-out-{{ num_vnfs }}.yaml
+ traffic_profile: ../../traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml
+ topology: cgnapt-tg-topology-ixia-correlated-scale-out-{{ num_vnfs }}.yaml
nodes:
tg__0: tg__0.yardstick
tg__1: tg__1.yardstick
diff --git a/samples/vnf_samples/nsut/cgnapt/tc_sriov_cgnapt_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/cgnapt/tc_sriov_cgnapt_udp_ixia_correlated_scale_out_template.yaml
index 5b6d4a525..7f6e76cc2 100644
--- a/samples/vnf_samples/nsut/cgnapt/tc_sriov_cgnapt_udp_ixia_correlated_scale_out_template.yaml
+++ b/samples/vnf_samples/nsut/cgnapt/tc_sriov_cgnapt_udp_ixia_correlated_scale_out_template.yaml
@@ -16,8 +16,8 @@
schema: yardstick:task:0.1
scenarios:
- type: NSPerf
- traffic_profile: ../../traffic_profiles/ipv4_throughput-cgnapt-ixia-{{ num_vnfs }}.yaml
- topology: cgnapt-tg-topology-ixia-scale-out-{{ num_vnfs }}.yaml
+ traffic_profile: ../../traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml
+ topology: cgnapt-tg-topology-ixia-correlated-scale-out-{{ num_vnfs }}.yaml
nodes:
tg__0: tg__0.yardstick
tg__1: tg__1.yardstick
diff --git a/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_ixia_template.yaml b/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_ixia_template.yaml
new file mode 100644
index 000000000..f442c71d0
--- /dev/null
+++ b/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_ixia_template.yaml
@@ -0,0 +1,55 @@
+# 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-ixia-multi-port-{{ num_vnfs }}.yaml
+ nodes:
+ tg__0: tg__0.yardstick
+ vnf__0: vnf__0.yardstick
+ options:
+ framesize:
+ uplink: {{ flow.pkt_size.uplink }}
+ downlink: {{ flow.pkt_size.downlink }}
+ flow:
+ src_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+ - {'tg__0': 'xe{{ (vnf_num * 2)}}'}
+{% endfor %}
+ dst_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+ - {'tg__0': 'xe{{ (vnf_num * 2) + 1}}'}
+{% endfor %}
+ count: {{ flow.count }}
+ traffic_type: {{ flow.traffic_type }}
+ rfc2544:
+ allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }}
+ vnf__0:
+ rules: acl_1rule.yaml
+ vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}}
+ ixia_profile: ../../traffic_profiles/ixia_ipv4_profile_{{num_vnfs * 2}}_port.ixncfg
+ runner:
+ type: Iteration
+ iterations: 10
+ interval: 35
+contexts:
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/baremetal_trex_{{num_vnfs}}.yaml
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml
diff --git a/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_template.yaml b/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_template.yaml
new file mode 100644
index 000000000..6604e6451
--- /dev/null
+++ b/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_rfc2544_template.yaml
@@ -0,0 +1,54 @@
+# 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-multi-port-{{ num_vnfs }}.yaml
+ nodes:
+ tg__0: tg__0.yardstick
+ vnf__0: vnf__0.yardstick
+ options:
+ framesize:
+ uplink: {{ flow.pkt_size.uplink }}
+ downlink: {{ flow.pkt_size.downlink }}
+ flow:
+ src_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+ - {'tg__0': 'xe{{ (vnf_num * 2)}}'}
+{% endfor %}
+ dst_ip:
+{% for vnf_num in range(num_vnfs|int) %}
+ - {'tg__0': 'xe{{ (vnf_num * 2) + 1}}'}
+{% endfor %}
+ count: {{ flow.count }}
+ traffic_type: {{ flow.traffic_type }}
+ rfc2544:
+ allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }}
+ vnf__0:
+ rules: acl_1rule.yaml
+ vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}}
+ runner:
+ type: Iteration
+ iterations: 10
+ interval: 35
+contexts:
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/baremetal_trex_{{num_vnfs}}.yaml
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml
diff --git a/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_multi_port_template.yaml b/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_multi_port_template.yaml
new file mode 100644
index 000000000..d00fe1dcf
--- /dev/null
+++ b/samples/vnf_samples/nsut/vfw/tc_baremetal_vfw_udp_ixia_correlated_multi_port_template.yaml
@@ -0,0 +1,57 @@
+# 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-ixia-{{ num_vnfs }}.yaml
+ topology: vfw-tg-topology-ixia-correlated-multi-port-{{ num_vnfs }}.yaml
+ nodes:
+ tg__0: tg__0.yardstick
+ tg__1: tg__1.yardstick
+ vnf__0: vnf__0.yardstick
+ options:
+ framesize:
+ uplink: {{ flow.pkt_size.uplink }}
+ downlink: {{ flow.pkt_size.downlink }}
+ 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: {{ flow.count }}
+ traffic_type: {{ flow.traffic_type }}
+ rfc2544:
+ allowed_drop_rate: {{ flow.rfc2544.allowed_drop_rate }}
+ vnf__0:
+ rules: acl_1rule.yaml
+ vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}}
+ ixia_profile: ../../traffic_profiles/ixia/ixia_ipv4_profile_{{ num_vnfs }}_port.ixncfg
+
+ runner:
+ type: Iteration
+ iterations: 10
+ interval: 35
+contexts:
+ - name: yardstick
+ type: Node
+ file: /etc/yardstick/nodes/ixia_correlated_{{num_vnfs}}.yaml
+ - type: Node
+ file: /etc/yardstick/nodes/pod_bm_vnf_{{num_vnfs}}.yaml
+ name: yardstick
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
index 000000000..cf60ba1f9
--- /dev/null
+++ b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml
@@ -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
index 000000000..b12a62a1b
--- /dev/null
+++ b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_2.yaml
@@ -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
index 000000000..64633eb77
--- /dev/null
+++ b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml
@@ -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
index 000000000..767ecbc1c
--- /dev/null
+++ b/samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml
@@ -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/nsut/vfw/tc_ovs_vfw_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_correlated_scale_out_template.yaml
index a82cece07..3606a5585 100644
--- a/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_correlated_scale_out_template.yaml
+++ b/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_correlated_scale_out_template.yaml
@@ -17,7 +17,7 @@ schema: yardstick:task:0.1
scenarios:
- type: NSPerf
traffic_profile: ../../traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml
- topology: vfw-tg-topology-scale-out-{{ num_vnfs }}.yaml
+ topology: vfw-tg-topology-ixia-correlated-scale-out-{{ num_vnfs }}.yaml
nodes:
tg__0: tg__0.yardstick
tg__1: tg__1.yardstick
diff --git a/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_scale_out_template.yaml b/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_scale_out_template.yaml
index 10e8e20cd..c263a7688 100644
--- a/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_scale_out_template.yaml
+++ b/samples/vnf_samples/nsut/vfw/tc_ovs_vfw_udp_ixia_scale_out_template.yaml
@@ -45,6 +45,7 @@ scenarios:
rules: acl_1rule.yaml
vnf_config: {lb_config: '{{flow.vnf_config.lb_config}}', lb_count: {{flow.vnf_config.lb_count}} , worker_config: '{{flow.vnf_config.worker_config}}', worker_threads: {{flow.vnf_config.worker_threads}}}
{% endfor %}
+ ixia_profile: ../../traffic_profiles/ixia/ixia_ipv4_profile_{{num_vnfs * 2}}_port.ixncfg
runner:
type: Iteration
iterations: 10
diff --git a/samples/vnf_samples/nsut/vfw/tc_sriov_vfw_udp_ixia_correlated_scale_out_template.yaml b/samples/vnf_samples/nsut/vfw/tc_sriov_vfw_udp_ixia_correlated_scale_out_template.yaml
index efa51a459..d7016964a 100644
--- a/samples/vnf_samples/nsut/vfw/tc_sriov_vfw_udp_ixia_correlated_scale_out_template.yaml
+++ b/samples/vnf_samples/nsut/vfw/tc_sriov_vfw_udp_ixia_correlated_scale_out_template.yaml
@@ -17,7 +17,7 @@ schema: yardstick:task:0.1
scenarios:
- type: NSPerf
traffic_profile: ../../traffic_profiles/ipv4_throughput-ixia-{{ num_vnfs }}.yaml
- topology: vfw-tg-topology-ixia-scale-out-{{ num_vnfs }}.yaml
+ topology: vfw-tg-topology-ixia-correlated-scale-out-{{ num_vnfs }}.yaml
nodes:
tg__0: tg__0.yardstick
tg__1: tg__1.yardstick
diff --git a/samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-correlated-multi-port.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-correlated-multi-port.yaml
new file mode 100644
index 000000000..2d950b305
--- /dev/null
+++ b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-correlated-multi-port.yaml
@@ -0,0 +1,54 @@
+# 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.
+
+nsd:nsd-catalog:
+ nsd:
+ - id: 3-tg_vnf-topology
+ name: 3-tg_vnf-topology
+ short-name: 3-tg_vnf-topology
+ description: 3-tg_vnf-topology
+ constituent-vnfd:
+ - member-vnf-index: '0'
+ vnfd-id-ref: tg__0
+ VNF model: ../../vnf_descriptors/ixia_rfc2544_tpl.yaml
+ - 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/vfw_vnf.yaml #VNF type
+
+ vld:
+{% for vnf_num in range(num_vnfs|int) %}
+ - id: uplink_{{ vnf_num }}
+ name: "tg__0 to vnf__0 link {{ (vnf_num * 2) }}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2 }}
+ vnfd-id-ref: tg__0
+ - member-vnf-index-ref: 2
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: vnf__0
+ - id: downlink_{{ vnf_num }}
+ name: "vnf__{{ vnf_num }} to tg__1 link {{ (vnf_num * 2) + 1}}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: 2
+ vnfd-connection-point-ref: xe{{vnf_num * 2 + 1}}
+ vnfd-id-ref: vnf__0
+ - 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/vfw/vfw-tg-topology-ixia-multi-port.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-multi-port.yaml
new file mode 100644
index 000000000..6e2d360b9
--- /dev/null
+++ b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-ixia-multi-port.yaml
@@ -0,0 +1,51 @@
+# 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.
+
+nsd:nsd-catalog:
+ nsd:
+ - id: 2tg-topology
+ name: 2tg-topology
+ short-name: 2tg-topology
+ description: 2tg-topology
+ constituent-vnfd:
+ - member-vnf-index: '0'
+ vnfd-id-ref: tg__0
+ VNF model: ../../vnf_descriptors/ixia_rfc2544_tpl.yaml
+ - member-vnf-index: '1'
+ vnfd-id-ref: vnf__0
+ VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type
+
+ vld:
+{% for vnf_num in range(num_vnfs|int) %}
+ - id: uplink_{{ vnf_num }}
+ name: "tg__0 to vnf__0 link {{ (vnf_num * 2) }}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: tg__0
+ - member-vnf-index-ref: '1'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: vnf__0
+ - id: downlink_{{ vnf_num }}
+ name: "vnf__0 to tg__0 link {{ (vnf_num * 2) + 1}}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '1'
+ vnfd-connection-point-ref: xe{{ (vnf_num * 2) + 1}}
+ vnfd-id-ref: vnf__0
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ (vnf_num * 2) + 1}}
+ vnfd-id-ref: tg__0
+{% endfor %}
diff --git a/samples/vnf_samples/nsut/vfw/vfw-tg-topology-multi-port.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-multi-port.yaml
new file mode 100644
index 000000000..b5ad71c92
--- /dev/null
+++ b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-multi-port.yaml
@@ -0,0 +1,51 @@
+# 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.
+
+nsd:nsd-catalog:
+ nsd:
+ - id: 2tg-topology
+ name: 2tg-topology
+ short-name: 2tg-topology
+ description: 2tg-topology
+ 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: vnf__0
+ VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type
+
+ vld:
+{% for vnf_num in range(num_vnfs|int) %}
+ - id: uplink_{{ vnf_num }}
+ name: "tg__0 to vnf__0 link {{ (vnf_num * 2) }}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: tg__0
+ - member-vnf-index-ref: '1'
+ vnfd-connection-point-ref: xe{{ vnf_num * 2}}
+ vnfd-id-ref: vnf__0
+ - id: downlink_{{ vnf_num }}
+ name: "vnf__0 to tg__0 link {{ (vnf_num * 2) + 1}}"
+ type: ELAN
+ vnfd-connection-point-ref:
+ - member-vnf-index-ref: '1'
+ vnfd-connection-point-ref: xe{{ (vnf_num * 2) + 1}}
+ vnfd-id-ref: vnf__0
+ - member-vnf-index-ref: '0'
+ vnfd-connection-point-ref: xe{{ (vnf_num * 2) + 1}}
+ vnfd-id-ref: tg__0
+{% endfor %}
diff --git a/samples/vnf_samples/nsut/vfw/vfw.cfg b/samples/vnf_samples/nsut/vfw/vfw.cfg
index 8bab8d047..c0b11419c 100644
--- a/samples/vnf_samples/nsut/vfw/vfw.cfg
+++ b/samples/vnf_samples/nsut/vfw/vfw.cfg
@@ -20,8 +20,6 @@ type = ARPICMP
core = 1
pktq_in = SWQ4
pktq_out = TXQ0.0 TXQ1.0 TXQ2.0 TXQ3.0
-arp_route_tbl = (c0102814,fffff000,1,c0102814) (c0106414,fffff000,0,c0106414)
-nd_route_tbl = (0064:ff9b:0:0:0:0:9810:6414,120,0,0064:ff9b:0:0:0:0:9810:6414)
pktq_in_prv = RXQ0.0
prv_to_pub_map = (0,1)
[PIPELINE2]
diff --git a/samples/vnf_samples/traffic_profiles/example.yaml b/samples/vnf_samples/traffic_profiles/example.yaml
index 443fb88cf..7c6a8cb38 100644
--- a/samples/vnf_samples/traffic_profiles/example.yaml
+++ b/samples/vnf_samples/traffic_profiles/example.yaml
@@ -24,7 +24,7 @@ traffic_profile:
flow_number: {{ flow.number }} #This decides how many frames should be generated. Each frame should have a random of the field
# that specifies a range (e.g. ipv4 address, port)
-private:
+uplink:
- ipv4_1:
outer_l2:
framesize:
@@ -139,7 +139,7 @@ private:
srcport: {{ get(flow.inner_srcport, "3002") }}
dstport: {{ get(flow.inner_dstport, "3001") }}
-public:
+downlink:
- ipv4_2:
outer_l2:
framesize:
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
index 000000000..f862abdb7
--- /dev/null
+++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput-10.yaml
@@ -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
index 000000000..328e76fb6
--- /dev/null
+++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput-2.yaml
@@ -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
index 000000000..c03b28d60
--- /dev/null
+++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput-4.yaml
@@ -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') }}"
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
index 215433b54..75927d40d 100644
--- a/samples/vnf_samples/traffic_profiles/ipv4_throughput-cgnapt-scale-out.yaml
+++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput-cgnapt-scale-out.yaml
@@ -50,6 +50,7 @@ traffic_profile:
[% for vnf_num in range(num_vnfs|int) %]
uplink_[[ vnf_num ]]:
ipv4:
+ id: [[vnf_num * 2 + 1]]
outer_l2:
framesize:
64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
@@ -74,6 +75,7 @@ uplink_[[ vnf_num ]]:
count: "{{get(flow, 'flow.count', '1') }}"
downlink_[[ vnf_num ]]:
ipv4:
+ id: [[vnf_num * 2 + 2]]
outer_l2:
framesize:
64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
diff --git a/samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-correlated-scale-out.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-correlated-scale-out.yaml
new file mode 100644
index 000000000..500163205
--- /dev/null
+++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput-ixia-correlated-scale-out.yaml
@@ -0,0 +1,76 @@
+#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: IXIARFC2544Profile # 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:
+ id: [[vnf_num + 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_[[ 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-4001') }}"
+ count: "{{get(flow, 'flow.count', '1') }}"
+[% endfor %]
diff --git a/samples/vnf_samples/traffic_profiles/ipv4_throughput-scale-out.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput-scale-out.yaml
index 821c3c830..73c41099f 100644
--- a/samples/vnf_samples/traffic_profiles/ipv4_throughput-scale-out.yaml
+++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput-scale-out.yaml
@@ -50,6 +50,7 @@ traffic_profile:
[% for vnf_num in range(num_vnfs|int) %]
uplink_[[ vnf_num ]]:
ipv4:
+ id: [[vnf_num * 2 + 1]]
outer_l2:
framesize:
64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
@@ -74,6 +75,7 @@ uplink_[[ vnf_num ]]:
count: "{{get(flow, 'flow.count', '1') }}"
downlink_[[ vnf_num ]]:
ipv4:
+ id: [[vnf_num * 2 + 2]]
outer_l2:
framesize:
64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
@@ -85,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.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput.yaml
index 7d51122f4..4e72fde1a 100644
--- a/samples/vnf_samples/traffic_profiles/ipv4_throughput.yaml
+++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput.yaml
@@ -47,6 +47,7 @@ traffic_profile:
uplink_0:
ipv4:
+ id: 1
outer_l2:
framesize:
64B: "{{get(imix, 'imix.uplink.64B', '0') }}"
@@ -72,6 +73,7 @@ uplink_0:
count: "{{get(flow, 'flow.count', '1') }}"
downlink_0:
ipv4:
+ id: 2
outer_l2:
framesize:
64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
@@ -95,3 +97,55 @@ downlink_0:
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', '10.0.2.1-10.0.2.255') }}"
+ dstip4: "{{get(flow, 'flow.dst_ip_1', '10.0.3.1-10.0.3.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', '10.0.3.1-10.0.3.255') }}"
+ dstip4: "{{get(flow, 'flow.src_ip_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-10.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-10.yaml
new file mode 100644
index 000000000..80d0872d5
--- /dev/null
+++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-10.yaml
@@ -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
index 000000000..d6c9164a0
--- /dev/null
+++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-2.yaml
@@ -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
index 000000000..55610b048
--- /dev/null
+++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-4.yaml
@@ -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
index 000000000..d455bccea
--- /dev/null
+++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt-scale-out.yaml
@@ -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 %]
diff --git a/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt.yaml
index 60a78a0c6..61cbd4e4e 100644
--- a/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt.yaml
+++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput_cgnapt.yaml
@@ -47,6 +47,7 @@ traffic_profile:
uplink_0:
ipv4:
+ id: 1
outer_l2:
framesize:
64B: "{{get(imix, 'imix.uplink.64B', '0') }}"
@@ -72,6 +73,7 @@ uplink_0:
count: "{{get(flow, 'flow.count', '1') }}"
downlink_0:
ipv4:
+ id: 2
outer_l2:
framesize:
64B: "{{ get(imix, 'imix.downlink.64B', '0') }}"
@@ -92,6 +94,6 @@ downlink_0:
ttl: 32
dscp: 0
outer_l4:
- srcport: "{{get(flow, 'flow.dst_port_0', '1234-4321') }}"
- dstport: "{{get(flow, 'flow.src_port_0', '2001-4001') }}"
+ srcport: "{{get(flow, 'flow.dst_port_0', '1-65535') }}"
+ dstport: "{{get(flow, 'flow.src_port_0', '1-65535') }}"
count: "{{get(flow, 'flow.count', '1') }}"
diff --git a/samples/vnf_samples/traffic_profiles/ipv4_throughput_vpe.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput_vpe.yaml
index 8bac32404..20bc6568d 100644
--- a/samples/vnf_samples/traffic_profiles/ipv4_throughput_vpe.yaml
+++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput_vpe.yaml
@@ -47,6 +47,7 @@ traffic_profile:
uplink_0:
ipv4:
+ id: 1
outer_l2:
framesize:
64B: "{{ get(imix, 'imix.uplink.64B', '0') }}"
@@ -83,6 +84,7 @@ uplink_0:
count: "{{get(flow, 'flow.count', '1') }}"
downlink_0:
ipv4:
+ id: 2
outer_l2:
framesize:
64B: "{{ get(imix, 'imix.uplink.imix_small', '0') }}"
diff --git a/samples/vnf_samples/traffic_profiles/prox_lb.yaml b/samples/vnf_samples/traffic_profiles/prox_lb.yaml
index 1461bc399..85675ba9f 100644
--- a/samples/vnf_samples/traffic_profiles/prox_lb.yaml
+++ b/samples/vnf_samples/traffic_profiles/prox_lb.yaml
@@ -19,7 +19,7 @@ description: Load Balancer 1-to-4 port
traffic_profile:
traffic_type: ProxBinSearchProfile
- tolerated_loss: 80.0
+ tolerated_loss: 0.001
test_precision: 0.01
packet_sizes: [64]
duration: 5
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml
index 046d51731..852424d8e 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc019.yaml
@@ -13,6 +13,7 @@ description: >
Sample test case for the HA of controller node Openstack service.
{% set file = file or '/etc/yardstick/pod.yaml' %}
+{% set attack_host = attack_host or "node1" %}
scenarios:
-
@@ -21,7 +22,7 @@ scenarios:
attackers:
- fault_type: "kill-process"
process_name: "nova-api"
- host: node1
+ host: {{attack_host}}
wait_time: 10
monitors:
@@ -33,14 +34,14 @@ scenarios:
max_outage_time: 5
- monitor_type: "process"
process_name: "nova-api"
- host: node1
+ host: {{attack_host}}
monitor_time: 30
monitor_number: 3
sla:
max_recover_time: 30
nodes:
- node1: node1.LF
+ {{attack_host}}: {{attack_host}}.LF
runner:
type: Iteration
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml
index b14fc4554..ea4fc3b24 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc043.yaml
@@ -13,16 +13,16 @@ description: >
Yardstick TC043 config file;
Measure latency between NFVI nodes using ping.
-{% set host = host or "node1.LF" %}
-{% set target = target or "node2.LF" %}
+{% set host = host or "node1" %}
+{% set target = target or "node2" %}
{% set file = file or '/etc/yardstick/pod.yaml' %}
scenarios:
-
type: Ping
options:
packetsize: 100
- host: {{host}}
- target: {{target}}
+ host: {{host}}.LF
+ target: {{target}}.LF
runner:
type: Duration
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml
index dfe44ed12..f9d9dde48 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc045.yaml
@@ -13,6 +13,7 @@ description: >
Test case for TC045 :Control node Openstack service down - neutron server.
{% set file = file or '/etc/yardstick/pod.yaml' %}
+{% set attack_host = attack_host or "node1" %}
scenarios:
-
@@ -21,7 +22,7 @@ scenarios:
attackers:
- fault_type: "kill-process"
process_name: "neutron-server"
- host: node1
+ host: {{attack_host}}
monitors:
- monitor_type: "openstack-cmd"
@@ -32,14 +33,14 @@ scenarios:
max_outage_time: 5
- monitor_type: "process"
process_name: "neutron-server"
- host: node1
+ host: {{attack_host}}
monitor_time: 30
monitor_number: 3
sla:
max_recover_time: 30
nodes:
- node1: node1.LF
+ {{attack_host}}: {{attack_host}}.LF
runner:
type: Duration
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml
index 1d553268c..129489968 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc046.yaml
@@ -13,6 +13,7 @@ description: >
Test case for TC046 :Control node Openstack service down - keystone.
{% set file = file or '/etc/yardstick/pod.yaml' %}
+{% set attack_host = attack_host or "node1" %}
scenarios:
-
@@ -21,7 +22,7 @@ scenarios:
attackers:
- fault_type: "kill-process"
process_name: "keystone"
- host: node1
+ host: {{attack_host}}
monitors:
- monitor_type: "openstack-cmd"
@@ -32,14 +33,14 @@ scenarios:
max_outage_time: 5
- monitor_type: "process"
process_name: "keystone"
- host: node1
+ host: {{attack_host}}
monitor_time: 30
monitor_number: 3
sla:
max_recover_time: 30
nodes:
- node1: node1.LF
+ {{attack_host}}: {{attack_host}}.LF
runner:
type: Duration
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml
index 33bc5cd5f..4a0b65b8d 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc047.yaml
@@ -13,6 +13,7 @@ description: >
Test case for TC047 :Control node Openstack service down - glance api.
{% set file = file or '/etc/yardstick/pod.yaml' %}
+{% set attack_host = attack_host or "node1" %}
scenarios:
-
@@ -21,7 +22,7 @@ scenarios:
attackers:
- fault_type: "kill-process"
process_name: "glance-api"
- host: node1
+ host: {{attack_host}}
monitors:
- monitor_type: "openstack-cmd"
@@ -32,14 +33,14 @@ scenarios:
max_outage_time: 5
- monitor_type: "process"
process_name: "glance-api"
- host: node1
+ host: {{attack_host}}
monitor_time: 30
monitor_number: 3
sla:
max_recover_time: 30
nodes:
- node1: node1.LF
+ {{attack_host}}: {{attack_host}}.LF
runner:
type: Duration
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml
index a13afe3bf..a1629c6d0 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc048.yaml
@@ -13,6 +13,7 @@ description: >
Test case for TC048 :Control node Openstack service down - cinder api.
{% set file = file or '/etc/yardstick/pod.yaml' %}
+{% set attack_host = attack_host or "node1" %}
scenarios:
-
@@ -21,7 +22,7 @@ scenarios:
attackers:
- fault_type: "kill-process"
process_name: "cinder-api"
- host: node1
+ host: {{attack_host}}
monitors:
- monitor_type: "openstack-cmd"
@@ -32,14 +33,14 @@ scenarios:
max_outage_time: 5
- monitor_type: "process"
process_name: "cinder-api"
- host: node1
+ host: {{attack_host}}
monitor_time: 30
monitor_number: 3
sla:
max_recover_time: 30
nodes:
- node1: node1.LF
+ {{attack_host}}: {{attack_host}}.LF
runner:
type: Duration
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc049.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc049.yaml
index 394b98721..7b8383e4e 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc049.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc049.yaml
@@ -13,6 +13,7 @@ description: >
Test case for TC049 :Control node Openstack service down - swift proxy.
{% set file = file or '/etc/yardstick/pod.yaml' %}
+{% set attack_host = attack_host or "node1" %}
scenarios:
-
@@ -21,7 +22,7 @@ scenarios:
attackers:
- fault_type: "kill-process"
process_name: "swift-proxy"
- host: node1
+ host: {{attack_host}}
monitors:
- monitor_type: "openstack-cmd"
@@ -32,14 +33,14 @@ scenarios:
max_outage_time: 5
- monitor_type: "process"
process_name: "swift-proxy"
- host: node1
+ host: {{attack_host}}
monitor_time: 30
monitor_number: 3
sla:
max_recover_time: 30
nodes:
- node1: node1.LF
+ {{attack_host}}: {{attack_host}}.LF
runner:
type: Duration
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc050.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc050.yaml
index 303dd4216..b765feb68 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc050.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc050.yaml
@@ -14,6 +14,7 @@ description: >
This test case is written by new scenario-based HA testing framework.
{% set file = file or '/etc/yardstick/pod.yaml' %}
+{% set attack_host = attack_host or "node1" %}
{% set external_net = external_net or 'br-ex' %}
{% set management_net = management_net or 'br-mgmt' %}
{% set storage_net = storage_net or 'br-storage' %}
@@ -26,7 +27,7 @@ scenarios:
attackers:
-
fault_type: "general-attacker"
- host: node1
+ host: {{attack_host}}
key: "close-br-public"
attack_key: "close-interface"
action_parameter:
@@ -36,7 +37,7 @@ scenarios:
-
fault_type: "general-attacker"
- host: node1
+ host: {{attack_host}}
key: "close-br-mgmt"
attack_key: "close-interface"
action_parameter:
@@ -46,7 +47,7 @@ scenarios:
-
fault_type: "general-attacker"
- host: node1
+ host: {{attack_host}}
key: "close-br-storage"
attack_key: "close-interface"
action_parameter:
@@ -56,7 +57,7 @@ scenarios:
-
fault_type: "general-attacker"
- host: node1
+ host: {{attack_host}}
key: "close-br-private"
attack_key: "close-interface"
action_parameter:
@@ -145,7 +146,7 @@ scenarios:
nodes:
- node1: node1.LF
+ {{attack_host}}: {{attack_host}}.LF
runner:
type: Duration
duration: 1
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc051.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc051.yaml
index 98a08b7ca..aade1aed2 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc051.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc051.yaml
@@ -14,6 +14,7 @@ description: >
This test case is written by new scenario-based HA testing framework.
{% set file = file or '/etc/yardstick/pod.yaml' %}
+{% set attack_host = attack_host or "node1" %}
scenarios:
-
@@ -22,7 +23,7 @@ scenarios:
attackers:
-
fault_type: "general-attacker"
- host: node1
+ host: {{attack_host}}
key: "stress-cpu"
attack_key: "stress-cpu"
@@ -92,7 +93,7 @@ scenarios:
nodes:
- node1: node1.LF
+ {{attack_host}}: {{attack_host}}.LF
runner:
type: Duration
duration: 1
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc052.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc052.yaml
index 75835ebf5..62cabd1a2 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc052.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc052.yaml
@@ -14,6 +14,7 @@ description: >
This test case is written by new scenario-based HA testing framework.
{% set file = file or '/etc/yardstick/pod.yaml' %}
+{% set attack_host = attack_host or "node1" %}
scenarios:
-
@@ -22,7 +23,7 @@ scenarios:
attackers:
-
fault_type: "general-attacker"
- host: node1
+ host: {{attack_host}}
key: "block-io"
attack_key: "block-io"
@@ -76,7 +77,7 @@ scenarios:
index: 4
nodes:
- node1: node1.LF
+ {{attack_host}}: {{attack_host}}.LF
runner:
type: Duration
duration: 1
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml
index f987e2b45..64c67c0b3 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc053.yaml
@@ -14,6 +14,7 @@ description: >
This test case is written by new scenario-based HA testing framework.
{% set file = file or '/etc/yardstick/pod.yaml' %}
+{% set attack_host = attack_host or "node1" %}
scenarios:
-
@@ -22,7 +23,7 @@ scenarios:
attackers:
-
fault_type: "kill-process"
- host: node1
+ host: {{attack_host}}
key: "kill-process"
process_name: "haproxy"
@@ -31,7 +32,7 @@ scenarios:
monitor_type: "process"
key: "service-status"
process_name: "haproxy"
- host: node1
+ host: {{attack_host}}
monitor_time: 30
monitor_number: 3
sla:
@@ -61,7 +62,7 @@ scenarios:
index: 3
nodes:
- node1: node1.LF
+ {{attack_host}}: {{attack_host}}.LF
runner:
type: Duration
duration: 1
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc055.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc055.yaml
index 10a7a7108..8905b9cdd 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc055.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc055.yaml
@@ -19,14 +19,14 @@ description: >
cache size per CPU, total cache size;
HT (Hyper-Thread) support status, 1 for open, 0 for close.
-{% set host = host or "node5.yardstick-TC055" %}
{% set file = file or '/etc/yardstick/pod.yaml' %}
+{% set host = host or "node5" %}
scenarios:
-
type: ComputeCapacity
nodes:
- host: {{host}}
+ host: {{host}}.yardstick-TC055
runner:
type: Iteration
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc063.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc063.yaml
index 254c214d2..50d0c40e1 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc063.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc063.yaml
@@ -14,7 +14,7 @@ description: >
Measure disk size, block size and disk utilization using fdisk and iostat.
{% set file = file or '/etc/yardstick/pod.yaml' %}
-{% set node = node or "node5" %}
+{% set host = host or "node5" %}
scenarios:
-
@@ -22,7 +22,7 @@ scenarios:
options:
test_type: "disk_size"
- host: {{node}}.yardstick-TC063
+ host: {{host}}.yardstick-TC063
runner:
type: Iteration
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc073.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc073.yaml
index fb40257f3..54282cbb1 100755
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc073.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc073.yaml
@@ -18,8 +18,8 @@ description: >
In req/rsp test, TCP_RR TCP_CRR UDP_RR can be used;
req_rsp_size is option of req/rsp test;
-{% set host = host or "node1.LF" %}
-{% set target = target or "node2.LF" %}
+{% set host = host or "node1" %}
+{% set target = target or "node2" %}
{% set file = file or '/etc/yardstick/pod.yaml' %}
scenarios:
-
@@ -29,8 +29,8 @@ scenarios:
send_msg_size: 1024
duration: 20
- host: {{host}}
- target: {{target}}
+ host: {{host}}.LF
+ target: {{target}}.LF
runner:
type: Iteration
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc075.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc075.yaml
index d19b3c4e7..4954249b3 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc075.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc075.yaml
@@ -14,13 +14,13 @@ description: >
Measure network capacity and scale.
Measure number of connections, number of frames received;
-{% set host = host or "node1.LF" %}
+{% set host = host or "node1" %}
{% set file = file or '/etc/yardstick/pod.yaml' %}
scenarios:
-
type: NetworkCapacity
- host: {{host}}
+ host: {{host}}.LF
runner:
type: Iteration
diff --git a/tests/opnfv/test_cases/opnfv_yardstick_tc078.yaml b/tests/opnfv/test_cases/opnfv_yardstick_tc078.yaml
index 94256125f..d20045b25 100644
--- a/tests/opnfv/test_cases/opnfv_yardstick_tc078.yaml
+++ b/tests/opnfv/test_cases/opnfv_yardstick_tc078.yaml
@@ -14,6 +14,7 @@ description: >
Measure CPU performance using SPEC CPU2006;
{% set file = file or "/etc/yardstick/pod.yaml" %}
+{% set host = host or 'node1' %}
scenarios:
-
@@ -26,7 +27,7 @@ scenarios:
runspec_size: ref
runspec_rate: 1
- host: node1.yardstick-TC078
+ host: {{host}}.yardstick-TC078
runner:
type: Iteration
diff --git a/tests/opnfv/test_suites/opnfv_os-nosdn-openbaton-ha_daily.yaml b/tests/opnfv/test_suites/opnfv_os-nosdn-openbaton-ha_daily.yaml
new file mode 100644
index 000000000..d1b4cce1a
--- /dev/null
+++ b/tests/opnfv/test_suites/opnfv_os-nosdn-openbaton-ha_daily.yaml
@@ -0,0 +1,62 @@
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+# os-nosdn-openbaton-ha daily task suite
+
+schema: "yardstick:suite:0.1"
+
+name: "os-nosdn-openbaton-ha"
+test_cases_dir: "tests/opnfv/test_cases/"
+test_cases:
+-
+ file_name: opnfv_yardstick_tc002.yaml
+-
+ file_name: opnfv_yardstick_tc005.yaml
+-
+ file_name: opnfv_yardstick_tc010.yaml
+-
+ file_name: opnfv_yardstick_tc011.yaml
+-
+ file_name: opnfv_yardstick_tc012.yaml
+-
+ file_name: opnfv_yardstick_tc014.yaml
+-
+ file_name: opnfv_yardstick_tc037.yaml
+-
+ file_name: opnfv_yardstick_tc055.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node5.yardstick-TC055"}'
+-
+ file_name: opnfv_yardstick_tc063.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node5.yardstick-TC063"}'
+-
+ file_name: opnfv_yardstick_tc069.yaml
+-
+ file_name: opnfv_yardstick_tc070.yaml
+-
+ file_name: opnfv_yardstick_tc071.yaml
+-
+ file_name: opnfv_yardstick_tc072.yaml
+-
+ file_name: opnfv_yardstick_tc075.yaml
+ constraint:
+ installer: compass
+ pod: huawei-pod1
+ task_args:
+ huawei-pod1: '{"file": "etc/yardstick/nodes/compass_sclab_physical/pod.yaml",
+ "host": "node1.LF"}'
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_iniparser.py b/tests/unit/network_services/helpers/test_iniparser.py
index 1ad8df9c6..bd27b497e 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_iniparser.py
+++ b/tests/unit/network_services/helpers/test_iniparser.py
@@ -27,10 +27,10 @@ stl_patch = mock.patch.dict("sys.modules", STL_MOCKS)
stl_patch.start()
if stl_patch:
- from yardstick.network_services.vnf_generic.vnf.iniparser import ParseError
- from yardstick.network_services.vnf_generic.vnf.iniparser import LineParser
- from yardstick.network_services.vnf_generic.vnf.iniparser import BaseParser
- from yardstick.network_services.vnf_generic.vnf.iniparser import ConfigParser
+ from yardstick.network_services.helpers.iniparser import ParseError
+ from yardstick.network_services.helpers.iniparser import LineParser
+ from yardstick.network_services.helpers.iniparser import BaseParser
+ from yardstick.network_services.helpers.iniparser import ConfigParser
PARSE_TEXT_1 = """\
@@ -141,7 +141,7 @@ class TestConfigParser(unittest.TestCase):
return internal_open
- @mock.patch('yardstick.network_services.vnf_generic.vnf.iniparser.open')
+ @mock.patch('yardstick.network_services.helpers.iniparser.open')
def test_parse(self, mock_open):
mock_open.side_effect = self.make_open(PARSE_TEXT_1)
@@ -182,7 +182,7 @@ class TestConfigParser(unittest.TestCase):
self.assertEqual(config_parser.find_section_index('section1'), 1)
self.assertEqual(config_parser.find_section_index('section3'), -1)
- @mock.patch('yardstick.network_services.vnf_generic.vnf.iniparser.open')
+ @mock.patch('yardstick.network_services.helpers.iniparser.open')
def test_parse_2(self, mock_open):
mock_open.side_effect = self.make_open(PARSE_TEXT_2)
@@ -200,7 +200,7 @@ class TestConfigParser(unittest.TestCase):
self.assertEqual(config_parser.sections, expected)
- @mock.patch('yardstick.network_services.vnf_generic.vnf.iniparser.open')
+ @mock.patch('yardstick.network_services.helpers.iniparser.open')
def test_parse_negative(self, mock_open):
bad_text_dict = {
'no section': PARSE_TEXT_BAD_1,
diff --git a/tests/unit/network_services/helpers/test_samplevnf_helper.py b/tests/unit/network_services/helpers/test_samplevnf_helper.py
index 0ac363f28..05acdfaa9 100644
--- a/tests/unit/network_services/helpers/test_samplevnf_helper.py
+++ b/tests/unit/network_services/helpers/test_samplevnf_helper.py
@@ -211,6 +211,7 @@ class TestMultiPortConfig(unittest.TestCase):
opnfv_vnf.generate_script_data = \
mock.Mock(return_value={'link_config': 0, 'arp_config': '',
'arp_config6': '', 'actions': '',
+ 'arp_route_tbl': '', 'arp_route_tbl6': '',
'rules': ''})
opnfv_vnf.port_pair_list = [("xe0", "xe1")]
self.assertIsNotNone(opnfv_vnf.generate_script(self.VNFD))
@@ -796,7 +797,7 @@ class TestMultiPortConfig(unittest.TestCase):
def test_generate_arp_route_tbl(self, *_):
topology_file = mock.Mock()
config_tpl = mock.Mock()
- tmp_file = mock.Mock()
+ tmp_file = ""
vnfd_mock = mock.MagicMock()
vnfd_mock.port_num.side_effect = ['32', '1', '987']
vnfd_mock.find_interface.side_effect = [
@@ -823,8 +824,9 @@ class TestMultiPortConfig(unittest.TestCase):
opnfv_vnf = MultiPortConfig(topology_file, config_tpl, tmp_file, vnfd_mock)
opnfv_vnf.all_ports = [3, 2, 5]
- expected = '(0a141000,fffff000,32,0a141e28) (0ac81e00,ffffff00,1,0ac81e28) ' \
- '(0a000000,ff000000,987,0a140328)'
+ expected = 'routeadd net 32 10.20.30.40 0xfffff000\n' \
+ 'routeadd net 1 10.200.30.40 0xffffff00\n' \
+ 'routeadd net 987 10.20.3.40 0xff000000'
result = opnfv_vnf.generate_arp_route_tbl()
self.assertEqual(result, expected)
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py
index b0ef1da91..832509ea7 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_cgnapt_vnf.py
@@ -72,13 +72,12 @@ link 1 up
self.assertNotIn("This is a header", out)
def test__get_cgnapt_config(self):
- vnfd_helper = mock.Mock()
+ vnfd_helper = mock.MagicMock()
vnfd_helper.port_pairs.uplink_ports = [{"name": 'a'}, {"name": "b"}, {"name": "c"}]
helper = CgnaptApproxSetupEnvHelper(vnfd_helper, mock.Mock(), mock.Mock())
- helper._get_ports_gateway = mock.Mock(side_effect=[3, 5, 2])
- result = helper._get_cgnapt_config([{"name": 'a'}, {}, {"name": "b"}, {}, {"name": "c"}])
- self.assertEqual(result, [3, 5, 2])
+ result = helper._get_cgnapt_config()
+ self.assertIsNotNone(result)
def test_scale(self):
helper = CgnaptApproxSetupEnvHelper(mock.Mock(), mock.Mock(), mock.Mock())
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py
index 09060ff57..a6d40877d 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_prox_vnf.py
@@ -376,7 +376,7 @@ class TestProxApproxVnf(unittest.TestCase):
return file_path
@mock.patch('yardstick.benchmark.scenarios.networking.vnf_generic.open', create=True)
- @mock.patch('yardstick.network_services.vnf_generic.vnf.iniparser.open', create=True)
+ @mock.patch('yardstick.network_services.helpers.iniparser.open', create=True)
@mock.patch(SSH_HELPER)
def test_run_prox(self, ssh, *_):
mock_ssh(ssh)
diff --git a/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py
index 1e6bc1a13..6c102ed59 100644
--- a/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py
+++ b/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py
@@ -360,15 +360,6 @@ class TestSetupEnvHelper(unittest.TestCase):
with self.assertRaises(NotImplementedError):
setup_env_helper.build_config()
- def test__get_ports_gateway(self):
- vnfd_helper = VnfdHelper(self.VNFD_0)
- setup_env_helper = SetupEnvHelper(vnfd_helper, mock.Mock(), mock.Mock())
- result = setup_env_helper._get_ports_gateway("xe0")
- self.assertEqual(result, "152.16.100.20")
-
- result = setup_env_helper._get_ports_gateway("xe123")
- self.assertIsNone(result)
-
def test_setup_vnf_environment(self):
setup_env_helper = SetupEnvHelper(mock.Mock(), mock.Mock(), mock.Mock())
self.assertIsNone(setup_env_helper.setup_vnf_environment())
@@ -1886,6 +1877,7 @@ class TestSampleVnf(unittest.TestCase):
vnfd = self.VNFD['vnfd:vnfd-catalog']['vnfd'][0]
sample_vnf = SampleVNF('vnf1', vnfd)
sample_vnf.APP_NAME = 'sample1'
+ sample_vnf.WAIT_TIME_FOR_SCRIPT = 0
sample_vnf._start_server = mock.Mock(return_value=0)
sample_vnf._vnf_process = mock.MagicMock()
sample_vnf._vnf_process.exitcode = 0
diff --git a/yardstick/benchmark/core/task.py b/yardstick/benchmark/core/task.py
index 53298d8d3..9b1b3f851 100644
--- a/yardstick/benchmark/core/task.py
+++ b/yardstick/benchmark/core/task.py
@@ -28,6 +28,7 @@ from jinja2 import Environment
from yardstick.benchmark.contexts.base import Context
from yardstick.benchmark.runners import base as base_runner
+from yardstick.common.constants import CONF_FILE
from yardstick.common.yaml_loader import yaml_load
from yardstick.dispatcher.base import Base as DispatcherBase
from yardstick.common.task_template import TaskTemplate
@@ -36,10 +37,8 @@ from yardstick.common import constants
from yardstick.common.html_template import report_template
output_file_default = "/tmp/yardstick.out"
-config_file = '/etc/yardstick/yardstick.conf'
test_cases_dir_default = "tests/opnfv/test_cases/"
LOG = logging.getLogger(__name__)
-JOIN_TIMEOUT = 60
class Task(object): # pragma: no cover
@@ -69,7 +68,7 @@ class Task(object): # pragma: no cover
self._set_log()
try:
- output_config = utils.parse_ini_file(config_file)
+ output_config = utils.parse_ini_file(CONF_FILE)
except Exception:
# all error will be ignore, the default value is {}
output_config = {}
@@ -260,7 +259,7 @@ class Task(object): # pragma: no cover
# Wait for runners to finish
for runner in runners:
- status = runner_join(runner, self.outputs, result)
+ status = runner_join(runner, background_runners, self.outputs, result)
if status != 0:
raise RuntimeError(
"{0} runner status {1}".format(runner.__execution_type__, status))
@@ -270,7 +269,7 @@ class Task(object): # pragma: no cover
for scenario in scenarios:
if not _is_background_scenario(scenario):
runner = self.run_one_scenario(scenario, output_file)
- status = runner_join(runner, self.outputs, result)
+ status = runner_join(runner, background_runners, self.outputs, result)
if status != 0:
LOG.error('Scenario NO.%s: "%s" ERROR!',
scenarios.index(scenario) + 1,
@@ -285,11 +284,11 @@ class Task(object): # pragma: no cover
# Wait for background runners to finish
for runner in background_runners:
- status = runner.join(self.outputs, result, JOIN_TIMEOUT)
+ status = runner.join(self.outputs, result)
if status is None:
# Nuke if it did not stop nicely
base_runner.Runner.terminate(runner)
- runner.join(self.outputs, result, JOIN_TIMEOUT)
+ runner.join(self.outputs, result)
base_runner.Runner.release(runner)
print("Background task ended")
@@ -641,13 +640,22 @@ def get_networks_from_nodes(nodes):
return networks
-def runner_join(runner, outputs, result):
+def runner_join(runner, background_runners, outputs, result):
"""join (wait for) a runner, exit process at runner failure
+ :param background_runners:
+ :type background_runners:
:param outputs:
:type outputs: dict
:param result:
:type result: list
"""
+ while runner.poll() is None:
+ outputs.update(runner.get_output())
+ result.extend(runner.get_result())
+ # drain all the background runner queues
+ for background in background_runners:
+ outputs.update(background.get_output())
+ result.extend(background.get_result())
status = runner.join(outputs, result)
base_runner.Runner.release(runner)
return status
diff --git a/yardstick/benchmark/runners/base.py b/yardstick/benchmark/runners/base.py
index 13718d793..a887fa5b3 100755
--- a/yardstick/benchmark/runners/base.py
+++ b/yardstick/benchmark/runners/base.py
@@ -210,6 +210,10 @@ class Runner(object):
QUEUE_JOIN_INTERVAL = 5
+ def poll(self, timeout=QUEUE_JOIN_INTERVAL):
+ self.process.join(timeout)
+ return self.process.exitcode
+
def join(self, outputs, result, interval=QUEUE_JOIN_INTERVAL):
while self.process.exitcode is None:
# drain the queue while we are running otherwise we won't terminate
diff --git a/yardstick/benchmark/scenarios/compute/qemu_migrate_benchmark.bash b/yardstick/benchmark/scenarios/compute/qemu_migrate_benchmark.bash
index d9a440c89..757553e8b 100644
--- a/yardstick/benchmark/scenarios/compute/qemu_migrate_benchmark.bash
+++ b/yardstick/benchmark/scenarios/compute/qemu_migrate_benchmark.bash
@@ -21,15 +21,24 @@ max_down_time=$6
OUTPUT_FILE=/tmp/output-qemu.log
+echo "To check the parameters:"
+echo "SRC: $src"
+echo "DST: $dst"
+echo "DST_IP: $dst_ip"
+echo "MIGRATE_PORT: $migrate_to_port"
+echo "DOWN_TIME: $max_down_time"
+
do_migrate()
{
+ echo "Execution of Live Migration"
+
echo "info status" | nc -U $src
# with no speed limit
- echo "migrate_set_speed 0" |nc -U $src
+ echo "migrate_set_speed 0" | nc -U $src
# set the expected max downtime
- echo "migrate_set_downtime ${max_down_time}" |nc -U $src
+ echo "migrate_set_downtime ${max_down_time}" | nc -U $src
# start live migration
- echo "migrate -d tcp:${dst_ip}:$migrate_to_port" |nc -U $src
+ echo "migrate -d tcp:${dst_ip}:${migrate_to_port}" | nc -U $src
# wait until live migration completed
status=""
while [ "${status}" == "" ]
@@ -38,14 +47,17 @@ do_migrate()
echo ${status}
sleep 1;
done
-} >/dev/null
+
+ echo "End of Live Migration"
+}
output_qemu()
{
+ echo "Checking status of Migration"
# print detail information
echo "info migrate" | nc -U $src
echo "quit" | nc -U $src
- echo "quit" | nc -u $dst
+ echo "quit" | nc -U $dst
sleep 5
echo "Migration executed successfully"
@@ -65,8 +77,11 @@ echo -e "{ \
# main entry
main()
{
+ echo "Perform LiveMigration"
do_migrate
+ echo "LiveMigration Status"
output_qemu
+ echo "LiveMigration JSON output "
output_json
}
main
diff --git a/yardstick/benchmark/scenarios/networking/ping.py b/yardstick/benchmark/scenarios/networking/ping.py
index 3bade73e2..e7d9beea8 100644
--- a/yardstick/benchmark/scenarios/networking/ping.py
+++ b/yardstick/benchmark/scenarios/networking/ping.py
@@ -24,6 +24,8 @@ LOG = logging.getLogger(__name__)
class Ping(base.Scenario):
"""Execute ping between two hosts
+ If ping error, RTT will be set to 999999
+
Parameters
packetsize - number of data bytes to send
type: int
@@ -33,6 +35,8 @@ class Ping(base.Scenario):
__scenario_type__ = "Ping"
+ PING_ERROR_RTT = 999999
+
TARGET_SCRIPT = 'ping_benchmark.bash'
def __init__(self, scenario_cfg, context_cfg):
@@ -60,6 +64,7 @@ class Ping(base.Scenario):
rtt_result = {}
ping_result = {"rtt": rtt_result}
+ sla_max_rtt = self.scenario_cfg.get("sla", {}).get("max_rtt")
for pos, dest in enumerate(dest_list):
if 'targets' in self.scenario_cfg:
@@ -76,20 +81,34 @@ class Ping(base.Scenario):
if exit_status != 0:
raise RuntimeError(stderr)
+ if isinstance(target_vm, dict):
+ target_vm_name = target_vm.get("name")
+ else:
+ target_vm_name = target_vm.split('.')[0]
if stdout:
- if isinstance(target_vm, dict):
- target_vm_name = target_vm.get("name")
- else:
- target_vm_name = target_vm.split('.')[0]
- rtt_result[target_vm_name] = float(stdout)
- if "sla" in self.scenario_cfg:
- sla_max_rtt = int(self.scenario_cfg["sla"]["max_rtt"])
+ rtt_result[target_vm_name] = float(stdout.strip())
+ # store result before potential AssertionError
+ result.update(utils.flatten_dict_key(ping_result))
+ if sla_max_rtt is not None:
+ sla_max_rtt = float(sla_max_rtt)
assert rtt_result[target_vm_name] <= sla_max_rtt,\
"rtt %f > sla: max_rtt(%f); " % \
(rtt_result[target_vm_name], sla_max_rtt)
else:
LOG.error("ping '%s' '%s' timeout", options, target_vm)
- result.update(utils.flatten_dict_key(ping_result))
+ # we need to specify a result to satisfy influxdb schema
+ # choose a very large number to inidcate timeout
+ # in this case choose an order of magnitude greater than the SLA
+ rtt_result[target_vm_name] = float(self.PING_ERROR_RTT)
+ # store result before potential AssertionError
+ result.update(utils.flatten_dict_key(ping_result))
+ if sla_max_rtt is not None:
+ raise AssertionError("packet dropped rtt {:f} > sla: max_rtt({:f})".format(
+ rtt_result[target_vm_name], sla_max_rtt))
+
+ else:
+ raise AssertionError(
+ "packet dropped rtt {:f}".format(rtt_result[target_vm_name]))
def _test(): # pragma: no cover
diff --git a/yardstick/benchmark/scenarios/networking/vnf_generic.py b/yardstick/benchmark/scenarios/networking/vnf_generic.py
index 0fab45480..b94bfc9ab 100644
--- a/yardstick/benchmark/scenarios/networking/vnf_generic.py
+++ b/yardstick/benchmark/scenarios/networking/vnf_generic.py
@@ -190,6 +190,12 @@ class NetworkServiceTestCase(base.Scenario):
for index, publicip in enumerate(fflow.get("public_ip", [])):
flow["public_ip_{}".format(index)] = publicip
+ for index, src_port in enumerate(fflow.get("src_port", [])):
+ flow["src_port_{}".format(index)] = src_port
+
+ for index, dst_port in enumerate(fflow.get("dst_port", [])):
+ flow["dst_port_{}".format(index)] = dst_port
+
flow["count"] = fflow["count"]
except KeyError:
flow = {}
diff --git a/yardstick/cmd/NSBperf.py b/yardstick/cmd/NSBperf.py
index 2dc0f65e7..5d0aa746d 100755
--- a/yardstick/cmd/NSBperf.py
+++ b/yardstick/cmd/NSBperf.py
@@ -150,8 +150,24 @@ class YardstickNSCli(object):
testcases = os.listdir(test_path + vnf)
print(("VNF :(%s)" % vnf))
print("================")
- for testcase in [tc for tc in testcases if "tc_" in tc]:
- print('%s' % testcase)
+ test_cases = [tc for tc in testcases if "tc_" in tc and "template" not in tc]
+
+ print("\tBareMetal Testcase:")
+ print("\t===================")
+ for testcase in [tc for tc in test_cases if "baremetal" in tc]:
+ print("\t%s" % testcase)
+
+ print(os.linesep)
+ print("\tStandalone Virtualization Testcase:")
+ print("\t===================================")
+ for testcase in [tc for tc in test_cases if "ovs" in tc or "sriov" in tc]:
+ print("\t%s" % testcase)
+
+ print(os.linesep)
+ print("\tOpenstack Testcase:")
+ print("\t===================")
+ for testcase in [tc for tc in test_cases if "heat" in tc]:
+ print("\t%s" % testcase)
print(os.linesep)
raise SystemExit(0)
diff --git a/yardstick/common/utils.py b/yardstick/common/utils.py
index 6ac99a5a9..51f6e1360 100644
--- a/yardstick/common/utils.py
+++ b/yardstick/common/utils.py
@@ -350,7 +350,7 @@ def config_to_dict(config):
def validate_non_string_sequence(value, default=None, raise_exc=None):
- if isinstance(value, collections.Sequence) and not isinstance(value, str):
+ if isinstance(value, collections.Sequence) and not isinstance(value, six.string_types):
return value
if raise_exc:
raise raise_exc
diff --git a/yardstick/dispatcher/influxdb.py b/yardstick/dispatcher/influxdb.py
index f157e91f9..632b433b5 100644
--- a/yardstick/dispatcher/influxdb.py
+++ b/yardstick/dispatcher/influxdb.py
@@ -55,7 +55,9 @@ class InfluxdbDispatcher(DispatchBase):
for case, data in testcases.items():
tc_criteria = data['criteria']
for record in data['tc_data']:
- self._upload_one_record(record, case, tc_criteria)
+ # skip results with no data because we influxdb encode empty dicts
+ if record.get("data"):
+ self._upload_one_record(record, case, tc_criteria)
return 0
diff --git a/yardstick/network_services/collector/subscriber.py b/yardstick/network_services/collector/subscriber.py
index d560e1d42..4dc5a796e 100644
--- a/yardstick/network_services/collector/subscriber.py
+++ b/yardstick/network_services/collector/subscriber.py
@@ -23,18 +23,6 @@ LOG = logging.getLogger(__name__)
class Collector(object):
"""Class that handles dictionary of results in yardstick-plot format."""
- @staticmethod
- def make_resource_profile(node, timeout):
- # node dict works as mgmt dict
- # don't need port names, there is no way we can
- # tell what port is used on the compute node
- collectd_options = node["collectd"]
- plugins = collectd_options.get("plugins", {})
- interval = collectd_options.get("interval")
-
- # use default cores = None to MatchAllCores
- return ResourceProfile(node, plugins=plugins, interval=interval, timeout=timeout)
-
def __init__(self, vnfs, nodes, traffic_profile, timeout=3600):
super(Collector, self).__init__()
self.traffic_profile = traffic_profile
@@ -42,7 +30,7 @@ class Collector(object):
self.nodes = nodes
self.timeout = timeout
self.bin_path = get_nsb_option('bin_path', '')
- self.resource_profiles = {node_name: self.make_resource_profile(node, self.timeout)
+ self.resource_profiles = {node_name: ResourceProfile.make_from_node(node, self.timeout)
for node_name, node in self.nodes.items()
if node.get("collectd")}
diff --git a/yardstick/network_services/vnf_generic/vnf/iniparser.py b/yardstick/network_services/helpers/iniparser.py
index 98256e08a..98256e08a 100644
--- a/yardstick/network_services/vnf_generic/vnf/iniparser.py
+++ b/yardstick/network_services/helpers/iniparser.py
diff --git a/yardstick/network_services/helpers/samplevnf_helper.py b/yardstick/network_services/helpers/samplevnf_helper.py
index 0174d9c0d..0ab10d7b7 100644
--- a/yardstick/network_services/helpers/samplevnf_helper.py
+++ b/yardstick/network_services/helpers/samplevnf_helper.py
@@ -55,6 +55,10 @@ SCRIPT_TPL = """
{arp_config6}
+{arp_route_tbl}
+
+{arp_route_tbl6}
+
{actions}
{rules}
@@ -226,7 +230,7 @@ class MultiPortConfig(object):
self.tmp_file = os.path.join("/tmp", tmp_file)
self.pktq_out_os = []
self.socket = socket
- self.start_core = 0
+ self.start_core = 1
self.pipeline_counter = ""
self.txrx_pipeline = ""
self._port_pairs = None
@@ -345,30 +349,28 @@ class MultiPortConfig(object):
"".join(("{},".format(port_list.index(x)) for x in uplink_ports)))
def generate_arp_route_tbl(self):
- arp_route_tbl_tmpl = "({port0_dst_ip_hex},{port0_netmask_hex},{port_num}," \
- "{next_hop_ip_hex})"
+ arp_route_tbl_tmpl = "routeadd net {port_num} {port_dst_ip} 0x{port_netmask_hex}"
def build_arp_config(port):
dpdk_port_num = self.vnfd_helper.port_num(port)
interface = self.vnfd_helper.find_interface(name=port)["virtual-interface"]
# We must use the dst because we are on the VNF and we need to
# reach the TG.
- dst_port0_ip = ipaddress.ip_interface(six.text_type(
+ dst_port_ip = ipaddress.ip_interface(six.text_type(
"%s/%s" % (interface["dst_ip"], interface["netmask"])))
arp_vars = {
- "port0_dst_ip_hex": ip_to_hex(dst_port0_ip.network.network_address.exploded),
- "port0_netmask_hex": ip_to_hex(dst_port0_ip.network.netmask.exploded),
+ "port_netmask_hex": ip_to_hex(dst_port_ip.network.netmask.exploded),
# this is the port num that contains port0 subnet and next_hop_ip_hex
# this is LINKID which should be based on DPDK port number
"port_num": dpdk_port_num,
# next hop is dst in this case
# must be within subnet
- "next_hop_ip_hex": ip_to_hex(dst_port0_ip.ip.exploded),
+ "port_dst_ip": str(dst_port_ip.ip),
}
return arp_route_tbl_tmpl.format(**arp_vars)
- return ' '.join(build_arp_config(port) for port in self.all_ports)
+ return '\n'.join(build_arp_config(port) for port in self.all_ports)
def generate_arpicmp_data(self):
swq_in_str = self.make_range_str('SWQ{}', self.swq, offset=self.lb_count)
@@ -391,11 +393,6 @@ class MultiPortConfig(object):
# 'ports_mac_list': ' '.join(mac_iter),
'pktq_in_prv': ' '.join(pktq_in_iter),
'prv_to_pub_map': self.set_priv_to_pub_mapping(),
- 'arp_route_tbl': self.generate_arp_route_tbl(),
- # nd_route_tbl must be set or we get segault on random OpenStack IPv6 traffic
- # 'nd_route_tbl': "(0064:ff9b:0:0:0:0:9810:6414,120,0,0064:ff9b:0:0:0:0:9810:6414)"
- # safe default? route discard prefix to localhost
- 'nd_route_tbl': "(0100::,64,0,::1)"
}
self.pktq_out_os = swq_out_str.split(' ')
# HWLB is a run to complition. So override the pktq_in/pktq_out
@@ -710,6 +707,9 @@ class MultiPortConfig(object):
# disable IPv6 for now
# 'arp_config6': self.generate_arp_config6(),
'arp_config6': "",
+ 'arp_config': self.generate_arp_config(),
+ 'arp_route_tbl': self.generate_arp_route_tbl(),
+ 'arp_route_tbl6': "",
'actions': '',
'rules': '',
}
diff --git a/yardstick/network_services/nfvi/resource.py b/yardstick/network_services/nfvi/resource.py
index dea754d8b..5b96aaf29 100644
--- a/yardstick/network_services/nfvi/resource.py
+++ b/yardstick/network_services/nfvi/resource.py
@@ -82,6 +82,18 @@ class ResourceProfile(object):
self.mgmt = mgmt
self.connection = ssh.AutoConnectSSH.from_node(mgmt)
+ @classmethod
+ def make_from_node(cls, node, timeout):
+ # node dict works as mgmt dict
+ # don't need port names, there is no way we can
+ # tell what port is used on the compute node
+ collectd_options = node["collectd"]
+ plugins = collectd_options.get("plugins", {})
+ interval = collectd_options.get("interval")
+
+ # use default cores = None to MatchAllCores
+ return cls(node, plugins=plugins, interval=interval, timeout=timeout)
+
def check_if_sa_running(self, process):
""" verify if system agent is running """
try:
diff --git a/yardstick/network_services/traffic_profile/traffic_profile.py b/yardstick/network_services/traffic_profile/traffic_profile.py
index 3feb92bb6..2f97945c0 100644
--- a/yardstick/network_services/traffic_profile/traffic_profile.py
+++ b/yardstick/network_services/traffic_profile/traffic_profile.py
@@ -19,6 +19,7 @@ import socket
import logging
from random import SystemRandom
import six
+import ipaddress
from yardstick.network_services.traffic_profile.base import TrafficProfile
from trex_stl_lib.trex_stl_client import STLStream
@@ -44,6 +45,8 @@ SRC_PORT = 'sport'
DST_PORT = 'dport'
TYPE_OF_SERVICE = 'tos'
+LOG = logging.getLogger(__name__)
+
class TrexProfile(TrafficProfile):
""" This class handles Trex Traffic profile generation and execution """
@@ -66,7 +69,7 @@ class TrexProfile(TrafficProfile):
return f
def _ethernet_range_action_partial(self, direction, _):
- def partial(min_value, max_value):
+ def partial(min_value, max_value, count):
stl_vm_flow_var = STLVmFlowVar(name="mac_{}".format(direction),
min_value=1,
max_value=30,
@@ -80,7 +83,15 @@ class TrexProfile(TrafficProfile):
return partial
def _ip_range_action_partial(self, direction, count=1):
- def partial(min_value, max_value):
+ def partial(min_value, max_value, count):
+ ip1 = int(ipaddress.IPv4Address(min_value))
+ ip2 = int(ipaddress.IPv4Address(max_value))
+ actual_count = (ip2 - ip1)
+ if not actual_count:
+ count = 1
+ elif actual_count < int(count):
+ count = actual_count
+
stl_vm_flow_var = STLVmFlowVarRepeatableRandom(name="ip4_{}".format(direction),
min_value=min_value,
max_value=max_value,
@@ -96,7 +107,7 @@ class TrexProfile(TrafficProfile):
return partial
def _ip6_range_action_partial(self, direction, _):
- def partial(min_value, max_value):
+ def partial(min_value, max_value, count):
min_value, max_value = self._get_start_end_ipv6(min_value, max_value)
stl_vm_flow_var = STLVmFlowVar(name="ip6_{}".format(direction),
min_value=min_value,
@@ -112,7 +123,7 @@ class TrexProfile(TrafficProfile):
return partial
def _dscp_range_action_partial(self, *_):
- def partial(min_value, max_value):
+ def partial(min_value, max_value, count):
stl_vm_flow_var = STLVmFlowVar(name="dscp",
min_value=min_value,
max_value=max_value,
@@ -125,7 +136,13 @@ class TrexProfile(TrafficProfile):
self.vm_flow_vars.append(stl_vm_wr_flow_var)
def _udp_range_action_partial(self, field, count=1):
- def partial(min_value, max_value):
+ def partial(min_value, max_value, count):
+ actual_count = int(max_value) - int(min_value)
+ if not actual_count:
+ count = 1
+ elif int(count) > actual_count:
+ count = actual_count
+
stl_vm_flow_var = STLVmFlowVarRepeatableRandom(name="port_{}".format(field),
min_value=min_value,
max_value=max_value,
@@ -205,13 +222,14 @@ class TrexProfile(TrafficProfile):
except StopIteration:
single_action(min_value)
else:
- range_action(min_value=min_value, max_value=max_value)
+ range_action(min_value=min_value, max_value=max_value, count=count)
def _set_proto_addr(self, protocol, field, address, count=1):
single_action, range_action, to_int = self._map_proto_actions[protocol]
self._call_on_range(address,
single_action(field),
range_action(field, count),
+ count=count,
to_int=to_int,
)
diff --git a/yardstick/network_services/vnf_generic/vnf/cgnapt_vnf.py b/yardstick/network_services/vnf_generic/vnf/cgnapt_vnf.py
index b5072c194..53f73b4d7 100644
--- a/yardstick/network_services/vnf_generic/vnf/cgnapt_vnf.py
+++ b/yardstick/network_services/vnf_generic/vnf/cgnapt_vnf.py
@@ -14,6 +14,7 @@
from __future__ import absolute_import
import logging
+import time
from yardstick.network_services.vnf_generic.vnf.sample_vnf import SampleVNF, DpdkVnfSetupEnvHelper
@@ -64,14 +65,12 @@ class CgnaptApproxSetupEnvHelper(DpdkVnfSetupEnvHelper):
def scale(self, flavor=""):
raise NotImplementedError
- def _get_cgnapt_config(self, interfaces=None):
- # TODO: static CGNAPT is broken, don't use it
- if interfaces is None:
- interfaces = self.vnfd_helper.interfaces
-
+ def _get_cgnapt_config(self):
# fixme: Get private port and gateway from port list
uplink_ports = self.vnfd_helper.port_pairs.uplink_ports
- return [self._get_ports_gateway(intf["name"]) for intf in uplink_ports]
+ return \
+ [self.vnfd_helper.find_interface(name=intf)["virtual-interface"]['dst_ip']
+ for intf in uplink_ports]
class CgnaptApproxVnf(SampleVNF):
@@ -98,23 +97,26 @@ class CgnaptApproxVnf(SampleVNF):
if self.scenario_helper.options.get('napt', 'static') != 'static':
return
- # ip_iter = self.setup_helper._generate_ip_from_pool("152.16.40.10")
- # gw_ips = self.setup_helper._get_cgnapt_config()
- # if self.scenario_helper.vnf_cfg.get("lb_config", "SW") == 'HW':
- # pipeline = self.setup_helper.HW_DEFAULT_CORE
- # offset = 3
- # else:
- # pipeline = self.setup_helper.SW_DEFAULT_CORE - 1
- # offset = 0
- #
- # worker_threads = int(self.scenario_helper.vnf_cfg["worker_threads"])
- # # p <pipeline id> entry addm <prv_ipv4/6> prvport> <pub_ip> <pub_port> <phy_port> <ttl>
- # # <no_of_entries> <end_prv_port> <end_pub_port>
- # cmd_template = "p {0} entry addm {1} 1 {2} 1 0 32 65535 65535 65535"
- # for gw, ip in zip(gw_ips, ip_iter):
- # cmd = cmd_template.format(pipeline, gw, ip)
- # pipeline += worker_threads
- # pipeline += offset
- # self.vnf_execute(cmd)
- #
- # time.sleep(WAIT_FOR_STATIC_NAPT)
+ flow = self.scenario_helper.all_options.get('flow', {})
+ public_ip = flow.get('public_ip', ['152.16.40.10']).pop()
+ ip_iter = self.setup_helper._generate_ip_from_pool(public_ip)
+ gw_ips = self.setup_helper._get_cgnapt_config()
+ if self.scenario_helper.vnf_cfg.get("lb_config", "SW") == 'HW':
+ pipeline = self.setup_helper.HW_DEFAULT_CORE
+ offset = 3
+ else:
+ pipeline = self.setup_helper.SW_DEFAULT_CORE - 1
+ offset = 0
+
+ worker_threads = int(self.scenario_helper.vnf_cfg["worker_threads"])
+ # p <pipeline id> entry addm <prv_ipv4/6> prvport> <pub_ip> <pub_port> <phy_port> <ttl>
+ # <no_of_entries> <end_prv_port> <end_pub_port>
+ cmd_template = "p {0} entry addm {1} 1 {2} 1 0 32 65535 65535 65535"
+ for gw, ip in zip(gw_ips, ip_iter):
+ cmd = cmd_template.format(pipeline, gw, ip)
+ pipeline += worker_threads
+ pipeline += offset
+ LOG.info(cmd)
+ self.vnf_execute(cmd)
+
+ time.sleep(WAIT_FOR_STATIC_NAPT)
diff --git a/yardstick/network_services/vnf_generic/vnf/prox_helpers.py b/yardstick/network_services/vnf_generic/vnf/prox_helpers.py
index 992b6d06e..ac5abfbcb 100644
--- a/yardstick/network_services/vnf_generic/vnf/prox_helpers.py
+++ b/yardstick/network_services/vnf_generic/vnf/prox_helpers.py
@@ -14,28 +14,27 @@
from __future__ import absolute_import
import array
-import operator
-import logging
import io
+import logging
+import operator
import os
import re
import select
import socket
-
-from collections import OrderedDict, namedtuple
import time
+from collections import OrderedDict, namedtuple
from contextlib import contextmanager
from itertools import repeat, chain
from multiprocessing import Queue
import six
-from six.moves import zip, StringIO
from six.moves import cStringIO
+from six.moves import zip, StringIO
from yardstick.benchmark.scenarios.networking.vnf_generic import find_relative_file
from yardstick.common import utils
from yardstick.common.utils import SocketTopology, join_non_strings, try_int
-from yardstick.network_services.vnf_generic.vnf.iniparser import ConfigParser
+from yardstick.network_services.helpers.iniparser import ConfigParser
from yardstick.network_services.vnf_generic.vnf.sample_vnf import ClientResourceHelper
from yardstick.network_services.vnf_generic.vnf.sample_vnf import DpdkVnfSetupEnvHelper
diff --git a/yardstick/network_services/vnf_generic/vnf/prox_vnf.py b/yardstick/network_services/vnf_generic/vnf/prox_vnf.py
index 3bfca19aa..24712dd27 100644
--- a/yardstick/network_services/vnf_generic/vnf/prox_vnf.py
+++ b/yardstick/network_services/vnf_generic/vnf/prox_vnf.py
@@ -90,7 +90,7 @@ class ProxApproxVnf(SampleVNF):
result = {
"packets_in": tx_total,
- "packets_dropped": (tx_total - rx_total),
+ "packets_dropped": abs(rx_total - tx_total),
"packets_fwd": rx_total,
# we share ProxResourceHelper with TG, but we want to collect
# collectd KPIs here and not TG KPIs, so use a different method name
diff --git a/yardstick/network_services/vnf_generic/vnf/sample_vnf.py b/yardstick/network_services/vnf_generic/vnf/sample_vnf.py
index 92f78c2bc..b5cf03477 100644
--- a/yardstick/network_services/vnf_generic/vnf/sample_vnf.py
+++ b/yardstick/network_services/vnf_generic/vnf/sample_vnf.py
@@ -108,13 +108,6 @@ class SetupEnvHelper(object):
self.ssh_helper = ssh_helper
self.scenario_helper = scenario_helper
- def _get_ports_gateway(self, name):
- routing_table = self.vnfd_helper.vdu0.get('routing_table', [])
- for route in routing_table:
- if name == route['if']:
- return route['gateway']
- return None
-
def build_config(self):
raise NotImplementedError
@@ -685,6 +678,7 @@ class SampleVNF(GenericVNF):
VNF_PROMPT = "pipeline>"
WAIT_TIME = 1
+ WAIT_TIME_FOR_SCRIPT = 10
APP_NAME = "SampleVNF"
# we run the VNF interactively, so the ssh command will timeout after this long
@@ -811,7 +805,7 @@ class SampleVNF(GenericVNF):
self.APP_NAME)
LOG.info("Waiting for %s VNF to start.. ", self.APP_NAME)
- time.sleep(1)
+ time.sleep(self.WAIT_TIME_FOR_SCRIPT)
# Send ENTER to display a new prompt in case the prompt text was corrupted
# by other VNF output
self.q_in.put('\r\n')