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