4e42b2bee0eb88c23da3bfd9a713d5588d3379a8
[vswitchperf.git] / docs / testing / user / configguide / trafficgen.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3 .. (c) OPNFV, Intel Corporation, AT&T and others.
4
5 .. _trafficgen-installation:
6
7 ===========================
8 'vsperf' Traffic Gen Guide
9 ===========================
10
11 Overview
12 --------
13
14 VSPERF supports the following traffic generators:
15
16   * Dummy_ (DEFAULT)
17   * Ixia_
18   * `Spirent TestCenter`_
19   * `Xena Networks`_
20   * MoonGen_
21
22 To see the list of traffic gens from the cli:
23
24 .. code-block:: console
25
26     $ ./vsperf --list-trafficgens
27
28 This guide provides the details of how to install
29 and configure the various traffic generators.
30
31 Background Information
32 ----------------------
33 The traffic default configuration can be found in **conf/03_traffic.conf**,
34 and is configured as follows:
35
36 .. code-block:: console
37
38     TRAFFIC = {
39         'traffic_type' : 'rfc2544_throughput',
40         'frame_rate' : 100,
41         'bidir' : 'True',  # will be passed as string in title format to tgen
42         'multistream' : 0,
43         'stream_type' : 'L4',
44         'pre_installed_flows' : 'No',           # used by vswitch implementation
45         'flow_type' : 'port',                   # used by vswitch implementation
46
47         'l2': {
48             'framesize': 64,
49             'srcmac': '00:00:00:00:00:00',
50             'dstmac': '00:00:00:00:00:00',
51         },
52         'l3': {
53             'proto': 'udp',
54             'srcip': '1.1.1.1',
55             'dstip': '90.90.90.90',
56         },
57         'l4': {
58             'srcport': 3000,
59             'dstport': 3001,
60         },
61         'vlan': {
62             'enabled': False,
63             'id': 0,
64             'priority': 0,
65             'cfi': 0,
66         },
67     }
68
69 The framesize parameter can be overridden from the configuration
70 files by adding the following to your custom configuration file
71 ``10_custom.conf``:
72
73 .. code-block:: console
74
75     TRAFFICGEN_PKT_SIZES = (64, 128,)
76
77 OR from the commandline:
78
79 .. code-block:: console
80
81     $ ./vsperf --test-params "TRAFFICGEN_PKT_SIZES=(x,y)" $TESTNAME
82
83 You can also modify the traffic transmission duration and the number
84 of tests run by the traffic generator by extending the example
85 commandline above to:
86
87 .. code-block:: console
88
89     $ ./vsperf --test-params "TRAFFICGEN_PKT_SIZES=(x,y);TRAFFICGEN_DURATION=10;" \
90                              "TRAFFICGEN_RFC2544_TESTS=1" $TESTNAME
91
92 .. _trafficgen-dummy:
93
94 Dummy
95 -----
96
97 The Dummy traffic generator can be used to test VSPERF installation or
98 to demonstrate VSPERF functionality at DUT without connection
99 to a real traffic generator.
100
101 You could also use the Dummy generator in case, that your external
102 traffic generator is not supported by VSPERF. In such case you could
103 use VSPERF to setup your test scenario and then transmit the traffic.
104 After the transmission is completed you could specify values for all
105 collected metrics and VSPERF will use them to generate final reports.
106
107 Setup
108 ~~~~~
109
110 To select the Dummy generator please add the following to your
111 custom configuration file ``10_custom.conf``.
112
113 .. code-block:: console
114
115      TRAFFICGEN = 'Dummy'
116
117 OR run ``vsperf`` with the ``--trafficgen`` argument
118
119 .. code-block:: console
120
121     $ ./vsperf --trafficgen Dummy $TESTNAME
122
123 Where $TESTNAME is the name of the vsperf test you would like to run.
124 This will setup the vSwitch and the VNF (if one is part of your test)
125 print the traffic configuration and prompt you to transmit traffic
126 when the setup is complete.
127
128 .. code-block:: console
129
130     Please send 'continuous' traffic with the following stream config:
131     30mS, 90mpps, multistream False
132     and the following flow config:
133     {
134         "flow_type": "port",
135         "l3": {
136             "srcip": "1.1.1.1",
137             "proto": "tcp",
138             "dstip": "90.90.90.90"
139         },
140         "traffic_type": "rfc2544_continuous",
141         "multistream": 0,
142         "bidir": "True",
143         "vlan": {
144             "cfi": 0,
145             "priority": 0,
146             "id": 0,
147             "enabled": false
148         },
149         "frame_rate": 90,
150         "l2": {
151             "dstport": 3001,
152             "srcport": 3000,
153             "dstmac": "00:00:00:00:00:00",
154             "srcmac": "00:00:00:00:00:00",
155             "framesize": 64
156         }
157     }
158     What was the result for 'frames tx'?
159
160 When your traffic generator has completed traffic transmission and provided
161 the results please input these at the VSPERF prompt. VSPERF will try
162 to verify the input:
163
164 .. code-block:: console
165
166     Is '$input_value' correct?
167
168 Please answer with y OR n.
169
170 VSPERF will ask you to provide a value for every of collected metrics. The list
171 of metrics can be found at traffic-type-metrics_.
172 Finally vsperf will print out the results for your test and generate the
173 appropriate logs and report files.
174
175 .. _traffic-type-metrics:
176
177 Metrics collected for supported traffic types
178 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
179
180 Below you could find a list of metrics collected by VSPERF for each of supported
181 traffic types.
182
183 RFC2544 Throughput and Continuous:
184
185   * frames tx
186   * frames rx
187   * min latency
188   * max latency
189   * avg latency
190   * frameloss
191
192 RFC2544 Back2back:
193
194   * b2b frames
195   * b2b frame loss %
196
197 Dummy result pre-configuration
198 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
199
200 In case of a Dummy traffic generator it is possible to pre-configure the test
201 results. This is useful for creation of demo testcases, which do not require
202 a real traffic generator. Such testcase can be run by any user and it will still
203 generate all reports and result files.
204
205 Result values can be specified within ``TRAFFICGEN_DUMMY_RESULTS`` dictionary,
206 where every of collected metrics must be properly defined. Please check the list
207 of traffic-type-metrics_.
208
209 Dictionary with dummy results can be passed by CLI argument ``--test-params``
210 or specified in ``Parameters`` section of testcase definition.
211
212 Example of testcase execution with dummy results defined by CLI argument:
213
214 .. code-block:: console
215
216     $ ./vsperf back2back --trafficgen Dummy --test-params \
217       "TRAFFICGEN_DUMMY_RESULTS={'b2b frames':'3000','b2b frame loss %':'0.0'}"
218
219 Example of testcase definition with pre-configured dummy results:
220
221 .. code-block:: python
222
223     {
224         "Name": "back2back",
225         "Traffic Type": "rfc2544_back2back",
226         "Deployment": "p2p",
227         "biDirectional": "True",
228         "Description": "LTD.Throughput.RFC2544.BackToBackFrames",
229         "Parameters" : {
230             'TRAFFICGEN_DUMMY_RESULTS' : {'b2b frames':'3000','b2b frame loss %':'0.0'}
231         },
232     },
233
234 **NOTE:** Pre-configured results for the Dummy traffic generator will be used only
235 in case, that the Dummy traffic generator is used. Otherwise the option
236 ``TRAFFICGEN_DUMMY_RESULTS`` will be ignored.
237
238 .. _Ixia:
239
240 Ixia
241 ----
242
243 VSPERF can use both IxNetwork and IxExplorer TCL servers to control Ixia chassis.
244 However usage of IxNetwork TCL server is a preferred option. Following sections
245 will describe installation and configuration of IxNetwork components used by VSPERF.
246
247 Installation
248 ~~~~~~~~~~~~
249
250 On the system under the test you need to install IxNetworkTclClient$(VER\_NUM)Linux.bin.tgz.
251
252 On the IXIA client software system you need to install IxNetwork TCL server. After its
253 installation you should configure it as follows:
254
255     1. Find the IxNetwork TCL server app (start -> All Programs -> IXIA ->
256        IxNetwork -> IxNetwork\_$(VER\_NUM) -> IxNetwork TCL Server)
257     2. Right click on IxNetwork TCL Server, select properties - Under shortcut tab in
258        the Target dialogue box make sure there is the argument "-tclport xxxx"
259        where xxxx is your port number (take note of this port number as you will
260        need it for the 10\_custom.conf file).
261
262        .. image:: TCLServerProperties.png
263
264     3. Hit Ok and start the TCL server application
265
266 VSPERF configuration
267 ~~~~~~~~~~~~~~~~~~~~
268
269 There are several configuration options specific to the IxNetwork traffic generator
270 from IXIA. It is essential to set them correctly, before the VSPERF is executed
271 for the first time.
272
273 Detailed description of options follows:
274
275  * ``TRAFFICGEN_IXNET_MACHINE`` - IP address of server, where IxNetwork TCL Server is running
276  * ``TRAFFICGEN_IXNET_PORT`` - PORT, where IxNetwork TCL Server is accepting connections from
277    TCL clients
278  * ``TRAFFICGEN_IXNET_USER`` - username, which will be used during communication with IxNetwork
279    TCL Server and IXIA chassis
280  * ``TRAFFICGEN_IXIA_HOST`` - IP address of IXIA traffic generator chassis
281  * ``TRAFFICGEN_IXIA_CARD`` - identification of card with dedicated ports at IXIA chassis
282  * ``TRAFFICGEN_IXIA_PORT1`` - identification of the first dedicated port at ``TRAFFICGEN_IXIA_CARD``
283    at IXIA chassis; VSPERF uses two separated ports for traffic generation. In case of
284    unidirectional traffic, it is essential to correctly connect 1st IXIA port to the 1st NIC
285    at DUT, i.e. to the first PCI handle from ``WHITELIST_NICS`` list. Otherwise traffic may not
286    be able to pass through the vSwitch.
287  * ``TRAFFICGEN_IXIA_PORT2`` - identification of the second dedicated port at ``TRAFFICGEN_IXIA_CARD``
288    at IXIA chassis; VSPERF uses two separated ports for traffic generation. In case of
289    unidirectional traffic, it is essential to correctly connect 2nd IXIA port to the 2nd NIC
290    at DUT, i.e. to the second PCI handle from ``WHITELIST_NICS`` list. Otherwise traffic may not
291    be able to pass through the vSwitch.
292  * ``TRAFFICGEN_IXNET_LIB_PATH`` - path to the DUT specific installation of IxNetwork TCL API
293  * ``TRAFFICGEN_IXNET_TCL_SCRIPT`` - name of the TCL script, which VSPERF will use for
294    communication with IXIA TCL server
295  * ``TRAFFICGEN_IXNET_TESTER_RESULT_DIR`` - folder accessible from IxNetwork TCL server,
296    where test results are stored, e.g. ``c:/ixia_results``; see test-results-share_
297  * ``TRAFFICGEN_IXNET_DUT_RESULT_DIR`` - directory accessible from the DUT, where test
298    results from IxNetwork TCL server are stored, e.g. ``/mnt/ixia_results``; see
299    test-results-share_
300
301 .. _test-results-share:
302
303 Test results share
304 ~~~~~~~~~~~~~~~~~~
305
306 VSPERF is not able to retrieve test results via TCL API directly. Instead, all test
307 results are stored at IxNetwork TCL server. Results are stored at folder defined by
308 ``TRAFFICGEN_IXNET_TESTER_RESULT_DIR`` configuration parameter. Content of this
309 folder must be shared (e.g. via samba protocol) between TCL Server and DUT, where
310 VSPERF is executed. VSPERF expects, that test results will be available at directory
311 configured by ``TRAFFICGEN_IXNET_DUT_RESULT_DIR`` configuration parameter.
312
313 Example of sharing configuration:
314
315  * Create a new folder at IxNetwork TCL server machine, e.g. ``c:\ixia_results``
316  * Modify sharing options of ``ixia_results`` folder to share it with everybody
317  * Create a new directory at DUT, where shared directory with results
318    will be mounted, e.g. ``/mnt/ixia_results``
319  * Update your custom VSPERF configuration file as follows:
320
321    .. code-block:: python
322
323        TRAFFICGEN_IXNET_TESTER_RESULT_DIR = 'c:/ixia_results'
324        TRAFFICGEN_IXNET_DUT_RESULT_DIR = '/mnt/ixia_results'
325
326    **NOTE:** It is essential to use slashes '/' also in path
327    configured by ``TRAFFICGEN_IXNET_TESTER_RESULT_DIR`` parameter.
328  * Install cifs-utils package.
329
330    e.g. at rpm based Linux distribution:
331
332    .. code-block:: console
333
334        yum install cifs-utils
335
336  * Mount shared directory, so VSPERF can access test results.
337
338    e.g. by adding new record into ``/etc/fstab``
339
340    .. code-block:: console
341
342        mount -t cifs //_TCL_SERVER_IP_OR_FQDN_/ixia_results /mnt/ixia_results
343              -o file_mode=0777,dir_mode=0777,nounix
344
345 It is recommended to verify, that any new file inserted into ``c:/ixia_results`` folder
346 is visible at DUT inside ``/mnt/ixia_results`` directory.
347
348 .. _`Spirent TestCenter`:
349
350 Spirent Setup
351 -------------
352
353 Spirent installation files and instructions are available on the
354 Spirent support website at:
355
356 http://support.spirent.com
357
358 Select a version of Spirent TestCenter software to utilize. This example
359 will use Spirent TestCenter v4.57 as an example. Substitute the appropriate
360 version in place of 'v4.57' in the examples, below.
361
362 On the CentOS 7 System
363 ~~~~~~~~~~~~~~~~~~~~~~
364
365 Download and install the following:
366
367 Spirent TestCenter Application, v4.57 for 64-bit Linux Client
368
369 Spirent Virtual Deployment Service (VDS)
370 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
371
372 Spirent VDS is required for both TestCenter hardware and virtual
373 chassis in the vsperf environment. For installation, select the version
374 that matches the Spirent TestCenter Application version. For v4.57,
375 the matching VDS version is 1.0.55. Download either the ova (VMware)
376 or qcow2 (QEMU) image and create a VM with it. Initialize the VM
377 according to Spirent installation instructions.
378
379 Using Spirent TestCenter Virtual (STCv)
380 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
381
382 STCv is available in both ova (VMware) and qcow2 (QEMU) formats. For
383 VMware, download:
384
385 Spirent TestCenter Virtual Machine for VMware, v4.57 for Hypervisor - VMware ESX.ESXi
386
387 Virtual test port performance is affected by the hypervisor configuration. For
388 best practice results in deploying STCv, the following is suggested:
389
390 - Create a single VM with two test ports rather than two VMs with one port each
391 - Set STCv in DPDK mode
392 - Give STCv 2*n + 1 cores, where n = the number of ports. For vsperf, cores = 5.
393 - Turning off hyperthreading and pinning these cores will improve performance
394 - Give STCv 2 GB of RAM
395
396 To get the highest performance and accuracy, Spirent TestCenter hardware is
397 recommended. vsperf can run with either stype test ports.
398
399 Using STC REST Client
400 ~~~~~~~~~~~~~~~~~~~~~
401 The stcrestclient package provides the stchttp.py ReST API wrapper module.
402 This allows simple function calls, nearly identical to those provided by
403 StcPython.py, to be used to access TestCenter server sessions via the
404 STC ReST API. Basic ReST functionality is provided by the resthttp module,
405 and may be used for writing ReST clients independent of STC.
406
407 - Project page: <https://github.com/Spirent/py-stcrestclient>
408 - Package download: <http://pypi.python.org/pypi/stcrestclient>
409
410 To use REST interface, follow the instructions in the Project page to
411 install the package. Once installed, the scripts named with 'rest' keyword
412 can be used. For example: testcenter-rfc2544-rest.py can be used to run
413 RFC 2544 tests using the REST interface.
414
415 Configuration:
416 ~~~~~~~~~~~~~~
417
418 1. The Labserver and license server addresses. These parameters applies to
419    all the tests, and are mandatory for all tests.
420
421 .. code-block:: console
422
423     TRAFFICGEN_STC_LAB_SERVER_ADDR = " "
424     TRAFFICGEN_STC_LICENSE_SERVER_ADDR = " "
425     TRAFFICGEN_STC_PYTHON2_PATH = " "
426     TRAFFICGEN_STC_TESTCENTER_PATH = " "
427     TRAFFICGEN_STC_TEST_SESSION_NAME = " "
428     TRAFFICGEN_STC_CSV_RESULTS_FILE_PREFIX = " "
429
430 2. For RFC2544 tests, the following parameters are mandatory
431
432 .. code-block:: console
433
434     TRAFFICGEN_STC_EAST_CHASSIS_ADDR = " "
435     TRAFFICGEN_STC_EAST_SLOT_NUM = " "
436     TRAFFICGEN_STC_EAST_PORT_NUM = " "
437     TRAFFICGEN_STC_EAST_INTF_ADDR = " "
438     TRAFFICGEN_STC_EAST_INTF_GATEWAY_ADDR = " "
439     TRAFFICGEN_STC_WEST_CHASSIS_ADDR = ""
440     TRAFFICGEN_STC_WEST_SLOT_NUM = " "
441     TRAFFICGEN_STC_WEST_PORT_NUM = " "
442     TRAFFICGEN_STC_WEST_INTF_ADDR = " "
443     TRAFFICGEN_STC_WEST_INTF_GATEWAY_ADDR = " "
444     TRAFFICGEN_STC_RFC2544_TPUT_TEST_FILE_NAME
445
446 3. RFC2889 tests: Currently, the forwarding, address-caching, and
447    address-learning-rate tests of RFC2889 are supported.
448    The testcenter-rfc2889-rest.py script implements the rfc2889 tests.
449    The configuration for RFC2889 involves test-case definition, and parameter
450    definition, as described below. New results-constants, as shown below, are
451    added to support these tests.
452
453 Example of testcase definition for RFC2889 tests:
454
455 .. code-block:: python
456
457     {
458         "Name": "phy2phy_forwarding",
459         "Deployment": "p2p",
460         "Description": "LTD.Forwarding.RFC2889.MaxForwardingRate",
461         "Parameters" : {
462             "TRAFFIC" : {
463                 "traffic_type" : "rfc2889_forwarding",
464             },
465         },
466     }
467
468 For RFC2889 tests, specifying the locations for the monitoring ports is mandatory.
469 Necessary parameters are:
470
471 .. code-block:: console
472
473     TRAFFICGEN_STC_RFC2889_TEST_FILE_NAME
474     TRAFFICGEN_STC_EAST_CHASSIS_ADDR = " "
475     TRAFFICGEN_STC_EAST_SLOT_NUM = " "
476     TRAFFICGEN_STC_EAST_PORT_NUM = " "
477     TRAFFICGEN_STC_EAST_INTF_ADDR = " "
478     TRAFFICGEN_STC_EAST_INTF_GATEWAY_ADDR = " "
479     TRAFFICGEN_STC_WEST_CHASSIS_ADDR = ""
480     TRAFFICGEN_STC_WEST_SLOT_NUM = " "
481     TRAFFICGEN_STC_WEST_PORT_NUM = " "
482     TRAFFICGEN_STC_WEST_INTF_ADDR = " "
483     TRAFFICGEN_STC_WEST_INTF_GATEWAY_ADDR = " "
484     TRAFFICGEN_STC_VERBOSE = "True"
485     TRAFFICGEN_STC_RFC2889_LOCATIONS="//10.1.1.1/1/1,//10.1.1.1/2/2"
486
487 Other Configurations are :
488
489 .. code-block:: console
490
491     TRAFFICGEN_STC_RFC2889_MIN_LR = 1488
492     TRAFFICGEN_STC_RFC2889_MAX_LR = 14880
493     TRAFFICGEN_STC_RFC2889_MIN_ADDRS = 1000
494     TRAFFICGEN_STC_RFC2889_MAX_ADDRS = 65536
495     TRAFFICGEN_STC_RFC2889_AC_LR = 1000
496
497 The first 2 values are for address-learning test where as other 3 values are
498 for the Address caching capacity test. LR: Learning Rate. AC: Address Caching.
499 Maximum value for address is 16777216. Whereas, maximum for LR is 4294967295.
500
501 Results for RFC2889 Tests: Forwarding tests outputs following values:
502
503 .. code-block:: console
504
505     TX_RATE_FPS : "Transmission Rate in Frames/sec"
506     THROUGHPUT_RX_FPS: "Received Throughput Frames/sec"
507     TX_RATE_MBPS : " Transmission rate in MBPS"
508     THROUGHPUT_RX_MBPS: "Received Throughput in MBPS"
509     TX_RATE_PERCENT: "Transmission Rate in Percentage"
510     FRAME_LOSS_PERCENT: "Frame loss in Percentage"
511     FORWARDING_RATE_FPS: " Maximum Forwarding Rate in FPS"
512
513
514 Whereas, the address caching test outputs following values,
515
516 .. code-block:: console
517
518     CACHING_CAPACITY_ADDRS = 'Number of address it can cache'
519     ADDR_LEARNED_PERCENT = 'Percentage of address successfully learned'
520
521 and address learning test outputs just a single value:
522
523 .. code-block:: console
524
525     OPTIMAL_LEARNING_RATE_FPS = 'Optimal learning rate in fps'
526
527 Note that 'FORWARDING_RATE_FPS', 'CACHING_CAPACITY_ADDRS',
528 'ADDR_LEARNED_PERCENT' and 'OPTIMAL_LEARNING_RATE_FPS' are the new
529 result-constants added to support RFC2889 tests.
530
531 .. _`Xena Networks`:
532
533 Xena Networks
534 -------------
535
536 Installation
537 ~~~~~~~~~~~~
538
539 Xena Networks traffic generator requires specific files and packages to be
540 installed. It is assumed the user has access to the Xena2544.exe file which
541 must be placed in VSPerf installation location under the tools/pkt_gen/xena
542 folder. Contact Xena Networks for the latest version of this file. The user
543 can also visit www.xenanetworks/downloads to obtain the file with a valid
544 support contract.
545
546 **Note** VSPerf has been fully tested with version v2.43 of Xena2544.exe
547
548 To execute the Xena2544.exe file under Linux distributions the mono-complete
549 package must be installed. To install this package follow the instructions
550 below. Further information can be obtained from
551 http://www.mono-project.com/docs/getting-started/install/linux/
552
553 .. code-block:: console
554
555     rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
556     yum-config-manager --add-repo http://download.mono-project.com/repo/centos/
557     yum -y install mono-complete
558
559 To prevent gpg errors on future yum installation of packages the mono-project
560 repo should be disabled once installed.
561
562 .. code-block:: console
563
564     yum-config-manager --disable download.mono-project.com_repo_centos_
565
566 Configuration
567 ~~~~~~~~~~~~~
568
569 Connection information for your Xena Chassis must be supplied inside the
570 ``10_custom.conf`` or ``03_custom.conf`` file. The following parameters must be
571 set to allow for proper connections to the chassis.
572
573 .. code-block:: console
574
575     TRAFFICGEN_XENA_IP = ''
576     TRAFFICGEN_XENA_PORT1 = ''
577     TRAFFICGEN_XENA_PORT2 = ''
578     TRAFFICGEN_XENA_USER = ''
579     TRAFFICGEN_XENA_PASSWORD = ''
580     TRAFFICGEN_XENA_MODULE1 = ''
581     TRAFFICGEN_XENA_MODULE2 = ''
582
583 RFC2544 Throughput Testing
584 ~~~~~~~~~~~~~~~~~~~~~~~~~~
585
586 Xena traffic generator testing for rfc2544 throughput can be modified for
587 different behaviors if needed. The default options for the following are
588 optimized for best results.
589
590 .. code-block:: console
591
592     TRAFFICGEN_XENA_2544_TPUT_INIT_VALUE = '10.0'
593     TRAFFICGEN_XENA_2544_TPUT_MIN_VALUE = '0.1'
594     TRAFFICGEN_XENA_2544_TPUT_MAX_VALUE = '100.0'
595     TRAFFICGEN_XENA_2544_TPUT_VALUE_RESOLUTION = '0.5'
596     TRAFFICGEN_XENA_2544_TPUT_USEPASS_THRESHHOLD = 'false'
597     TRAFFICGEN_XENA_2544_TPUT_PASS_THRESHHOLD = '0.0'
598
599 Each value modifies the behavior of rfc 2544 throughput testing. Refer to your
600 Xena documentation to understand the behavior changes in modifying these
601 values.
602
603 Continuous Traffic Testing
604 ~~~~~~~~~~~~~~~~~~~~~~~~~~
605
606 Xena continuous traffic by default does a 3 second learning preemption to allow
607 the DUT to receive learning packets before a continuous test is performed. If
608 a custom test case requires this learning be disabled, you can disable the option
609 or modify the length of the learning by modifying the following settings.
610
611 .. code-block:: console
612
613     TRAFFICGEN_XENA_CONT_PORT_LEARNING_ENABLED = False
614     TRAFFICGEN_XENA_CONT_PORT_LEARNING_DURATION = 3
615
616 MoonGen
617 -------
618
619 Installation
620 ~~~~~~~~~~~~
621
622 MoonGen architecture overview and general installation instructions
623 can be found here:
624
625 https://github.com/emmericp/MoonGen
626
627 * Note:  Today, MoonGen with VSPERF only supports 10Gbps line speeds.
628
629 For VSPERF use, MoonGen should be cloned from here (as opposed to the
630 previously mentioned GitHub):
631
632 git clone https://github.com/atheurer/lua-trafficgen
633
634 and use the master branch:
635
636 git checkout master
637
638 VSPERF uses a particular Lua script with the MoonGen project:
639
640 trafficgen.lua
641
642 Follow MoonGen set up and execution instructions here:
643
644 https://github.com/atheurer/lua-trafficgen/blob/master/README.md
645
646 Note one will need to set up ssh login to not use passwords between the server
647 running MoonGen and the device under test (running the VSPERF test
648 infrastructure).  This is because VSPERF on one server uses 'ssh' to
649 configure and run MoonGen upon the other server.
650
651 One can set up this ssh access by doing the following on both servers:
652
653 .. code-block:: console
654
655     ssh-keygen -b 2048 -t rsa
656     ssh-copy-id <other server>
657
658 Configuration
659 ~~~~~~~~~~~~~
660
661 Connection information for MoonGen must be supplied inside the
662 ``10_custom.conf`` or ``03_custom.conf`` file. The following parameters must be
663 set to allow for proper connections to the host with MoonGen.
664
665 .. code-block:: console
666
667     TRAFFICGEN_MOONGEN_HOST_IP_ADDR = ""
668     TRAFFICGEN_MOONGEN_USER = ""
669     TRAFFICGEN_MOONGEN_BASE_DIR = ""
670     TRAFFICGEN_MOONGEN_PORTS = ""
671     TRAFFICGEN_MOONGEN_LINE_SPEED_GBPS = ""