blob: 7dd2c996a80acc925e18ecdc4e9a4fb623fb58ae [file] [log] [blame]
John DeNisco06dcd452018-07-26 12:45:10 -04001.. _startup:
2
3
4.. toctree::
5
6
7=======================================
8VPP Configuration File - 'startup.conf'
9=======================================
10
11
12After a successful installation, VPP installs a startup config file named
13*'startup.conf'* in the *'/etc/vpp/'*' directory. This file can be tailored to
14make VPP run as desired, but contains default values for typical installations.
15Below are more details about this file and parameter and values it contains.
16
17Introduction
18------------
19
20The VPP network stack comes with several configuration options that can be
21provided either on the command line when VPP is started, or in a configuration
22file. Specific applications built on the stack have been known to require a dozen
23arguments, depending on requirements.
24
25Command-line Arguments
26----------------------
27
28Parameters are grouped by a section name. When providing more than one
29parameter to a section, all parameters for that section must be wrapped in
30curly braces. For example, to start VPP with configuration data via the
31command line with the section name *'unix'*:
32
33.. code-block:: console
34
35 $ sudo /usr/bin/vpp unix { interactive cli-listen 127.0.0.1:5002 }
36
37The command line can be presented as a single string or as several; anything
38given on the command line is concatenated with spaces into a single string
39before parsing. VPP applications must be able to locate their own executable
40images. The simplest way to ensure this will work is to invoke a VPP
41application by giving its absolute path. For example:
42*'/usr/bin/vpp <options>'* At startup, VPP applications parse through their
43own ELF-sections [primarily] to make lists of init, configuration, and exit
44handlers.
45
46When developing with VPP, in gdb it's often sufficient to start an application
47like this:
48
49.. code-block:: console
50
51 (gdb) run unix interactive
52
53Configuration File
54------------------
55
56It is also possible to supply the configuration parameters in a startup
57configuration. The path of the file is provided to the VPP application on its
58command line. The format of the configuration file is a simple text file with
59the same content as the command line, but with the benefit of being able to use
60newlines to make the content easier to read. For example:
61
62.. code-block:: console
63
64 $ cat /etc/vpp/startup.conf
65 unix {
66 nodaemon
67 log /var/log/vpp/vpp.log
68 full-coredump
69 cli-listen localhost:5002
70 }
71
72 api-trace {
73 on
74 }
75
76 dpdk {
77 dev 0000:03:00.0
78 }
79
80VPP is then instructed to load this file with the -c option. For example:
81
82.. code-block:: console
83
84 $ sudo /usr/bin/vpp -c /etc/vpp/startup.conf
85
86When the VPP service is started, VPP is started with this option via another
87installed file, vpp.service (Ubuntu: /lib/systemd/system/vpp.service and
88CentOS: /usr/lib/systemd/system/vpp.service). See *'ExecStart'* below:
89
90.. code-block:: console
91
92 $ cat /lib/systemd/system/vpp.service
93 [Unit]
94 Description=vector packet processing engine
95 After=network.target
96
97 [Service]
98 Type=simple
99 ExecStartPre=-/bin/rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api
100 ExecStartPre=-/sbin/modprobe uio_pci_generic
101 ExecStart=/usr/bin/vpp -c /etc/vpp/startup.conf
102 ExecStopPost=/bin/rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api
103 Restart=always
104
105 [Install]
106 WantedBy=multi-user.target
107
108
109Configuration Parameters
110------------------------
111
112Below is the list of section names and their associated parameters. This is not
113an exhaustive list of parameters available. The command-line argument parsers
114can be found in the source code by searching for instances of the
115**VLIB_CONFIG_FUNCTION** and **VLIB_EARLY_CONFIG_FUNCTION** macro.
116
117For example, the invocation *'VLIB_CONFIG_FUNCTION (foo_config, "foo")'* will
118cause the function *'foo_config'* to receive all parameters given in a
119parameter block named "foo": "foo { arg1 arg2 arg3 ... }".
120
121
122List of Basic Parameters:
123-------------------------
124
125| unix_
126| dpdk_
127| cpu_
128
129List of Advanced Parameters:
130----------------------------
131
132| acl-plugin_
133| api-queue_
134| api-segment_
135| api-trace_
136| buffers_
137| cj_
138| dns_
139| heapsize_
140| ip_
141| ip6_
142| l2learn_
143| l2tp_
144| logging_
145| mactime_
146| map_
147| mc_
148| nat_
149| oam_
150| plugins_
151| plugin_path_
152| punt_
153| session_
154| socketsvr_
155| stats_
156| statseg_
157| tapcli_
158| tcp_
159| tls_
160| tuntap_
161| vhost-user_
162| vlib_
163
164.. _unix:
165
166"unix" Parameters
167_________________
168
169Configure VPP startup and behavior type attributes, as well and any OS based
170attributes.
171
172 * **interactive**
173 Attach CLI to stdin/out and provide a debugging command line interface.
174 Implies nodaemon.
175
176 **Example:** interactive
177
178 * **nodaemon**
179 Do not fork / background the vpp process. Typical when invoking VPP
180 applications from a process monitor. Set by default in the default
181 *'startup.conf'* file.
182
183 **Example:** nodaemon
184
185 * **log <filename>**
186 Logs the startup configuration and all subsequent CLI commands in filename.
187 Very useful in situations where folks don't remember or can't be bothered
188 to include CLI commands in bug reports. The default *'startup.conf'* file
189 is to write to *'/var/log/vpp/vpp.log'*.
190
191 In VPP 18.04, the default log file location was moved from '/tmp/vpp.log'
192 to '/var/log/vpp/vpp.log' . The VPP code is indifferent to the file location.
193 However, if SELinux is enabled, then the new location is required for the file
194 to be properly labeled. Check your local *'startup.conf'* file for the log file
195 location on your system.
196
197 **Example:** log /var/log/vpp/vpp-debug.log
198
199 * **exec|startup-config <filename>**
200 Read startup operational configuration from filename. The contents of the file
201 will be performed as though entered at the CLI. The two keywords are aliases
202 for the same function; if both are specified, only the last will have an effect.
203 The file contains CLI commands, for example:
204
205 | $ cat /usr/share/vpp/scripts/interface-up.txt
206 | set interface state TenGigabitEthernet1/0/0 up
207 | set interface state TenGigabitEthernet1/0/1 up
208
209 **Example:** startup-config /usr/share/vpp/scripts/interface-up.txt
210
211 * **gid number|name>**
212 Sets the effective group ID to the input group ID or group name of the calling
213 process.
214
215 **Example:** gid vpp
216
217 * **full-coredump**
218 Ask the Linux kernel to dump all memory-mapped address regions, instead of
219 just text+data+bss.
220
221 **Example:** full-coredump
222
223 * **coredump-size unlimited|<n>G|<n>M|<n>K|<n>**
224 Set the maximum size of the coredump file. The input value can be set in
225 GB, MB, KB or bytes, or set to *'unlimited'*.
226
227 **Example:** coredump-size unlimited
228
229 * **cli-listen <ipaddress:port>|<socket-path>**
230 Bind the CLI to listen at address localhost on TCP port 5002. This will
231 accept an ipaddress:port pair or a filesystem path; in the latter case a
232 local Unix socket is opened instead. The default *'startup.conf'* file
233 is to open the socket *'/run/vpp/cli.sock'*.
234
235 **Example:** cli-listen localhost:5002
236 **Example:** cli-listen /run/vpp/cli.sock
237
238 * **cli-line-mode**
239 Disable character-by-character I/O on stdin. Useful when combined with,
240 for example, emacs M-x gud-gdb.
241
242 **Example:** cli-line-mode
243
244 * **cli-prompt <string>**
245 Configure the CLI prompt to be string.
246
247 **Example:** cli-prompt vpp-2
248
249 * **cli-history-limit <n>**
250 Limit commmand history to <n> lines. A value of 0 disables command history.
251 Default value: 50
252
253 **Example:** cli-history-limit 100
254
255 * **cli-no-banner**
256 Disable the login banner on stdin and Telnet connections.
257
258 **Example:** cli-no-banner
259
260 * **cli-no-pager**
261 Disable the output pager.
262
263 **Example:** cli-no-pager
264
265 * **cli-pager-buffer-limit <n>**
266 Limit pager buffer to <n> lines of output. A value of 0 disables the
267 pager. Default value: 100000
268
269 **Example:** cli-pager-buffer-limit 5000
270
271 * **runtime-dir <dir>**
272 Set the runtime directory, which is the default location for certain
273 files, like socket files. Default is based on User ID used to start VPP.
274 Typically it is *'root'*, which defaults to *'/run/vpp/'*. Otherwise,
275 defaults to *'/run/user/<uid>/vpp/'*.
276
277 **Example:** runtime-dir /tmp/vpp
278
279 * **poll-sleep-usec <n>**
280 Add a fixed-sleep between main loop poll. Default is 0, which is not to
281 sleep.
282
283 **Example:** poll-sleep-usec 100
284
285 * **pidfile <filename>**
286 Writes the pid of the main thread in the given filename.
287
288 **Example:** pidfile /run/vpp/vpp1.pid
289
290.. _dpdk:
291
292"dpdk" Parameters
293_________________
294
295Command line DPDK configuration controls a number of parameters, including
296device whitelisting, the number of CPUs available for launching
297dpdk-eal-controlled threads, the number of I/O buffers, and the process
298affinity mask. In addition, the DPDK configuration function attempts to support
299all of the DPDK EAL configuration parameters.
300
301All of the DPDK EAL options should be available.
302See ../src/plugins/dpdk/device/dpdk_priv.h, look at the set of
303"foreach_eal_XXX" macros.
304
305Popular options include:
306 * **dev <pci-dev>**
307 White-list [as in, attempt to drive] a specific PCI device. PCI-dev is a
308 string of the form "DDDD:BB:SS.F" where:
309
310 | DDDD = Domain
311 | BB = Bus Number
312 | SS = Slot number
313 | F = Function
314
315 This is the same format used in the linux sysfs tree (i.e.
316 /sys/bus/pci/devices) for PCI device directory names.
317
318 **Example:** dev 0000:02:00.0
319
320 * **dev <pci-dev> { .. }**
321 When whitelisting specific interfaces by specifying PCI address,
322 additional custom parameters can also be specified. Valid options include:
323
324 * **num-rx-queues <n>**
325 Number of receive queues. Also enables RSS. Default value is 1.
326 * **num-tx-queues <n>**
327 Number of transmit queues. Default is equal to number of worker
328 threads or 1 if no workers treads.
329 * **num-rx-desc <n>**
330 Number of descriptors in receive ring. Increasing or reducing number
331 can impact performance. Default is 1024.
332 * **num-rt-desc <n>**
333 Number of descriptors in transmit ring. Increasing or reducing number
334 can impact performance. Default is 1024.
335 * **workers**
336 TBD
337 * **vlan-strip-offload on|off**:
338 VLAN strip offload mode for interface. VLAN stripping is off by default
339 for all NICs except VICs, using ENIC driver, which has VLAN stripping on
340 by default.
341 * **hqos**
342 Enable the Hierarchical Quaity-of-Service (HQoS) scheduler, default is
343 disabled. This enables HQoS on specific output interface.
344 * **hqos { .. }**
345 HQoS can also have its own set of custom parameters. Setting a custom
346 parameter also enables HQoS.
347
348 * **hqos-thread <n>**
349 HQoS thread used by this interface. To setup a pool of threads that
350 are shared by all HQoS interfaces, set via the*'cpu'* section using
351 either *'corelist-hqos-threads'* or *'coremask-hqos-threads'*.
352
353 * **rss**
354 TBD
355
356 **Example:**
357
358 | dev 0000:02:00.1 {
359 | num-rx-queues 2
360 | num-tx-queues 2
361 | }
362
363 * **vdev <eal-command>**
364 Provide a DPDK EAL command to specify bonded Ethernet interfaces, operating
365 modes and PCI addresses of slave links. Only XOR balanced (mode 2) mode is
366 supported.
367
368 **Example:**
369
370 | vdev eth_bond0,mode=2,slave=0000:0f:00.0,slave=0000:11:00.0,xmit_policy=l34
371 | vdev eth_bond1,mode=2,slave=0000:10:00.0,slave=0000:12:00.0,xmit_policy=l34
372
373 * **num-mbufs <n>**
374 Increase number of buffers allocated. May be needed in scenarios with
375 large number of interfaces and worker threads, or a lot of physical
376 interfaces with multiple RSS queues. Value is per CPU socket. Default is
377 16384.
378
379 **Example:** num-mbufs 128000
380
381 * **no-pci**
382 When VPP is started, if an interface is not owned by the linux kernel
383 (interface is administratively down), VPP will attempt to manage the
384 interface. *'no-pci'* indicates that VPP should not walk the PCI table
385 looking for interfaces.
386
387 **Example:** no-pci
388
389 * **no-hugetlb**
390 Don't use huge TLB pages. Potentially useful for running simulator images.
391
392 **Example:** no-hugetlb
393
394 * **kni <n>**
395 Number of KNI interfaces. Refer to the DPDK documentation.
396
397 **Example:** kni 2
398
399 * **uio-driver uio_pci_generic|igb_uio|vfio-pci|auto**
400 Change UIO driver used by VPP. Default is *'auto'*.
401
402 **Example:** uio-driver igb_uio
403
404 * **socket-mem <n>**
405 Change hugepages allocation per-socket, needed only if there is need for
406 larger number of mbufs. Default is 64 hugepages on each detected CPU
407 socket.
408
409 **Example:** socket-mem 2048,2048
410
411**Other options include:**
412
413 * **enable-tcp-udp-checksum**
414 Enables UDP/TCP RX checksum offload.
415
416 **Example:** enable-tcp-udp-checksum
417
418 * **no-multi-seg**
419 Disable mutli-segment buffers, improves performance but disables Jumbo MTU
420 support.
421
422 **Example:** no-multi-seg
423
424 * **no-tx-checksum-offload**
425 Disables UDP/TCP TX checksum offload. Typically needed for use faster
426 vector PMDs (together with no-multi-seg).
427
428 **Example:** no-tx-checksum-offload
429
430 * **decimal-interface-names**
431 Format DPDK device names with decimal, as opposed to hexadecimal.
432
433 **Example:** decimal-interface-names
434
435 * **log-level emergency|alert|critical|error|warning|notice|info|debug**
436 Set the log level for DPDK logs. Default is *'notice'*.
437
438 **Example:** log-level error
439
440 * **dev default { .. }**
441 Change default settings for all intefaces. This sections supports the
442 same set of custom parameters described in *'dev <pci-dev> { .. }*'.
443
444 **Example:**
445
446 | dev default {
447 | num-rx-queues 3
448 | num-tx-queues 3
449 | }
450
451.. _cpu:
452
453"cpu" Parameters
454________________
455
456Command-line CPU configuration controls the creation of named thread types, and
457the cpu affinity thereof. In the VPP there is one main thread and optionally
458the user can create worker(s). The main thread and worker thread(s) can be
459pinned to CPU core(s) automatically or manually.
460
461**Automatic Pinning:**
462
463 * **workers <n>**
464 Create <n> worker threads.
465
466 **Example:** workers 4
467
468 * **io <n>**
469 Create <n> i/o threads.
470
471 **Example:** io 2
472
473 * **main-thread-io**
474 Handle i/o devices from thread 0, hand off traffic to worker threads.
475 Requires "workers <n>".
476
477 **Example:** main-thread-io
478
479 * **skip-cores <n>**
480 Sets number of CPU core(s) to be skipped (1 ... N-1). Skipped CPU core(s)
481 are not used for pinning main thread and working thread(s). The main thread
482 is automatically pinned to the first available CPU core and worker(s) are
483 pinned to next free CPU core(s) after core assigned to main threadLeave
484 the low nn bits of the process affinity mask clear.
485
486 **Example:** skip-cores 4
487
488**Manual Pinning:**
489
490 * **main-core <n>**
491 Assign main thread to a specific core.
492
493 **Example:** main-core 1
494
495 * **coremask-workers <hex-mask>**
496 Place worker threads according to the bitmap hex-mask.
497
498 **Example:** coremask-workers 0x0000000000C0000C
499
500 * **corelist-workers <list>**
501 Same as coremask-workers but accepts a list of cores instead of a bitmap.
502
503 **Example:** corelist-workers 2-3,18-19
504
505 * **coremask-io <hex-mask>**
506 Place I/O threads according to the bitmap hex-mask.
507
508 **Example:** coremask-io 0x0000000003000030
509
510 * **corelist-io <list>**
511 Same as coremask-io but accepts a list of cores instead of a bitmap.
512
513 **Example:** corelist-io 4-5,20-21
514
515 * **coremask-hqos-threads <hex-mask>**
516 Place HQoS threads according to the bitmap hex-mask. A HQoS thread can
517 run multiple HQoS objects each associated with different output interfaces.
518
519 **Example:** coremask-hqos-threads 0x000000000C0000C0
520
521 * **corelist-hqos-threads <list>**
522 Same as coremask-hqos-threads but accepts a list of cores instead of a
523 bitmap.
524
525 **Example:** corelist-hqos-threads 6-7,22-23
526
527**Other:**
528
529 * **use-pthreads**
530 TBD
531
532 **Example:** use-pthreads
533
534 * **thread-prefix <prefix>**
535 Set a prefix to be prepended to each thread name. The thread name already
536 contains an underscore. If not provided, the default is *'vpp'*.
537 Currently, prefix used on threads: *'vpp_main'*, *'vpp_stats'*
538
539 **Example:** thread-prefix vpp1
540
541 * **scheduler-policy rr|fifo|batch|idle|other**
542 TBD
543
544 **Example:** scheduler-policy fifo
545
546 * **scheduler-priority <n>**
547 Set the scheduler priority. Only valid if the *'scheduler-policy'* is set
548 to *'fifo'* or *'rr'*. The valid ranges for the scheduler priority depends
549 on the *'scheduler-policy'* and the current kernel version running. The
550 range is typically 1 to 99, but see the linux man pages for *'sched'* for
551 more details. If this value is not set, the current linux kernel default
552 is left in place.
553
554 **Example:** scheduler-priority 50
555
556 * **<thread-name> <count>**
557 Set the number of threads for a given thread (by name). Some threads, like
558 *'stats'*, have a fixed number of threads and cannot be changed. List of
559 possible threads include (but not limited too): hqos-threads, workers
560
561 **Example:** hqos-threads 2
562
563.. note::
564
565 The "main" thread always occupies the lowest core-id specified in the
566 DPDK [process-level] coremask.
567
568Here's a full-bore manual placement example:
569
570.. code-block:: console
571
572 /usr/bin/vpp unix interactive tuntap disable cpu { main-thread-io coremask-workers 18 coremask-stats 4 } dpdk { coremask 1e }
573
574 # taskset -a -p <vpe-pid>
575 pid 16251's current affinity mask: 2 # main thread
576 pid 16288's current affinity mask: ffffff # DPDK interrupt thread (not bound to a core)
577 pid 16289's current affinity mask: 4 # stats thread
578 pid 16290's current affinity mask: 8 # worker thread 0
579 pid 16291's current affinity mask: 10 # worker thread 1
580
581
582.. _acl-plugin:
583
584"acl-plugin" Parameters
585_______________________
586
587The following parameters should only be set by those that are familiar with the
588interworkings of VPP and the ACL Plugin.
589
590The first three parameters, *connection hash buckets*, *connection hash memory*, and *connection count max*, set the **connection table per-interface parameters** for modifying how the two bounded-index extensible hash tables for IPv6 (40\*8 bit key and 8\*8 bit value pairs) and IPv4 (16\*8 bit key and 8\*8 bit value pairs) **ACL plugin FA interface sessions** are initialized.
591
592 * **connection hash buckets <n>**
593 Sets the number of hash buckets (rounded up to a power of 2) in each of the two bi-hash tables. Defaults to 64\*1024 (65536) hash buckets.
594
595 **Example:** connection hash buckets 65536
596
597 * **connection hash memory <n>**
598 Sets the number of bytes used for “backing store” allocation in each of the two bi-hash tables. Defaults to 1073741824 bytes.
599
600 **Example:** connection hash memory 1073741824
601
602 * **connection count max <n>**
603 Sets the maximum number of pool elements when allocating each per-worker pool of sessions for both bi-hash tables. Defaults to 500000 elements in each pool.
604
605 **Example:** connection count max 500000
606
607 * **main heap size <n>G|<n>M|<n>K|<n>**
608 Sets the size of the main memory heap that holds all the ACL module related allocations (other than hash.) Default size is 0, but during ACL heap initialization is equal to *per_worker_size_with_slack * tm->n_vlib_mains + bihash_size + main_slack*. Note that these variables are partially based on the **connection table per-interface parameters** mentioned above.
609
610 **Example:** main heap size 3G
611
612The next three parameters, *hash lookup heap size*, *hash lookup hash buckets*, and *hash lookup hash memory*, modify the initialization of the bi-hash lookup table used by the ACL plugin. This table is initialized when attempting to apply an ACL to the existing vector of ACLs looked up during packet processing (but it is found that the table does not exist / has not been initialized yet.)
613
614 * **hash lookup heap size <n>G|<n>M|<n>K|<n>**
615 Sets the size of the memory heap that holds all the miscellaneous allocations related to hash-based lookups. Default size is 67108864 bytes.
616
617 **Example:** hash lookup heap size 70M
618
619 * **hash lookup hash buckets <n>**
620 Sets the number of hash buckets (rounded up to a power of 2) in the bi-hash lookup table. Defaults to 65536 hash buckets.
621
622 **Example:** hash lookup hash buckets 65536
623
624 * **hash lookup hash memory <n>**
625 Sets the number of bytes used for “backing store” allocation in the bi-hash lookup table. Defaults to 67108864 bytes.
626
627 **Example:** hash lookup hash memory 67108864
628
629 * **use tuple merge <n>**
630 Sets a boolean value indicating whether or not to use TupleMerge for hash ACL's. Defaults to 1 (true), meaning the default implementation of hashing ACL's **does use** TupleMerge.
631
632 **Example:** use tuple merge 1
633
634 * **tuple merge split threshold <n>**
635 Sets the maximum amount of rules (ACE's) that can collide in a bi-hash lookup table before the table is split into two new tables. Splitting ensures less rule collisions by hashing colliding rules based on their common tuple (usually their maximum common tuple.) Splitting occurs when the *length of the colliding rules vector* is greater than this threshold amount. Defaults to a maximum of 39 rule collisions per table.
636
637 **Example:** tuple merge split threshold 30
638
639 * **reclassify sessions <n>**
640 Sets a boolean value indicating whether or not to take the epoch of the session into account when dealing with re-applying ACL's or changing already applied ACL's. Defaults to 0 (false), meaning the default implementation **does NOT** take the epoch of the session into account.
641
642 **Example:** reclassify sessions 1
643
644.. _api-queue:
645
646"api-queue" Parameters
647______________________
648
649The following parameters should only be set by those that are familiar with the
650interworkings of VPP.
651
652 * **length <n>**
653 Sets the api queue length. Minimum valid queue length is 1024, which is
654 also the default.
655
656 **Example:** length 2048
657
658.. _api-segment:
659
660"api-segment" Parameters
661________________________
662
663These values control various aspects of the binary API interface to VPP.
664
665 * **prefix <path>**
666 Sets the prefix prepended to the name used for shared memory (SHM)
667 segments. The default is empty, meaning shared memory segments are created
668 directly in the SHM directory *'/dev/shm'*. It is worth noting that on
669 many systems *'/dev/shm'* is a symbolic link to somewhere else in the file
670 system; Ubuntu links it to *'/run/shm'*.
671
672 **Example:** prefix /run/shm
673
674 * **uid <number|name>**
675 Sets the user ID or name that should be used to set the ownership of the
676 shared memory segments. Defaults to the same user that VPP is started
677 with, probably root.
678
679 **Example:** uid root
680
681 * **gid <number|name>**
682 Sets the group ID or name that should be used to set the ownership of the
683 shared memory segments. Defaults to the same group that VPP is started
684 with, probably root.
685
686 **Example:** gid vpp
687
688The following parameters should only be set by those that are familiar with the
689interworkings of VPP.
690
691 * **baseva <x>**
692 Set the base address for SVM global region. If not set, on AArch64, the
693 code will try to determine the base address. All other default to
694 0x30000000.
695
696 **Example:** baseva 0x20000000
697
698 * **global-size <n>G|<n>M|<n>**
699 Set the global memory size, memory shared across all router instances,
700 packet buffers, etc. If not set, defaults to 64M. The input value can be
701 set in GB, MB or bytes.
702
703 **Example:** global-size 2G
704
705 * **global-pvt-heap-size <n>M|size <n>**
706 Set the size of the global VM private mheap. If not set, defaults to 128k.
707 The input value can be set in MB or bytes.
708
709 **Example:** global-pvt-heap-size size 262144
710
711 * **api-pvt-heap-size <n>M|size <n>**
712 Set the size of the api private mheap. If not set, defaults to 128k.
713 The input value can be set in MB or bytes.
714
715 **Example:** api-pvt-heap-size 1M
716
717 * **api-size <n>M|<n>G|<n>**
718 Set the size of the API region. If not set, defaults to 16M. The input
719 value can be set in GB, MB or bytes.
720
721 **Example:** api-size 64M
722
723.. _api-trace:
724
725"api-trace" Parameters
726______________________
727
728The ability to trace, dump, and replay control-plane API traces makes all the
729difference in the world when trying to understand what the control-plane has
730tried to ask the forwarding-plane to do.
731
732 * **on|enable**
733 Enable API trace capture from the beginning of time, and arrange for a
734 post-mortem dump of the API trace if the application terminates abnormally.
735 By default, the (circular) trace buffer will be configured to capture
736 256K traces. The default *'startup.conf'* file has trace enabled by default,
737 and unless there is a very strong reason, it should remain enabled.
738
739 **Example:** on
740
741 * **nitems <n>**
742 Configure the circular trace buffer to contain the last <n> entries. By
743 default, the trace buffer captures the last 256K API messages received.
744
745 **Example:** nitems 524288
746
747 * **save-api-table <filename>**
748 Dumps the API message table to /tmp/<filename>.
749
750 **Example:** save-api-table apiTrace-07-04.txt
751
752Typically, one simply enables the API message trace scheme:
753
754 api-trace { on }
755
756.. _buffers:
757
758"buffers" Parameters
759____________________
760
761Command line Buffer configuration controls buffer management.
762
763 * **memory-size-in-mb <n>**
764 Configure the memory size used for buffers. If not set, VPP defaults
765 to 32MB.
766
767 **Example:** memory-size-in-mb 64
768
769
770.. _cj:
771
772"cj" Parameters
773_______________
774
775The circular journal (CJ) thread-safe circular log buffer scheme is
776occasionally useful when chasing bugs. Calls to it should not be checked in.
777See .../vlib/vlib/unix/cj.c. The circular journal is disables by default.
778When enabled, the number of records must be provided, there is no default
779value.
780
781 * **records <n>**
782 Configure the number of circular journal records in the circular buffer.
783 The number of records should be a power of 2.
784
785 **Example:** records 131072
786
787 * **on**
788 Turns on logging at the earliest possible moment.
789
790 **Example:** on
791
792.. _dns:
793
794"dns" Parameters
795________________
796
797 * **max-cache-size <n>**
798 TBD
799
800 **Example:** TBD
801
802 * **max-ttl <n>**
803 TBD
804
805 **Example:** TBD
806
807.. _heapsize:
808
809"heapsize" Parameters
810_____________________
811
812Heapsize configuration controls the size of the main heap. The heap size is
813configured very early in the boot sequence, before loading plug-ins or doing
814much of anything else.
815
816 * **heapsize <n>M|<n>G**
817 Specifies the size of the heap in MB or GB. The default is 1GB. Setting the
818 main heap size to 4GB or more requires recompilation of the entire system
819 with CLIB_VEC64 > 0. See .../clib/clib/vec_bootstrap.h.
820
821 **Example:** heapsize 2G
822
823.. _ip:
824
825"ip" Parameters
826_______________
827
828IPv4 heap configuration. he heap size is configured very early in the boot
829sequence, before loading plug-ins or doing much of anything else.
830
831 * **heap-size <n>G|<n>M|<n>K|<n>**
832 Set the IPv4 mtrie heap size, which is the amount of memory dedicated to
833 the destination IP lookup table. The input value can be set in GB, MB, KB
834 or bytes. The default value is 32MB.
835
836 **Example:** heap-size 64M
837
838.. _ip6:
839
840"ip6" Parameters
841________________
842
843IPv6 heap configuration. he heap size is configured very early in the boot
844sequence, before loading plug-ins or doing much of anything else.
845
846
847 * **heap-size <n>G|<n>M|<n>K|<n>**
848 Set the IPv6 forwarding table heap size. The input value can be set in GB,
849 MB, KB or bytes. The default value is 32MB.
850
851 **Example:** heap-size 64M
852
853 * **hash-buckets <n>**
854 Set the number of IPv6 forwarding table hash buckets. The default value is
855 64K (65536).
856
857 **Example:** hash-buckets 131072
858
859.. _l2learn:
860
861"l2learn" Parameters
862____________________
863
864Configure Layer 2 MAC Address learning parameters.
865
866 * **limit <n>**
867 Configures the number of L2 (MAC) addresses in the L2 FIB at any one time,
868 which limits the size of the L2 FIB to <n> concurrent entries. Defaults to
869 4M entries (4194304).
870
871 **Example:** limit 8388608
872
873.. _l2tp:
874
875"l2tp" Parameters
876_________________
877
878IPv6 Layer 2 Tunnelling Protocol Version 3 (IPv6-L2TPv3) configuration controls
879the method used to locate a specific IPv6-L2TPv3 tunnel. The following settings
880are mutually exclusive:
881
882 * **lookup-v6-src**
883 Lookup tunnel by IPv6 source address.
884
885 **Example:** lookup-v6-src
886
887 * **lookup-v6-dst**
888 Lookup tunnel by IPv6 destination address.
889
890 **Example:** lookup-v6-dst
891
892 * **lookup-session-id**
893 Lookup tunnel by L2TPv3 session identifier.
894
895 **Example:** lookup-session-id
896
897.. _logging:
898
899"logging" Parameters
900____________________
901
902 * **size <n>**
903 TBD
904
905 **Example:** TBD
906
907 * **unthrottle-time <n>**
908 TBD
909
910 **Example:** TBD
911
912 * **default-log-level emerg|alertcrit|err|warn|notice|info|debug|disabled**
913 TBD
914
915 **Example:** TBD
916
917 * **default-syslog-log-level emerg|alertcrit|err|warn|notice|info|debug|disabled**
918 TBD
919
920 **Example:** TBD
921
922.. _mactime:
923
924"mactime" Parameters
925____________________
926
927 * **lookup-table-buckets <n>**
928 TBD
929
930 **Example:** TBD
931
932 * **lookup-table-memory <n>G|<n>M|<n>K|<n>**
933 TBD
934 The input value can be set in GB, MB, KB or bytes. The default value is 256KB.
935
936 **Example:** TBD
937
938 * **timezone_offset <n>**
939 TBD
940
941 **Example:** TBD
942
943.. _map:
944
945"map" Parameters
946________________
947
948 * **customer edge**
949 TBD
950
951 **Example:** customer edge
952
953.. _mc:
954
955"mc" Parameters
956_______________
957
958MC Test Process.
959
960 * **interface <name>**
961 TBD
962
963 **Example:** TBD
964
965 * **n-bytes <n>**
966 TBD
967
968 **Example:** TBD
969
970 * **max-n-bytes <n>**
971 TBD
972
973 **Example:** TBD
974
975 * **min-n-bytes <n>**
976 TBD
977
978 **Example:** TBD
979
980 * **seed <n>**
981 TBD
982
983 **Example:** TBD
984
985 * **window <n>**
986 TBD
987
988 **Example:** TBD
989
990 * **verbose**
991 TBD
992
993 **Example:** verbose
994
995 * **no-validate**
996 TBD
997
998 **Example:** no-validate
999
1000 * **min-delay <n.n>**
1001 TBD
1002
1003 **Example:** TBD
1004
1005 * **max-delay <n.n>**
1006 TBD
1007
1008 **Example:** TBD
1009
1010 * **no-delay**
1011 TBD
1012
1013 **Example:** no-delay
1014
1015 * **n-packets <n.n>**
1016 TBD
1017
1018 **Example:** TBD
1019
1020.. _nat:
1021
1022
1023"nat" Parameters
1024________________
1025
1026 * **translation hash buckets <n>**
1027 TBD
1028
1029 **Example:** TBD
1030
1031 * **translation hash memory <n>**
1032 TBD
1033
1034 **Example:** TBD
1035
1036 * **user hash buckets <n>**
1037 TBD
1038
1039 **Example:** TBD
1040
1041 * **user hash memory <n>**
1042 TBD
1043
1044 **Example:** TBD
1045
1046 * **max translations per user <n>**
1047 TBD
1048
1049 **Example:** TBD
1050
1051 * **outside VRF id <n>**
1052 TBD
1053
1054 **Example:** TBD
1055
1056 * **outside ip6 VRF id <n>**
1057 TBD
1058
1059 **Example:** TBD
1060
1061 * **inside VRF id <n>**
1062 TBD
1063
1064 **Example:** TBD
1065
1066 * **inside VRF id <n>**
1067 TBD
1068
1069 **Example:** TBD
1070
1071 * **static mapping only**
1072 TBD
1073
1074 **Example:** static mapping only
1075
1076 * **connection tracking**
1077 TBD
1078
1079 **Example:** connection tracking
1080
1081 * **deterministic**
1082 TBD
1083
1084 **Example:** deterministic
1085
1086 * **nat64 bib hash buckets <n>**
1087 TBD
1088
1089 **Example:** TBD
1090
1091 * **nat64 bib hash memory <n>**
1092 TBD
1093
1094 **Example:** TBD
1095
1096 * **nat64 st hash buckets <n>**
1097 TBD
1098
1099 **Example:** TBD
1100
1101 * **nat64 st hash memory <n>**
1102 TBD
1103
1104 **Example:** TBD
1105
1106 * **out2in dpo**
1107 TBD
1108
1109 **Example:** out2in dpo
1110
1111 * **dslite ce**
1112 TBD
1113
1114 **Example:** dslite ce
1115
1116 * **endpoint-dependent**
1117 TBD
1118
1119 **Example:** endpoint-dependent
1120
1121.. _oam:
1122
1123"oam" Parameters
1124________________
1125
1126OAM configuration controls the (ip4-icmp) interval, and number of misses
1127allowed before reporting an oam target down to any registered listener.
1128
1129 * **interval <n.n>**
1130 Interval, floating-point seconds, between sending OAM IPv4 ICMP messages.
1131 Default is 2.04 seconds.
1132
1133 **Example:** interval 3.5
1134
1135 * **misses-allowed <n>**
1136 Number of misses before declaring an OAM target down. Default is 3 misses.
1137
1138 **Example:** misses-allowed 5
1139
1140.. _plugins:
1141
1142"plugins" Parameters
1143____________________
1144A plugin can be disabled by default. It may still be in an experimental phase
1145or only be needed in special circumstances. If this is the case, the plugin can
1146be explicitely enabled in *'startup.conf'*. Also, a plugin that is enabled by
1147default can be explicitely disabled in *'startup.conf'*.
1148
1149Another useful use of this section is to disable all the plugins, then enable
1150only the plugins that are desired.
1151
1152 * **path <path>**
1153 Adjust the plugin path depending on where the VPP plugins are installed.
1154
1155 **Example:** path /home/bms/vpp/build-root/install-vpp-native/vpp/lib64/vpp_plugins
1156
1157 * **name-filter <filter-name>**
1158 TBD
1159
1160 **Example:** TBD
1161
1162 * **vat-path <path>**
1163 TBD
1164
1165 **Example:** TBD
1166
1167 * **vat-name-filter <filter-name>**
1168 TBD
1169
1170 **Example:** TBD
1171
1172 * **plugin <plugin.so> { .. }**
1173 Configure parameters for a given plugin. Valid parameters are as follows:
1174
1175 * **enable**
1176 Enable the given plugin.
1177 * **disable**
1178 Disable the given plugin.
1179 * **skip-version-check**
1180 In the plugin registration, if *'.version_required'* is set, the
1181 plugin will not be loaded if there is version mismatch between
1182 plugin and VPP. This can be bypassed by setting "skip-version-check"
1183 for specific plugin.
1184
1185 **Example:** plugin ila_plugin.so { enable skip-version-check }
1186
1187 * **plugin default { .. }**
1188 Set the default behavior for all plugins. Valid parameters are as follows:
1189
1190 * **disable**
1191 Disable all plugins.
1192
1193 **Example:**
1194 | plugin default { disable }
1195 | plugin dpdk_plugin.so { enable }
1196 | plugin acl_plugin.so { enable }
1197
1198.. _plugin_path:
1199
1200"plugin_path" Parameters
1201________________________
1202
1203Alternate syntax to choose plugin path. Plugin_path configuration controls the
1204set of directories searched for vlib plugins. Supply a colon-separated list of
1205(absolute) directory names: plugin_path dir1:dir2:...:dirN
1206
1207 **Example:** plugin_path /home/bms/vpp/build-root/install-vpp-native/vpp/lib64/vpp_plugins
1208
1209.. _punt:
1210
1211"punt" Parameters
1212_________________
1213
1214 * **socket <path>**
1215 TBD
1216
1217 **Example:** TBD
1218
1219.. _session:
1220
1221"session" Parameters
1222____________________
1223
1224 * **event-queue-length <n>**
1225 TBD
1226
1227 **Example:** TBD
1228
1229 * **preallocated-sessions <n>**
1230 TBD
1231
1232 **Example:** TBD
1233
1234 * **v4-session-table-buckets <n>**
1235 TBD
1236
1237 **Example:** TBD
1238
1239 * **v4-halfopen-table-buckets <n>**
1240 TBD
1241
1242 **Example:** TBD
1243
1244 * **v6-session-table-buckets <n>**
1245 TBD
1246
1247 **Example:** TBD
1248
1249 * **v6-halfopen-table-buckets <n>**
1250 TBD
1251
1252 **Example:** TBD
1253
1254 * **v4-session-table-memory <n>G|<n>M|<n>K|<n>**
1255 TBD
1256 The input value can be set in GB, MB, KB or bytes.
1257
1258 **Example:** TBD
1259
1260 * **v4-halfopen-table-memory <n>G|<n>M|<n>K|<n>**
1261 TBD
1262 The input value can be set in GB, MB, KB or bytes.
1263
1264 **Example:** TBD
1265
1266 * **v6-session-table-memory <n>G|<n>M|<n>K|<n>**
1267 TBD
1268 The input value can be set in GB, MB, KB or bytes.
1269
1270 **Example:** TBD
1271
1272 * **v6-halfopen-table-memory <n>G|<n>M|<n>K|<n>**
1273 TBD
1274 The input value can be set in GB, MB, KB or bytes.
1275
1276 **Example:** TBD
1277
1278 * **local-endpoints-table-memory <n>G|<n>M|<n>K|<n>**
1279 TBD
1280 The input value can be set in GB, MB, KB or bytes.
1281
1282 **Example:** TBD
1283
1284 * **local-endpoints-table-buckets <n>**
1285 TBD
1286
1287 **Example:** TBD
1288
1289 * **evt_qs_memfd_seg**
1290 TBD
1291
1292 **Example:** evt_qs_memfd_seg
1293
1294.. _socketsvr:
1295
1296"socketsvr" Parameters
1297______________________
1298
1299Create a socket server for API server (.../vlibmemory/socksvr_vlib.c.).
1300If not set, API server doesn't run.
1301
1302 * **socket-name <filename>**
1303 Configure API socket filename.
1304
1305 **Example:** socket-name /run/vpp/vpp-api.sock
1306
1307 * **default**
1308 Use the default API socket (/run/vpp-api.sock).
1309
1310 **Example:** default
1311
1312.. _stats:
1313
1314"stats" Parameters
1315__________________
1316
1317Create a socket server for *'stats'* poller. If not set, 'stats'* poller
1318doesn't run.
1319
1320 * **socket-name <filename>**
1321 Configure *'stats'* socket filename.
1322
1323 **Example:** socket-name /run/vpp/stats.sock
1324
1325 * **default**
1326 Use the default *'stats'* socket (/run/vpp/stats.sock).
1327
1328 **Example:** default
1329
1330.. _statseg:
1331
1332"statseg" Parameters
1333____________________
1334
1335 * **size <n>G|<n>M|<n>K|<n>**
1336 TBD
1337 The input value can be set in GB, MB, KB or bytes.
1338
1339 **Example:** TBD
1340
1341.. _tapcli:
1342
1343"tapcli" Parameters
1344___________________
1345
1346 * **mtu <n>**
1347 TBD
1348
1349 **Example:** TBD
1350
1351 * **disable**
1352 TBD
1353
1354 **Example:** disable
1355
1356.. _tcp:
1357
1358"tcp" Parameters
1359________________
1360
1361 * **preallocated-connections <n>**
1362 TBD
1363
1364 **Example:** TBD
1365
1366 * **preallocated-half-open-connections <n>**
1367 TBD
1368
1369 **Example:** TBD
1370
1371 * **buffer-fail-fraction <n.n>**
1372 TBD
1373
1374 **Example:** TBD
1375
1376.. _tls:
1377
1378"tls" Parameters
1379________________
1380
1381 * **se-test-cert-in-ca**
1382 TBD
1383
1384 **Example:** se-test-cert-in-ca
1385
1386 * **ca-cert-path <filename>**
1387 TBD
1388 If not set, the default is set to *'/etc/ssl/certs/ca-certificates.crt'*.
1389
1390 **Example:** TBD
1391
1392.. _tuntap:
1393
1394"tuntap" Parameters
1395___________________
1396
1397The "tuntap" driver configures a point-to-point interface between the vpp
1398engine and the local Linux kernel stack. This allows e.g. users to ssh to the
1399host | VM | container via vpp "revenue" interfaces. It's marginally useful, and
1400is currently disabled by default. To [dynamically] create TAP interfaces - the
1401preferred scheme - see the "tap_connect" binary API. The Linux network stack
1402"vnet" interface needs to manually configure, and VLAN and other settings if
1403desired.
1404
1405 * **enable|disable**
1406 Enable or disable the tun/tap driver.
1407
1408 **Example:** enable
1409
1410 * **ethernet|ether**
1411 Create a tap device (ethernet MAC) instead of a tun device (point-to-point
1412 tunnel). The two keywords are aliases for the same function.
1413
1414 **Example:** ethernet
1415
1416 * **have-normal-interface|have-normal**
1417 Treat the host Linux stack as a routing peer instead of programming VPP
1418 interface L3 addresses onto the tun/tap devices. The two keywords are
1419 aliases for the same function.
1420
1421 **Example:** have-normal-interface
1422
1423 * **name <name>**
1424 Assign name to the tun/tap device.
1425
1426 **Example:** name vpp1
1427
1428Here's a typical multiple parameter invocation:
1429
1430 | tuntap { ethernet have-normal-interface name vpp1 }
1431
1432.. _vhost-user:
1433
1434"vhost-user" Parameters
1435_______________________
1436
1437Vhost-user configuration parameters control the vhost-user driver.
1438
1439 * **coalesce-frames <n>**
1440 Subject to deadline-timer expiration - see next item - attempt to transmit
1441 at least <n> packet frames. Default is 32 frames.
1442
1443 **Example:** coalesce-frames 64
1444
1445 * **coalesce-time <seconds>**
1446 Hold packets no longer than (floating-point) seconds before transmitting
1447 them. Default is 0.001 seconds
1448
1449 **Example:** coalesce-time 0.002
1450
1451 * **dont-dump-memory**
1452 vhost-user shared-memory segments can add up to a large amount of memory, so
1453 it's handy to avoid adding them to corefiles when using a significant number
1454 of such interfaces.
1455
1456 **Example:** dont-dump-memory
1457
1458.. _vlib:
1459
1460"vlib" Parameters
1461_________________
1462
1463 * **memory-trace**
1464 TBD
1465
1466 **Example:** memory-trace
1467
1468 * **elog-events <n>**
1469 TBD
1470
1471 **Example:** TBD
1472
1473 * **elog-post-mortem-dump**
1474 TBD
1475
1476 **Example:** elog-post-mortem-dump
1477