docs: better docs, mv doxygen to sphinx
[vpp.git] / docs / configuration / reference.rst
1 .. _configuration_reference:
2
3 Configuration Reference
4 =======================
5
6 Below is the list of some section names and their associated parameters.
7 This is not an exhaustive list, but should give you an idea of how VPP can be configured.
8
9 For all of the configuration parameters search the source code for instances of
10 **VLIB_CONFIG_FUNCTION** and **VLIB_EARLY_CONFIG_FUNCTION**.
11
12 For example, the invocation *'VLIB_CONFIG_FUNCTION (foo_config, "foo")'* will
13 cause the function *'foo_config'* to receive all parameters given in a
14 parameter block named "foo": "foo { arg1 arg2 arg3 ... }".
15
16 The unix section
17 ----------------
18
19 Configures VPP startup and behavior type attributes, as well and any OS based
20 attributes.
21
22 .. code-block:: console
23
24   unix {
25     nodaemon
26     log /var/log/vpp/vpp.log
27     full-coredump
28     cli-listen /run/vpp/cli.sock
29     gid vpp
30   }
31
32 nodaemon
33 ^^^^^^^^
34
35 Do not fork / background the vpp process. Typical when invoking VPP
36 applications from a process monitor. Set by default in the default
37 *'startup.conf'* file.
38
39 .. code-block:: console
40
41    nodaemon
42
43 nosyslog
44 ^^^^^^^^
45
46 Disable syslog and log errors to stderr instead. Typical when invoking
47 VPP applications from a process monitor like runit or daemontools that
48 pipe service's output to a dedicated log service, which will typically
49 attach a timestamp and rotate the logs as necessary.
50
51 .. code-block:: console
52
53    nosyslog
54
55 interactive
56 ^^^^^^^^^^^
57
58 Attach CLI to stdin/out and provide a debugging command line interface.
59
60 .. code-block:: console
61
62    interactive
63
64 log <filename>
65 ^^^^^^^^^^^^^^
66
67 Logs the startup configuration and all subsequent CLI commands in filename.
68 Very useful in situations where folks don't remember or can't be bothered
69 to include CLI commands in bug reports. The default *'startup.conf'* file
70 is to write to *'/var/log/vpp/vpp.log'*.
71
72 In VPP 18.04, the default log file location was moved from '/tmp/vpp.log'
73 to '/var/log/vpp/vpp.log' . The VPP code is indifferent to the file location.
74 However, if SELinux is enabled, then the new location is required for the file
75 to be properly labeled. Check your local *'startup.conf'* file for the log file
76 location on your system.
77
78 .. code-block:: console
79
80    log /var/log/vpp/vpp-debug.log
81
82 exec | startup-config <filename>
83 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
84
85 Read startup operational configuration from filename. The contents of the file
86 will be performed as though entered at the CLI. The two keywords are aliases
87 for the same function; if both are specified, only the last will have an effect.
88
89 A file of CLI commands might look like:
90
91 .. code-block:: console
92
93    $ cat /usr/share/vpp/scripts/interface-up.txt
94    set interface state TenGigabitEthernet1/0/0 up
95    set interface state TenGigabitEthernet1/0/1 up
96
97 Parameter Example:
98
99 .. code-block:: console
100
101      startup-config /usr/share/vpp/scripts/interface-up.txt
102
103 gid <number | name>
104 ^^^^^^^^^^^^^^^^^^^
105
106 Sets the effective group ID to the input group ID or group name of the calling
107 process.
108
109 .. code-block:: console
110
111    gid vpp
112
113 full-coredump
114 ^^^^^^^^^^^^^
115
116 Ask the Linux kernel to dump all memory-mapped address regions, instead of
117 just text+data+bss.
118
119 .. code-block:: console
120
121    full-coredump
122
123 coredump-size unlimited | <n>G | <n>M | <n>K | <n>
124 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
125
126      Set the maximum size of the coredump file. The input value can be set in
127      GB, MB, KB or bytes, or set to *'unlimited'*.
128
129 .. code-block:: console
130
131    coredump-size unlimited
132
133 cli-listen <ipaddress:port> | <socket-path>
134 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
135
136      Bind the CLI to listen at address localhost on TCP port 5002. This will
137      accept an ipaddress:port pair or a filesystem path; in the latter case a
138      local Unix socket is opened instead. The default *'startup.conf'* file
139      is to open the socket *'/run/vpp/cli.sock'*.
140
141 .. code-block:: console
142
143      cli-listen localhost:5002
144      cli-listen /run/vpp/cli.sock
145
146 cli-line-mode
147 ^^^^^^^^^^^^^
148
149      Disable character-by-character I/O on stdin. Useful when combined with,
150      for example, emacs M-x gud-gdb.
151
152 .. code-block:: console
153
154    cli-line-mode
155
156 cli-prompt <string>
157 ^^^^^^^^^^^^^^^^^^^
158
159      Configure the CLI prompt to be string.
160
161 .. code-block:: console
162
163      cli-prompt vpp-2
164
165 cli-history-limit <n>
166 ^^^^^^^^^^^^^^^^^^^^^
167
168      Limit command history to <n> lines. A value of 0 disables command history.
169      Default value: 50
170
171 .. code-block:: console
172
173      cli-history-limit 100
174
175 cli-no-banner
176 ^^^^^^^^^^^^^
177
178      Disable the login banner on stdin and Telnet connections.
179
180 .. code-block:: console
181
182      cli-no-banner
183
184 cli-no-pager
185 ^^^^^^^^^^^^
186
187      Disable the output pager.
188
189 .. code-block:: console
190
191      cli-no-pager
192
193 cli-pager-buffer-limit <n>
194 ^^^^^^^^^^^^^^^^^^^^^^^^^^
195
196      Limit pager buffer to <n> lines of output. A value of 0 disables the
197      pager. Default value: 100000
198
199 .. code-block:: console
200
201      cli-pager-buffer-limit 5000
202
203 runtime-dir <dir>
204 ^^^^^^^^^^^^^^^^^
205
206      Set the runtime directory, which is the default location for certain
207      files, like socket files. Default is based on User ID used to start VPP.
208      Typically it is *'root'*, which defaults to *'/run/vpp/'*. Otherwise,
209      defaults to *'/run/user/<uid>/vpp/'*.
210
211 .. code-block:: console
212
213      runtime-dir /tmp/vpp
214
215 poll-sleep-usec <n>
216 ^^^^^^^^^^^^^^^^^^^
217
218      Add a fixed-sleep between main loop poll. Default is 0, which is not to
219      sleep.
220
221 .. code-block:: console
222
223      poll-sleep-usec 100
224
225 pidfile <filename>
226 ^^^^^^^^^^^^^^^^^^
227
228      Writes the pid of the main thread in the given filename.
229
230 .. code-block:: console
231
232      pidfile /run/vpp/vpp1.pid
233
234
235 The api-trace Section
236 ---------------------
237
238 The ability to trace, dump, and replay control-plane API traces makes all the
239 difference in the world when trying to understand what the control-plane has
240 tried to ask the forwarding-plane to do.
241
242 Typically, one simply enables the API message trace scheme:
243
244 .. code-block:: console
245
246    api-trace {
247      api-trace on
248    }
249
250 on | enable
251 ^^^^^^^^^^^
252
253      Enable API trace capture from the beginning of time, and arrange for a
254      post-mortem dump of the API trace if the application terminates abnormally.
255      By default, the (circular) trace buffer will be configured to capture
256      256K traces. The default *'startup.conf'* file has trace enabled by default,
257      and unless there is a very strong reason, it should remain enabled.
258
259 .. code-block:: console
260
261     on
262
263 nitems <n>
264 ^^^^^^^^^^
265
266      Configure the circular trace buffer to contain the last <n> entries. By
267      default, the trace buffer captures the last 256K API messages received.
268
269 .. code-block:: console
270
271     nitems 524288
272
273 save-api-table <filename>
274 ^^^^^^^^^^^^^^^^^^^^^^^^^
275
276      Dumps the API message table to /tmp/<filename>.
277
278 .. code-block:: console
279
280     save-api-table apiTrace-07-04.txt
281
282
283 The api-segment Section
284 -----------------------
285
286 These values control various aspects of the binary API interface to VPP.
287
288 The default looks like the following:
289
290 .. code-block:: console
291
292    api-segment {
293      gid vpp
294    }
295
296
297 prefix <path>
298 ^^^^^^^^^^^^^
299
300      Sets the prefix prepended to the name used for shared memory (SHM)
301      segments. The default is empty, meaning shared memory segments are created
302      directly in the SHM directory *'/dev/shm'*. It is worth noting that on
303      many systems *'/dev/shm'* is a symbolic link to somewhere else in the file
304      system; Ubuntu links it to *'/run/shm'*.
305
306 .. code-block:: console
307
308     prefix /run/shm
309
310 uid <number | name>
311 ^^^^^^^^^^^^^^^^^^^
312
313      Sets the user ID or name that should be used to set the ownership of the
314      shared memory segments. Defaults to the same user that VPP is started
315      with, probably root.
316
317 .. code-block:: console
318
319     uid root
320
321 gid <number | name>
322 ^^^^^^^^^^^^^^^^^^^
323
324      Sets the group ID or name that should be used to set the ownership of the
325      shared memory segments. Defaults to the same group that VPP is started
326      with, probably root.
327
328 .. code-block:: console
329
330     gid vpp
331
332 **The following parameters should only be set by those that are familiar with the
333 interworkings of VPP.**
334
335 baseva <x>
336 ^^^^^^^^^^
337
338      Set the base address for SVM global region. If not set, on AArch64, the
339      code will try to determine the base address. All other default to
340      0x30000000.
341
342 .. code-block:: console
343
344     baseva 0x20000000
345
346 global-size <n>G | <n>M | <n>
347 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
348
349      Set the global memory size, memory shared across all router instances,
350      packet buffers, etc. If not set, defaults to 64M. The input value can be
351      set in GB, MB or bytes.
352
353 .. code-block:: console
354
355     global-size 2G
356
357 global-pvt-heap-size <n>M | size <n>
358 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
359
360      Set the size of the global VM private mheap. If not set, defaults to 128k.
361      The input value can be set in MB or bytes.
362
363 .. code-block:: console
364
365     global-pvt-heap-size size 262144
366
367 api-pvt-heap-size <n>M | size <n>
368 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
369
370      Set the size of the api private mheap. If not set, defaults to 128k.
371      The input value can be set in MB or bytes.
372
373 .. code-block:: console
374
375     api-pvt-heap-size 1M
376
377 api-size <n>M | <n>G | <n>
378 ^^^^^^^^^^^^^^^^^^^^^^^^^^
379
380      Set the size of the API region. If not set, defaults to 16M. The input
381      value can be set in GB, MB or bytes.
382
383 .. code-block:: console
384
385     api-size 64M
386
387 The socksvr Section
388 -------------------
389
390 Enables a Unix domain socket which processes binary API messages. See
391 .../vlibmemory/socket_api.c.  If this parameter is not set, vpp
392 won't process binary API messages over sockets.
393
394 .. code-block:: console
395
396    socksvr {
397       # Explicitly name a socket file
398       socket-name /run/vpp/api.sock
399       or
400       # Use defaults as described below
401       default
402    }
403
404 The "default" keyword instructs vpp to use /run/vpp/api.sock when
405 running as root, otherwise to use /run/user/<uid>/api.sock.
406
407 The cpu Section
408 ---------------
409
410 In the VPP there is one main thread and optionally the user can create worker(s)
411 The main thread and worker thread(s) can be pinned to CPU core(s) manually or automatically
412
413 .. code-block:: console
414
415    cpu {
416       main-core 1
417       corelist-workers 2-3,18-19
418    }
419
420
421 Manual pinning of thread(s) to CPU core(s)
422 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
423
424 main-core
425 ^^^^^^^^^
426
427 Set logical CPU core where main thread runs, if main core is not set VPP will use
428 core 1 if available
429
430 .. code-block:: console
431
432    main-core 1
433
434 corelist-workers
435 ^^^^^^^^^^^^^^^^
436
437 Set logical CPU core(s) where worker threads are running
438
439 .. code-block:: console
440
441    corelist-workers 2-3,18-19
442
443 Automatic pinning of thread(s) to CPU core(s)
444 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
445
446 skip-cores number
447 ^^^^^^^^^^^^^^^^^
448
449 Sets number of CPU core(s) to be skipped (1 ... N-1), Skipped CPU core(s) are
450 not used for pinning main thread and working thread(s).
451
452 The main thread is automatically pinned to the first available CPU core and worker(s)
453 are pinned to next free CPU core(s) after core assigned to main thread
454
455 .. code-block:: console
456
457    skip-cores 4
458
459 workers number
460 ^^^^^^^^^^^^^^
461
462 Specify a number of workers to be created Workers are pinned to N consecutive
463 CPU cores while skipping "skip-cores" CPU core(s) and main thread's CPU core
464
465 .. code-block:: console
466
467    workers 2
468
469 scheduler-policy other | batch | idle | fifo | rr
470 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
471
472 Set scheduling policy and priority of main and worker threads
473
474 Scheduling policy options are: other (SCHED_OTHER), batch (SCHED_BATCH)
475 idle (SCHED_IDLE), fifo (SCHED_FIFO), rr (SCHED_RR)
476
477 .. code-block:: console
478
479    scheduler-policy fifo
480
481 scheduler-priority number
482 ^^^^^^^^^^^^^^^^^^^^^^^^^
483
484 Scheduling priority is used only for "real-time policies (fifo and rr),
485 and has to be in the range of priorities supported for a particular policy
486
487 .. code-block:: console
488
489    scheduler-priority 50
490
491 The buffers Section
492 -------------------
493
494 .. code-block:: console
495
496    buffers {
497       buffers-per-numa 128000
498       default data-size 2048
499       page-size default-hugepage
500    }
501
502 buffers-per-numa number
503 ^^^^^^^^^^^^^^^^^^^^^^^
504
505 Increase number of buffers allocated, needed only in scenarios with
506 large number of interfaces and worker threads. Value is per numa node.
507 Default is 16384 (8192 if running unprivileged)
508
509 .. code-block:: console
510
511    buffers-per-numa 128000
512
513 default data-size number
514 ^^^^^^^^^^^^^^^^^^^^^^^^
515
516 Size of buffer data area, default is 2048
517
518 .. code-block:: console
519
520    default data-size 2048
521
522 page-size number
523 ^^^^^^^^^^^^^^^^
524
525 Set the page size for buffer allocation
526
527 .. code-block:: console
528
529    page-size 4K
530    page-size 2M
531    page-size 1G
532    page-size default
533    page-size default-hugepage
534
535
536 The dpdk Section
537 ----------------
538
539 .. code-block:: console
540
541    dpdk {
542       dev default {
543          num-rx-desc 512
544          num-tx-desc 512
545       }
546
547       dev 0000:02:00.1 {
548          num-rx-queues 2
549          name eth0
550       }
551    }
552
553 dev <pci-dev> | default { .. }
554 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
555
556 White-list [as in, attempt to drive] a specific PCI device. PCI-dev is a
557 string of the form "DDDD:BB:SS.F" where:
558
559 * DDDD = Domain
560 * BB = Bus Number
561 * SS = Slot number
562 * F = Function
563
564 If the keyword **default** is used the values will apply to all the devices.
565
566 This is the same format used in the linux sysfs tree (i.e./sys/bus/pci/devices)
567 for PCI device directory names.
568
569 .. code-block:: console
570
571    dpdk {
572       dev default {
573          num-rx-desc 512
574          num-tx-desc 512
575       }
576
577 dev <pci-dev> { .. }
578 ^^^^^^^^^^^^^^^^^^^^
579
580 Whitelist specific interface by specifying PCI address. When whitelisting specific
581 interfaces by specifying PCI address, additional custom parameters can also be
582 specified. Valid options include:
583
584 .. code-block:: console
585
586    dev 0000:02:00.0
587    dev 0000:03:00.0
588
589 blacklist <pci-dev>
590 ^^^^^^^^^^^^^^^^^^^
591
592 Blacklist specific device type by specifying PCI vendor:device Whitelist entries
593 take precedence
594
595 .. code-block:: console
596
597    blacklist 8086:10fb
598
599 name interface-name
600 ^^^^^^^^^^^^^^^^^^^
601
602 Set interface name
603
604 .. code-block:: console
605
606    dev 0000:02:00.1 {
607       name eth0
608    }
609
610 num-rx-queues <n>
611 ^^^^^^^^^^^^^^^^^
612
613 Number of receive queues. Also enables RSS. Default value is 1.
614
615 .. code-block:: console
616
617    dev 0000:02:00.1 {
618       num-rx-queues <n>
619    }
620
621 num-tx-queues <n>
622 ^^^^^^^^^^^^^^^^^
623
624 Number of transmit queues. Default is equal to number of worker threads
625 or 1 if no workers treads.
626
627 .. code-block:: console
628
629    dev 000:02:00.1 {
630       num-tx-queues <n>
631    }
632
633 num-rx-desc <n>
634 ^^^^^^^^^^^^^^^
635
636 Number of descriptors in receive ring. Increasing or reducing number
637 can impact performance. Default is 1024.
638
639 .. code-block:: console
640
641    dev 000:02:00.1 {
642       num-rx-desc <n>
643    }
644
645 vlan-strip-offload on | off
646 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
647
648 VLAN strip offload mode for interface. VLAN stripping is off by default
649 for all NICs except VICs, using ENIC driver, which has VLAN stripping on
650 by default.
651
652 .. code-block:: console
653
654    dev 000:02:00.1 {
655       vlan-strip-offload on|off
656    }
657
658 uio-driver driver-name
659 ^^^^^^^^^^^^^^^^^^^^^^
660
661 Change UIO driver used by VPP, Options are: igb_uio, vfio-pci, uio_pci_generic
662 or auto (default)
663
664
665 .. code-block:: console
666
667    uio-driver vfio-pci
668
669 no-multi-seg
670 ^^^^^^^^^^^^
671
672 Disable multi-segment buffers, improves performance but disables Jumbo MTU support
673
674 .. code-block:: console
675
676    no-multi-seg
677
678 socket-mem <n>
679 ^^^^^^^^^^^^^^
680
681 Change hugepages allocation per-socket, needed only if there is need for
682 larger number of mbufs. Default is 256M on each detected CPU socket
683
684 .. code-block:: console
685
686    socket-mem 2048,2048
687
688 no-tx-checksum-offload
689 ^^^^^^^^^^^^^^^^^^^^^^
690
691 Disables UDP / TCP TX checksum offload. Typically needed for use faster
692 vector PMDs (together with no-multi-seg)
693
694 .. code-block:: console
695
696    no-tx-checksum-offload
697
698 enable-tcp-udp-checksum
699 ^^^^^^^^^^^^^^^^^^^^^^^
700
701 Enable UDP / TCP TX checksum offload This is the reversed option of
702 'no-tx-checksum-offload'
703
704 .. code-block:: console
705
706    enable-tcp-udp-checksum
707
708 The plugins Section
709 -------------------
710
711 Configure VPP plugins.
712
713 .. code-block:: console
714
715    plugins {
716       path /ws/vpp/build-root/install-vpp-native/vpp/lib/vpp_plugins
717       plugin dpdk_plugin.so enable
718    }
719
720 path pathname
721 ^^^^^^^^^^^^^
722
723 Adjust the plugin path depending on where the VPP plugins are.
724
725 .. code-block:: console
726
727    path /ws/vpp/build-root/install-vpp-native/vpp/lib/vpp_plugins
728
729 plugin plugin-name | default enable | disable
730 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
731
732 Disable all plugins by default and then selectively enable specific plugins
733
734 .. code-block:: console
735
736    plugin default disable
737    plugin dpdk_plugin.so enable
738    plugin acl_plugin.so enable
739
740 Enable all plugins by default and then selectively disable specific plugins
741
742 .. code-block:: console
743
744    plugin dpdk_plugin.so disable
745    plugin acl_plugin.so disable
746
747 Th statseg Section
748 ^^^^^^^^^^^^^^^^^^
749
750 .. code-block:: console
751
752    statseg {
753       per-node-counters on
754     }
755
756 socket-name <filename>
757 ^^^^^^^^^^^^^^^^^^^^^^
758
759 Name of the stats segment socket defaults to /run/vpp/stats.sock.
760
761 .. code-block:: console
762
763    socket-name /run/vpp/stats.sock
764
765 size <nnn>[KMG]
766 ^^^^^^^^^^^^^^^
767
768 The size of the stats segment, defaults to 32mb
769
770 .. code-block:: console
771
772    size 1024M
773
774 per-node-counters on | off
775 ^^^^^^^^^^^^^^^^^^^^^^^^^^
776
777 Defaults to none
778
779 .. code-block:: console
780
781    per-node-counters on
782
783 update-interval <f64-seconds>
784 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
785
786 Sets the segment scrape / update interval
787
788 .. code-block:: console
789
790    update-interval 300
791
792
793 Some Advanced Parameters:
794 -------------------------
795
796
797 acl-plugin Section
798 ------------------
799
800 These parameters change the configuration of the ACL (access control list) plugin,
801 such as how the ACL bi-hash tables are initialized.
802
803 They should only be set by those that are familiar with the interworkings of VPP
804 and the ACL Plugin.
805
806 The first three parameters, *connection hash buckets*, *connection hash memory*,
807 and *connection count max*, set the **connection table per-interface parameters**
808 for modifying how the two bounded-index extensible hash tables for
809 IPv6 (40\*8 bit key and 8\*8 bit value pairs) and IPv4
810 (16\*8 bit key and 8\*8 bit value pairs) **ACL plugin FA interface sessions**
811 are initialized.
812
813 connection hash buckets <n>
814 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
815
816 Sets the number of hash buckets (rounded up to a power of 2) in each
817 of the two bi-hash tables. Defaults to 64\*1024 (65536) hash buckets.
818
819 .. code-block:: console
820
821    connection hash buckets 65536
822
823 connection hash memory <n>
824 ^^^^^^^^^^^^^^^^^^^^^^^^^^
825
826 Sets the allocated memory size (in bytes) for each of the two bi-hash tables.
827 Defaults to 1073741824 bytes.
828
829 .. code-block:: console
830
831    connection hash memory 1073741824
832
833 connection count max <n>
834 ^^^^^^^^^^^^^^^^^^^^^^^^
835
836 Sets the maximum number of pool elements when allocating each per-worker
837 pool of sessions for both bi-hash tables. Defaults to 500000 elements in each pool.
838
839 .. code-block:: console
840
841    connection count max 500000
842
843 main heap size <n>G | <n>M | <n>K | <n>
844 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
845
846 Sets the size of the main memory heap that holds all the ACL module related
847 allocations (other than hash.) Default size is 0, but during
848 ACL heap initialization is equal to
849 *per_worker_size_with_slack * tm->n_vlib_mains + bihash_size + main_slack*.
850 Note that these variables are partially based on the
851 **connection table per-interface parameters** mentioned above.
852
853 .. code-block:: console
854
855    main heap size 3G
856
857 The next three parameters, *hash lookup heap size*, *hash lookup hash buckets*,
858 and *hash lookup hash memory*, modify the initialization of the bi-hash lookup
859 table used by the ACL plugin. This table is initialized when attempting to apply
860 an ACL to the existing vector of ACLs looked up during packet processing
861 (but it is found that the table does not exist / has not been initialized yet.)
862
863 hash lookup heap size  <n>G | <n>M | <n> K | <n>
864 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
865
866 Sets the size of the memory heap that holds all the miscellaneous allocations
867 related to hash-based lookups. Default size is 67108864 bytes.
868
869 .. code-block:: console
870
871    hash lookup heap size 70M
872
873 hash lookup hash buckets <n>
874 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
875
876 Sets the number of hash buckets (rounded up to a power of 2) in the bi-hash
877 lookup table. Defaults to 65536 hash buckets.
878
879 .. code-block:: console
880
881    hash lookup hash buckets 65536
882
883 hash lookup hash memory <n>
884 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
885
886 Sets the allocated memory size (in bytes) for the bi-hash lookup table.
887 Defaults to 67108864 bytes.
888
889 .. code-block:: console
890
891    hash lookup hash memory 67108864
892
893 use tuple merge <n>
894 ^^^^^^^^^^^^^^^^^^^
895
896 Sets a boolean value indicating whether or not to use TupleMerge
897 for hash ACL's. Defaults to 1 (true), meaning the default implementation
898 of hashing ACL's does use TupleMerge.
899
900 .. code-block:: console
901
902    use tuple merge 1
903
904 tuple merge split threshold <n>
905 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
906
907 Sets the maximum amount of rules (ACE's) that can collide in a bi-hash
908 lookup table before the table is split into two new tables. Splitting ensures
909 less rule collisions by hashing colliding rules based on their common tuple
910 (usually their maximum common tuple.) Splitting occurs when the
911 *length of the colliding rules vector* is greater than this threshold amount.
912 Defaults to a maximum of 39 rule collisions per table.
913
914 .. code-block:: console
915
916    tuple merge split threshold 30
917
918 reclassify sessions <n>
919 ^^^^^^^^^^^^^^^^^^^^^^^
920
921 Sets a boolean value indicating whether or not to take the epoch of the session
922 into account when dealing with re-applying ACL's or changing already applied ACL's.
923 Defaults to 0 (false), meaning the default implementation does NOT take the
924 epoch of the session into account.
925
926 .. code-block:: console
927
928    reclassify sessions 1
929
930 .. _api-queue:
931
932 api-queue Section
933 -----------------
934
935 length  <n>
936 ^^^^^^^^^^^
937
938 Sets the api queue length. Minimum valid queue length is 1024, which is
939 also the default.
940
941 .. code-block:: console
942
943    length 2048
944
945 .. _cj:
946
947 cj Section
948 ----------
949
950 The circular journal (CJ) thread-safe circular log buffer scheme is
951 occasionally useful when chasing bugs. Calls to it should not be checked in.
952 See .../vlib/vlib/unix/cj.c. The circular journal is disables by default.
953 When enabled, the number of records must be provided, there is no default
954 value.
955
956 records <n>
957 ^^^^^^^^^^^
958
959 Configure the number of circular journal records in the circular buffer.
960 The number of records should be a power of 2.
961
962 .. code-block:: console
963
964    records 131072
965
966 on
967 ^^
968
969 Turns on logging at the earliest possible moment.
970
971 .. code-block:: console
972
973    on
974
975 dns Section
976 -----------
977
978 max-cache-size <n>
979 ^^^^^^^^^^^^^^^^^^
980
981 Set the maximum number of active elements allowed in the pool of
982 dns cache entries. When resolving an expired entry or adding a new
983 static entry and the max number of active entries is reached,
984 a random, non-static entry is deleted. Defaults to 65535 entries.
985
986 .. code-block:: console
987
988    max-cache-size 65535
989
990
991 ethernet Section
992 -----------------
993
994 default-mtu <n>
995 ^^^^^^^^^^^^^^^
996
997 Specifies the default MTU size for Ethernet interfaces.  Must be in
998 the range of 64-9000.  The default is 9000.
999
1000 .. code-block:: console
1001
1002    default-mtu 1500
1003
1004 heapsize Section
1005 -----------------
1006
1007 Heapsize configuration controls the size of the main heap. The heap size is
1008 configured very early in the boot sequence, before loading plug-ins or doing
1009 much of anything else.
1010
1011 heapsize <n>M | <n>G
1012 ^^^^^^^^^^^^^^^^^^^^
1013
1014 Specifies the size of the heap in MB or GB. The default is 1GB.
1015
1016 .. code-block:: console
1017
1018    heapsize 2G
1019
1020 ip Section
1021 ----------
1022
1023 IPv4 heap configuration. he heap size is configured very early in the boot
1024 sequence, before loading plug-ins or doing much of anything else.
1025
1026 heap-size <n>G | <n>M | <n>K | <n>
1027 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1028
1029 Set the IPv4 mtrie heap size, which is the amount of memory dedicated to
1030 the destination IP lookup table. The input value can be set in GB, MB, KB
1031 or bytes. The default value is 32MB.
1032
1033 .. code-block:: console
1034
1035    heap-size 64M
1036
1037 ip6 Section
1038 -----------
1039
1040 IPv6 heap configuration. he heap size is configured very early in the boot
1041 sequence, before loading plug-ins or doing much of anything else.
1042
1043
1044 heap-size <n>G | <n>M | <n>K | <n>
1045 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1046
1047 Set the IPv6 forwarding table heap size. The input value can be set in GB,
1048 MB, KB or bytes. The default value is 32MB.
1049
1050 .. code-block:: console
1051
1052    heap-size 64M
1053
1054 hash-buckets <n>
1055 ^^^^^^^^^^^^^^^^
1056
1057 Set the number of IPv6 forwarding table hash buckets. The default value is
1058 64K (65536).
1059
1060 .. code-block:: console
1061
1062    hash-buckets 131072
1063
1064 l2learn Section
1065 ---------------
1066
1067 Configure Layer 2 MAC Address learning parameters.
1068
1069 limit <n>
1070 ^^^^^^^^^
1071
1072 Configures the number of L2 (MAC) addresses in the L2 FIB at any one time,
1073 which limits the size of the L2 FIB to <n> concurrent entries.  Defaults to
1074 4M entries (4194304).
1075
1076 .. code-block:: console
1077
1078    limit 8388608
1079
1080 l2tp Section
1081 ------------
1082
1083 IPv6 Layer 2 Tunnelling Protocol Version 3 (IPv6-L2TPv3) configuration controls
1084 the method used to locate a specific IPv6-L2TPv3 tunnel. The following settings
1085 are mutually exclusive:
1086
1087 lookup-v6-src
1088 ^^^^^^^^^^^^^
1089
1090 Lookup tunnel by IPv6 source address.
1091
1092 .. code-block:: console
1093
1094    lookup-v6-src
1095
1096 lookup-v6-dst
1097 ^^^^^^^^^^^^^
1098
1099 Lookup tunnel by IPv6 destination address.
1100
1101 .. code-block:: console
1102
1103    lookup-v6-dst
1104
1105 lookup-session-id
1106 ^^^^^^^^^^^^^^^^^
1107
1108 Lookup tunnel by L2TPv3 session identifier.
1109
1110 .. code-block:: console
1111
1112    lookup-session-id
1113
1114 logging Section
1115 ---------------
1116
1117 size <n>
1118 ^^^^^^^^
1119
1120 Number of entries in the global logging buffer. Defaults to 512.
1121
1122 .. code-block:: console
1123
1124    size 512
1125
1126 nthrottle-time <n>
1127 ^^^^^^^^^^^^^^^^^^
1128
1129 Set the global value for the time to wait (in seconds) before resuming
1130 logging of a log subclass that exceeded the per-subclass message-per-second
1131 threshold.  Defaults to 3.
1132
1133 .. code-block:: console
1134
1135    unthrottle-time 3
1136
1137 default-log-level emerg|alert | crit | err | warn | notice | info | debug | disabled
1138 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1139
1140 Set the default logging level of the system log.  Defaults to notice.
1141
1142 .. code-block:: console
1143
1144    default-log-level notice
1145
1146 default-syslog-log-level emerg|alert | crit | err | warn | notice | info | debug | disabled
1147 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1148
1149 Set the default logging level of the syslog target.  Defaults to warning.
1150
1151 .. code-block:: console
1152
1153    default-syslog-log-level warning
1154
1155 mactime Section
1156 ---------------
1157
1158 lookup-table-buckets <n>
1159 ^^^^^^^^^^^^^^^^^^^^^^^^
1160
1161 Sets the number of hash buckets in the mactime bi-hash lookup table.
1162 Defaults to 128 buckets.
1163
1164 .. code-block:: console
1165
1166    lookup-table-buckets 128
1167
1168 lookup-table-memory <n>G | <n>M | <n>K | <n>
1169 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1170
1171 Sets the allocated memory size (in bytes) for the mactime bi-hash lookup table.
1172 The input value can be set in GB, MB, KB or bytes. The default value is 262144
1173 (256 << 10) bytes or roughly 256KB.
1174
1175 .. code-block:: console
1176
1177    lookup-table-memory 300K
1178
1179 timezone_offset <n>
1180 ^^^^^^^^^^^^^^^^^^^
1181
1182 Sets the timezone offset from UTC. Defaults to an offset of -5 hours
1183 from UTC (US EST / EDT.)
1184
1185 .. code-block:: console
1186
1187    timezone_offset -5
1188
1189 "map" Parameters
1190 ----------------
1191
1192 customer edge
1193 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
1194
1195 Sets a boolean true to indicate that the MAP node is a Customer Edge (CE)
1196 router. The boolean defaults to false, meaning the MAP node is not treated
1197 as a CE router.
1198
1199 .. code-block:: console
1200
1201    customer edge
1202
1203 nat Section
1204 -----------
1205
1206 These parameters change the configuration of the NAT (Network address translation)
1207 plugin, such as how the NAT & NAT64 bi-hash tables are initialized, if the NAT is
1208 endpoint dependent, or if the NAT is deterministic.
1209
1210 For each NAT per thread data, the following 4 parameters change how certain
1211 bi-hash tables are initialized.
1212
1213 translation hash buckets <n>
1214 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1215
1216 Sets the number of hash buckets in each of the two in/out NAT bi-hash lookup
1217 tables. Defaults to 1024 buckets.
1218
1219 If the NAT is indicated to be endpoint dependent, which can be set with the
1220 :ref:`endpoint-dependent parameter <endpointLabel>`, then this parameter sets
1221 the number of hash buckets in each of the two endpoint dependent sessions
1222 NAT bi-hash lookup tables.
1223
1224 .. code-block:: console
1225
1226    translation hash buckets 1024
1227
1228 translation hash memory <n>
1229 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
1230
1231 Sets the allocated memory size (in bytes) for each of the two in/out NAT
1232 bi-hash tables. Defaults to 134217728 (128 << 20) bytes, which is roughly 128 MB.
1233
1234 If the NAT is indicated to be endpoint dependent, which can be set with the
1235 :ref:`endpoint-dependent parameter <endpointLabel>`, then this parameter sets the
1236 allocated memory size for each of the two endpoint dependent sessions NAT bi-hash
1237 lookup tables.
1238
1239 .. code-block:: console
1240
1241    translation hash memory 134217728
1242
1243 user hash buckets <n>
1244 ^^^^^^^^^^^^^^^^^^^^^
1245
1246 Sets the number of hash buckets in the user bi-hash lookup table
1247 (src address lookup for a user.) Defaults to 128 buckets.
1248
1249 .. code-block:: console
1250
1251    user hash buckets 128
1252
1253 user hash memory <n>
1254 ^^^^^^^^^^^^^^^^^^^^
1255
1256 Sets the allocated memory size (in bytes) for the user bi-hash lookup table
1257 (src address lookup for a user.) Defaults to 67108864 (64 << 20) bytes,
1258 which is roughly 64 MB.
1259
1260 .. code-block:: console
1261
1262    user hash memory 67108864
1263
1264 max translations per user <n>
1265 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1266
1267 Sets the maximum amount of dynamic and/or static NAT sessions each user can have.
1268 Defaults to 100. When this limit is reached, the least recently used translation
1269 is recycled.
1270
1271 .. code-block:: console
1272
1273    max translations per user 50
1274
1275 deterministic
1276 ^^^^^^^^^^^^^
1277
1278 Sets a boolean value to 1 indicating that the NAT is deterministic. Defaults to 0,
1279 meaning the NAT is not deterministic.
1280
1281 .. code-block:: console
1282
1283    deterministic
1284
1285 nat64 bib hash buckets <n>
1286 ^^^^^^^^^^^^^^^^^^^^^^^^^^
1287
1288 Sets the number of hash buckets in each of the two in/out NAT64 BIB bi-hash
1289 tables. Defaults to 1024 buckets.
1290
1291 .. code-block:: console
1292
1293    nat64 bib hash buckets 1024
1294
1295 nat64 bib hash memory <n>
1296 ^^^^^^^^^^^^^^^^^^^^^^^^^
1297
1298 Sets the allocated memory size (in bytes) for each of the two in/out NAT64
1299 BIB bi-hash tables. Defaults to 134217728 (128 << 20) bytes,
1300 which is roughly 128 MB.
1301
1302 .. code-block:: console
1303
1304    nat64 bib hash memory 134217728
1305
1306 nat64 st hash buckets <n>
1307 ^^^^^^^^^^^^^^^^^^^^^^^^^
1308
1309 Sets the number of hash buckets in each of the two in/out NAT64 session table
1310 bi-hash tables. Defaults to 2048 buckets.
1311
1312 .. code-block:: console
1313
1314    nat64 st hash buckets 2048
1315
1316 nat64 st hash memory <n>
1317 ^^^^^^^^^^^^^^^^^^^^^^^^
1318
1319 Sets the allocated memory size (in bytes) for each of the two in/out NAT64 session
1320 table bi-hash tables. Defaults to 268435456 (256 << 20) bytes, which is roughly
1321 256 MB.
1322
1323 .. code-block:: console
1324
1325    nat64 st hash memory 268435456
1326
1327 .. _endpointLabel:
1328
1329 endpoint-dependent
1330 ^^^^^^^^^^^^^^^^^^
1331
1332 Sets a boolean value to 1, indicating that the NAT is endpoint dependent.
1333 Defaults to 0, meaning the NAT is not endpoint dependent.
1334
1335 .. code-block:: console
1336
1337    endpoint-dependent
1338
1339 oam Section
1340 -----------
1341
1342 OAM configuration controls the (ip4-icmp) interval, and number of misses
1343 allowed before reporting an oam target down to any registered listener.
1344
1345 interval <n.n>
1346 ^^^^^^^^^^^^^^
1347
1348 Interval, floating-point seconds, between sending OAM IPv4 ICMP messages.
1349 Default is 2.04 seconds.
1350
1351 .. code-block:: console
1352
1353    interval 3.5
1354
1355 physmem Section
1356 ---------------
1357
1358 Configuration parameters used to specify base address and maximum size of
1359 the memory allocated for the pmalloc module in VPP. pmalloc is a NUMA-aware,
1360 growable physical memory allocator. pmalloc allocates memory for the DPDK
1361 memory pool.
1362
1363 base-addr <address>
1364 ^^^^^^^^^^^^^^^^^^^
1365
1366 Specify the base address for pmalloc memory space.
1367
1368 .. code-block:: console
1369
1370     base-addr 0xfffe00000000
1371
1372 max-size <n>G | <n>M | <n>K | <n>
1373 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1374
1375 Set the memory size for pmalloc memory space. The default is 16G.
1376
1377 .. code-block:: console
1378
1379     max-size 4G
1380
1381 tapcli Section
1382 --------------
1383
1384 Configuration parameters for TAPCLI (dynamic tap interface hookup.)
1385
1386 mtu <n>
1387 ^^^^^^^
1388
1389 Sets interface MTU (maximum transmission unit) size in bytes. This size
1390 is also related to the number of MTU buffers. Defaults to 1500 bytes.
1391
1392 .. code-block:: console
1393
1394    mtu 1500
1395
1396 disable
1397 ^^^^^^^
1398
1399 Disables TAPCLI. Default is that TAPCLI is enabled.
1400
1401 .. code-block:: console
1402
1403    disable
1404
1405
1406 tcp Section
1407 -----------
1408
1409 Configuration parameters for TCP host stack utilities. The following
1410 preallocation parameters are related to the initialization of fixed-size,
1411 preallocation pools.
1412
1413 preallocated-connections <n>
1414 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1415
1416 Sets the number of preallocated TCP connections. Defaults to 0.
1417 The preallocated connections per thread is related to this value,
1418 equal to (preallocated_connections / (num_threads - 1)).
1419
1420 .. code-block:: console
1421
1422    preallocated-connections 5
1423
1424 preallocated-half-open-connections <n>
1425 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1426
1427 Sets the number of preallocated TCP half-open connections. Defaults to 0.
1428
1429 .. code-block:: console
1430
1431    preallocated-half-open-connections 5
1432
1433 buffer-fail-fraction <n.n>
1434 ^^^^^^^^^^^^^^^^^^^^^^^^^^
1435
1436 Sets the TCP buffer fail fraction (a float) used for fault-injection
1437 when debugging TCP buffer allocation. Its use is found in *tcp_debug.h*.
1438 Defaults to 0.0.
1439
1440 .. code-block:: console
1441
1442    buffer-fail-fraction 0.0
1443
1444
1445 tls Section
1446 -----------
1447
1448 Configures TLS parameters, such as enabling the use of test certificates.
1449 These parameters affect the tlsmbedtls and tlsopenssl plugins.
1450
1451 use-test-cert-in-ca
1452 ^^^^^^^^^^^^^^^^^^^
1453
1454 Sets a boolean value to 1 to indicate during the initialization of a
1455 TLS CA chain to attempt to parse and add test certificates to the chain.
1456 Defaults to 0, meaning test certificates are not used.
1457
1458 .. code-block:: console
1459
1460    use-test-cert-in-ca
1461
1462 ca-cert-path <filename>
1463 ^^^^^^^^^^^^^^^^^^^^^^^
1464
1465 Sets the filename path of the location of TLS CA certificates, used when
1466 initializing and loading TLS CA certificates during the initialization
1467 of a TLS CA chain. If not set, the default filename path is
1468 */etc/ssl/certs/ca-certificates.crt*.
1469
1470 .. code-block:: console
1471
1472    ca-cert-path /etc/ssl/certs/ca-certificates.crt
1473
1474
1475 tuntap Section
1476 --------------
1477
1478 The "tuntap" driver configures a point-to-point interface between the vpp
1479 engine and the local Linux kernel stack. This allows e.g. users to ssh to the
1480 host | VM | container via vpp "revenue" interfaces. It's marginally useful, and
1481 is currently disabled by default. To [dynamically] create TAP interfaces - the
1482 preferred scheme - see the "tap_connect" binary API. The Linux network stack
1483 "vnet" interface needs to manually configure, and VLAN and other settings if
1484 desired.
1485
1486
1487 enable|disable
1488 ^^^^^^^^^^^^^^
1489
1490 Enable or disable the tun/tap driver.
1491
1492 .. code-block:: console
1493
1494    enable
1495
1496 ethernet|ether
1497 ^^^^^^^^^^^^^^
1498
1499 Create a tap device (ethernet MAC) instead of a tun device (point-to-point
1500 tunnel). The two keywords are aliases for the same function.
1501
1502 .. code-block:: console
1503
1504    ethernet
1505
1506 have-normal-interface|have-normal
1507 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1508
1509 Treat the host Linux stack as a routing peer instead of programming VPP
1510 interface L3 addresses onto the tun/tap devices. The two keywords are
1511 aliases for the same function.
1512
1513 .. code-block:: console
1514
1515    have-normal-interface
1516
1517 name <name>
1518 ^^^^^^^^^^^
1519
1520 Assign name to the tun/tap device.
1521
1522 .. code-block:: console
1523
1524    name vpp1
1525
1526
1527 vhost-user Section
1528 ------------------
1529
1530 Vhost-user configuration parameters control the vhost-user driver.
1531
1532 coalesce-frames <n>
1533 ^^^^^^^^^^^^^^^^^^^
1534
1535 Subject to deadline-timer expiration - see next item - attempt to transmit
1536 at least <n> packet frames. Default is 32 frames.
1537
1538 .. code-block:: console
1539
1540    coalesce-frames 64
1541
1542 coalesce-time <seconds>
1543 ^^^^^^^^^^^^^^^^^^^^^^^
1544
1545 Hold packets no longer than (floating-point) seconds before transmitting
1546 them. Default is 0.001 seconds
1547
1548 .. code-block:: console
1549
1550    coalesce-time 0.002
1551
1552 dont-dump-memory
1553 ^^^^^^^^^^^^^^^^
1554
1555 vhost-user shared-memory segments can add up to a large amount of memory, so
1556 it's handy to avoid adding them to corefiles when using a significant number
1557 of such interfaces.
1558
1559 .. code-block:: console
1560
1561    dont-dump-memory
1562
1563
1564 vlib Section
1565 ------------
1566
1567 These parameters configure VLIB, such as allowing you to choose whether to
1568 enable memory traceback or a post-mortem elog dump.
1569
1570 memory-trace
1571 ^^^^^^^^^^^^
1572
1573 Enables memory trace (mheap traceback.) Defaults to 0, meaning memory
1574 trace is disabled.
1575
1576 .. code-block:: console
1577
1578    memory-trace
1579
1580 elog-events <n>
1581 ^^^^^^^^^^^^^^^
1582
1583 Sets the number of elements/events (the size) of the event ring
1584 (a circular buffer of events.) This number rounds to a power of 2.
1585 Defaults to 131072 (128 << 10) elements.
1586
1587 .. code-block:: console
1588
1589    elog-events 4096
1590
1591 elog-post-mortem-dump
1592 ^^^^^^^^^^^^^^^^^^^^^
1593
1594 Enables the attempt of a post-mortem elog dump to
1595 */tmp/elog_post_mortem.<PID_OF_CALLING_PROCESS>* if os_panic or
1596 os_exit is called.
1597
1598 .. code-block:: console
1599
1600    elog-post-mortem-dump