diff options
57 files changed, 1746 insertions, 95 deletions
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/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/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/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/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_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/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_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_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/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-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..dbf366f75 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') }}" 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.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/unit/network_services/helpers/test_samplevnf_helper.py b/tests/unit/network_services/helpers/test_samplevnf_helper.py index bff3a7722..05acdfaa9 100644 --- a/tests/unit/network_services/helpers/test_samplevnf_helper.py +++ b/tests/unit/network_services/helpers/test_samplevnf_helper.py @@ -797,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 = [ 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_sample_vnf.py b/tests/unit/network_services/vnf_generic/vnf/test_sample_vnf.py index c41da2c45..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()) 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_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 06f259685..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 |