Report: Configure 1901.1.13
[csit.git] / docs / report / vpp_functional_tests / test_environment.rst
1 Test Environment
2 ================
3
4 CSIT VPP functional tests are executed in FD.io VIRL testbeds. The
5 physical VIRL testbed infrastructure consists of three VIRL servers:
6
7 - tb4-virl1:
8
9   - Status: Production
10   - OS: Ubuntu 16.04.2
11   - VIRL STD server version: 0.10.32.16
12   - VIRL UWM server version: 0.10.32.16
13
14 - tb4-virl2:
15
16   - Status: Production
17   - OS: Ubuntu 16.04.2
18   - VIRL STD server version: 0.10.32.16
19   - VIRL UWM server version: 0.10.32.16
20
21 - tb4-virl3:
22
23   - Status: Production
24   - OS: Ubuntu 16.04.2
25   - VIRL STD server version: 0.10.32.19
26   - VIRL UWM server version: 0.10.32.19
27
28 - VIRL hosts: Cisco UCS C240-M4, each with 2x Intel Xeon E5-2699
29   v3 (2.30 GHz, 18c), 512GB RAM.
30
31 Whenever a patch is submitted to gerrit for review, parallel VIRL
32 simulations are started to reduce the time of execution of all
33 functional tests. The number of parallel VIRL simulations is equal to a
34 number of test groups defined by TEST_GROUPS variable in
35 :file:`csit/bootstrap.sh` file. VIRL host to run VIRL simulation is
36 selected based on least load algorithm per VIRL simulation.
37
38 Every VIRL simulation uses the same three-node logical ring topology -
39 Traffic Generator (TG node) and two Systems Under Test (SUT1 and SUT2).
40 The appropriate pre-built VPP packages built by Jenkins for the patch
41 under review are then installed on the two SUTs, along with their
42 :file:`/etc/vpp/startup.conf` file, in all VIRL simulations.
43
44 SUT Settings - VIRL Guest VM
45 ----------------------------
46
47 SUT VMs' settings are defined in `VIRL topologies directory`_
48
49 - List of SUT VM interfaces:
50
51     <interface id="0" name="GigabitEthernet0/4/0"/>
52     <interface id="1" name="GigabitEthernet0/5/0"/>
53     <interface id="2" name="GigabitEthernet0/6/0"/>
54     <interface id="3" name="GigabitEthernet0/7/0"/>
55
56 - Number of 2MB hugepages: 1024.
57
58 - Maximum number of memory map areas: 20000.
59
60 - Kernel Shared Memory Max: 2147483648 (vm.nr_hugepages * 2 * 1024 * 1024).
61
62 SUT Settings - VIRL Guest OS Linux
63 ----------------------------------
64
65 In CSIT terminology, the VM operating system for both SUTs that |vpp-release|
66 has been tested with, is the following:
67
68 #. Ubuntu VIRL image
69
70    This image implies Ubuntu 16.04.1 LTS, current as of yyyy-mm-dd (that is,
71    package versions are those that would have been installed by a
72    :command:`apt-get update`, :command:`apt-get upgrade` on that day), produced
73    by CSIT disk image build scripts.
74
75    The exact list of installed packages and their versions (including the Linux
76    kernel package version) are included in `VIRL ubuntu images lists`_.
77
78    A replica of this VM image can be built by running the :command:`build.sh`
79    script in CSIT repository.
80
81 #. CentOS VIRL image
82
83    This image implies Centos 7.4-1711, current as of yyyy-mm-dd (that is,
84    package versions are those that would have been installed by a
85    :command:`yum update`, :command:`yum upgrade` on that day), produced
86    by CSIT disk image build scripts.
87
88    The exact list of installed packages and their versions (including the Linux
89    kernel package version) are included in `VIRL centos images lists`_.
90
91    A replica of this VM image can be built by running the :command:`build.sh`
92    script in CSIT repository.
93
94 #. Nested VM image
95
96    In addition to the "main" VM image, tests which require VPP to communicate to
97    a VM over a vhost-user interface, utilize a "nested" VM image.
98
99    This "nested" VM is dynamically created and destroyed as part of a test case,
100    and therefore the "nested" VM image is optimized to be small, lightweight and
101    have a short boot time. The "nested" VM image is not built around any
102    established Linux distribution, but is based on `BuildRoot
103    <https://buildroot.org/>`_, a tool for building embedded Linux systems. Just
104    as for the "main" image, scripts to produce an identical replica of the
105    "nested" image are included in CSIT GIT repository, and the image can be
106    rebuilt using the "build.sh" script at `VIRL nested`_.
107
108 DUT Settings - VPP
109 ------------------
110
111 Every System Under Test runs VPP SW application in Linux user-mode as a Device
112 Under Test (DUT) node.
113
114 DUT Port Configuration
115 ~~~~~~~~~~~~~~~~~~~~~~
116
117 Port configuration of DUTs is defined in topology file that is generated per
118 VIRL simulation based on the definition stored in `VIRL topologies directory`_.
119
120 Example of DUT nodes configuration:
121
122 ::
123
124     DUT1:
125         type: DUT
126         host: "10.30.51.157"
127         arch: x86_64
128         port: 22
129         username: cisco
130         honeycomb:
131           user: admin
132           passwd: admin
133           port: 8183
134           netconf_port: 2831
135         priv_key: |
136           -----BEGIN RSA PRIVATE KEY-----
137           MIIEpgIBAAKCAQEAwUDlTpzSHpwLQotZOFS4AgcPNEWCnP1AB2hWFmvI+8Kah/gb
138           v8ruZU9RqhPs56tyKzxbhvNkY4VbH5F1GilHZu3mLqzM4KfghMmaeMEjO1T7BYYd
139           vuBfTvIluljfQ2vAlnYrDwn+ClxJk81m0pDgvrLEX4qVVh2sGh7UEkYy5r82DNa2
140           4VjzPB1J/c8a9zP8FoZUhYIzF4FLvRMjUADpbMXgJMsGpaZLmz95ap0Eot7vb1Cc
141           1LvF97iyBCrtIOSKRKA50ZhLGjMKmOwnYU+cP5718tbproDVi6VJOo7zeuXyetMs
142           8YBl9kWblWG9BqP9jctFvsmi5G7hXgq1Y8u+DwIDAQABAoIBAQC/W4E0DHjLMny7
143           0bvw2YKzD0Zw3fttdB94tkm4PdZv5MybooPnsAvLaXVV0hEdfVi5kzSWNl/LY/tN
144           EP1BgGphc2QgB59/PPxGwFIjDCvUzlsZpynBHe+B/qh5ExNQcVvsIOqWI7DXlXaN
145           0i/khOzmJ6HncRRah1spKimYRsaUUDskyg7q3QqMWVaqBbbMvLs/w7ZWd/zoDqCU
146           MY/pCI6hkB3QbRo0OdiZLohphBl2ShABTwjvVyyKL5UA4jAEneJrhH5gWVLXnfgD
147           p62W5CollKEYblC8mUkPxpP7Qo277zw3xaq+oktIZhc5SUEUd7nJZtNqVAHqkItW
148           79VmpKyxAoGBAPfU+kqNPaTSvp+x1n5sn2SgipzDtgi9QqNmC4cjtrQQaaqI57SG
149           OHw1jX8i7L2G1WvVtkHg060nlEVo5n65ffFOqeVBezLVJ7ghWI8U+oBiJJyQ4boD
150           GJVNsoOSUQ0rtuGd9eVwfDk3ol9aCN0KK53oPfIYli29pyu4l095kg11AoGBAMef
151           bPEMBI/2XmCPshLSwhGFl+dW8d+Klluj3CUQ/0vUlvma3dfBOYNsIwAgTP0iIUTg
152           8DYE6KBCdPtxAUEI0YAEAKB9ry1tKR2NQEIPfslYytKErtwjAiqSi0heM6+zwEzu
153           f54Z4oBhsMSL0jXoOMnu+NZzEc6EUdQeY4O+jhjzAoGBAIogC3dtjMPGKTP7+93u
154           UE/XIioI8fWg9fj3sMka4IMu+pVvRCRbAjRH7JrFLkjbUyuMqs3Arnk9K+gbdQt/
155           +m95Njtt6WoFXuPCwgbM3GidSmZwYT4454SfDzVBYScEDCNm1FuR+8ov9bFLDtGT
156           D4gsngnGJj1MDFXTxZEn4nzZAoGBAKCg4WmpUPaCuXibyB+rZavxwsTNSn2lJ83/
157           sYJGBhf/raiV/FLDUcM1vYg5dZnu37RsB/5/vqxOLZGyYd7x+Jo5HkQGPnKgNwhn
158           g8BkdZIRF8uEJqxOo0ycdOU7n/2O93swIpKWo5LIiRPuqqzj+uZKnAL7vuVdxfaY
159           qVz2daMPAoGBALgaaKa3voU/HO1PYLWIhFrBThyJ+BQSQ8OqrEzC8AnegWFxRAM8
160           EqrzZXl7ACUuo1dH0Eipm41j2+BZWlQjiUgq5uj8+yzy+EU1ZRRyJcOKzbDACeuD
161           BpWWSXGBI5G4CppeYLjMUHZpJYeX1USULJQd2c4crLJKb76E8gz3Z9kN
162           -----END RSA PRIVATE KEY-----
163
164         interfaces:
165           port1:
166             mac_address: "fa:16:3e:9b:89:52"
167             pci_address: "0000:00:04.0"
168             link: link1
169           port2:
170             mac_address: "fa:16:3e:7a:33:60"
171             pci_address: "0000:00:05.0"
172             link: link4
173           port3:
174             mac_address: "fa:16:3e:29:b7:ae"
175             pci_address: "0000:00:06.0"
176             link: link3
177           port4:
178             mac_address: "fa:16:3e:76:8d:ff"
179             pci_address: "0000:00:07.0"
180             link: link6
181       DUT2:
182         type: DUT
183         host: "10.30.51.156"
184         arch: x86_64
185         port: 22
186         username: cisco
187         honeycomb:
188           user: admin
189           passwd: admin
190           port: 8183
191           netconf_port: 2831
192         priv_key: |
193           -----BEGIN RSA PRIVATE KEY-----
194           MIIEpgIBAAKCAQEAwUDlTpzSHpwLQotZOFS4AgcPNEWCnP1AB2hWFmvI+8Kah/gb
195           v8ruZU9RqhPs56tyKzxbhvNkY4VbH5F1GilHZu3mLqzM4KfghMmaeMEjO1T7BYYd
196           vuBfTvIluljfQ2vAlnYrDwn+ClxJk81m0pDgvrLEX4qVVh2sGh7UEkYy5r82DNa2
197           4VjzPB1J/c8a9zP8FoZUhYIzF4FLvRMjUADpbMXgJMsGpaZLmz95ap0Eot7vb1Cc
198           1LvF97iyBCrtIOSKRKA50ZhLGjMKmOwnYU+cP5718tbproDVi6VJOo7zeuXyetMs
199           8YBl9kWblWG9BqP9jctFvsmi5G7hXgq1Y8u+DwIDAQABAoIBAQC/W4E0DHjLMny7
200           0bvw2YKzD0Zw3fttdB94tkm4PdZv5MybooPnsAvLaXVV0hEdfVi5kzSWNl/LY/tN
201           EP1BgGphc2QgB59/PPxGwFIjDCvUzlsZpynBHe+B/qh5ExNQcVvsIOqWI7DXlXaN
202           0i/khOzmJ6HncRRah1spKimYRsaUUDskyg7q3QqMWVaqBbbMvLs/w7ZWd/zoDqCU
203           MY/pCI6hkB3QbRo0OdiZLohphBl2ShABTwjvVyyKL5UA4jAEneJrhH5gWVLXnfgD
204           p62W5CollKEYblC8mUkPxpP7Qo277zw3xaq+oktIZhc5SUEUd7nJZtNqVAHqkItW
205           79VmpKyxAoGBAPfU+kqNPaTSvp+x1n5sn2SgipzDtgi9QqNmC4cjtrQQaaqI57SG
206           OHw1jX8i7L2G1WvVtkHg060nlEVo5n65ffFOqeVBezLVJ7ghWI8U+oBiJJyQ4boD
207           GJVNsoOSUQ0rtuGd9eVwfDk3ol9aCN0KK53oPfIYli29pyu4l095kg11AoGBAMef
208           bPEMBI/2XmCPshLSwhGFl+dW8d+Klluj3CUQ/0vUlvma3dfBOYNsIwAgTP0iIUTg
209           8DYE6KBCdPtxAUEI0YAEAKB9ry1tKR2NQEIPfslYytKErtwjAiqSi0heM6+zwEzu
210           f54Z4oBhsMSL0jXoOMnu+NZzEc6EUdQeY4O+jhjzAoGBAIogC3dtjMPGKTP7+93u
211           UE/XIioI8fWg9fj3sMka4IMu+pVvRCRbAjRH7JrFLkjbUyuMqs3Arnk9K+gbdQt/
212           +m95Njtt6WoFXuPCwgbM3GidSmZwYT4454SfDzVBYScEDCNm1FuR+8ov9bFLDtGT
213           D4gsngnGJj1MDFXTxZEn4nzZAoGBAKCg4WmpUPaCuXibyB+rZavxwsTNSn2lJ83/
214           sYJGBhf/raiV/FLDUcM1vYg5dZnu37RsB/5/vqxOLZGyYd7x+Jo5HkQGPnKgNwhn
215           g8BkdZIRF8uEJqxOo0ycdOU7n/2O93swIpKWo5LIiRPuqqzj+uZKnAL7vuVdxfaY
216           qVz2daMPAoGBALgaaKa3voU/HO1PYLWIhFrBThyJ+BQSQ8OqrEzC8AnegWFxRAM8
217           EqrzZXl7ACUuo1dH0Eipm41j2+BZWlQjiUgq5uj8+yzy+EU1ZRRyJcOKzbDACeuD
218           BpWWSXGBI5G4CppeYLjMUHZpJYeX1USULJQd2c4crLJKb76E8gz3Z9kN
219           -----END RSA PRIVATE KEY-----
220
221         interfaces:
222           port1:
223             mac_address: "fa:16:3e:ad:6c:7d"
224             pci_address: "0000:00:04.0"
225             link: link2
226           port2:
227             mac_address: "fa:16:3e:94:a4:99"
228             pci_address: "0000:00:05.0"
229             link: link5
230           port3:
231             mac_address: "fa:16:3e:75:92:da"
232             pci_address: "0000:00:06.0"
233             link: link3
234           port4:
235             mac_address: "fa:16:3e:2c:b1:2a"
236             pci_address: "0000:00:07.0"
237             link: link6
238
239 VPP Version
240 ~~~~~~~~~~~
241
242 |vpp-release|
243
244 VPP Installed Packages - Ubuntu
245 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
246
247 ::
248
249     Desired=Unknown/Install/Remove/Purge/Hold
250     | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
251     |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
252     ||/ Name           Version       Architecture Description
253     +++-==============-=============-============-=============================================
254     ii  vpp            19.01-release amd64        Vector Packet Processing--executables
255     ii  vpp-api-python 19.01-release amd64        VPP Python API bindings
256     ii  vpp-dbg        19.01-release amd64        Vector Packet Processing--debug symbols
257     ii  vpp-dev        19.01-release amd64        Vector Packet Processing--development support
258     ii  vpp-lib        19.01-release amd64        Vector Packet Processing--runtime libraries
259     ii  vpp-plugins    19.01-release amd64        Vector Packet Processing--runtime plugins
260
261 VPP Installed Packages - Centos
262 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
263
264 ::
265
266     $ rpm -qai vpp*
267     Name        : vpp-selinux-policy
268     Version     : 19.01
269     Release     : release
270     Architecture: x86_64
271     Install Date: Thu 31 Jan 2019 07:16:34 AM EST
272     Group       : System Environment/Base
273     Size        : 102213
274     License     : ASL 2.0
275     Signature   : (none)
276     Source RPM  : vpp-19.01-release.src.rpm
277     Build Date  : Wed 30 Jan 2019 06:04:06 PM EST
278     Build Host  : ed28282db47e
279     Relocations : (not relocatable)
280     Summary     : VPP Security-Enhanced Linux (SELinux) policy
281     Description :
282     This package contains a tailored VPP SELinux policy
283     Name        : vpp-plugins
284     Version     : 19.01
285     Release     : release
286     Architecture: x86_64
287     Install Date: Thu 31 Jan 2019 07:16:37 AM EST
288     Group       : System Environment/Libraries
289     Size        : 84873573
290     License     : ASL 2.0
291     Signature   : (none)
292     Source RPM  : vpp-19.01-release.src.rpm
293     Build Date  : Wed 30 Jan 2019 06:04:06 PM EST
294     Build Host  : ed28282db47e
295     Relocations : (not relocatable)
296     Summary     : Vector Packet Processing--runtime plugins
297     Description :
298     This package contains VPP plugins
299     Name        : vpp-api-python
300     Version     : 19.01
301     Release     : release
302     Architecture: x86_64
303     Install Date: Thu 31 Jan 2019 07:16:34 AM EST
304     Group       : Development/Libraries
305     Size        : 163624
306     License     : ASL 2.0
307     Signature   : (none)
308     Source RPM  : vpp-19.01-release.src.rpm
309     Build Date  : Wed 30 Jan 2019 06:04:06 PM EST
310     Build Host  : ed28282db47e
311     Relocations : (not relocatable)
312     Summary     : VPP api python bindings
313     Description :
314     This package contains the python bindings for the vpp api
315     Name        : vpp
316     Version     : 19.01
317     Release     : release
318     Architecture: x86_64
319     Install Date: Thu 31 Jan 2019 07:16:34 AM EST
320     Group       : Unspecified
321     Size        : 2522340
322     License     : ASL 2.0
323     Signature   : (none)
324     Source RPM  : vpp-19.01-release.src.rpm
325     Build Date  : Wed 30 Jan 2019 06:04:06 PM EST
326     Build Host  : ed28282db47e
327     Relocations : (not relocatable)
328     Summary     : Vector Packet Processing
329     Description :
330     This package provides VPP executables: vpp, vpp_api_test, vpp_json_test
331     vpp - the vector packet engine
332     vpp_api_test - vector packet engine API test tool
333     vpp_json_test - vector packet engine JSON test tool
334     Name        : vpp-lib
335     Version     : 19.01
336     Release     : release
337     Architecture: x86_64
338     Install Date: Thu 31 Jan 2019 07:16:34 AM EST
339     Group       : System Environment/Libraries
340     Size        : 12203613
341     License     : ASL 2.0
342     Signature   : (none)
343     Source RPM  : vpp-19.01-release.src.rpm
344     Build Date  : Wed 30 Jan 2019 06:04:06 PM EST
345     Build Host  : ed28282db47e
346     Relocations : (not relocatable)
347     Summary     : VPP libraries
348     Description :
349     This package contains the VPP shared libraries, including:
350     vppinfra - foundation library supporting vectors, hashes, bitmaps, pools, and string formatting.
351     svm - vm library
352     vlib - vector processing library
353     vlib-api - binary API library
354     vnet -  network stack library
355     Name        : vpp-devel
356     Version     : 19.01
357     Release     : release
358     Architecture: x86_64
359     Install Date: Thu 31 Jan 2019 07:16:38 AM EST
360     Group       : Development/Libraries
361     Size        : 12835399
362     License     : ASL 2.0
363     Signature   : (none)
364     Source RPM  : vpp-19.01-release.src.rpm
365     Build Date  : Wed 30 Jan 2019 06:04:06 PM EST
366     Build Host  : ed28282db47e
367     Relocations : (not relocatable)
368     Summary     : VPP header files, static libraries
369     Description :
370     This package contains the header files for VPP.
371     Install this package if you want to write a
372     program for compilation and linking with vpp lib.
373     vlib
374     vlibmemory
375     vnet - devices, classify, dhcp, ethernet flow, gre, ip, etc.
376     vpp-api
377     vppinfra
378
379 VPP Startup Configuration
380 ~~~~~~~~~~~~~~~~~~~~~~~~~
381
382 VPP startup configuration is common for all test cases except test cases related
383 to SW Crypto device.
384
385 **Common Configuration**
386
387 ::
388
389     $ cat /etc/vpp/startup.conf
390     unix {
391       nodaemon
392       log /var/log/vpp/vpp.log
393       full-coredump
394       cli-listen /run/vpp/cli.sock
395       gid vpp
396     }
397
398     api-trace {
399     ## This stanza controls binary API tracing. Unless there is a very strong reason,
400     ## please leave this feature enabled.
401       on
402     ## Additional parameters:
403     ##
404     ## To set the number of binary API trace records in the circular buffer, configure nitems
405     ##
406     ## nitems <nnn>
407     ##
408     ## To save the api message table decode tables, configure a filename. Results in /tmp/<filename>
409     ## Very handy for understanding api message changes between versions, identifying missing
410     ## plugins, and so forth.
411     ##
412     ## save-api-table <filename>
413     }
414
415     api-segment {
416       gid vpp
417     }
418
419     socksvr {
420       default
421     }
422
423     cpu {
424         ## In the VPP there is one main thread and optionally the user can create worker(s)
425         ## The main thread and worker thread(s) can be pinned to CPU core(s) manually or automatically
426
427         ## Manual pinning of thread(s) to CPU core(s)
428
429         ## Set logical CPU core where main thread runs, if main core is not set
430         ## VPP will use core 1 if available
431         # main-core 1
432
433         ## Set logical CPU core(s) where worker threads are running
434         # corelist-workers 2-3,18-19
435
436         ## Automatic pinning of thread(s) to CPU core(s)
437
438         ## Sets number of CPU core(s) to be skipped (1 ... N-1)
439         ## Skipped CPU core(s) are not used for pinning main thread and working thread(s).
440         ## The main thread is automatically pinned to the first available CPU core and worker(s)
441         ## are pinned to next free CPU core(s) after core assigned to main thread
442         # skip-cores 4
443
444         ## Specify a number of workers to be created
445         ## Workers are pinned to N consecutive CPU cores while skipping "skip-cores" CPU core(s)
446         ## and main thread's CPU core
447         # workers 2
448
449         ## Set scheduling policy and priority of main and worker threads
450
451         ## Scheduling policy options are: other (SCHED_OTHER), batch (SCHED_BATCH)
452         ## idle (SCHED_IDLE), fifo (SCHED_FIFO), rr (SCHED_RR)
453         # scheduler-policy fifo
454
455         ## Scheduling priority is used only for "real-time policies (fifo and rr),
456         ## and has to be in the range of priorities supported for a particular policy
457         # scheduler-priority 50
458     }
459
460     # dpdk {
461         ## Change default settings for all interfaces
462         # dev default {
463             ## Number of receive queues, enables RSS
464             ## Default is 1
465             # num-rx-queues 3
466
467             ## Number of transmit queues, Default is equal
468             ## to number of worker threads or 1 if no workers treads
469             # num-tx-queues 3
470
471             ## Number of descriptors in transmit and receive rings
472             ## increasing or reducing number can impact performance
473             ## Default is 1024 for both rx and tx
474             # num-rx-desc 512
475             # num-tx-desc 512
476
477             ## VLAN strip offload mode for interface
478             ## Default is off
479             # vlan-strip-offload on
480         # }
481
482         ## Whitelist specific interface by specifying PCI address
483         # dev 0000:02:00.0
484
485         ## Blacklist specific device type by specifying PCI vendor:device
486             ## Whitelist entries take precedence
487         # blacklist 8086:10fb
488
489         ## Set interface name
490         # dev 0000:02:00.1 {
491         #       name eth0
492         # }
493
494         ## Whitelist specific interface by specifying PCI address and in
495         ## addition specify custom parameters for this interface
496         # dev 0000:02:00.1 {
497         #       num-rx-queues 2
498         # }
499
500         ## Specify bonded interface and its slaves via PCI addresses
501         ##
502         ## Bonded interface in XOR load balance mode (mode 2) with L3 and L4 headers
503         # vdev eth_bond0,mode=2,slave=0000:02:00.0,slave=0000:03:00.0,xmit_policy=l34
504         # vdev eth_bond1,mode=2,slave=0000:02:00.1,slave=0000:03:00.1,xmit_policy=l34
505         ##
506         ## Bonded interface in Active-Back up mode (mode 1)
507         # vdev eth_bond0,mode=1,slave=0000:02:00.0,slave=0000:03:00.0
508         # vdev eth_bond1,mode=1,slave=0000:02:00.1,slave=0000:03:00.1
509
510         ## Change UIO driver used by VPP, Options are: igb_uio, vfio-pci,
511         ## uio_pci_generic or auto (default)
512         # uio-driver vfio-pci
513
514         ## Disable multi-segment buffers, improves performance but
515         ## disables Jumbo MTU support
516         # no-multi-seg
517
518         ## Increase number of buffers allocated, needed only in scenarios with
519         ## large number of interfaces and worker threads. Value is per CPU socket.
520         ## Default is 16384
521         # num-mbufs 128000
522
523         ## Change hugepages allocation per-socket, needed only if there is need for
524         ## larger number of mbufs. Default is 256M on each detected CPU socket
525         # socket-mem 2048,2048
526
527         ## Disables UDP / TCP TX checksum offload. Typically needed for use
528         ## faster vector PMDs (together with no-multi-seg)
529         # no-tx-checksum-offload
530     # }
531
532
533     # plugins {
534         ## Adjusting the plugin path depending on where the VPP plugins are
535         #       path /ws/vpp/build-root/install-vpp-native/vpp/lib/vpp_plugins
536
537         ## Disable all plugins by default and then selectively enable specific plugins
538         # plugin default { disable }
539         # plugin dpdk_plugin.so { enable }
540         # plugin acl_plugin.so { enable }
541
542         ## Enable all plugins by default and then selectively disable specific plugins
543         # plugin dpdk_plugin.so { disable }
544         # plugin acl_plugin.so { disable }
545     # }
546
547 **SW Crypto Device Configuration**
548
549 ::
550
551     $ cat /etc/vpp/startup.conf
552     unix
553     {
554       cli-listen /run/vpp/cli.sock
555       gid vpp
556       nodaemon
557       full-coredump
558       log /tmp/vpp.log
559     }
560     api-segment
561     {
562       gid vpp
563     }
564     dpdk
565     {
566       vdev cryptodev_aesni_gcm_pmd,socket_id=0
567       vdev cryptodev_aesni_mb_pmd,socket_id=0
568     }
569
570 TG Settings - Scapy
571 -------------------
572
573 Traffic Generator node is VM running the same OS Linux as SUTs. Ports of this
574 VM are used as source (Tx) and destination (Rx) ports for the traffic.
575
576 Traffic scripts of test cases are executed on this VM.
577
578 TG VM Configuration
579 ~~~~~~~~~~~~~~~~~~~
580
581 Configuration of the TG VMs is defined in `VIRL topologies directory`_.
582
583    /csit/resources/tools/virl/topologies/double-ring-nested.xenial.virl
584
585 - List of TG VM interfaces:::
586
587     <interface id="0" name="eth1"/>
588     <interface id="1" name="eth2"/>
589     <interface id="2" name="eth3"/>
590     <interface id="3" name="eth4"/>
591     <interface id="4" name="eth5"/>
592     <interface id="5" name="eth6"/>
593
594 TG Port Configuration
595 ~~~~~~~~~~~~~~~~~~~~~
596
597 Port configuration of TG is defined in topology file that is generated per VIRL
598 simulation based on the definition stored in `VIRL topologies directory`_.
599
600 Example of TG node configuration:::
601
602     TG:
603         type: TG
604         host: "10.30.51.155"
605         arch: x86_64
606         port: 22
607         username: cisco
608         priv_key: |
609           -----BEGIN RSA PRIVATE KEY-----
610           MIIEpgIBAAKCAQEAwUDlTpzSHpwLQotZOFS4AgcPNEWCnP1AB2hWFmvI+8Kah/gb
611           v8ruZU9RqhPs56tyKzxbhvNkY4VbH5F1GilHZu3mLqzM4KfghMmaeMEjO1T7BYYd
612           vuBfTvIluljfQ2vAlnYrDwn+ClxJk81m0pDgvrLEX4qVVh2sGh7UEkYy5r82DNa2
613           4VjzPB1J/c8a9zP8FoZUhYIzF4FLvRMjUADpbMXgJMsGpaZLmz95ap0Eot7vb1Cc
614           1LvF97iyBCrtIOSKRKA50ZhLGjMKmOwnYU+cP5718tbproDVi6VJOo7zeuXyetMs
615           8YBl9kWblWG9BqP9jctFvsmi5G7hXgq1Y8u+DwIDAQABAoIBAQC/W4E0DHjLMny7
616           0bvw2YKzD0Zw3fttdB94tkm4PdZv5MybooPnsAvLaXVV0hEdfVi5kzSWNl/LY/tN
617           EP1BgGphc2QgB59/PPxGwFIjDCvUzlsZpynBHe+B/qh5ExNQcVvsIOqWI7DXlXaN
618           0i/khOzmJ6HncRRah1spKimYRsaUUDskyg7q3QqMWVaqBbbMvLs/w7ZWd/zoDqCU
619           MY/pCI6hkB3QbRo0OdiZLohphBl2ShABTwjvVyyKL5UA4jAEneJrhH5gWVLXnfgD
620           p62W5CollKEYblC8mUkPxpP7Qo277zw3xaq+oktIZhc5SUEUd7nJZtNqVAHqkItW
621           79VmpKyxAoGBAPfU+kqNPaTSvp+x1n5sn2SgipzDtgi9QqNmC4cjtrQQaaqI57SG
622           OHw1jX8i7L2G1WvVtkHg060nlEVo5n65ffFOqeVBezLVJ7ghWI8U+oBiJJyQ4boD
623           GJVNsoOSUQ0rtuGd9eVwfDk3ol9aCN0KK53oPfIYli29pyu4l095kg11AoGBAMef
624           bPEMBI/2XmCPshLSwhGFl+dW8d+Klluj3CUQ/0vUlvma3dfBOYNsIwAgTP0iIUTg
625           8DYE6KBCdPtxAUEI0YAEAKB9ry1tKR2NQEIPfslYytKErtwjAiqSi0heM6+zwEzu
626           f54Z4oBhsMSL0jXoOMnu+NZzEc6EUdQeY4O+jhjzAoGBAIogC3dtjMPGKTP7+93u
627           UE/XIioI8fWg9fj3sMka4IMu+pVvRCRbAjRH7JrFLkjbUyuMqs3Arnk9K+gbdQt/
628           +m95Njtt6WoFXuPCwgbM3GidSmZwYT4454SfDzVBYScEDCNm1FuR+8ov9bFLDtGT
629           D4gsngnGJj1MDFXTxZEn4nzZAoGBAKCg4WmpUPaCuXibyB+rZavxwsTNSn2lJ83/
630           sYJGBhf/raiV/FLDUcM1vYg5dZnu37RsB/5/vqxOLZGyYd7x+Jo5HkQGPnKgNwhn
631           g8BkdZIRF8uEJqxOo0ycdOU7n/2O93swIpKWo5LIiRPuqqzj+uZKnAL7vuVdxfaY
632           qVz2daMPAoGBALgaaKa3voU/HO1PYLWIhFrBThyJ+BQSQ8OqrEzC8AnegWFxRAM8
633           EqrzZXl7ACUuo1dH0Eipm41j2+BZWlQjiUgq5uj8+yzy+EU1ZRRyJcOKzbDACeuD
634           BpWWSXGBI5G4CppeYLjMUHZpJYeX1USULJQd2c4crLJKb76E8gz3Z9kN
635           -----END RSA PRIVATE KEY-----
636
637         interfaces:
638           port3:
639             mac_address: "fa:16:3e:b9:e1:27"
640             pci_address: "0000:00:06.0"
641             link: link1
642             driver: virtio-pci
643           port4:
644             mac_address: "fa:16:3e:e9:c8:68"
645             pci_address: "0000:00:07.0"
646             link: link4
647             driver: virtio-pci
648           port5:
649             mac_address: "fa:16:3e:e8:d3:47"
650             pci_address: "0000:00:08.0"
651             link: link2
652             driver: virtio-pci
653           port6:
654             mac_address: "fa:16:3e:cf:ca:58"
655             pci_address: "0000:00:09.0"
656             link: link5
657             driver: virtio-pci
658
659 Traffic Generator
660 ~~~~~~~~~~~~~~~~~
661
662 Functional tests utilize Scapy as a traffic generator. Scapy v2.3.1 is
663 used for |vpp-release| tests.
664