Fixed document for Grafana Port usage
[yardstick.git] / docs / testing / user / userguide / 13-nsb_operation.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International
2 .. License.
3 .. http://creativecommons.org/licenses/by/4.0
4 .. (c) OPNFV, 2016-2017 Intel Corporation.
5
6 Yardstick - NSB Testing - Operation
7 ===================================
8
9 Abstract
10 --------
11
12 NSB test configuration and OpenStack setup requirements
13
14
15 OpenStack Network Configuration
16 -------------------------------
17
18 NSB requires certain OpenStack deployment configurations.
19 For optimal VNF characterization using external traffic generators NSB requires
20 provider/external networks.
21
22
23 Provider networks
24 ^^^^^^^^^^^^^^^^^
25
26 The VNFs require a clear L2 connect to the external network in order to generate
27 realistic traffic from multiple address ranges and port
28
29 In order to prevent Neutron from filtering traffic we have to disable Neutron Port Security.
30 We also disable DHCP on the data ports because we are binding the ports to DPDK and do not need
31 DHCP addresses.  We also disable gateways because multiple default gateways can prevent SSH access
32 to the VNF from the floating IP.  We only want a gateway on the mgmt network
33
34 .. code-block:: yaml
35
36     uplink_0:
37       cidr: '10.1.0.0/24'
38       gateway_ip: 'null'
39       port_security_enabled: False
40       enable_dhcp: 'false'
41
42 Heat Topologies
43 ^^^^^^^^^^^^^^^
44
45 By default Heat will attach every node to every Neutron network that is created.
46 For scale-out tests we do not want to attach every node to every network.
47
48 For each node you can specify which ports are on which network using the
49 network_ports dictionary.
50
51 In this example we have ``TRex xe0 <-> xe0 VNF xe1 <-> xe0 UDP_Replay``
52
53 .. code-block:: yaml
54
55       vnf_0:
56         floating_ip: true
57         placement: "pgrp1"
58         network_ports:
59           mgmt:
60             - mgmt
61           uplink_0:
62             - xe0
63           downlink_0:
64             - xe1
65       tg_0:
66         floating_ip: true
67         placement: "pgrp1"
68         network_ports:
69           mgmt:
70             - mgmt
71           uplink_0:
72             - xe0
73           # Trex always needs two ports
74           uplink_1:
75             - xe1
76       tg_1:
77         floating_ip: true
78         placement: "pgrp1"
79         network_ports:
80           mgmt:
81            - mgmt
82           downlink_0:
83            - xe0
84
85 Collectd KPIs
86 -------------
87
88 NSB can collect KPIs from collected.  We have support for various plugins enabled by the
89 Barometer project.
90
91 The default yardstick-samplevnf has collectd installed.   This allows for collecting KPIs
92 from the VNF.
93
94 Collecting KPIs from the NFVi is more complicated and requires manual setup.
95 We assume that collectd is not installed on the compute nodes.
96
97 To collectd KPIs from the NFVi compute nodes:
98
99
100     * install_collectd on the compute nodes
101     * create pod.yaml for the compute nodes
102     * enable specific plugins depending on the vswitch and DPDK
103
104     example pod.yaml section for Compute node running collectd.
105
106 .. code-block:: yaml
107
108     -
109       name: "compute-1"
110       role: Compute
111       ip: "10.1.2.3"
112       user: "root"
113       ssh_port: "22"
114       password: ""
115       collectd:
116         interval: 5
117         plugins:
118           # for libvirtd stats
119           virt: {}
120           intel_pmu: {}
121           ovs_stats:
122             # path to OVS socket
123             ovs_socket_path: /var/run/openvswitch/db.sock
124           intel_rdt: {}
125
126
127
128 Scale-Up
129 ------------------
130
131 VNFs performance data with scale-up
132
133   * Helps to figure out optimal number of cores specification in the Virtual Machine template creation or VNF
134   * Helps in comparison between different VNF vendor offerings
135   * Better the scale-up index, indicates the performance scalability of a particular solution
136
137 Heat
138 ^^^^
139
140 For VNF scale-up tests we increase the number for VNF worker threads.  In the case of VNFs
141 we also need to increase the number of VCPUs and memory allocated to the VNF.
142
143 An example scale-up Heat testcase is:
144
145 .. code-block:: console
146
147   <repo>/samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_scale_up.yaml
148
149 This testcase template requires specifying the number of VCPUs and Memory.
150 We set the VCPUs and memory using the --task-args options
151
152 .. code-block:: console
153
154   yardstick --debug task start --task-args='{"mem": 20480, "vcpus": 10}'   samples/vnf_samples/nsut/acl/tc_heat_rfc2544_ipv4_1rule_1flow_64B_trex_scale_up.yaml
155
156
157 Baremetal
158 ^^^^^^^^^
159   1. Follow above traffic generator section to setup.
160   2. edit num of threads in ``<repo>/samples/vnf_samples/nsut/vfw/tc_baremetal_rfc2544_ipv4_1rule_1flow_64B_trex_scale_up.yaml``
161
162   e.g, 6 Threads  for given VNF
163
164 .. code-block:: yaml
165
166
167      schema: yardstick:task:0.1
168      scenarios:
169      {% for worker_thread in [1, 2 ,3 , 4, 5, 6] %}
170      - type: NSPerf
171        traffic_profile: ../../traffic_profiles/ipv4_throughput.yaml
172        topology: vfw-tg-topology.yaml
173        nodes:
174          tg__0: trafficgen_1.yardstick
175          vnf__0: vnf.yardstick
176        options:
177          framesize:
178            uplink: {64B: 100}
179            downlink: {64B: 100}
180          flow:
181            src_ip: [{'tg__0': 'xe0'}]
182            dst_ip: [{'tg__0': 'xe1'}]
183            count: 1
184          traffic_type: 4
185          rfc2544:
186            allowed_drop_rate: 0.0001 - 0.0001
187          vnf__0:
188            rules: acl_1rule.yaml
189            vnf_config: {lb_config: 'HW', lb_count: 1, worker_config: '1C/1T', worker_threads: {{worker_thread}}}
190            nfvi_enable: True
191        runner:
192          type: Iteration
193          iterations: 10
194          interval: 35
195      {% endfor %}
196      context:
197        type: Node
198        name: yardstick
199        nfvi_type: baremetal
200        file: /etc/yardstick/nodes/pod.yaml
201
202 Scale-Out
203 --------------------
204
205 VNFs performance data with scale-out
206
207   * Helps in capacity planning to meet the given network node requirements
208   * Helps in comparison between different VNF vendor offerings
209   * Better the scale-out index, provides the flexibility in meeting future capacity requirements
210
211
212 Standalone
213 ^^^^^^^^^^
214
215 Scale-out not supported on Baremetal.
216
217 1. Follow above traffic generator section to setup.
218 2. Generate testcase for standalone virtualization using ansible scripts
219
220   .. code-block:: console
221
222     cd <repo>/ansible
223     trex: standalone_ovs_scale_out_trex_test.yaml or standalone_sriov_scale_out_trex_test.yaml
224     ixia: standalone_ovs_scale_out_ixia_test.yaml or standalone_sriov_scale_out_ixia_test.yaml
225     ixia_correlated: standalone_ovs_scale_out_ixia_correlated_test.yaml or standalone_sriov_scale_out_ixia_correlated_test.yaml
226
227   update the ovs_dpdk or sriov above Ansible scripts reflect the setup
228
229 3. run the test
230
231   .. code-block:: console
232
233     <repo>/samples/vnf_samples/nsut/tc_sriov_vfw_udp_ixia_correlated_scale_out-1.yaml
234     <repo>/samples/vnf_samples/nsut/tc_sriov_vfw_udp_ixia_correlated_scale_out-2.yaml
235
236 Heat
237 ^^^^
238
239 There are sample scale-out all-VM Heat tests.  These tests only use VMs and don't use external traffic.
240
241 The tests use UDP_Replay and correlated traffic.
242
243 .. code-block:: console
244
245   <repo>/samples/vnf_samples/nsut/cgnapt/tc_heat_rfc2544_ipv4_1flow_64B_trex_correlated_scale_4.yaml
246
247 To run the test you need to increase OpenStack CPU, Memory and Port quotas.
248
249
250 Traffic Generator tuning
251 ------------------------
252
253 The TRex traffic generator can be setup to use multiple threads per core, this is for multiqueue testing.
254
255 TRex does not automatically enable multiple threads because we currently cannot detect the number of queues on a device.
256
257 To enable multiple queue set the queues_per_port value in the TG VNF options section.
258
259 .. code-block:: yaml
260
261   scenarios:
262     - type: NSPerf
263       nodes:
264         tg__0: tg_0.yardstick
265
266       options:
267         tg_0:
268           queues_per_port: 2
269
270