docs: Remove references to vlan-strip-offload as it is deprecated
[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 uio-driver driver-name
646 ^^^^^^^^^^^^^^^^^^^^^^
647
648 Change UIO driver used by VPP, Options are: igb_uio, vfio-pci, uio_pci_generic
649 or auto (default)
650
651
652 .. code-block:: console
653
654    uio-driver vfio-pci
655
656 uio-bind-force
657 ^^^^^^^^^^^^^^^^^^^^^^
658
659 Force VPP to rebind the interface(s) to the selected UIO driver, even if the
660 interface is up in Linux.
661 By default, VPP will refuse to bind an interface if it is up in Linux,
662 in case it is in active use.
663
664 .. code-block:: console
665
666    uio-bind-force
667
668 no-multi-seg
669 ^^^^^^^^^^^^
670
671 Disable multi-segment buffers, improves performance but disables Jumbo MTU support
672
673 .. code-block:: console
674
675    no-multi-seg
676
677 socket-mem <n>
678 ^^^^^^^^^^^^^^
679
680 Change hugepages allocation per-socket, needed only if there is need for
681 larger number of mbufs. Default is 256M on each detected CPU socket
682
683 .. code-block:: console
684
685    socket-mem 2048,2048
686
687 no-tx-checksum-offload
688 ^^^^^^^^^^^^^^^^^^^^^^
689
690 Disables UDP / TCP TX checksum offload. Typically needed for use faster
691 vector PMDs (together with no-multi-seg)
692
693 .. code-block:: console
694
695    no-tx-checksum-offload
696
697 enable-tcp-udp-checksum
698 ^^^^^^^^^^^^^^^^^^^^^^^
699
700 Enable UDP / TCP TX checksum offload This is the reversed option of
701 'no-tx-checksum-offload'
702
703 .. code-block:: console
704
705    enable-tcp-udp-checksum
706
707 The plugins Section
708 -------------------
709
710 Configure VPP plugins.
711
712 .. code-block:: console
713
714    plugins {
715       path /ws/vpp/build-root/install-vpp-native/vpp/lib/vpp_plugins
716       plugin dpdk_plugin.so enable
717    }
718
719 path pathname
720 ^^^^^^^^^^^^^
721
722 Adjust the plugin path depending on where the VPP plugins are.
723
724 .. code-block:: console
725
726    path /ws/vpp/build-root/install-vpp-native/vpp/lib/vpp_plugins
727
728 plugin plugin-name | default enable | disable
729 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
730
731 Disable all plugins by default and then selectively enable specific plugins
732
733 .. code-block:: console
734
735    plugin default disable
736    plugin dpdk_plugin.so enable
737    plugin acl_plugin.so enable
738
739 Enable all plugins by default and then selectively disable specific plugins
740
741 .. code-block:: console
742
743    plugin dpdk_plugin.so disable
744    plugin acl_plugin.so disable
745
746 Th statseg Section
747 ^^^^^^^^^^^^^^^^^^
748
749 .. code-block:: console
750
751    statseg {
752       per-node-counters on
753     }
754
755 socket-name <filename>
756 ^^^^^^^^^^^^^^^^^^^^^^
757
758 Name of the stats segment socket defaults to /run/vpp/stats.sock.
759
760 .. code-block:: console
761
762    socket-name /run/vpp/stats.sock
763
764 size <nnn>[KMG]
765 ^^^^^^^^^^^^^^^
766
767 The size of the stats segment, defaults to 32mb
768
769 .. code-block:: console
770
771    size 1024M
772
773 per-node-counters on | off
774 ^^^^^^^^^^^^^^^^^^^^^^^^^^
775
776 Defaults to none
777
778 .. code-block:: console
779
780    per-node-counters on
781
782 update-interval <f64-seconds>
783 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
784
785 Sets the segment scrape / update interval
786
787 .. code-block:: console
788
789    update-interval 300
790
791
792 Some Advanced Parameters:
793 -------------------------
794
795
796 acl-plugin Section
797 ------------------
798
799 These parameters change the configuration of the ACL (access control list) plugin,
800 such as how the ACL bi-hash tables are initialized.
801
802 They should only be set by those that are familiar with the interworkings of VPP
803 and the ACL Plugin.
804
805 The first three parameters, *connection hash buckets*, *connection hash memory*,
806 and *connection count max*, set the **connection table per-interface parameters**
807 for modifying how the two bounded-index extensible hash tables for
808 IPv6 (40\*8 bit key and 8\*8 bit value pairs) and IPv4
809 (16\*8 bit key and 8\*8 bit value pairs) **ACL plugin FA interface sessions**
810 are initialized.
811
812 connection hash buckets <n>
813 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
814
815 Sets the number of hash buckets (rounded up to a power of 2) in each
816 of the two bi-hash tables. Defaults to 64\*1024 (65536) hash buckets.
817
818 .. code-block:: console
819
820    connection hash buckets 65536
821
822 connection hash memory <n>
823 ^^^^^^^^^^^^^^^^^^^^^^^^^^
824
825 Sets the allocated memory size (in bytes) for each of the two bi-hash tables.
826 Defaults to 1073741824 bytes.
827
828 .. code-block:: console
829
830    connection hash memory 1073741824
831
832 connection count max <n>
833 ^^^^^^^^^^^^^^^^^^^^^^^^
834
835 Sets the maximum number of pool elements when allocating each per-worker
836 pool of sessions for both bi-hash tables. Defaults to 500000 elements in each pool.
837
838 .. code-block:: console
839
840    connection count max 500000
841
842 main heap size <n>G | <n>M | <n>K | <n>
843 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
844
845 Sets the size of the main memory heap that holds all the ACL module related
846 allocations (other than hash.) Default size is 0, but during
847 ACL heap initialization is equal to
848 *per_worker_size_with_slack * tm->n_vlib_mains + bihash_size + main_slack*.
849 Note that these variables are partially based on the
850 **connection table per-interface parameters** mentioned above.
851
852 .. code-block:: console
853
854    main heap size 3G
855
856 The next three parameters, *hash lookup heap size*, *hash lookup hash buckets*,
857 and *hash lookup hash memory*, modify the initialization of the bi-hash lookup
858 table used by the ACL plugin. This table is initialized when attempting to apply
859 an ACL to the existing vector of ACLs looked up during packet processing
860 (but it is found that the table does not exist / has not been initialized yet.)
861
862 hash lookup heap size  <n>G | <n>M | <n> K | <n>
863 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
864
865 Sets the size of the memory heap that holds all the miscellaneous allocations
866 related to hash-based lookups. Default size is 67108864 bytes.
867
868 .. code-block:: console
869
870    hash lookup heap size 70M
871
872 hash lookup hash buckets <n>
873 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
874
875 Sets the number of hash buckets (rounded up to a power of 2) in the bi-hash
876 lookup table. Defaults to 65536 hash buckets.
877
878 .. code-block:: console
879
880    hash lookup hash buckets 65536
881
882 hash lookup hash memory <n>
883 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
884
885 Sets the allocated memory size (in bytes) for the bi-hash lookup table.
886 Defaults to 67108864 bytes.
887
888 .. code-block:: console
889
890    hash lookup hash memory 67108864
891
892 use tuple merge <n>
893 ^^^^^^^^^^^^^^^^^^^
894
895 Sets a boolean value indicating whether or not to use TupleMerge
896 for hash ACL's. Defaults to 1 (true), meaning the default implementation
897 of hashing ACL's does use TupleMerge.
898
899 .. code-block:: console
900
901    use tuple merge 1
902
903 tuple merge split threshold <n>
904 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
905
906 Sets the maximum amount of rules (ACE's) that can collide in a bi-hash
907 lookup table before the table is split into two new tables. Splitting ensures
908 less rule collisions by hashing colliding rules based on their common tuple
909 (usually their maximum common tuple.) Splitting occurs when the
910 *length of the colliding rules vector* is greater than this threshold amount.
911 Defaults to a maximum of 39 rule collisions per table.
912
913 .. code-block:: console
914
915    tuple merge split threshold 30
916
917 reclassify sessions <n>
918 ^^^^^^^^^^^^^^^^^^^^^^^
919
920 Sets a boolean value indicating whether or not to take the epoch of the session
921 into account when dealing with re-applying ACL's or changing already applied ACL's.
922 Defaults to 0 (false), meaning the default implementation does NOT take the
923 epoch of the session into account.
924
925 .. code-block:: console
926
927    reclassify sessions 1
928
929 .. _api-queue:
930
931 api-queue Section
932 -----------------
933
934 length  <n>
935 ^^^^^^^^^^^
936
937 Sets the api queue length. Minimum valid queue length is 1024, which is
938 also the default.
939
940 .. code-block:: console
941
942    length 2048
943
944 .. _cj:
945
946 cj Section
947 ----------
948
949 The circular journal (CJ) thread-safe circular log buffer scheme is
950 occasionally useful when chasing bugs. Calls to it should not be checked in.
951 See .../vlib/vlib/unix/cj.c. The circular journal is disables by default.
952 When enabled, the number of records must be provided, there is no default
953 value.
954
955 records <n>
956 ^^^^^^^^^^^
957
958 Configure the number of circular journal records in the circular buffer.
959 The number of records should be a power of 2.
960
961 .. code-block:: console
962
963    records 131072
964
965 on
966 ^^
967
968 Turns on logging at the earliest possible moment.
969
970 .. code-block:: console
971
972    on
973
974 dns Section
975 -----------
976
977 max-cache-size <n>
978 ^^^^^^^^^^^^^^^^^^
979
980 Set the maximum number of active elements allowed in the pool of
981 dns cache entries. When resolving an expired entry or adding a new
982 static entry and the max number of active entries is reached,
983 a random, non-static entry is deleted. Defaults to 65535 entries.
984
985 .. code-block:: console
986
987    max-cache-size 65535
988
989
990 ethernet Section
991 -----------------
992
993 default-mtu <n>
994 ^^^^^^^^^^^^^^^
995
996 Specifies the default MTU size for Ethernet interfaces.  Must be in
997 the range of 64-9000.  The default is 9000.
998
999 .. code-block:: console
1000
1001    default-mtu 1500
1002
1003 heapsize Section
1004 -----------------
1005
1006 Heapsize configuration controls the size of the main heap. The heap size is
1007 configured very early in the boot sequence, before loading plug-ins or doing
1008 much of anything else.
1009
1010 heapsize <n>M | <n>G
1011 ^^^^^^^^^^^^^^^^^^^^
1012
1013 Specifies the size of the heap in MB or GB. The default is 1GB.
1014
1015 .. code-block:: console
1016
1017    heapsize 2G
1018
1019 ip Section
1020 ----------
1021
1022 IPv4 heap configuration. he heap size is configured very early in the boot
1023 sequence, before loading plug-ins or doing much of anything else.
1024
1025 heap-size <n>G | <n>M | <n>K | <n>
1026 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1027
1028 Set the IPv4 mtrie heap size, which is the amount of memory dedicated to
1029 the destination IP lookup table. The input value can be set in GB, MB, KB
1030 or bytes. The default value is 32MB.
1031
1032 .. code-block:: console
1033
1034    heap-size 64M
1035
1036 ip6 Section
1037 -----------
1038
1039 IPv6 heap configuration. he heap size is configured very early in the boot
1040 sequence, before loading plug-ins or doing much of anything else.
1041
1042
1043 heap-size <n>G | <n>M | <n>K | <n>
1044 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1045
1046 Set the IPv6 forwarding table heap size. The input value can be set in GB,
1047 MB, KB or bytes. The default value is 32MB.
1048
1049 .. code-block:: console
1050
1051    heap-size 64M
1052
1053 hash-buckets <n>
1054 ^^^^^^^^^^^^^^^^
1055
1056 Set the number of IPv6 forwarding table hash buckets. The default value is
1057 64K (65536).
1058
1059 .. code-block:: console
1060
1061    hash-buckets 131072
1062
1063 l2learn Section
1064 ---------------
1065
1066 Configure Layer 2 MAC Address learning parameters.
1067
1068 limit <n>
1069 ^^^^^^^^^
1070
1071 Configures the number of L2 (MAC) addresses in the L2 FIB at any one time,
1072 which limits the size of the L2 FIB to <n> concurrent entries.  Defaults to
1073 4M entries (4194304).
1074
1075 .. code-block:: console
1076
1077    limit 8388608
1078
1079 l2tp Section
1080 ------------
1081
1082 IPv6 Layer 2 Tunnelling Protocol Version 3 (IPv6-L2TPv3) configuration controls
1083 the method used to locate a specific IPv6-L2TPv3 tunnel. The following settings
1084 are mutually exclusive:
1085
1086 lookup-v6-src
1087 ^^^^^^^^^^^^^
1088
1089 Lookup tunnel by IPv6 source address.
1090
1091 .. code-block:: console
1092
1093    lookup-v6-src
1094
1095 lookup-v6-dst
1096 ^^^^^^^^^^^^^
1097
1098 Lookup tunnel by IPv6 destination address.
1099
1100 .. code-block:: console
1101
1102    lookup-v6-dst
1103
1104 lookup-session-id
1105 ^^^^^^^^^^^^^^^^^
1106
1107 Lookup tunnel by L2TPv3 session identifier.
1108
1109 .. code-block:: console
1110
1111    lookup-session-id
1112
1113 logging Section
1114 ---------------
1115
1116 size <n>
1117 ^^^^^^^^
1118
1119 Number of entries in the global logging buffer. Defaults to 512.
1120
1121 .. code-block:: console
1122
1123    size 512
1124
1125 nthrottle-time <n>
1126 ^^^^^^^^^^^^^^^^^^
1127
1128 Set the global value for the time to wait (in seconds) before resuming
1129 logging of a log subclass that exceeded the per-subclass message-per-second
1130 threshold.  Defaults to 3.
1131
1132 .. code-block:: console
1133
1134    unthrottle-time 3
1135
1136 default-log-level emerg|alert | crit | err | warn | notice | info | debug | disabled
1137 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1138
1139 Set the default logging level of the system log.  Defaults to notice.
1140
1141 .. code-block:: console
1142
1143    default-log-level notice
1144
1145 default-syslog-log-level emerg|alert | crit | err | warn | notice | info | debug | disabled
1146 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1147
1148 Set the default logging level of the syslog target.  Defaults to warning.
1149
1150 .. code-block:: console
1151
1152    default-syslog-log-level warning
1153
1154 mactime Section
1155 ---------------
1156
1157 lookup-table-buckets <n>
1158 ^^^^^^^^^^^^^^^^^^^^^^^^
1159
1160 Sets the number of hash buckets in the mactime bi-hash lookup table.
1161 Defaults to 128 buckets.
1162
1163 .. code-block:: console
1164
1165    lookup-table-buckets 128
1166
1167 lookup-table-memory <n>G | <n>M | <n>K | <n>
1168 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1169
1170 Sets the allocated memory size (in bytes) for the mactime bi-hash lookup table.
1171 The input value can be set in GB, MB, KB or bytes. The default value is 262144
1172 (256 << 10) bytes or roughly 256KB.
1173
1174 .. code-block:: console
1175
1176    lookup-table-memory 300K
1177
1178 timezone_offset <n>
1179 ^^^^^^^^^^^^^^^^^^^
1180
1181 Sets the timezone offset from UTC. Defaults to an offset of -5 hours
1182 from UTC (US EST / EDT.)
1183
1184 .. code-block:: console
1185
1186    timezone_offset -5
1187
1188 "map" Parameters
1189 ----------------
1190
1191 customer edge
1192 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
1193
1194 Sets a boolean true to indicate that the MAP node is a Customer Edge (CE)
1195 router. The boolean defaults to false, meaning the MAP node is not treated
1196 as a CE router.
1197
1198 .. code-block:: console
1199
1200    customer edge
1201
1202 nat Section
1203 -----------
1204
1205 These parameters change the configuration of the NAT (Network address translation)
1206 plugin, such as how the NAT & NAT64 bi-hash tables are initialized, if the NAT is
1207 endpoint dependent, or if the NAT is deterministic.
1208
1209 For each NAT per thread data, the following 4 parameters change how certain
1210 bi-hash tables are initialized.
1211
1212 translation hash buckets <n>
1213 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1214
1215 Sets the number of hash buckets in each of the two in/out NAT bi-hash lookup
1216 tables. Defaults to 1024 buckets.
1217
1218 If the NAT is indicated to be endpoint dependent, which can be set with the
1219 :ref:`endpoint-dependent parameter <endpointLabel>`, then this parameter sets
1220 the number of hash buckets in each of the two endpoint dependent sessions
1221 NAT bi-hash lookup tables.
1222
1223 .. code-block:: console
1224
1225    translation hash buckets 1024
1226
1227 translation hash memory <n>
1228 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
1229
1230 Sets the allocated memory size (in bytes) for each of the two in/out NAT
1231 bi-hash tables. Defaults to 134217728 (128 << 20) bytes, which is roughly 128 MB.
1232
1233 If the NAT is indicated to be endpoint dependent, which can be set with the
1234 :ref:`endpoint-dependent parameter <endpointLabel>`, then this parameter sets the
1235 allocated memory size for each of the two endpoint dependent sessions NAT bi-hash
1236 lookup tables.
1237
1238 .. code-block:: console
1239
1240    translation hash memory 134217728
1241
1242 user hash buckets <n>
1243 ^^^^^^^^^^^^^^^^^^^^^
1244
1245 Sets the number of hash buckets in the user bi-hash lookup table
1246 (src address lookup for a user.) Defaults to 128 buckets.
1247
1248 .. code-block:: console
1249
1250    user hash buckets 128
1251
1252 user hash memory <n>
1253 ^^^^^^^^^^^^^^^^^^^^
1254
1255 Sets the allocated memory size (in bytes) for the user bi-hash lookup table
1256 (src address lookup for a user.) Defaults to 67108864 (64 << 20) bytes,
1257 which is roughly 64 MB.
1258
1259 .. code-block:: console
1260
1261    user hash memory 67108864
1262
1263 max translations per user <n>
1264 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1265
1266 Sets the maximum amount of dynamic and/or static NAT sessions each user can have.
1267 Defaults to 100. When this limit is reached, the least recently used translation
1268 is recycled.
1269
1270 .. code-block:: console
1271
1272    max translations per user 50
1273
1274 deterministic
1275 ^^^^^^^^^^^^^
1276
1277 Sets a boolean value to 1 indicating that the NAT is deterministic. Defaults to 0,
1278 meaning the NAT is not deterministic.
1279
1280 .. code-block:: console
1281
1282    deterministic
1283
1284 nat64 bib hash buckets <n>
1285 ^^^^^^^^^^^^^^^^^^^^^^^^^^
1286
1287 Sets the number of hash buckets in each of the two in/out NAT64 BIB bi-hash
1288 tables. Defaults to 1024 buckets.
1289
1290 .. code-block:: console
1291
1292    nat64 bib hash buckets 1024
1293
1294 nat64 bib hash memory <n>
1295 ^^^^^^^^^^^^^^^^^^^^^^^^^
1296
1297 Sets the allocated memory size (in bytes) for each of the two in/out NAT64
1298 BIB bi-hash tables. Defaults to 134217728 (128 << 20) bytes,
1299 which is roughly 128 MB.
1300
1301 .. code-block:: console
1302
1303    nat64 bib hash memory 134217728
1304
1305 nat64 st hash buckets <n>
1306 ^^^^^^^^^^^^^^^^^^^^^^^^^
1307
1308 Sets the number of hash buckets in each of the two in/out NAT64 session table
1309 bi-hash tables. Defaults to 2048 buckets.
1310
1311 .. code-block:: console
1312
1313    nat64 st hash buckets 2048
1314
1315 nat64 st hash memory <n>
1316 ^^^^^^^^^^^^^^^^^^^^^^^^
1317
1318 Sets the allocated memory size (in bytes) for each of the two in/out NAT64 session
1319 table bi-hash tables. Defaults to 268435456 (256 << 20) bytes, which is roughly
1320 256 MB.
1321
1322 .. code-block:: console
1323
1324    nat64 st hash memory 268435456
1325
1326 .. _endpointLabel:
1327
1328 endpoint-dependent
1329 ^^^^^^^^^^^^^^^^^^
1330
1331 Sets a boolean value to 1, indicating that the NAT is endpoint dependent.
1332 Defaults to 0, meaning the NAT is not endpoint dependent.
1333
1334 .. code-block:: console
1335
1336    endpoint-dependent
1337
1338 oam Section
1339 -----------
1340
1341 OAM configuration controls the (ip4-icmp) interval, and number of misses
1342 allowed before reporting an oam target down to any registered listener.
1343
1344 interval <n.n>
1345 ^^^^^^^^^^^^^^
1346
1347 Interval, floating-point seconds, between sending OAM IPv4 ICMP messages.
1348 Default is 2.04 seconds.
1349
1350 .. code-block:: console
1351
1352    interval 3.5
1353
1354 physmem Section
1355 ---------------
1356
1357 Configuration parameters used to specify base address and maximum size of
1358 the memory allocated for the pmalloc module in VPP. pmalloc is a NUMA-aware,
1359 growable physical memory allocator. pmalloc allocates memory for the DPDK
1360 memory pool.
1361
1362 base-addr <address>
1363 ^^^^^^^^^^^^^^^^^^^
1364
1365 Specify the base address for pmalloc memory space.
1366
1367 .. code-block:: console
1368
1369     base-addr 0xfffe00000000
1370
1371 max-size <n>G | <n>M | <n>K | <n>
1372 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1373
1374 Set the memory size for pmalloc memory space. The default is 16G.
1375
1376 .. code-block:: console
1377
1378     max-size 4G
1379
1380 tapcli Section
1381 --------------
1382
1383 Configuration parameters for TAPCLI (dynamic tap interface hookup.)
1384
1385 mtu <n>
1386 ^^^^^^^
1387
1388 Sets interface MTU (maximum transmission unit) size in bytes. This size
1389 is also related to the number of MTU buffers. Defaults to 1500 bytes.
1390
1391 .. code-block:: console
1392
1393    mtu 1500
1394
1395 disable
1396 ^^^^^^^
1397
1398 Disables TAPCLI. Default is that TAPCLI is enabled.
1399
1400 .. code-block:: console
1401
1402    disable
1403
1404
1405 tcp Section
1406 -----------
1407
1408 Configuration parameters for TCP host stack utilities. The following
1409 preallocation parameters are related to the initialization of fixed-size,
1410 preallocation pools.
1411
1412 preallocated-connections <n>
1413 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1414
1415 Sets the number of preallocated TCP connections. Defaults to 0.
1416 The preallocated connections per thread is related to this value,
1417 equal to (preallocated_connections / (num_threads - 1)).
1418
1419 .. code-block:: console
1420
1421    preallocated-connections 5
1422
1423 preallocated-half-open-connections <n>
1424 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1425
1426 Sets the number of preallocated TCP half-open connections. Defaults to 0.
1427
1428 .. code-block:: console
1429
1430    preallocated-half-open-connections 5
1431
1432 buffer-fail-fraction <n.n>
1433 ^^^^^^^^^^^^^^^^^^^^^^^^^^
1434
1435 Sets the TCP buffer fail fraction (a float) used for fault-injection
1436 when debugging TCP buffer allocation. Its use is found in *tcp_debug.h*.
1437 Defaults to 0.0.
1438
1439 .. code-block:: console
1440
1441    buffer-fail-fraction 0.0
1442
1443
1444 tls Section
1445 -----------
1446
1447 Configures TLS parameters, such as enabling the use of test certificates.
1448 These parameters affect the tlsmbedtls and tlsopenssl plugins.
1449
1450 use-test-cert-in-ca
1451 ^^^^^^^^^^^^^^^^^^^
1452
1453 Sets a boolean value to 1 to indicate during the initialization of a
1454 TLS CA chain to attempt to parse and add test certificates to the chain.
1455 Defaults to 0, meaning test certificates are not used.
1456
1457 .. code-block:: console
1458
1459    use-test-cert-in-ca
1460
1461 ca-cert-path <filename>
1462 ^^^^^^^^^^^^^^^^^^^^^^^
1463
1464 Sets the filename path of the location of TLS CA certificates, used when
1465 initializing and loading TLS CA certificates during the initialization
1466 of a TLS CA chain. If not set, the default filename path is
1467 */etc/ssl/certs/ca-certificates.crt*.
1468
1469 .. code-block:: console
1470
1471    ca-cert-path /etc/ssl/certs/ca-certificates.crt
1472
1473
1474 tuntap Section
1475 --------------
1476
1477 The "tuntap" driver configures a point-to-point interface between the vpp
1478 engine and the local Linux kernel stack. This allows e.g. users to ssh to the
1479 host | VM | container via vpp "revenue" interfaces. It's marginally useful, and
1480 is currently disabled by default. To [dynamically] create TAP interfaces - the
1481 preferred scheme - see the "tap_connect" binary API. The Linux network stack
1482 "vnet" interface needs to manually configure, and VLAN and other settings if
1483 desired.
1484
1485
1486 enable|disable
1487 ^^^^^^^^^^^^^^
1488
1489 Enable or disable the tun/tap driver.
1490
1491 .. code-block:: console
1492
1493    enable
1494
1495 ethernet|ether
1496 ^^^^^^^^^^^^^^
1497
1498 Create a tap device (ethernet MAC) instead of a tun device (point-to-point
1499 tunnel). The two keywords are aliases for the same function.
1500
1501 .. code-block:: console
1502
1503    ethernet
1504
1505 have-normal-interface|have-normal
1506 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1507
1508 Treat the host Linux stack as a routing peer instead of programming VPP
1509 interface L3 addresses onto the tun/tap devices. The two keywords are
1510 aliases for the same function.
1511
1512 .. code-block:: console
1513
1514    have-normal-interface
1515
1516 name <name>
1517 ^^^^^^^^^^^
1518
1519 Assign name to the tun/tap device.
1520
1521 .. code-block:: console
1522
1523    name vpp1
1524
1525
1526 vhost-user Section
1527 ------------------
1528
1529 Vhost-user configuration parameters control the vhost-user driver.
1530
1531 coalesce-frames <n>
1532 ^^^^^^^^^^^^^^^^^^^
1533
1534 Subject to deadline-timer expiration - see next item - attempt to transmit
1535 at least <n> packet frames. Default is 32 frames.
1536
1537 .. code-block:: console
1538
1539    coalesce-frames 64
1540
1541 coalesce-time <seconds>
1542 ^^^^^^^^^^^^^^^^^^^^^^^
1543
1544 Hold packets no longer than (floating-point) seconds before transmitting
1545 them. Default is 0.001 seconds
1546
1547 .. code-block:: console
1548
1549    coalesce-time 0.002
1550
1551 dont-dump-memory
1552 ^^^^^^^^^^^^^^^^
1553
1554 vhost-user shared-memory segments can add up to a large amount of memory, so
1555 it's handy to avoid adding them to corefiles when using a significant number
1556 of such interfaces.
1557
1558 .. code-block:: console
1559
1560    dont-dump-memory
1561
1562
1563 vlib Section
1564 ------------
1565
1566 These parameters configure VLIB, such as allowing you to choose whether to
1567 enable memory traceback or a post-mortem elog dump.
1568
1569 memory-trace
1570 ^^^^^^^^^^^^
1571
1572 Enables memory trace (mheap traceback.) Defaults to 0, meaning memory
1573 trace is disabled.
1574
1575 .. code-block:: console
1576
1577    memory-trace
1578
1579 elog-events <n>
1580 ^^^^^^^^^^^^^^^
1581
1582 Sets the number of elements/events (the size) of the event ring
1583 (a circular buffer of events.) This number rounds to a power of 2.
1584 Defaults to 131072 (128 << 10) elements.
1585
1586 .. code-block:: console
1587
1588    elog-events 4096
1589
1590 elog-post-mortem-dump
1591 ^^^^^^^^^^^^^^^^^^^^^
1592
1593 Enables the attempt of a post-mortem elog dump to
1594 */tmp/elog_post_mortem.<PID_OF_CALLING_PROCESS>* if os_panic or
1595 os_exit is called.
1596
1597 .. code-block:: console
1598
1599    elog-post-mortem-dump