FRR-BGPD(8)

NAME
frr-bgpd - a BGPv4, BGPv4+, BGPv4- routing engine for use with FRRouting.

SYNOPSIS

bgpd [-h] [-v]

bgpd [-d|-t|-dt] [-C] [-f config-file] [-i pid-file] [-z zclient-path] [-u user] [-g group] [-A vty-addr] [-P vty-port] [-M module[:options]] [-N pathspace] [--vty_socket vty-path] [--moduledir module-path]

DESCRIPTION

bgpd is a routing component that works with the FRRouting routing engine.

OPTIONS

OPTIONS available for the bgpd command:

  HELP AND VERSION

-h, --help
    Print a short description of the daemon's command line options.

-v, --version
    Print version and build information for the daemon.

    Both of these options inhibit normal operation and will immediately exit.

  PROCESS CONTROL

These options control background operation:

-d, --daemon
    Launches the process in background/daemon mode, forking and detaching from the terminal.

    The parent process will delay its exit until the daemon/child has finished its initialization and has entered its main loop. This is important for zebra startup because the other daemons will attempt to connect to zebra. A return from zebra -d guarantees its readiness to accept these connections.

-t, --terminal
    Opens an interactive VTY session on the terminal, allowing for both state and configuration operations. Note that the terminal starts operating after startup has completed and the configuration file has been loaded.

    The process will exit when end of file is detected on the terminal. It is possible to daemonize a process started with -t (but without -d) by sending SIGQUIT to the process (normally mapped to a ^keypress.)

    The combination of --daemon <#cmdoption-d> and --terminal <#cmdoption-t> will delay the daemon from going into background until the terminal session ends (by end of file.)

    If the process receives SIGINT (e.g. a ^C keypress) in this mode, it will exit instead of daemonizing.

    It is safe to suspend (SIGTSTP / ^Z) the terminal session opened by the previous two options; this will only stop the terminal but not the protocol daemon itself (which runs in a separate second process.)

  CONFIGURATION AND PATHS

The following options control configuration and file system locations for frr processes:

-f, --config_file config-file
    Specify a configuration file to be used instead of the default /etc/frr/<daemon>.conf file.

    Note that the daemon will attempt to write to this file if the write file command is issued on its VTY interface or through vtysh.

-C, --dryrun
    Load the configuration file and check its validity, then exit.

-i, --pid_file pid-file
    Output a pid file to a location other than the default /var/run/frr/<daemon>.pid.

-z, --socket zclient-path
    Override the path of the ZAPI socket used to communicate between zebra and the various protocol daemons. The default is /var/run/frr/zserv.api. The value of this option must be the same across all daemons.

-N, --pathspace pathspace
    Insert pathspace into all default paths, changing the defaults to:

    /etc/frr/pathspace/<daemon>.conf /var/run/frr/pathspace/<daemon>.pid /var/run/frr/pathspace/<daemon>.vty /var/run/frr/pathspace/zserv.api

    '.' and '/' characters will not be accepted in pathspace, but the empty string will be accepted.

    Note that this only changes the respective defaults, it has no effect on the respective path if the -f, -i, -z or --vty_socket options are used.

    The purpose of this option is to easily group all file system related bits together for running multiple fully-separate "logical routers" on a system, particularly with Linux network namespaces. Groups of daemons running with distinct pathspace values will be completely unaware of each other and not interact in any way.

    This option does not do any system setup (like network namespaces.) This must be done by the user, for example by running:

    ip netns exec namespace <daemon> -N namespace

  PROCESS CREDENTIALS

-u, --user user
    (default: frr)

-g, --group group
    (default: frr)

    Change the user/group which the daemon will switch to.

-S, --skip_runas
    Skip setting the process effective user and group.

    Note that there is an additional group, frrvty, which controls group ownership of the VTY sockets. The name of this group cannot currently be changed, and user must be a member of this group.

  VTY SETUP

These following options control the daemon's VTY (interactive command line) interface. The interface is available over TCP, using the telnet protocol, as well as through the vtysh frontend.

-A, --vty_addr vty-addr
    Specify an IP/IPv6 address to bind the TCP VTY interface to. It is generally recommended to specify ::1 or 127.0.0.1. For reasons of backwards compatibility, the default is to listen on all interfaces.

-P, --vty_port vty-port
    Override the daemon's default TCP VTY port (each daemon has a different default value upwards of 2600, listed below.) Specifying 0 disables the TCP VTY interface.

    Default ports are::

        zebra           2601
        ripd            2602
        ripngd          2603
        ospfd           2604
        bgpd            2605
        ospf6d          2606
        isisd           2608
        babeld          2609
        nhrpd           2610
        pimd            2611
        ldpd            2612
        eigrpd          2613
        pbrd            2615
        staticd         2616
        bfdd            2617
        fabricd         2618
        vrrpd           2619

    Port 2607 is used for ospfd's Opaque LSA API.

--vty_socket vty-path
    Overrides the directory used for the <daemon>.vty sockets. vtysh connects to these sockets in order to access each daemon's VTY. Default: /var/run/frr[/<pathspace>]

    NB: Unlike the other options, this option specifies a directory, not a full path.

    This option is primarily used by the SNAP packaging system, its semantics may change. It should not be necessary in most other scenarios.

  MODULE LOADING

frr supports optional dynamically loadable modules, although these can only be loaded at startup. The set of available modules may vary across distributions and packages, and modules may be available for installation as separate packages.

-M, --module module[:options]
    Load a module named module, optionally passing options to it.

    If there is a '/' character in module, the value is assumed to be a pathname to a module.

    If there is no '/' character, the module directory (see next option) is searched first for a module named "<daemon>_<module>.so", then for "<module>.so". This allows for a module to exist in variations appropriate for particular daemons, e.g. zebra_snmp and bgp_snmp, with the correct one selected by -M snmp.

    The meaning of options is specific to the module being loaded. Most modules currently ignore it.

    Modules are loaded in the order as listed on the command line. This is not generally relevant.

--moduledir module-path
    Look for modules in the module-path directory instead of the default /usr/lib/frr/modules. (This path is not affected by the -N option.)

    The list of loaded modules can be inspected at runtime with the show modules VTY command.

-p, --bgp_port <port>
    Set the bgp protocol's port number. When port number is 0, that means do not listen bgp port.

-l, --listenon
    Specify a specific IP address for bgpd to listen on, rather than its default of 0.0.0.0 / ::. This can be useful to constrain bgpd to an internal address, or to run multiple bgpd processes on one host.

-n, --no_kernel
    Do not install learned routes into the linux kernel. This option is useful for a route-reflector environment or if you are running multiple bgp processes in the same namespace. This option is different than the --no_zebra option in that a ZAPI connection is made.

-e, --ecmp
    Run BGP with a limited ecmp capability, that is different than what BGP was compiled with. The value specified must be greater than 0 and less than or equal to the MULTIPATH_NUM specified on compilation.

-Z, --no_zebra
    Do not communicate with zebra at all. This is different than the --no_kernel option in that we do not even open a ZAPI connection to the zebra process.

-s, --socket_size
    When opening tcp connections to our peers, set the socket send buffer size that the kernel will use for the peers socket. This option is only really useful at a very large scale. Experimentation should be done to see if this is helping or not at the scale you are running at.

  LABEL MANAGER

-I, --int_num
    Set zclient id. This is required when using Zebra label manager in proxy mode.

FILES

/usr/lib/frr/bgpd
    The default location of the bgpd binary.

/etc/frr/bgpd.conf
    The default location of the bgpd config file.

$(PWD)/bgpd.log
    If the bgpd process is configured to output logs to a file, then you will find this file in the directory where you started bgpd.

WARNING

This man page is intended to be a quick reference for command line options. The definitive document is the info file frr 9.1/frr-9.1 or the documentation available on the project website at <https://frrouting.org/>.

DIAGNOSTICS

The daemon may log to standard output, to a VTY, to a log file, or through syslog to the system logs. FRR supports many debugging options, see the Info file, web docs or source for details.

SEE ALSO

frr-zebra(8), vtysh(1), frr-ripd(8), frr-ripngd(8), frr-ospfd(8), frr-ospf6d(8), frr-bgpd(8), frr-isisd(8), frr-babeld(8), frr-nhrpd(8), frr-pimd(8), frr-pbrd(8), frr-ldpd(8), frr-eigrpd(8), frr-staticd(8), frr-fabricd(8), frr-vrrpd(8), mtracebis(8) <https://frrouting.org/>

BUGS

FRR eats bugs for breakfast. If you have food for the maintainers, please email <<dev@lists.frrouting.org>>.

Copyright
2017, FRR