]> git.proxmox.com Git - mirror_frr.git/blob - doc/user/basic.rst
Merge pull request #3195 from donaldsharp/nht_crash
[mirror_frr.git] / doc / user / basic.rst
1 .. _basic-commands:
2
3 **************
4 Basic Commands
5 **************
6
7 The following sections discuss commands common to all the routing daemons.
8
9 .. _config-commands:
10
11 Config Commands
12 ===============
13
14 .. index:: Configuration files for running the software
15
16 .. index:: Files for running configurations
17
18 .. index:: Modifying the herd's behavior
19
20 .. index:: Getting the herd running
21
22 In a config file, you can write the debugging options, a vty's password,
23 routing daemon configurations, a log file name, and so forth. This information
24 forms the initial command set for a routing beast as it is starting.
25
26 Config files are generally found in |INSTALL_PREFIX_ETC|.
27
28 Each of the daemons has its own config file. The daemon name plus ``.conf`` is
29 the default config file name. For example, zebra's default config file name is
30 :file:`zebra.conf`. You can specify a config file using the :option:`-f` or
31 :option:`--config_file` options when starting the daemon.
32
33 .. _basic-config-commands:
34
35 Basic Config Commands
36 ---------------------
37
38 .. index:: hostname HOSTNAME
39 .. clicmd:: hostname HOSTNAME
40
41 Set hostname of the router.
42
43 .. index::
44 single: no password PASSWORD
45 single: password PASSWORD
46
47 .. clicmd:: [no] password PASSWORD
48
49 Set password for vty interface. The ``no`` form of the command deletes the
50 password. If there is no password, a vty won't accept connections.
51
52 .. index::
53 single: no enable password PASSWORD
54 single: enable password PASSWORD
55
56 .. clicmd:: [no] enable password PASSWORD
57
58 Set enable password. The ``no`` form of the command deletes the enable
59 password.
60
61 .. index::
62 single: no log trap [LEVEL]
63 single: log trap LEVEL
64
65 .. clicmd:: [no] log trap LEVEL
66
67 These commands are deprecated and are present only for historical
68 compatibility. The log trap command sets the current logging level for all
69 enabled logging destinations, and it sets the default for all future logging
70 commands that do not specify a level. The normal default logging level is
71 debugging. The ``no`` form of the command resets the default level for
72 future logging commands to debugging, but it does not change the logging
73 level of existing logging destinations.
74
75 .. index::
76 single: no log stdout [LEVEL]
77 single: log stdout [LEVEL]
78
79 .. clicmd:: [no] log stdout LEVEL
80
81 Enable logging output to stdout. If the optional second argument specifying
82 the logging level is not present, the default logging level (typically
83 debugging) will be used. The ``no`` form of the command disables logging to
84 stdout. The ``LEVEL`` argument must have one of these values: emergencies,
85 alerts, critical, errors, warnings, notifications, informational, or
86 debugging. Note that the existing code logs its most important messages with
87 severity ``errors``.
88
89 .. index::
90 single: no log file [FILENAME [LEVEL]]
91 single: log file FILENAME [LEVEL]
92
93 .. clicmd:: [no] log file [FILENAME [LEVEL]]
94
95 If you want to log into a file, please specify ``filename`` as
96 in this example:
97
98 ::
99
100 log file /var/log/frr/bgpd.log informational
101
102 If the optional second argument specifying the logging level is not present,
103 the default logging level (typically debugging, but can be changed using the
104 deprecated ``log trap`` command) will be used. The ``no`` form of the command
105 disables logging to a file.
106
107 .. note::
108
109 If you do not configure any file logging, and a daemon crashes due to a
110 signal or an assertion failure, it will attempt to save the crash
111 information in a file named :file:`/var/tmp/frr.<daemon name>.crashlog`.
112 For security reasons, this will not happen if the file exists already, so
113 it is important to delete the file after reporting the crash information.
114
115 .. index::
116 single: no log syslog [LEVEL]
117 single: log syslog [LEVEL]
118
119 .. clicmd:: [no] log syslog [LEVEL]
120
121 Enable logging output to syslog. If the optional second argument specifying
122 the logging level is not present, the default logging level (typically
123 debugging, but can be changed using the deprecated ``log trap`` command) will
124 be used. The ``no`` form of the command disables logging to syslog.
125
126 .. index::
127 single: no log monitor [LEVEL]
128 single: log monitor [LEVEL]
129
130 .. clicmd:: [no] log monitor [LEVEL]
131
132 Enable logging output to vty terminals that have enabled logging using the
133 ``terminal monitor`` command. By default, monitor logging is enabled at the
134 debugging level, but this command (or the deprecated ``log trap`` command)
135 can be used to change the monitor logging level. If the optional second
136 argument specifying the logging level is not present, the default logging
137 level (typically debugging) will be used. The ``no`` form of the command
138 disables logging to terminal monitors.
139
140 .. index::
141 single: no log facility [FACILITY]
142 single: log facility [FACILITY]
143
144 .. clicmd:: [no] log facility [FACILITY]
145
146 This command changes the facility used in syslog messages. The default
147 facility is ``daemon``. The ``no`` form of the command resets the facility
148 to the default ``daemon`` facility.
149
150 .. index::
151 single: no log record-priority
152 single: log record-priority
153
154 .. clicmd:: [no] log record-priority
155
156 To include the severity in all messages logged to a file, to stdout, or to
157 a terminal monitor (i.e. anything except syslog),
158 use the ``log record-priority`` global configuration command.
159 To disable this option, use the ``no`` form of the command. By default,
160 the severity level is not included in logged messages. Note: some
161 versions of syslogd (including Solaris) can be configured to include
162 the facility and level in the messages emitted.
163
164 .. index::
165 single: log timestamp precision (0-6)
166 single: [no] log timestamp precision (0-6)
167
168 .. clicmd:: [no] log timestamp precision [(0-6)]
169
170 This command sets the precision of log message timestamps to the given
171 number of digits after the decimal point. Currently, the value must be in
172 the range 0 to 6 (i.e. the maximum precision is microseconds). To restore
173 the default behavior (1-second accuracy), use the ``no`` form of the
174 command, or set the precision explicitly to 0.
175
176 ::
177
178 log timestamp precision 3
179
180 In this example, the precision is set to provide timestamps with
181 millisecond accuracy.
182
183 .. index:: log commands
184 .. clicmd:: log commands
185
186 This command enables the logging of all commands typed by a user to all
187 enabled log destinations. The note that logging includes full command lines,
188 including passwords. Once set, command logging can only be turned off by
189 restarting the daemon.
190
191 .. index:: service password-encryption
192 .. clicmd:: service password-encryption
193
194 Encrypt password.
195
196 .. index:: service advanced-vty
197 .. clicmd:: service advanced-vty
198
199 Enable advanced mode VTY.
200
201 .. index:: service terminal-length (0-512)
202 .. clicmd:: service terminal-length (0-512)
203
204 Set system wide line configuration. This configuration command applies to
205 all VTY interfaces.
206
207 .. index:: line vty
208 .. clicmd:: line vty
209
210 Enter vty configuration mode.
211
212 .. index:: banner motd default
213 .. clicmd:: banner motd default
214
215 Set default motd string.
216
217 .. index:: no banner motd
218 .. clicmd:: no banner motd
219
220 No motd banner string will be printed.
221
222 .. index:: exec-timeout MINUTE [SECOND]
223 .. clicmd:: exec-timeout MINUTE [SECOND]
224
225 Set VTY connection timeout value. When only one argument is specified
226 it is used for timeout value in minutes. Optional second argument is
227 used for timeout value in seconds. Default timeout value is 10 minutes.
228 When timeout value is zero, it means no timeout.
229
230 .. index:: no exec-timeout
231 .. clicmd:: no exec-timeout
232
233 Do not perform timeout at all. This command is as same as
234 ``exec-timeout 0 0``.
235
236 .. index:: access-class ACCESS-LIST
237 .. clicmd:: access-class ACCESS-LIST
238
239 Restrict vty connections with an access list.
240
241
242 .. _sample-config-file:
243
244 Sample Config File
245 ------------------
246
247 Below is a sample configuration file for the zebra daemon.
248
249 .. code-block:: frr
250
251 !
252 ! Zebra configuration file
253 !
254 hostname Router
255 password zebra
256 enable password zebra
257 !
258 log stdout
259 !
260 !
261
262
263 ``!`` and ``#`` are comment characters. If the first character of the word is
264 one of the comment characters then from the rest of the line forward will be
265 ignored as a comment.
266
267 .. code-block:: frr
268
269 password zebra!password
270
271 If a comment character is not the first character of the word, it's a normal
272 character. So in the above example ``!`` will not be regarded as a comment and
273 the password is set to ``zebra!password``.
274
275 .. _terminal-mode-commands:
276
277 Terminal Mode Commands
278 ======================
279
280 .. index:: write terminal
281 .. clicmd:: write terminal
282
283 Displays the current configuration to the vty interface.
284
285 .. index:: write file
286 .. clicmd:: write file
287
288 Write current configuration to configuration file.
289
290 .. index:: configure terminal
291 .. clicmd:: configure terminal
292
293 Change to configuration mode. This command is the first step to
294 configuration.
295
296 .. index:: terminal length (0-512)
297 .. clicmd:: terminal length (0-512)
298
299 Set terminal display length to ``(0-512)``. If length is 0, no display
300 control is performed.
301
302 .. index:: who
303 .. clicmd:: who
304
305 Show a list of currently connected vty sessions.
306
307 .. index:: list
308 .. clicmd:: list
309
310 List all available commands.
311
312 .. index:: show version
313 .. clicmd:: show version
314
315 Show the current version of |PACKAGE_NAME| and its build host information.
316
317 .. index:: show logging
318 .. clicmd:: show logging
319
320 Shows the current configuration of the logging system. This includes the
321 status of all logging destinations.
322
323 .. index:: show memory
324 .. clicmd:: show memory
325
326 Show information on how much memory is used for which specific things in
327 |PACKAGE_NAME|. Output may vary depending on system capabilities but will
328 generally look something like this:
329
330 ::
331
332 frr# show memory
333 System allocator statistics:
334 Total heap allocated: 1584 KiB
335 Holding block headers: 0 bytes
336 Used small blocks: 0 bytes
337 Used ordinary blocks: 1484 KiB
338 Free small blocks: 2096 bytes
339 Free ordinary blocks: 100 KiB
340 Ordinary blocks: 2
341 Small blocks: 60
342 Holding blocks: 0
343 (see system documentation for 'mallinfo' for meaning)
344 --- qmem libfrr ---
345 Buffer : 3 24 72
346 Buffer data : 1 4120 4120
347 Host config : 3 (variably sized) 72
348 Command Tokens : 3427 72 247160
349 Command Token Text : 2555 (variably sized) 83720
350 Command Token Help : 2555 (variably sized) 61720
351 Command Argument : 2 (variably sized) 48
352 Command Argument Name : 641 (variably sized) 15672
353 [...]
354 --- qmem Label Manager ---
355 --- qmem zebra ---
356 ZEBRA VRF : 1 912 920
357 Route Entry : 11 80 968
358 Static route : 1 192 200
359 RIB destination : 8 48 448
360 RIB table info : 4 16 96
361 Nexthop tracking object : 1 200 200
362 Zebra Name Space : 1 312 312
363 --- qmem Table Manager ---
364
365 To understand system allocator statistics, refer to your system's
366 :manpage:`mallinfo(3)` man page.
367
368 Below these statistics, statistics on individual memory allocation types
369 in |PACKAGE_NAME| (so-called `MTYPEs`) is printed:
370
371 * the first column of numbers is the current count of allocations made for
372 the type (the number decreases when items are freed.)
373 * the second column is the size of each item. This is only available if
374 allocations on a type are always made with the same size.
375 * the third column is the total amount of memory allocated for the
376 particular type, including padding applied by malloc. This means that
377 the number may be larger than the first column multiplied by the second.
378 Overhead incurred by malloc's bookkeeping is not included in this, and
379 the column may be missing if system support is not available.
380
381 When executing this command from ``vtysh``, each of the daemons' memory
382 usage is printed sequentially.
383
384 .. index:: logmsg LEVEL MESSAGE
385 .. clicmd:: logmsg LEVEL MESSAGE
386
387 Send a message to all logging destinations that are enabled for messages of
388 the given severity.
389
390 .. index:: find COMMAND...
391 .. clicmd:: find COMMAND...
392
393 This commmand performs a simple substring search across all defined commands
394 in all modes. As an example, suppose you're in enable mode and can't
395 remember where the command to turn OSPF segment routing on is:
396
397 ::
398
399 frr# find segment-routing on
400 (ospf) segment-routing on
401
402 The CLI mode is displayed next to each command. In this example,
403 :clicmd:`segment-routing on` is under the `router ospf` mode.
404
405 Similarly, suppose you want a listing of all commands that contain "l2vpn":
406
407 ::
408
409 frr# find l2vpn
410 (view) show [ip] bgp l2vpn evpn [json]
411 (view) show [ip] bgp l2vpn evpn all <A.B.C.D|A.B.C.D/M> [json]
412 (view) show [ip] bgp l2vpn evpn all neighbors A.B.C.D advertised-routes [json]
413 (view) show [ip] bgp l2vpn evpn all neighbors A.B.C.D routes [json]
414 (view) show [ip] bgp l2vpn evpn all overlay
415 ...
416
417
418 .. _common-invocation-options:
419
420 Common Invocation Options
421 =========================
422
423 These options apply to all |PACKAGE_NAME| daemons.
424
425
426 .. option:: -d, --daemon
427
428 Run in daemon mode.
429
430 .. option:: -f, --config_file <file>
431
432 Set configuration file name.
433
434 .. option:: -h, --help
435
436 Display this help and exit.
437
438 .. option:: -i, --pid_file <file>
439
440 Upon startup the process identifier of the daemon is written to a file,
441 typically in :file:`/var/run`. This file can be used by the init system
442 to implement commands such as ``.../init.d/zebra status``,
443 ``.../init.d/zebra restart`` or ``.../init.d/zebra stop``.
444
445 The file name is an run-time option rather than a configure-time option so
446 that multiple routing daemons can be run simultaneously. This is useful when
447 using |PACKAGE_NAME| to implement a routing looking glass. One machine can
448 be used to collect differing routing views from differing points in the
449 network.
450
451 .. option:: -A, --vty_addr <address>
452
453 Set the VTY local address to bind to. If set, the VTY socket will only be
454 bound to this address.
455
456 .. option:: -P, --vty_port <port>
457
458 Set the VTY TCP port number. If set to 0 then the TCP VTY sockets will not
459 be opened.
460
461 .. option:: -u <user>
462
463 Set the user and group to run as.
464
465 .. option:: -v, --version
466
467 Print program version.
468
469 .. option:: --log <stdout|syslog|file:/path/to/log/file>
470
471 When initializing the daemon, setup the log to go to either stdout,
472 syslog or to a file. These values will be displayed as part of
473 a show run. Additionally they can be overridden at runtime if
474 desired via the normal log commands.
475
476 .. option:: --log-level <emergencies|alerts|critical|errors|warnings|notifications|informational|debugging>
477
478 When initializing the daemon, allow the specification of a default
479 log level at startup from one of the specified levels.
480
481 .. _loadable-module-support:
482
483 Loadable Module Support
484 =======================
485
486 FRR supports loading extension modules at startup. Loading, reloading or
487 unloading modules at runtime is not supported (yet). To load a module, use
488 the following command line option at daemon startup:
489
490
491 .. option:: -M, --module <module:options>
492
493 Load the specified module, optionally passing options to it. If the module
494 name contains a slash (/), it is assumed to be a full pathname to a file to
495 be loaded. If it does not contain a slash, the |INSTALL_PREFIX_MODULES|
496 directory is searched for a module of the given name; first with the daemon
497 name prepended (e.g. ``zebra_mod`` for ``mod``), then without the daemon
498 name prepended.
499
500 This option is available on all daemons, though some daemons may not have
501 any modules available to be loaded.
502
503
504 The SNMP Module
505 ---------------
506
507 If SNMP is enabled during compile-time and installed as part of the package,
508 the ``snmp`` module can be loaded for the *Zebra*, *bgpd*, *ospfd*, *ospf6d*
509 and *ripd* daemons.
510
511 The module ignores any options passed to it. Refer to :ref:`snmp-support` for
512 information on its usage.
513
514
515 The FPM Module
516 --------------
517
518 If FPM is enabled during compile-time and installed as part of the package, the
519 ``fpm`` module can be loaded for the *zebra* daemon. This provides the
520 Forwarding Plane Manager ("FPM") API.
521
522 The module expects its argument to be either ``Netlink`` or ``protobuf``,
523 specifying the encapsulation to use. ``Netlink`` is the default, and
524 ``protobuf`` may not be available if the module was built without protobuf
525 support. Refer to :ref:`zebra-fib-push-interface` for more information.
526
527
528 .. _virtual-terminal-interfaces:
529
530 Virtual Terminal Interfaces
531 ===========================
532
533 VTY -- Virtual Terminal [aka TeletYpe] Interface is a command line
534 interface (CLI) for user interaction with the routing daemon.
535
536
537 .. _vty-overview:
538
539 VTY Overview
540 ------------
541
542 VTY stands for Virtual TeletYpe interface. It means you can connect to
543 the daemon via the telnet protocol.
544
545 To enable a VTY interface, you have to setup a VTY password. If there
546 is no VTY password, one cannot connect to the VTY interface at all.
547
548 ::
549
550 % telnet localhost 2601
551 Trying 127.0.0.1...
552 Connected to localhost.
553 Escape character is '^]'.
554
555 Hello, this is |PACKAGE_NAME| (version |PACKAGE_VERSION|)
556 |COPYRIGHT_STR|
557
558 User Access Verification
559
560 Password: XXXXX
561 Router> ?
562 enable . . . Turn on privileged commands
563 exit . . . Exit current mode and down to previous mode
564 help . . . Description of the interactive help system
565 list . . . Print command list
566 show . . . Show system inform
567
568 wh. . . Display who is on a vty
569 Router> enable
570 Password: XXXXX
571 Router# configure terminal
572 Router(config)# interface eth0
573 Router(config-if)# ip address 10.0.0.1/8
574 Router(config-if)# ^Z
575 Router#
576
577
578 .. _vty-modes:
579
580 VTY Modes
581 ---------
582
583 There are three basic VTY modes:
584
585 There are commands that may be restricted to specific VTY modes.
586
587 .. _vty-view-mode:
588
589 VTY View Mode
590 ^^^^^^^^^^^^^
591
592 This mode is for read-only access to the CLI. One may exit the mode by
593 leaving the system, or by entering `enable` mode.
594
595 .. _vty-enable-mode:
596
597 VTY Enable Mode
598 ^^^^^^^^^^^^^^^
599
600 This mode is for read-write access to the CLI. One may exit the mode by
601 leaving the system, or by escaping to view mode.
602
603 .. _vty-other-modes:
604
605 VTY Other Modes
606 ^^^^^^^^^^^^^^^
607
608 This page is for describing other modes.
609
610 .. _vty-cli-commands:
611
612 VTY CLI Commands
613 ----------------
614
615 Commands that you may use at the command-line are described in the following
616 three subsubsections.
617
618 .. _cli-movement-commands:
619
620 CLI Movement Commands
621 ^^^^^^^^^^^^^^^^^^^^^
622
623 These commands are used for moving the CLI cursor. The :kbd:`C` character
624 means press the Control Key.
625
626 :kbd:`C-f` / :kbd:`LEFT`
627 Move forward one character.
628
629 :kbd:`C-b` / :kbd:`RIGHT`
630 Move backward one character.
631
632 :kbd:`M-f`
633 Move forward one word.
634
635 :kbd:`M-b`
636 Move backward one word.
637
638 :kbd:`C-a`
639 Move to the beginning of the line.
640
641 :kbd:`C-e`
642 Move to the end of the line.
643
644
645 .. _cli-editing-commands:
646
647 CLI Editing Commands
648 ^^^^^^^^^^^^^^^^^^^^
649
650 These commands are used for editing text on a line. The :kbd:`C`
651 character means press the Control Key.
652
653
654 :kbd:`C-h` / :kbd:`DEL`
655 Delete the character before point.
656
657
658 :kbd:`C-d`
659 Delete the character after point.
660
661
662 :kbd:`M-d`
663 Forward kill word.
664
665
666 :kbd:`C-w`
667 Backward kill word.
668
669
670 :kbd:`C-k`
671 Kill to the end of the line.
672
673
674 :kbd:`C-u`
675 Kill line from the beginning, erasing input.
676
677
678 :kbd:`C-t`
679 Transpose character.
680
681
682 CLI Advanced Commands
683 ^^^^^^^^^^^^^^^^^^^^^
684
685 There are several additional CLI commands for command line completions,
686 insta-help, and VTY session management.
687
688
689 :kbd:`C-c`
690 Interrupt current input and moves to the next line.
691
692
693 :kbd:`C-z`
694 End current configuration session and move to top node.
695
696
697 :kbd:`C-n` / :kbd:`DOWN`
698 Move down to next line in the history buffer.
699
700
701 :kbd:`C-p` / :kbd:`UP`
702 Move up to previous line in the history buffer.
703
704
705 :kbd:`TAB`
706 Use command line completion by typing :kbd:`TAB`.
707
708
709 :kbd:`?`
710 You can use command line help by typing ``help`` at the beginning of the
711 line. Typing :kbd:`?` at any point in the line will show possible
712 completions.
713
714 Pipe Actions
715 ^^^^^^^^^^^^
716
717 VTY supports optional modifiers at the end of commands that perform
718 postprocessing on command output or modify the action of commands. These do not
719 show up in the :kbd:`?` or :kbd:`TAB` suggestion lists.
720
721 ``... | include REGEX``
722 Filters the output of the preceding command, including only lines which
723 match the POSIX Extended Regular Expression ``REGEX``. Do not put the regex
724 in quotes.
725
726 Examples:
727
728 ::
729
730 frr# show ip bgp sum json | include remoteAs
731 "remoteAs":0,
732 "remoteAs":455,
733 "remoteAs":99,
734
735 ::
736
737 frr# show run | include neigh.*[0-9]{2}\.0\.[2-4]\.[0-9]*
738 neighbor 10.0.2.106 remote-as 99
739 neighbor 10.0.2.107 remote-as 99
740 neighbor 10.0.2.108 remote-as 99
741 neighbor 10.0.2.109 remote-as 99
742 neighbor 10.0.2.110 remote-as 99
743 neighbor 10.0.3.111 remote-as 111
744