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.
5 .. _trafficgen-installation:
7 ===========================
8 'vsperf' Traffic Gen Guide
9 ===========================
14 VSPERF supports the following traffic generators:
18 * `Spirent TestCenter`_
23 To see the list of traffic gens from the cli:
25 .. code-block:: console
27 $ ./vsperf --list-trafficgens
29 This guide provides the details of how to install
30 and configure the various traffic generators.
32 Background Information
33 ----------------------
34 The traffic default configuration can be found in **conf/03_traffic.conf**,
35 and is configured as follows:
37 .. code-block:: console
40 'traffic_type' : 'rfc2544_throughput',
42 'bidir' : 'True', # will be passed as string in title format to tgen
45 'pre_installed_flows' : 'No', # used by vswitch implementation
46 'flow_type' : 'port', # used by vswitch implementation
47 'flow_control' : False, # supported only by IxNet
48 'learning_frames' : True, # supported only by IxNet
51 'srcmac': '00:00:00:00:00:00',
52 'dstmac': '00:00:00:00:00:00',
58 'dstip': '90.90.90.90',
80 The framesize parameter can be overridden from the configuration
81 files by adding the following to your custom configuration file
84 .. code-block:: console
86 TRAFFICGEN_PKT_SIZES = (64, 128,)
88 OR from the commandline:
90 .. code-block:: console
92 $ ./vsperf --test-params "TRAFFICGEN_PKT_SIZES=(x,y)" $TESTNAME
94 You can also modify the traffic transmission duration and the number
95 of tests run by the traffic generator by extending the example
98 .. code-block:: console
100 $ ./vsperf --test-params "TRAFFICGEN_PKT_SIZES=(x,y);TRAFFICGEN_DURATION=10;" \
101 "TRAFFICGEN_RFC2544_TESTS=1" $TESTNAME
103 .. _trafficgen-dummy:
108 The Dummy traffic generator can be used to test VSPERF installation or
109 to demonstrate VSPERF functionality at DUT without connection
110 to a real traffic generator.
112 You could also use the Dummy generator in case, that your external
113 traffic generator is not supported by VSPERF. In such case you could
114 use VSPERF to setup your test scenario and then transmit the traffic.
115 After the transmission is completed you could specify values for all
116 collected metrics and VSPERF will use them to generate final reports.
121 To select the Dummy generator please add the following to your
122 custom configuration file ``10_custom.conf``.
124 .. code-block:: console
128 OR run ``vsperf`` with the ``--trafficgen`` argument
130 .. code-block:: console
132 $ ./vsperf --trafficgen Dummy $TESTNAME
134 Where $TESTNAME is the name of the vsperf test you would like to run.
135 This will setup the vSwitch and the VNF (if one is part of your test)
136 print the traffic configuration and prompt you to transmit traffic
137 when the setup is complete.
139 .. code-block:: console
141 Please send 'continuous' traffic with the following stream config:
142 30mS, 90mpps, multistream False
143 and the following flow config:
150 "dstip": "90.90.90.90"
152 "traffic_type": "rfc2544_continuous",
168 "dstmac": "00:00:00:00:00:00",
169 "srcmac": "00:00:00:00:00:00",
173 What was the result for 'frames tx'?
175 When your traffic generator has completed traffic transmission and provided
176 the results please input these at the VSPERF prompt. VSPERF will try
179 .. code-block:: console
181 Is '$input_value' correct?
183 Please answer with y OR n.
185 VSPERF will ask you to provide a value for every of collected metrics. The list
186 of metrics can be found at traffic-type-metrics_.
187 Finally vsperf will print out the results for your test and generate the
188 appropriate logs and report files.
190 .. _traffic-type-metrics:
192 Metrics collected for supported traffic types
193 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
195 Below you could find a list of metrics collected by VSPERF for each of supported
198 RFC2544 Throughput and Continuous:
212 Dummy result pre-configuration
213 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
215 In case of a Dummy traffic generator it is possible to pre-configure the test
216 results. This is useful for creation of demo testcases, which do not require
217 a real traffic generator. Such testcase can be run by any user and it will still
218 generate all reports and result files.
220 Result values can be specified within ``TRAFFICGEN_DUMMY_RESULTS`` dictionary,
221 where every of collected metrics must be properly defined. Please check the list
222 of traffic-type-metrics_.
224 Dictionary with dummy results can be passed by CLI argument ``--test-params``
225 or specified in ``Parameters`` section of testcase definition.
227 Example of testcase execution with dummy results defined by CLI argument:
229 .. code-block:: console
231 $ ./vsperf back2back --trafficgen Dummy --test-params \
232 "TRAFFICGEN_DUMMY_RESULTS={'b2b frames':'3000','b2b frame loss %':'0.0'}"
234 Example of testcase definition with pre-configured dummy results:
236 .. code-block:: python
240 "Traffic Type": "rfc2544_back2back",
242 "biDirectional": "True",
243 "Description": "LTD.Throughput.RFC2544.BackToBackFrames",
245 'TRAFFICGEN_DUMMY_RESULTS' : {'b2b frames':'3000','b2b frame loss %':'0.0'}
249 **NOTE:** Pre-configured results for the Dummy traffic generator will be used only
250 in case, that the Dummy traffic generator is used. Otherwise the option
251 ``TRAFFICGEN_DUMMY_RESULTS`` will be ignored.
258 VSPERF can use both IxNetwork and IxExplorer TCL servers to control Ixia chassis.
259 However, usage of IxNetwork TCL server is a preferred option. The following sections
260 will describe installation and configuration of IxNetwork components used by VSPERF.
265 On the system under the test you need to install IxNetworkTclClient$(VER\_NUM)Linux.bin.tgz.
267 On the IXIA client software system you need to install IxNetwork TCL server. After its
268 installation you should configure it as follows:
270 1. Find the IxNetwork TCL server app (start -> All Programs -> IXIA ->
271 IxNetwork -> IxNetwork\_$(VER\_NUM) -> IxNetwork TCL Server)
272 2. Right click on IxNetwork TCL Server, select properties - Under shortcut tab in
273 the Target dialogue box make sure there is the argument "-tclport xxxx"
274 where xxxx is your port number (take note of this port number as you will
275 need it for the 10\_custom.conf file).
277 .. image:: TCLServerProperties.png
279 3. Hit Ok and start the TCL server application
284 There are several configuration options specific to the IxNetwork traffic generator
285 from IXIA. It is essential to set them correctly, before the VSPERF is executed
288 Detailed description of options follows:
290 * ``TRAFFICGEN_IXNET_MACHINE`` - IP address of server, where IxNetwork TCL Server is running
291 * ``TRAFFICGEN_IXNET_PORT`` - PORT, where IxNetwork TCL Server is accepting connections from
293 * ``TRAFFICGEN_IXNET_USER`` - username, which will be used during communication with IxNetwork
294 TCL Server and IXIA chassis
295 * ``TRAFFICGEN_IXIA_HOST`` - IP address of IXIA traffic generator chassis
296 * ``TRAFFICGEN_IXIA_CARD`` - identification of card with dedicated ports at IXIA chassis
297 * ``TRAFFICGEN_IXIA_PORT1`` - identification of the first dedicated port at ``TRAFFICGEN_IXIA_CARD``
298 at IXIA chassis; VSPERF uses two separated ports for traffic generation. In case of
299 unidirectional traffic, it is essential to correctly connect 1st IXIA port to the 1st NIC
300 at DUT, i.e. to the first PCI handle from ``WHITELIST_NICS`` list. Otherwise traffic may not
301 be able to pass through the vSwitch.
302 **NOTE**: In case that ``TRAFFICGEN_IXIA_PORT1`` and ``TRAFFICGEN_IXIA_PORT2`` are set to the
303 same value, then VSPERF will assume, that there is only one port connection between IXIA
304 and DUT. In this case it must be ensured, that chosen IXIA port is physically connected to the
305 first NIC from ``WHITELIST_NICS`` list.
306 * ``TRAFFICGEN_IXIA_PORT2`` - identification of the second dedicated port at ``TRAFFICGEN_IXIA_CARD``
307 at IXIA chassis; VSPERF uses two separated ports for traffic generation. In case of
308 unidirectional traffic, it is essential to correctly connect 2nd IXIA port to the 2nd NIC
309 at DUT, i.e. to the second PCI handle from ``WHITELIST_NICS`` list. Otherwise traffic may not
310 be able to pass through the vSwitch.
311 **NOTE**: In case that ``TRAFFICGEN_IXIA_PORT1`` and ``TRAFFICGEN_IXIA_PORT2`` are set to the
312 same value, then VSPERF will assume, that there is only one port connection between IXIA
313 and DUT. In this case it must be ensured, that chosen IXIA port is physically connected to the
314 first NIC from ``WHITELIST_NICS`` list.
315 * ``TRAFFICGEN_IXNET_LIB_PATH`` - path to the DUT specific installation of IxNetwork TCL API
316 * ``TRAFFICGEN_IXNET_TCL_SCRIPT`` - name of the TCL script, which VSPERF will use for
317 communication with IXIA TCL server
318 * ``TRAFFICGEN_IXNET_TESTER_RESULT_DIR`` - folder accessible from IxNetwork TCL server,
319 where test results are stored, e.g. ``c:/ixia_results``; see test-results-share_
320 * ``TRAFFICGEN_IXNET_DUT_RESULT_DIR`` - directory accessible from the DUT, where test
321 results from IxNetwork TCL server are stored, e.g. ``/mnt/ixia_results``; see
324 .. _test-results-share:
329 VSPERF is not able to retrieve test results via TCL API directly. Instead, all test
330 results are stored at IxNetwork TCL server. Results are stored at folder defined by
331 ``TRAFFICGEN_IXNET_TESTER_RESULT_DIR`` configuration parameter. Content of this
332 folder must be shared (e.g. via samba protocol) between TCL Server and DUT, where
333 VSPERF is executed. VSPERF expects, that test results will be available at directory
334 configured by ``TRAFFICGEN_IXNET_DUT_RESULT_DIR`` configuration parameter.
336 Example of sharing configuration:
338 * Create a new folder at IxNetwork TCL server machine, e.g. ``c:\ixia_results``
339 * Modify sharing options of ``ixia_results`` folder to share it with everybody
340 * Create a new directory at DUT, where shared directory with results
341 will be mounted, e.g. ``/mnt/ixia_results``
342 * Update your custom VSPERF configuration file as follows:
344 .. code-block:: python
346 TRAFFICGEN_IXNET_TESTER_RESULT_DIR = 'c:/ixia_results'
347 TRAFFICGEN_IXNET_DUT_RESULT_DIR = '/mnt/ixia_results'
349 **NOTE:** It is essential to use slashes '/' also in path
350 configured by ``TRAFFICGEN_IXNET_TESTER_RESULT_DIR`` parameter.
351 * Install cifs-utils package.
353 e.g. at rpm based Linux distribution:
355 .. code-block:: console
357 yum install cifs-utils
359 * Mount shared directory, so VSPERF can access test results.
361 e.g. by adding new record into ``/etc/fstab``
363 .. code-block:: console
365 mount -t cifs //_TCL_SERVER_IP_OR_FQDN_/ixia_results /mnt/ixia_results
366 -o file_mode=0777,dir_mode=0777,nounix
368 It is recommended to verify, that any new file inserted into ``c:/ixia_results`` folder
369 is visible at DUT inside ``/mnt/ixia_results`` directory.
371 .. _`Spirent TestCenter`:
376 Spirent installation files and instructions are available on the
377 Spirent support website at:
379 http://support.spirent.com
381 Select a version of Spirent TestCenter software to utilize. This example
382 will use Spirent TestCenter v4.57 as an example. Substitute the appropriate
383 version in place of 'v4.57' in the examples, below.
385 On the CentOS 7 System
386 ~~~~~~~~~~~~~~~~~~~~~~
388 Download and install the following:
390 Spirent TestCenter Application, v4.57 for 64-bit Linux Client
392 Spirent Virtual Deployment Service (VDS)
393 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
395 Spirent VDS is required for both TestCenter hardware and virtual
396 chassis in the vsperf environment. For installation, select the version
397 that matches the Spirent TestCenter Application version. For v4.57,
398 the matching VDS version is 1.0.55. Download either the ova (VMware)
399 or qcow2 (QEMU) image and create a VM with it. Initialize the VM
400 according to Spirent installation instructions.
402 Using Spirent TestCenter Virtual (STCv)
403 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
405 STCv is available in both ova (VMware) and qcow2 (QEMU) formats. For
408 Spirent TestCenter Virtual Machine for VMware, v4.57 for Hypervisor - VMware ESX.ESXi
410 Virtual test port performance is affected by the hypervisor configuration. For
411 best practice results in deploying STCv, the following is suggested:
413 - Create a single VM with two test ports rather than two VMs with one port each
414 - Set STCv in DPDK mode
415 - Give STCv 2*n + 1 cores, where n = the number of ports. For vsperf, cores = 5.
416 - Turning off hyperthreading and pinning these cores will improve performance
417 - Give STCv 2 GB of RAM
419 To get the highest performance and accuracy, Spirent TestCenter hardware is
420 recommended. vsperf can run with either stype test ports.
422 Using STC REST Client
423 ~~~~~~~~~~~~~~~~~~~~~
424 The stcrestclient package provides the stchttp.py ReST API wrapper module.
425 This allows simple function calls, nearly identical to those provided by
426 StcPython.py, to be used to access TestCenter server sessions via the
427 STC ReST API. Basic ReST functionality is provided by the resthttp module,
428 and may be used for writing ReST clients independent of STC.
430 - Project page: <https://github.com/Spirent/py-stcrestclient>
431 - Package download: <http://pypi.python.org/pypi/stcrestclient>
433 To use REST interface, follow the instructions in the Project page to
434 install the package. Once installed, the scripts named with 'rest' keyword
435 can be used. For example: testcenter-rfc2544-rest.py can be used to run
436 RFC 2544 tests using the REST interface.
441 1. The Labserver and license server addresses. These parameters applies to
442 all the tests, and are mandatory for all tests.
444 .. code-block:: console
446 TRAFFICGEN_STC_LAB_SERVER_ADDR = " "
447 TRAFFICGEN_STC_LICENSE_SERVER_ADDR = " "
448 TRAFFICGEN_STC_PYTHON2_PATH = " "
449 TRAFFICGEN_STC_TESTCENTER_PATH = " "
450 TRAFFICGEN_STC_TEST_SESSION_NAME = " "
451 TRAFFICGEN_STC_CSV_RESULTS_FILE_PREFIX = " "
453 2. For RFC2544 tests, the following parameters are mandatory
455 .. code-block:: console
457 TRAFFICGEN_STC_EAST_CHASSIS_ADDR = " "
458 TRAFFICGEN_STC_EAST_SLOT_NUM = " "
459 TRAFFICGEN_STC_EAST_PORT_NUM = " "
460 TRAFFICGEN_STC_EAST_INTF_ADDR = " "
461 TRAFFICGEN_STC_EAST_INTF_GATEWAY_ADDR = " "
462 TRAFFICGEN_STC_WEST_CHASSIS_ADDR = ""
463 TRAFFICGEN_STC_WEST_SLOT_NUM = " "
464 TRAFFICGEN_STC_WEST_PORT_NUM = " "
465 TRAFFICGEN_STC_WEST_INTF_ADDR = " "
466 TRAFFICGEN_STC_WEST_INTF_GATEWAY_ADDR = " "
467 TRAFFICGEN_STC_RFC2544_TPUT_TEST_FILE_NAME
469 3. RFC2889 tests: Currently, the forwarding, address-caching, and
470 address-learning-rate tests of RFC2889 are supported.
471 The testcenter-rfc2889-rest.py script implements the rfc2889 tests.
472 The configuration for RFC2889 involves test-case definition, and parameter
473 definition, as described below. New results-constants, as shown below, are
474 added to support these tests.
476 Example of testcase definition for RFC2889 tests:
478 .. code-block:: python
481 "Name": "phy2phy_forwarding",
483 "Description": "LTD.Forwarding.RFC2889.MaxForwardingRate",
486 "traffic_type" : "rfc2889_forwarding",
491 For RFC2889 tests, specifying the locations for the monitoring ports is mandatory.
492 Necessary parameters are:
494 .. code-block:: console
496 TRAFFICGEN_STC_RFC2889_TEST_FILE_NAME
497 TRAFFICGEN_STC_EAST_CHASSIS_ADDR = " "
498 TRAFFICGEN_STC_EAST_SLOT_NUM = " "
499 TRAFFICGEN_STC_EAST_PORT_NUM = " "
500 TRAFFICGEN_STC_EAST_INTF_ADDR = " "
501 TRAFFICGEN_STC_EAST_INTF_GATEWAY_ADDR = " "
502 TRAFFICGEN_STC_WEST_CHASSIS_ADDR = ""
503 TRAFFICGEN_STC_WEST_SLOT_NUM = " "
504 TRAFFICGEN_STC_WEST_PORT_NUM = " "
505 TRAFFICGEN_STC_WEST_INTF_ADDR = " "
506 TRAFFICGEN_STC_WEST_INTF_GATEWAY_ADDR = " "
507 TRAFFICGEN_STC_VERBOSE = "True"
508 TRAFFICGEN_STC_RFC2889_LOCATIONS="//10.1.1.1/1/1,//10.1.1.1/2/2"
510 Other Configurations are :
512 .. code-block:: console
514 TRAFFICGEN_STC_RFC2889_MIN_LR = 1488
515 TRAFFICGEN_STC_RFC2889_MAX_LR = 14880
516 TRAFFICGEN_STC_RFC2889_MIN_ADDRS = 1000
517 TRAFFICGEN_STC_RFC2889_MAX_ADDRS = 65536
518 TRAFFICGEN_STC_RFC2889_AC_LR = 1000
520 The first 2 values are for address-learning test where as other 3 values are
521 for the Address caching capacity test. LR: Learning Rate. AC: Address Caching.
522 Maximum value for address is 16777216. Whereas, maximum for LR is 4294967295.
524 Results for RFC2889 Tests: Forwarding tests outputs following values:
526 .. code-block:: console
528 TX_RATE_FPS : "Transmission Rate in Frames/sec"
529 THROUGHPUT_RX_FPS: "Received Throughput Frames/sec"
530 TX_RATE_MBPS : " Transmission rate in MBPS"
531 THROUGHPUT_RX_MBPS: "Received Throughput in MBPS"
532 TX_RATE_PERCENT: "Transmission Rate in Percentage"
533 FRAME_LOSS_PERCENT: "Frame loss in Percentage"
534 FORWARDING_RATE_FPS: " Maximum Forwarding Rate in FPS"
537 Whereas, the address caching test outputs following values,
539 .. code-block:: console
541 CACHING_CAPACITY_ADDRS = 'Number of address it can cache'
542 ADDR_LEARNED_PERCENT = 'Percentage of address successfully learned'
544 and address learning test outputs just a single value:
546 .. code-block:: console
548 OPTIMAL_LEARNING_RATE_FPS = 'Optimal learning rate in fps'
550 Note that 'FORWARDING_RATE_FPS', 'CACHING_CAPACITY_ADDRS',
551 'ADDR_LEARNED_PERCENT' and 'OPTIMAL_LEARNING_RATE_FPS' are the new
552 result-constants added to support RFC2889 tests.
562 Xena Networks traffic generator requires specific files and packages to be
563 installed. It is assumed the user has access to the Xena2544.exe file which
564 must be placed in VSPerf installation location under the tools/pkt_gen/xena
565 folder. Contact Xena Networks for the latest version of this file. The user
566 can also visit www.xenanetworks/downloads to obtain the file with a valid
569 **Note** VSPerf has been fully tested with version v2.43 of Xena2544.exe
571 To execute the Xena2544.exe file under Linux distributions the mono-complete
572 package must be installed. To install this package follow the instructions
573 below. Further information can be obtained from
574 http://www.mono-project.com/docs/getting-started/install/linux/
576 .. code-block:: console
578 rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
579 yum-config-manager --add-repo http://download.mono-project.com/repo/centos/
580 yum -y install mono-complete-5.8.0.127-0.xamarin.3.epel7.x86_64
582 To prevent gpg errors on future yum installation of packages the mono-project
583 repo should be disabled once installed.
585 .. code-block:: console
587 yum-config-manager --disable download.mono-project.com_repo_centos_
592 Connection information for your Xena Chassis must be supplied inside the
593 ``10_custom.conf`` or ``03_custom.conf`` file. The following parameters must be
594 set to allow for proper connections to the chassis.
596 .. code-block:: console
598 TRAFFICGEN_XENA_IP = ''
599 TRAFFICGEN_XENA_PORT1 = ''
600 TRAFFICGEN_XENA_PORT2 = ''
601 TRAFFICGEN_XENA_USER = ''
602 TRAFFICGEN_XENA_PASSWORD = ''
603 TRAFFICGEN_XENA_MODULE1 = ''
604 TRAFFICGEN_XENA_MODULE2 = ''
606 RFC2544 Throughput Testing
607 ~~~~~~~~~~~~~~~~~~~~~~~~~~
609 Xena traffic generator testing for rfc2544 throughput can be modified for
610 different behaviors if needed. The default options for the following are
611 optimized for best results.
613 .. code-block:: console
615 TRAFFICGEN_XENA_2544_TPUT_INIT_VALUE = '10.0'
616 TRAFFICGEN_XENA_2544_TPUT_MIN_VALUE = '0.1'
617 TRAFFICGEN_XENA_2544_TPUT_MAX_VALUE = '100.0'
618 TRAFFICGEN_XENA_2544_TPUT_VALUE_RESOLUTION = '0.5'
619 TRAFFICGEN_XENA_2544_TPUT_USEPASS_THRESHHOLD = 'false'
620 TRAFFICGEN_XENA_2544_TPUT_PASS_THRESHHOLD = '0.0'
622 Each value modifies the behavior of rfc 2544 throughput testing. Refer to your
623 Xena documentation to understand the behavior changes in modifying these
626 Xena RFC2544 testing inside VSPerf also includes a final verification option.
627 This option allows for a faster binary search with a longer final verification
628 of the binary search result. This feature can be enabled in the configuration
629 files as well as the length of the final verification in seconds.
631 ..code-block:: python
633 TRAFFICGEN_XENA_RFC2544_VERIFY = False
634 TRAFFICGEN_XENA_RFC2544_VERIFY_DURATION = 120
636 If the final verification does not pass the test with the lossrate specified
637 it will continue the binary search from its previous point. If the smart search
638 option is enabled the search will continue by taking the current pass rate minus
639 the minimum and divided by 2. The maximum is set to the last pass rate minus the
642 For example if the settings are as follows
644 ..code-block:: python
646 TRAFFICGEN_XENA_RFC2544_BINARY_RESTART_SMART_SEARCH = True
647 TRAFFICGEN_XENA_2544_TPUT_MIN_VALUE = '0.5'
648 TRAFFICGEN_XENA_2544_TPUT_VALUE_RESOLUTION = '0.5'
650 and the verification attempt was 64.5, smart search would take 64.5 - 0.5 / 2.
651 This would continue the search at 32 but still have a maximum possible value of
654 If smart is not enabled it will just resume at the last pass rate minus the
657 Continuous Traffic Testing
658 ~~~~~~~~~~~~~~~~~~~~~~~~~~
660 Xena continuous traffic by default does a 3 second learning preemption to allow
661 the DUT to receive learning packets before a continuous test is performed. If
662 a custom test case requires this learning be disabled, you can disable the option
663 or modify the length of the learning by modifying the following settings.
665 .. code-block:: console
667 TRAFFICGEN_XENA_CONT_PORT_LEARNING_ENABLED = False
668 TRAFFICGEN_XENA_CONT_PORT_LEARNING_DURATION = 3
676 MoonGen architecture overview and general installation instructions
679 https://github.com/emmericp/MoonGen
681 * Note: Today, MoonGen with VSPERF only supports 10Gbps line speeds.
683 For VSPERF use, MoonGen should be cloned from here (as opposed to the
684 previously mentioned GitHub):
686 .. code-block:: console
688 git clone https://github.com/atheurer/lua-trafficgen
690 and use the master branch:
692 .. code-block:: console
696 VSPERF uses a particular Lua script with the MoonGen project:
700 Follow MoonGen set up and execution instructions here:
702 https://github.com/atheurer/lua-trafficgen/blob/master/README.md
704 Note one will need to set up ssh login to not use passwords between the server
705 running MoonGen and the device under test (running the VSPERF test
706 infrastructure). This is because VSPERF on one server uses 'ssh' to
707 configure and run MoonGen upon the other server.
709 One can set up this ssh access by doing the following on both servers:
711 .. code-block:: console
713 ssh-keygen -b 2048 -t rsa
714 ssh-copy-id <other server>
719 Connection information for MoonGen must be supplied inside the
720 ``10_custom.conf`` or ``03_custom.conf`` file. The following parameters must be
721 set to allow for proper connections to the host with MoonGen.
723 .. code-block:: console
725 TRAFFICGEN_MOONGEN_HOST_IP_ADDR = ""
726 TRAFFICGEN_MOONGEN_USER = ""
727 TRAFFICGEN_MOONGEN_BASE_DIR = ""
728 TRAFFICGEN_MOONGEN_PORTS = ""
729 TRAFFICGEN_MOONGEN_LINE_SPEED_GBPS = ""
737 Trex architecture overview and general installation instructions
740 https://trex-tgn.cisco.com/trex/doc/trex_stateless.html
742 You can directly download from GitHub:
744 .. code-block:: console
746 git clone https://github.com/cisco-system-traffic-generator/trex-core
748 and use the master branch:
750 .. code-block:: console
754 or Trex latest release you can download from here:
756 .. code-block:: console
758 wget --no-cache http://trex-tgn.cisco.com/trex/release/latest
760 After download, Trex repo has to be built:
762 .. code-block:: console
764 cd trex-core/linux_dpdk
765 ./b configure (run only once)
768 Next step is to create a minimum configuration file. It can be created by script ``dpdk_setup_ports.py``.
769 The script with parameter ``-i`` will run in interactive mode and it will create file ``/etc/trex_cfg.yaml``.
771 .. code-block:: console
774 sudo ./dpdk_setup_ports.py -i
776 Or example of configuration file can be found at location below, but it must be updated manually:
778 .. code-block:: console
780 cp trex-core/scripts/cfg/simple_cfg /etc/trex_cfg.yaml
782 For additional information about configuration file see official documentation (chapter 3.1.2):
784 https://trex-tgn.cisco.com/trex/doc/trex_manual.html#_creating_minimum_configuration_file
786 After compilation and configuration it is possible to run trex server in stateless mode.
787 It is neccesary for proper connection between Trex server and VSPERF.
789 .. code-block:: console
791 cd trex-core/scripts/
794 **NOTE:** Please check your firewall settings at both DUT and T-Rex server.
795 Firewall must allow a connection from DUT (VSPERF) to the T-Rex server running
798 **NOTE:** For high speed cards it may be advantageous to start T-Rex with more transmit queues/cores.
800 .. code-block:: console
802 cd trex-cores/scripts/
805 For additional information about Trex stateless mode see Trex stateless documentation:
807 https://trex-tgn.cisco.com/trex/doc/trex_stateless.html
809 **NOTE:** One will need to set up ssh login to not use passwords between the server
810 running Trex and the device under test (running the VSPERF test
811 infrastructure). This is because VSPERF on one server uses 'ssh' to
812 configure and run Trex upon the other server.
814 One can set up this ssh access by doing the following on both servers:
816 .. code-block:: console
818 ssh-keygen -b 2048 -t rsa
819 ssh-copy-id <other server>
824 Connection information for Trex must be supplied inside the custom configuration
825 file. The following parameters must be set to allow for proper connections to the host with Trex.
826 Example of this configuration is in conf/03_traffic.conf or conf/10_custom.conf.
828 .. code-block:: console
830 TRAFFICGEN_TREX_HOST_IP_ADDR = ''
831 TRAFFICGEN_TREX_USER = ''
832 TRAFFICGEN_TREX_BASE_DIR = ''
834 TRAFFICGEN_TREX_USER has to have sudo permission and password-less access.
835 TRAFFICGEN_TREX_BASE_DIR is the place, where is stored 't-rex-64' file.
837 It is possible to specify the accuracy of RFC2544 Throughput measurement.
838 Threshold below defines maximal difference between frame rate of successful
839 (i.e. defined frameloss was reached) and unsuccessful (i.e. frameloss was
840 exceeded) iterations.
842 Default value of this parameter is defined in conf/03_traffic.conf as follows:
844 .. code-block:: console
846 TRAFFICGEN_TREX_RFC2544_TPUT_THRESHOLD = ''
848 T-Rex can have learning packets enabled. For certain tests it may be beneficial
849 to send some packets before starting test traffic to allow switch learning to take
850 place. This can be adjusted with the following configurations:
852 .. code-block:: console
854 TRAFFICGEN_TREX_LEARNING_MODE=True
855 TRAFFICGEN_TREX_LEARNING_DURATION=5
857 SR-IOV and Multistream layer 2
858 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
859 T-Rex by default only accepts packets on the receive side if the destination mac matches the
860 MAC address specified in the /etc/trex-cfg.yaml on the server side. For SR-IOV this creates
861 challenges with modifying the MAC address in the traffic profile to correctly flow packets
862 through specified VFs. To remove this limitation enable promiscuous mode on T-Rex to allow
863 all packets regardless of the destination mac to be accepted.
865 This also creates problems when doing multistream at layer 2 since the source macs will be
866 modified. Enable Promiscuous mode when doing multistream at layer 2 testing with T-Rex.
868 .. code-block:: console
870 TRAFFICGEN_TREX_PROMISCUOUS=True
872 Card Bandwidth Options
873 ~~~~~~~~~~~~~~~~~~~~~~
875 T-Rex API will attempt to retrieve the highest possible speed from the card using internal
876 calls to port information. If you are using two separate cards then it will take the lowest
877 of the two cards as the max speed. If necessary you can try to force the API to use a
878 specific maximum speed per port. The below configurations can be adjusted to enable this.
880 .. code-block:: console
882 TRAFFICGEN_TREX_FORCE_PORT_SPEED = True
883 TRAFFICGEN_TREX_PORT_SPEED = 40000 # 40 gig
885 **Note::** Setting higher than possible speeds will result in unpredictable behavior when running
886 tests such as duration inaccuracy and/or complete test failure.
891 T-Rex can perform a verification run for a longer duration once the binary search of the
892 RFC2544 trials have completed. This duration should be at least 60 seconds. This is similar
893 to other traffic generator functionality where a more sustained time can be attempted to
894 verify longer runs from the result of the search. This can be configured with the following
897 .. code-block:: console
899 TRAFFICGEN_TREX_VERIFICATION_MODE = False
900 TRAFFICGEN_TREX_VERIFICATION_DURATION = 60
901 TRAFFICGEN_TREX_MAXIMUM_VERIFICATION_TRIALS = 10
903 The duration and maximum number of attempted verification trials can be set to change the
904 behavior of this step. If the verification step fails, it will resume the binary search
905 with new values where the maximum output will be the last attempted frame rate minus the
906 current set thresh hold.