summaryrefslogtreecommitdiffstats
path: root/deploy/README.templater
blob: b5d52ab9deebb683f48810c14b17ebf5f97a42d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
##############################################################################
# Copyright (c) 2016 Ericsson AB and others.
# peter.barabas@ericsson.com
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################

======== TEMPLATING SUPPORT IN YAML CONFIGURATION FILES ========

deploy/templater.py makes it possible to use templates to generate configuration
files. It takes 2 input YAML files and an output file as arguments. One being
the dictionary (called the base file), which is used to look up values in; the
other file is the template, where the substitution will take place. Templater
will write the result to an output file, specified as the 3rd argument.


======== SYNTAX OF TEMPLATE FILES ========

A template file can contain any valid YAML data and template variables, whose
syntax is described below:

1. Single value references

   %{title}

   %{environment/net_segment_type}

   Either a root element, or a path can be specified.

2. YAML sections

   %{nodes}

   %{network/networking_parameters}

   Either a root element, or a path can be specified.

3. Interface lookup for network

   %{interface(storage)}

   Specify a network type as argument to interface().

4. Interface lookup for network and role

   %{interface(public,compute)}

   Specify a network type and a role as arguments to interface().

5. File inclusion

   %{include(templates/interfaces.yaml)}

   Filename with absolute or relative path.


======== EXAMPLES ========

Base YAML file (excerpt):

title: Deployment Environment Adapter (DEA)
version: 1.1
created: Wed Mar 30 08:16:04 2016
environment:
  name: vCity
  net_segment_type: tun
wanted_release: Liberty on Ubuntu 14.04
nodes:
- id: 1
  interfaces: interfaces_1
  role: ceph-osd,compute
  transformations: transformations_1
- id: 2
  interfaces: interfaces_1
  role: ceph-osd,compute
  transformations: transformations_1
- id: 3
  interfaces: interfaces_1
  role: ceph-osd,compute
  transformations: transformations_1
- id: 4
  interfaces: interfaces_2
  role: controller,mongo
  transformations: transformations_2
- id: 5
  interfaces: interfaces_2
  role: controller,mongo
  transformations: transformations_2
- id: 6
  interfaces: interfaces_2
  role: controller,mongo
  transformations: transformations_2
interfaces_1:
  ens3:
  - fuelweb_admin
  - management
  ens4:
  - storage
  ens5:
  - private
  ens6:
  - public
interfaces_2:
  ens3:
  - fuelweb_admin
  - management
  ens4:
  - storage
  - private
  - public
network:
  networks:
  - cidr: 172.16.0.0/24
    gateway: 172.16.0.1
    ip_ranges:
    - - 172.16.0.2
      - 172.16.0.126
    meta:
      cidr: 172.16.0.0/24
      configurable: true
      floating_range_var: floating_ranges
      ip_range:
      - 172.16.0.2
      - 172.16.0.126
      map_priority: 1
      name: public
      notation: ip_ranges
      render_addr_mask: public
      render_type: null
      use_gateway: true
      vips:
      - haproxy
      - vrouter
      vlan_start: null
    name: public
    vlan_start: null
  - cidr: 192.168.1.0/24
    gateway: null
    ip_ranges:
    - - 192.168.1.1
      - 192.168.1.254
    meta:
      cidr: 192.168.1.0/24
      configurable: true
      map_priority: 2
      name: storage
      notation: cidr
      render_addr_mask: storage
      render_type: cidr
      use_gateway: false
      vlan_start: 102
    name: storage
    vlan_start: 102


--- Example 1 ---

Template file:

deployment-scenario-metadata:
  title: %{title}
  version: 0.1
dea-override-config:
  environment:
    net_segment_type: %{environment/net_segment_type}
  nodes:
  %{nodes}


Result:

deployment-scenario-metadata:
  title: Deployment Environment Adapter (DEA)
  version: 0.1
dea-override-config:
  environment:
    net_segment_type: tun
  nodes:
  - id: 1
    interfaces: interfaces_1
    role: ceph-osd,compute
    transformations: transformations_1
  - id: 2
    interfaces: interfaces_1
    role: ceph-osd,compute
    transformations: transformations_1
  - id: 3
    interfaces: interfaces_1
    role: ceph-osd,compute
    transformations: transformations_1
  - id: 4
    interfaces: interfaces_2
    role: controller,mongo
    transformations: transformations_2
  - id: 5
    interfaces: interfaces_2
    role: controller,mongo
    transformations: transformations_2
  - id: 6
    interfaces: interfaces_2
    role: controller,mongo
    transformations: transformations_2


--- Example 2 ---

Template file:

dea-override-config:
  network:
    networks:
    %{network/networks}


Result:

dea-override-config:
  network:
    networks:
    - cidr: 172.16.0.0/24
      gateway: 172.16.0.1
      ip_ranges:
      - - 172.16.0.2
        - 172.16.0.126
      meta:
        cidr: 172.16.0.0/24
        configurable: true
        floating_range_var: floating_ranges
        ip_range:
        - 172.16.0.2
        - 172.16.0.126
        map_priority: 1
        name: public
        notation: ip_ranges
        render_addr_mask: public
        render_type: null
        use_gateway: true
        vips:
        - haproxy
        - vrouter
        vlan_start: null
      name: public
      vlan_start: null
    - cidr: 192.168.1.0/24
      gateway: null
      ip_ranges:
      - - 192.168.1.1
        - 192.168.1.254
      meta:
        cidr: 192.168.1.0/24
        configurable: true
        map_priority: 2
        name: storage
        notation: cidr
        render_addr_mask: storage
        render_type: cidr
        use_gateway: false
        vlan_start: 102
      name: storage
      vlan_start: 102


--- Example 3 ---

Template file:

storage_if: %{interface(storage)}
compute_private_if: %{interface(private,compute)}
# Management interface of a mongo node
mongo_mgmt_if: %{interface(management,mongo)}
controller_private_if: %{interface(private,controller)}


Result:

storage_if: ens4
compute_private_if: ens5
# Management interface of a mongo node
mongo_mgmt_if: ens3
controller_private_if: ens4


--- Example 4 ---

Template file:

version: 1.1
created: Mon Jun 13 19:39:35 2016
comment: None
%{include(environment.yaml)}


environment.yaml:

environment:
  name: F9-NOSDN-NOFEATURE-VXLAN-BAREMETAL
  net_segment_type: tun


Result:

version: 1.1
created: Mon Jun 13 19:39:35 2016
comment: None
environment:
  name: F9-NOSDN-NOFEATURE-VXLAN-BAREMETAL
  net_segment_type: tun


--- Example 5 ---

Template file (except):

settings:
  editable:
    access:
      email:
        description: Email address for Administrator
        label: Email
        regex:
          error: Invalid email
          source: ^\S+@\S+$
        type: text
        value: admin@localhost
        weight: 40
# ...
# lines omitted for brevity
    %{include(templates/cgroups.yaml)}


cgroups.yaml:

    cgroups:
      metadata:
        always_editable: true
        group: general
        label: Cgroups conguration for services
        restrictions:
        - action: hide
          condition: 'true'
        weight: 90


Result:

settings:
  editable:
    access:
      email:
        description: Email address for Administrator
        label: Email
        regex:
          error: Invalid email
          source: ^\S+@\S+$
        type: text
        value: admin@localhost
        weight: 40
# ...
# again, lines omitted for brevity
    cgroups:
      metadata:
        always_editable: true
        group: general
        label: Cgroups conguration for services
        restrictions:
        - action: hide
          condition: 'true'
        weight: 90
an class="gs">**conf/03_traffic.conf**, and is configured as follows: .. code-block:: console TRAFFIC = { 'traffic_type' : 'rfc2544_throughput', 'frame_rate' : 100, 'bidir' : 'True', # will be passed as string in title format to tgen 'multistream' : 0, 'stream_type' : 'L4', 'pre_installed_flows' : 'No', # used by vswitch implementation 'flow_type' : 'port', # used by vswitch implementation 'l2': { 'framesize': 64, 'srcmac': '00:00:00:00:00:00', 'dstmac': '00:00:00:00:00:00', }, 'l3': { 'proto': 'udp', 'srcip': '1.1.1.1', 'dstip': '90.90.90.90', }, 'l4': { 'srcport': 3000, 'dstport': 3001, }, 'vlan': { 'enabled': False, 'id': 0, 'priority': 0, 'cfi': 0, }, } The framesize parameter can be overridden from the configuration files by adding the following to your custom configuration file ``10_custom.conf``: .. code-block:: console TRAFFICGEN_PKT_SIZES = (64, 128,) OR from the commandline: .. code-block:: console $ ./vsperf --test-params "TRAFFICGEN_PKT_SIZES=(x,y)" $TESTNAME You can also modify the traffic transmission duration and the number of tests run by the traffic generator by extending the example commandline above to: .. code-block:: console $ ./vsperf --test-params "TRAFFICGEN_PKT_SIZES=(x,y);TRAFFICGEN_DURATION=10;" \ "TRAFFICGEN_RFC2544_TESTS=1" $TESTNAME Dummy ----- The Dummy traffic generator can be used to test VSPERF installation or to demonstrate VSPERF functionality at DUT without connection to a real traffic generator. You could also use the Dummy generator in case, that your external traffic generator is not supported by VSPERF. In such case you could use VSPERF to setup your test scenario and then transmit the traffic. After the transmission is completed you could specify values for all collected metrics and VSPERF will use them to generate final reports. Setup ~~~~~ To select the Dummy generator please add the following to your custom configuration file ``10_custom.conf``. .. code-block:: console TRAFFICGEN = 'Dummy' OR run ``vsperf`` with the ``--trafficgen`` argument .. code-block:: console $ ./vsperf --trafficgen Dummy $TESTNAME Where $TESTNAME is the name of the vsperf test you would like to run. This will setup the vSwitch and the VNF (if one is part of your test) print the traffic configuration and prompt you to transmit traffic when the setup is complete. .. code-block:: console Please send 'continuous' traffic with the following stream config: 30mS, 90mpps, multistream False and the following flow config: { "flow_type": "port", "l3": { "srcip": "1.1.1.1", "proto": "tcp", "dstip": "90.90.90.90" }, "traffic_type": "rfc2544_continuous", "multistream": 0, "bidir": "True", "vlan": { "cfi": 0, "priority": 0, "id": 0, "enabled": false }, "frame_rate": 90, "l2": { "dstport": 3001, "srcport": 3000, "dstmac": "00:00:00:00:00:00", "srcmac": "00:00:00:00:00:00", "framesize": 64 } } What was the result for 'frames tx'? When your traffic generator has completed traffic transmission and provided the results please input these at the VSPERF prompt. VSPERF will try to verify the input: .. code-block:: console Is '$input_value' correct? Please answer with y OR n. VSPERF will ask you to provide a value for every of collected metrics. The list of metrics can be found at traffic-type-metrics_. Finally vsperf will print out the results for your test and generate the appropriate logs and report files. .. _traffic-type-metrics: Metrics collected for supported traffic types ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Below you could find a list of metrics collected by VSPERF for each of supported traffic types. RFC2544 Throughput and Continuous: * frames tx * frames rx * min latency * max latency * avg latency * frameloss RFC2544 Back2back: * b2b frames * b2b frame loss % Dummy result pre-configuration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In case of a Dummy traffic generator it is possible to pre-configure the test results. This is useful for creation of demo testcases, which do not require a real traffic generator. Such testcase can be run by any user and it will still generate all reports and result files. Result values can be specified within ``TRAFFICGEN_DUMMY_RESULTS`` dictionary, where every of collected metrics must be properly defined. Please check the list of traffic-type-metrics_. Dictionary with dummy results can be passed by CLI argument ``--test-params`` or specified in ``Parameters`` section of testcase definition. Example of testcase execution with dummy results defined by CLI argument: .. code-block:: console $ ./vsperf back2back --trafficgen Dummy --test-params \ "TRAFFICGEN_DUMMY_RESULTS={'b2b frames':'3000','b2b frame loss %':'0.0'}" Example of testcase definition with pre-configured dummy results: .. code-block:: python { "Name": "back2back", "Traffic Type": "rfc2544_back2back", "Deployment": "p2p", "biDirectional": "True", "Description": "LTD.Throughput.RFC2544.BackToBackFrames", "Parameters" : { 'TRAFFICGEN_DUMMY_RESULTS' : {'b2b frames':'3000','b2b frame loss %':'0.0'} }, }, **NOTE:** Pre-configured results for the Dummy traffic generator will be used only in case, that the Dummy traffic generator is used. Otherwise the option ``TRAFFICGEN_DUMMY_RESULTS`` will be ignored. .. _Ixia: Ixia ---- VSPERF can use both IxNetwork and IxExplorer TCL servers to control Ixia chassis. However usage of IxNetwork TCL server is a preferred option. Following sections will describe installation and configuration of IxNetwork components used by VSPERF. Installation ~~~~~~~~~~~~ On the system under the test you need to install IxNetworkTclClient$(VER\_NUM)Linux.bin.tgz. On the IXIA client software system you need to install IxNetwork TCL server. After its installation you should configure it as follows: 1. Find the IxNetwork TCL server app (start -> All Programs -> IXIA -> IxNetwork -> IxNetwork\_$(VER\_NUM) -> IxNetwork TCL Server) 2. Right click on IxNetwork TCL Server, select properties - Under shortcut tab in the Target dialogue box make sure there is the argument "-tclport xxxx" where xxxx is your port number (take note of this port number as you will need it for the 10\_custom.conf file). .. image:: TCLServerProperties.png 3. Hit Ok and start the TCL server application VSPERF configuration ~~~~~~~~~~~~~~~~~~~~ There are several configuration options specific to the IxNetwork traffic generator from IXIA. It is essential to set them correctly, before the VSPERF is executed for the first time. Detailed description of options follows: * ``TRAFFICGEN_IXNET_MACHINE`` - IP address of server, where IxNetwork TCL Server is running * ``TRAFFICGEN_IXNET_PORT`` - PORT, where IxNetwork TCL Server is accepting connections from TCL clients * ``TRAFFICGEN_IXNET_USER`` - username, which will be used during communication with IxNetwork TCL Server and IXIA chassis * ``TRAFFICGEN_IXIA_HOST`` - IP address of IXIA traffic generator chassis * ``TRAFFICGEN_IXIA_CARD`` - identification of card with dedicated ports at IXIA chassis * ``TRAFFICGEN_IXIA_PORT1`` - identification of the first dedicated port at ``TRAFFICGEN_IXIA_CARD`` at IXIA chassis; VSPERF uses two separated ports for traffic generation. In case of unidirectional traffic, it is essential to correctly connect 1st IXIA port to the 1st NIC at DUT, i.e. to the first PCI handle from ``WHITELIST_NICS`` list. Otherwise traffic may not be able to pass through the vSwitch. * ``TRAFFICGEN_IXIA_PORT2`` - identification of the second dedicated port at ``TRAFFICGEN_IXIA_CARD`` at IXIA chassis; VSPERF uses two separated ports for traffic generation. In case of unidirectional traffic, it is essential to correctly connect 2nd IXIA port to the 2nd NIC at DUT, i.e. to the second PCI handle from ``WHITELIST_NICS`` list. Otherwise traffic may not be able to pass through the vSwitch. * ``TRAFFICGEN_IXNET_LIB_PATH`` - path to the DUT specific installation of IxNetwork TCL API * ``TRAFFICGEN_IXNET_TCL_SCRIPT`` - name of the TCL script, which VSPERF will use for communication with IXIA TCL server * ``TRAFFICGEN_IXNET_TESTER_RESULT_DIR`` - folder accessible from IxNetwork TCL server, where test results are stored, e.g. ``c:/ixia_results``; see test-results-share_ * ``TRAFFICGEN_IXNET_DUT_RESULT_DIR`` - directory accessible from the DUT, where test results from IxNetwork TCL server are stored, e.g. ``/mnt/ixia_results``; see test-results-share_ .. _test-results-share: Test results share ~~~~~~~~~~~~~~~~~~ VSPERF is not able to retrieve test results via TCL API directly. Instead, all test results are stored at IxNetwork TCL server. Results are stored at folder defined by ``TRAFFICGEN_IXNET_TESTER_RESULT_DIR`` configuration parameter. Content of this folder must be shared (e.g. via samba protocol) between TCL Server and DUT, where VSPERF is executed. VSPERF expects, that test results will be available at directory configured by ``TRAFFICGEN_IXNET_DUT_RESULT_DIR`` configuration parameter. Example of sharing configuration: * Create a new folder at IxNetwork TCL server machine, e.g. ``c:\ixia_results`` * Modify sharing options of ``ixia_results`` folder to share it with everybody * Create a new directory at DUT, where shared directory with results will be mounted, e.g. ``/mnt/ixia_results`` * Update your custom VSPERF configuration file as follows: .. code-block:: python TRAFFICGEN_IXNET_TESTER_RESULT_DIR = 'c:/ixia_results' TRAFFICGEN_IXNET_DUT_RESULT_DIR = '/mnt/ixia_results' **NOTE:** It is essential to use slashes '/' also in path configured by ``TRAFFICGEN_IXNET_TESTER_RESULT_DIR`` parameter. * Install cifs-utils package. e.g. at rpm based Linux distribution: .. code-block:: console yum install cifs-utils * Mount shared directory, so VSPERF can access test results. e.g. by adding new record into ``/etc/fstab`` .. code-block:: console mount -t cifs //_TCL_SERVER_IP_OR_FQDN_/ixia_results /mnt/ixia_results -o file_mode=0777,dir_mode=0777,nounix It is recommended to verify, that any new file inserted into ``c:/ixia_results`` folder is visible at DUT inside ``/mnt/ixia_results`` directory. .. _`Spirent TestCenter`: Spirent Setup ------------- Spirent installation files and instructions are available on the Spirent support website at: http://support.spirent.com Select a version of Spirent TestCenter software to utilize. This example will use Spirent TestCenter v4.57 as an example. Substitute the appropriate version in place of 'v4.57' in the examples, below. On the CentOS 7 System ~~~~~~~~~~~~~~~~~~~~~~ Download and install the following: Spirent TestCenter Application, v4.57 for 64-bit Linux Client Spirent Virtual Deployment Service (VDS) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Spirent VDS is required for both TestCenter hardware and virtual chassis in the vsperf environment. For installation, select the version that matches the Spirent TestCenter Application version. For v4.57, the matching VDS version is 1.0.55. Download either the ova (VMware) or qcow2 (QEMU) image and create a VM with it. Initialize the VM according to Spirent installation instructions. Using Spirent TestCenter Virtual (STCv) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ STCv is available in both ova (VMware) and qcow2 (QEMU) formats. For VMware, download: Spirent TestCenter Virtual Machine for VMware, v4.57 for Hypervisor - VMware ESX.ESXi Virtual test port performance is affected by the hypervisor configuration. For best practice results in deploying STCv, the following is suggested: - Create a single VM with two test ports rather than two VMs with one port each - Set STCv in DPDK mode - Give STCv 2*n + 1 cores, where n = the number of ports. For vsperf, cores = 5. - Turning off hyperthreading and pinning these cores will improve performance - Give STCv 2 GB of RAM To get the highest performance and accuracy, Spirent TestCenter hardware is recommended. vsperf can run with either stype test ports. Using STC REST Client ~~~~~~~~~~~~~~~~~~~~~ The stcrestclient package provides the stchttp.py ReST API wrapper module. This allows simple function calls, nearly identical to those provided by StcPython.py, to be used to access TestCenter server sessions via the STC ReST API. Basic ReST functionality is provided by the resthttp module, and may be used for writing ReST clients independent of STC. - Project page: <https://github.com/Spirent/py-stcrestclient> - Package download: <http://pypi.python.org/pypi/stcrestclient> To use REST interface, follow the instructions in the Project page to install the package. Once installed, the scripts named with 'rest' keyword can be used. For example: testcenter-rfc2544-rest.py can be used to run RFC 2544 tests using the REST interface. Configuration: ~~~~~~~~~~~~~~ The mandatory configurations are enlisted below. 1. The Labserver and license server addresses. These parameters applies to all the tests and are mandatory. .. code-block:: console TRAFFICGEN_STC_LAB_SERVER_ADDR = " " TRAFFICGEN_STC_LICENSE_SERVER_ADDR = " " 2. For RFC2544 tests, the following parameters are mandatory .. code-block:: console TRAFFICGEN_STC_RFC2544_TPUT_TEST_FILE_NAME = " " TRAFFICGEN_STC_EAST_CHASSIS_ADDR = " " TRAFFICGEN_STC_EAST_SLOT_NUM = " " TRAFFICGEN_STC_EAST_PORT_NUM = " " TRAFFICGEN_STC_EAST_INTF_ADDR = " " TRAFFICGEN_STC_EAST_INTF_GATEWAY_ADDR = " " TRAFFICGEN_STC_WEST_CHASSIS_ADDR = "" TRAFFICGEN_STC_WEST_SLOT_NUM = " " TRAFFICGEN_STC_WEST_PORT_NUM = " " TRAFFICGEN_STC_WEST_INTF_ADDR = " " TRAFFICGEN_STC_WEST_INTF_GATEWAY_ADDR = " " 3. For RFC2889 tests, specifying the locations of the ports is mandatory. .. code-block:: console TRAFFICGEN_STC_RFC2889_TEST_FILE_NAME = " " TRAFFICGEN_STC_RFC2889_LOCATIONS= " " .. _`Xena Networks`: Xena Networks ------------- Installation ~~~~~~~~~~~~ Xena Networks traffic generator requires specific files and packages to be installed. It is assumed the user has access to the Xena2544.exe file which must be placed in VSPerf installation location under the tools/pkt_gen/xena folder. Contact Xena Networks for the latest version of this file. The user can also visit www.xenanetworks/downloads to obtain the file with a valid support contract. **Note** VSPerf has been fully tested with version v2.43 of Xena2544.exe To execute the Xena2544.exe file under Linux distributions the mono-complete package must be installed. To install this package follow the instructions below. Further information can be obtained from http://www.mono-project.com/docs/getting-started/install/linux/ .. code-block:: console rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF" yum-config-manager --add-repo http://download.mono-project.com/repo/centos/ yum -y install mono-complete To prevent gpg errors on future yum installation of packages the mono-project repo should be disabled once installed. .. code-block:: console yum-config-manager --disable download.mono-project.com_repo_centos_ Configuration ~~~~~~~~~~~~~ Connection information for your Xena Chassis must be supplied inside the ``10_custom.conf`` or ``03_custom.conf`` file. The following parameters must be set to allow for proper connections to the chassis. .. code-block:: console TRAFFICGEN_XENA_IP = '' TRAFFICGEN_XENA_PORT1 = '' TRAFFICGEN_XENA_PORT2 = '' TRAFFICGEN_XENA_USER = '' TRAFFICGEN_XENA_PASSWORD = '' TRAFFICGEN_XENA_MODULE1 = '' TRAFFICGEN_XENA_MODULE2 = '' RFC2544 Throughput Testing ~~~~~~~~~~~~~~~~~~~~~~~~~~ Xena traffic generator testing for rfc2544 throughput can be modified for different behaviors if needed. The default options for the following are optimized for best results. .. code-block:: console TRAFFICGEN_XENA_2544_TPUT_INIT_VALUE = '10.0' TRAFFICGEN_XENA_2544_TPUT_MIN_VALUE = '0.1' TRAFFICGEN_XENA_2544_TPUT_MAX_VALUE = '100.0' TRAFFICGEN_XENA_2544_TPUT_VALUE_RESOLUTION = '0.5' TRAFFICGEN_XENA_2544_TPUT_USEPASS_THRESHHOLD = 'false' TRAFFICGEN_XENA_2544_TPUT_PASS_THRESHHOLD = '0.0' Each value modifies the behavior of rfc 2544 throughput testing. Refer to your Xena documentation to understand the behavior changes in modifying these values. Continuous Traffic Testing ~~~~~~~~~~~~~~~~~~~~~~~~~~ Xena continuous traffic by default does a 3 second learning preemption to allow the DUT to receive learning packets before a continuous test is performed. If a custom test case requires this learning be disabled, you can disable the option or modify the length of the learning by modifying the following settings. .. code-block:: console TRAFFICGEN_XENA_CONT_PORT_LEARNING_ENABLED = False TRAFFICGEN_XENA_CONT_PORT_LEARNING_DURATION = 3 MoonGen ------- Installation ~~~~~~~~~~~~ MoonGen architecture overview and general installation instructions can be found here: https://github.com/emmericp/MoonGen * Note: Today, MoonGen with VSPERF only supports 10Gbps line speeds. For VSPERF use, MoonGen should be cloned from here (as opposed to the previously mentioned GitHub): git clone https://github.com/atheurer/lua-trafficgen and use the master branch: git checkout master VSPERF uses a particular Lua script with the MoonGen project: trafficgen.lua Follow MoonGen set up and execution instructions here: https://github.com/atheurer/lua-trafficgen/blob/master/README.md Note one will need to set up ssh login to not use passwords between the server running MoonGen and the device under test (running the VSPERF test infrastructure). This is because VSPERF on one server uses 'ssh' to configure and run MoonGen upon the other server. One can set up this ssh access by doing the following on both servers: .. code-block:: console ssh-keygen -b 2048 -t rsa ssh-copy-id <other server> Configuration ~~~~~~~~~~~~~ Connection information for MoonGen must be supplied inside the ``10_custom.conf`` or ``03_custom.conf`` file. The following parameters must be set to allow for proper connections to the host with MoonGen. .. code-block:: console TRAFFICGEN_MOONGEN_HOST_IP_ADDR = "" TRAFFICGEN_MOONGEN_USER = "" TRAFFICGEN_MOONGEN_BASE_DIR = "" TRAFFICGEN_MOONGEN_PORTS = "" TRAFFICGEN_MOONGEN_LINE_SPEED_GBPS = ""