aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoss Brattain <ross.b.brattain@intel.com>2017-10-18 20:53:53 -0700
committerRoss Brattain <ross.b.brattain@intel.com>2017-10-19 04:32:34 +0000
commitb529585719b1ce0494090ec5dbb52a2be0668bb5 (patch)
treeb3760186928a88c913f8255f4bb088938c462249
parent0389453486af8b58f77a65a6455068fe95346e47 (diff)
NSB: update vfw scale-out testcases
Change-Id: I6bd8a87f70954f288975e3e73e3cfbd36ae561dc Signed-off-by: Ross Brattain <ross.b.brattain@intel.com> (cherry picked from commit 39ead7aee3610dddbdeae33a5776ae5b98dfabea)
-rw-r--r--ansible/scale_out_test_templates.yml4
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_10.yaml32
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_4.yaml20
-rw-r--r--samples/vnf_samples/nsut/vfw/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_correlated_scale_out.yaml14
-rw-r--r--samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-10.yaml260
-rw-r--r--samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-2.yaml76
-rw-r--r--samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-4.yaml122
-rw-r--r--samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-scale-out.yaml57
8 files changed, 552 insertions, 33 deletions
diff --git a/ansible/scale_out_test_templates.yml b/ansible/scale_out_test_templates.yml
index 4213816fa..487319f2a 100644
--- a/ansible/scale_out_test_templates.yml
+++ b/ansible/scale_out_test_templates.yml
@@ -40,6 +40,10 @@
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/vfw/vfw-tg-topology-3node-scale-out.yaml
+ dest: ../samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-{{ 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
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
index cf60ba1f9..1d9c4e1c6 100644
--- 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
@@ -15,22 +15,22 @@
---
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
+ - 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}
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
index 64633eb77..bd29ab76c 100644
--- 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
@@ -15,16 +15,16 @@
---
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
+ - 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}
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
index 767ecbc1c..be15e4550 100644
--- 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
@@ -15,14 +15,14 @@
---
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
+ - 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
+ vnf__{{ vnf_num }}: vnf_{{ vnf_num }}.yardstick
{% endfor %}
options:
framesize:
diff --git a/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-10.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-10.yaml
new file mode 100644
index 000000000..99ac9e8c9
--- /dev/null
+++ b/samples/vnf_samples/nsut/vfw/vfw-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/vfw_vnf.yaml #VNF type
+ - member-vnf-index: '3'
+ vnfd-id-ref: vnf__1
+ VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type
+ - member-vnf-index: '4'
+ vnfd-id-ref: vnf__2
+ VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type
+ - member-vnf-index: '5'
+ vnfd-id-ref: vnf__3
+ VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type
+ - member-vnf-index: '6'
+ vnfd-id-ref: vnf__4
+ VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type
+ - member-vnf-index: '7'
+ vnfd-id-ref: vnf__5
+ VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type
+ - member-vnf-index: '8'
+ vnfd-id-ref: vnf__6
+ VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type
+ - member-vnf-index: '9'
+ vnfd-id-ref: vnf__7
+ VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type
+ - member-vnf-index: '10'
+ vnfd-id-ref: vnf__8
+ VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type
+ - member-vnf-index: '11'
+ vnfd-id-ref: vnf__9
+ VNF model: ../../vnf_descriptors/vfw_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/vfw/vfw-tg-topology-3node-2.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-2.yaml
new file mode 100644
index 000000000..a1043c280
--- /dev/null
+++ b/samples/vnf_samples/nsut/vfw/vfw-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/vfw_vnf.yaml #VNF type
+ - member-vnf-index: '3'
+ vnfd-id-ref: vnf__1
+ VNF model: ../../vnf_descriptors/vfw_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/vfw/vfw-tg-topology-3node-4.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-4.yaml
new file mode 100644
index 000000000..22e172d58
--- /dev/null
+++ b/samples/vnf_samples/nsut/vfw/vfw-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/vfw_vnf.yaml #VNF type
+ - member-vnf-index: '3'
+ vnfd-id-ref: vnf__1
+ VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type
+ - member-vnf-index: '4'
+ vnfd-id-ref: vnf__2
+ VNF model: ../../vnf_descriptors/vfw_vnf.yaml #VNF type
+ - member-vnf-index: '5'
+ vnfd-id-ref: vnf__3
+ VNF model: ../../vnf_descriptors/vfw_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/vfw/vfw-tg-topology-3node-scale-out.yaml b/samples/vnf_samples/nsut/vfw/vfw-tg-topology-3node-scale-out.yaml
new file mode 100644
index 000000000..0052c4139
--- /dev/null
+++ b/samples/vnf_samples/nsut/vfw/vfw-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/vfw_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 %}
+