BGPD(8)                     System Manager's Manual                    BGPD(8)


     bgpd - Border Gateway Protocol daemon


     bgpd [-cdnv] [-D macro=value] [-f file]


     bgpd is a Border Gateway Protocol (BGP) daemon which manages the network
     routing tables.  Its main purpose is to exchange information concerning
     "network reachability" with other BGP systems.  bgpd uses the Border
     Gateway Protocol, Version 4, as described in RFC 4271.

     BGP is an exterior gateway protocol using a multiple step decision
     process to find the best path.  Advanced filtering can be used to
     influence the route decision for traffic engineering.  The session engine
     of bgpd is responsible for maintaining the TCP session with each
     neighbor.  Updates are passed to the Route Decision Engine (RDE) where
     the paths are filtered and used to compute a Routing Information Base
     (RIB).  The parent process is responsible for keeping the RIB in sync
     with the kernel routing table.

     The route decision process selects the best path by evaluating all paths
     to the same destination.  The decision process continues to the next step
     if paths have equal attributes.  Paths that are less preferred are taken
     out of consideration until there is only one path left.

         1.  All paths with errors or loops are not eligible.

         2.  Paths with an unreachable nexthop are not eligible.  After this
             step all remaining paths are valid.

         3.  The path with the highest LOCAL_PREF is selected.

         4.  The path with the shortest AS path attribute is selected.

         5.  The ORIGIN attribute is compared.  The order is IGP before EGP
             before incomplete origins.

         6.  The path with the lowest MULTI_EXIT_DISC metric is selected.
             Normally, this value is only considered when choosing between
             multiple routes sent by the same neighbouring AS.  However, if
             "rde med compare always" is set in the configuration, the metric
             is compared for routes sent by any AS.

         7.  Comparison of the BGP session type.  Paths learned over an
             external (EBGP) session are preferred over those learned via an
             internal (IBGP) session.

         8.  The path with the lowest local weight is selected.

         9.  If "rde route-age evaluate" is set then the oldest path is

         10. The path coming from the neighbor with the lowest BGP ID wins.
             If the ORIGINATOR_ID attribute is present that value will be used
             in the comparison instead.

         11. The path with the shortest CLUSTER_LIST attribute is selected.
             If it is not present then a length of 0 is used in the

         12. The path coming from the peer with the lowest IP address is
             selected.  IPv4 sessions will be preferred over IPv6 ones.

         13. In case of locally announced prefixes bgpd will prefer statically
             set prefixes over dynamically inserted ones.

     Attributes set by filters can be used to tip the decision process to
     prefer particular paths over others.  This can be achieved by changing
     the localpref, med, or weight attributes.  AS path prepending or changing
     the med or origin attribute can be used to influence the routing
     behaviour on remote systems.

     bgpd is usually started at boot time, and can be enabled by setting the
     following in /etc/rc.conf.local:


     See rc(8) and rc.conf(8) for more information on the boot process and
     enabling daemons.

     When bgpd starts up, it reads settings from a configuration file,
     typically bgpd.conf(5).  A running bgpd process can be controlled using
     the bgpctl(8) utility.

     The options are as follows:

     -c          Force bgpd to do carp(4) demotion at startup when the demote
                 functionality is used.  Normally, bgpd will only do demotion
                 at startup when the demotion counter for the group in
                 question is already greater than 0.  bgpd will start handling
                 demotion after all sessions with demotion configured for the
                 given group have been successfully established.  At system
                 startup, rc(8) has the demotion counter for the group carp
                 increased until after bgpd is started, so this option should
                 not be used in rc.conf(8).

     -D macro=value
                 Define macro to be set to value on the command line.
                 Overrides the definition of macro in the configuration file.

     -d          Do not daemonize.  If this option is specified, bgpd will run
                 in the foreground and log to stderr.

     -f file     Use file as the configuration file, instead of the default

     -n          Configtest mode.  Only check the configuration file for

     -v          Produce more verbose output.


     /etc/bgpd.conf         default bgpd configuration file
     /var/run/bgpd.sock     default bgpd control socket


     bgpd.conf(5), bgpctl(8), bgplg(8), bgplgsh(8)


     R. Chandra, P. Traina, and T. Li, BGP Communities Attribute, RFC 1997,
     August 1996.

     A. Heffernan, Protection of BGP Sessions via the TCP MD5 Signature
     Option, RFC 2385, August 1998.

     P. Marques and F. Dupont, Use of BGP-4 Multiprotocol Extensions for IPv6
     Inter-Domain Routing, RFC 2545, March 1999.

     E. Chen, Route Refresh Capability for BGP-4, RFC 2918, September 2000.

     G. Huston, NOPEER Community for Border Gateway Protocol (BGP) Route Scope
     Control, RFC 3765, April 2004.

     Y. Rekhter, T. Li, and S. Hares, A Border Gateway Protocol 4 (BGP-4), RFC
     4271, January 2006.

     S. Sangli, D. Tappan, and Y. Rekhter, BGP Extended Communities Attribute,
     RFC 4360, February 2006.

     E. Rosen and Y. Rekhter, BGP/MPLS IP Virtual Private Networks (VPNs), RFC
     4364, February 2006.

     T. Bates, E. Chen, and R. Chandra, BGP Route Reflection: An Alternative
     to Full Mesh Internal BGP (IBGP), RFC 4456, April 2006.

     E. Chen and V. Gillet, Subcodes for BGP Cease Notification Message, RFC
     4486, April 2006.

     T. Bates, R. Chandra, D. Katz, and Y. Rekhter, Multiprotocol Extensions
     for BGP-4, RFC 4760, January 2007.

     Q. Vohra and E. Chen, BGP Support for Four-octet AS Number Space, RFC
     4893, May 2007.

     V. Gill, J. Heasley, D. Meyer, P. Savola, and C. Pignatoro, The
     Generalized TTL Security Mechanism (GTSM), RFC 5082, October 2007.

     J. Scudder and R. Chandra, Capabilities Advertisement with BGP-4, RFC
     5492, February 2009.

     E. Chen, J. Scudder, P. Mohapatra, and K. Patel, Revised Error Handling
     for BGP UPDATE Messages, RFC 7606, August 2015.

     W. Kumari, R. Bush, H. Schiller, and K. Patel, Codification of AS 0
     Processing, RFC 7607, August 2015.

     L. Blunk, M. Karir, and C. Labovitz, Multi-Threaded Routing Toolkit (MRT)
     Routing Information Export Format, RFC 6396, October 2011.

     J. Dong, M. Chen, and A. Suryanarayana, Subcodes for BGP Finite State
     Machine Error, RFC 6608, May 2012.

     J. Heitz, J. Snijders, K. Patel, I. Bagdonas, and N. Hilliard, BGP Large
     Communities Attribute, RFC 8092, February 2017.

     P. Mohapatra, K. Patel, J. Scudder, D. Ward, and R. Bush, BGP Prefix
     Origin Validation State Extended Community, RFC 8097, March 2017.

     J. Snijders, J. Heitz, and J. Scudder, BGP Administrative Shutdown
     Communication, RFC 8203, July 2017.

     J. Mauch, J. Snijders, and G. Hankins, Default External BGP (EBGP) Route
     Propagation Behavior without Policies, RFC 8212, July 2017.


     The bgpd program first appeared in OpenBSD 3.5.

OpenBSD 6.4                      June 13, 2018                     OpenBSD 6.4

[Unix Hosting | Open-Source | Contact Us]
[Engineering & Automation | Software Development | Server Applications]